Page 1 of 1
Stealth + Hiding
Posted: 2010-03-23 11:45:37
by Sayrus
Code: Select all
# это банальный скрипт, но знаю, что здесь есть люди. Которые
# нуждаются и в таком. Я качал при хайдинге 70 и стелс 13
# Самое главное работает! Единственное! если это происходит в комнате
# рано или поздно упрется в стенку. ну это не страшно, он потом
# развернется и исправится
# UO.Press(37,2,300) - это цифровой код клавиши Left, нажимаем 2 раза
# с задержкой в 300 мс., не 100мс! иначе система может воспринять это за спидхак :)
# Так написано в правилах шарда DRW
sub main()
hidding:
UO.Useskill("Hiding")
wait(2500)
UO.Press(37,2,300)
UO.Useskill("Hiding")
wait(2500)
UO.Press(39,2,300)
goto hidding
end sub
Re: Stealth + Hiding
Posted: 2010-03-23 14:26:24
by Beyonder
Твой скрипт очень похож на мой первый скрипт который я написал для УО

. Правда я его написал для Ассиста а не для инжекта.
Вот немного улучшенная версия. Разница в том, что теперь скрипт сначала ждёт успешного хайда, и только потом ходит. Причём не пытается заюзать скилл если уже захайден. Эффективность скрипта где-то на 10-20% больше.
P.S. Лучше использовать while вместо goto, за goto могут надавать по ушам программеры

(
XKCD Goto)
Code: Select all
sub main()
while not UO.Dead()
hide()
UO.Press(37,2,300)
Wait(300) ; После второго нажатия паузы не будет, так что нужно добавить её вручную
hide()
UO.Press(39,2,300)
Wait(300)
wend
end sub
Sub hide()
var failMessage = "You fail|You don't|You can't"
var timeLeft = 0
while not UO.Hidden() ; Если мы уже спрятались - не крутим цикл
UO.Useskill("Hiding") ; Пытаемся спрятаться
DeleteJournal(failMessage) ;Удаляем все сообщения об неудачах с журнала
timeLeft = 3000 ;Обнуляем счётчик ожидания скилла
while (not UO.Hidden()) AND (timeLeft > 0) AND (UO.InJournal(failMessage) == 0) ;Ждём пока не захайдимся, либо не получим сообщение об неуспешном хайде, либо пока не истекут 3 секунды выделенные на хайд.
timeLeft = timeLeft - 100
wait(100)
wend
wend
endsub
Sub DeleteJournal( string1 )
VAR nom = UO.InJournal( string1 )
If nom > 0 Then
UO.SetJournalLine( Nom - 1, 'string replaced' )
DeleteJournal( string1 )
Endif
endsub
Re: Stealth + Hiding
Posted: 2010-03-24 18:36:12
by Sayrus
Beyonder, спасибо за критику, замечания и дополнения. Я поделился тем, что написал для не пренужденной прокачки.
Мне показалось, что проверки на смерть, несработка хайда и т.д. была не актуальна, так как сам хайд качается за сутки, стелс чуть больше. Именно на этом скрипте. Единственное что можно добавить, это чтобы чар время от времени ел, на том шарде где я играю, это актуально.
А так, спасибо.
P.S. *добавлено позже
Посмотрел скрпит, да действительно он хорошо работает. Так что кто будет читать этот топик рекомендую!
Re: Stealth + Hiding
Posted: 2010-03-25 00:11:44
by Beyonder
Посмотрел скрпит, да действительно он хорошо работает. Так что кто будет читать этот топик рекомендую!
Это хорошо, т.к. скрипт я писал прямо в окне ответа на базе твоего скрипта и ни разу его не проверял

чтобы чар время от времени ел
Еду я-бы добавил где-то так:
(Предупреждаю, это я тоже писал в окне ответа и не проверял

).
Кстати, функцию еды можно использовать в любом скрипте, она вроде как универсальная (если конечно работает).
Code: Select all
sub main()
while not UO.Dead()
hide()
UO.Press(37,2,300)
Wait(300) ; После второго нажатия паузы не будет, так что нужно добавить её вручную
hide()
UO.Press(39,2,300)
Wait(300)
checkFood()
wend
end sub
Sub hide()
var failMessage = "You fail|You don't|You can't"
var timeLeft = 0
while not UO.Hidden() ; Если мы уже спрятались - не крутим цикл
UO.Useskill("Hiding") ; Пытаемся спрятаться
DeleteJournal(failMessage) ;Удаляем все сообщения об неудачах с журнала
timeLeft = 3000 ;Обнуляем счётчик ожидания скилла
while (not UO.Hidden()) AND (timeLeft > 0) AND (UO.InJournal(failMessage) == 0) ;Ждём пока не захайдимся, либо не получим сообщение об неуспешном хайде, либо пока не истекут 3 секунды выделенные на хайд.
timeLeft = timeLeft - 100
wait(100)
wend
wend
endsub
Sub DeleteJournal( string1 )
VAR nom = UO.InJournal( string1 )
If nom > 0 Then
UO.SetJournalLine( Nom - 1, 'string replaced' )
DeleteJournal( string1 )
Endif
endsub
var eatDelay = 10*60*1000 ; Задержка между едой. В данном случае - 10 минут
Sub checkFood()
var foodCount = 5
dim foodArray[val(str(foodCount))] ; Без изврата с val(str()) иногда крашит массивы
foodArray[0] = '0x0001' ; Сюда забить типы еды
foodArray[1] = '0x0001'
foodArray[2] = '0x0001'
foodArray[3] = '0x0001'
foodArray[4] = '0x0001'
var lastEatTime = val(UO.GetGlobal('lastEatTime'))
var i
if (lastEatTime+(eatDelay/10) > UO.Timer()) then ; Делим на 10 т.к. UO.Timer() даёт нам не тысячные а сотые доли секунды
for i=0 to foodCount
if (UO.Count(foodArray[i]) > 0) then
UO.UseType(foodArray[i])
i=foodCount-1 ;Чтобы на следующем обороте выйти из цикла
endif
next
UO.SetGlobal('lastEatTime',str(UO.Timer()))
endif
endsub
Re: Stealth + Hiding
Posted: 2010-03-26 12:53:56
by Sayrus
Cупер, это тоже работает
Re: Stealth + Hiding
Posted: 2012-01-27 02:01:58
by Fok
Beyonder wrote:Сюда забить типы еды
как определить тип еды?
Re: Stealth + Hiding
Posted: 2012-01-27 05:59:40
by Mirage
попробовать почитать форум, например целую ветку посвященную урокам.
Там узнаешь что такое "запятая" и что будет если набрать info в игре.
Re: Stealth + Hiding
Posted: 2012-02-18 02:48:28
by Nearga
Решил не плодить сущностей

Скрипт, на котором я поднял стелс до ГМа на ДВРе.
Code: Select all
sub HideAlwaysWithMovement()
UO.Print("[!!!]HideWithMovement script")
while true
UO.WarMode(0)
UO.UseSkill('Stealth')
wait(2000)
UO.Print("[!!!]Moving down")
#UO.Print("R")
UO.Press(39)
UO.Press(39)
UO.Press(39)
UO.Press(39)
UO.Press(39)
UO.WarMode(0)
UO.UseSkill('Stealth')
wait(2000)
UO.Print("[!!!]Moving up")
#UO.Print("L")
UO.Press(37)
UO.Press(37)
UO.Press(37)
UO.Press(37)
UO.Press(37)
wend
Endsub
В цикл ходьбу было влом запихивать
