Остановка скрипта по условию

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Neilpride
Posts: 25
Joined: 2004-12-13 17:57:14

Остановка скрипта по условию

Post by Neilpride »

Добрый!
Хочу попросить вас помочь со скриптом. Немного переделал скрипт на Масс диспел для шарда ДРВ:

Code: Select all

sub VasAnOrt()
   VAR ManaNeed=33
   VAR ManaNeedScroll=16
      UO.FindType('0x1f62',-1,'my')
      If UO.FindCount()>0 Then
         If UO.Mana>=ManaNeedScroll Then
            UO.WaitTargetSelf()
            UO.UseObject('finditem')
            UO.Print("MASS DISPEL Scroll")
         Else
            UO.Print("Low mana!!! Scroll!")
            dmana()
         wait(100)
         VasAnOrt()
         Endif
      Else
         If UO.Mana>=ManaNeed Then
            UO.Cast('Mass Dispel','self')
            UO.Print("MASS DISPEL Spell")
         Else
            UO.Print("Low mana!!! Spell!")
            dmana()
         wait(100)
         VasAnOrt()
         Endif
      Endif
end sub



Смысл в том, что когда есть в паке скролл масс диспела - он юзает его. если маны для скролла мало, то пьет манку и опять юзает скролл. А если скролла нету, то он кастует обычным способом из спелбуки, опять же если маны недостаточно, то пьет манку и кастует снова.
Но к сожалению, когда нужно кастовать масс диспел, маны недостаточно и ее неоказалось в паке, то скрипт виснет. Тоже самое, если ее нельзя на данный момент пить. Скрипт будет все равно пытаться ее выпить, тем самым зависая. Подскажите, как можно это исправить? Как остановить цикл и сделать так, чтобы он один раз пытался выпить ману, а если не получается, то и не мучался бы, отрубался?
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

В скрипте твоём dmana() допиши проверку на колво:

Code: Select all

sub dmana()
  uo.FindType(mana,color,'backpack')
  if uo.FindCount() then
    uo.UseType(mana,color)
  else
    uo.Exec('terminate названия скрипта который остановить')
  end if
end sub
Neilpride
Posts: 25
Joined: 2004-12-13 17:57:14

Post by Neilpride »

Хмммм, а если по времени нельзя пить ману, тогда что делать?
Скрипт будет виснуть...
Подскажите, как можно сделать, чтобы скрипт один раз пробывал выпить ману, если не получается по каким либо причинам (время или собственно маны нету) то останавливался.
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Убрать рекурсию, то есть вызов скрипта из самого себя. Лучше чтобы скрипт был однопроходный, то есть делал одну попытку. А дальше ты сам решаешь пнуть его второй раз или делать что то еще.
Neilpride
Posts: 25
Joined: 2004-12-13 17:57:14

Post by Neilpride »

Дык, это то мне и нужно...
Только вот не пойму как.
Я полностью не писал этот скрипт, я только вставлял нужные функции.
а как убрать рекурсию - без понятия...
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Code: Select all

         wait(100) 
         VasAnOrt() <<<<<<<<<
         Endif
      Endif

вот эта строчка вызывает скрипт снова и снова.
Neilpride
Posts: 25
Joined: 2004-12-13 17:57:14

Post by Neilpride »

ааааа, ты про это говоришь!
Понял тебя, спасиб..
Post Reply