Yoko

All sides of Injection
It is currently 2025-10-14 22:28:27

All times are UTC+02:00




Post new topic  Reply to topic  [ 13 posts ] 
Author Message
PostPosted: 2009-04-22 00:35:59 
Offline

Joined: 2004-12-25 02:11:37
Posts: 17
В этом скрипте на догонялку если чар(догонялка) и чар(цель) окажутся на одной клетке(так сказать войдет в чара) то скрипт выключается, Вопрос...как сделать так чтобы даже, если цель забежит в чара(догонялка) скрипт не вырубался, а работал все время пока я сам не выключу работу скрипта?

Code:
sub chase()

If UO.Targeting() Then
      UO.CancelTarget()
   Endif
   UO.Print( 'Please, choice of enemy:' )
   UO.AddObject( 'enemy' )
   While UO.Targeting()
      wait(100)
   Wend

   If uo.getglobal('chase')=='On' then
   uo.setglobal('chase',0)
   uo.print(' !!! -= Chase Terminated =- !!! ')
   uo.exec('Terminate chase')
   else
   uo.setglobal('chase','On')
   uo.print(' !!! -= Chasing =- !!! ')
   endif

  VAR target
  target = uo.getserial('enemy')

   while not uo.dead() and target<>"" and uo.getdistance(target)
    if UO.GetDistance(target)>1 then
    uo.say('')
    Chaser(target)
    endif
   wend

  uo.setglobal('chase',0)
  uo.print(' !!! -= Chasing ended =- !!! ')
end sub
;-----------------------------------------------------------------
sub Chaser(Target)
   VAR dx, dy
While 1
   If Target<>"" and uo.getdistance(target) and not uo.dead() Then
   dx=UO.GetX(Target)-UO.GetX()
   dy=UO.GetY(Target)-UO.GetY()
    If UO.GetDistance(Target)<2 Then
     return
    Endif
    else
     Return
   Endif

   If dx<>0 AND dy<>0 Then
    If dx>0 AND dy>0 Then
    UO.Press(40) ; DownArrow
    Endif

    If dx>0 AND dy<0 Then
    UO.Press(39) ; RightArrow
    Endif

    If dx<0 AND dy>0 Then
    UO.Press(37) ; LeftArrow
    Endif

    If dx<0 AND dy<0 Then
    UO.Press(38) ; UpArrow
    Endif
   Endif
   
   If dx<>0 AND dy==0 Then
     If dx>0 Then
    UO.Press(34) ; PgDown
    Endif

    If dx<0 Then
    UO.Press(36) ; Home key
    Endif
   Endif

   If dx==0 AND dy<>0 Then
    If dy>0 Then
    UO.Press(35) ; End
    Endif

    If dy<0 Then
    UO.Press(33) ; PgUp
    Endif
   Endif
Wend
end sub


Top
   
PostPosted: 2010-02-11 14:17:28 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
вот так не должен прекращать (опечатался) преследование
Правда непонятно зачем вводить цикл While 1... внизу
Вот так будет догонять любого кого укажешь.

Code:
sub chase()
   VAR target
   If UO.Targeting() Then
      UO.CancelTarget()
   Endif
   UO.Print( 'Please, choice of enemy:' )
   UO.AddObject( 'enemy' )
   While UO.Targeting()
      wait(100)
   Wend
   target = uo.getserial('enemy')
   while not uo.dead() and target<>""
      if UO.GetDistance(target)>1 then
         Chaser(target)
      endif
      wait(100)
   wend
end sub
Sub Chaser(Target)
   VAR dx, dy
   While uo.getdistance(target) >1
      If Target<>"" and uo.getdistance(target) >1 and not uo.dead() Then
         dx=UO.GetX(Target)-UO.GetX()
         dy=UO.GetY(Target)-UO.GetY()
         If UO.GetDistance(Target)<2 Then
            return
         Endif
      else
         Return
      Endif
      If dx<>0 AND dy<>0 Then
         If dx>0 AND dy>0 Then
            UO.Press(40) ; DownArrow
         Endif
         If dx>0 AND dy<0 Then
            UO.Press(39) ; RightArrow
         Endif
         If dx<0 AND dy>0 Then
            UO.Press(37) ; LeftArrow
         Endif
         If dx<0 AND dy<0 Then
            UO.Press(38) ; UpArrow
         Endif
      Endif
      If dx<>0 AND dy==0 Then
         If dx>0 Then
            UO.Press(34) ; PgDown
         Endif
         If dx<0 Then
            UO.Press(36) ; Home key
         Endif
      Endif
      If dx==0 AND dy<>0 Then
         If dy>0 Then
            UO.Press(35) ; End
         Endif
         If dy<0 Then
            UO.Press(33) ; PgUp
         Endif
      Endif
   Wend
end sub

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


Last edited by Mirage on 2010-02-12 14:25:55, edited 1 time in total.

Top
   
PostPosted: 2010-02-12 09:47:41 
Offline
User avatar

Joined: 2008-08-11 21:52:22
Posts: 30
^_^


Last edited by Zeppelin on 2010-02-12 12:36:56, edited 2 times in total.

Top
   
PostPosted: 2010-02-12 12:08:37 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
в чем по твоему я ошибся и что именно он просил?
При запуске скрипта чар указывает кого догонять и просто догоняет. Запуск скрипта производится забинденной командой "exec chase". Убивание скрипта производится забинденным на кнопку "say ,terminate all".

У него в скрипте была ошибка - цикл работал до тех пор пока дистанция была больше 1 я убрал условие.
У тебя в скрипте ошибка 2 работающих одновременно бесконечных цикла. Обнуление глобальных переменных тут не нужно в принципе.
ты бы проверил мой вариант сперва :roll:

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


Top
   
PostPosted: 2010-02-12 12:31:48 
Offline
User avatar

Joined: 2008-08-11 21:52:22
Posts: 30
Mirage wrote:
в чем по твоему я ошибся и что именно он просил?
При запуске скрипта чар указывает кого догонять и просто догоняет. Запуск скрипта производится забинденной командой "exec chase". Убивание скрипта производится забинденным на кнопку "say ,terminate all".

У него в скрипте была ошибка - цикл работал до тех пор пока дистанция была больше 1 я убрал условие.
У тебя в скрипте ошибка 2 работающих одновременно бесконечных цикла. Обнуление глобальных переменных тут не нужно в принципе.
ты бы проверил мой вариант сперва :roll:

А, ну да, ты просто написал, что НЕ должен продолжать преследование, я поэтому не посмотрел твой скрипт =) Ну как бы не ошибка, что циклы бесконечные идут, все равно кнопкой убивает =) А глобалы да, убрать надо было мне.

P.S. а зачем
Code:
uo.say('')
?


Top
   
PostPosted: 2010-02-12 14:33:29 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Cори опечатался :)
Просто первый раз указал где ошибка была. Щаз поправил нормально чтобы работало и не было ничего лишнего.
PS Ходилка самая примитивная. Можно серьезнее прикрутить - будет даже в здания забегать и по леснице.

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


Top
   
PostPosted: 2011-06-01 11:31:04 
Offline

Joined: 2011-06-01 11:24:41
Posts: 5
попробовал этот скрипт в действии, играю на шарде ФВарс, препятствия обходит, но такие как дома, например, если догоняемый стоит через дом на одной линии координат останавливает движение...но у меня вопрос другой, скажите, почему чар не бежит а топает пешком на этом скрипте???


Top
   
PostPosted: 2011-06-01 11:44:57 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Нужно поставить галочку в настройках клиента. always run


Top
   
PostPosted: 2011-06-01 12:11:04 
Offline

Joined: 2011-06-01 11:24:41
Posts: 5
ZeroDX wrote:
Нужно поставить галочку в настройках клиента. always run

спасибо, еще бы релпорился за догоняемым релпором)


Top
   
PostPosted: 2011-06-01 12:31:18 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Работоспособность не гарантируется :lol:

Code:
sub RelPor()
  var msg = 'fizzle', Time, Delay = 5, mx, my, ManaNeed = 10
  If UO.Targeting() then
    UO.CancelTarget()
  Endif
  UO.Print('Укажите на догоняемого персонажа')
  UO.AddObject('obj_Enemy')
  While UO.Targeting()
    UO.CancelTarget()
  Wend
  While not UO.Dead() or not UO.Dead('obj_Enemy')
    If UO.GetDistance('obj_Enemy') > 1 and UO.Mana >= ManaNeed then
      mx = UO.GetX()
      my = UO.GetY()
      DelJournal(msg)
      Time = UO.Timer()
      UO.WaitTargetTile(-1, UO.GetX('obj_Enemy'), UO.GetY('obj_Enemy'), UO.GetZ('obj_Enemy'))
      UO.Cast('Teleport')
      Repeat
        Wait(100)
      Until UO.InJournal(msg) or Time + Delay * 10 < UO.Timer() or mx <> UO.GetX() or my <> UO.GetY()
     else
      Wait(100)
    Endif
  Wend
Endsub

Sub DelJournal(msg)
  While UO.InJournal(msg)
    UO.SetJournalLine(UO.InJournal(msg) - 1, '')
  Wend
Endsub


Top
   
PostPosted: 2011-06-01 12:34:43 
Offline

Joined: 2011-06-01 11:24:41
Posts: 5
ZeroDX wrote:
Работоспособность не гарантируется :lol:

Code:
sub RelPor()
  var msg = 'fizzle', Time, Delay = 5, mx, my, ManaNeed = 10
  If UO.Targeting() then
    UO.CancelTarget()
  Endif
  UO.Print('Укажите на догоняемого персонажа')
  UO.AddObject('obj_Enemy')
  While UO.Targeting()
    UO.CancelTarget()
  Wend
  While not UO.Dead() or not UO.Dead('obj_Enemy')
    If UO.GetDistance('obj_Enemy') > 1 and UO.Mana >= ManaNeed then
      mx = UO.GetX()
      my = UO.GetY()
      DelJournal(msg)
      Time = UO.Timer()
      UO.WaitTargetTile(-1, UO.GetX('obj_Enemy'), UO.GetY('obj_Enemy'), UO.GetZ('obj_Enemy'))
      UO.Cast('Teleport')
      Repeat
        Wait(100)
      Until UO.InJournal(msg) or Time + Delay * 10 < UO.Timer() or mx <> UO.GetX() or my <> UO.GetY()
     else
      Wait(100)
    Endif
  Wend
Endsub

Sub DelJournal(msg)
  While UO.InJournal(msg)
    UO.SetJournalLine(UO.InJournal(msg) - 1, '')
  Wend
Endsub



дома проверю, спасибо


Top
   
PostPosted: 2011-06-01 13:21:27 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Это вариант для ГМа чтоли? :mrgreen:

Что такое релпор :| ?

While not UO.Dead() or not UO.Dead('obj_Enemy')
лучше заменить на

While not UO.Dead() or UO.GetX('obj_Enemy')<>0

UO.Dead не очень хорошо работает на указанные цели.

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


Top
   
PostPosted: 2011-06-01 13:25:54 
Offline
User avatar

Joined: 2006-12-08 10:51:50
Posts: 718
Location: Москва
Да я так в шутку)


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

All times are UTC+02:00


Who is online

Users browsing this forum: Bing [Bot] 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:  
Powered by phpBB® Forum Software © phpBB Limited