Page 1 of 1

Train Archery crafted by Askaneli

Posted: 2007-03-20 16:41:28
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 тоесть кастер он становится в стелс а далше всё стоит!

Posted: 2007-03-20 19:11:45
by Unfogiven
Ну помогите плиз :cry:

Posted: 2007-03-20 20:08:36
by Nmy

Code: Select all

Sub ChekArcher()
var i
Dim Archers[5]

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

Posted: 2007-03-20 20:35:31
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))

Posted: 2007-03-20 21:00:01
by Nmy
стери

Code: Select all

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

Posted: 2007-03-20 21:03:20
by Unfogiven
Что за асм

Posted: 2008-09-22 08:07:19
by Askaneli
бгг. весёлый скрипт. помню всю корпу, тфу гильду собрали и заставили качатся )))