DRW Vip mining
Moderators: Murderator+, Murderator
-
- Posts: 39
- Joined: 2007-08-11 16:44:45
- Location: www.drw.ru
Code: Select all
;----------- 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
Из старого скрипта вырезал.
Вставь вместо старого..
:O
-
- Posts: 39
- Joined: 2007-08-11 16:44:45
- Location: www.drw.ru
-
- Posts: 39
- Joined: 2007-08-11 16:44:45
- Location: www.drw.ru
-
- Posts: 39
- Joined: 2007-08-11 16:44:45
- Location: www.drw.ru
-
- Posts: 39
- Joined: 2007-08-11 16:44:45
- Location: www.drw.ru
-
- Posts: 39
- Joined: 2007-08-11 16:44:45
- Location: www.drw.ru
плиз впишите суда ктонить реконектор
зарание спасибо.

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[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=600
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; 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]=5846
BaseY[0]=1212
BaseZ=0
BaseX[1]=5843
BaseY[1]=1215
BaseX[2]=5850
BaseY[2]=1214
BaseX[3]=5846
BaseY[3]=1212
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; Óêàçûâàåì êîëè÷åñòâî òî÷åê êîïàíèÿ
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
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("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=5839
VAR SundukY=1216
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
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()
UO.Exec('terminate Reconnector')
wait(1000)
uo.exec('exec Reconnector')
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=200
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; 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]=6108
BaseY[0]=1213
BaseZ=0
BaseX[1]=6103
BaseY[1]=1213
BaseX[2]=6096
BaseY[2]=1213
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
; Указываем количество точек копания
;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
WayPoints=3
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
If UO.InJournal('Elemental') then
UO.TextPrint('Elemental founded '+MakeTime())
end sub
; Проверка нужности руды. Закоментировать то что нужно копать.
sub CheckOre()
VAR Cont=1, i=0, Exit=0
VAR Count=0 ; Сколько элементов в массиве.
DIM Ores[15]
; Ores[0]="Rusty"
; Ores[1]="Old Copper"
; Ores[2]="Dull Copper"
; Ores[3]="Copper"
; Ores[4]="Bronze"
; Ores[5]="Silver"
; Ores[6]="Iron"
; 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(300)
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=6094
VAR SundukY=1216
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 C:\InformedFile.wav")
wait(1200) ; time to play sample at once
next
end sub
#==============================================================
# Alarm() - when char lose some HP, U are informed :)
#--------------------------------------------------------------
sub Alarm()
VAR CharHP=190
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
Вот мой скрипт.
С реконнектором и всё такое.
Last edited by Spirit on 2007-09-30 14:11:55, edited 2 times in total.
:O
Dimage wrote:За скрипт автору огромное спасибо.
И как всегда большое жирное НО закралось...
У мну почему то не детектятся элемы которых выкопал не я...
тоесть они атакуют чара а ему реально пофигу , хотя если я выкопаю его , то скрипт с радостью выполнит все свои функции.
Где посмотреть , что посоветуете?
Code: Select all
;----------- Summon Energy Vortex, kill elem and loot him -----------
sub killelem()
if uo.injournal("heavy") then # вырыли элемента #
# убиваем элемента
Вот тут посмотри ))) А посоветовать могу вставить поиск по типу, в радиусе 10 клеток, чтоб на соседей не срабатывал скрипт.
Code: Select all
sub killelem()
if uo.injournal("heavy") or uo.injournal("attacking you") or uo.injournal("Elemental")
then # вырыли элемента #
# убиваем элемента #
Сделал так? правильно?
Dimage wrote:Code: Select all
sub killelem()
if uo.injournal("heavy") or uo.injournal("attacking you") or uo.injournal("Elemental")
then # вырыли элемента #
# убиваем элемента #
Сделал так? правильно?
По журналу не айс, так как основной скрипт затирает журнал, может пропускать элемов, лучше поиск по типу юзать.
а если так?
заменить:
на:
Вариант правилен?
заменить:
Code: Select all
if uo.injournal("heavy") then # вырыли элемента #
на:
Code: Select all
UO.Set('finddistance', '50')
UO.FindType("0x0010","-1", "ground")
If UO.FindCount() > 0 Then
Вариант правилен?
Dimage wrote:а если так?
Вариант правилен?
Да только дистанцию поменьше сделай
Code: Select all
UO.Set('finddistance', '10')
А то на соседских будет срабатывать