Yoko
http://forum.yoko.com.ua/

Stealth + Hiding
http://forum.yoko.com.ua/viewtopic.php?f=15&t=15667
Page 1 of 1

Author:  Sayrus [ 2010-03-23 11:45:37 ]
Post subject:  Stealth + Hiding

Code:
# это банальный скрипт, но знаю, что здесь есть люди. Которые 
# нуждаются и в таком. Я качал при хайдинге 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

Author:  Beyonder [ 2010-03-23 14:26:24 ]
Post subject:  Re: Stealth + Hiding

Твой скрипт очень похож на мой первый скрипт который я написал для УО :). Правда я его написал для Ассиста а не для инжекта.

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

P.S. Лучше использовать while вместо goto, за goto могут надавать по ушам программеры :) (XKCD Goto)

Code:
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

Author:  Sayrus [ 2010-03-24 18:36:12 ]
Post subject:  Re: Stealth + Hiding

Beyonder, спасибо за критику, замечания и дополнения. Я поделился тем, что написал для не пренужденной прокачки.
Мне показалось, что проверки на смерть, несработка хайда и т.д. была не актуальна, так как сам хайд качается за сутки, стелс чуть больше. Именно на этом скрипте. Единственное что можно добавить, это чтобы чар время от времени ел, на том шарде где я играю, это актуально.
А так, спасибо.
P.S. *добавлено позже
Посмотрел скрпит, да действительно он хорошо работает. Так что кто будет читать этот топик рекомендую!

Author:  Beyonder [ 2010-03-25 00:11:44 ]
Post subject:  Re: Stealth + Hiding

Quote:
Посмотрел скрпит, да действительно он хорошо работает. Так что кто будет читать этот топик рекомендую!


Это хорошо, т.к. скрипт я писал прямо в окне ответа на базе твоего скрипта и ни разу его не проверял :)

Quote:
чтобы чар время от времени ел

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

Code:
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

Author:  Sayrus [ 2010-03-26 12:53:56 ]
Post subject:  Re: Stealth + Hiding

Cупер, это тоже работает

Author:  Fok [ 2012-01-27 02:01:58 ]
Post subject:  Re: Stealth + Hiding

Beyonder wrote:
Сюда забить типы еды

как определить тип еды?

Author:  Mirage [ 2012-01-27 05:59:40 ]
Post subject:  Re: Stealth + Hiding

попробовать почитать форум, например целую ветку посвященную урокам.
Там узнаешь что такое "запятая" и что будет если набрать info в игре.

Author:  Nearga [ 2012-02-18 02:48:28 ]
Post subject:  Re: Stealth + Hiding

Решил не плодить сущностей :)
Скрипт, на котором я поднял стелс до ГМа на ДВРе.

Code:
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

В цикл ходьбу было влом запихивать :)

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/