Доработка скрипта

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
eX-Clusive
Posts: 4
Joined: 2006-02-07 19:16:37

Доработка скрипта

Post by eX-Clusive »

Нужно переделать скрипт, чтоб когда вылазиет Элем, то скрипт сразу выключался и делал логоут! Шард ДРВ

Code: Select all

############################################################### 

#===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=# 

#    Single char mining for VIP Mine. DRW Shard www.drw.ru    # 

#           Scripted by Savage (c) 2005 ICQ:33336141          # 

#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# 

#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# 

# To start script use ",exec mine" command from client window # 

############################################################### 



;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

;==================== Main mining script ====================== 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

sub mine() 

   VAR DigDistance, TileNum, KillElemental 

   VAR ElemSignal, LastTimer 

   DIM BaseX[2], BaseY[2] 

   VAR BaseZ, WayPoint, WayPoints 

   VAR MaxWeight 



   VAR i,j,TileY,TileX,DirX,DirY 

   VAR Delta,BeginX,EndX,BeginY,EndY 

    



;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; TileNum='Num' - Use ",infotile" command on the floor 

; ????? ????? ? ??????? ????? ?????? ,????????? ???????? 

; ",infotile" ?? ?????? ?????? ? ?????????? ?? ?????????? ?? ?? 

; ??????. 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

   TileNum='1150' 

    



;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; ???????????? ???, ??????? ????? ??????? ???. ??????? ??? 

; ??????? ?????? ?????????. ?? ???? ???? ??? ????????? 760, ?? 

; ?????? 730. 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

   MaxWeight=500

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; DigDistance=4 - Distance from tile where pickaxe targeting 

; ?????? ????? ?? ???????? ????? ?????? ???, ?? ???? ?????????? 

; ?? ?????? ???? ????? ?????????? ??????. 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

   DigDistance=4 



;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; KillElemental='Yes'/'No' - Use 'Yes' if char skilled to morph 

;                            in daemon and wrestling > 50 

; ???? ??? ?????????? ???????? ???? ???? ??????, ??????? 'Yes' 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

   KillElemental='No' 



;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; ElemSignal='Off'/'On' - Play sound when elemental is digged 

; ????????? ??? ????????? ????? 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

   ElemSignal='On' 





;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; ????? ????????? ?????????? ????? ???????. ????? ?????? ?? 

; ??????? ? ?????????? ?????????? ? ???????. ?? ? ????? 

; ?????????? ?????? ????. ???? ??????? ?? 4 ?????? ?? ????. 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 



   BaseX[0]=5334

   BaseY[0]=1150

   BaseZ=0 



   BaseX[1]=5326

   BaseY[1]=1150

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; ????????? ?????????? ????? ??????? 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 



   WayPoints=2 





   CheckLag() 

   UO.UseObject('Sunduk') 

   LastTimer=UO.Timer() 

   Repeat 

      wait(500) 

   Until UO.InJournal('You can') OR UO.InJournal('What is the') OR UO.Timer()>LastTimer+100 

    

   If UO.InJournal('see the') Then 

      UO.Say("Podoydi k sunduku i tkni v nego pricelom!") 

      UO.AddObject('Sunduk') 

      While UO.Targeting()==2 

         wait(500) 

      Wend 

      UO.SaveConfig() 

      UO.UseObject('Sunduk') 

   Else 

;      UO.Say("Ok! Viju sunduk.") 

   Endif 





   CheckLag() 

   UO.UseObject('IronBag') 

   LastTimer=UO.Timer() 

   Repeat 

      wait(500) 

   Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100 

    

   If UO.InJournal('see the') Then 

      UO.Say("V kakoy meshok kidat' Iron Ore") 

      UO.AddObject('IronBag') 

      While UO.Targeting()==2 

         wait(500) 

      Wend 

      UO.SaveConfig() 

   Else 

;      UO.Say("Meshok dlya Iron Ore viju") 

   Endif 





   CheckLag() 

   UO.UseObject('OtherBag') 

   LastTimer=UO.Timer() 

   Repeat 

      wait(500) 

   Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100 

    

   If UO.InJournal('see the') Then 

      UO.Say("V kakoy meshok kidat' rudu?") 

      UO.AddObject('OtherBag') 

      While UO.Targeting()==2 

         wait(500) 

      Wend 

      UO.SaveConfig() 

   Else 

;      UO.Say("Meshok dlya rudy viju.") 

   Endif 





   CheckLag() 

   UO.UseObject('BestBag') 

   LastTimer=UO.Timer() 

   Repeat 

      wait(500) 

   Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100 

    

   If UO.InJournal('see the') Then 

      UO.Say("V kakoy meshok kidat' vihu?") 

      UO.AddObject('BestBag') 

      While UO.Targeting()==2 

         wait(500) 

      Wend 

      UO.SaveConfig() 

   Else 

;      UO.Say("Meshok dlya vihi viju.") 

   Endif 



   While NOT UO.Dead() 

    

      For WayPoint=0 to WayPoints-1 

         walkn(BaseX[WayPoint],BaseY[WayPoint],"") 

         digitstay(MaxWeight,DigDistance,KillElemental,ElemSignal,BaseX[WayPoint],BaseY[WayPoint]) 

      Next 

   wend 

end sub 





; ???????? ???????? ????. ??????????????? ?? ??? ????? ??????. 

sub CheckOre() 

   VAR Cont=1, i=0, Exit=0 

   VAR Count=7   ; ??????? ????????? ? ???????. 

   DIM Ores[15]    



   Ores[0]="Iron" 

   Ores[1]="Rusty" 

   Ores[2]="Old Copper" 

   Ores[3]="Dull Copper" 

   Ores[4]="Copper" 

   Ores[5]="Bronze" 

   Ores[6]="Silver" 

;   Ores[7]="Shadow" 

;   Ores[8]="Rose" 

;   Ores[9]="Gold" 

;   Ores[10]="Agapite" 

;   Ores[11]="Blood Rock" 

;   Ores[12]="Verite" 

;   Ores[13]="Valorite" 

;   Ores[14]="Mytheril" 



   While i<Count AND Exit==0 

      If UO.InJournal(Ores[i]) Then 

         Cont=0 

         Exit=1 

      Endif 

;      UO.Print(STR(i)) 

;      UO.Print(Ores[i]) 

      i=i+1 

   Wend 

    

   return Cont 

end sub 





;-------------------- Try to mine under self ------------------ 

sub digitstay(MaxWeight,MaxDistance,KillElemental,ElemSignal,BaseX,BaseY) 

   VAR x,y,z='0',TileNum='1339' 

   VAR Last=0,LastTimer, ContFlag=1 

   VAR MaxTimer=110 



   For x=-MaxDistance to MaxDistance 

      For y=-MaxDistance to MaxDistance 

         Repeat 

            CheckLag() ; deleting journal 

            ToHide() 

             

            UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z) 

            UO.UseType('0x0E85') 



            LastTimer=UO.Timer() 



            Repeat 

               wait(500) 

            until UO.InJournal("Try mining") OR UO.InJournal("You put") OR UO.InJournal("You loosen") OR UO.InJournal("There is no") OR UO.InJournal("That is too") OR UO.InJournal("OOPS") OR UO.InJournal("attacking you") OR LastTimer+200<UO.Timer() 



            If NOT UO.InJournal('There is no') then 

               ContFlag=CheckOre() 

            Endif 



            If UO.InJournal('You loosen') then 

               repeat 

                  wait(500) 

               until UO.InJournal("You put") OR LastTimer+MaxTimer<UO.Timer() 

            Endif 



            If UO.InJournal('something with ore') OR UO.InJournal("attacking you") then 

               If ElemSignal=='On' Then 

                  Gong(2) 

               Endif 



               If KillElemental=='Yes' Then 

                  KillElem() 

                  walkn(BaseX,BaseY,"") 

               Else 

; any user defined command when char digget elemental 



               Endif 

            Endif 

             

            If UO.InJournal("attacking you") then 

               gong(3) 

            Endif 



            If UO.Weight>=MaxWeight then 

               unloadore() 

            Endif 

         Until UO.InJournal("There is no") OR UO.InJournal("That is too") OR UO.InJournal("Try mining") OR ContFlag==0 

      Next 

   Next 

end sub 





;------------------------- Unload ore ------------------------- 

sub unloadore() 

   VAR TempX,TempY,i,Exit, Exit1, ConTainer, j 

   VAR SundukX=5774

   VAR SundukY=1152

   VAR Index=14 ; ?????????? ????????? ??????? 

   DIM Ore[5], Colors[20] 



   Colors[0]="0x09F0" ; Gorgan 

   Colors[1]="0x09D3" ; Steel 

   Colors[3]="0x0BA7" ; Eldar 

   Colors[4]="0x08AF" ; Plut 

   Colors[5]="0x0085" ; Dragon 

   Colors[6]="0x0060" ; Aqua 

   Colors[7]="0x09E6" ; Elvin 

   Colors[8]="0x010F" ; Krinit 

   Colors[9]="0x09DA" ; Vulkan 

   Colors[10]="0x09EC" ; Blood Crest 

   Colors[11]="0x008F" ; Sand Rock 

   Colors[12]="0x09B9" ; Acid 

   Colors[13]="0x09A4" ; Crystaline 





   TempX=UO.GetX() 

   TempY=UO.GetY() 

    

   walkn(SundukX,SundukY,"") 

   ToHide() 

   UO.UseObject("Sunduk") 



   Ore[0]=0x19B9 ; 4 and more ore 

   Ore[1]=0x19B7 ; 1 ore 

   Ore[2]=0x19BA ; 2 ore 

   Ore[3]=0x19B8 ; 3 ore 



   For i=0 to 3 

      Exit=0 

      repeat 

         UO.FindType(Ore[i]) 

          

         if UO.GetQuantity('finditem')>0 then 

            If UO.GetColor('finditem')=='0x0000' Then 

               Container=UO.GetSerial('IronBag') 

            Else 

               Container=UO.GetSerial('OtherBag') 

               Exit1=0 

               j=0 

               While j<Index AND Exit1<>1 

                  If UO.GetColor('finditem')==Colors[j] Then 

                     Container=UO.GetSerial('BestBag') 

                     Exit1=1 

                  Endif 

                  j=j+1 

               Wend 

            Endif 

            UO.MoveItem('finditem',0,Container) 

            CheckLag() 

            wait(1000) 

         Else 

            Exit=1 

         endif 

      until Exit==1 

   Next 



   walkn(TempX,TempY,"") 

   ToHide() 

end sub 



;----------- Morf in Daemon, kill elem and loot him ----------- 

sub killelem() 

   VAR Count, LastTimer, Elem 

    



   UO.UseType('0x0F0E','0x0631') ; inviz potion 

   While UO.STR<201 ; U'r not morfed char max Strength + 1 

      If UO.Mana>=50 then 

         UO.WaitMenu('What','Daemon') 

         UO.Cast('Polymorph') 

         wait(8000) 

      else 

         UO.UseType('0x0F0E','0x09DF') ; total mana potion 

         wait(3000) 

      endif 

   Wend 

    

   LastTimer=UO.Timer() 



   repeat 

      UO.BandageSelf() 

      wait(4000) 

   until UO.Life==UO.STR OR LastTimer+300<UO.Timer() 



   UO.UseType(0x1B76) ; heater shield 

   UO.UseType(0x1413) ; platemail gorget 

    

   UO.DeleteJournal() 

   UO.Exec('warmode 1') 



   UO.FindType('0x0010',-1,'ground') 

   Elem=UO.GetSerial('finditem') 



   UO.Attack(Elem) 

    

   repeat 

      wait(1000) 

      If UO.Life<50 Then 

         UO.UseType('0x0F0E','0x09BB') ;GH 

      Endif 



      If UO.GetDistance(Elem)>1 Then 

         walkn(0,0,Elem) 

      Endif 



   until UO.IsNPC(Elem)==0 

   wait(3000) 





   UO.WaitTargetGround('0x19B9') ; 4 and more ore 

   wait(1500) 

   UO.Grab('all') 

   UO.WaitTargetGround('0x19B8') ; 3 ore 

   wait(1500) 

   UO.Grab('all') 

   UO.WaitTargetGround('0x0EED') ; gold coins 

   wait(500) 

   UO.Grab('all') 





   UO.FindType('0x0010',-1,'ground') 

   If UO.GetQuantity('finditem')>0 Then 

      KillElem() 

   Endif 



   UO.Exec('warmode 0') 

   wait(1000) 



   UO.Print("Sdoh skotina!") 



   LastTimer=UO.Timer() 

   if UO.Life<200 then ; U'r max HP 

      repeat 

         UO.BandageSelf() 

         wait(4000) 

      until UO.Life>200 OR LastTimer+300<UO.Timer() 

   endif 

   UO.DeleteJournal() 



end sub 





############################################################### 

############################################################### 

; 

;                        Shared Subs 

; 

############################################################### 

############################################################### 



#============================================================== 

#  tohide() - try hidding char. When char lose HP, drink inviz 

#             potion if it found in backpack 

# 

#  Journal has been deleted!!! 

#-------------------------------------------------------------- 

sub tohide() 

   while NOT UO.Hidden() 

      UO.DeleteJournal() 

      UO.FindType('0x0F0E','0x0631','my') 



      if UO.Life<UO.STR/2 AND UO.GetQuantity('finditem')>0 then 

         UO.UseType('0x0F0E','0x0631') ; inviz potion 

         UO.Exec('warmode 0') 

         wait(2000) 

      else 

         UO.Exec('warmode 0') 

         UO.UseSkill('Stealth') 

         repeat 

            wait(50) 

         until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preoccupied') 

      endif 

   wend 

end sub 





#============================================================== 

#  CheckLag() - click on backpack and awaiting "backpack" 

#               message in journal. 

# 

#  Journal has been deleted!!! 

#-------------------------------------------------------------- 

sub CheckLag() 

   UO.DeleteJournal() 

   UO.Click('backpack') 



   repeat 

      wait(500) 

   until UO.InJournal('backpack') 

end sub 





#============================================================== 

#  Gong(counter) - playing wav-file 'counter'-times 

#  http://www.jetta.ru/cow.wav 

#-------------------------------------------------------------- 

sub Gong(times) ; play wav-file 

   VAR i 

   for i=1 to times 

      UO.Exec("playwav d:\game\uo\injection\cow") 

      wait(1200) ; time to play sample at once 

   next 

end sub 





#============================================================== 

#  Alarm() - when char lose some HP, U are informed :) 

#-------------------------------------------------------------- 

sub Alarm() 

   VAR CharHP=150 

   while 1==1 

      wait(1000) 

      if UO.Life<CharHP then 

         gong(1) 

      endif       

   wend 

end sub 



;---------------- ??????? ----------------------- 

sub GoW() 

   VAR walkwait=300 

   VAR x,y,dir=6 

   VAR key=36 ; Home key 

   x=UO.GetX() 

   y=UO.GetY() 

   while UO.GetDir()<>dir 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   wend 

   UO.Press(key) 



   wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

    

   If UO.GetX()+1==x Then 

      return -1 

   Else 

      return 1 

   Endif 

end sub 





sub GoN() 

   VAR walkwait=300 

   VAR x,y,dir=0 

   VAR key=33 ; PgUp 

   x=UO.GetX() 

   y=UO.GetY() 

   while UO.GetDir()<>dir 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   wend 

   UO.Press(key) 



   wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

    

   If UO.GetY()+1==y Then 

      return -1 

   Else 

      return 1 

   Endif 

end sub 





sub GoE() 

   VAR walkwait=300 

   VAR x,y,dir=2 

   VAR key=34 ; PgDown 

   x=UO.GetX() 

   y=UO.GetY() 

   while UO.GetDir()<>dir 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   wend 

   UO.Press(key) 



   wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

    

   If UO.GetX()-1==x Then 

      return -1 

   Else 

      return 1 

   Endif 

end sub 





sub GoS() 

   VAR walkwait=300 

   VAR x,y,dir=4 

   VAR key=35 ; End 

   x=UO.GetX() 

   y=UO.GetY() 

   while UO.GetDir()<>dir 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   wend 

   UO.Press(key) 



   wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

    

   If UO.GetY()-1==y Then 

      return -1 

   Else 

      return 1 

   Endif 

end sub 





sub GoWN() 

   VAR walkwait=300 

   VAR x,y,dir=7 

   VAR key=38 ; UpArrow 

   x=UO.GetX() 

   y=UO.GetY() 



   If UO.GetDir()<>dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   Endif 



   If UO.GetDir()==dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

      If UO.GetDir()==dir Then 

         return -1 

      Else 

         return UO.GetDir() 

      Endif 

   Else 

      return UO.GetDir() 

   Endif 

end sub 





sub GoNE() 

   VAR walkwait=300 

   VAR x,y,dir=1 

   VAR key=39 ; RightArrow 

   x=UO.GetX() 

   y=UO.GetY() 



   If UO.GetDir()<>dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   Endif 



   If UO.GetDir()==dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

      If UO.GetDir()==dir Then 

         return -1 

      Else 

         return UO.GetDir() 

      Endif 

   Else 

      return UO.GetDir() 

   Endif 

end sub 





sub GoSE() 

   VAR walkwait=300 

   VAR x,y,dir=3 

   VAR key=40 ; DownArrow 

   x=UO.GetX() 

   y=UO.GetY() 



   If UO.GetDir()<>dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   Endif 



   If UO.GetDir()==dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

      If UO.GetDir()==dir Then 

         return -1 

      Else 

         return UO.GetDir() 

      Endif 

   Else 

      return UO.GetDir() 

   Endif 

end sub 





sub GoSW() 

   VAR walkwait=300 

   VAR x,y,dir=5 

   VAR key=37 ; LeftArrow 

   x=UO.GetX() 

   y=UO.GetY() 



   If UO.GetDir()<>dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   Endif 



   If UO.GetDir()==dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

      If UO.GetDir()==dir Then 

         return -1 

      Else 

         return UO.GetDir() 

      Endif 

   Else 

      return UO.GetDir() 

   Endif 

end sub 





#============================================================== 

#  WalkN(X,Y,Serial) - char is walking by dX and dY step 

#                sub using Home, End, PgUp, PgDown keys 

#                d'not rebind this key from default action! 

#     walkwait - delay after keypress 

#-------------------------------------------------------------- 

sub WalkN(x,y,Target) 

   VAR i 

   VAR dx,dy,Exit=0 

    

   While Exit<>1    

      If Target<>"" Then 

         dx=UO.GetX(Target)-UO.GetX() 

         dy=UO.GetY(Target)-UO.GetY() 

;         UO.Print("Target locked!") 

         If UO.GetDistance(Target)<2 Then 

            Exit=1 

         Endif 

      Else 

         dx=x-UO.GetX() 

         dy=y-UO.GetY() 

         If dx==0 AND dy==0 Then 

            Exit=1 

         Endif 



      Endif 

    

      If dx<>0 AND dy<>0 Then 

         If dx>0 AND dy>0 Then 

            GoSE() 

         Endif 



         If dx>0 AND dy<0 Then 

            GoNE() 

         Endif 



         If dx<0 AND dy>0 Then 

            GoSW() 

         Endif 



         If dx<0 AND dy<0 Then 

            GoWN() 

         Endif 



      Endif 

    

      If dx<>0 AND dy==0 Then 

         If dx>0 Then 

            GoE() 

         Endif 

          

         If dx<0 Then 

            GoW() 

         Endif 

      Endif 





      If dx==0 AND dy<>0 Then 

         If dy>0 Then 

            GoS() 

         Endif 

          

         If dy<0 Then 

            GoN() 

         Endif 

      Endif 

   Wend 

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

Post by Scripts Writer »

Нужно. переделывайте
eX-Clusive
Posts: 4
Joined: 2006-02-07 19:16:37

Post by eX-Clusive »

Scripts Writer wrote:Нужно. переделывайте
Большое спасибо! Ваш пост мне действительно помог!
eX-Clusive
Posts: 4
Joined: 2006-02-07 19:16:37

Post by eX-Clusive »

Scripts Writer

ЫЫЫ Ты прикалываешься с Ником? Помоему тебе лишь бы пофлудить!
cOoler
Posts: 1
Joined: 2007-08-12 08:40:13

Post by cOoler »

eX-Clusive wrote:
Scripts Writer wrote:Нужно. переделывайте
Большое спасибо! Ваш пост мне действительно помог!
на мб сработает нет времени проверить ....

Code: Select all

############################################################### 

#===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=# 

#    Single char mining for VIP Mine. DRW Shard www.drw.ru    # 

#           Scripted by Savage (c) 2005 ICQ:33336141          # 

#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# 

#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""# 

# To start script use ",exec mine" command from client window # 

############################################################### 



;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

;==================== Main mining script ====================== 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

sub mine() 

   VAR DigDistance, TileNum, KillElemental 

   VAR ElemSignal, LastTimer 

   DIM BaseX[2], BaseY[2] 

   VAR BaseZ, WayPoint, WayPoints 

   VAR MaxWeight 



   VAR i,j,TileY,TileX,DirX,DirY 

   VAR Delta,BeginX,EndX,BeginY,EndY 

    



;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; TileNum='Num' - Use ",infotile" command on the floor 

; ????? ????? ? ??????? ????? ?????? ,????????? ???????? 

; ",infotile" ?? ?????? ?????? ? ?????????? ?? ?????????? ?? ?? 

; ??????. 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

   TileNum='1150' 

    



;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; ???????????? ???, ??????? ????? ??????? ???. ??????? ??? 

; ??????? ?????? ?????????. ?? ???? ???? ??? ????????? 760, ?? 

; ?????? 730. 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

   MaxWeight=500 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; DigDistance=4 - Distance from tile where pickaxe targeting 

; ?????? ????? ?? ???????? ????? ?????? ???, ?? ???? ?????????? 

; ?? ?????? ???? ????? ?????????? ??????. 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

   DigDistance=4 



;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; KillElemental='Yes'/'No' - Use 'Yes' if char skilled to morph 

;                            in daemon and wrestling > 50 

; ???? ??? ?????????? ???????? ???? ???? ??????, ??????? 'Yes' 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

   KillElemental='No' 



;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; ElemSignal='Off'/'On' - Play sound when elemental is digged 

; ????????? ??? ????????? ????? 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

   ElemSignal='On' 





;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; ????? ????????? ?????????? ????? ???????. ????? ?????? ?? 

; ??????? ? ?????????? ?????????? ? ???????. ?? ? ????? 

; ?????????? ?????? ????. ???? ??????? ?? 4 ?????? ?? ????. 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 



   BaseX[0]=5334 

   BaseY[0]=1150 

   BaseZ=0 



   BaseX[1]=5326 

   BaseY[1]=1150 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 

; ????????? ?????????? ????? ??????? 

;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 



   WayPoints=2 





   CheckLag() 

   UO.UseObject('Sunduk') 

   LastTimer=UO.Timer() 

   Repeat 

      wait(500) 

   Until UO.InJournal('You can') OR UO.InJournal('What is the') OR UO.Timer()>LastTimer+100 

    

   If UO.InJournal('see the') Then 

      UO.Say("Podoydi k sunduku i tkni v nego pricelom!") 

      UO.AddObject('Sunduk') 

      While UO.Targeting()==2 

         wait(500) 

      Wend 

      UO.SaveConfig() 

      UO.UseObject('Sunduk') 

   Else 

;      UO.Say("Ok! Viju sunduk.") 

   Endif 





   CheckLag() 

   UO.UseObject('IronBag') 

   LastTimer=UO.Timer() 

   Repeat 

      wait(500) 

   Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100 

    

   If UO.InJournal('see the') Then 

      UO.Say("V kakoy meshok kidat' Iron Ore") 

      UO.AddObject('IronBag') 

      While UO.Targeting()==2 

         wait(500) 

      Wend 

      UO.SaveConfig() 

   Else 

;      UO.Say("Meshok dlya Iron Ore viju") 

   Endif 





   CheckLag() 

   UO.UseObject('OtherBag') 

   LastTimer=UO.Timer() 

   Repeat 

      wait(500) 

   Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100 

    

   If UO.InJournal('see the') Then 

      UO.Say("V kakoy meshok kidat' rudu?") 

      UO.AddObject('OtherBag') 

      While UO.Targeting()==2 

         wait(500) 

      Wend 

      UO.SaveConfig() 

   Else 

;      UO.Say("Meshok dlya rudy viju.") 

   Endif 





   CheckLag() 

   UO.UseObject('BestBag') 

   LastTimer=UO.Timer() 

   Repeat 

      wait(500) 

   Until UO.InJournal('You can') OR UO.InJournal('What is the')OR UO.Timer()>LastTimer+100 

    

   If UO.InJournal('see the') Then 

      UO.Say("V kakoy meshok kidat' vihu?") 

      UO.AddObject('BestBag') 

      While UO.Targeting()==2 

         wait(500) 

      Wend 

      UO.SaveConfig() 

   Else 

;      UO.Say("Meshok dlya vihi viju.") 

   Endif 



   While NOT UO.Dead() 

    

      For WayPoint=0 to WayPoints-1 

         walkn(BaseX[WayPoint],BaseY[WayPoint],"") 

         digitstay(MaxWeight,DigDistance,KillElemental,ElemSignal,BaseX[WayPoint],BaseY[WayPoint]) 

      Next 

   wend 

end sub 





; ???????? ???????? ????. ??????????????? ?? ??? ????? ??????. 

sub CheckOre() 

   VAR Cont=1, i=0, Exit=0 

   VAR Count=7   ; ??????? ????????? ? ???????. 

   DIM Ores[15]    



   Ores[0]="Iron" 

   Ores[1]="Rusty" 

   Ores[2]="Old Copper" 

   Ores[3]="Dull Copper" 

   Ores[4]="Copper" 

   Ores[5]="Bronze" 

   Ores[6]="Silver" 

;   Ores[7]="Shadow" 

;   Ores[8]="Rose" 

;   Ores[9]="Gold" 

;   Ores[10]="Agapite" 

;   Ores[11]="Blood Rock" 

;   Ores[12]="Verite" 

;   Ores[13]="Valorite" 

;   Ores[14]="Mytheril" 



   While i<Count AND Exit==0 

      If UO.InJournal(Ores[i]) Then 

         Cont=0 

         Exit=1 

      Endif 

;      UO.Print(STR(i)) 

;      UO.Print(Ores[i]) 

      i=i+1 

   Wend 

    

   return Cont 

end sub 





;-------------------- Try to mine under self ------------------ 

sub digitstay(MaxWeight,MaxDistance,KillElemental,ElemSignal,BaseX,BaseY) 

   VAR x,y,z='0',TileNum='1339' 

   VAR Last=0,LastTimer, ContFlag=1 

   VAR MaxTimer=110 



   For x=-MaxDistance to MaxDistance 

      For y=-MaxDistance to MaxDistance 

         Repeat 

            CheckLag() ; deleting journal 

            ToHide() 

              

            UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z) 

            UO.UseType('0x0E85') 



            LastTimer=UO.Timer() 



            Repeat 

               wait(500) 

            until UO.InJournal("Try mining") OR UO.InJournal("You put") OR UO.InJournal("You loosen") OR UO.InJournal("There is no") OR UO.InJournal("That is too") OR UO.InJournal("OOPS") OR UO.InJournal("attacking you") OR LastTimer+200<UO.Timer() 



            If NOT UO.InJournal('There is no') then 

               ContFlag=CheckOre() 

            Endif 



            If UO.InJournal('You loosen') then 

               repeat 

                  wait(500) 

               until UO.InJournal("You put") OR LastTimer+MaxTimer<UO.Timer() 

            Endif 



            If UO.InJournal('something with ore') OR UO.InJournal("attacking you") then 

               If ElemSignal=='On' Then 

                  Gong(2) 

               Endif 



               If KillElemental=='Yes' Then 

                  KillElem() 

                  walkn(BaseX,BaseY,"") 

               Else 

; any user defined command when char digget elemental 



               Endif 

            Endif 

              

            If UO.InJournal("attacking you") then 

               gong(3) 

            Endif 



            If UO.Weight>=MaxWeight then 

               unloadore() 

            Endif 

         Until UO.InJournal("There is no") OR UO.InJournal("That is too") OR UO.InJournal("Try mining") OR ContFlag==0 

      Next 

   Next 

end sub 





;------------------------- Unload ore ------------------------- 

sub unloadore() 

   VAR TempX,TempY,i,Exit, Exit1, ConTainer, j 

   VAR SundukX=5774 

   VAR SundukY=1152 

   VAR Index=14 ; ?????????? ????????? ??????? 

   DIM Ore[5], Colors[20] 



   Colors[0]="0x09F0" ; Gorgan 

   Colors[1]="0x09D3" ; Steel 

   Colors[3]="0x0BA7" ; Eldar 

   Colors[4]="0x08AF" ; Plut 

   Colors[5]="0x0085" ; Dragon 

   Colors[6]="0x0060" ; Aqua 

   Colors[7]="0x09E6" ; Elvin 

   Colors[8]="0x010F" ; Krinit 

   Colors[9]="0x09DA" ; Vulkan 

   Colors[10]="0x09EC" ; Blood Crest 

   Colors[11]="0x008F" ; Sand Rock 

   Colors[12]="0x09B9" ; Acid 

   Colors[13]="0x09A4" ; Crystaline 





   TempX=UO.GetX() 

   TempY=UO.GetY() 

    

   walkn(SundukX,SundukY,"") 

   ToHide() 

   UO.UseObject("Sunduk") 



   Ore[0]=0x19B9 ; 4 and more ore 

   Ore[1]=0x19B7 ; 1 ore 

   Ore[2]=0x19BA ; 2 ore 

   Ore[3]=0x19B8 ; 3 ore 



   For i=0 to 3 

      Exit=0 

      repeat 

         UO.FindType(Ore[i]) 

          

         if UO.GetQuantity('finditem')>0 then 

            If UO.GetColor('finditem')=='0x0000' Then 

               Container=UO.GetSerial('IronBag') 

            Else 

               Container=UO.GetSerial('OtherBag') 

               Exit1=0 

               j=0 

               While j<Index AND Exit1<>1 

                  If UO.GetColor('finditem')==Colors[j] Then 

                     Container=UO.GetSerial('BestBag') 

                     Exit1=1 

                  Endif 

                  j=j+1 

               Wend 

            Endif 

            UO.MoveItem('finditem',0,Container) 

            CheckLag() 

            wait(1000) 

         Else 

            Exit=1 

         endif 

      until Exit==1 

   Next 



   walkn(TempX,TempY,"") 

   ToHide() 

end sub 

sub killelem()
uo.Exec('terminate all")
wait(100)
uo.CloseUO()
end sub 

############################################################### 

############################################################### 

; 

;                        Shared Subs 

; 

############################################################### 

############################################################### 



#============================================================== 

#  tohide() - try hidding char. When char lose HP, drink inviz 

#             potion if it found in backpack 

# 

#  Journal has been deleted!!! 

#-------------------------------------------------------------- 

sub tohide() 

   while NOT UO.Hidden() 

      UO.DeleteJournal() 

      UO.FindType('0x0F0E','0x0631','my') 



      if UO.Life<UO.STR/2 AND UO.GetQuantity('finditem')>0 then 

         UO.UseType('0x0F0E','0x0631') ; inviz potion 

         UO.Exec('warmode 0') 

         wait(2000) 

      else 

         UO.Exec('warmode 0') 

         UO.UseSkill('Stealth') 

         repeat 

            wait(50) 

         until UO.InJournal('You have hidden') OR UO.InJournal('seem to hide') OR UO.InJournal('preoccupied') 

      endif 

   wend 

end sub 





#============================================================== 

#  CheckLag() - click on backpack and awaiting "backpack" 

#               message in journal. 

# 

#  Journal has been deleted!!! 

#-------------------------------------------------------------- 

sub CheckLag() 

   UO.DeleteJournal() 

   UO.Click('backpack') 



   repeat 

      wait(500) 

   until UO.InJournal('backpack') 

end sub 





#============================================================== 

#  Gong(counter) - playing wav-file 'counter'-times 

#  http://www.jetta.ru/cow.wav 

#-------------------------------------------------------------- 

sub Gong(times) ; play wav-file 

   VAR i 

   for i=1 to times 

      UO.Exec("playwav d:\game\uo\injection\cow") 

      wait(1200) ; time to play sample at once 

   next 

end sub 





#============================================================== 

#  Alarm() - when char lose some HP, U are informed :) 

#-------------------------------------------------------------- 

sub Alarm() 

   VAR CharHP=150 

   while 1==1 

      wait(1000) 

      if UO.Life<CharHP then 

         gong(1) 

      endif        

   wend 

end sub 



;---------------- ??????? ----------------------- 

sub GoW() 

   VAR walkwait=300 

   VAR x,y,dir=6 

   VAR key=36 ; Home key 

   x=UO.GetX() 

   y=UO.GetY() 

   while UO.GetDir()<>dir 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   wend 

   UO.Press(key) 



   wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

    

   If UO.GetX()+1==x Then 

      return -1 

   Else 

      return 1 

   Endif 

end sub 





sub GoN() 

   VAR walkwait=300 

   VAR x,y,dir=0 

   VAR key=33 ; PgUp 

   x=UO.GetX() 

   y=UO.GetY() 

   while UO.GetDir()<>dir 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   wend 

   UO.Press(key) 



   wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

    

   If UO.GetY()+1==y Then 

      return -1 

   Else 

      return 1 

   Endif 

end sub 





sub GoE() 

   VAR walkwait=300 

   VAR x,y,dir=2 

   VAR key=34 ; PgDown 

   x=UO.GetX() 

   y=UO.GetY() 

   while UO.GetDir()<>dir 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   wend 

   UO.Press(key) 



   wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

    

   If UO.GetX()-1==x Then 

      return -1 

   Else 

      return 1 

   Endif 

end sub 





sub GoS() 

   VAR walkwait=300 

   VAR x,y,dir=4 

   VAR key=35 ; End 

   x=UO.GetX() 

   y=UO.GetY() 

   while UO.GetDir()<>dir 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   wend 

   UO.Press(key) 



   wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

    

   If UO.GetY()-1==y Then 

      return -1 

   Else 

      return 1 

   Endif 

end sub 





sub GoWN() 

   VAR walkwait=300 

   VAR x,y,dir=7 

   VAR key=38 ; UpArrow 

   x=UO.GetX() 

   y=UO.GetY() 



   If UO.GetDir()<>dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   Endif 



   If UO.GetDir()==dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

      If UO.GetDir()==dir Then 

         return -1 

      Else 

         return UO.GetDir() 

      Endif 

   Else 

      return UO.GetDir() 

   Endif 

end sub 





sub GoNE() 

   VAR walkwait=300 

   VAR x,y,dir=1 

   VAR key=39 ; RightArrow 

   x=UO.GetX() 

   y=UO.GetY() 



   If UO.GetDir()<>dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   Endif 



   If UO.GetDir()==dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

      If UO.GetDir()==dir Then 

         return -1 

      Else 

         return UO.GetDir() 

      Endif 

   Else 

      return UO.GetDir() 

   Endif 

end sub 





sub GoSE() 

   VAR walkwait=300 

   VAR x,y,dir=3 

   VAR key=40 ; DownArrow 

   x=UO.GetX() 

   y=UO.GetY() 



   If UO.GetDir()<>dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   Endif 



   If UO.GetDir()==dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

      If UO.GetDir()==dir Then 

         return -1 

      Else 

         return UO.GetDir() 

      Endif 

   Else 

      return UO.GetDir() 

   Endif 

end sub 





sub GoSW() 

   VAR walkwait=300 

   VAR x,y,dir=5 

   VAR key=37 ; LeftArrow 

   x=UO.GetX() 

   y=UO.GetY() 



   If UO.GetDir()<>dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If UO.GetDir()<>dir Then 

         CheckLag() 

      Endif 

   Endif 



   If UO.GetDir()==dir Then 

      UO.Press(key) 

      wait(walkwait) 

      If x==UO.GetX() AND y==UO.GetY() Then 

         CheckLag() 

      Endif 

      If UO.GetDir()==dir Then 

         return -1 

      Else 

         return UO.GetDir() 

      Endif 

   Else 

      return UO.GetDir() 

   Endif 

end sub 





#============================================================== 

#  WalkN(X,Y,Serial) - char is walking by dX and dY step 

#                sub using Home, End, PgUp, PgDown keys 

#                d'not rebind this key from default action! 

#     walkwait - delay after keypress 

#-------------------------------------------------------------- 

sub WalkN(x,y,Target) 

   VAR i 

   VAR dx,dy,Exit=0 

    

   While Exit<>1    

      If Target<>"" Then 

         dx=UO.GetX(Target)-UO.GetX() 

         dy=UO.GetY(Target)-UO.GetY() 

;         UO.Print("Target locked!") 

         If UO.GetDistance(Target)<2 Then 

            Exit=1 

         Endif 

      Else 

         dx=x-UO.GetX() 

         dy=y-UO.GetY() 

         If dx==0 AND dy==0 Then 

            Exit=1 

         Endif 



      Endif 

    

      If dx<>0 AND dy<>0 Then 

         If dx>0 AND dy>0 Then 

            GoSE() 

         Endif 



         If dx>0 AND dy<0 Then 

            GoNE() 

         Endif 



         If dx<0 AND dy>0 Then 

            GoSW() 

         Endif 



         If dx<0 AND dy<0 Then 

            GoWN() 

         Endif 



      Endif 

    

      If dx<>0 AND dy==0 Then 

         If dx>0 Then 

            GoE() 

         Endif 

          

         If dx<0 Then 

            GoW() 

         Endif 

      Endif 





      If dx==0 AND dy<>0 Then 

         If dy>0 Then 

            GoS() 

         Endif 

          

         If dy<0 Then 

            GoN() 

         Endif 

      Endif 

   Wend 

end sub 
Post Reply