помогите разобраться что я делаю не так...
идея такая:
1. еда в паке (рыбные стейки - кстати, умер неоднократно пока разобрался что же drow ест, и пока нашел где взять жареной рыбы в серпенте... стоит где-то в описании расы написать что она ест).
2. ищем в паке еду
3. если таковой нет, то раз в минуту напоминаем что надо достать еды (пока еда не появится или не умрем - тут как вариант думаю сделать чтобы происходил логаут, но не факт что очень надо).
4. дальше ищем в паке ключевое слово на голод (тут кстати загвоздка - я посмотрел сколько разных фраз бывает и одного слова которое бы было во всех нету. есть ли в инжекте поддержка регулярных выражений? а то очень не хочется много или-или-или писать ))
5. если голод обнаружен, то кормим - пока не поймаем в журнале ключевое слово на сытость
6. после этого журнал обнуляется и ждем дальше
первую часть (с ожиданием еды в паке) я протестировал и вроде всё было ок. но как только я добрался до части которая занимается кормежкой - у меня сразу же валится инжект... никак не могу понять что я сделал не так
могу конечно тупо жрать еду каждые N минут, но легкий путь ведь это не для нас?
код ниже, буду признателен за комментарии и любые подсказки. очень давно не писал скриптов для инжекта, так что память надо освежить))
sub autofood()
var foodType = '0x097B'; # 0x097B: fishsteaks
var hasFood = 0; # this will hold an amount of foodType found..
var foodWaitTime = 1000; # how much to wait between feedings
var warningInterval = 600; # 60 seconds (OU.Timer() returns amount in 0.1 second units)
var warningTimer = 0; # last warning timer
var matchHungry = 'голод'; # a word to match hunger
var matchNotHungry = 'неголод'; # a word to match we're no longer hungry
var isHungry = 1;
while not UO.Dead()
repeat
UO.FindType(foodType,-1,'my'); # count food in backpack
hasFood = UO.FindCount();
if hasFood == 0 then
if warningTimer < UO.Timer() - warningInterval then
UO.print('You are out of food!');
warningTimer = UO.Timer(); # reset warning timer
endif
wait(10000); # wait 10 seconds
endif
until hasFood > 0
if UO.InJournal(matchHungry) > 0 then
isHungry = 1; # someone's hungry!
endif
while isHungry == 1 and hasFood > 0
UO.print('Fish.. fish... FIIIIISH!');
UO.UseType(foodType); # lets eat
hasFood = hasFood - 1; # decrement the amount of food so we don't try to eat air
if UO.InJournal(matchNotHungry) > 0 then
isHungry = 0; # we're no longer hungry!
UO.DeleteJournal(); # clear the journal so we don't get fooled into idea that we still require food
else
wait(foodWaitTime); # wait before eating again!
endif
wend
if isHungry == 1 then
UO.print('Still hungry! hurry up! get some food!');
endif
wait(foodWaitTime);
wend
UO.print('You are dead!')
end sub