Moderator: MacroQuest Developers


Code: Select all
Sub GotoLoc
/varset v91 $rand(5)
:GotoLocLoop
/face loc $p0
/if "$p1"=="u" /Press u
/call AutoRun 1
/if n $distance($p0)>$v91 /goto :GotoLocLoop
/call AutoRun 0
/return
Code: Select all
|cheesefiend.mac
|By Malachi
|
|Cheese routine stolen from Plazmic and L124RD
|spell section stolen from someones bear.mac
|autorun stolen from hunter.mac
|walk stolen from Macrokit
|bank routine stolen from bank.mac
|
|This code is awful probably doesn't work. All help is appreciated.
|It's very bloated and redundant as I'm *no* good at variables and associated logic
|It would probably run better split into about 5 files
|It's very likely you will get banned w/ this script.
|
|Get near Granger in SH. Decide if you want to cast a spell.
|There are several optional lines in this code:
|Do you want to cast a spell? (default yes)
|What gem slot is your spell in?
|How long does spell take to cast? (default 8 seconds)
|What is spell duration? (default 15m)
|How much money do you want to withdraw after banking? (default 15p)
|
|
#include routines.mac
#define Amount v75
|###################################################################################
sub Main
/varset t10 0
/afk I'm power baking. Or I've fallen asleep at the keyboard.
/filter skills none
/stand
/mqlog
/varcalc v50 $char(plat)*10+$char(gold)
/varset t0 3000
/varset t1 $p0
:StartLoop
/if $char(gold) >= 3000 {
/call BankThatPlat
} /else :GetStarted
:GetStarted
/call FindCombiner Mixing
/if $return==99 /return
/varset v80 $return
/target Granger
/if "$target()"=="FALSE" /goto :nogranger
/cleanup
:cleanuploop0
/if "$target()"=="TRUE" /goto :cleanuploop0
/click left auto
/click right inv $v80
/varset v39 0
/if "$cursor()"=="TRUE" /click left auto
:cleanpack
/if $pack($v80,empty)==FALSE /call CleanPack
/if n $v39==30 /goto :toofull
/varadd v39 1
/if $pack($v80,empty)==FALSE /goto :cleanpack
/if "$cursor()"=="TRUE" /click left auto
/face loc -100,1167
/sendkey down ctrl
/call MakeCheese2
/sendkey up ctrl
/if "$cursor()"=="TRUE" /click left auto
/call SellBuy
/if $t0==0 /call LogStats
/goto :StartLoop
:TooFull
/echo You are too full on stuff, aborting macro.
/mqlog You are too full on stuff, aborting macro
/call Logoff
/return
Sub CleanPack
/varcalc v2 $pack($v80,slots)-1
/sendkey down shift
/for v1 0 to $v2
/if "$item($v80,$v1)"=="NULL" /goto :skipclean
/click left pack $v80 $v1
:cleanwait0
/if "$cursor()"!="TRUE" /goto :cleanwait0
/click left auto
:cleanwait1
/if "$cursor()"=="TRUE" /goto :cleanwait1
:skipclean
/next v1
/sendkey up shift
/return
Sub MakeCheese
:MakeCheese
/finditem "Rennet"
/click left pack $v80 0
/delay 1
/finditem "Bottle of Milk"
/click left pack $v80 1
/delay 1
/finditem "Bottle of Milk"
/click left pack $v80 2
/delay 1
/finditem "Dairy Spoon"
/click left pack $v80 3
/delay 1
/if n $pack($v80,space)>0 /return
/click left pack $v80 combine
/for v1 1 to 75
/if "$cursor()"=="TRUE" /goto :AutoDropCheese
/delay 1
/next v1
/goto :MakeCheese
:AutoDropCheese
/if "$cursor(name)"=="Dairy Spoon" /goto :AutoDropSpoon
/click left auto
/delay 1
/if "$cursor()"=="TRUE" /goto :AutoDropCheese
:AutoDropSpoon
/click left auto
/if "$cursor()"=="TRUE" /goto :AutoDropSpoon
/goto :MakeCheese
/return
Sub MakeCheese2
:MakeCheese
/finditem "Rennet"
/if $find()==FALSE /return
:rennetwait0
/if "$cursor()"!="TRUE" /goto :rennetwait0
/click left pack $v80 0
:rennetwait1
/if "$cursor()"=="TRUE" /goto :rennetwait1
/finditem "Bottle of Milk"
/if $find()==FALSE /return
:milkwait0
/if "$cursor()"!="TRUE" /goto :milkwait0
/click left pack $v80 1
:milkwait1
/if "$cursor()"=="TRUE" /goto :milkwait1
/finditem "Bottle of Milk"
/if $find()==FALSE /return
:milkwait0
/if "$cursor()"!="TRUE" /goto :milkwait0
/click left pack $v80 2
:milkwait1
/if "$cursor()"=="TRUE" /goto :milkwait1
/finditem "Dairy Spoon"
/if $find()==FALSE /return
:spoonwait0
/if "$cursor()"!="TRUE" /goto :spoonwait0
/click left pack $v80 3
:spoonwait1
/if "$cursor()"=="TRUE" /goto :spoonwait1
/if n $pack($v80,space)>0 /return
/click left pack $v80 combine
:cheesewait
/if "$cursor()"=="TRUE" /goto :AutoDropCheese
/goto :cheesewait
/goto :MakeCheese
:AutoDropCheese
/if "$cursor(name)"=="Dairy Spoon" /goto :AutoDropSpoon
/click left auto
/goto :AutoDropCheese
:AutoDropSpoon
/click left auto
/if "$cursor()"=="TRUE" /goto :AutoDropSpoon
/goto :MakeCheese
/return
Sub SellBuy
/if n $t1==0 /call CastCHA
| Open merchant
/click left auto
/target Granger
/face
/press u
/varset v55 0
/doevents flush
:sellwait
/doevents
/if n $v55!=1 /goto :sellwait
/sendkey down shift
| Sell our cheese
:SellCheese
/finditem "Mature Cheese"
/if $find()==FALSE /goto :DoneSelling
/call buyitem
/goto :SellCheese
:DoneSelling
/varset v51 0
/finditem "Rennet"
/if $find()==TRUE /varset v51 1
/finditem "Bottle of Milk"
/if $find()==TRUE /if n $v80!=$find(pack) /goto :SkipMilk
| Buy Bottles of Milk
/click left merchant 9
/call buyitem
/call buyitem
/call buyitem
/call buyitem
| If we had Rennet left, buy extra milk
/if n $v51==0 /goto :SkipMilk
/call buyitem
:SkipMilk
| Buy Rennets
/click left merchant 10
/call buyitem
/call buyitem
/sendkey up shift
/cleanup
:cleanuploop1
/if "$target()"=="TRUE" /goto :cleanuploop1
/return
Sub LogStats
| Calc profit in gold
/varcalc v51 $char(plat)*10+$char(gold)-$v50
| calc plat/hr
/varcalc v52 $v51*360/$running
| Plat
/varcalc v53 $v51/10
| left over gold
/varcalc v54 $v51%10
/echo Profit: $v53.$v54pp, avg: $v52pp/hr
/mqlog Run time: $running sec, Profit: $v53.$v54pp, Average = $v52pp/hr
/varset t0 3000
/return
sub LogOff
/sit
/camp
/afk
/endmacro
/return
Sub BuyItem
/varcalc v98 $char(gold)*100+$char(silver)*10+$char(copper)
/click left merchant buy
:WaitBuy
/varcalc v97 $char(gold)*100+$char(silver)*10+$char(copper)
/if n $v98==$v97 /goto :WaitBuy
/return
Sub Event_Chat
/if "$p0"=="say" /if "$p1"~~"Granger" /varset v55 1
/return
|####################################################################################
Sub CastCHA
|If you want to cast a spell on yourself, then syntax is /target myself
|If you want to target NPC then syntax is /target Granger
/varset t10 0
/target myself
/call Event_CastFizzle
:LoopFizzle
/doevents
/if n $t9>0 /goto :LoopFizzle
|This sets how long the spell lasts on target. If you want to up skill fast, let it cast
|every time, set timer to about 1 minute (/varset t1 1m), if you just want to let charisma
|or alliance ride for better prices, then set to spell duration.
/varset t10 15m
/return
|#####################################################################################
Sub Event_CastFizzle
/delay 5
|Insert spell gem #, if spell gem is number 5, then /cast 5
/cast 1
|Insert casting time for spell here, if 8 seconds, then 8s
|I addvise adding an extra second or so for lag
/varset t9 7s
/return
|#####################################################################################
Sub AutoRun2
/if $p0==1 /sendkey down up
/if $p0==0 /sendkey up up
/return
|#####################################################################################
Sub BankThatPlat
| Make sure everything is closed and reset.
/press esc
/press esc
/press esc
/press esc
/press alt
/press shift
/press ctrl
/doortarget FDOORSL304
/face door
/call AutoRun2 1
/delay 2
/call Autorun2 0
/if $door open == 1 {
/call StartWalking
}else {/call OpenDoor}
|#####################################################################################
Sub OpenDoor
|How the heck do I open the door?
/mouseto target
/click left
/call StartWalking 50 3 1
|#####################################################################################
Sub AtBank
/doortarget FMDOOR301
/if $door open == 1 {
/call Bank
}else{
/mouseto target
/click left
|The following number sets amount of PP to withdraw after banking so that you
|can continue to bake
/call Bank 15
|#####################################################################################
Sub StartWalking
/varset a(50,0) 142,1778
/varset a(50,1) 86,1770
/varset a(50,2) 51,1176
/if n $a(5,1)==1 {
/face loc $a($a(5,0),$a(5,2))
/varset p0 $a(5,2)
} else {
/face loc $a($a(5,0),0)
/varset p0 0
}
/sendkey down up
:WalkBigLoop
/varset a(5,3) $rand(5)
:WalkLoop
/face loc $a($a(5,0),$p0)
/doevents
/if n $distance($a($a(5,0),$p0))>$a(5,3) /goto :WalkLoop
/if "$a(5,1)"=="1" {
/varsub p0 1
} else {
/varadd p0 1
}
/if n $p0!=$calc($a(5,2)+1) /if n $p0!=-1 /goto :WalkBigLoop
/sendkey up up
/goto AtBank
|########################################################################################
Sub Bank
/varcalc Amount $char(plat)+$char(gold)/10+$char(silver)/100+$char(copper)/1000
/varcalc v1 $p0
/varcalc v2 $p0-1
/varcalc v3 $char(plat,bank) - $p0
/sendkey down shift
/if $p1~~"nd" /goto :Withdrawl
:Plat
/if n $char(plat)==0 /goto :Gold
/click left plat
/click left bank plat
:Gold
/if n $char(gold)==0 /goto :Silver
/click left gold
/click left bank gold
:Silver
/if n $char(silver)==0 /goto :Copper
/click left silver
/click left bank silver
:Copper
/if n $char(copper)==0 /goto :ConvertCP
/click left copper
/click left bank copper
:ConvertCP
/if n $char(copper,bank)==0 /goto :ConvertSP
/click left bank copper
/click left bank silver
/click left bank copper
:ConvertSP
/if n $char(silver,bank)==0 /goto :ConvertGP
/click left bank silver
/click left bank gold
/click left bank silver
:ConvertGP
/if n $char(gold,bank)==0 /goto :Done
/click left bank gold
/click left bank plat
/click left bank gold
:Withdrawl
/if $v2==-1.00 /goto :Done
/for v5 0 to $v2
/if $v5==2001 {
/goto :Withdrawl2
}
/next v5
|| Method 1 -- for withdrawls of 1-2000pp
/sendkey down ctrl
/for v6 0 to $v2
/click left bank plat
/click left auto
/next v6
/sendkey up ctrl
/goto :Done
:Withdrawl2
/sendkey up shift
|| Method 2 -- for withdrawls of more than 2000pp
/echo Performing Withdrawl. This may take some time.
/mouseto bank plat
/click left
/mouseto + 23 +45
/delay 20
/for v4 1 to $v3
/delay 0
/click left
/next v4
/mouseto + 66 -22
/delay 20
/click left
/delay 5
/click left auto
:Done
/sendkey up shift
/if $p1~~"nd" {
/echo Withdrawn: $v1pp
} else /if $v2==-1.00 {
/echo Deposited: $Amountpp
} else {
/echo Deposited: $Amountpp ++ Withdrawn: $v6pp
}
/goto BackToBaking
|##############################################################################
sub BackToBaking
| Make sure everything is closed and reset.
/press esc
/press esc
/press esc
/press esc
/press alt
/press shift
/press ctrl
/face door
/call AutoRun2 1
/delay 2
/call Autorun2 0
/if $door open == 1 {
/call StartWalking2 50 3 0
}else {/call OpenDoor2}
|##############################################################################
sub StartWalking 2
/varset a(50,0) 142,1778
/varset a(50,1) 86,1770
/varset a(50,2) 51,1176
/if n $a(5,1)==1 {
/face loc $a($a(5,0),$a(5,2))
/varset p0 $a(5,2)
} else {
/face loc $a($a(5,0),0)
/varset p0 0
}
/sendkey down up
:WalkBigLoop
/varset a(5,3) $rand(5)
:WalkLoop
/face loc $a($a(5,0),$p0)
/doevents
/if n $distance($a($a(5,0),$p0))>$a(5,3) /goto :WalkLoop
/if "$a(5,1)"=="1" {
/varsub p0 1
} else {
/varadd p0 1
}
/if n $p0!=$calc($a(5,2)+1) /if n $p0!=-1 /goto :WalkBigLoop
/sendkey up up
/goto AtGranger
|###########################################################################
sub OpenDoor 2
|How the heck do I open the door?
/mouseto target
/click left
/call StartWalking 50 3 0
/goto AtGranger
|############################################################################
sub AtGranger
/doortarget FDOORSL304
/face door
/if $door open == 1 {
/call MovetoMerch}
else{ /mouseto target
/click left
/call MovetoMerch
|############################################################################
sub MovetoMerch
/target Granger
/call AutoRun2 1
/delay 2
/call Autorun2 0
/goto :GetStartedSorry good sir, you are incorrect. I've been making 120pp/hour w/ my mule while I sleep for the last several nights.Considering VI has gotten rid of all of the tradeskill combines where you could make plat, I don't think this is a problem anymore.