добрыи дени, нужна ваше помаши, да сих пор где ни играл месаги каторыи писала сфера при мининге были теже как в скрипте, паиетаму да сихпор я настраивал ток кардинаты хадилки и сундук и в копку, но шяс играю на сервере где месаги и на руском и на англиском. Сопстфена хочитса поняти где будит правилнеи писати месаги штоб он капал правилина, плюс хочитса зделати попрафку в мининге штоб он пот сибя ни копал.
Var Pickaxe1 = '0x0E85'
Var Pickaxe2 = '0x0E86'
Var MaxWeight = 350
Var Bank = '0x4001ABBA'
Var RuneBook = '0x40006BCF'
Var Message1 = 'Вы положили'
Var Message2 = 'heavy'
Var Message3 = 'location'
Var Message4 = 'You decide not mine for now'
Var Message5 = "but fail"
Var Message6 = 'Too far '
Var Message7 = 'in rock'
Var Message8 = "Ты не можешь копать под себя"
Var Message9 = 'nothing here'
Var Message10 = 'You have found some'
Var Message11 = 'There is nothing here to mine for'
Var Message12 = "You can't use the"
Var Message13 = 'You loosen some rocks but fail to find any useable ore'
Var Message14 = 'location'
Var Message15 = 'far away'
Var Message16 = 'I put'
Var Message17 = "Ты не можешь копать под"
Var TileNum = '1339'
Var NoOre = 0
Var FP
sub MiningX()
GoToTile( 1917, 373, 0 ,false )
wait(50)
Mining()
GoToTile( 1915, 373, 0 , false )
wait(50)
Mining()
GoToTile( 1912, 372, 0 , false )
wait(50)
Mining()
GoToTile( 1909, 370, 0 , false )
wait(50)
Mining()
GoToTile( 1905, 369, 0 , false )
wait(50)
Mining()
GoToTile(1905, 365, 0 , false )
wait(50)
Mining()
GoToTile(1902, 359, 0 , false )
wait(50)
Mining()
GoToTile( 1902, 365, 0 , false )
wait(50)
Mining()
GoToTile( 1903, 368, 0 , false )
wait(50)
Mining()
GoToTile( 1898, 368, 0 , false )
wait(50)
Mining()
GoToTile( 1895, 367, 0 , false )
wait(50)
Mining()
GoToTile( 1893, 365, 0 , false )
wait(50)
GoToCave1()
EndSub
Sub GotoCave1()
GoToTile( 1931, 373, 0 , false )
wait(50)
GoToTile( 1928, 373, 0 , false )
wait(50)
GoToTile( 1925, 373, 0 , false )
wait(50)
GoToTile( 1922, 373, 0 , false )
wait(50)
GoToTile( 1918, 373, 0 , false )
wait(50)
MiningX()
endsub
Sub GoToCave()
GoToTile( 1931, 373, 0 , false )
wait(50)
GoToTile( 1928, 373, 0 , false )
wait(50)
GoToTile( 1925, 373, 0 , false )
wait(50)
GoToTile( 1922, 373, 0 , false )
wait(50)
GoToTile( 1918, 373, 0 , false )
MiningX()
endsub
Sub GoToBank()
GoToTile( 1918, 373, 0 , false )
wait(100)
GoToTile( 1922, 373, 0 , false )
wait(50)
GoToTile( 1925, 373, 0 , false )
wait(50)
GoToTile( 1928, 373, 0 , false )
wait(50)
GoToTile( 1931, 373, 0 , false )
wait(50)
DropOre()
endsub
Sub Mining()
var mx, my, mz, i, j, CheckTime
mx = UO.GetX('self')
my = UO.GetY('self')
mz = UO.GetZ('self')
If UO.Weight >= MaxWeight then
GoToBank()
EndIf
For i = mx - 1 to mx + 1
For j = my - 1 to my + 1
EndIf
UO.Print('Xy9IPb bPaTyXa: '+str(mx - i)+' '+str(my - j))
If UO.Targeting() then
UO.CancelTarget()
EndIf
Repeat
Ruda()
UO.DeleteJournal()
If NoOre == 300 then
Pause()
EndIf
UO.WaitTargetTile(TileNum, str(i), str(j), str(mz))
Wait(50)
UO.UseType(Pickaxe1)
CheckTime = UO.Timer()
Repeat
Wait(100)
Until UO.InJournal(Message1) or UO.InJournal(Message2) or UO.InJournal(Message3) or UO.InJournal(Message4) or UO.InJournal(Message5) or UO.InJournal(Message6) or UO.InJournal(Message7) or UO.InJournal(Message8)or UO.InJournal(Message13) or UO.InJournal(Message9) or UO.InJournal(Message10) or UO.InJournal(Message16) or CheckTime + 150 < UO.Timer() or UO.Dead()
If UO.InJournal(Message9) then
NoOre = NoOre + 1
EndIf
Until UO.InJournal(Message11) or UO.InJournal(Message12) or UO.InJournal(Message13) or UO.InJournal(Message14) or UO.InJournal(Message15) or UO.InJournal(Message8) or UO.InJournal(Message9) or UO.InJournal(Message17) or UO.Dead()
Next
Next
EndSub
Sub Pause()
Var j
Var Time
NoOre = 0
For j = -100 to 0
uo.msg('Взлетаем через: '+str(j))
Wait(1000)
Next
EndSub
sub DropOre()
uo.UseObject(bank)
if uo.targeting() then
uo.canceltarget()
end if
DIM Ore[6]
Ore[0] = 0x19B7
Ore[1] = 0x19B8
Ore[2] = 0x19B9
Ore[3] = 0x19BA
Ore[4] = 0x136C
Ore[5] = 0x1F17
var a, quit
UO.SetReceivingContainer(Bank)
Wait(100)
For a = 0 to 5
quit = 0
Repeat
UO.FindType(Ore[a], -1, 'backpack')
If UO.GetQuantity('finditem') > 0 then
UO.Grab('150', 'finditem')
Wait(700)
Else
quit = 1
EndIf
Until quit == 1
Next
UO.UnSetReceivingContainer()
NoOre = 0
wait(2000)
GoToCave()
end sub
Sub GoToTile( OX, OY, N, S )
VAR myx, myy, MD, J
VAR Lx1, Ly1
VAR Lx2, Ly2
VAR Sx, Sy
VAR T
VAR Des = N
VAR MoveDelay = 100
J = 1
MD = MoveDelay * 1.5
myx = uo.getx()
myy = uo.gety()
MoveOnce( GetDir( uo.getx(), uo.gety(), ox, oy), MD, False)
Sx = 0
Sy = 0
Lx1 = uo.getx() / 2
Ly1 = uo.gety() / 2
Lx2 = Lx1 / 2
Ly2 = Ly1 / 2
T = UO.Timer()
If (GetDistance(ox, oy) <> N) OR ( (NOT S) AND GetDistance(ox, oy) > N ) Then
UO.Exec('exec PermResend')
EndIf
While ( (GetDistance(ox, oy) <> N) OR ((NOT S) and GetDistance(ox, oy) > N) ) and ( OX >= 0 ) and ( OY >= 0 )
If ( (UO.Timer() - T) * 15 > MoveDelay ) Then
T = UO.Timer()
Lx2 = Lx1
Ly2 = Ly1
Lx1 = myx
Ly1 = myy
myx = uo.getx()
myy = uo.gety()
endIf
MD=MoveDelay
If ((OX-uo.getx())*(OX-uo.getx())+(OY-uo.gety())*(OY-uo.gety())>0) Then
MD = MD * 3 / GetDistance( ox, oy )
EndIf
wait(MD)
If GetDistance( OX, OY ) > Des Then
MoveOnce(GetDir(uo.GetX(),uo.GetY(),ox,oy),MD,False)
Else
If S Then
If GetDistance(OX,OY)<Des Then
If GetDistance(OX,OY)<>0 Then
MoveOnce(GetDir(ox,oy,uo.GetX(),uo.GetY()),MD,False)
Else
MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False)
EndIf
EndIf
EndIf
EndIf
If GetDistance(OX,OY)<>Des Then
If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then
If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then
J=1
EndIf
J=J+1
UO.Resend()
Sx = uo.getx()
Sy = uo.gety()
Stun(ox,oy,J)
EndIf
EndIf
Wend
UO.Exec( 'terminate PermResend' )
endsub
;
; ============ MOVEONCE ===
; I?ioaao?a MoveOnce - oi?aaiea a ii?aaae?iio? noi?iio
; Iai?aaeaiey:
; Nenoaia iai?aaeaiee ii eeaaeoai Ioiiaaa
; 8 = 1 | 2 = -1
; 9 = 2 | 1 = -2
; 6 = 3 | 4 = -3
; 3 = 4 | 7 = -4
;
; Oaeay nenoaia iicaieyao n e?aeinou? iieo?aou iai?aaeaiea, ia?aoiia
; aaiiiio...
;
Sub MoveOnce( Dir, Del, Rev )
VAR Num
Var MoveNumber = 1
If Rev Then
Num = MoveNumber + 1
Else
Num = MoveNumber
EndIf
If ( Num > 0 ) and ( Dir <> 0 ) Then
If Dir == 1 Then
UO.Press( 38, Num, Del )
EndIf
If Dir == 2 Then
UO.Press( 33, Num, Del )
EndIf
If Dir == 3 Then
UO.Press( 39, Num, Del )
EndIf
If Dir == 4 Then
UO.Press( 34, Num, Del )
EndIf
If Dir == -1 Then
UO.Press( 40, Num-1, Del )
EndIf
If Dir == -2 Then
UO.Press( 35, Num, Del )
EndIf
If Dir == -3 Then
UO.Press( 37, Num, Del )
EndIf
If Dir == -4 Then
UO.Press( 36, Num, Del )
EndIf
If Rev Then
If Dir <> -1 Then
UO.Press( 40, 1, Del )
EndIf
EndIf
EndIf
endsub
;
; ============== GETDIR ===
; Ooieoey GetDir aica?auaao iai?aaeaiea, ii eioi?iio iaai eaoe
; e eii?aeiaoa
;
Sub GetDir( myx, myy, ox, oy )
VAR I, J
J = 0
VAR X = ox - myx
VAR Y = oy - myy
I = GetQDir( Abs(X), Abs(Y) )
If X >= 0 Then
If Y >= 0 Then
If I == 1 Then
J = -2
Else
If I == 2 Then
J = -1
Else
If I == 3 Then
J = 4
EndIf
EndIf
EndIf
Else
If I == 1 Then
J = 2
Else
If I == 2 Then
J = 3
Else
If I == 3 Then
J = 4
EndIf
EndIf
EndIf
EndIf
Else
If Y >= 0 Then
If I == 1 Then
J = -2
Else
If I == 2 Then
J = -3
Else
If I == 3 Then
J = -4
EndIf
EndIf
EndIf
Else
If I == 1 Then
J = 2
Else
If I == 2 Then
J = 1
Else
If I == 3 Then
J = -4
EndIf
EndIf
EndIf
EndIf
EndIf
RETURN J
endsub
;
; =============== GETQDIR ===
;
;
Sub GetQDir( x, y )
VAR Ep = 0.172
VAR J = 0
If X == 0 Then
J = 1
Else
If ( Y / X ) < Ep Then
J = 3
Else
If ( X / Y ) < Ep Then
J = 1
Else
J = 2
EndIf
EndIf
EndIf
RETURN J
endsub
;
; ============== GETDISTANCE ===
; Ooieoey GetDistance aica?auaao ?annoiyiea ai eii?aeiao
; (eae UO.GetDistance - ai iauaeoa)
;
; Ii?aio oae - iioiio ?oi o?ei iaoaiaoeeo
;
Sub GetDistance( X, Y )
VAR A, B, C
A = abs( X - UO.GetX() )
B = abs( Y - UO.GetY() )
If A > B Then
C = A
Else
C = B
EndIf
Return C
endsub
;
; ============= PERP ===
; Ooieoey Perp aica?auaao iai?aaeaiea, ia?iaiaeeoey?iia aaaa?iiiio
;
Sub Perp( Dir )
VAR D = Dir
If Dir == 1 Then
D = 3
EndIf
If Dir == 2 Then
D = 4
EndIf
If Dir == 3 Then
D = -1
EndIf
If Dir == 4 Then
D = -2
EndIf
If Dir == -1 Then
D = -3
EndIf
If Dir == -2 Then
D = -4
EndIf
If Dir == -3 Then
D = 1
EndIf
If Dir == -4 Then
D = 2
EndIf
RETURN D
endsub
;
; =============== STUN ===
; Iaoia i?aiyonoaee
;
Sub Stun( X, Y, N )
VAR I
VAR myx
VAR myy
VAR MoveDelay = 100
myx = uo.getx()
myy = uo.gety()
For I=1 to N
MoveOnce(perp(GetDir(myx,myy,x,y)),MoveDelay,False)
Next
Wait(MoveDelay)
UO.Resend()
If (myx==uo.getx()) and (myy==uo.gety()) Then
For I=1 to N
MoveOnce(-perp(GetDir(myx,myy,x,y)),MoveDelay,False)
Next
Wait(MoveDelay)
UO.Resend()
EndIf
If (myx==uo.getx()) and (myy==uo.gety()) Then
For I=1 to N
MoveOnce(-GetDir(myx,myy,x,y),MoveDelay,False)
Next
Wait(MoveDelay)
Stun(x,y,N)
EndIf
endsub
;
; ============= ABS ===
; Oae?aao ciae ieiona a io?eoaoaeuiuo ?eneao
;
Sub abs( a )
VAR b
If a < 0 Then
b = -a
Else
b = a
endif
return b
endsub
;
; ============== PERMRESEND ===
;
Sub PermResend()
Var Mn = 9
VAR MoveDelay = 100
Repeat
UO.Resend()
Wait( MoveDelay * Mn )
Until ( 1 > 2 )
Endsub
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 all')
;UO.Exec('exec autoload')
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
Sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(100)
until UO.InJournal('backpack')
end sub