Page 1 of 1

Помогите, не видит где копать.

Posted: 2006-11-08 14:22:25
by Toolmate

Code: Select all

######################################################### ###
#Авторы: 
### -Автор скрипта:"Аskaneli". 
### -Редактировал и дополнял:"BETEPAH". 
### -Идеи и редкатирование скрипта:"cOoler". 
### -За помощь в доработке скрипта спасибо:"Legio". 
### Спасибо всем кто каким либо образом помогал в 
### разработке этого скрипта. 
#########################################################
var FileName=('C:\mining.dat') ## 
### 
var TryHiding=1 ## 1 - Ïåðåä òåì êàê êîïàòü ðóäó, áóäåò ïûòàòüñÿ óéòè â õàéä, 
### 0 - íå áóäåò . 
### 
var TryRecall=1 ## 1 - Ïîñëå òîãî êàê ñîáåðåò äîñòàòî÷íûé âåñ, áóäåò ïûòàòüñÿ 
### ðåêîëèòüñÿ äîìîé, 
### ñêëàäûâàòü ðóäó â ñóíäóê è ðåêîëèòüñÿ îáðàòíî , 0 - íå áóäåò.(DropOnVip 
### äîëæíî áûòü 0)
var OreQty=440 ## - Ìàêñèìàëüíûé âåñ, äîáûâ êîòîðûé íàäî ðåêîëèòüñÿ äîìîé. 
### (ñåé÷àñ 600 ñòîóíîâ) 
var DangerousTime=50000 ## - Âðåìÿ â ñåêóíäàõ êîòîðîå ÷àð áóäåò æäàòü(ïîñëå 
### ðåêîëà) ïîêà óéäåò ÏÊ èëè Ýëåìåíò.(ñåé÷àñ 50 ñåêóíä) 
### 
var CycleScript=0 ## 1 - Ñêðèïò íå îòêëþ÷àåòñÿ ïîñëå ðåêîëà îò àòàêóþùåãî, 0 - 
### îòêëþ÷àåòñÿè çàêðûâàåò UO. 
###
var DropX=1815 ## - Êîîðäèíàòà ïåðåä ñóíäóêîì ïî X. 
### 
var DropY=849 ## - Êîîðäèíàòà ïåðåä ñóíäóêîì ïî Y. 
################################################################################
var Pickaxe = 0x0e86
var Chest = 0x40036042
sub GoMining()
RecallToOre() 
uo.Exec('exec Mining') 
end sub 
sub Mining() 
var i=0,j=0,k=0,r=0,q=0,ii,jj,f 
var TopX=324,TopY=65 
dim OreX[5000],OreY[5000],OreT[5000] 
dim OreTile[22] 
var flag=0,OreCount=0,clicks=0,flag2=0 
#################### 
### Ãðàôèêà ðóäû ### 
#################### 
OreTile[0]=1340 
OreTile[1]=1343 
OreTile[2]=1354 
OreTile[3]=1359 
OreTile[4]=1358 
OreTile[5]=1357 
OreTile[6]=1352 
OreTile[7]=1341 
OreTile[8]=1363 
OreTile[9]=1359 
OreTile[10]=1339 
OreTile[11]=1354 
OreTile[12]=1386 
OreTile[13]=1353 
OreTile[14]=1342 
OreTile[15]=1347 
OreTile[16]=1344 
OreTile[17]=1349 
OreTile[18]=2278 
OreTile[19]=2275 
OreTile[20]=1351 
OreTile[21]=0

uo.FilterSpeech('on') 
uo.FilterSpeech('add', 'Where do you want to use the pickaxe?') 

##################################### 
### Çàãðóæàåì êîîðäèíàòû èç ôàéëà ### 
##################################### 
uo.Print('Zagrugaem koordinati...') 
f=file(FileName) 
f.Open() 
OreCount=safe call f.ReadNumber() 
for i=1 to OreCount 
OreT[i]=safe call f.ReadNumber() 
OreX[i]=safe call f.ReadNumber() 
OreY[i]=safe call f.ReadNumber() 
next 
f.Close()
###################################### 
### Õîäèì ïî ñîáðàííûì êîîðäèíàòàì ### 
###################################### 
while 1==1 
if OreCount>0 then 
for i=1 to OreCount 

if TryRecall==1 and uo.Weight>OreQty then 
ToRecall() 
i=1 
end if

j=i*2-1 
if j>OreCount then 
j=2*(OreCount-i+1) 
end if 
flag=GotoXY(OreX[j],OreY[j],1) 
if TryHiding==1 then 
ToHide() 
end if 
if flag==1 then 
GetOre(str(OreT[j]),str(OreX[j]),str(OreY[j]),str(uo.GetZ())) 
end if 
next 
end if 
wend 
end sub 

sub GetOre(Type,X,Y,Z) 
var i 
uo.Print('kopaem...') 
for i=1 to 20
wait(200) 
uo.DeleteJournal() 
CheckLag()
wait(100) 
uo.WaitTargetTile(Type,X,Y,Z) 
uo.Usetype(Pickaxe) 
wait(500)  
if WaitForChange()==1 then 
return 1 
end if 
next 
return 0 
end sub 

sub WaitForChange() 
var Text1='cliloc# 0xAD03' 
var Text2='cliloc# 0xAD00' 
var Text3="You can't reach this." 
var Text4="cliloc# 0xA2DE" 
var Text5="You can't do much in your current state." 
var Text6="You have no line of sight to that location" 
var Text7="You can't see the target"  
var Text8="Try mining in rock."
var mess 
for var i=0 to 200 
mess=uo.Journal(0) 
if uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 or uo.Journal(0)==Text6 or uo.Journal(0)==Text7 or uo.Journal(0)==Text8 then 
return 1 
end if 
if uo.Journal(0)==Text1 then 
wait(1000) 
return 0 
end if 
if mess[0]=='Y' and mess[1]=='o' and mess[2]=='u' and mess[4]=='p' and mess[5] =='u' and mess[6]=='t' then 
return 0 
end if 
wait(50) 
next 
return 0 
end sub 

sub Open(Container) 
uo.DeleteJournal() 
uo.UseObject(Container) 
repeat 
wait(500) 
until uo.InJournal('Contains') 
end sub 

sub GotoXY(x,y,r) 
var lastX=0,lastY=0,i=0 
while Numb(y-uo.GetY())>r 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
if (y-uo.GetY())>r then 
LastX=uo.GetX() 
LastY=uo.GetY() 
for i=0 to 2 
uo.Press(35) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
if LastY==uo.GetY() then 
for i=0 to 2 
uo.Press(37) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
if LastY==uo.GetY() then 
for i=0 to 2 
uo.Press(40) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
if LastX==uo.GetX() and LastY==uo.GetY() then 
for i=0 to 5 
uo.Press(38) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
end if 
if (uo.GetY()-y)>r then 
LastY=uo.GetY() 
for i=0 to 2 
uo.Press(33) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
if LastY==uo.GetY() then 
for i=0 to 2 
uo.Press(39) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
if LastY==uo.GetY() then 
for i=0 to 2 
uo.Press(38) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
if LastX==uo.GetX() and LastY==uo.GetY() then 
for i=0 to 5 
uo.Press(40) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
end if 
wend 
while Numb(x-uo.GetX())>r 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
if (x-uo.GetX())>r then 
LastX=uo.GetX() 
LastY=uo.GetY() 
for i=0 to 2 
uo.Press(34) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
if LastX==uo.GetX() then 
for i=0 to 2 
uo.Press(40) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
if LastX==uo.GetX() then 
for i=0 to 2 
uo.Press(39) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
if LastX==uo.GetX() and LastY==uo.GetY() then 
for i=0 to 5 
uo.Press(37) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
end if 
if (uo.GetX()-x)>r then 
LastX=uo.GetX() 
for i=0 to 2 
uo.Press(36) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
if LastX==uo.GetX() then 
for i=0 to 2 
uo.Press(38) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
if LastX==uo.GetX() then 
for i=0 to 2 
uo.Press(37) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
if LastX==uo.GetX() and LastY==uo.GetY() then 
for i=0 to 5 
uo.Press(39) 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
end if 
next 
end if 
end if 
wend 
if Numb(x-uo.GetX())<=r and Numb(y-uo.GetY())<=r then 
return 1 
else 
return 0  
end if 
return 0  
end sub 

sub Numb(num) 
if num>=0 then 
return num 
else 
return num*(-1) 
end if 
end sub

sub ToHide() 
if not uo.Hidden() then
uo.Print('Hide..')
uo.useskill('Hiding')
endif 
end sub 

sub ToRecall() 
RecallToHome() 
DropOre() 
RecallToOre() 
end sub 

sub RecallToHome() 
GotoXY(1810,850,0)
GotoXY(1815,849,0)
end sub 

sub RecallToOre() 
GotoXY(1810,850,0)
GotoXY(1807,851,0)
end sub 

sub DropOre() 
uo.useobject(Chest)
CheckLag()
repeat
  wait(500)
  uo.findtype('0x19b9')
  uo.moveitem('finditem','0',Chest)
  wait(700)
until not uo.count('0x19b9')
end sub

sub DropOnVip() 
Walk(DropX,DropY,'') 
DropOre() 
end sub
 
sub Go(dir,key,walkwait) 
var X,Y,OldDir 
X=uo.GetX() 
Y=uo.GetY() 
OldDir=uo.GetDir() 
if uo.GetDir()<>dir then 
uo.Press(key) 
wait(walkwait) 
if uo.GetDir()<>dir then 
end if 
end if 
uo.Press(key) 
wait(walkwait) 
if X==uo.GetX() and Y==uo.GetY() then 
end if 
if X==uo.GetX() and Y==uo.GetY() and OldDir<>uo.GetDir() then 
uo.Press(key) 
wait(walkwait) 
end if 
if X==uo.GetX() and Y==uo.GetY() then 
end if 
if X==uo.GetX() and Y==uo.GetY() then 
return -1 
else 
return 1 
end if 
end sub

sub Time() 
var Date,nTime,uTime,i 
uTime=str(uo.Time()) 
nTime='' 
for i=0 to Len(uTime) 
nTime=uTime[Len(uTime)-i]+nTime 
if (i==2) or (i==4) then 
nTime=':'+nTime 
end if 
next 
uTime=str(uo.Date()) 
Date='' 
for i=0 to Len(uTime) 
Date=uTime[Len(uTime)-i]+Date 
if (i==2) or (i==4) then 
Date='.'+Date 
end if 
next 
uTime=nTime+' @ '+Date 
return uTime 
end sub 

sub Terminate() 
uo.Exec('terminate Mining') 
end sub 

sub TerminateAll() 
uo.Exec('terminate Mining') 
uo.Exec('terminate ControlOfDanger') 
uo.Exec('terminate Reconnect') 
uo.Exec('terminate RecallRune') 
uo.Exec('terminate DropOre') 
uo.Exec('terminate DangerWait') 
uo.Exec('terminate DangerWait') 
end sub 

Sub CheckLag() 
   UO.DeleteJournal() 
   UO.Click('backpack') 
   repeat 
      wait(500) 
   until UO.InJournal('cliloc# 0x9ED5') 
end sub

sub GoCorpse() 
var Elemental='0x4000466F' 
Walk(0,0,Elemental) 
end sub 

sub Walk(X,Y,Target) 
var Targeting='' 
var Result 
var DX,DY,GLX,GLY 
var DirW=0 
var exit=0 
while exit<>1 
if Target<>'' then 
Targeting=Target 
DX=uo.GetX(Target)-uo.GetX() 
DY=uo.GetY(Target)-uo.GetY() 
if uo.GetDistance(Target)<2 then 
exit=1 
end if 
else 
DX=X-uo.GetX() 
DY=Y-uo.GetY() 
GLX=DX 
GLY=DY 
if DX==0 and DY==0 then 
exit=1 
end if 
end if 
if exit==0 then 
if DX>0 and DY>0 then 
DirW=9 
end if 
if DX>0 and DY<0 then 
DirW=7 
end if 
if DX<0 and DY>0 then 
DirW=3 
end if 
if DX<0 and DY<0 then 
DirW=5 
end if 
if DX<>0 and DY==0 then 
if DX>0 then 
DirW=8 
else 
DirW=4 
end if 
end if 
if DX==0 and DY<>0 then 
if DY>0 then 
DirW=2 
else 
DirW=6 
end if 
end if 
Result=Go(DirW) 
if Result==0 then 
Result=Go(DirW-2) 
if Result==0 then 
Result=Go(DirW+2) 
end if 
end if 
end if 
wend 
end sub 

sub Go(dir) 
var WalkWait=100 
var Targeting='' 
var X,Y,GLX,GLY 
var check=1 
var StartingDir=uo.GetDir() 
X=uo.GetX() 
Y=uo.GetY() 
dim MoveKey[12] 
MoveKey[0]=34 
MoveKey[1]=40 
MoveKey[2]=35 
MoveKey[3]=37 
MoveKey[4]=36 
MoveKey[5]=38 
MoveKey[6]=33 
MoveKey[7]=39 
MoveKey[8]=34 
MoveKey[9]=40 
MoveKey[10]=35 
MoveKey[11]=37 
dim StartDir[12] 
StartDir[0]=2 
StartDir[1]=3 
StartDir[2]=4 
StartDir[3]=5 
StartDir[4]=6 
StartDir[5]=7 
StartDir[6]=0 
StartDir[7]=1 
StartDir[8]=2 
StartDir[9]=3 
StartDir[10]=4 
StartDir[11]=5 
while uo.GetDir()<>StartDir[dir] 
uo.Press(MoveKey[dir]) 
wait(WalkWait) 
if uo.GetDir()==StartingDir then 
CheckLag() 
end if 
if (Targeting<>'' and uo.GetDistance(Targeting)<2) or (GLX==0 and GLY==0) then 
return 1 
end if 
wend 
uo.Press(MoveKey[dir]) 
wait(WalkWait) 
if X==uo.GetX() and Y==uo.GetY() then 
CheckLag() 
uo.Press(MoveKey[dir]) 
wait(WalkWait) 
end if 
if X==uo.GetX() and Y==uo.GetY() then 
return 0 
else 
return 1 
end if 
end sub
Вобщем макр запускается, идет к точнке копания и пишет типо "Где копать?". На этом он запинается и ничего дальше не делатет. В чем может быть проблема?
Сервер на RunUO. Вроде бы все, что нужно заменил...

Posted: 2006-11-08 15:56:05
by Scripts Writer
1. Никогда не выкладывай скрипты из редактора инжекта
2. Открою тебе тайну - в файле должны быть координаты которых у тебя нет видимо.

Posted: 2006-11-08 19:21:19
by Toolmate
1. На будущее учту.
2. Они там есть, я сам вставлял... выглядит так:

Code: Select all

5
1340 1812 849
1343 1810 848
1341 1808 847
1343 1805 848
1341 1805 844
Естественно на диске C: в файле под названием mining с расширением .dat

Posted: 2006-11-09 10:01:42
by Askaneli
You Must Die wrote:1. Никогда не выкладывай скрипты из редактора инжекта
2. Открою тебе тайну - в файле должны быть координаты которых у тебя нет видимо.
1. Переключаешься в инже в русскую раскладку и выкладывай скока хочишь ...