Code: ############################################################### #===---====----===---===---= 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 autostart() UO.Exec('terminate mine') wait(50) UO.Exec('terminate elemcheck') wait(4000) UO.Exec('exec mine') wait(2000) end sub
sub mine() VAR DigDistance, TileNum, KillElemental VAR ElemSignal, LastTimer DIM BaseX[4], BaseY[4] 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='1339'
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Максимальный вес, который может поднять чар. Ставьте его ; немного меньше реального. То есть если чар поднимает 760, то ; ставим 730. ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" MaxWeight=501
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; 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='Yes'
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; ElemSignal='Off'/'On' - Play sound when elemental is digged ; Оповешать при появлении элема ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ElemSignal='On'
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Здесь указываем координаты точек копания. Нужно встать на ; позицию и посмотреть координаты в инжекте. Их и нужно ; подставить вместо моих. Чара ставьте на 4 клетки от стен. ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
BaseX[0]=5269 BaseY[0]=1117 BaseZ=0
BaseX[1]=5269 BaseY[1]=1117
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Указываем количество точек копания ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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]="Gold" ; Ores[8]="Shadow" ; Ores[9]="Rose" ; Ores[10]="Agapite" ; Ores[11]="Blood Rock" ; Ores[12]="Verite" ; Ores[13]="Valorite" ; Ores[14]="Mytheril"
While i<Count AND Exit==0 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=5262 VAR SundukY=1120 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
repeat UO.DeleteJournal() UO.Press(123) wait(10000) until not UO.InJournal('Elemental') OR not UO.InJournal('Energy') wait(100) UO.Exec('exec elemcheck') TempX=UO.GetX() TempY=UO.GetY() wait(100) walkn(SundukX,SundukY,"") ToHide() UO.Exec('terminate elemcheck') wait(200) 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
dob() dob1()
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 repeat UO.DeleteJournal() UO.Press(123) wait(10000) until not UO.InJournal('Elemental') OR not UO.InJournal('Energy') wait(200) UO.Exec('exec elemcheck') wait(200) walkn(TempX,TempY,"") ToHide() UO.Exec('terminate elemcheck') end sub
sub elemcheck() repeat UO.DeleteJournal() UO.Press(123) wait(500) until UO.InJournal('Elemental') OR UO.InJournal('Energy') wait(100) uo.moveoff() wait(100) uo.Usetype('0x0F0E','0x0631') ; Invise wait(100) repeat UO.DeleteJournal() UO.Press(123) wait(5000) until not UO.InJournal('Elemental') OR not UO.InJournal('Energy') wait(200) uo.moveon() UO.Exec('exec Elemcheck') end sub
;----------- Summon Energy Vortex, kill elem and loot him ----------- sub killelem() DIM Ore[4] Ore[0]='0x19B7' ; 1 ore Ore[1]='0x19BA' ; 2 ore Ore[2]='0x19B8' ; 3 ore Ore[3]='0x19B9' ; 4 and more ore var i, exit,l UO.DeleteJournal() UO.UnSetReceivingContainer() uo.usetype('0x0f0e','0x0631') wait(3000) povtor: uo.WaitTargetTile("6044", str(UO.GetX()), str(UO.GetY()), str(UO.GetZ())) wait(500) uo.usetype('0x1f66','') wait(13000) uo.WaitTargetTile("6044", str(UO.GetX()), str(UO.GetY()), str(UO.GetZ())) wait(500) uo.usetype('0x1f66','') wait(13000) For i=0 to 3 Exit=0 While Exit<>1 UO.FindType(Ore[i],-1,'ground') If UO.GetQuantity('finditem')>0 then UO.Grab('all','finditem') CheckLag() Wait(1000) uo.ignore('finditem') Else Exit=1 Endif Wend Next uo.ignorereset() uo.WaitTargetTile("6044", str(UO.GetX()), str(UO.GetY()), str(UO.GetZ())) dispel: UO.DeleteJournal() wait(100) uo.usetype('0x1f62','') wait(6000) if uo.injournal('fizzles') then goto dispel endif 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.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(100) 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
sub Reconnector() var RFlag RFlag = 1 Repeat While (UO.ObjAtLayer('Bpack') == '') if RFlag Then RFlag = 0 endif Wait(20000) UO.Say('') Wait(3000) UO.Say('') Wait(3000) UO.Say('') Wait(3000) UO.LDblClick(357,164) UO.LClick(616,459) Wait(3000) WEnd Wait(3000) if (RFlag == 0) Then wait(1000) uo.lclick(494,383) wait(1000) wait(1000) RFlag = 1 endif Until false end sub
sub dob() VAR amount = 10 ## VAR r, q, Bag = 0x40316202 ## откуда брать Dim item[2] item[2] = 0x1F66 ## тип скролов вокстера item[3] = 0x1F62 ## тип скролов uo.ignorereset() For r = 1 to 2 if uo.count( item[r] )<>amount then q = amount - uo.count( item[r] ) if q <> 0 then if q > 0 then uo.useobject( Bag ) CheckLag() uo.findtype( item[r] , -1 , Bag ) If uo.findcount() == 0 then uo.msg('You dont have any!') return endif uo.moveitem('finditem', STR(q) ,'backpack') wait(600) CheckLag() else q = q*-1 uo.findtype( item[r] , -1 ,'my') uo.moveitem('finditem', STR(q) , Bag ) wait(400) CheckLag() endif endif endif next uo.print('!! -= Done =- !!') end sub
sub dob1() UO.FindType( '0x0F0E' , '0x0631' ,'backpack') If UO.GetQuantity('finditem')<5 then UO.FindType('0x0F0E','0x0631' , '0x40316202') wait(1000) UO.Grab('5','finditem') end if end sub
Так вот реконектор по сути свою задачу делает (тоесть перезаходит в уо), но скрипт не начинает своюю работу по новой, тоесть просто стоит.
|