Stealth + Hiding

Good scripts, not reviewed and checked yet

Moderators: Murderator+, Murderator

Post Reply
Sayrus
Posts: 4
Joined: 2010-03-23 11:23:30

Stealth + Hiding

Post 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
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: Stealth + Hiding

Post 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
Sayrus
Posts: 4
Joined: 2010-03-23 11:23:30

Re: Stealth + Hiding

Post by Sayrus »

Beyonder, спасибо за критику, замечания и дополнения. Я поделился тем, что написал для не пренужденной прокачки.
Мне показалось, что проверки на смерть, несработка хайда и т.д. была не актуальна, так как сам хайд качается за сутки, стелс чуть больше. Именно на этом скрипте. Единственное что можно добавить, это чтобы чар время от времени ел, на том шарде где я играю, это актуально.
А так, спасибо.
P.S. *добавлено позже
Посмотрел скрпит, да действительно он хорошо работает. Так что кто будет читать этот топик рекомендую!
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: Stealth + Hiding

Post 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
Sayrus
Posts: 4
Joined: 2010-03-23 11:23:30

Re: Stealth + Hiding

Post by Sayrus »

Cупер, это тоже работает
Fok
Posts: 1
Joined: 2012-01-27 01:10:54

Re: Stealth + Hiding

Post by Fok »

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

как определить тип еды?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Stealth + Hiding

Post by Mirage »

попробовать почитать форум, например целую ветку посвященную урокам.
Там узнаешь что такое "запятая" и что будет если набрать info в игре.
Nearga
Posts: 53
Joined: 2012-02-10 15:17:10

Re: Stealth + Hiding

Post 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

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