Если рядом

Anything and all.

Moderators: Murderator+, Murderator

dubd
Posts: 249
Joined: 2012-07-27 23:43:14

Если рядом

Post by dubd »

Подскажите пожалуйста, как лучше организовать следующее. В общем надо перед реколом, если рядом элементал, то пьет инвиз и улетает. Если его рядом нету, то тогда не пьет!

Если у кого то есть такой кусочек, поделитесь пожалуйста! Для копки.
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Если рядом

Post by Juicy Fruit »

Code: Select all

if uo.findtype(elem_type, -1, 'ground', distance) then
   uo.usetpye(invis_type, invis_color)
   wait(200)
endif
Вставь тип элемента, дистанцию поиска, тип и цвет инвизки.
И ответь на это плиз)
dubd
Posts: 249
Joined: 2012-07-27 23:43:14

Re: Если рядом

Post by dubd »

отлиично!! то что надо даа. а вот вопрос: просто не все элементалы атакуют, только высоких руд. Как можно решить данную проблему?

узнал, по цвету.

Code: Select all

sub checkcolor(obj)
   var n, c
   Dim color[14]
   color[1]='0x09DA'
   color[2]='0x0060'
   color[3]='0x0BA7'
   color[4]='0x09E6'
   color[5]='0x09B9'
   color[6]='0x09D3'
   color[7]='0x008F'
   color[8]='0x09EC'
   color[9]='0x09F0'
   color[10]='0x010F'
   color[11]='0x09A4'
   color[12]='0x0085'
   color[13]='0x08AF'
   color[14]='0x0028'
   c=uo.getcolor(obj)
   for n=1 to 14
      if c == color[n] then
         return 1
      endif
   next
endsub


только как вот привязать эти цвета к кусочку?
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: Если рядом

Post by Kynep »

dubd wrote:узнал, по цвету.

Code: Select all

sub checkcolor(obj)
   var n, c
   Dim color[14]
   color[1]='0x09DA'
   color[2]='0x0060'
   color[3]='0x0BA7'
   color[4]='0x09E6'
   color[5]='0x09B9'
   color[6]='0x09D3'
   color[7]='0x008F'
   color[8]='0x09EC'
   color[9]='0x09F0'
   color[10]='0x010F'
   color[11]='0x09A4'
   color[12]='0x0085'
   color[13]='0x08AF'
   color[14]='0x0028'
   c=uo.getcolor(obj)
   for n=1 to 14
      if c == color[n] then
         return 1
      endif
   next
endsub



Елки палки, от куда это здесь? :shock: :shock: :shock:
Я писал эту функцию для себя и ни где ее не публиковал. Неужели кто-то написал тоже самое? :shock: :?: :?: :?:
dubd
Posts: 249
Joined: 2012-07-27 23:43:14

Re: Если рядом

Post by dubd »

я написал вчера этот скрипт с одного захода, добро пожаловать в наш клуб. Можете помочь пожалуйста.
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: Если рядом

Post by Kynep »

dubd, могу помочь. Содержимое массива нумеруется с нуля, первый пункт будет:

Code: Select all

Dim color[14]
   color[0]='0x09DA'


Последний соответственно под 13 номером.

Далее, цикл for должен выглядеть примерно так:

Code: Select all

   for n = 0 to 13
      If c == color[n] then
         return 1
         n = 13
      end if
   next
   return 0


Далее, как соединить:
Пишешь проверку, если checkcolor = 1 то улетаем, ежели нет, то игнорим.

Как то так.

З.Ы. Я в этом клубе уже 9 лет, если что. :wink: :|
Last edited by Kynep on 2015-03-26 09:13:51, edited 1 time in total.
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Если рядом

Post by Juicy Fruit »

Else убери вообще
Return 0 перенеси за next и будет счастье)
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: Если рядом

Post by Kynep »

Juicy Fruit wrote:Else убери вообще
Return 0 перенеси за next и будет счастье)


Это я из старого скрипта скопировал. На работе свежих нет, но я стойко помню что там ретурн за некстом... а тут чета не стал редактировать. :lol:
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Если рядом

Post by Mirage »

На 15 инжекте все проще можно организовать. В папке инжекта создаешь файл autoload.cfg в него прописываешь следующий текст:

Code: Select all

[Elem]
0x000E 0x09DA
0x000E 0x0060
0x000E 0x0BA7
0x000E 0x09E6
0x000E 0x09B9
0x000E 0x09D3

и тд. Тип и цвет без кавычек.

а в скрипте используется вот такой кусок без for

Code: Select all

  if UO.FindList('Elem', 'ground', 18, -1, 1) then
   uo.usetpye(invis_type, invis_color)
   wait(200)
# ну и что там еще требуется совершить
  end if

в тип элементалей так же можно вписать тип человеков чтобы от них тоже сваливало.
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Если рядом

Post by Juicy Fruit »

Подгрузку файлика где потерял?))
У него при запуске автостарта это читается вроде бы. Хотя были предложения добавить нечто подобное автоматом, но пока что не реализовывал.
dubd
Posts: 249
Joined: 2012-07-27 23:43:14

Re: Если рядом

Post by dubd »

Спасибо за ответы!!

Можете пожалуйста подсказать проверку на checkcolor = 1 ? Мне именно надо - что если цвет совпадает - то пьет инвиз, если не совпадает то не пьет и просто улетает.if
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Re: Если рядом

Post by Kynep »

dubd, checkcolor = 1 это же твоя функция. ты же сам ее написал... Если смог написать такое, то простую проверку if then напишешь еще быстрей.
Тебе же уже все разъяснили...

Ищем элема
Если нашел, то берем его ИД.
Далее по ИД проверяем цвет(color = checkcolor(elem))
Если color = 1 то реколимся, если нет, то ignore(elem).
dubd
Posts: 249
Joined: 2012-07-27 23:43:14

Re: Если рядом

Post by dubd »

я был в плохом состоянии, ничего не помню.

ну вот кусочек:

Code: Select all

if uo.findtype(elem_type, -1, 'ground', distance) then
   uo.usetpye(invis_type, invis_color)
   wait(200)
endif


как правелно будет прикрепить?

я имею ввиду для старого инжекта. а не для нового с внесением в autoload elem'a.
dubd
Posts: 249
Joined: 2012-07-27 23:43:14

Re: Если рядом

Post by dubd »

спасибо есть контакт. только там двумя строчками не обойтись было.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Если рядом

Post by Mirage »

вообщето именно двумя :) + 2 дополнительные для игнора.

вар 1:
в выносной функции надо дописать одну строку

Code: Select all

   for n=1 to 14
      if c == color[n] then
         return 1
      endif
   next
   return 0

а в поиске сделать вот так

Code: Select all

if uo.findtype(elem_type, -1, 'ground', distance) then
   if checkcolor('finditem') then
      uo.usetpye(invis_type, invis_color)
      wait(200)
   else
      UO.Ignore('finditem')
   endif
endif

вар2 даже короче. Не нужно выносных функций и игнорами баловаться не нужно. В шапке объявляешь массив цветов а в скрипте делаешь так:

Code: Select all

for n=1 to 14
   if uo.findtype(elem_type, color[n], 'ground', distance) then
      uo.usetpye(invis_type, invis_color)
      wait(200)
      return ; выбьет из цикла
   endif
next
dubd
Posts: 249
Joined: 2012-07-27 23:43:14

Re: Если рядом

Post by dubd »

спасибо большое, очень пригодитца.
dubd
Posts: 249
Joined: 2012-07-27 23:43:14

Re: Если рядом

Post by dubd »

пле! с вариантом номер2 немного ошибку выдает - Variable undefined - N

Code: Select all

for n=1 to 14
   if uo.findtype('elem_type', 'color[n]', 'ground', 'distance') then
      uo.usetype('invis_type', 'invis_color')
      wait(200)
      return ; выбьет из цикла
   endif
next


ошибка при улете на выгрузку возникает.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Если рядом

Post by Mirage »

Variable значит у тебя var переменная не объявдена.

Code: Select all

 var n, c
   Dim color[14]
   color[1]='0x09DA'
   color[2]='0x0060'
   color[3]='0x0BA7'
   color[4]='0x09E6'
   color[5]='0x09B9'
   color[6]='0x09D3'
   color[7]='0x008F'
   color[8]='0x09EC'
   color[9]='0x09F0'
   color[10]='0x010F'
   color[11]='0x09A4'
   color[12]='0x0085'
   color[13]='0x08AF'
   color[14]='0x0028'
   c=uo.getcolor(obj)
   for n=1 to 14
вот это надо в скрипт прописывать в шапку
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Если рядом

Post by Juicy Fruit »

И вписать необходимые типы, цвета и дистанцию.
dubd
Posts: 249
Joined: 2012-07-27 23:43:14

Re: Если рядом

Post by dubd »

шапка, шапка это наверху где то :)

только как я

Code: Select all

sub checkcolor(obj)
var n, c   
Dim color[14]
   color[1]='0x09DA'
   color[2]='0x0060'
   color[3]='0x0BA7'


наверх запихну, там же sub main.
Post Reply