Помогите пожалуйста правильно всроить данный кусок- Килл элема.
Code: sub killelem() if uo.injournal("heavy") then # вырыли элемента # # убиваем элемента # Vortex: uo.exec('usetype 0x0f0e 0x0631') # пьем инвизку, а то энергетик порвет =) # wait(300) uo.cast('Energy Vortex','self') repeat wait(300) until uo.injournal("fizzles") or uo.injournal("Vortex") if uo.injournal("fizzles") then goto Vortex else wait(15000) vasanort: uo.exec('usetype 0x0f0e 0x09DF') # пьем манку # wait(300) uo.cast('Mass Dispel','self') wait(7000) if uo.injournal("fizzles") then goto vasanort endif # собираем руду и копаем дальше # UO.SetReceivingContainer('backpack') UO.FindType('0x19B9',-1,'ground') if UO.GetQuantity('finditem')>0 then UO.Grab('0','finditem') wait(2000) endif UO.FindType('0x19B7',-1,'ground') if UO.GetQuantity('finditem')>0 then UO.Grab('0','finditem') wait(2000) endif UO.FindType('0x19BA',-1,'ground') if UO.GetQuantity('finditem')>0 then UO.Grab('0','finditem') wait(2000) endif UO.FindType('0x19B8',-1,'ground') if UO.GetQuantity('finditem')>0 then UO.Grab('0','finditem') wait(2000) endif UO.UnSetReceivingContainer() endif endif end sub
Мининг на дрв изменился, демоном теперь элемов не завалишь. Скрипт должен убивать элема выпив инвизку,кастанув ВОРТЕКСА, вас ан орт, собрать руду. Уверен что скрипт нужен не только мне.
Code: ############################################################### #===---====----===---===---= Mining =---=-=-=-=-=--=-=-=-=-=-=# # Single char mining for VIP Mine. DRW Shard http://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='1339'
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Максимальный вес, который может поднять чар. Ставьте его ; немного меньше реального. То есть если чар поднимает 760, то ; ставим 730. ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" MaxWeight=750
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; 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='Off'
;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Здесь указываем координаты точек копания. Нужно встать на ; позицию и посмотреть координаты в инжекте. Их и нужно ; подставить вместо моих. Чара ставьте на 4 клетки от стен. ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
BaseX[0]=5000 BaseY[0]=1000 BaseZ=0
BaseX[1]=5000 BaseY[1]=1000 ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ; Указываем количество точек копания ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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=5000 VAR SundukY=1000 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() if uo.injournal("heavy") then # вырыли элемента # # убиваем элемента # Vortex: uo.exec('usetype 0x0f0e 0x0631') # пьем инвизку, а то энергетик порвет =) # wait(300) uo.cast('Energy Vortex','self') repeat wait(300) until uo.injournal("fizzles") or uo.injournal("Vortex") if uo.injournal("fizzles") then goto Vortex else wait(15000) vasanort: uo.exec('usetype 0x0f0e 0x09DF') # пьем манку # wait(300) uo.cast('Mass Dispel','self') wait(7000) if uo.injournal("fizzles") then goto vasanort endif # собираем руду и копаем дальше # UO.SetReceivingContainer('backpack') UO.FindType('0x19B9',-1,'ground') if UO.GetQuantity('finditem')>0 then UO.Grab('0','finditem') wait(2000) endif UO.FindType('0x19B7',-1,'ground') if UO.GetQuantity('finditem')>0 then UO.Grab('0','finditem') wait(2000) endif UO.FindType('0x19BA',-1,'ground') if UO.GetQuantity('finditem')>0 then UO.Grab('0','finditem') wait(2000) endif UO.FindType('0x19B8',-1,'ground') if UO.GetQuantity('finditem')>0 then UO.Grab('0','finditem') wait(2000) endif UO.UnSetReceivingContainer() endif 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.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
sub Reconnector() var ReconnectTime, RFlag ReconnectTime = '0' RFlag = 1 Repeat While (UO.ObjAtLayer('Bpack') == '') if RFlag Then ReconnectTime = MakeTime() RFlag = 0 endif Wait(20000) # WorldSave Protection 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) and (ReconnectTime <> '0') Then UO.Exec('terminate mine') #сюда похоже нужно писать название другого скрипта, который нужно перезапустить после реконекта (для прокачки) wait(1000) UO.Exec('exec mine') UO.TextOpen() UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime) 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
[/b]
|