Train Meditation and Healing skills with Curse. Dragon World

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Train Meditation and Healing skills with Curse. Dragon World

Post by Scripts Writer »

Медитация и хелинг с курсой + мытьё бинтов + еда.

Скрипт написан и протестирован на шарде DRW: 30.11.06.
Редактирование + критику рассмотрю в этой теме.

Code: Select all

sub Heal_Medit()
  var mana=uo.mana ,life=uo.life ,k, i
  var item='0x153E' #Type of curse
  var wash='0x402D878C'
  var bloody='0x0E20' #Type of a bloody bandage
  var food='0x097B' #Type something to eat
  while not uo.Dead() && uo.SkillVal('Meditation',2) <= 1010 && uo.SkillVal('Healing',2) <= 1010
    uo.FindType(item,'-1','backpack')
    if uo.FindCount() then
      uo.UseObject('finditem')
      repeat
        wait(250)
        CheckLag()
      until uo.life <= life -1 && uo.mana <= mana-1
      uo.UnDress()
      repeat
        k = 0
        if uo.life <> life && uo.mana <> mana then
          uo.CancelTarget()
          uo.BandageSelf()
        else
          if uo.life <> life && uo.mana == mana then
            uo.BandageSelf()
            wait(3500)
          end if
        end if
        CheckLag()
        if uo.mana <> mana then
          uo.UseSkill('Meditation')
          uo.DeleteJournal()
          repeat
            wait(100)
            k = k + 1
          until uo.InJournal('You are') || uo.InJournal('you lose') || (k>50)
        end if
      until uo.life == life && uo.mana == mana   
      uo.FindType(bloody,'-1','backpack')
      if uo.FindCount() && uo.GetQuantity('finditem') >= 180 then
        uo.WaitTargetObject(wash)
        uo.UseObject('finditem')
        CheckLag()
        for i = 0 to 10
          uo.UseType(food)
          wait(1000)
        next
      end if
    else
      if not uo.FindCount() then
        uo.CloseUo()
      else
        wait(500)
      end if
    end if
  wend
end sub

sub CheckLag()
  uo.DeleteJournal('backpack')
  uo.Click('backpack')
  repeat
    wait(100)
  until uo.InJournal('backpack')
end sub
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

Code: Select all

sub Heal_Medit()
   var p = 1 ; поправка к статам, чтобы было что лечить и медитировать
   var curse = '0x153E' ; Type of curse

   repeat
      UO.UseObject('_' + curse)
      ; Почему тут нет CheckLag?
      ; По тому что поиск ведет инжа у себя в памяти
      ; При любых лагах все проидет зачепятельно
      if not UO.FindCount() then
         ; выход по фатальной ошибке
         UO.Print("ERROR: !!! curse !!!")
         return 1
      endif
      ; разрушаем свой организьм
      repeat
         ; пока ждем можно пожрать, постирать или просто вайт
         util()
      until UO.HP < UO.MaxHP - p && UO.MANA < UO.INT - p
      UO.UnDress()

      while heal() && meditation()
         wait(200)
      wend

   ; Поправил, у автора там хз что
   until UO.Dead() || (UO.SkillVal('Meditation',1) == 1000 && UO.SkillVal('Healing',1) == 1000)
end sub

sub util()
   ; тут код
end sub

sub heal()
   ; тут код
   return 0
end sub

sub meditation
   ; тут код
   return 0
end sub



Code: Select all

   ; ПОЧЕМУ ТУТ НЕ ТИП?
   var wash='0x402D878C';
   ; разьве есть шарды где тип иной?
   var bloody='0x0E20' #Type of a bloody bandage
   ; это едят все, в крайнем случае все стоя на скриптах
   var food='0x097B' #Type something to eat
   ; нафиг тогда переменные?
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

omi4 wrote:

Code: Select all

sub Heal_Medit()
   var p = 1 ; поправка к статам, чтобы было что лечить и медитировать
   var curse = '0x153E' ; Type of curse

   repeat
      UO.UseObject('_' + curse)
      ; Почему тут нет CheckLag?
      ; По тому что поиск ведет инжа у себя в памяти
      ; При любых лагах все проидет зачепятельно
      if not UO.FindCount() then
         ; выход по фатальной ошибке
         UO.Print("ERROR: !!! curse !!!")
         return 1
      endif
      ; разрушаем свой организьм
      repeat
         ; пока ждем можно пожрать, постирать или просто вайт
         util()
      until UO.HP < UO.MaxHP - p && UO.MANA < UO.INT - p
      UO.UnDress()

      while heal() && meditation()
         wait(200)
      wend

   ; Поправил, у автора там хз что
   until UO.Dead() || (UO.SkillVal('Meditation',1) == 1000 && UO.SkillVal('Healing',1) == 1000)
end sub

sub util()
   ; тут код
end sub

sub heal()
   ; тут код
   return 0
end sub

sub meditation
   ; тут код
   return 0
end sub



Code: Select all

   ; ПОЧЕМУ ТУТ НЕ ТИП?
   var wash='0x402D878C';
   ; разьве есть шарды где тип иной?
   var bloody='0x0E20' #Type of a bloody bandage
   ; это едят все, в крайнем случае все стоя на скриптах
   var food='0x097B' #Type something to eat
   ; нафиг тогда переменные?


=\
1. На шарде Форест Варс к примеру нет корыта в котором мыть бинты( когда я играл) -там приходилось мыть в деревянном корыте, из которых "пьют лошадки".
2. Бинты... ммм. Не задумывался об этом-но не вижу здесь каких то недочётов.
3. Еда. Мммм... еда бывает разная. Все едят фишстейки?! -Возможно, но могу вспомнить к примеру мёд на цитадели(если не ошибаюсь).
Зачем переменные -думаю теперь понятно. Ведь не всем так просто читать код и находить,-поэтому все используемые объекты которые могут быть изменены вынес в начало скрипта. Разве что разность макс. жизни и той с которой начинаем лечиться.
GimFlex
Expert!
Posts: 766
Joined: 2005-01-07 13:22:19
Contact:

Post by GimFlex »

на медит есть и другой скрипт :roll:
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Healing+Meditation

Code: Select all

sub Heal_Medit()
# Edited:
# 1.mana and life -had been changed to STR and INT for more safety.
#
  var STR=195 # You STR withour curse
  var INT=60 # You INT without curse
  var item='0x153E' #Type of curse
  var wash='0x402D878C' #ID where to clean bandage
  var bloody='0x0E20' #Type of bloody bandage
  var food='0x097B' # Type of anything to eat
  var k, i
  while not uo.Dead() && uo.SkillVal('Meditation',1) < 1000 && uo.SkillVal('Healing',1) < 1000
    if uo.life < STR && uo.mana < INT then
      goto Begin
    end if
    uo.FindType(item,'-1','backpack')
    if uo.FindCount() then
      uo.UseObject('finditem')
      repeat
        wait(250)
        CheckLag()
      until uo.life <= STR -1 && uo.mana <= INT-1
      Begin:
      uo.UnDress()
      repeat
        k = 0
        if uo.life <> STR && uo.mana <> INT then
          uo.CancelTarget()
          uo.BandageSelf()
        else
          if uo.life <> STR && uo.mana == INT then
            uo.BandageSelf()
            wait(3500)
          end if
        end if
        CheckLag()
        if uo.mana <> INT then
          uo.UseSkill('Meditation')
          uo.DeleteJournal()
          wait(150)
          repeat
            wait(100)
            k = k + 1
          until uo.InJournal('You are') || uo.InJournal('you lose') || (k>50)
        end if
      until uo.life == STR && uo.mana == INT   
      uo.FindType(bloody,'-1','backpack')
      if uo.FindCount() && uo.GetQuantity('finditem') >= 180 then
        uo.WaitTargetObject(wash)
        uo.UseObject('finditem')
        CheckLag()
        for i = 0 to 10
          uo.UseType(food)
          wait(1000)
        next
      end if
    else
      if not uo.FindCount() then
        uo.CloseUo()
        uo.exec('terminate all')       
      else
        wait(500)
      end if
    end if
  wend
end sub


Meditation

Code: Select all

sub MeditationTrain()
  var INT=60 #Your INT withour curse
  var item='0x153E' #Type of curse
  var food='0x097B' #Type of something to eat
  var k, i, l
  l=0
  while not uo.Dead() && uo.SkillVal('Meditation',1) < 1000
    if uo.mana < INT then
      goto BeginMedit
    end if
    uo.FindType(item,'-1','backpack')
    if uo.FindCount() then
      uo.UseObject('finditem')
      repeat
        wait(150)
        CheckLag()
      until uo.mana <= INT-1
      BeginMedit:
      uo.UnDress()
      repeat
        k = 0
        CheckLag()
        if uo.mana <> INT then
          uo.UseSkill('Meditation')
          uo.DeleteJournal()
          wait(150)
          repeat
            wait(100)
            k = k + 1
          until uo.InJournal('You are') || uo.InJournal('you lose') || (k>50)
        end if
      until uo.mana == INT 
      l=l+1
      if l>100 then
        for i=0 to 10
          uo.UseType(food)
          wait(1000)
        next
        l=0
      end if     
    else
      if not uo.FindCount() then
        uo.CloseUo()
        uo.exec('terminate all')       
      else
        wait(500)
      end if
    end if
   wend
end sub


Healing

Code: Select all

sub Healing()
  var STR=195 #Your STR withour curse
  var item='0x153E' #Type of curse
  var wash='0x402D878C' #ID where to clean bandage
  var bloody='0x0E20' #Type of bloody bandage
  var food='0x097B' #Type of something to eat
  var k, i 
  while not uo.Dead() && uo.SkillVal('Healing',1) < 1000
    if uo.life < STR then
      goto BeginHeal
    end if
    uo.FindType(item,'-1','backpack')
    if uo.FindCount() then
      uo.UseObject('finditem')
      repeat
        wait(250)
        CheckLag()
      until uo.life <= STR -1
      BeginHeal:
      uo.UnDress()
      repeat
        k = 0
        if uo.life <> STR then
          uo.BandageSelf()
          wait(3500)
        end if
      until uo.life == STR 
      uo.FindType(bloody,'-1','backpack')
      if uo.FindCount() && uo.GetQuantity('finditem') >= 180 then
        uo.WaitTargetObject(wash)
        uo.UseObject('finditem')
        CheckLag()
        for i = 0 to 10
          uo.UseType(food)
          wait(1000)
        next
      end if
    else
      if not uo.FindCount() then
        uo.CloseUo()
        uo.exec('terminate all')       
      else
        wait(500)
      end if
    end if
  wend
end sub
Last edited by Scripts Writer on 2006-12-03 13:31:39, edited 2 times in total.
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

в строке

Code: Select all

while not uo.Dead() && uo.SkillVal('Meditation',2) <= 1010 && uo.SkillVal('Healing',2) <= 1010 


Синтакс: number uo.SkillVal(skill,[case])
--------------------------------------------------------------------------------
Возвращает величину умения skill в десятых процента, т.е. 12.3%=123.
Если задано значение параметра case то можно получить такие значения:

case=0: величина умения skill в десятых процента
case=1: величина умения skill в десятых процента (real)
case=2: увеличение skill с момента загрузки или сброса в десятых процента
case=3: статус skill (открыт, закрыт, уменьшается)


чтобы из выйти цикла нужно иметь все скиллы 110 и быть мертвым
&& это AND
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Мы как бы из цикла выходить не собираемся-а со скилвалом немножко зделал направильно. Сейчас поправлю.

2

Meditation = 100.0 :

Code: Select all

while not uo.Dead() -цикл выполняется
while uo.SkillVal('Meditation',1) < 1000 -цикл не выполняется
while not uo.Dead() && uo.SkillVal('Meditation',1) < 1000 -цикл не выполняется
while not uo.Dead() && uo.SkillVal('Meditation',1) < 1001 -цикл выполняется
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

у тебя
Мертв и ГМ1 и ГМ2 / Мертв && ГМ1 && ГМ2

нужно
мертв или (ГМ1 и ГМ2) / мертв || (ГМ1 && ГМ2)
Post Reply