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