Помогите пожалуйста со криптом на мининг....

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Jaguar1987
Posts: 13
Joined: 2009-02-11 15:21:59

Помогите пожалуйста со криптом на мининг....

Post by Jaguar1987 »

Имеется скрипт на мининг, задача данного скрипта дойти от дома до копалки, накопать инготов, далее дойти обратно до дома, переплавить руду в инги и раскидать по кучкам, которые прилочены около дома. Скрипт настроен так, что когда чар использует pickaxe скрипт направляет таргет на чара, то есть получается чар капает под себя, то есть на клетке на которой он находиться. Вопрос в следующем, как сделать так, чтобы герой копал не под себя а на 1 клетку вперед ? Уже все перепробовал, видать мозгов не хватает =( Заранее благодарен. Вот скрипт :


#При работе должна быть "отжата" кнопка NumLock
Var Pickaxe=0x0E85 # Pichaxe
Var Ore=0x19B9
Var Ingot=0x1BF2
Var Iron=0x0000
Var MoveDelay=150 # Промежуток между шагами
Var MoveNumber=1 # Количество шагов при смене дислокации
Var Ep=0.172 # Значение ширины угла хождения при определении направления. Если на пути встречаются сложные и широкие препятствия - увеличить. 0.172 - сбаланчированный.
Var FileName='c:\games\injection\mining51.dat' # В каждой строке файла тайл дерева

Sub Main()
UO.SetGlobal('process','no')
repeat
if UO.GetGlobal('process')=='no' then
GoToTile(2498,555,0,False)
GoToTile(2503,555,1,False)
GoToTile(2503,558,1,False)
UO.opendoor()
GoToTile(2503,562,1,False)
GoToTile(2516,562,1,False)
GoToTile(2516,538,1,False)
GoToTile(2529,538,1,False)
GoToTile(2529,508,1,False)
GoToTile(2525,508,1,False)
GoToTile(2525,501,1,False)
GoToTile(2552,501,1,False)
GoToTile(2552,505,1,False)
GoToTile(2558,505,1,False)
GoToTile(2558,493,1,False)
GoToTile(2565,485,1,False)
UO.DeleteJournal()
UO.Exec('exec Lumb')
endIf
Wait(3000)
until (1==0)
EndSub

Sub Lumb()
Var Tl,T,X,Y,Z,srl
var wei
UO.SetGlobal('process','yes')
Var F=File(FileName)
F.Open()
Beg:

DeleteJournal('no mine')
Tl=safecall F.Readln()
Tl=Trim(Tl)
If Tl=='File read error' Then
GoTo Ext
EndIf
T=GetNumb(Tl,0)
X=GetNumb(Tl,1)
Y=GetNumb(Tl,2)
Z=GetNumb(Tl,3)
UO.Print('next mine')
UO.Print('Tile '+Tl)
GoToTile(X,Y,1,False)
Repeat
uo.DeleteJournal()
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
While uo.Waiting()
Emil()
If UO.Dead() Then
Ress()
UO.WarMode( 0 )
GoToTile(X,Y,1,false)
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
Emil()
endif
WEND
repeat
Wait(1000)
If UO.Dead() Then
Ress()
UO.WarMode( 0 )
GoToTile(X,Y,1,False)
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
Emil()
endif
#if uo.count(Ore)>170 then
wei = ( UO.Str * 4 ) - 30
if UO.Weight > wei then
GoToTile(2564,493,1,False)
GoToTile(2558,493,1,False)
GoToTile(2558,505,1,False)
GoToTile(2552,505,1,False)
GoToTile(2552,501,1,False)
GoToTile(2525,501,1,False)
GoToTile(2525,508,1,False)
GoToTile(2529,508,1,False)
GoToTile(2529,538,1,False)
GoToTile(2516,538,1,False)
GoToTile(2516,562,1,False)
GoToTile(2503,562,1,False)
GoToTile(2503,560,1,False)
UO.opendoor()
GoToTile(2503,558,1,False)
GoToTile(2503,555,1,False)
GoToTile(2498,555,1,False)
wait(1000)
Plav()
wait(1000)
Exist()
wait(1000)
GoToTile(2498,555,1,False)
GoToTile(X,Y,1,False)
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
UO.UseObject(UO.ObjAtLayer('Rhand'))
endif
Until UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine")
Until UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine")
If UO.InJournal("There is no ore here to mine.") or UO.InJournal("There is no ore here to mine") then
Goto Beg
EndIf
Ext:
F.Close()
UO.SetGlobal('process','no')
EndSub

###############################################################
#Определение что есть ж)
###############################################################
sub Exist()
#############Iron
If UO.Count(0x1BF2, 0x0000) > 0 Then
ProDrop(0x1BF2, 0x0000)
EndIF
############Rasty
If UO.Count(0x1BF2,0x0750) > 0 Then
ProDrop(0x1BF2,0x0750)
EndIF
############Bronze
If UO.Count(0x1BF2, 0x0488) > 0 Then
ProDrop(0x1BF2, 0x0488)
EndIF
############Old Copper
If UO.Count(0x1BF2, 0x0949) > 0 Then
ProDrop(0x1BF2, 0x0949)
EndIF
############Dull Copper
If UO.Count(0x1BF2, 0x060A) > 0 Then
ProDrop(0x1BF2, 0x060A)
EndIF
############Copper
If UO.Count(0x1BF2, 0x0641) > 0 Then
ProDrop(0x1BF2, 0x0641)
EndIF
############Pirit
If UO.Count(0x1BF2, 0x09EE) > 0 Then
ProDrop(0x1BF2, 0x09EE)
EndIF
############Silver
If UO.Count(0x1BF8, 0x0482) > 0 Then
ProDrop(0x1BF8, 0x0482)
EndIF
############Gold
If UO.Count(0x1BEC, 0x0000) > 0 Then
ProDrop(0x1BEC, 0x0000)
EndIF
############Shadow
If UO.Count(0x1BF2, 0x0770) > 0 Then
ProDrop(0x1BF2, 0x0770)
EndIF
############Verit
If UO.Count(0x1BF2, 0x0947) > 0 Then
ProDrop(0x1BF2, 0x0947)
EndIF
############Agapit
If UO.Count(0x1BF2, 0x0400) > 0 Then
ProDrop(0x1BF2, 0x0400)
EndIF
############Blood
If UO.Count(0x1BF2, 0x04C2) > 0 Then
ProDrop(0x1BF2, 0x04C2)
EndIF
############Azurit
If UO.Count(0x1BF2, 0x04DF) > 0 Then
ProDrop(0x1BF2, 0x04DF)
EndIF
############Mithril ore
If UO.Count(0x19B9, 0x052D) > 0 Then
ProDrop(0x19B9, 0x052D)
EndIF
############Valorite ore
If UO.Count(0x19B9, 0x0515) > 0 Then
ProDrop(0x19B9, 0x0515)
EndIF
############Winter ore
If UO.Count(0x19B9, 0x0481) > 0 Then
ProDrop(0x19B9, 0x0481)
EndIF
############Black Rock Ore
If UO.Count(0x19B9,0x0455) > 0 Then
ProDrop(0x19B9,0x0455)
EndIF
############Ambers
If UO.Count(0x0F25,0x0000) > 0 Then
ProDrop(0x0F25,0x0000)
EndIF
end sub
###############################################################
#Умный дроп
###############################################################
sub ProDrop(T,C)
UO.FindType(T,C,'backpack')
Var b = UO.GetSerial("finditem")
UO.FindType(T,C,'ground')
Var g = UO.GetSerial("finditem")
UO.MoveItem(b, "0", g,str(uo.getx(g)),str(uo.gety(g)),"0")
Wait(500)
If Uo.Count(T,C) > 0 Then
Clear(T,C)
endIF
end sub
###############################################################
#Конец умного дропа
###############################################################
###############################################################
#Умный дроп 2
###############################################################
sub ProDrop2(T,C)
UO.FindType(T,C,'backpack')
If C < 0 Then
C = UO.GetColor('finditem')
endif
Var b = UO.GetSerial('finditem')
UO.FindType(T,C,'ground')
Var g = UO.GetSerial('finditem')
UO.MoveItem(b, '0', g,str(uo.getx(g)),str(uo.gety(g)),'0')
Wait(500)
If Uo.Count(T,C) > 0 Then
Clear(T,C)
endIF
end sub
###############################################################
#Конец умного дропа 2
###############################################################
Sub GetNumb(C,I)
var J,T,K
J=0
K=1
While K>0
J=J+1
If (Mid(C,J,1)==' ') Or (J>=Len(C)-1) Then
If I==0 Then
T=Val(Left(C,J))
Else
T=GetNumb(Right(C,Len(C)-J-1),I-1)
EndIf
K=0
EndIf
wend
UO.Print(T)
return T
endsub

Sub Perp(Dir)
Var D
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

Sub MoveOnce(Dir,Del,Rev)
Var Num
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

Sub GetQDir(x,y)
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

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

sub abs(a)
Var b
If a<0 Then
b=-a
Else
b=a
endif
return b
endsub

Sub PermResend()
Var Mn=4
Repeat
# UO.Resend()
Wait(MoveDelay*Mn)
Until (1>2)
EndSub

sub max(A,B)
Var C
If A>B Then
C=A
Else
C=B
EndIf
Return C
EndSub

sub GetDistance(X,Y)
return max(abs(X-uo.getx()),abs(Y-uo.gety()))
endsub

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
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()
# UO.Print(Str(uo.getx())+' '+Str(uo.gety())+' '+Str(ox)+' '+Str(oy)+' '+Str(GetDir(uo.getx(),uo.gety(),ox,oy))+' '+Str(T))
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

Sub Stun(X,Y,N)
Var I
Var myx
Var myy
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

Sub DeleteJournal(What)
Var T,J
J=False
If UO.InJournal(What) Then
J=True
UO.DeleteJournal()
EndIf
RETURN J
EndSub

sub Plav()
UO.Set('finddistance','2')
UO.FindType(0x0FB1,-1,'ground')
If UO.FindCount() <> 0 Then
repeat
UO.FindType(0x19B9)
IF UO.FindCount() > 0 Then
If UO.GetColor('finditem') == '0x0455' Then
ProDrop(0x19B9,0x0455)
else
if UO.GetColor('finditem') == '0x052D' Then
ProDrop(0x19B9, 0x052D)
else
if UO.GetColor('finditem') == '0x0515' Then
ProDrop(0x19B9, 0x0515)
else
if UO.GetColor('finditem') == '0x0481' Then
ProDrop(0x19B9, 0x0481)
else
UO.UseObject('finditem')
wait(1200)
end If
end if
end if
end if
EndIf
until UO.FindCount() == 0
UO.Print("-=-= END =-=-")
else
UO.Print("Forge not found")
endIf
end sub

sub count()
UO.Print(str(UO.Count(ore)))
end sub

Sub BS()
#0x1B7B - Metal shield
#0x13BF - chainmail tunic
#0x1415 - грудина
while true
UO.FindType(0x1415, -1,'ground')
wait(2000)
If UO.FindCount() > 0 Then
uo.waittargetobject('finditem')
Uo.UseType(0x0FBB)
wait(5000)
endif
WEND
end sub

sub Emil()
IF (UO.GetGraphic(UO.ObjAtLayer("Rhand"))) <> '0x0E85' Then
If UO.Count('0x0E85') > 0 Then
UO.UseType('0x0E85')
endif
else
UO.UseObject(UO.ObjAtLayer('Rhand'))
EndIf
wait(2000)
end sub

sub Clear(T,C)
Var Count = UO.Count(T,C)
UO.FindType(T,C,'backpack')
Var b = UO.GetSerial("finditem")
UO.FindType(T,C,'ground')
Var g = UO.GetSerial("finditem")
Wait(500)
UO.MoveItem(b, "0", g,str(uo.getx(g)),str(uo.gety(g)),"0")
Wait(500)
If UO.Count(T,C) == Count Then
If (UO.Count('finditem')+Count) < 60000 Then
uo.ignore('finditem')
ProDrop(T,C)
endIf
endIf
end sub

sub Ress()
While UO.Dead()
wait(1000)
UO.WarMode( 1 )
WEND
end sub

sub Count()
#UO.Print('Iron : '+Str(UO.Count(0x19B9, 0x0000)))
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Bronze : '+Str(UO.Count(0x19B9, 0x0488)))
#UO.Print('Rasty : '+Str(UO.Count(0x19B9, 0x0750)))
#UO.Print('-=-=-=-=-=-=-=-')
#wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Old Copper : '+Str(UO.Count(0x19B9, 0x0949)))
#UO.Print('Dull Copper : '+Str(UO.Count(0x19B9, 0x060A)))
#UO.Print('Copper : '+Str(UO.Count(0x19B9, 0x0641)))
#UO.Print('-=-=-=-=-=-=-=-')
#wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Pirit : '+Str(UO.Count(0x19B9, 0x09EE)))
#UO.Print('Silver : '+Str(UO.Count(0x19B9, 0x0482)))
#UO.Print('Shadow : '+Str(UO.Count(0x19B9, 0x0770)))
#UO.Print('Gold : '+Str(UO.Count(0x19B9, 0x04AA)))
#UO.Print('-=-=-=-=-=-=-=-')
#wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Verit : '+Str(UO.Count(0x19B9, 0x0947)))
#UO.Print('Agapit : '+Str(UO.Count(0x19B9, 0x0400)))
#UO.Print('Blood : '+Str(UO.Count(0x19B9, 0x04C2)))
#UO.Print('Azurit : '+Str(UO.Count(0x19B9, 0x04DF)))
#UO.Print('-=-=-=-=-=-=-=-')
Wait(4000)
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('Mithril : '+Str(UO.Count(0x19B9, 0x052D)))
#UO.Print('Valorite : '+Str(UO.Count(0x19B9, 0x0515)))
#UO.Print('Winter : '+Str(UO.Count(0x19B9, 0x0481)))
#UO.Print('-=-=-=-=-=-=-=-')
#UO.Print('BlackRock : '+Str(UO.Count(0x19B9, 0x0455)))
#UO.Print('-=-=-=-=-=-=-=-')
end sub

sub play()
Var Co = 0
While true
If UO.Life < UO.Str then
If Co < 10 then
uo.playwav("D:\cap000.wav")
wait(1500)
Co = Co + 1
else
wait(60000)
Co = 0
endif
end if
wait(1000)
wend

sub Lot()
repeat
UO.FindType(0x19B9,-1,'ground')
IF UO.FindCount() > 0 Then
Uo.Grab(0,'finditem')
wait(1000)
end if
until UO.FindCount() == 0
end sub
Jaguar1987
Posts: 13
Joined: 2009-02-11 15:21:59

Post by Jaguar1987 »

Я знаю что там совсем немного нужно поменять, но просто мозг не доходит что именно (
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

"Немного" завист от многих факторов. Один из них, потыкай командой ,infotile в пещере, если первая цифра будет одинаковой, тогда "немного", если нет тогда много.

И зачем такой изврат то? Чем копать под себя не устраивает?
Jaguar1987
Posts: 13
Joined: 2009-02-11 15:21:59

Post by Jaguar1987 »

Копать под себя устраивает еще как ) Просто администрация сервера пофиксила это ( Теперь надо макрос переписывать...
Jaguar1987
Posts: 13
Joined: 2009-02-11 15:21:59

Post by Jaguar1987 »

Да уж, первая цифра в пещере не одинаковая, а что там надо поменять чтобы он на клетку впереди от себя капал ? В 2 х словах объясните пжлст...
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Пофиксила прицел на себя? А если в пак или статус целить?
Попробуй такой вариант:

Code: Select all

sub zzz()
UO.WaitTargetTile('0',STR(UO.GetX()),STR(UO.GetY()),STR(UO.GetZ()))
UO.UseType('тут поставь тип своей кирки')
end sub

походи по шахте, попробуй в разных местах, будет копать или нет?
Jaguar1987
Posts: 13
Joined: 2009-02-11 15:21:59

Post by Jaguar1987 »

Сейчас попробую...
Jaguar1987
Posts: 13
Joined: 2009-02-11 15:21:59

Post by Jaguar1987 »

Вообщем ситуация такая, макрос говорит что cannot mine that, а когда просто тыкаешь 2 раза на кирку и потом на клетку под себя он роет нормально =-( Как бы этот ньюанс обойти то ?
Jaguar1987
Posts: 13
Joined: 2009-02-11 15:21:59

Post by Jaguar1987 »

Целить ни в пак ни в статус не помогает =(
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Вот так можно:

Code: Select all

sub DigItStay(MaxWeight,MaxDistance,BaseX,BaseY)
   VAR x,y,TempX,TempY
   VAR Last=0,LastTimer, ContFlag=1
   VAR MaxTimer=160,Count=1
   VAR TileB=1339
   VAR TileE=1359
   Var Tile

   For x=-MaxDistance to MaxDistance
      For y=-MaxDistance to MaxDistance

         Tile=TileB
         While NOT UO.PrivateGetTile(UO.GetX()+x,UO.GetY()+y,-1,Tile,Tile) AND Tile<TileE
            Tile=Tile+1
         Wend

         If Tile<TileE Then
            Repeat
               ToHide()
               IF UO.InJournal('cliloc# 0xA5F5') Then
                  TempX=UO.GetX()
                  TempY=UO.GetY()
                  KillRat()
                  SuperWalk(TempX,TempY,"")
               Endif

               CheckLag() ; deleting journal
            
               UO.WaitTargetTile(Str(Tile),STR(UO.GetX()+x),STR(UO.GetY()+y),STR(UO.GetZ()))
               UO.UseType('0x0E86')
               LastTimer=UO.Timer()

               Repeat
                  wait(200)
               until UO.InJournal("Iguana|cliloc# 0x5DE4|Shining|Blood|silver|Spectral|Stars|cliloc# 0x5DE5|cliloc# 0x5DE3|cliloc# 0x5DE0|cliloc# 0xAD03|cliloc# 0xAD00|cliloc# 0xA867|cliloc# 0xAD02") OR LastTimer+MaxTimer<UO.Timer()

               If UO.GetGlobal('PausedScript')=='On' Then
                  UO.Print("+++ Script paused! +++")
                  UO.Print("+++ Script paused! +++")
                  TempX=UO.GetX()
                  TempY=UO.GetY()
                  While UO.GetGlobal('PausedScript')=='On'
                     wait(500)
                  Wend
                  UO.Print("+++ Script continued! +++")
                  UO.Print("+++ Script continued! +++")
                  SuperWalk(TempX,TempY,"")
               Endif

               If UO.Life<UO.Str then
                  TempX=UO.GetX()
                  TempY=UO.GetY()
                  KillRat()
                  SuperWalk(TempX,TempY,"")
                  ToHide()
               Endif


               If UO.Weight>=MaxWeight then
                  TempX=UO.GetX()
                  TempY=UO.GetY()
                  KillRat()
                  SuperWalk(TempX,TempY,"")
                  GoSmelt()
               Endif
            Until UO.InJournal("cliloc# 0xAD00|cliloc# 0xA867|cliloc# 0xAD02")
         Endif
      Next
   Next
end sub

Сначала функция приватгеттайл простукивает тип тайла. Потом этот тип используем.
Не каждая версия инжи работает с этой функцией. Надо предварительно проверить.
Jaguar1987
Posts: 13
Joined: 2009-02-11 15:21:59

Post by Jaguar1987 »

То есть мне это отрывок прямо в скрипт вставлять ?
Savage
Expert!
Posts: 1205
Joined: 2004-04-04 11:13:54
Location: Балаково, Саратовская обл.
Contact:

Post by Savage »

Неа. Так работать не будет твой скрипт. Можешь этот отрывок изучить как наглядное пособие решения твоей проблемы.
Jaguar1987
Posts: 13
Joined: 2009-02-11 15:21:59

Post by Jaguar1987 »

Ладно, спасибо огромное за помощь ) Признателен )
Jaguar1987
Posts: 13
Joined: 2009-02-11 15:21:59

Post by Jaguar1987 »

Savage wrote:Вот так можно:

Code: Select all

sub DigItStay(MaxWeight,MaxDistance,BaseX,BaseY)
   VAR x,y,TempX,TempY
   VAR Last=0,LastTimer, ContFlag=1
   VAR MaxTimer=160,Count=1
   VAR TileB=1339
   VAR TileE=1359
   Var Tile

   For x=-MaxDistance to MaxDistance
      For y=-MaxDistance to MaxDistance

         Tile=TileB
         While NOT UO.PrivateGetTile(UO.GetX()+x,UO.GetY()+y,-1,Tile,Tile) AND Tile<TileE
            Tile=Tile+1
         Wend

         If Tile<TileE Then
            Repeat
               ToHide()
               IF UO.InJournal('cliloc# 0xA5F5') Then
                  TempX=UO.GetX()
                  TempY=UO.GetY()
                  KillRat()
                  SuperWalk(TempX,TempY,"")
               Endif

               CheckLag() ; deleting journal
            
               UO.WaitTargetTile(Str(Tile),STR(UO.GetX()+x),STR(UO.GetY()+y),STR(UO.GetZ()))
               UO.UseType('0x0E86')
               LastTimer=UO.Timer()

               Repeat
                  wait(200)
               until UO.InJournal("Iguana|cliloc# 0x5DE4|Shining|Blood|silver|Spectral|Stars|cliloc# 0x5DE5|cliloc# 0x5DE3|cliloc# 0x5DE0|cliloc# 0xAD03|cliloc# 0xAD00|cliloc# 0xA867|cliloc# 0xAD02") OR LastTimer+MaxTimer<UO.Timer()

               If UO.GetGlobal('PausedScript')=='On' Then
                  UO.Print("+++ Script paused! +++")
                  UO.Print("+++ Script paused! +++")
                  TempX=UO.GetX()
                  TempY=UO.GetY()
                  While UO.GetGlobal('PausedScript')=='On'
                     wait(500)
                  Wend
                  UO.Print("+++ Script continued! +++")
                  UO.Print("+++ Script continued! +++")
                  SuperWalk(TempX,TempY,"")
               Endif

               If UO.Life<UO.Str then
                  TempX=UO.GetX()
                  TempY=UO.GetY()
                  KillRat()
                  SuperWalk(TempX,TempY,"")
                  ToHide()
               Endif


               If UO.Weight>=MaxWeight then
                  TempX=UO.GetX()
                  TempY=UO.GetY()
                  KillRat()
                  SuperWalk(TempX,TempY,"")
                  GoSmelt()
               Endif
            Until UO.InJournal("cliloc# 0xAD00|cliloc# 0xA867|cliloc# 0xAD02")
         Endif
      Next
   Next
end sub

Сначала функция приватгеттайл простукивает тип тайла. Потом этот тип используем.
Не каждая версия инжи работает с этой функцией. Надо предварительно проверить.




Может кто подскажет куда именно этот отрывок в макросе вставлять ?
Post Reply