Yoko

All sides of Injection
It is currently 2024-03-28 16:01:47

All times are UTC+02:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
 Post subject: Stealth + Hiding
PostPosted: 2010-03-23 11:45:37 
Offline

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


Top
   
 Post subject: Re: Stealth + Hiding
PostPosted: 2010-03-23 14:26:24 
Offline
Expert!
User avatar

Joined: 2005-04-23 10:19:43
Posts: 388
Твой скрипт очень похож на мой первый скрипт который я написал для УО :). Правда я его написал для Ассиста а не для инжекта.

Вот немного улучшенная версия. Разница в том, что теперь скрипт сначала ждёт успешного хайда, и только потом ходит. Причём не пытается заюзать скилл если уже захайден. Эффективность скрипта где-то на 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


Top
   
 Post subject: Re: Stealth + Hiding
PostPosted: 2010-03-24 18:36:12 
Offline

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


Top
   
 Post subject: Re: Stealth + Hiding
PostPosted: 2010-03-25 00:11:44 
Offline
Expert!
User avatar

Joined: 2005-04-23 10:19:43
Posts: 388
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


Top
   
 Post subject: Re: Stealth + Hiding
PostPosted: 2010-03-26 12:53:56 
Offline

Joined: 2010-03-23 11:23:30
Posts: 4
Cупер, это тоже работает


Top
   
 Post subject: Re: Stealth + Hiding
PostPosted: 2012-01-27 02:01:58 
Offline

Joined: 2012-01-27 01:10:54
Posts: 1
Beyonder wrote:
Сюда забить типы еды

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


Top
   
 Post subject: Re: Stealth + Hiding
PostPosted: 2012-01-27 05:59:40 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
попробовать почитать форум, например целую ветку посвященную урокам.
Там узнаешь что такое "запятая" и что будет если набрать info в игре.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
 Post subject: Re: Stealth + Hiding
PostPosted: 2012-02-18 02:48:28 
Offline

Joined: 2012-02-10 15:17:10
Posts: 53
Решил не плодить сущностей :)
Скрипт, на котором я поднял стелс до ГМа на ДВРе.

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 8 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited