Train Archery crafted by Askaneli

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Unfogiven
Posts: 44
Joined: 2006-12-18 11:33:01

Train Archery crafted by Askaneli

Post by Unfogiven »

Code: Select all

############################################################################# 
####################  Train Archery crafted by Askaneli  ####################
####################     Шард DRW (http://www.drw.ru)    ####################
#################### Отдельное спасибо за наводку Guesst ####################
#################### Отдельное спасибо за модули Sfagnum ####################
#############################################################################



Var RejimSC=2 ; Режим работы скрипта, 1 - арчер, 2 - кастующий
Var Sunduk='0x4029B845' ; ИД сундука где все ресурсы, луки и стрелы, реги для вортекса или скролы для вортекса, кормёжка для чаров
Var xVortex='1255',yVortex='745',zVortex='251' ; Координаты куда кастуем вортекса, не далее 2х тайлов от берега, а то стрелы не достаёт упавшие
Var TBow='0x13B1' ; Тип оружия которое будем использовать, лук типа сча

## Запускаемый модуль

sub main()
   uo.exec("filterspeech clear")
   uo.exec("filterspeech off")
   uo.exec("set finddistance 3")
   uo.sayu(".detail 0")
   uo.useobject(Sunduk)
   uo.useobject('backpack')
   wait(1000)
   uo.exec("exec main0"+STR(RejimSC))
   uo.Exec('terminate Reconnector')
   wait(1000)
   uo.Exec('exec Reconnector')
   wait(1000)
end sub

## Модуль арчера

Sub main01()
var Vortex='0x40043143',check = false
var arN,arT,arE,qV = 0
var sk=uo.skillval("Archery",1)

uo.exec("warmode 1")
arN = uo.count('0x0F3F','0x0000')
arE = arN
while not uo.dead()
   if uo.IsNPC(Vortex) then ## Есть вортекс, просто следим за количеством стрел и наличием лука
      if uo.skillval("Archery",1) == 1000 then
         uo.asmLogAdd('Training.txt', UO.asmGetDate('dd/mm/yy')+" - "+UO.asmGetTime('hh:nn:ss')+" YES!!! GM Archery!!!")
         uo.closeuo()
      end if
      if uo.count('0x0F3F','0x0000')<50 then ; Стрелы, пополняем из сундука
         arT = uo.count('0x0F3F','0x0000')
         uo.findtype('0x0F3F','0x0000',Sunduk)
         Cheklag()
         uo.moveitem('finditem','100','backpack')
         wait(1000)
         arE = arE + uo.count('0x0F3F','0x0000')-arT
      end if
      if uo.GetGraphic(uo.ObjAtLayer('Lhand'))<>TBow then ; Оружие в руке, при отсутствии берём из сундука
         uo.findtype(TBow,'-1','backpack')
         if uo.findcount()>0 then
            uo.usetype(TBow)
            wait(1000)
         else
            uo.findtype(TBow,'-1',Sunduk)
            Cheklag()
            uo.moveitem('finditem','1','backpack')
            wait(1000)
            uo.usetype(TBow)
            wait(1000)
         end if
      end if
      if not check then
         check = true
         qV = qV + 1
      end if
   else ## Нету вортекса, ищем следующего, попутно подбираем стрелы в пак с земли. Пишем отчётик о состоянии скила в лог. Кушаем до полного.
      if check then       
         if sk <> uo.skillval("Archery",1) then
            uo.asmLogAdd('Training.txt', UO.asmGetDate('dd/mm/yy')+" - "+UO.asmGetTime('hh:nn:ss')+" ::на поднятие скила потратил " + str(arE-ArN) + ", потребовалось " + str(qV) + " вортексов, состояние скила арчери - "+STR(uo.skillval("Archery",1)/10))
            arN = uo.count('0x0F3F','0x0000')
            arE = arN
            qV = 0
            sk = uo.skillval("Archery",1)
         end if
         Eda()
         check = false         
      end if
      uo.findtype('0x000D','0x000D','ground')
      if uo.findcount()>0 then
         Vortex=uo.getserial('finditem')
         UO.attack(Vortex)
      end if
   end if
   wait(1000) ; Опрос состояния каждую секунду
   if uo.injournal('SkokaAR') then
      uo.deletejournal()
      uo.say(STR(uo.skillval("Archery",1)/10))
   end if
wend
uo.closeuo()
end sub

## Модуль кастующего

Sub main02()
var Vortex=''
var i
dim ResursCast[5]

ResursCast[1]='0x1F66' ## Energy Vortex Scroll
ResursCast[2]='0x0F7B' ## BM
ResursCast[3]='0x0F7A' ## BP
ResursCast[4]='0x0F86' ## MR
ResursCast[5]='0x0F88' ## NS

uo.exec("warmode 0")

uo.findtype('0x000D','0x000D','ground') ; Стартовый поиск вортекса, на всякий случай ...
if uo.findcount()>0 then
   Vortex=uo.getserial('finditem')
end if

while not uo.dead()
   if not uo.IsNPC(Vortex) then ## Нету вортекса, кастуем его что бы был , если есть кому качать арчери, ну и реги за одно пополняем и кушаем, чёб голодным не был чар
      if ChekArcher() then
         while not castuni(40,'0x1F66','Energy Vortex')
            for i=2 to 5
               if uo.count(ResursCast[i],'0x0000')==0 then
                  uo.findtype(ResursCast[i],'0x0000',Sunduk)
                  Cheklag()
                  if uo.findcount()>0 then
                     uo.moveitem('finditem',str(10-uo.count(ResursCast[i],'0x0000')),'backpack')
                     wait(1000)
                  end if
               end if
            next
         wend
         uo.findtype('0x000D','0x000D','ground')
         if uo.findcount()>0 then
            Vortex=uo.getserial('finditem')             
            for i=2 to 5
               if uo.count(ResursCast[i],'0x0000')<10 then
                  uo.findtype(ResursCast[i],'0x0000',Sunduk)
                  Cheklag()
                  if uo.findcount()>0 then
                     uo.moveitem('finditem',str(10-uo.count(ResursCast[i],'0x0000')),'backpack')
                     wait(1000)
                  end if
               end if
            next
            Eda()
            ToMedit()
         end if
      end if
   end if
   wait(1000) ; Опрос состояния каждую секунду
   if uo.mana==uo.int then
      ToHide()
   end if
   if uo.injournal('Stop Aaz 3472') then
      uo.deletejournal()
      uo.closeuo()
   end if
   uo.findtype('0x0F3F','0x0000','ground')
   if uo.findcount()>0 then
      ##Cheklag()
      uo.moveitem('finditem','-1',Sunduk)
      wait(1000)
   end if
wend
uo.closeuo()
end sub

## Вспомогательные модули

Sub ChekArcher()
var i
Dim Archers[5]

Archers[1]=''
Archers[2]=''
Archers[3]=''
Archers[4]=''
Archers[5]=''

for i=1 to 5
   if uo.IsNPC(Archers[i]) then
      if Archers[i]<>uo.getserial('self') then
         return true
      end if
   end if
next
return false
end sub

Sub Eda()
if uo.count('0x097B','0x0000')<50 then ## Жрачка, кушаем до изнеможения
   uo.findtype('0x097B','0x0000',Sunduk)
   if uo.findcount()>0 then
      Cheklag()
      uo.moveitem('finditem',STR(50-uo.count('0x097B','0x0000')),'backpack')
      wait(1000)
   end if
end if

uo.deletejournal()
repeat
   if uo.count('0x097B','0x0000')==0 then
      return
   end if
   uo.usetype('0x097B','0x0000')
   wait(1000)
until uo.injournal("You are stuffed!") or uo.injournal("You can't think of a way to use that item.")
end sub

Sub Cheklag()
   UO.DeleteJournal()
   UO.Click('backpack')
   Repeat
      Wait(10)
   Until UO.InJournal("backpack")
end sub

Sub ToMedit()
while uo.mana<40
   uo.warmode(0)
   uo.deletejournal()
   uo.useskill('Meditation')
   repeat
      wait(10)
   until uo.injournal("You lose your concentration") or uo.injournal("You are at peace.") or uo.mana>40
wend
end sub

Sub ToHide()
while not uo.hidden()
   uo.warmode(0)
   uo.DeleteJournal()
   uo.useskill("Hiding")
   repeat
      wait(10)
   until UO.InJournal("You have hidden yourself well") or UO.InJournal("You can't seem to hide here.") or UO.InJournal("You are preoccupied with thoughts of battle.") or uo.dead()
   if  UO.InJournal("You are preoccupied with thoughts of battle.") then
      uo.warmode(0)
   end if
   if uo.dead() then
      return
   end if
wend
end sub

Sub castuni(minMANA,sType,cName)
var t = UO.Timer(),m = UO.MANA
   uo.exec("warmode 0")
   repeat       
      UO.FindType(sType,-1,'my')
      If UO.findcount()>0 then
         if uo.mana<(minMANA/2) then
            ToMedit()
         end if
         m = UO.MANA
         uo.DeleteJournal()
         uo.waittargettile('400',xVortex,yVortex,zVortex)   
         UO.UseObject('finditem')       
      else
         if uo.mana<minMANA then
            ToMedit()
         end if
         m = UO.MANA
         uo.DeleteJournal()
         uo.waittargettile('400',xVortex,yVortex,zVortex)
         uo.cast(cName)
      end if
      t = UO.Timer()
      repeat
         wait(10)
      until IsMyOwn('You have interrupted') or IsMyOwn(uo.getname()+': The spell fizzles.') or IsMyOwn('You lack') or t+200<uo.Timer() or m > UO.MANA
      wait(500)
      if IsMyOwn('You lack') then
         return false
      end if
   until not (IsMyOwn('You have interrupted') or IsMyOwn(uo.getname()+': The spell fizzles.'))
   return true
end sub

Sub IsMyOwn(msgSTR)
   if not UO.InJournal(msgSTR) then
      return false
   end if
   if msgSTR == Left(UO.Journal(UO.InJournal(msgSTR)-1),len(msgSTR)) then
      return true       
   else
      return false
   end if
end sub

## Модуль реконекта

Sub Reconnector()
var ReconnectTime, RFlag
ReconnectTime = '0'
RFlag = 1
Repeat
   While (uo.ObjAtLayer('Bpack') == '')
      if RFlag Then
         ReconnectTime = MakeTime()
         RFlag = 0
      endif
      Wait(110000) # WorldSave Protection
      uo.Say('')
      Wait(5000)
      uo.Say('')
      Wait(5000)
      uo.Say('')
      Wait(5000)
      uo.LDblClick(357,164)
      uo.LClick(616,459)
      Wait(5000)
   WEnd
   Wait(3000)
   if (RFlag == 0) and (ReconnectTime <> '0') Then
      UO.asmLogAdd('Training.txt', UO.asmGetDate('dd/mm/yy')+" - "+UO.asmGetTime('hh:nn:ss')+" - "+"Упс. Ребут типа !!!")
      uo.Exec('terminate main01')
      uo.Exec('terminate main02')
      wait(5000)
      uo.RClick(196,193)
      wait(2000)
      uo.RClick(196,193)
      wait(2000)
      uo.RClick(196,193)
      wait(2000)
      uo.RClick(196,193)
      wait(2000)
      uo.Exec('exec main')
      wait(5000)
      RFlag = 1
      ReconnectTime = '0'
   endif
Until false
end sub 
 
Sub MakeTime()
VAR D, T, Ret, i
Ret = STR(uo.Time())
T = ""
For i = 0 To Len(Ret)
   T = Ret[Len(Ret)-i] + T
   If (I == 2) OR (I == 4) Then
      T = ":" + T
   EndIf
Next
Ret = STR(uo.Date())
D = ""
For i = 0 To Len(Ret)
   D = Ret[Len(Ret)-i] + D
   If (I == 2) OR (I == 4) Then
      D = "." + D
   EndIf
Next
Ret = T + " @ " + D
RETURN Ret
end sub


Можете пожалуйста помочь почему когда запускаю скрипт поставив Var RejimSC=2 тоесть кастер он становится в стелс а далше всё стоит!
Unfogiven
Posts: 44
Joined: 2006-12-18 11:33:01

Post by Unfogiven »

Ну помогите плиз :cry:
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Post by Nmy »

Code: Select all

Sub ChekArcher()
var i
Dim Archers[5]

Archers[1]=''
Archers[2]=''
Archers[3]=''
Archers[4]=''
Archers[5]=''
Unfogiven
Posts: 44
Joined: 2006-12-18 11:33:01

Post by Unfogiven »

спс ! токо терь когда он хочет запесать в лог пишет линия 77 function not founde UO.asmGetDate

Code: Select all

   uo.asmLogAdd('Training.txt', UO.asmGetDate('dd/mm/yy')+" - "+UO.asmGetTime('hh:nn:ss')+" ::на поднятие скила потратил " + str(arE-ArN) + ", потребовалось " + str(qV) + " вортексов, состояние скила арчери - "+STR(uo.skillval("Archery",1)/10))
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Post by Nmy »

стери

Code: Select all

      UO.asmLogAdd('Training.txt', UO.asmGetDate('dd/mm/yy')+" - "+UO.asmGetTime('hh:nn:ss')+" - "+"Упс. Ребут типа !!!") 

или поставь асм себе
Unfogiven
Posts: 44
Joined: 2006-12-18 11:33:01

Post by Unfogiven »

Что за асм
Askaneli
Sphere expert
Posts: 1143
Joined: 2004-10-01 08:27:38
Location: Уфа

Post by Askaneli »

бгг. весёлый скрипт. помню всю корпу, тфу гильду собрали и заставили качатся )))
Сделал дело - флуди смело !!!
Post Reply