Code: #------------------START OF CONFIG FUNCTIONS (ADD TREES TO FILE) ----------------- sub config() var f=file('trees.dat') var w,n=0,i
dim aX[300] dim aY[300] dim aID[300] uo.exec('filterspeech add party') uo.exec('filterspeech on') uo.say('')
uo.charprint('0x0045','Lumber (by xinxilas ChavinhO)') uo.charprint('0x0035','Choose the trees') uo.charprint('0x0022','Select your char to finalize')
loop: uo.say('/add') while not uo.targeting() wait(10) wend while uo.targeting() wait(10) wend
if uo.lasttile(0)==400 then if n>0 then f.open() f.create() w=safe call f.writeln(str(n)) for i=1 to n w=safe call f.writeln(str(aX[i])+' '+str(aY[i])+' '+str(aID[i])) next f.close() endif goto fim endif
if aID(str(uo.lasttile(0)))==0 then uo.charprint('0x0022','Invalid Tree.') goto loop endif
if n>=1 then for i=1 to n if str(aX[i])+' '+str(aY[i]) == str(uo.lasttile(1))+' '+str(uo.lasttile(2)) then uo.charprint('0x0022','Repeated Tree') goto loop endif next endif
n=n+1 aID[n] = uo.lasttile(0) aX[n] = uo.lasttile(1) aY[n] = uo.lasttile(2) uo.charprint('0x0045','Tree added('+str(n)+')') goto loop fim: if n>0 then uo.charprint('0x0045','Trees: '+str(n)) uo.charprint('0x0045','OK! get your runes and start the macro') if n<76 then uo.charprint('0x0022','Recomended more then 75 arvores.') endif else uo.charprint('0x0022','The File wasnt modified/created.') endif uo.exec('filterspeech clear') uo.exec('filterspeech off') end sub
Sub aID( type ) var i DIM tree[23] tree[0] = '3274' tree[1] = '3275' tree[2] = '3276' tree[3] = '3277' tree[4] = '3280' tree[5] = '3283' tree[6] = '3286' tree[7] = '3288' tree[8] = '3289' tree[9] = '3290' tree[10] = '3291' tree[11] = '3292' tree[12] = '3293' tree[13] = '3294' tree[14] = '3295' tree[15] = '3296' tree[16] = '3299' tree[17] = '3302' tree[18] = '3394' tree[19] = '3395' tree[20] = '3417' tree[21] = '3440' tree[22] = '3461' for i = 0 to 22 if tree[i]==type then return 1 endif next return 0 endsub #------------------END OF CONFIG FUNCTIONS (ADD TREES TO FILE) -----------------
Code: #--------------------START COMMENTS-------------------- # MARK AN RUNE NEAR OF THE FIRST TREE # ANTI-PKILLERS (GUARDS, BANDS, POTS, CURE) # MAKE SURE YOU HAVE BANDS AND HEAL POTS (IT WORKS WIHTOUT THIS ITEMS) # BRING A RUNE ON YOUR BACKPACK TO HELP THE MACRO... # ...SO YOU CAN BACK EXATLY WHERE YOU WERE WHEN YOU GOT YOUR WEIGHT LIMIT # FEATURE: TEXTBOX WITH ALL YOUR LOGS AT BANK # FEATURE: STATUS INFOS(LOGS, TREES, HOW MANY BACKS TO BANK) CLICK ON YOUR CHAR # FEATURE: TO SEE ALL YOUR LOGS AT BACKPACK, CLICK ON YOUR BACKPACK # IF YOU ARE NOT GM LUMBERJACKING, IT SHOWS ALSO YOUR SKILL # TO START: ,EXEC LUMBER # by XINXILAS CHAVINHO #------------------END COMMENTS-----------------
#------------------START LUMBER SCRIPT-----------------
#--------------------START CONFIG-------------------- var f=file('trees.dat') #NAME of file to keep the Trees infos var toofar='Isto esta' #MSGs (when you did not reach the tree) var putlog='Voce pos' #MSGs (when put logs on backpack) var logsover='Nao ha ma' #MSGs ( tree whitout choops(logs) ) var fail='Voce nao con|Skills L' #MSGs (when you failed) var attacked='Vortex|attacks you' #MSGs (dangerous things) var bank='You have' #MSG (when bank opens) var potheal='.drinkheal' #MSG heal potion bind of your shard(or use ',useobject X' ',usetype X' etc..) var tent1=4 #HOW MANY TRYS to get logs before goes to next tree var tent2=4 #EXTRA-TRYS in case your char already got and log on the tree at the moment #(TRYS and EXTRA TRYS is a protection in case you are not skill GM) var weight=350 #WEIGHT LIMIT var runebank='runebook 4' #RUNEBOOK and NUMBER of bank rune var runelogs='runebook 5' #RUNEBOOK and NUMBER of first tree rune var colorm = 44 #COLOR OF TEXTS when you got an Log #1=same color of the log #--------------------END CONFIG--------------------
sub lumber() dim aID[500] dim aX[500] dim aY[500] var a, i, try, log starting() f.open() a=safe call f.readNumber() for i=1 to a aX[i]=safe call f.ReadNumber() aY[i]=safe call f.ReadNumber() aID[i]=safe call f.ReadNumber() next f.close()
loop: for i=1 to a if ( uo.weight > weight ) then uo.charprint('0x0022','You get your weight limit') guardar.logs() endif log=0 try=0 irarvore(aX[i],aY[i]) uo.charprint('0x0050','Tree: '+str(i)+' ('+str(a)+')') repeat status() uo.deletejournal() uo.waittargettile(aID[i], aX[i], aY[i], 0) uo.useobject('hatchet') repeat wait(10) status() until uo.injournal( toofar + '|' + putlog + '|' + logsover + '|' + attacked + '|' + fail ) or uo.life<uo.str if uo.injournal( putlog ) then msg.log() log=1 endif if uo.injournal( fail ) then try=try+1 uo.charprint('0x0007', 'Try: ' + str(try) + '/' + str(log*tent1+tent2) ) endif if uo.life<uo.str or uo.injournal( attacked ) then perigo() endif until uo.injournal( toofar + '|' + logsover ) or (try==tent1 and log==0) or try==tent1+tent2 if log==1 then uo.setglobal('arvores',val(uo.getglobal('arvores'))+1) endif next uo.charprint('0x0022','Trees ended') recall('recall '+runelogs) goto loop end sub
sub starting() uo.setglobal('arvores','') uo.setglobal('bank','') uo.setglobal('logs','') hatchet() uo.charprint('0x0007','Strating Script.') uo.charprint('0x0045','By ChavinhO!') recall('recall '+runelogs) uo.deletejournal() endsub
sub hatchet() uo.useobject('backpack') if uo.count('0x0F44') or uo.count('0x0F43') then if uo.count('0x0F44') then uo.findtype('0x0F44','-1','my') endif if uo.count('0x0F43') then uo.findtype('0x0F43','-1','my') endif uo.addobject('hatchet','finditem') else uo.charprint('0x0022','You have no Hatchet') uo.charprint('0x0022','Script stopped') uo.exec('terminate all') endif endsub
sub guardar.logs() if uo.count('0x1F14') then uo.findtype('0x1F14','-1','backpack') uo.cast('Mark','finditem') wait(6000) endif recall('recall '+runebank) uo.setglobal('bank',val(uo.getglobal('bank'))+1) logs.bank() if uo.count('0x1F14') then uo.findtype('0x1F14','-1','backpack') recall('runa') else recall('recall '+runelogs) endif endsub
sub logstobank() var b,c,n uo.deletejournal() uo.msg('bank') repeat wait(5) until uo.injournal( bank ) b=uo.getserial('lastcontainer') while uo.count('0x1BDD')>0 uo.findtype('0x1BDD','-1','backpack') while not uo.ContainerOF('finditem')==b UO.moveitem('finditem','-1',b) wait(5) wend if uo.getcolor('finditem')=='0x0000' then uo.setglobal('logs',val(uo.getglobal('logs'))+uo.getquantity('finditem')) endif wend showlogs(b) endsub
sub status() var x, l,uid,n=uo.getname('self') if uo.injournal(n) then uo.deletejournal(n) uo.findtype('0x1BDD','0x0000','backpack') x=uo.getquantity('finditem')+val(uo.getglobal('logs')) uo.charprint('0x0047','..went to bank '+str(val(uo.getglobal('bank')))+' times.') uo.charprint('0x0047','..cutted '+str(val(uo.getglobal('arvores')))+' trees.') uo.charprint('0x0047','..tem '+str(x)+' normal logs.') if uo.skillval('Lumberjacking',1) < 1000 then uo.print('You have '+ str(uo.skillval('Lumberjacking',1)) + ' LumberJacking.') endif endif if uo.injournal('backpack') then uid=uo.getserial('backpack') showlogs(uid) uo.deletejournal('backpack') endif endsub
sub msg.log() var l, c, n uo.ignorereset() uo.deletejournal('logs') uo.findtype('0x1BDD','-1','backpack') l=uo.findcount('finditem')-1 while l>0 uo.ignore('finditem') uo.findtype('0x1BDD','-1','backpack') l=l-1 wend uo.findtype('0x1BDD','-1','backpack') uo.click('finditem') repeat wait(1) until uo.injournal('log') c=uo.getcolor('finditem') if colorm<>1 then c=colorm endif n=uo.getname('finditem') uo.charprint( c,'You have: '+n ) uo.ignorereset() endsub
sub showlogs(uid) var l,n if not uid==uo.getserial('backpack') then uo.exec('textclear') endif uo.ignorereset() uo.deletejournal('logs') uo.findtype('0x1BDD','-1',uid) l=uo.findcount('finditem') while l>0 uo.deletejournal('logs') uo.click('finditem') repeat wait(1) until uo.injournal('log') n=uo.getname('finditem') uo.print('Voce tem: '+n) if not uid==uo.getserial('backpack') then uo.exec('showjournal 1') endif uo.ignore('finditem') uo.findtype('0x1BDD','-1',uid) l=l-1 wend uo.ignorereset() endsub
sub recall(runa) var px=uo.getx('self'),py=uo.gety('self'),timer timer=uo.timer() + 80 if runa=='runa' then uo.cast('Recall','finditem') else uo.exec(runa) endif while px==uo.getx('self') and py==uo.gety('self') if uo.timer() >= timer then uo.useskill('Meditation') recall(runa) endif wait(5) wend endsub
sub irarvore(x,y) dim key[8] key[0] = '383933' key[1] = '383739' key[2] = '394034' key[3] = '373840' key[4] = '403735' key[5] = '403937' key[6] = '373836' key[7] = '394038' var myX,myY,t=0,d,d2,z,m=0,mydir repeat myX=uo.getX(); myY=uo.getY(); if x==myX then if y>myY then uo.Press(35) endif if y<myY then uo.Press(33) endif else if x<myX then if y==myY then uo.Press(36) else if y<myY then uo.Press(38) endif if y>myY then uo.Press(37) endif endif endif if x>myX then if y==myY then uo.Press(34) else if y<myY then uo.Press(39) endif if y>myY then uo.Press(40) endif endif endif endif if uo.getx()==myX and uo.gety()==myY then if t==4 then t=0 mydir=uo.getdir() d=val(MID(key[mydir],0,2)) d2=val(MID(key[mydir],2,2)) for z=1 to 4 uo.press(d) next if uo.getx()==myX and uo.gety()==myY then for z=1 to 3 uo.press(d2) next endif else t=t+1 endif endif wait(70) endif until (num(x-uo.getx())<=1 and num(y-uo.gety())<=2) or (num(x-uo.getx())<=2 and num(y-uo.gety())<=1) end sub
sub num(num) if num>=0 then return num else return num*(-1) end if end sub
sub perigo() var t1=0,t2=0,t3=0,t4=0 repeat if t1 < uo.timer() then uo.msg('guards') t1=UO.Timer() + 10 endif if uo.poisoned('self') then if t2 < uo.timer() then uo.cast('Cure','self') t2=UO.Timer() + 25 wait(100) endif else if t3< uo.timer() then uo.bandageself() wait(120) t3=UO.Timer() + 70 endif endif if uo.life < 75 then if t4 < uo.timer() then uo.msg('.drinkheal') t4=UO.Timer() + 160 wait(100) endif endif wait(20) until uo.life>=uo.str uo.exec('exec guards') end sub
sub guards() var i for i=1 to 6 uo.msg('guards') wait(1000) next endsub #------------------START LUMBER SCRIPT-----------------
|