Проблема со скриптом на БС

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
31337Ghost
Posts: 6
Joined: 2005-07-16 21:23:21

Проблема со скриптом на БС

Post by 31337Ghost »

Вот, собственно, чуть изменённый моими кривыми ручками скрипт :

Code: Select all

sub Blacksmithing() 
var Exit=0, LastTimer
var food= '0x097B'
var Timer=UO.Timer()

while Exit<>1
 
ToHide()

if UO.Timer()>(Timer+1200) then
repeat     
CheckLag()
uo.UseType(food)
while not uo.InJournal('full') and not uo.InJournal('stuffed') and not uo.InJournal('hungry') and not uo.InJournal('satiated') and not uo.Dead()
wait(100)       
wend
until uo.InJournal('too full') or uo.Dead()
Timer=UO.Timer()
wait(3000)
end if

uo.FindType('0x1BEF',-1,'backpack')
if uo.GetQuantity('finditem')<10 then
uo.FindType('0x1BEF','0x0000','0x401C6058')
wait(1000)
uo.Grab('200','finditem')
Endif
wait(1000)

uo.DeleteJournal()
LastTimer=uo.Timer()
uo.WaitMenu('Blacksmithing','Shield','Shield','buckler')
uo.UseType('0x1BEF')
 
while not uo.InJournal('You put') and not uo.InJournal('You have failed')
wait(500)
wend

if uo.InJournal('You have failed') then
repeat
wait(100)
until uo.Timer()>=LastTimer+100
end if

uo.FindType('0x1B73',-1,'backpack')
wait(500)

if uo.GetQuantity('finditem') then
uo.WaitTargetObject('finditem')
uo.UseObject('0x40058A35')
wait(1000)
end if

wend   
end sub

sub ToHide()
while not uo.Hidden()
uo.Useskill('Hiding')
wait(4000)
wend



Трабл состоит в том, что скрипт иногда тупо застревает и не делает ничего, пытался выяснить в каком месте он ступорится - так ничего и не понял... Может где неадо чеклаг или вейт по-больше прописать?
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Навскидку: в динамические паузы на ожидание сообщения нужно ввести еще ограничение по времени. То есть сюда:

Code: Select all

while not uo.InJournal('full') and not uo.InJournal('stuffed') and not uo.InJournal('hungry') and not uo.InJournal('satiated') and not uo.Dead() 
wait(100)       
wend


и сюда:

Code: Select all

until uo.InJournal('too full') or uo.Dead()


и сюда:

Code: Select all

while not uo.InJournal('You put') and not uo.InJournal('You have failed') 
wait(500)
wend


Организовать просто (можешь посмотреть в моих скриптах). Введи переменную, обнули ее перед циклом ожидания сообщения, а внутри цикла наращивай ее. Ну и в проверку окончания цикла добавь чтобы эта переменная не была больше чего-либо. Это зависит от того, насколько долго то или иное действие у вас на шарде (максимальное время). Скажем, максимум за 3 минуты любая же вещь скрафтится? Значит, такого времени с избытком хватит. Так что если скрипт по какой-либо причине не поймал мессагу, то он не будет тупо висеть в ожидании этой мессаги.

Причем у тебя там где-то еще осталась подобная проверка через lasttimer. Но она не там, где надо.

Второе: После граба и ожидания 1000 мс (это ожидание лучше перенести в if, почему оно снаружи), надо добавить чеклаг.

Третье: граб желательно сделать циклом с проверкой на то, что что-то перемещено. Посмотри, если скрипт у тебя "тупо застревает" при том, что ингов в паке нету - то тогда все понятно. Просто граб из-за лага или сэйва мира не прошел, а дальше у тебя скрипт пытается крафтить, ты получаешь мессагу, что не из чего, но такая мессага у тебя отсутствует - вот скрипт стоит и ждет непонятно чего.

Дерзай. А "кривые ручки" лечатся практикой. У всех вначале были кривые.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
31337Ghost
Posts: 6
Joined: 2005-07-16 21:23:21

Post by 31337Ghost »

Ужасть, все-равно какие-то ужасы... виснет, блин.. сволочь.. даж не оставить скрипт без пресмотра.. может выложите отредакченый, а-то фто-то никак у меня мозги не домысливают до-конца чего и где править... =( а шард у нас дрв
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Кидай исправленный. Отлови висы на чем происходят и кидай сюда.

ЗЫ: На ДРВ не играл и не буду.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
Post Reply