Blacksmithing Macro from 1 to 115 (Version 2.2) 8/3/04

Post your completed (working) macros here. Only for macros using MQ2Data syntax!

Moderator: MacroQuest Developers

GD
a snow griffon
a snow griffon
Posts: 353
Joined: Sat Jun 29, 2002 11:57 pm

Post by GD » Sun Nov 14, 2004 5:20 am

BTW, those Steel Arrowheads can only be made by worshipers of Karana, so unless you worship the wet bastard, you'll have to use some other method.
Opinions are like assholes, everyone has one, but most of them stink.

armysoldier
a hill giant
a hill giant
Posts: 189
Joined: Mon Jun 27, 2005 2:13 am
Location: Florida (Stationed at FT Carson CO)

updated the mac

Post by armysoldier » Fri Sep 30, 2005 10:13 pm

was getting stuck on tables and crap so i added a few waypoints to the mac

took out the donebutton commabd and replaced with /keypress esc

thats it ..

8-)

Code: Select all

| 
| 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