Page 1 of 1
Until и uo.waittargetobject
Posted: 2009-08-23 11:38:07
by xarek
Здрасте, появилось два вопроса:
Как то глупо, но все же, что делает
и можо ли таргет кидать на finditem
Code: Select all
uo.FindType(iten,'-1','backpack')
uo.waittargetobject('finditem')
или
Code: Select all
var item = '0x000'
uo.waittargetobject('item')
Re: Until и uo.waittargetobject
Posted: 2009-08-23 12:42:07
by Mirage
Как то глупо
Until UO.InJournal повторять до сообщения в журнале
uo.FindType(iten,'-1','backpack')
uo.waittargetobject('finditem')
так и кидают
Code: Select all
var item = '0x000'
uo.waittargetobject('item')
Ожидание прицела на ОБЪЕКТ. Объект задается по ID а не по типу. Если у item будет ID то можно.
http://yoko.com.ua/help/ тебе в помощь
Re: Until и uo.waittargetobject
Posted: 2009-08-23 12:49:02
by Kynep
xarek wrote:Здрасте, появилось два вопроса:
Как то глупо, но все же, что делает
Это условие выхода из цикла
Ждет указанною стоку строку в журнале:
Code: Select all
repeat
...тут что-то делается...
wait(100)
until UO.InJournal('Чорд!')
xarek wrote:и можо ли таргет кидать на finditem
Можно, почему нет, только сначала нужно убедиться, нашел или нет, иначе краш:
Code: Select all
uo.FindType(iten,'-1','backpack')
If UO.FindCount() > 0 then
uo.waittargetobject('finditem')
...
endif
xarek wrote:или
Code: Select all
var item = '0x000'
uo.waittargetobject('item')
А вот так нельзя, команда
в качестве аргументов принимает только серийники:
Code: Select all
var item = '0x00000000'
uo.waittargetobject('item')
Надеюсь доступно обьяснил? Эта инфа есть в
Уроках скриптинга.
Posted: 2009-08-23 15:55:45
by xarek
Да, конечно понятно:) Спасибо вам.
И спасибо за ссылочку на уроки:)
Posted: 2009-08-24 21:19:22
by xarek
Появился еще вопросик:( намучался:)
вот
Code: Select all
.......
If UO.InJournal('привет') then
... делается1
If UO.InJournal('пока') then
вот как сделать тут что если замечено "пока" то уже не надо дальше идти по скрипту а просто начать сначало и ждать "привет"
Endif
....делается2
Endif
......
Posted: 2009-08-24 21:31:06
by Kynep
xarek wrote:Появился еще вопросик:( намучался:)
вот как сделать тут что если замечено "пока" то уже не надо дальше идти по скрипту а просто начать сначало и ждать "привет"
Code: Select all
sub blah()
var a = 0
while NOT UO.Dead()
If UO.InJournal('привет') then
UO.DeleteJournal()
repeat
...
If UO.InJournal('пока') then
...
a = 5
endif
until UO.InJournal('покакаеш дома') OR a = 5
endif
wend
end sub
Вот основная конструкция, с выходом по двум условиям, естественно условий может быть больше, дальше настраивай под себя сам.
Posted: 2009-08-24 21:40:44
by xarek
Kynep wrote:xarek wrote:Появился еще вопросик:( намучался:)
вот как сделать тут что если замечено "пока" то уже не надо дальше идти по скрипту а просто начать сначало и ждать "привет"
Code: Select all
sub blah()
var a = 0
while NOT UO.Dead()
If UO.InJournal('привет') then
UO.DeleteJournal()
repeat
...
If UO.InJournal('пока') then
...
a = 5
endif
until UO.InJournal('покакаеш дома') OR a = 5
uo.say('1')
endif
wend
end sub
а при таком раскладе, он сначало скажет 1 а потом уже начнет опять ждать?
Posted: 2009-08-24 22:21:31
by Kynep
Да. Если тока если поставишь say после endif.
Posted: 2009-08-26 22:47:41
by xarek
Простите, но я вас еще потревожу, калупаюсь 3 день и бестолку.
Code: Select all
Uo.Warmode(0)
while uo.Targeting()
wait(500)
wend
uo.findtype(animal,"-1","ground")
while not uo.InJournal('It seems')and not uo.InJournal('is already')
uo.DeleteJournal()
uo.waittargetobject('finditem')
wait(200)
uo.UseType('0x13F9')
repeat
walk(0,0,'finditem')
Endif
wait(500)
until uo.InJournal('You fail') or uo.InJournal('It seems') or uo.InJournal('is already')
wend
uo.UseObject('finditem')
вся проблема с
и
Code: Select all
and not uo.InJournal('is already')
почему то после добавленияэтих условий у меня стало зацикливаться
Posted: 2009-08-27 06:30:50
by Mirage
1) а что ты вообще ваяешь?
2)можно делать так while not uo.InJournal('It seems|is already')
3)у тебя цикл While выполняется пока не будет в журнале фразы которая еще и завершает цикл repeat. Потом естественно будет делаться только последняя строка
4) если ты хочешь сделать цикл бесконечно повторяющийся то можно сделать так:
Code: Select all
while not uo.dead() # <---
...
uo.DeleteJournal()
...
repeat
...
until (чтото в журнале)
wend
Тебе же про это выше писали

Posted: 2009-08-27 07:45:14
by xarek
Mirage wrote:1) а что ты вообще ваяешь?
2)можно делать так while not uo.InJournal('It seems|is already')
3)у тебя цикл While выполняется пока не будет в журнале фразы которая еще и завершает цикл repeat. Потом естественно будет делаться только последняя строка
4) если ты хочешь сделать цикл бесконечно повторяющийся то можно сделать так:
Code: Select all
while not uo.dead() # <---
...
uo.DeleteJournal()
...
repeat
...
until (чтото в журнале)
wend
Тебе же про это выше писали

Если бы я хотел сделать бесконнечно повторяющийся я бы не заморачивался с фразами:)
тамилку делаю т.к. подходящей для себя не нашел
мне просто нужно сделать, что бы при
is already делались те же действия при
It seems
Posted: 2009-08-27 09:15:41
by Mirage
опиши алгоритм чего ты хочешь делать по пунктам.
1) вижу животину
2)тамлю
3)подхожу
4)убиваю...
типо того. Наверняка то что тебе нужно либо есть либо тебе так скорее помогут.
Posted: 2009-08-27 09:19:49
by xarek
то что я скинул, это уже после того как была найдена животина,
Темит пока не затемит, если затемил не ты или конь уже затемлен то дальше т.е. после того что я выложил скрипт продолжается дальше.
Posted: 2009-08-27 09:25:50
by Mirage
xarek wrote:то что я скинул, это уже после того как была найдена животина,
Темит пока не затемит, если затемил не ты или конь уже затемлен то дальше т.е. после того что я выложил скрипт продолжается дальше.
Нифига не понял

Если не хочешь писать тут напиши ПМ
PS Добавь uo.DeleteJournal() перед while
Posted: 2009-08-27 09:37:51
by xarek
Скрывать нечего, просто нужна тамилка животного. С проверкой, свободна живка или нет, если она уже занята, то в игнор ее:)
Posted: 2009-08-27 13:15:37
by Mirage
Ну вот смотри. В определенном пространстве есть толпа животных. Животинки после таминга и релиза забывает хозяина минут за 15-20. По этой причине необходимо собрать штук 40-50 (например кур или ворон). После приручения тварюшка прячется и игнориться чтобы не смущать. Когда все притамлены ресинком они появляются и опять во кругу.
Code: Select all
sub AnimalTaming()
VAR n=1, corpse
var animal1 = '0x00D0' #тип животного
UO.Set('quiet','1')
uo.ignorereset()
uo.warmode('0')
Repeat
uo.Set('finddistance', 8)
uo.FindType(animal1, -1, 'ground')
if uo.FindCount()>0 then
uo.warmode(0)
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")
wait(500)
endif
wait(500)
Until uo.Dead()
end sub
Простой таминг с осёдлыванием:
Code: Select all
sub AnimalTaming()
UO.Print('Где эта скотина?')
UO.Exec('addobject Animal')
while uo.Targeting()
wait(100)
wend
UO.DeleteJournal()
while not UO.InJournal('It seems|see the creature|already|rememb')
UO.DeleteJournal()
UO.WaitTargetObject('Animal')
UO.Useskill('Animal Taming')
repeat
wait(100)
until UO.InJournal('fail|It seems|already|rememb')
wait(500)
If Uo.InJournal('It seems|already') Then
wait(1500)
uo.useobject('Animal')
return
Endif
wend
end sub
Наверное тебе нужнее второй скрипт?
PS
у нас на сервере (как и обычно) животное подходит к хозяину после приручения, не обязательно к нему подходить. Лишь бы не заходило за препятствия. А из того же леса его можно ударив вывести потом спрятаться и пока он на поле топчется уже тамить.
Posted: 2009-08-27 13:31:36
by xarek
Спасибо, да мне нужен был второй, ну и первым я воспользуюсь:)
Я поставил подход для того, что бы живка не убежала пока я ее темить буду:)