Page 2 of 2

Posted: Sun Nov 14, 2004 5:20 am
by GD
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.

updated the mac

Posted: Fri Sep 30, 2005 10:13 pm
by armysoldier
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