Yoko
http://forum.yoko.com.ua/

Если рядом
http://forum.yoko.com.ua/viewtopic.php?f=20&t=17573
Page 1 of 2

Author:  dubd [ 2015-03-25 16:45:52 ]
Post subject:  Если рядом

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

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

Author:  Juicy Fruit [ 2015-03-25 18:26:38 ]
Post subject:  Re: Если рядом

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

Author:  dubd [ 2015-03-25 19:33:43 ]
Post subject:  Re: Если рядом

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

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

Code:
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


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

Author:  Kynep [ 2015-03-25 20:30:04 ]
Post subject:  Re: Если рядом

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

Code:
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: :?: :?: :?:

Author:  dubd [ 2015-03-25 22:24:22 ]
Post subject:  Re: Если рядом

я написал вчера этот скрипт с одного захода, добро пожаловать в наш клуб. Можете помочь пожалуйста.

Author:  Kynep [ 2015-03-26 08:16:52 ]
Post subject:  Re: Если рядом

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

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


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

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

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


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

Как то так.

З.Ы. Я в этом клубе уже 9 лет, если что. :wink: :|

Author:  Juicy Fruit [ 2015-03-26 08:34:15 ]
Post subject:  Re: Если рядом

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

Author:  Kynep [ 2015-03-26 09:13:09 ]
Post subject:  Re: Если рядом

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


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

Author:  Mirage [ 2015-03-26 10:04:24 ]
Post subject:  Re: Если рядом

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

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

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

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

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

Author:  Juicy Fruit [ 2015-03-26 10:37:42 ]
Post subject:  Re: Если рядом

Подгрузку файлика где потерял?))
У него при запуске автостарта это читается вроде бы. Хотя были предложения добавить нечто подобное автоматом, но пока что не реализовывал.

Author:  dubd [ 2015-03-26 19:59:04 ]
Post subject:  Re: Если рядом

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

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

Author:  Kynep [ 2015-03-26 20:03:25 ]
Post subject:  Re: Если рядом

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

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

Author:  dubd [ 2015-03-26 20:23:04 ]
Post subject:  Re: Если рядом

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

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

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


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

я имею ввиду для старого инжекта. а не для нового с внесением в autoload elem'a.

Author:  dubd [ 2015-03-26 21:38:00 ]
Post subject:  Re: Если рядом

спасибо есть контакт. только там двумя строчками не обойтись было.

Author:  Mirage [ 2015-03-27 09:28:46 ]
Post subject:  Re: Если рядом

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

вар 1:
в выносной функции надо дописать одну строку
Code:
   for n=1 to 14
      if c == color[n] then
         return 1
      endif
   next
   return 0

а в поиске сделать вот так
Code:
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:
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

Author:  dubd [ 2015-03-27 13:02:05 ]
Post subject:  Re: Если рядом

спасибо большое, очень пригодитца.

Author:  dubd [ 2015-03-27 18:28:14 ]
Post subject:  Re: Если рядом

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

Code:
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


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

Author:  Mirage [ 2015-03-27 22:00:49 ]
Post subject:  Re: Если рядом

Variable значит у тебя var переменная не объявдена.
Code:
 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
вот это надо в скрипт прописывать в шапку

Author:  Juicy Fruit [ 2015-03-27 22:52:27 ]
Post subject:  Re: Если рядом

И вписать необходимые типы, цвета и дистанцию.

Author:  dubd [ 2015-03-27 23:28:51 ]
Post subject:  Re: Если рядом

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

только как я
Code:
sub checkcolor(obj)
var n, c   
Dim color[14]
   color[1]='0x09DA'
   color[2]='0x0060'
   color[3]='0x0BA7'


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

Page 1 of 2 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/