это скрипт на мининг в випке , ДОбавьте пожалуйста чтобы после кила элементаля он подходил к убитому элему и лутал его , а то в етом скрипте он только стоит на месте и лутит вокруг себя
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 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=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='Yes'
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; ElemSignal='Off'/'On' - Play sound when elemental is digged ; Оповешать при появлении элема ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ElemSignal='On'
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Здесь указываем координаты точек копания. Нужно встать на ; позицию и посмотреть координаты в инжекте. Их и нужно ; подставить вместо моих. Чара ставьте на 4 клетки от стен. ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
BaseX[0]=5779 BaseY[0]=1181 BaseZ=0
BaseX[1]=5783 BaseY[1]=1181
BaseX[2]=5779 BaseY[2]=1181
BaseX[3]=5783 BaseY[3]=1181
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Указываем количество точек копания ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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=11 ; Сколько элементов в массиве. DIM Ores[13]
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]="Rose" Ores[9]="Shadow" 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("Elemental") 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=5773 VAR SundukY=1184 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
;----------- 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.cast('Energy Vortex','self') wait(5000) if uo.injournal('spell fizzles') then goto povtor endif wait(13000) uo.WaitTargetTile("6044", str(UO.GetX()), str(UO.GetY()), str(UO.GetZ())) wait(500) uo.cast('Energy Vortex','self') wait(10000)
uo.WaitTargetTile("6044", str(UO.GetX()), str(UO.GetY()), str(UO.GetZ())) dispel: uo.cast('Mass Dispel','self') wait(6000) if uo.injournal('fizzles') then goto dispel endif
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) Else Exit=1 Endif Wend Next
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
|