Page 1 of 1

нужна помощь

Posted: 2014-05-12 13:29:49
by Faint
sub poison()
UO.DeleteJournal()
while NOT UO.Dead('lasttarget') and NOT UO.Dead('self')
if not uo.poisoned('lasttarget') then
uo.press(114) #F3
UO.print("poison")
while not UO.InJournal('Your precise strike has increased the level of the poison by 1')
Wait(100)
wend
UO.print("!!!!!!!!!!!") #flag
else
if uo.poisoned('lasttarget') then
uo.press(113) #F2
UO.print("ignore")
While not UO.InJournal('Your attack penetrates their armor!')
Wait(100)
Wend
endif
endif
wend
end sub
вот скрипт суть если цель под пойзоном нажимаем ф2, это абилка армор игнор, если пойзона нет то нажимаем ф3, ибилка пойзон, но проблема есть он юзает абилку пойзон и все, поидее если цель не под пойзоном он юзает абилку пойзон и ждет записи вот в этой строке
while not UO.InJournal('Your precise strike has increased the level of the poison by 1')
Wait(100)
wend
если эта запись есть, то он должен проходить дальше, но он не проходит.

Re: нужна помощь

Posted: 2014-05-12 14:38:53
by Incorrect User
C while-ами такое бывает, их вообще не использую в скриптах, предпочитаю repeat. Проверяемое сообщение должно быть с учетом регистра, поэтому нужные сообщения лучше скопировать из журнала в скрипт.

Code: Select all

sub Poison()
   repeat
      uo.deletejournal()
      if uo.poisoned("lasttarget") then
         uo.press(113)
         uo.print("Ignore")
         repeat
            wait(100)
         until uo.injournal("Your attack penetrates their armor!")
      else
         uo.press(114)
         uo.print("Poison")
         repeat
            wait(100)
         until uo.injournal("Your precise strike has increased the level of the poison by 1")
      end if
   until uo.dead()
end sub

Re: нужна помощь

Posted: 2014-05-12 14:41:39
by Faint
а как копировать из журнала?

Re: нужна помощь

Posted: 2014-05-12 14:44:38
by Incorrect User
Сделай нужные действия чтобы требуемые сообщения появились в игре, потом в клиенте напиши ,showjournal 100 или, если новый инжект то _showjournal 100. Откроется окно с сообщениям сервера в текстовом виде и от туда копируй что нужно.

Re: нужна помощь

Posted: 2014-05-12 14:45:27
by Faint
СПасибо уже разобрался, буду дальше пилить скрипт, если что-то не выйдет отпишусь))

Re: нужна помощь

Posted: 2014-05-12 15:05:32
by Faint
Проблема была в том, что в журнал клилоки записываються))) теперь есть еще одна проблема:если при включенной абилке ты попадаешь в паринг, то она вырубаеться. пробовал решить это сл. способом:

Code: Select all

sub Poison()
   repeat
      uo.deletejournal()
      if uo.poisoned("lastattack") then
         ignore:
         uo.press(113)
         uo.print("Ignore")
         repeat
          if  uo.injournal("cliloc# 0x103114") goto ignore
            wait(100)
         until uo.injournal("cliloc# 0x102CEC")
      else
      poison:
         uo.press(114)
         uo.print("Poison")
         repeat
         if  uo.injournal("cliloc# 0x103114") goto poison
            wait(100)
         until uo.injournal("cliloc# 0x102CF0")
      end if
   until uo.dead()
end sub

но выдает парсер эрор. Все решилось)) я просто забыл синтаксис.

Re: нужна помощь

Posted: 2014-05-12 15:11:23
by Incorrect User
И для справки - UO.Dead('lasttarget') бесполезно, uo.dead работает только на себя.

Re: нужна помощь

Posted: 2014-05-12 15:25:48
by Faint

Code: Select all

sub Poison()
   repeat
      uo.deletejournal()
      if uo.poisoned("lastattack") then
         ignore:
         uo.press(113)
         uo.print("Ignore")
         repeat
            if  uo.injournal("cliloc# 0x103114") then goto ignore
               wait(50)
            endif
         until uo.injournal("cliloc# 0x102CEC")
      else
         poison:
         uo.press(114)
         uo.print("Poison")
         repeat
            if  uo.injournal("cliloc# 0x103114") then goto poison
               wait(50)
            endif 
         until uo.injournal("cliloc# 0x102CF0")
      end if
   until uo.dead()
end sub

вот последний вариант скрипта, но иногда вылетает с парсер эрор. Из-за чего может быть?

Re: нужна помощь

Posted: 2014-05-12 15:39:25
by Incorrect User
Потому что задержки в циклах нет, и меньше 100 ставить не желательно, да и смысла нет особого. Твой скрипт

Code: Select all

         repeat
            if  uo.injournal("cliloc# 0x103114") then если есть условие то делаем то что после if иначе пропускаем все тело.
               goto poison
               wait(50)
            endif
         until uo.injournal("cliloc# 0x102CF0")

По этому правильно будет, поправь во всех частях скрипта

Code: Select all

         repeat
            if  uo.injournal("cliloc# 0x103114") then если есть условие то делаем то что после if иначе пропускаем все тело.
               goto poison
                 else
               wait(100)
            endif
         until uo.injournal("cliloc# 0x102CF0")

Re: нужна помощь

Posted: 2014-05-12 15:47:23
by Faint
спасибо буду тестить)

Re: нужна помощь

Posted: 2014-05-12 16:22:40
by Faint

Code: Select all

sub Poison()
   repeat
      uo.deletejournal()
      if uo.poisoned("lastattack") then
         ignore:
         uo.press(113)
         uo.print("Ignore")
         repeat
            if  uo.injournal("cliloc# 0x103114") then goto ignore
            else
               wait(100)
            endif
         until uo.injournal("cliloc# 0x102CEC")
      else
         poison:
         uo.press(114)
         uo.print("Poison")
         repeat
            if  uo.injournal("cliloc# 0x103114") then goto poison
            else
               wait(100)
            endif 
         until uo.injournal("cliloc# 0x102CF0")
      end if
   until uo.dead()
end sub

иногда в 9,10,19,20 строках вылетает парсер эрор, куда можно еще задержки понаставлять? или это не из-за этого?

Re: нужна помощь

Posted: 2014-05-12 17:05:46
by Incorrect User
Пробуй. И инжект скачай свежий если у тебя не такой http://rghost.ru/53116301

Code: Select all

sub Poison()
   repeat
      uo.deletejournal()
      if uo.poisoned("lastattack") then
         uo.press(113)
         uo.print("Ignore")
         repeat
            wait(100)
         until uo.injournal("cliloc# 0x102CEC") or uo.injournal("cliloc# 0x103114")
      else
         uo.press(114)
         uo.print("Poison")
         repeat
            wait(100)
         until uo.injournal("cliloc# 0x102CF0") or uo.injournal("cliloc# 0x103114")
      end if
   until uo.dead()
end sub

Re: нужна помощь

Posted: 2014-05-12 17:17:45
by Faint
Ошибка оказывается выскакивала тогда, когда не хватало маны на абилку) вставил проверки и ошибка вроде-как пропала. Можно еще вопрос как можно проверить наличие оружия в руке?

Re: нужна помощь

Posted: 2014-05-12 17:25:26
by Juicy Fruit
Faint wrote:

Code: Select all

            if  uo.injournal("cliloc# 0x103114") then goto ignore 
            else
               wait(100)
            endif
Такое работать не будет.

Code: Select all

            if  uo.injournal("cliloc# 0x103114") then
               goto ignore
            else
               wait(100)
            endif
Такое - может быть.

Faint wrote:Можно еще вопрос как можно проверить наличие оружия в руке?
uo.ObjAtLayer(Layer)

Допустим

Code: Select all

if uo.ObjAtLayer('Rhand') then
   uo.print('В правой руке что-то есть')
else
   uo.print('В правой руке пусто.')
endif