
Плиз помогите
Code: Select all
#########################################################
### Mining Mountains / Êîïàíèå ñêàëë v5.1.7 Full ###
#########################################################
### Øàðä Dragon World / www.drw.ru ###
#########################################################
##################
### Ïåðåìåííûå ###
##################
################################################################################
###################
var f=file('C:\ore.dat') ## - Ïóòü ê ôàéëó â êîòîðîì áóäóò õðàíèòñÿ
### êîîðäèíàòû ãäå êîïàòü.
###
var TryHiding=1 ## 1 - Ïåðåä òåì êàê êîïàòü ðóäó, áóäåò ïûòàòüñÿ óéòè â õàéä,
### 0 - íå áóäåò .
###
var TryRecall=1 ## 1 - Ïîñëå òîãî êàê ñîáåðåò äîñòàòî÷íûé âåñ, áóäåò ïûòàòüñÿ
### ðåêîëèòüñÿ äîìîé,
### ñêëàäûâàòü ðóäó â ñóíäóê è ðåêîëèòüñÿ îáðàòíî , 0 - íå áóäåò.(DropOnVip
### äîëæíî áûòü 0)
###
var GetFromFile=0 ## 1 - Êîîðäèíàòû ãäå êîïàòü áóäóò ñ÷èòûâàòñÿ èç ôàéëà, 0 -
### ñîáèðàòñÿ èç êëèåíòà
### (ñíà÷àëà ñîáåðèòå à ïîòîì ñ÷èòûâàéòå èç ôàéëà).
###
var OreQty=250 ## - Ìàêñèìàëüíûé âåñ, äîáûâ êîòîðûé íàäî ðåêîëèòüñÿ äîìîé.
### (ñåé÷àñ 600 ñòîóíîâ)
###
var ControlOfDanger=1 ## 1 - Âêëþ÷èòü ðåêîë ïî ðóíå(â ïàêå) ïðè àòàêå, 0 -
### îòêëþ÷èòü ðåêîë.
###
var ElementalKill=0 ## 1 - Âûëþ÷èòü êèëë ýëåìåíòàëà, 0 - îòêëþ÷èòü(ðåêîë).
###
var DangerousTime=70000 ## - Âðåìÿ â ñåêóíäàõ êîòîðîå ÷àð áóäåò æäàòü(ïîñëå
### ðåêîëà) ïîêà óéäåò ÏÊ èëè Ýëåìåíò.(ñåé÷àñ 50 ñåêóíä)
###
var CycleScript=1 ## 1 - Ñêðèïò íå îòêëþ÷àåòñÿ ïîñëå ðåêîëà îò àòàêóþùåãî, 0 -
### îòêëþ÷àåòñÿè çàêðûâàåò UO.
###
var Reconnect=1 ## 1 - Âêëþ÷èòü ðåêîííåêò íà ñåðâåð åñëè âûêèíåò, 0 - îòêëþ÷èòü
### ðåêîííåêò.
###
var DisturbingSound=('C:\ding.wav') ## - Çâóê êîòîðû áóäåò ïðèãðàí ïðè àòàêå.
### (çàìåíèòå íà ñâîé)
###
var RecallDrop=1 ## 1 - Âêëþ÷èòü ðåêîë ïîñëå ïîáåãà îò åíòà äîìîé è âûëîæèòü ëîãè, 0 -âûêëþ÷èòü.
###
var DropY=566 ## - Êîîðäèíàòà ïåðåä ñóíäóêîì ïî Y.
###
var oldX,oldY,time ## - Äëÿ ðåêîëà.
###
var Pickaxe='0x0e85'
################################################################################
###################
###
### Ïîñëå íàñòðîéêè:
### Èäèòå â ìåñòî ãäå áóäåì êîïàòü.
### Çàïóñòèòå cêðèïò GoMining(), èíæåêò ïîïðîñèò âàñ óêàçàòü Êèðêó(ïîÿâèòñÿ
### ïðèöåë, ïðèöåëîì íà íå¸),
### Ðóíáóê(ïîÿâèòñÿ ïðèöåë, ïðèöåëîì íà íåãî) ,Ðóíó(ïðèöåëîì íà íåå) è Ñóíäóê
### äëÿ ëîãîâ.
### Ïîñëå ýòîãî ÷àð ïîéäåò ïî êîîðäèíàòàì è áóäåò êîïàòü ðóäó.
###########
### Êîä ###
###########
sub GoMining()
if Reconnect==1 then
uo.Exec('exec Reconnect')
end if
if ControlOfDanger==1 then
uo.Exec('exec ControlOfDanger')
end if
uo.Exec('exec Mining')
end sub
sub Mining()
var i=0,j=0,k=0,r=0,q=0,ii,jj
var TopX=324,TopY=65
dim OreX[5000],OreY[5000],OreT[5000]
dim OreTile[27]
var flag=0,OreCount=0,clicks=0,flag2=0
####################
### Ãðàôèêà ðóäû ###
####################
OreTile[0]=1339
OreTile[1]=1355
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]=2278
OreTile[15]=2282
OreTile[16]=2281
OreTile[17]=2277
OreTile[18]=2278
OreTile[19]=2275
OreTile[20]=1351
OreTile[21]=6007
OreTile[22]=6012
OreTile[23]=6004
OreTile[24]=6011
OreTile[25]=6008
OreTile[26]=6003
uo.FilterSpeech('on')
uo.FilterSpeech('add', 'Where do you want to use ')
#####################################
### Çàãðóæàåì êîîðäèíàòû èç ôàéëà ###
#####################################
if GetFromFile==1 then
uo.Print('Çàãðóæàåì êîîðäèíàòû èç ôàéëà...')
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()
else
######################################
### Ñîáèðàåì êîîðäèíàòû èç êëèåíòà ###
######################################
uo.Print('Ñîáèðàåì êîîðäèíàòû ðóäû â îêðóãå...')
repeat
clicks=0
flag=0
uo.DeleteJournal()
#######################
### Êëèêàåì íà òàéë ###
#######################
uo.UseType( 0x0e85 )
wait(500)
uo.DeleteJournal()
while uo.Targeting()
wait(100)
wend
###########################
### Ïðîâåðÿåì òî ëè ýòî ###
###########################
flag=0
for k=0 to 27
if uo.LastTile(0)==OreTile[k]+1 then
flag=2
end if
next
if flag==0 then
for k=0 to 27
if uo.LastTile(0)==OreTile[k] then
flag=1
end if
next
end if
if uo.Lasttile(1)==uo.GetX() and uo.Lasttile(2)==uo.Gety() then
flag=3
end if
########################
### Êëèêíóëè íà òàéë ###
########################
if flag==1 then
flag2=0
if OreCount>0 then
for ii=1 to OreCount
if OreX[ii]==uo.LastTile(1) and OreY[ii]==uo.LastTile(2) then
flag2=1
end if
next
end if
if flag2==0 then
OreCount=OreCount+1
OreX[OreCount]=uo.LastTile(1)
OreY[OreCount]=uo.LastTile(2)
OreT[OreCount]=uo.LastTile(0)
uo.Print('Íàéäåíà ðóäà íîìåð '+str(OreCount)+' : x='+str(uo.Lasttile(1))+'
y='+str(uo.LastTile(2)))
end if
end if
#####################
### Êëèêíóëè âûøå ###
#####################
if flag==2 then
flag2=0
if OreCount>0 then
for ii=1 to OreCount
if OreX[ii]==uo.LastTile(1) and OreY[ii]==uo.LastTile(2) then
flag2=1
end if
next
end if
if flag2==0 then
OreCount=OreCount+1
OreX[OreCount]=uo.LastTile(1)
OreY[OreCount]=uo.LastTile(2)
OreT[OreCount]=uo.LastTile(0)-1
uo.print('Íàéäåíà ðóäà íîìåð '+str(OreCount)+' : x='+str(uo.Lasttile(1))+'
y='+str(uo.LastTile(2)))
end if
end if
until (Flag==3) or (OreCount==5000)
uo.FilterSpeech('off')
uo.Print('Àíàëèç çàêîí÷åí, êîîðäèíàòû ðóäû çàïèñàíû â ôàéë C:\ore.dat')
SaveToFile(OreCount,OreX,OreY,OreT)
end if
uo.Print('Êîîðäèíàò íàéäåíî: '+str(OreCount))
wait(2000)
######################################
### Õîäèì ïî ñîáðàííûì êîîðäèíàòàì ###
######################################
while 1==1
if OreCount>0 then
for i=1 to OreCount
if TryRecall==1 and uo.Weight>250 then
ToRecall()
end if
uo.Print('Èä¸ì ê êîîðäèíàòå ðóäû íîìåð '+str(i)+': x='+str(OreX[i])+' y='+str (OreY[i]))
InfoOre()
flag=GotoXY(OreX[i],OreY[i])
if flag==1 then
if TryHiding==1 then
ToHide()
end if
GetOre(str(OreT[i]),str(OreX[i]),str(OreY[i]),str(uo.GetZ()))
end if
next
end if
wend
end sub
sub GetOre(Type,X,Y,Z)
var i
uo.Print('Íà÷èíàåì êîïàòü...')
for i=1 to 20
if uo.Warmode()==1 then
return 0
end if
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 ToRecall()
RecallToHome()
DropOre()
InfoOre()
RecallToOre()
end sub
sub RecallToHome()
var i
uo.print('Ðåêîëèìñÿ äîìîé...')
for i=1 to 10
uo.deletejournal()
uo.waittargetobject(0x403a5efa)
uo.cast('Recall')
if WaitForRecall()==1 then
return 1
end if
next
return 0
end sub
sub RecallToOre()
var i
uo.print('Ðåêîëèìñÿ îáðàòíî...')
for i=1 to 10
uo.deletejournal()
uo.waittargetobject(0x40346396)
uo.cast('Recall')
if waitForRecall()==1 then
return 1
end if
next
return 0
end sub
sub ToHide()
while not uo.Hidden()
uo.Print('Ïûòàåìñÿ óéòè â õàéä...')
uo.DeleteJournal()
uo.UseSkill('Stealth')
wait(3000)
wend
wait(100)
end sub
sub WaitForRecall()
var Text1=uo.GetName()+": The spell fizzles."
var mess='',lastX=uo.getX(),lastY=uo.getY()
for var i=0 to 200
mess=uo.Journal(0)
if uo.Journal(0)==Text1 then
return 0
end if
if uo.getX()<>lastX or uo.getY()<>LastY then
return 1
end if
wait(50)
next
return 0
end sub
sub WaitForHide()
var Text1=uo.GetName()+": You have hidden yourself well"
var Text2=uo.GetName()+": You can't seem to hide here."
var mess
for var i=0 to 200
mess=uo.Journal(0)
if uo.Journal(0)==Text1 then
return 1
end if
if uo.Journal(0)==Text2 then
return 0
end if
wait(50)
next
return 0
end sub
sub WaitForChange()
var Text1=uo.GetName()+': You loosen some rocks but fail to find any useable ore.'
var Text2='There is no ore here to mine.'
var Text3="You can't reach this."
var Text4="That is too far away."
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(500)
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 WaitForTarget()
for var i=0 to 50
if uo.Targeting()==1 then
return 1
end if
wait(200)
next
return 0
end sub
sub WaitForChangeXY(myX,myY,lastX,lastY)
for var i=1 to 50
if lastX<>myX or lastY<>myY then
return 1
end if
wait(200)
next
return 0
end sub
sub GotoXY(x,y)
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0
for i=1 to 60
myX=uo.getX();
myY=uo.getY();
if LastX==myX and LastY==myY then
halt=halt+1
else
halt=0
end if
if halt>=10 then
if uo.GetDir()==1 then
for z=0 to 8
uo.Press(40)
next
end if
if uo.GetDir()==3 then
for z=0 to 8
uo.Press(37)
next
end if
if uo.GetDir()==5 then
for z=0 to 8
uo.Press(38)
next
end if
if uo.GetDir()==7 then
for z=0 to 8
uo.Press(39)
next
end if
halt=15
end if
if Numb(x-myX)<=1 and Numb(y-myY)<=2 then
return 1
end if
if x<=myX then
if y<=myY then
for z=0 to 3
uo.Press(38)
next
else
for z=0 to 3
uo.Press(37)
next
end if
else
if y<=myY then
for z=0 to 3
uo.Press(39)
next
else
for z=0 to 3
uo.Press(40)
next
end if
end if
lastX=myX
lastY=myY
wait(200)
next
return 0
end sub
sub Numb(num)
if num>=0 then
return num
else
return num*(-1)
end if
end sub
sub SaveToFile(OreCount,OreX,OreY,OreT)
var s=0,i=0
var f=file("D:\ore.dat")
f.Open()
f.Create()
s=safe call f.Writeln(OreCount)
for i=1 to OreCount
s=safe call f.Writeln(str(OreT[i])+' '+str(OreX[i])+' '+str(OreY[i]))
next
f.Close()
end sub
sub DropOre()
ToHide()
if uo.Waiting() then
uo.CancelTarget()
end if
var a,Exit
dim Ore[14]
Ore[0]=0x19B9
Ore[1]=0x19B7
Ore[2]=0x19BA
Ore[3]=0x19B8
Ore[4]=0x0F11
Ore[5]=0x0F16
Ore[6]=0x0F18
Ore[7]=0x0F15
Ore[8]=0x0F10
Ore[9]=0x0F0F
Ore[10]=0x0F26
Ore[11]=0x0F4C
Ore[12]=0x0EED
Ore[13]=0x0F20
uo.Print('Âûêëàäûâàåì ðóäó.')
uo.SetReceivingContainer(0x403e12a1)
wait(500)
for a=0 to 13
Exit=0
repeat
uo.FindType(Ore[a])
if uo.GetQuantity('finditem')>0 then
uo.Grab('0','finditem')
wait(1500)
else
Exit=1
end if
until Exit==1
next
uo.UnSetReceivingContainer(0x403e12a1)
uo.Print('Ðóäà âûëîæåíà.')
end sub
sub InfoOre()
uo.Print('Ó âàñ âñåãî '+str(uo.Count('0x19B7')+uo.Count('0x19B8')+uo.Count('0x19B9')+uo.Count('0x19BA'))+' ðóäû â ñóìêå')
uo.Print('Èç íåå '+str(uo.Count('0x19B7','0x0000')+uo.Count('0x19B8','0x0000') +uo.Count('0x19B9','0x0000')+uo.Count('0x19BA','0x0000'))+' æåëåçî è ' +str (uo.Count('0x19B7')+uo.Count('0x19B8')+uo.Count('0x19B9')+uo.Count('0x19BA')- (uo.Count('0x19B7','0x0000')+uo.Count('0x19B8','0x0000')+uo.Count ('0x19B9','0x0000')+uo.Count('0x19BA','0x0000')))+' öâåòìåò')
end sub
sub Open(Container)
uo.DeleteJournal()
uo.UseObject(Container)
repeat
wait(500)
until uo.InJournal('Contains')
end sub
sub ControlOfDanger()
var danger
var RecallPhysicalDanger=1
var RecallSeenDanger=0
var RecallBluePlayer=0
while 1
uo.DeleteJournal()
while not uo.InJournal(':')
wait(100)
wend
danger=uo.GetNotoriety(uo.JournalSerial(0))
if uo.InJournal('Guardian') then
if ElementalKill==0 then
uo.Exec('exec RecallRune')
end if
end if
if RecallPhysicalDanger==1 then
if uo.InJournal('attacking you') or uo.InJournal('An Mani') or uo.InJournal('Por Ort Grav') or uo.InJournal('In Por ') or uo.InJournal('An Ex Por') or uo.InJournal('ppN') or uo.InJournal('Adios') or uo.InJournal('MAKC') or uo.InJournal('Man') then
uo.Exec('exec RecallRune')
end if
end if
if RecallSeenDanger==1 then
if danger==6 and uo.JournalSerial(0)<>uo.GetSerial() then
uo.Exec('exec RecallRune')
end if
if danger==4 and uo.JournalSerial(0)<>uo.GetSerial() then
uo.Exec('exec RecallRune')
end if
end if
if RecallBluePlayer==1 then
if danger==1 and uo.JournalSerial(0)<>uo.GetSerial() then
uo.Exec('exec RecallRune')
end if
end if
wend
end sub
sub RecallRune()
var MX=uo.GetX('self')
var MY=uo.GetY('self')
uo.UseType('0x0F08')
wait(100)
Recall:
uo.DeleteJournal()
if uo.Waiting() then
uo.CancelTarget()
end if
uo.WaittargetObject('0x403a5efa')
wait(100)
uo.UseType('0x1F4C')
wait(3000)
if not uo.GetX('self')<>MX and not uo.GetY('self')<>MY then
goto Recall
end if
if uo.Life<uo.STR then
LifeUp('Bottle')
wait(100)
end if
if CycleScript==1 then
wait(DangerousTime)
DropOre()
RecallToOre()
end if
if CycleScript==0 then
uo.Exec('exec ExitUO')
end if
end sub
sub Reconnect()
var ReconnectTime,rFlag
ReconnectTime='0'
rFlag=1
repeat
while (uo.ObjAtLayer('Bpack')=='')
if rFlag then
ReconnectTime=MakeTime()
rFlag=0
end if
wait(20000)
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.TextOpen()
uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
rFlag=1
ReconnectTime='0'
end if
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
end if
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
end if
next
ret=t+" @ "+d
return ret
end sub
sub Terminate()
uo.Print('Âñå ôóíêöèè ñêðèïòà îòêëþ÷åíû!')
uo.DeleteJournal()
uo.Exec('terminate all')
wait(100)
uo.Exec('terminate all')
wait(100)
uo.Exec('terminate all')
wait(100)
end sub
sub CheckLag()
if uo.Waiting()>0 then
uo.Exec('canceltarget')
end if
uo.DeleteJournal()
uo.Click('backpack')
repeat
wait(50)
until uo.InJournal('backpack')
#BETEP™#
end sub