кароче проблема в том 6то всо работаит вот тока летит он по одной руне в шахту а по следуишим нелетаит, летит по тоизе руне:( шард оском
Code:
##########################
# Mining в Пещерах v 3.0 #
##########################
var sunduk = '0x413ACA91' ; ID сундука с регами/для выгруза руды
var check = 0 ; если 1 то реколиться только от ПК, если 0, то реколиться от всех
var time = 2 ; время ожидания (в минутах) пока уйдет пк из шахты
var golem = 1 ; если 1 будет пить инвизку при появлении голема, 0 не будет
var invislog = 1 ; если 1 - будет вести лог по использованным инвизкам, 0 - нет
var maxweight = 500 ; вес при котором реколиться домой
var mark = 1 ; 1 будет перемарчивать руну домой, 0 не будет
var charges = 10 ;кол-во зарядов при котором перемарчивать
var fail = 12 ; кол-во попыток с сообщениями "здесь не осталось руды" прежде чем лететь в следующую шахту
var log = 1 ; если 1 - вести лог по выкопанной руде, 0 - нет
var filelog = 1 ; если 1 - вести лог в ФАЙЛ по выкопанной руде, 0 - нет
var screen = 0 ; если 1 будет делать скрин при смерти или попытке рекола от ПК, 0 не будет (Ультима не должна быть свернута)
##################
var runess = 0 ; количество рун, [!] указывать надо ТОЛЬКО если не использывать ",exec marker", в противном случае ставим 0
sub mining()
var mx, my, mz, x, y, i, j, f, t, n=0, k=0
if not runess == 0 then
uo.seteasyuo(200,str(runess))
uo.setglobal('kolrune',runess)
end if
########################################## ; отсюда
# Удалить все это в рамке!!!! #
# И вставить то что выдадет ,exec marker #
##########################################
uo.addobject("runeCave0","0x4035A284")
uo.addobject("runeCave1","0x4109DFE0")
uo.addobject("runeCave2","0x4179FA63")
uo.addobject("runeCave3","0x40A3BE76")
uo.addobject("runeCave4","0x40CF618F")
uo.addobject("runeCave5","0x403B5844")
uo.addobject("runeCave6","0x415BAC8E")
uo.addobject("runeCave7","0x4044EAC7")
uo.addobject("runeCave8","0x401298E3")
uo.addobject("runeCave9","0x414AB510")
######################################## ; до сюда ВСЕ УДАЛЯЕМ и вставляем то что выдаст ,exec marker
DIM Ore[4], Sex[2]
Ore[0]= '0x19B9' ; 4 and more ore
Ore[1]= '0x19B7' ; 1 ore
Ore[2]= '0x19BA' ; 2 ore
Ore[3]= '0x19B8' ; 3 ore
Sex[0]='0x0190' ;male
Sex[1]='0x0191' ;female
if uo.waiting() then
uo.canceltarget()
end if
uo.charprint('0x0021','Выберите кирку или лопату!')
uo.exec('addobject Shovel')
while uo.targeting()
wait(400)
wend
uo.charprint('0x0021','Выберите руну домой!')
uo.exec('addobject runeHome')
while uo.targeting()
wait(400)
wend
uo.textclose()
repeat
uo.click('runeHome')
checklag()
uo.concolor('0x0031')
uo.print('Руна домой: '+charge(uo.getname('runeHome'))+' зарядов')
if mark==1 then
uo.setglobal('mark',charge(uo.getname('runeHome')))
end if
uo.concolor('0x0440')
uo.setglobal('weight',str(uo.weight+12))
uo.set('grabdelay','1000')
mining:
mx = uo.getx('self')
my = uo.gety('self')
mz = uo.getz('self')
uo.deletejournal()
golem()
for x = mx-3 to mx+3
for y = my-3 to my+3
checklag()
uo.print('Kopaim v kordinatah: '+str(mx-x)+' '+str(my-y))
while not uo.injournal('location|fail|far|rock|туда|не осталось|не нашли|слишком далеко|из валунов|дотянуться|Iron Ore|Copper') and not uo.dead()
if uo.waiting() then
uo.canceltarget()
end if
if uo.targeting() then
uo.say(chr(27))
end if
uo.deletejournal()
wait(400+uo.random(4)*25)
uo.waittargettile("1343",str(x),str(y),str(mz))
uo.useobject('Shovel')
checklag()
wait(400)
t=0
if uo.injournal('осталось|далеко|nothing') then
n=n+1
else
n=0
end if
while not uo.injournal('put|heavy|location|fail|far|rock|туда|found|не осталось|не нашли|слишком далеко|дотянуться|из валунов') and n<fail and t<100 and not uo.dead()
uo.set('finddistance','14')
uo.ignore('self')
wait(400)
for i=0 to 1
uo.findtype(Sex[i],-1,'ground')
if uo.findcount() then
for j=check+1 to 6
if uo.getnotoriety('finditem')==j then
if screen==1 then
f=uo.getinfo('character')+' время ['+time(uo.time(),'.')+'] ('+date(uo.date(),'.')+')'
uo.snap('BMP',f+'.bmp')
uo.setglobal('screen',str(val(uo.getglobal('screen'))+1))
end if
uo.ignore('finditem')
recallkill(uo.getserial('finditem'))
upload()
uo.print('wait '+str(time)+' min')
wait(time*100000)
if k>=val(uo.geteasyuo(200))-1 then
k=0
end if
k=k+1
medit(36)
recall('runeCave'+str(k),0)
uo.ignorereset()
goto mining
end if
next
end if
next
t=t+1
wait(400)
wend
golem()
if n==fail/2 then
uo.charprint('0x0021','Еще '+str(fail/2)+' неудач и лечу по следующей руне!')
end if
if uo.weight>=maxweight or n>=fail then
wait(400)
for i=0 to 3
uo.set('finddistance','3')
uo.findtype(Ore[i],-1,'ground')
if uo.findcount() then
uo.moveitem('finditem')
wait(900)
checklag()
end if
next
uo.deletejournal()
recall('runeHome',1)
if mark==1 then
uo.setglobal('mark',str(val(uo.getglobal('mark'))-1))
end if
upload()
if k>=val(uo.geteasyuo(200))-1 then
k=0
end if
k=k+1
checklag()
medit(36)
recall('runeCave'+str(k),0)
goto mining
end if
wend
next
next
until uo.dead()
uo.textopen()
uo.textprint()
uo.textprint('Вы были убиты. Последние 20 строк журнала:')
uo.showjournal('20')
uo.playwav('C:\Program Files\Ultima Online 2D\music\Death.wav') ; звук о смерти персонажа
if screen==1 then
f=uo.getinfo('character')+'!DEAD! время ['+time(uo.time(),'.')+'] ('+date(uo.date(),'.')+')'
uo.snap('BMP',f+'.bmp')
uo.setglobal('screen',str(val(uo.getglobal('screen'))+1))
end if
return
end sub
sub charge(jor)
var i, j, text=''
for i=0 to len(jor)
for j=0 to 4
if mid(jor,i,1)==str(j) then
text=text+mid(jor,i,1)
end if
next
next
return text
end sub
sub marker()
#сбор ID бесцветных рун в паке#
uo.print('идет сбор ID бесцветных рун в паке...')
uo.ignorereset()
uo.textclear()
uo.textopen()
uo.textprint('Вставить в начало скрипта:')
uo.textprint()
var i=0, t=0, exit=0
repeat
uo.findtype('0x1F14','0x0000','backpack')
if uo.findcount() then
uo.textprint('uo.addobject("runeCave'+str(t)+'","'+uo.getserial('finditem')+'")')
t=t+1
uo.ignore('finditem')
checklag()
else
exit=1
end if
until exit==1
uo.seteasyuo(200,str(t))
uo.setglobal('kolrune',t)
uo.print('Run naideno: '+str(t))
uo.ignorereset()
end sub
sub count(n)
#1 home; 2 print
var i, j, q
DIM Ore[13], typeOre[4]
#Ore[numb]='[цвет] [отображаемое название]'
Ore[0]='0x0000 Iron Ore'
Ore[1]='0x0641 Cooper Ore'
Ore[2]='0x0400 Agapite Ore'
Ore[3]='0x0770 Shadow Ore'
Ore[4]='0x048A Orion Ore'
Ore[5]='0x07D1 Verite Ore'
Ore[6]='0x0488 Dwarf Ore'
Ore[7]='0x0515 Valorite Ore'
Ore[8]='0x084D Golden Ore'
Ore[9]='0x0482 Silver Ore'
Ore[10]='0x0487 Crystal Ore'
Ore[11]='0x0486 Magma Ore'
Ore[12]='0x0485 Obsidian Ore'
Ore[13]='0x048D Mytheril Ore'
typeOre[0]='0x19B9' ; 4 and more ore
typeOre[1]='0x19B7' ; 1 ore
typeOre[2]='0x19BA' ; 2 ore
typeOre[3]='0x19B8' ; 3 ore
uo.ignorereset()
if n==1 then
for i=0 to 12
q=0
for j=0 to 3
repeat
uo.findtype(typeOre[j],left(Ore[i],6),'backpack')
if uo.findcount() then
q=q+uo.getquantity('finditem')
uo.setglobal(Right(Ore[i],len(Ore[i])-7),str(q+val(uo.getglobal(Right(Ore[i],len(Ore[i])-7)))) )
uo.ignore('finditem')
end if
until uo.findcount()==0
next
next
end if
if n==2 then
uo.textclear()
uo.textopen()
uo.textprint('До дома руды доставлено:')
for i=0 to 12
uo.textprint(Right(Ore[i],len(Ore[i])-7)+': '+uo.getglobal(Right(Ore[i],len(Ore[i])-7)))
next
uo.textprint()
if invislog==1 then
uo.textprint('Инвизок: ['+uo.getglobal('inviz')+'] | Осталось: '+uo.getglobal('invislog'))
uo.textprint()
end if
if screen==1 then
uo.textprint('Скринов снято: '+uo.getglobal('screen'))
uo.textprint()
end if
uo.textprint('Время: '+time(uo.time(),':')+' ('+date(uo.date(),'.')+')')
if filelog==1 then
var f=file(uo.getinfo('path')+'mining_log ('+uo.getinfo('shard')+').txt')
if not f.open() then
f.open()
f.create()
end if
f.open()
f.writeln('До дома руды доставлено:')
for i=0 to 12
f.writeln(Right(Ore[i],len(Ore[i])-7)+': '+uo.getglobal(Right(Ore[i],len(Ore[i])-7)))
next
f.writeln()
if invislog==1 then
f.writeln('Инвизок: ['+uo.getglobal('inviz')+'] | Осталось: '+uo.getglobal('invislog'))
f.writeln()
end if
if screen==1 then
f.writeln('Скринов снято: '+uo.getglobal('screen'))
f.writeln()
end if
f.writeln('Время: '+time(uo.time(),':')+' ('+date(uo.date(),'.')+')')
f.close()
end if
uo.print('Произведен полный отчет.')
end if
uo.ignorereset()
end sub
sub date(jor,n)
var ser=str(jor), t=''
if len(ser)==5 then
ser='0'+ser
end if
t=right(ser,2)+n+mid(ser,2,2)+n+left(ser,2)
return t
end sub
sub time(jor,n)
var i, t=''
var ser=str(jor)
if len(ser)==5 then
ser='0'+ser
end if
for i=0 to len(ser)-2 step 2
t=t+mid(ser,i,2)+n
next
t=left(t,len(ser)+2)
return t
end sub
sub recall(obj,n)
var t
var x=uo.getx('self')
var y=uo.gety('self')
uo.set('finddistance','2')
while uo.getx()==x and uo.gety()==y or uo.dead()
uo.cast('Recall',obj)
t=0
uo.deletejournal()
repeat
t=t+1
wait(800)
if n==1 then
uo.findtype('0x000E',-1,'ground') #golem
if uo.findcount() and uo.injournal('attacking you') or uo.gethp()<uo.getmaxhp()/2 and not uo.dead() then
if golem==1 then
uo.findtype('0x0F09','0x0060',2) ; тип инвизки
if uo.findcount() then
uo.useobject('finditem')
uo.print('атака! пьем инвизку')
uo.setglobal('inviz',str(val(uo.getglobal('inviz'))+1))
uo.warmode(0)
uo.deletejournal()
wait(500)
else
uo.deletejournal()
wait(500)
end if
else
uo.print('атака! Внимение питье инвизок отключено!')
uo.deletejournal()
wait(500)
end if
end if
end if
until uo.getx()<>x and uo.gety()<>y or uo.injournal('spell|не удалось') or t==40 or uo.dead()
wend
end sub
sub recallkill(obj)
var t, n=0
var x=uo.getx('self')
var y=uo.gety('self')
uo.click(obj)
while uo.getx()==x and uo.gety()==y and not uo.dead()
uo.cast('Recall','runeHome')
uo.deletejournal()
t=0
repeat
t=t+1
wait(500)
if uo.getdistance(obj)<7 and n==0 then
uo.findtype('0x0F09','0x0060',2) ; тип инвизки
if uo.findcount() then
uo.useobject('finditem')
uo.setglobal('inviz',str(val(uo.getglobal('inviz'))+1))
uo.deletejournal()
wait(100)
else
uo.deletejournal()
end if
n=1
end if
until uo.getx()<>x and uo.gety()<>y or uo.injournal('spell|не удалось') or t==40 or uo.dead()
wend
uo.textopen()
uo.textclear()
uo.textprint('Попытка реколла от: '+uo.getname(obj))
uo.playwav('D:\Miranda IM\sound\mix\Online.wav') #звук при реколе от ПК
end sub
sub medit(kol)
var t, exit
uo.warmode(0)
while uo.mana<kol and not uo.dead()
uo.deletejournal()
t=0
exit=0
uo.useskill('Meditation')
wait(400)
repeat
t=t+1
if uo.injournal('lose|can|peace|потеряли') then
exit=1
end if
wait(1500)
until uo.mana>=kol or exit==1 or t==50 or uo.dead()
wend
end sub
sub golem()
var t
uo.set('finddistance','3')
while not uo.hidden() and not uo.dead()
uo.warmode(0)
checklag()
uo.print('Hidding...')
uo.useskill('Hiding')
t=0
uo.deletejournal()
repeat
t=t+1
wait(500)
uo.findtype('0x000E',-1,'ground') #golem
if uo.findcount() and uo.injournal('attacking you') or uo.gethp()<uo.getmaxhp()/2 and not uo.dead() then
if golem==1 then
uo.usetype('0x0F09','0x0060') #invis
uo.deletejournal()
uo.warmode(0)
else
uo.print('атака! Внимение питье инвизок отключено!')
uo.deletejournal()
end if
end if
until uo.hidden() or uo.injournal('seem') or t==70 or uo.dead()
wend
end sub
sub upload()
VAR i, t
var kol=5 # кол-во регов брать
DIM Ore[6], Item[4]
Ore[0]= '0x19B9' ; 4 and more ore
Ore[1]= '0x19B7' ; 1 ore
Ore[2]= '0x19BA' ; 2 ore
Ore[3]= '0x19B8' ; 3 ore
Ore[4]= '0x0F26' ; diamonds
Ore[5]= '0x0F0E' ; empty bottles
Item[0]= '0x0F7A' ; Black Pearl
Item[1]= '0x0F7B' ; Bood Moss
Item[2]= '0x0F86' ; Mandrake Root
Item[3]= '0x0F09' ; invistiblity
checklag()
if log==1 then
count(1)
wait(500)
end if
uo.ignorereset()
while not uo.hidden()
uo.warmode(0)
uo.print('Hidding...')
uo.useskill('Hiding')
t=0
uo.deletejournal()
repeat
t=t+1
wait(800)
until uo.hidden() or uo.injournal('seem') or t==15
wend
uo.useobject(sunduk)
uo.useobject('backpack')
checklag()
t=0
ore:
for i=0 to 5
repeat
uo.findtype(Ore[i],-1,'backpack')
if uo.findcount() then
uo.set('grabdelay','1100')
uo.moveitem('finditem',0,sunduk)
wait(900+uo.random(3)*100+uo.random(4)*25)
end if
until uo.findcount()==0
next
if uo.weight>val(uo.getglobal('weight')) and t<10 then
uo.print('руда застряла в паке..')
uo.findtype(-1,-1,'backpack')
if uo.findcount() then
uo.moveitem('finditem',0,'backpack',str(uo.getx('finditem')),str(uo.gety('finditem')),str(uo.getz('finditem')))
wait(800+uo.random(3)*100+uo.random(4)*25)
checklag()
t=t+1
end if
goto ore:
end if
####
for i=0 to 2
regs(Item[i],kol)
if count(Item[i])==0 then
repeat
uo.print('vidimo regi zastrali v pake..')
uo.findtype(-1,-1,'backpack')
if uo.findcount() then
uo.moveitem('finditem',0,'backpack',str(uo.getx('finditem')),str(uo.gety('finditem')),str(uo.getz('finditem')))
wait(1000+uo.random(3)*100+uo.random(4)*25)
checklag()
end if
until count(Item[i])>0 or uo.dead()
end if
next
####
if uo.count(Item[3],'0x0060')<4 then
if invislog==1 then
uo.findtype(Item[3],'0x0060',sunduk)
uo.setglobal('invislog',str(uo.findcount()))
end if
repeat
uo.findtype(Item[3],'0x0060',sunduk)
if uo.findcount() then
uo.moveitem('finditem')
wait(1000+uo.random(3)*100+uo.random(4)*25)
else
uo.print('NET INVIZOK!')
wait(4000)
end if
until uo.dead() or uo.count(Item[3],'0x0060')>=3
end if
wait(600)
if log==1 then
count(2)
end if
end sub
sub regs(Reg,kol)
var i=0, k=0
UO.FindType(Reg,-1,sunduk)
k= kol - uo.count(Reg)
if k>0 and uo.findcount()>0 then
uo.grab(str(k),'finditem')
wait(900+uo.random(3)*100)
checklag()
end if
end sub
sub checklag()
uo.deletejournal()
uo.click('backpack')
repeat
wait(500)
until uo.injournal('backpack')
end sub[code][/code]