Page 1 of 2

Если рядом

Posted: 2015-03-25 16:45:52
by dubd
Подскажите пожалуйста, как лучше организовать следующее. В общем надо перед реколом, если рядом элементал, то пьет инвиз и улетает. Если его рядом нету, то тогда не пьет!

Если у кого то есть такой кусочек, поделитесь пожалуйста! Для копки.

Re: Если рядом

Posted: 2015-03-25 18:26:38
by Juicy Fruit

Code: Select all

if uo.findtype(elem_type, -1, 'ground', distance) then
   uo.usetpye(invis_type, invis_color)
   wait(200)
endif
Вставь тип элемента, дистанцию поиска, тип и цвет инвизки.
И ответь на это плиз)

Re: Если рядом

Posted: 2015-03-25 19:33:43
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


только как вот привязать эти цвета к кусочку?

Re: Если рядом

Posted: 2015-03-25 20:30:04
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: :?: :?: :?:

Re: Если рядом

Posted: 2015-03-25 22:24:22
by dubd
я написал вчера этот скрипт с одного захода, добро пожаловать в наш клуб. Можете помочь пожалуйста.

Re: Если рядом

Posted: 2015-03-26 08:16:52
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: :|

Re: Если рядом

Posted: 2015-03-26 08:34:15
by Juicy Fruit
Else убери вообще
Return 0 перенеси за next и будет счастье)

Re: Если рядом

Posted: 2015-03-26 09:13:09
by Kynep
Juicy Fruit wrote:Else убери вообще
Return 0 перенеси за next и будет счастье)


Это я из старого скрипта скопировал. На работе свежих нет, но я стойко помню что там ретурн за некстом... а тут чета не стал редактировать. :lol:

Re: Если рядом

Posted: 2015-03-26 10:04:24
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

в тип элементалей так же можно вписать тип человеков чтобы от них тоже сваливало.

Re: Если рядом

Posted: 2015-03-26 10:37:42
by Juicy Fruit
Подгрузку файлика где потерял?))
У него при запуске автостарта это читается вроде бы. Хотя были предложения добавить нечто подобное автоматом, но пока что не реализовывал.

Re: Если рядом

Posted: 2015-03-26 19:59:04
by dubd
Спасибо за ответы!!

Можете пожалуйста подсказать проверку на checkcolor = 1 ? Мне именно надо - что если цвет совпадает - то пьет инвиз, если не совпадает то не пьет и просто улетает.if

Re: Если рядом

Posted: 2015-03-26 20:03:25
by Kynep
dubd, checkcolor = 1 это же твоя функция. ты же сам ее написал... Если смог написать такое, то простую проверку if then напишешь еще быстрей.
Тебе же уже все разъяснили...

Ищем элема
Если нашел, то берем его ИД.
Далее по ИД проверяем цвет(color = checkcolor(elem))
Если color = 1 то реколимся, если нет, то ignore(elem).

Re: Если рядом

Posted: 2015-03-26 20:23:04
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.

Re: Если рядом

Posted: 2015-03-26 21:38:00
by dubd
спасибо есть контакт. только там двумя строчками не обойтись было.

Re: Если рядом

Posted: 2015-03-27 09:28:46
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

Re: Если рядом

Posted: 2015-03-27 13:02:05
by dubd
спасибо большое, очень пригодитца.

Re: Если рядом

Posted: 2015-03-27 18:28:14
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


ошибка при улете на выгрузку возникает.

Re: Если рядом

Posted: 2015-03-27 22:00:49
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
вот это надо в скрипт прописывать в шапку

Re: Если рядом

Posted: 2015-03-27 22:52:27
by Juicy Fruit
И вписать необходимые типы, цвета и дистанцию.

Re: Если рядом

Posted: 2015-03-27 23:28:51
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.