помогите плзз зделать

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Mguai
Posts: 83
Joined: 2004-06-18 09:03:31
Contact:

помогите плзз зделать

Post by Mguai »

как в этом скрипте зделать чтоб при 1000 логов летел дамой по руне а потом кидал логи в сундук делая два шага ! а потом назад от куда начинал рубить !!

Code: Select all

#При работе должна быть "отжата" кнопка NumLock 
Var Hatchet1='0x0f47' # Типы 
Var Hatchet2='0x0F47' # топоров 0x0F47
Var MoveDelay=1000 # Промежуток между шагами 
Var MoveNumber=1  # Количество шагов при смене дислокации 
Var Ep=0.172 # Значение ширины угла хождения при определении направления. Если на пути встречаются сложные и широкие 

#препятствия - увеличить. 0.172 - сбаланчированный. 
Var FileName='D:\DC++\Downloads\Injection\6.txt' # В каждой строке файла тайл дерева взятый командой ,infotile 
;Вид ТхТ файла 
;Пример: 
;1234 123 123 35 
;1234 525 2552 25 
;..... и тд и тп. 

Sub Main() 
UO.DeleteJournal() 
UO.Exec('exec Lumb') 
EndSub 

Sub Lumb() 
Var Tl,T,X,Y,Z 
UO.SetGlobal('process','yes') 
Var F=File(FileName) 
F.Open() 
Beg: 
DeleteJournal('no logs') 
DeleteJournal('immune to your') 
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('Chop hext tree') 
UO.Print('Tile '+Tl) 
GoToTile(X,Y,1,False) 
Repeat 
 DeleteJournal('logs in your pack') 
 DeleteJournal('fail to produce') 
 EquipHatchet() 
 UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z)) 
 UO.UseObject(UO.ObjAtLayer('Lhand')) 
 While not (UO.InJournal('logs in your pack') or UO.InJournal('fail to produce') or UO.InJournal('no logs') or UO.InJournal('heavy') or UO.InJournal('immune to your') or UO.InJournal('foliage yields')) 
  Wait(100) 
 Wend 
 UO.Print('There are '+Str(UO.Count('0x1BDD'))+' logs in the pack') 
Until UO.InJournal('no logs') or UO.InJournal('heavy') or UO.InJournal('immune to your') or UO.InJournal('foliage yields') 
If UO.InJournal('no logs') or UO.InJournal('immune to your') or UO.InJournal('foliage yields') Then 
 UO.Print('There are no logs here to chop') 
 GoTo Beg 
EndIf 
Ext: 
F.Close() 
UO.SetGlobal('process','no') 
EndSub 

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 EquipHatchet() 
Var E=UO.ObjAtLayer('Lhand') 
E=UO.GetGraphic(E) 
Var J=True 
If (E<>Hatchet1) and (E<>Hatchet2) Then 
 If UO.Count(Hatchet1)>0 Then 
  UO.FindType(Hatchet1,'-1','backpack') 
 Else 
  If UO.Count(Hatchet2)>0 Then 
  UO.FindType(Hatchet2,'-1','backpack') 
  Else 
  UO.SetGlobal('process','no') 
  J=False 
  EndIf 
 EndIf 
 UO.UseObject('finditem') 
EndIf 
Wait(3200) 
RETURN J 
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=9 
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 Stealth() 
if uo.hidden()< 1 then 
uo.useskill('Stealth') 
wait(3000) 
endif 
endsub 

sub infologs() 
    UO.Print('There are '+Str(UO.Count('0x1BDD','0x0000'))+' logs in the pack')
endsub 
:!:
Post Reply