Вот такой скрипт на копку скалы в Брите:
Code:
#####
#÷àð õîäèò êàïàåò â ãîðîäå Áðèòàíèè âäîëü ñêàëû
#êàê îáêàïàë ñêàëó, îáêàïûâàåò åùå ðàçîê
#çàòåì èäåò è ïëàâèò âñþ ðóäó âûêàïàííóþ
#ïîòîì èäåò ê áàíêó è äåëàåò èç èíãîâ îòìû÷êè
#ïîòîì èäåò è ïðîäàåò âñå ýòè îòìû÷êè âåíäîðó
#ïîòîì âûêëàäûâàåò çîëîòî, âîçâðàùàåòñÿ ê ñêàëå è îïÿòü 25
######
#íàñòðîéêè òóò î÷åíü ïðîñòûå:
#1)íàäî ñîçäàòü buy/sell ëèñò ñ èìåíåì lp äëÿ ïðîäàæè îòìû÷åê
#2)âïèñàòü òèï êèðêè/ëîïàòû ïðèìåðíî 150 ñòðîêà â ñêðèïòå
#3)ïîëîæèòü â áàíê èíñòðóìåíò äëÿ òèíêåðñòâà
######
#çàìå÷àíèÿ!!!
#1)÷àð äåëàåò îòìû÷êè ïîýòîìó ñêèëë òèíêåðà íóæåí >48,5
#2)÷àð ðàáîòàåò ñ ñóíäóêîì áàíêà, ïîýòîìó íåëüçÿ äîïóñêàòü
# ÷òîáû ñóíäóê áàíêà çàêðûâàëñÿ, ëó÷øå çàïóñòèòü ñêðèïò
# è íå òðîãàòü åãî, ìîæíî òîêà îáùàòüñÿ ïðîäîëæàòü áåç ïðîáëåì
#3)ñêðèïò íàäî çàïóñêàòü, êîãäà âû â êîîðäèíàòàõ 1459-1510
#4)÷àð 2 ðàçà îáêàïûâàåò ñêàëó - ýòî ïðèìåðíî 550 îðîâ ðóäû, ÷òî
# ñîîòâåòñòâóåò ñèëå ïðèìåðíî â 140 òàê ÷òî åñëè ñèëà ÷àðà ìåíüøå
# ÷åì 140 ìîæåò âûïàäàòü ðóäà ïðè êîïàíèè
######
#from GimFlex aka Question with smile again)
######
sub main()
while not uo.dead()
gomine()
gominback()
gomine()
gosmelt()
smeltore()
gobank()
unloadiron()
tinkering()
gosell()
sellvendor()
goungold()
unloadgold()
gomaxback()
wend
endsub
Sub gomine()
go(1459,1510,1)
go(1458,1507,1)
go(1457,1506,1)
go(1455,1505,1)
go(1452,1506,1)
go(1450,1509,1)
go(1450,1512,1)
go(1450,1513,1)
go(1448,1515,1)
go(1451,1517,1)
go(1452,1519,1)
go(1451,1521,1)
go(1448,1522,1)
go(1445,1523,1)
go(1445,1525,1)
go(1447,1527,1)
go(1448,1528,1)
go(1450,1530,1)
go(1452,1529,1)
go(1454,1529,1)
endsub
Sub gosmelt()
go(1432,1542,0)
go(1426,1556,0)
endsub
Sub gobank()
go(1430,1570,0)
go(1438,1583,0)
go(1425,1592,0)
go(1425,1622,0)
go(1420,1631,0)
go(1420,1668,0)
go(1436,1671,0)
go(1435,1680,0)
endsub
Sub gomaxback()
go(1435,1669,0)
go(1420,1669,0)
go(1420,1631,0)
go(1425,1592,0)
go(1438,1583,0)
go(1430,1570,0)
go(1430,1536,0)
go(1445,1515,0)
go(1453,1502,0)
go(1460,1505,0)
endsub
Sub gominback()
go(1446,1533,0)
go(1441,1524,0)
go(1447,1504,0)
go(1460,1504,0)
endsub
Sub gosell()
var dver='0x400009D9'
go(1435,1658,0)
go(1432,1658,0)
while uo.getx('self')>=1432
uo.useobject(dver)
wait(500)
uo.press(36)
wait(200)
uo.press(36)
wait(200)
uo.press(36)
wait(200)
wend
go(1426,1655,0)
endsub
Sub goungold()
var dver='0x400009D9'
go(1430,1658,0)
while uo.getx('self')<=1430
uo.useobject(dver)
wait(500)
uo.press(39)
wait(200)
uo.press(39)
wait(200)
uo.press(39)
wait(200)
wend
go(1435,1680,0)
endsub
Sub sellvendor()
var vendor="Taima"
uo.set('buydelay','4000')
uo.set('maxsell','200')
uo.findtype('0x14FB','-1','backpack')
while uo.findcount()
uo.sell('lp',vendor)
wait(4000)
uo.findtype('0x14FB','-1','backpack')
wend
endsub
Sub kopka()
var kirka='0x0F39'
var i,j,x,y,z
var ms1="Try mining"
var ms2="You put"
var ms3="There is no ore"
var ms4="You loosen"
x=uo.getx('self')
y=uo.gety('self')
z=uo.getz('self')
hiding()
for i=-1 to 1
for j=-1 to 1
repeat
uo.deletejournal()
uo.waittargettile(0,x+i,y+j,z)
uo.usetype(kirka)
repeat
wait(100)
until uo.injournal(ms1) or uo.injournal(ms2) or uo.injournal(ms3) or uo.injournal(ms4)
until uo.injournal(ms1) or uo.injournal(ms3)
next
next
endsub
Sub unloadiron()
uo.findtype('0x1BEF','-1','backpack')
while uo.findcount()
uo.say("bank")
wait(1000)
uo.findtype('0x1BEF','-1','backpack')
if uo.findcount() then
uo.moveitem('finditem','all','lastcontainer')
endif
uo.findtype('0x1BEF','-1','backpack')
wend
endsub
Sub unloadgold()
uo.findtype('0x0EED','-1','backpack')
while uo.findcount()
uo.say("bank")
wait(1000)
uo.findtype('0x0EED','-1','backpack')
if uo.findcount() then
uo.moveitem('finditem','all','lastcontainer')
endif
uo.findtype('0x0EED','-1','backpack')
wend
endsub
Sub hiding()
var ms1="You have hidden"
var ms2="You can't"
repeat
uo.deletejournal()
uo.useskill('Hiding')
repeat
wait(100)
until uo.injournal(ms1) or uo.injournal(ms2)
until uo.injournal(ms1)
endsub
Sub smeltore()
uo.findtype('0x19B9','-1','backpack')
while uo.findcount()
uo.useobject('finditem')
wait(500)
uo.findtype('0x19B9','-1','backpack')
wend
endsub
sub tinkering()
var bank
var ms1="You put"
var ms2="Tinkering failed"
uo.cancelmenu()
uo.automenu('Tinkering','Tools')
uo.automenu('Tools','lockpick (1 iron ingot)')
uo.say("bank")
wait(1000)
bank=uo.getserial('lastcontainer')
uo.findtype('0x1EBC','-1',bank)
if uo.findcount() then
uo.moveitem('finditem','all','backpack')
endif
uo.findtype('0x1BEF','-1',bank)
while uo.findcount()
uo.moveitem('finditem','30','backpack')
wait(1000)
uo.findtype('0x1BEF','-1','backpack')
while uo.findcount()
uo.deletejournal()
uo.usetype('0x1EBC')
repeat
wait(100)
until uo.injournal(ms1) or uo.injournal(ms2)
uo.findtype('0x1BEF','-1','backpack')
wend
uo.findtype('0x14FB','-1','backpack')
if uo.findcount() then
uo.moveitem('finditem','all',bank)
endif
uo.findtype('0x1BEF','-1',bank)
wend
uo.findtype('0x1EBC','-1','backpack')
if uo.findcount() then
uo.moveitem('finditem','all',bank)
endif
uo.findtype('0x14FB','-1',bank)
if uo.findcount() then
uo.moveitem('finditem','all','backpack')
wait(700)
endif
endsub
Sub go(x,y,k)
VAR i
VAR dir,ldir,rdir,key,olddir
VAR dx,dy,Exit=0
VAR CacheLimit=9,CacheIndex="Text"
DIM CacheX[10], CacheY[10]
CacheX[0]="Test"
While Exit<>1
dx=x-UO.GetX()
dy=y-UO.GetY()
If dx==0 AND dy==0 Then
Exit=1
Endif
If dx<>0 AND dy<>0 Then
If dx>0 AND dy>0 Then ; GoSE
dir=3
ldir=2
rdir=4
key=40 ; DownArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==2 Then ; GoNE
dir=1
ldir=0
rdir=1
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=5
rdir=6
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx>0 AND dy<0 Then ; GoNE
dir=1
ldir=0
rdir=2
key=39 ; RightArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==0 Then ; GoWN
dir=7
ldir=6
rdir=7
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSE
dir=3
ldir=3
rdir=4
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx<0 AND dy>0 Then ; GoSW
dir=5
ldir=4
rdir=6
key=37 ; LeftArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==6 Then ; GoWN
dir=7
ldir=7
rdir=0
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSE
dir=3
ldir=2
rdir=3
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx<0 AND dy<0 Then ; GoWN
dir=7
ldir=6
rdir=0
key=38 ; UpArrow
olddir=UO.GetDir()
If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
If olddir==0 Then ; GoNE
dir=1
ldir=1
rdir=2
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=4
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
If dx<>0 AND dy==0 Then
If dx>0 Then ; GoE
dir=2
key=34 ; PgDown
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoSE
dir=3
ldir=3
rdir=4
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoNE
dir=1
ldir=1
rdir=0
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dx<0 Then ; GoW
dir=6
key=36 ; Home key
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==0 Then ; GoWN
dir=7
ldir=7
rdir=0
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=4
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
If dx==0 AND dy<>0 Then
If dy>0 Then ; GoS
dir=4
key=35 ; End
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoSE
dir=3
ldir=2
rdir=3
key=40 ; DownArrow
While UO.GetDir()<>3
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoSW
dir=5
ldir=6
rdir=5
key=37 ; LeftArrow
While UO.GetDir()<>5
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
If dy<0 Then ;GoN
dir=0
key=33 ; PgUp
olddir=UO.GetDir()
If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
If olddir==2 Then ; GoNE
dir=1
ldir=1
rdir=2
key=39 ; RightArrow
While UO.GetDir()<>1
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Else ; GoWN
dir=7
ldir=7
rdir=6
key=38 ; UpArrow
While UO.GetDir()<>7
StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
Wend
Endif
Endif
Endif
Endif
Wend
if k==1 then
kopka()
endif
end sub
Sub StepEdit(x,y,dir,key)
VAR walkwait=100
VAR ErrLevel=0
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
If x==UO.GetX() AND y==UO.GetY() Then
ErrLevel=1
Endif
Endif
Return ErrLevel
endsub
Sub StepArrow(x,y,dir,ldir,rdir,key)
VAR walkwait=100
VAR ErrLevel=0
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then
CheckLag()
Endif
Endif
If UO.GetX()==x AND UO.GetY()==y Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
CheckLag()
If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
ErrLevel=1
Endif
Endif
Endif
Return ErrLevel
endsub
Sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
Wait(50)
until UO.InJournal('backpack')
endsub
в общем, чар как есть капает в 2 круга, потом плавит, потом идет скидывает в банк инготы, потом делает локпики, но после, он просто закрывает банк, и пустой идет к вендору, потом к банку просто подойдет и даже не скажет bank и дальше обратно к скале.
Где тут ошибка, чтобы он брал локпики (отмычки) и продавал их, а потом все-таки скидывал золото в банк, и уже после возвращался к скале?.
PS простите за каракули.