Mining+рекол по рунам.

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
Superuser
Posts: 13
Joined: 2010-12-14 11:52:17

Mining+рекол по рунам.

Post by Superuser »

Извиняюсь что создаю подобную тему, но в прошлой так и не раскрыли сути проблемы.
Вот скрипт на мининг с реколом по шахтам :

Code: Select all

##########################
# Mining в Пещерах v 3.0 #
##########################



var sunduk = '0x4161116A' ; ID сундука с регами/для выгруза руды

var check = 0 ; если 1 то реколиться только от ПК, если 0, то реколиться от всех
var time = 3 ; время ожидания (в минутах) пока уйдет пк из шахты
var golem = 0 ; если 1 будет пить инвизку при появлении голема, 0 не будет
var invislog = 1 ; если 1 - будет вести лог по использованным инвизкам, 0 - нет
var maxweight = 600  ; вес при котором реколиться домой
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","0x4155CA1C")
uo.addobject("runeCave1","0x4058A77A")
uo.addobject("runeCave2","0x4058A77E")
uo.addobject("runeCave3","0x4058A77C")
uo.addobject("runeCave4","0x4058A77D")
uo.addobject("runeCave5","0x404A600A")
uo.addobject("runeCave6","0x4058A77F")
######################################## ; до сюда ВСЕ УДАЛЯЕМ и вставляем то что выдаст ,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('D:\Games\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

Проблема вся в том, что когда он выкапывает по одной из рун все вокруг себя он должен лететь домой и потом лететь по другой руне, а чар зацыкливается и начинает реколится по это же руне где только что копал. Тоесть начинает летать сундук -> таже самая руна -> сундук и так до бесконечности.
Проблема не в версии инжекта совершенно точно, так как перепробовал несколько разных.

Каждый раз при запуске скрипта я делаю маркер рун, вставляю как сказано в начало скрипта, далее беру кирку или лопату и лечу по руне 0, запускаю скрипт он начинает копать, далее происходит выше написанное. Пробовал и руны в паке держать и в сундуке, все одно и тоже.
Может я что-то не правильно делаюю?
Superuser
Posts: 13
Joined: 2010-12-14 11:52:17

Re: Mining+рекол по рунам.

Post by Superuser »

Кто пользовался этим скриптом отпишитесь плиз в чем засада или протестируйте пожалуйста кто нибудь.

P.S. Для меня уже не актуально, настроил себе другой.
Возможна тема все равно была бы полезна кому-то еще, так что все таки хотелось бы услышать тех кому не лень протестировать у себя.
Crach!
Posts: 30
Joined: 2009-08-04 14:16:41
Location: SPB
Contact:

Re: Mining+рекол по рунам.

Post by Crach! »

кому не лень себе напишет
Post Reply