Page 1 of 1
Animal taming, нужна помощь с синтаксисом :)
Posted: 2011-04-27 14:53:33
by Mozzarellum
Добрый день, я новичок в инжекте и пока не могу реализовать алгоритм который нужен, посему прошу вашей помощи
Code: Select all
Имеем
13 животных (ID могу вбить руками, животные не меняются)
ID=0x00164CDB
ID=0x0017CA27
ID=0x000E4339
ID=0x0015C13F
ID=0x0017D893
ID=0x001D3863
ID=0x0017D891
ID=0x0013C271
ID=0x0016BA91
ID=0x001586EC
ID=0x001299AF
ID=0x0016B875
ID=0x0016BA93
задача тамить их по очереди и отпускать перед приручением каждого следующего
при It seems to accept you as its master
Say All release
переходить к следующему
при получении сообщения при попытке приручить
... does not want to be tamed by you just yet
переходить к другому
если животное вдруг удалилось в процессе и сообщение I cannot tame this или до начала You are too far awar to tame that
перейти к следующему
и так зациклить по кругу
П.С.в поиске того что мне нужно я не нашёл
Re: Animal taming, нужна помощь с синтаксисом :)
Posted: 2011-04-27 15:25:21
by Mozzarellum
Code: Select all
sub Taming()
DIM Animal[13]
VAR i
Animal[1]='0x00164CDB'
Animal[2]='0x0017CA27'
Animal[3]='0x000E4339'
Animal[4]='0x0015C13F'
Animal[5]='0x0017D893'
Animal[6]='0x001D3863'
Animal[7]='0x0017D891'
Animal[8]='0x0013C271'
Animal[9]='0x0016BA91'
Animal[10]='0x001586EC'
Animal[11]='0x001299AF'
Animal[12]='0x0016B875'
Animal[13]='0x0016BA93'
start:
for i=0 to 13
if i==13 then
i=0
endif
i=i+1
UO.Say('all release')
UO.DeleteJournal()
UO.WaitTargetObject(Animal[i])
UO.Useskill('Animal Taming')
repeat
wait(100)
until Uo.InJournal('It seems to accept you as its master|does not want to be tamed by you just yet|I cannot tame this|You are too far awar to tame that')
goto start
end sub
вот такой скриптик накидал, осталось только сделать так
чтобы кидал таргет на животинусейчас Tame wich animal? и ждёт указателя
помогите
Re: Animal taming, нужна помощь с синтаксисом :)
Posted: 2011-04-27 15:31:33
by Exist
Code: Select all
sub Taming()
DIM Animal[13]
VAR i
Animal[1]='0x00164CDB'
Animal[2]='0x0017CA27'
Animal[3]='0x000E4339'
Animal[4]='0x0015C13F'
Animal[5]='0x0017D893'
Animal[6]='0x001D3863'
Animal[7]='0x0017D891'
Animal[8]='0x0013C271'
Animal[9]='0x0016BA91'
Animal[10]='0x001586EC'
Animal[11]='0x001299AF'
Animal[12]='0x0016B875'
Animal[13]='0x0016BA93'
start:
for i=0 to 13
if i==13 then
i=0
end if
i=i+1
UO.Say('all release')
UO.DeleteJournal()
while not UO.InJournal('It seems to accept you as its master|does not want to be ramed by you just yet|I cannot tame this|You are too far awar to tame that')
UO.WaitTargetObject('Animal[i]')
UO.Useskill('Animal Taming')
repeat
wait(100)
until UO.InJournal('fail')
wait(500)
If Uo.InJournal('It seems to accept you as its master|does not want to be ramed by you just yet|I cannot tame this|You are too far awar to tame that') Then
goto start
Endif
wend
end sub
Code: Select all
UO.WaitTargetObject(Animal[i]) - вот так должен выглядеть этот кусок
Не проверял но по идее должно работать
Re: Animal taming, нужна помощь с синтаксисом :)
Posted: 2011-04-27 16:41:58
by Mirage
животные одного типа или как?
Если тип один (несколько кур, коней, лам или прочее) то вот так лучше.
Code: Select all
sub AnimalTaming()
var animal = '0x00D0' #тип животного
uo.Set('finddistance', 8)
uo.ignorereset()
uo.warmode('0')
Repeat
uo.FindType(animal, -1, 'ground')
if uo.FindCount()>0 then
UO.DeleteJournal()
UO.WaitTargetObject('finditem')
UO.Useskill('Animal Taming')
repeat
wait(100)
until UO.InJournal('fail|It seems|already|rememb|creature') or uo.GetX('finditem')==0
If Uo.InJournal('It seems|already|creature') Then
UO.Hide('finditem')
UO.Ignore('finditem')
uo.say('all release')
endif
else
uo.ignorereset()
UO.Msg(".resync")
endif
wait(500)
Until uo.Dead()
end sub
Re: Animal taming, нужна помощь с синтаксисом :)
Posted: 2011-04-27 18:19:01
by Mozzarellum
Exist, спасиб
исправил мишеньку и теперь после затамливания первого всё встаёт
Mirageживотные конкретные, 13 штук и они не меняются
несколько лошадей, пара медведей, свинок, пантер, овец и тп )
хотелось бы доделать свой алгоритм
Re: Animal taming, нужна помощь с синтаксисом :)
Posted: 2011-04-27 19:57:54
by Mirage
Иногда лучше взять чтото новее и работоспособнее чем пытать ся реинкарнировать устаревшие функции
1) нигде не указано дистанция поиска животных на земле. => может глючить
2) достаточно прочитать уроки скриптинга чтобы отказаться от фишет типо GOTO из цикла...
3) конечно он останавливается - ловушка
Code: Select all
repeat
wait(100)
until UO.InJournal('fail')
будет вечно крутиться в ожидание фола.
4) алгоритм лучше делать следующим образом.
Code: Select all
Повторять
for массива животных
повторять
притамить тварюшку
ЖДАТЬ ПОКА - ВСЕ ВОЗМОЖНЫЕ ФРАЗЫ
пока не прозвучит успешная фраза или кончится таймер (который нужно добавить чтобы вот так не зависал цикл)
сказать ПШЛА ВОН
next
Пока чар живой
Ваяйте.
PS НАМНОГО удобнее и гармоничнее тренироваться на
однотипных животинах Тогда при смерти 1 экземпляра не придется переписывать куски кода.
Re: Animal taming, нужна помощь с синтаксисом :)
Posted: 2011-04-27 20:16:18
by Mozzarellum
ваш скрипт также не работает
...может что с инжой у меня что она IF не читает?

он выполняет то что после else
Re: Animal taming, нужна помощь с синтаксисом :)
Posted: 2011-04-27 22:29:20
by Mirage
Хм.
Скрипт работает у меня на сервере. Только что проверил на курах - в загоне около 25 кур - тамит прячет и отпускает.
Всего скорее ошибка связана с различием сообщений.
Но тут уж я не помощник - это самому нужно прописывать что пишется на сервере.
Re: Animal taming, нужна помощь с синтаксисом :)
Posted: 2011-04-27 23:23:16
by Mozzarellum
'fail|It seems|already|rememb|creature'
а что за фразы скрываются под этими словами?
Re: Animal taming, нужна помощь с синтаксисом :)
Posted: 2011-04-28 00:52:14
by Exist
Mozzarellum wrote:'fail|It seems|already|rememb|creature'
а что за фразы скрываются под этими словами?
Code: Select all
repeat ; повтор цикла
wait(100) ; ждем
until UO.InJournal('fail|It seems|already|rememb|creature') or uo.GetX('finditem')==0 ; в журнале видим что не удалось, а также что удалось, что запомнила животина
If Uo.InJournal('It seems|already|creature') Then ; фильтруем полученный журнал если всеже затеймили то
UO.Hide('finditem') ; прячем
UO.Ignore('finditem') ; игнорим
uo.say('all release') ; прогоняем
endif ; конец фильтра
Надеюсь так понятнее будет.
Code: Select all
'fail|It seems|already|rememb|creature' - сюда пишешь свои сообщения, все когда не удалось и все когда удалось
'It seems|already|creature' - сюда пишешь все сообщения когда удалось.
Вот вродибы и все