|
| smithing.mac
| Takes you from 1 to 115 in smithing
| Version 2.7
| Date: September 14, 2004
|
| Please be sure to get the lastest updates at http://www.soc-music.com/mq2/
|
| Before are the settings you need to change for you.
| This Macro can take you up to 115 in Blacksmithing.
| SkillMaxWanted can be change to what skill you want to stop at.
| MerchantNameA is which merchant has the sheet metals.
| MerchantNameB is which merchant has the molds.
| MerchantNamec is which merchant has the water.
| You will need to change the DelayMult to higher if you are laggy, this
| number will be multiplied to the default delay.
|
| This Macro works best in the Abysmal Sea since all the components are there.
| You WILL need to be behind Snokin Breaksteel for this macro to work.
|
| Disclaimer:
| Code was used from other programers also from the MQ Forums.
| This macro may not work any other place then the Abysmal Sea.
|
#event CombineError "#*#There was no place to put that#*#"
#event CombineError "#*#You cannot combine these items in this container type!#*#"
#event CombineError "#*#did not accept these items#*#"
#event ContUsed "#*#Someone else is using that. Try again later.#*#"
#include common/sell.inc
#include common/buy.inc
#include common/packs.inc
#include common/cleanpacks.inc
Sub Main
/declare OldSkill int outer
/declare SkillMaxWanted int outer
/declare PackCode string outer
/declare Component[10] string outer
/declare i int outer
/declare MerchantNameA string Outer
/declare MerchantNameB string Outer
/declare MerchantNameC string Outer
/declare CompA item outer
/declare CompB item outer
/declare CompC item outer
/declare CombItemName string outer
/declare ItemTo string outer
/declare EndingVar int outer
/declare Levelname int outer
/declare DelayMult int outer
/varset OldSkill ${Me.Skill[Blacksmithing]}
| ************************************************
| * Change these settings to what you want. *
| ************************************************
/varset MerchantNameA "Snokin Breaksteel"
/varset MerchantNameB "Cevroy Sharpaxe"
/varset MerchantNameC "Dray Cuves"
/varset SkillMaxWanted 115
/varset DelayMult 1
| ************************************************
| ************************************************
:start
/echo Blacksmithing is at ${Me.Skill[Blacksmithing]}
/if (${Me.Skill[Blacksmithing]}>=${SkillMaxWanted}) {
/echo Blacksmithing is at ${SkillMaxWanted}. Quiting!
/endmacro
}
/if (${Me.Skill[Blacksmithing]}<92) {
/varset CompA "gorget mold"
/varset CompB "sheet metal"
/varset CompC "water flask"
/varset CombItemName "BG"
/varset ItemTo "Banded Gorget"
}
/if (${Me.Skill[Blacksmithing]}>=92 && ${Me.Skill[Blacksmithing]}<102) {
/varset CompA "cloak sectional mold"
/varset CompB "sheet metal"
/varset CompC "water flask"
/varset CombItemName "BC"
/varset ItemTo "Banded Cloak"
}
/if (${Me.Skill[Blacksmithing]}>=102 && ${Me.Skill[Blacksmithing]}<=115) {
/varset CompA "mail sectional mold"
/varset CompB "sheet metal"
/varset CompC "water flask"
/varset CombItemName "BM"
/varset ItemTo "Banded Mail"
}
/varset EndingVar 1
/delay ${Math.Calc[${DelayMult}*1]}s
/target ${MerchantNameA}
/face
/delay ${Math.Calc[${DelayMult}*1]}s
/nomodkey /click right target
/delay ${Math.Calc[${DelayMult}*1]}s
/call OpenPacks
/call Sell ${ItemTo}
/delay ${Math.Calc[${DelayMult}*1]}s
/call Sell ${CompA}
/delay ${Math.Calc[${DelayMult}*1]}s
/call Sell ${CompB}
/delay ${Math.Calc[${DelayMult}*1]}s
/call Sell ${CompC}
/delay ${Math.Calc[${DelayMult}*1]}s
/call Buy ${CompB} 30
/delay ${Math.Calc[${DelayMult}*1]}s
/call ClosePacks
/keypress esc
/delay ${Math.Calc[${DelayMult}*2]}s
/look
/call GoToMerchantB
/delay ${Math.Calc[${DelayMult}*2]}s
/target ${MerchantNameB}
/face
/delay ${Math.Calc[${DelayMult}*2]}s
/nomodkey /click right target
/delay ${Math.Calc[${DelayMult}*1]}s
/call Buy ${CompA} 10
/delay ${Math.Calc[${DelayMult}*1]}s
/keypress esc
/delay ${Math.Calc[${DelayMult}*1]}s
/look
/call GoToMerchantC
/delay ${Math.Calc[${DelayMult}*2]}s
/target ${MerchantNameC}
/face
/delay ${Math.Calc[${DelayMult}*1]}s
/nomodkey /click right target
/delay ${Math.Calc[${DelayMult}*1]}s
/call Buy ${CompC} 30
/delay ${Math.Calc[${DelayMult}*1]}s
/keypress esc
/delay ${Math.Calc[${DelayMult}*1]}s
/call GotoForge
/look
/delay ${Math.Calc[${DelayMult}*1]}s
/nomodkey /click left item
/delay ${Math.Calc[${DelayMult}*2]}s
/doevents
/delay ${Math.Calc[${DelayMult}*1]}s
/call OpenPacks
/delay ${Math.Calc[${DelayMult}*2]}s
/call readIni "${CombItemName}"
:Begin
/if (${EndingVar}==1) /call ClearCursor
/for i 1 to 10
/if (${EndingVar}==1) /call AddComp "${Component[${i}]}" ${i}
/next i
/if (${EndingVar}==1) /call DoCombine
/if (${EndingVar}==1) /goto :Begin
/delay ${Math.Calc[${DelayMult}*1]}s
/call ClosePacks
/nomodkey /keypress esc
/call GoToMerchantA
/delay ${Math.Calc[${DelayMult}*1]}s
/target ${MerchantNameA}
/face
/delay ${Math.Calc[${DelayMult}*1]}s
/nomodkey /click right target
/delay ${Math.Calc[${DelayMult}*1]}s
/call OpenPacks
/delay ${Math.Calc[${DelayMult}*2]}s
/call Sell ${ItemTo}
/delay ${Math.Calc[${DelayMult}*1]}s
/call Sell ${CompA}
/delay ${Math.Calc[${DelayMult}*1]}s
/call ClosePacks
/keypress esc
/goto :start
/return
Sub readIni(RecipeName)
/declare Container string
/echo Running ${RecipeName} recipe
/if (${Ini["smithing.ini","${RecipeName}",-1,"NOTFOUND"].Equal["NOTFOUND"]}) {
/echo Recipe ${RecipeName} not found
/endmacro
}
/varset Container ${Ini[smithing.ini,${RecipeName},Cont,Enviro]}
/if (${Container.Equal[Enviro]}) {
/varset PackCode Enviro
} else {
/varset PackCode ${FindItem[=${Container}].InvSlot}
/if (${PackCode.Equal[NULL]}) {
/echo Could not find container ${Container}
/varset EndingVar 2
/return
}
| pack1 = 22, ... , pack8 = 29
/varset PackCode pack${Math.Calc[${PackCode}-21].Int}
}
/call cleanPack "${Container}"
/for i 1 to 10
/varset Component[${i}] ${Ini[smithing.ini,${RecipeName},Comp${Math.Calc[${i}-1].Int},NOTFOUND]}
/next i
/return
sub ClearCursor
:Loop
/if (!${Cursor.ID}) /return
/autoinv
| /destroy
/delay ${Math.Calc[${DelayMult}*5]}s
/doevents
/goto :Loop
/return
sub DoCombine
:Loop
/combine ${PackCode}
/delay ${Math.Calc[${DelayMult}*1]}s
/if (${PackCode.Equal[Enviro]}) /delay 1s
/doevents
/if (${InvSlot[${PackCode}].Item.Items}) /goto :Loop
/delay 5
/if (${Me.Skill[Blacksmithing]}>${OldSkill}) {
/echo Your Blacksmithing Went Up!! It's now ${Me.Skill[Blacksmithing]}!
/varset OldSkill ${Me.Skill[Blacksmithing]}
}
/return
sub AddComp(CompName, PackSlot)
/if (${CompName.Equal[NOTFOUND]}) /return
/if (!${FindItem[=${CompName}].ID}) {
/echo Could not find ${CompName} in inventory
/beep
/varset EndingVar 2
/return
}
:Loop
/nomodkey /ctrl /itemnotify ${FindItem[=${CompName}].InvSlot} leftmouseup
/if (!${Cursor.ID}) {
/delay ${Math.Calc[${DelayMult}*1]}s
/goto :Loop
}
/if (${PackCode.Equal[Enviro]}) {
/nomodkey /itemnotify ${InvSlot[enviro${PackSlot}]} leftmouseup
} else {
/nomodkey /itemnotify in ${PackCode} ${PackSlot} leftmouseup
}
/return
Sub Event_CombineError
/varset EndingVar 2
/return
Sub Event_ContUsed
/echo Container in use. Waiting 30 seconds and trying again.
/delay 30s
/itemtarget "Forge"
/delay ${Math.Calc[${DelayMult}*1]}s
/nomodkey /click left item
/delay ${Math.Calc[${DelayMult}*2]}s
/doevents
/return
Sub GoToMerchantA
/echo Going to ${MerchantNameA}.
:PullMoveLoopa
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc 18.59,221.98
/if (${Math.Distance[18.59,221.98]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[18.59,221.98]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopb
}
/goto :PullMoveLoopa
/delay 1s
:PullMoveLoopb
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc 126.89,236.86
/if (${Math.Distance[126.89,236.86]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[126.89,236.86]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopc
}
/goto :PullMoveLoopb
:PullMoveLoopc
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc 130.49,259.22
/if (${Math.Distance[130.49,259.22]}>2) {
/nomodkey /keypress forward hold
/nomodkey /keypress USE
/nomodkey /keypress USE
}
/if (${Math.Distance[130.49,259.22]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopd
}
/goto :PullMoveLoopc
/delay 1s
:PullMoveLoopd
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc 92.71,259.21
/if (${Math.Distance[92.71,259.21]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[92.71,259.21]}<=2) {
/nomodkey /keypress forward
/goto :end
}
/goto :PullMoveLoopd
:end
/return
Sub GoToMerchantB
/echo Going to ${MerchantNameB}.
:PullMoveLoopa
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc 130.49,259.22
/if (${Math.Distance[130.49,259.22]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[130.49,259.22]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopb
}
/goto :PullMoveLoopa
:PullMoveLoopb
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc 129.65,235.06
/if (${Math.Distance[129.65,235.06]}>2) {
/nomodkey /keypress forward hold
/nomodkey /keypress USE
}
/if (${Math.Distance[129.65,235.06]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopc
}
/goto :PullMoveLoopb
:PullMoveLoopc
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc 35.36,235.70
/if (${Math.Distance[35.36,235.70]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[35.36,235.70]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopd
}
/goto :PullMoveLoopc
:PullMoveLoopd
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc 58.49,263.19
/if (${Math.Distance[58.49,263.19]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[58.49,263.19]}<=2) {
/nomodkey /keypress forward
/goto :end
}
/goto :PullMoveLoopd
:end
/return
Sub GoToMerchantC
/echo Going to ${MerchantNameC}.
:PullMoveLoopc
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -17.97,242.28
/if (${Math.Distance[-17.97,242.28]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[-17.97,242.28]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopd
}
/goto :PullMoveLoopc
/delay 1s
:PullMoveLoopd
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -56.90,285.24
/if (${Math.Distance[-56.90,285.24]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[-56.90,285.24]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoope
}
/goto :PullMoveLoopd
/delay 1s
:PullMoveLoope
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -240.09,285.24
/if (${Math.Distance[-240.09,285.24]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[-240.09,285.24]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopf
}
/goto :PullMoveLoope
/delay 1s
:PullMoveLoopf
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -242.62,215.95
/if (${Math.Distance[-242.62,215.95]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[-242.62,215.95]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopi
}
/goto :PullMoveLoopf
/delay 1s
:PullMoveLoopi
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -221.62,215.95
/if (${Math.Distance[-221.62,215.95]}>2) {
/nomodkey /keypress forward hold
/nomodkey /keypress USE
}
/if (${Math.Distance[-221.62,215.95]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopg
}
/goto :PullMoveLoopi
:PullMoveLoopg
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -220.54,176.45
/if (${Math.Distance[-220.54,176.45]}>2) {
/nomodkey /keypress forward hold
/goto :PullMoveLoopg
}
/if (${Math.Distance[-220.54,176.45]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLooph
}
/goto :PullMoveLoopg
:PullMoveLooph
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -155.54,172.52
/if (${Math.Distance[-155.54,172.52]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[-155.54,172.52]}<=2) {
/nomodkey /keypress forward
/goto :end
}
/goto :PullMoveLooph
:end
/return
Sub GoToForge
/echo Going to Forge.
:PullMoveLoopa
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -55.54,189.52
/if (${Math.Distance[-155.54,172.52]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[-155.54,172.52]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopb
}
/goto :PullMoveLoopa
/delay 1s
:PullMoveLoopb
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -220.54,176.45
/if (${Math.Distance[-220.54,176.45]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[-220.54,176.45]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopc
}
/goto :PullMoveLoopb
/delay 1s
:PullMoveLoopc
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -215.14,215.85
/if (${Math.Distance[-215.14,215.85]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[-215.14,215.85]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopd
}
/goto :PullMoveLoopc
:PullMoveLoopd
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -242.62,215.95
/if (${Math.Distance[-242.62,215.95]}>2) {
/nomodkey /keypress forward hold
/nomodkey /keypress USE
}
/if (${Math.Distance[-242.62,215.95]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoope
}
/goto :PullMoveLoopd
/delay 1s
:PullMoveLoope
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -240.09,285.24
/if (${Math.Distance[-240.09,285.24]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[-240.09,285.24]}<=2) {
/nomodkey /keypress forward
/goto :PullMoveLoopf
}
/goto :PullMoveLoope
/delay 1s
:PullMoveLoopf
/if (${Me.State.Equal[SIT]}) /stand
/face nolook loc -56.90,285.24
/if (${Math.Distance[-56.90,285.24]}>2) /nomodkey /keypress forward hold
/if (${Math.Distance[-56.90,285.24]}<=2) {
/nomodkey /keypress forward
/goto :forge
}
/goto :PullMoveLoopf
:forge
/itemtarget "Forge"
:PullMoveLoopg
/if (${Me.State.Equal[SIT]}) /stand
/face
/if (${Target.Distance}>10) /nomodkey /keypress forward hold
/if (${Target.Distance}<=10) {
/nomodkey /keypress forward
/goto :end
}
/goto :PullMoveLoopg
:end
/return