• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Rathe Mountains Farm_Giant.mac

Siddin

Rikk-tikk-tikki-tikki-tchk!
Joined
Feb 6, 2005
RedCents
504¢
There are quite a few checks to prevent kill stealing, but every now and then you'll get people that root and don't deal 1% damage to the mob before you get there. If you can steal aggro from them within 6 seconds, you'll ks em.

Farm_Giant.mac
Rich (BB code):
|Made for bards!!!!! will need a lot of customization for any other caster, fighter types not so much.

#turbo
#include move.inc
#include sell.inc
#include packs.inc
|If you don't have the noencumber offset for docrack, i suggest uncommenting this line and commenting out the sellitems event
|#Event POK "#*#encumbered#*#"
#event SellItems "#*#The item has dropped to the ground#*#"

Sub Main
|------------------------------------------------------------
   |How many times should aquire target fail before delaying?
   |------------------------------------------------------------
   /declare RV_FailMax          int outer  1
   |------------------------------------------------------------
   |How far would you like to target a mob?
   |------------------------------------------------------------
   /declare RV_MaxRadius        int outer  1500
   |------------------------------------------------------------
   |How far is the combat range?
   |------------------------------------------------------------
   /declare RV_Range            int outer 150
   |------------------------------------------------------------
   |What is the minimum Z Value of mobs I should target?
   |------------------------------------------------------------
   /declare RV_MinZRange        int outer  -1000
   |------------------------------------------------------------
   |What is the maximum Z Value of mobs I should target?
   |------------------------------------------------------------
   /declare RV_MaxZRange        int outer  1000
   |------------------------------------------------------------
   |Should I loot all items?
   |------------------------------------------------------------
   /declare RV_LootAllItems     int outer  0
   |------------------------------------------------------------
       /declare RV_FailCounter      int outer  0
   /declare RV_MyTargetID       int outer  0
   /declare RV_MyTargetName     string outer
   /declare RV_MyTargetDead     int outer  0
   /declare RV_InvalidTargetID  int outer  0
   /declare RV_HasTarget        int outer  0
   /declare RV_RandomWait       int outer  0
   /declare RV_CheckLook        int outer  0
   /declare RV_Fighting         int outer  0
   /declare RV_TargetDead       int outer  0
   /declare RV_MyXLOC           int outer  0
   /declare RV_MyYLOC           int outer  0
/declare SeloSong int outer 8
 
|------------------------------------------------------------
   |Load in Loot Table.
|------------------------------------------------------------
   /call ReadINI Loot.ini "${Zone.Name}" Loot 
   /if (!${Defined[RV_LootArray]}) { 
      /echo No Loot Array Created... 
   } 


|------------------------------------------------------------
   |Mob Array Information.
   |------------------------------------------------------------
/call ReadINI Mob.ini "${Zone.Name}" Mob 
   /if (!${Defined[RV_MobArray]}) { 
      /echo Mob Array Creation Error, ending macro... 
      /endmacro 
}

|------------------------------------------------------------
    |Main program
|------------------------------------------------------------
/echo Starting
   /fastdrop on 
   /lootn never 
   :Start


      /call GMCheck
	/call Gettarget
	/call killmob
      /doevents
   /goto :Start
/return







Sub KillMob
/if (${Target.PctHPs}<95) /squelch /target clear
/if (${Int[${Target.PctHPs}]}<100) /squelch /target clear
  /if (!${Target.ID}) /return
  /look
  /echo Killing a ${Target.CleanName}.
  /stick 125 behind moveback
:distancecheck
/if (${Target.Distance}>=200) /goto :distancecheck
/if (${Target.PctHPs}<95) /squelch /target clear
/if (${Int[${Target.PctHPs}]}<100) /squelch /target clear
  /if (!${Target.ID}) /return
/if (${Me.PctHPs}<=95) {
/twist 2 3 4 5 1
} else {
/twist 2 3 4 5
}
/delay 6s
/if (${Me.TargetOfTarget.Name.NotEqual[${Me}]}) /squelch /target clear
  :KillStart
/call selosong
  /if (${Target.State.Equal[DEAD]}) /keypress esc 
  /if (${Target.ID}) /goto :KillStart
  /twist 8 1
  /twist reset
  /delay 5
  /target id ${RV_MyTargetID} corpse
  /call Lootmob
/return 





|--------------------------------------------------------------------------------
|SUB: Looting based on FishingLoot.ini.
|--------------------------------------------------------------------------------
Sub LootMob 
   /declare LootChance  int inner  0
   /declare LootSlot    int inner  0 
   /declare LootCheck   int inner  0 
   /declare LootTotal   int inner  0 
    
   /face fast 
    
   /keypress forward 
   /keypress back 
    

/stick 12 moveback
:Distance
/if (${Target.Distance}<=10) { 
/stick off
/loot
} else {
/goto :Distance 
}
/loot
   /delay 1.5s 
   /if (!${Corpse.Items}) { 
      /echo NO LOOT! Cheap Bastard! 
|/shift /notify InventoryWindow IW_Money1 leftmouseup
|/destroy
/delay 1
/shift /notify InventoryWindow IW_Money2 leftmouseup
/destroy
/delay 1
/shift /notify InventoryWindow IW_Money3 leftmouseup
/destroy
/delay 1
/notify LootWnd DoneButton leftmouseup 
/cleanup
      /return 
   } 

   /varset LootTotal ${Corpse.Items} 
   /for LootSlot 1 to ${LootTotal} 
      /itemnotify loot${LootSlot} leftmouseup 
      /delay 5
       
         /for LootCheck 1 to ${RV_LootArray.Size} 
            /if (${Cursor.Name.Find[${RV_LootArray[${LootCheck}]}]}) { 
               /echo Keeping a ${Cursor.Name}... WOOT! 
		/autoinv 
		/delay 1s
		/if (${Cursor.ID}) {
		/autoinv
		/delay 1s
		}
		/if (${Cursor.ID}) {
		/autoinv
		/delay 1s
		}
		/if (${Cursor.ID}) {
		/autoinv
		/delay 1s
		}
               /varcalc RV_LootStats[${LootCheck}] ${RV_LootStats[${LootCheck}]}+1 
               
		

               /delay 5
            
	}
         /next LootCheck 
      } 
     /if (${Cursor.ID}) { 
        /echo Destroying a ${Cursor.Name}... 
	 /destroy
         /delay 5 
      } 
   /next LootSlot 
|/shift /notify InventoryWindow IW_Money1 leftmouseup
|/destroy
/delay 1
/shift /notify InventoryWindow IW_Money2 leftmouseup
/destroy
/delay 1
/shift /notify InventoryWindow IW_Money3 leftmouseup
/destroy
/delay 1
   /notify LootWnd DoneButton leftmouseup 
   /delay 2 
    /cleanup
/return 

|-------------------------------------------------------------------------------
|SUB: Read loot table from the INI file.
|-------------------------------------------------------------------------------
Sub ReadINI(FileName,SectionName,ArrayType) 

   /echo Attempting to Read Section "${SectionName}" Zone Information from ${FileName}... 
   /delay 1s 
    
   /if (${Ini[${FileName},${SectionName},-1,NO].Equal[NO]}) { 
      /echo "${SectionName}" is not a Valid Section for FILE:${FileName}, ending macro... 
      /delay 1s 
      /return 
   } 
   /declare nValues     int local  1 
   /declare nArray      int local  0 
   /declare KeySet      string local  ${Ini[${FileName},${SectionName}]} 

   :CounterLoop 
   /if (${String[${Ini[${FileName},${SectionName},${ArrayType}${nValues}]}].Equal[null]}) { 
      /varcalc nValues ${nValues}-1 
      /goto :MakeArray 
   } 
   /varcalc nValues ${nValues}+1 
   /goto :CounterLoop  

   :MakeArray 
   /if (!${nValues}) /return 
   /if (${FileName.Equal["Mob.ini"]}&&${nValues}>0) { 
      /echo Declaring Mob Array... 
      /declare RV_MobArray[${nValues}]   string outer 
      /declare RV_MobStats[${nValues}]   string outer 
   } 
   /if (${FileName.Equal["Loot.ini"]}&&${nValues}>0) { 
      /echo Declaring Loot Array... 
      /declare RV_LootArray[${nValues}]  string outer 
      /declare RV_LootStats[${nValues}]  string outer 
   } 
   /for nArray 1 to ${nValues} 
      /if (${FileName.Equal["Mob.ini"]}) { 
         /varset RV_MobArray[${nArray}] ${Ini[${FileName},${SectionName},${ArrayType}${nArray}]} 
         /varset RV_MobStats[${nArray}] 0 
      } 
      /if (${FileName.Equal["Loot.ini"]}) { 
         /varset RV_LootArray[${nArray}] ${Ini[${FileName},${SectionName},${ArrayType}${nArray}]} 
         /varset RV_LootStats[${nArray}] 0 
      } 
   /next nArray 
    
   /echo "${SectionName}" Zone Information Read Successfully from ${FileName}... 
   /delay 1s 
    
/return 




|-------------------------------------------------------------------------------
|SUB: Check for GM's in zone.
|-------------------------------------------------------------------------------
Sub GMCheck

   /if (${Spawn[gm].ID}) {
      /echo GM entered the zone!
      /echo For safty reasons ending the macro
      /call movetoloc 394 2473
      /q
   }

/return

|-------------------------------------------------------------------------------
|SUB: Aquire Target
|-------------------------------------------------------------------------------
Sub GetTarget

   /declare RV_CurrentRadius   int local
   /declare RV_TargetSub   int local
   /varset RV_InvalidTargetID 1
   :Acquire
/doevents
   /for RV_CurrentRadius 100 to ${RV_MaxRadius} step 100
      /for RV_TargetSub 1 to ${RV_MobArray.Size}
         /squelch /target radius ${RV_CurrentRadius} nopcnear 150 notid ${RV_InvalidTargetID} npc "${RV_MobArray[${RV_TargetSub}]}"
         /varset RV_MyTargetID ${Target.ID}
         /varset RV_MyTargetDead 0
         /if (${Target.ID}) {
            /if (${Int[${Target.PctHPs}]}<100) {
               /varset RV_InvalidTargetID ${Target.ID}
               /call ResetSub
		/squelch /target clear
               /goto :Acquire
            }
            /varset RV_HasTarget 1
            /varset RV_MyTargetName ${Target.CleanName}
            /echo Acquired ${Target.CleanName} at range ${Int[${Target.Distance}]}
            /return
         }
      /next RV_TargetSub
      /delay 2
   /next RV_CurrentRadius

   /if (!${Target.ID}) {
      /delay 2s
      /varcalc RV_FailCounter ${RV_FailCounter}+1
      |/echo Failed to Acquire Target in Range ${RV_MaxRadius} ${RV_FailCounter} Time(s)
      /if (${RV_FailCounter}>=${RV_FailMax}) {
         /echo Waiting for Respawns...
/look
/twist 1 8
/call movetoloc 44 1158
/target radius 500 Cyclops npc
/if (!${Target.ID}) /target radius 500 giant skeleton npc
/if (!${Target.ID}) /target radius 500 lizard npc
/if (!${Target.ID}) /target radius 500 basilisk npc
         /varset RV_FailCounter 0
      }
      /goto :Acquire
   }
/return

Sub Resetsub
   /varset RV_HasTarget 0 
   /varset RV_TargetDead 0 
   /varset RV_Fighting 0 
/return

Sub Event_POK


/twist 1
/delay 4s
/gate
/delay 90s
/call movetoloc -223.63 -67
/call movetoloc -239.39 146.97
/call movetoloc -187.44 156.83
/call movetoloc -188.19 223.64
/call movetospawnname ironstove 10
/click right target
/delay 1s
/call openpacks
/delay 1s
/call sell "Lambent Stone"
/call sell "Fine Steel"
/call sell "jasper"
/delay 1s
/cleanup
/delay 1s
/call movetoloc -118.82 215.76
/call movetoloc 249.92 223.19
|/call movetoloc 332.64 413.01
/keypress right
/keypress left
/keypress forward hold
  :PullMoveLoopd
/if (${Me.State.Equal[SIT]}) /stand 
  /face fast loc 438.60,444.00
  /if (${Math.Distance[438.60,444.00]}>2) /nomodkey /keypress forward hold 
  /if (${Math.Distance[438.60,444.00]}<=2) {
    /nomodkey /keypress forward hold
    /goto :PullMoveLoope1
  }
/goto :PullMoveLoopd
  :PullMoveLoope1

/face fast loc 441.47,490.89
/look
/doortarget
/keypress use
/delay 5
/keypress forward hold
/delay 5
/keypress use
/delay 5
/call movetoloc 441.47 490.89
/target Banker Ceridan
/click right target
/delay 1s
/shift /notify InventoryWindow IW_Money0 leftmouseup
/delay 5
/notify BigBankWND BIGB_Money0 leftmouseup
/delay 5
/shift /notify InventoryWindow IW_Money1 leftmouseup
/delay 5
/notify BigBankWND BIGB_Money1 leftmouseup
/cleanup
/delay 1s
/call movetoloc 438.71 451.62
/face fast loc 439.77,410.76
/look
/delay 5
/keypress use
/delay 5
/keypress forward hold
/delay 5
/keypress use
/keypress forward hold
/call movetoloc 439.77 410.76
/call movetoloc 193.29 218.92
/call movetoloc -232.53 217.27
/call movetoloc -482.08 449.80
/call movetoloc -495.65 706.91
/call movetoloc -531.72 720.84
/call movetoloc -927.40 717.67
/call movetoloc -899.70 501.57
/call movetoloc -844.72 445.98
/call movetoloc -900.08 444.27
/delay 1s
/doortarget POKOGPORT500
/warp target
/twist 6
/delay 5s
/keypress use
/delay 1 
/keypress forward
/keypress use
/delay 1 
/keypress forward
/keypress use
/delay 1 
/keypress forward
/keypress use
/delay 1 
/keypress forward
/keypress use
/delay 30s
/look
/warp loc 324 3422 4
/face fast loc 356.08,3417.19
/keypress left
/keypress right
/keypress forward hold
/delay 30s
/keypress forward hold
/delay 5s
/look
/warp loc -348 158 8
/call movetoloc 44 1128
/twist 8
/delay 10s
/return

sub selosong
      /if (${SeloSong}) /if (${Me.Buff[${Me.Gem[${SeloSong}].Name}].Duration}<=6) { 
         /echo Selos about to die 
/twist 8
         /delay 4s 
/twist 2 3 4 5
         /return 
      } 

/return

Sub Event_SellItems
/twist 6
/call movetoloc 628.45 247.45
/call movetoloc 1037.45 -32.46
/target Viira Bali
/warp target
/call openpacks
/delay 5
/click right target
/call sell "Lambent Stone"
/call sell "Fine Steel"
/call sell "jasper"
/cleanup
/warp loc 628.45 247.45 10.58
/return
Move.inc
Rich (BB code):
| 
| move.inc 
| 
|Advanced moving and object-avoidance routines 
| 
|Originally by beatnik007 (Who credits Mckorr) 
| 
|Revised and converted to MQ2Data by Terramantian 
| 
|Signifagant and on-going Improvments by EQBot_Man 8.9.04 
| Added /call MoveToSpawnName 
| This will take a partial name and a distance and reliably target and move 
| to the nearest spawn of that name 
| Added code to get you to stop a lot closer than 10 units. You should stop almost 
| right at the location you want when using MoveToLoc 
| Sometimes you would get stuck at a door and if you were macroing unattended 
| you would continue to strafe for hours making it obvious you were 
| macroing. Added code that if the strafe function is called more 
| than 10 times in 60 sec to /quit you out 
| Have added lots of little checks including NULL targets and corpse checks and a lot 
| of little things that I can't remember now but I needed to add due to rare 
| circumstances of the subroutines failing to do what they were desigend to do. 
| 
| Subroutines: 
| Sub MoveToLoc 
| Moves you to a specified xy loc 
| Sub MoveToSpawn 
| Moved you to a specified ID number(pretty pointless) 
| Sub MoveToSpawnName 
| Moves you to the nearest spawn given a partial or full name 
| 
|===================================================| 


| Sub MoveToLoc | 
|---------------------------------------------------| 
|This simply moves the player to within 1 unit of | 
|the requested location, while avoiding obstacles | 
| | 
|This is beatnik007's original sub, with a few minor| 
|changes and rewritten in MQ2Data format | 
| | 
|SYNTAX: /call MoveToLoc Y X | 


Sub MoveToLoc(MoveToY, MoveToX) 
/echo Moving to Location: ${MoveToY}, ${MoveToX}. 
/echo Distance: ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
/declare FailureTimer timer local 0 
/declare StrafeFailure int local 
/declare running int local 
/declare MaxSpeed int local 
/declare StopDistance int local 
/declare distanceNow float local 
/declare distanceBefore float local 
/declare distanceModifier int local 
/varset running 0 
/declare distanceTimer timer 15 
/varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
/varset distanceModifier 1 
/varset MaxSpeed 0 
:moveToLocation 

/if (${Me.Speed}>=${MaxSpeed}) /varset MaxSpeed ${Me.Speed} 
/if (${MaxSpeed}<=166) { 
/varset StopDistance 3 
} else { 
/varset StopDistance 10 
} 

/face fast nolook loc ${MoveToY},${MoveToX} 

/if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<${StopDistance}) { 
/keypress forward 
/return 
} 

/if (${distanceTimer}==0) { 
/if (${Me.Sneaking}) { 
/varset distanceModifier 2 
} else { 
/varset distanceModifier 1 
} 

/varset distanceNow ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
/if (${Math.Calc[${distanceBefore}-${distanceNow}]}<${Math.Calc[10/${distanceModifier}]}) { 
/if (${FailureTimer}==0) { 
/varset StrafeFailure 0 
/varset FailureTimer 600 
} 
/if (${FailureTimer}>0) { 
/varset StrafeFailure ${Math.Calc[${StrafeFailure} + 1]} 
} 
/if (${StrafeFailure}>=10 && ${FailureTimer}>0) { 
/keypress forward 
/keypress back hold 
/delay 5 
/keypress back 
/afk Be back later, leave a message 
/echo Your movement failed more than 10 times in 30 seconds and most likely looked macroed. Ending macro. . . 
/endmacro 
/quit 
} 
/call strafePastObstacle ${StrafeFailure} 
} 

/varset distanceBefore ${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]} 
/varset distanceTimer 15 
} 

/if (${running}==0) { 
/keypress forward 
/if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}>${StopDistance}) { 
/varset running 1 
/keypress forward hold 
} 
} else { 
/if (${Math.Distance[${Me.Y},${Me.X}:${MoveToY},${MoveToX}]}<${StopDistance}) { 
/varset running 0 
/keypress forward 
} 
} 
/goto :moveToLocation 
/return 


| Sub MoveToSpawn | 
|---------------------------------------------------| 
|This moves the player to within a provided distance| 
|of the provided spawn, while avoiding obstacles | 
| | 
|I "wrote" this, but as you can see, it's the same | 
|as MoveToLoc with a few variable replacements. | 
| | 
|The second parameter, Distance, allows for the | 
|player to stop short of the target by a certain | 
|amount, to provide for different aggro radii, etc. | 
| | 
|SYNTAX: /call MoveToSpawn ID Distance | 

Sub MoveToSpawn(MoveToID, StopDistance) 


/if (!(${Defined[MoveToID]})||(${Spawn[MoveToID].ID})) { 
/echo Spawn ID not found or no ID provided. Aborting... 
/return 
} 
/if (!(${Defined[StopDistance]})) { 
/echo Stopping point not defined, using default distance of 70 
/declare StopDistance int local 
/varset StopDistance 70 
} 
/echo Moving to Spawn: ${MoveToID} (${Spawn[${MoveToID}].CleanName}). 
/echo Current Location: ${Spawn[${MoveToID}].Y}, ${Spawn[${MoveToID}].X} 
/echo Current Distance: ${Spawn[${MoveToID}].Distance} 
/declare FailureTimer timer local 0 
/declare StrafeFailure int local 
/declare running int local 
/declare distanceNow float local 
/declare distanceBefore float local 
/declare distanceModifier int local 
/varset running 0 
/declare distanceTimer timer 15 
/varset distanceBefore ${Spawn[${MoveToID}].Distance} 
/varset distanceModifier 1 

:moveToSpawn 

/squelch /face fast nolook id ${MoveToID} 

/if (${Spawn[${MoveToID}].Distance}<${StopDistance}) { 
/keypress forward 
/return 
} 

/if (${distanceTimer}==0) { 
/if (${Me.Sneaking}) { 
/varset distanceModifier 2 
} else { 
/varset distanceModifier 1 
} 

/varset distanceNow ${Spawn[${MoveToID}].Distance} 
/if (${Math.Calc[${distanceBefore}-${distanceNow}]}<${Math.Calc[10/${distanceModifier}]}) { 
/if (${FailureTimer}==0) { 
/varset StrafeFailure 0 
/varset FailureTimer 600 
} 
/if (${FailureTimer}>0) { 
/varset StrafeFailure ${Math.Calc[${StrafeFailure} + 1]} 
} 
/if (${StrafeFailure}>=10 && ${FailureTimer}>0) { 
/keypress forward 
/keypress back hold 
/delay 5 
/keypress back 
/sit 
/afk Be back later, leave a message 
/echo Your movement failed more than 10 times in 30 seconds and most likely looked macroed. Ending macro. . . 
/endmacro 
/quit 
} 
/call strafePastObstacle ${StrafeFailure} 
} 
/varset distanceBefore ${Spawn[${MoveToID}].Distance} 
/varset distanceTimer 15 
} 

/if (${running}==0) { 
/keypress forward 
/if (${Spawn[${MoveToID}].Distance}>=${StopDistance}) { 
/varset running 1 
/keypress forward hold 
} 
} else { 
/if (${Spawn[${MoveToID}].Distance}<${StopDistance}) { 
/varset running 0 
/keypress forward 
} 
} 
/goto :moveToSpawn 
/return 


| Sub MoveToSpawnName | 
|---------------------------------------------------| 
|This moves the player to within a provided distance| 
|of the provided spawn, while avoiding obstacles | 
| | 
|I "wrote" this, but as you can see, it's the same | 
|as MoveToLoc with a few variable replacements. | 
| | 
|The second parameter, Distance, allows for the | 
|player to stop short of the target by a certain | 
|amount, to provide for different aggro radii, or to| 
|attack. | 
| | 
|SYNTAX: /call MoveToSpawnName Name Distance | 
| Does take partial names: | 
| /call MoveToSpawnName skel 9 | 
| to move you to the nearest skeleton | 
| | 
| I use this for farming bone chips and silks | 

Sub MoveToSpawnName(Name, StopDistance) 
/keypress esc 
/target ${Name} npc 
/delay 2 
/if (${String[${Target}].Find["NULL"]}) /return 
/if (${String[${Target}].Find["corpse"]}) /return 
/if (!${Target.ID}) { 
/echo Name not found or no name provided. Aborting... 
/return 
} 
/if (!(${Defined[StopDistance]})) { 
/echo Stopping point not defined, using default distance of 70 
/declare StopDistance int local 
/varset StopDistance 70 
} 
/echo Moving to Spawn: ${Target.CleanName}. 
/declare FailureTimer timer local 0 
/declare StrafeFailure int local 
/declare running int local 
/declare distanceNow float local 
/declare distanceBefore float local 
/declare distanceModifier int local 
/varset running 0 
/declare distanceTimer timer 15 
/varset distanceBefore ${Target.Distance} 
/varset distanceModifier 1 

:moveToSpawn 
/if (${String[${Target}].Find["NULL"]}) /return 
/face fast predict 

/if (${Target.Distance}<${StopDistance}) { 
/keypress forward 
/return 
} 

/if (${distanceTimer}==0) { 
/if (${Me.Sneaking}) { 
/varset distanceModifier 2 
} else { 
/varset distanceModifier 1 
} 

/varset distanceNow ${Target.Distance} 
/if (${Math.Calc[${distanceBefore}-${distanceNow}]}<${Math.Calc[10/${distanceModifier}]}) { 
/if (${FailureTimer}==0) { 
/varset StrafeFailure 0 
/varset FailureTimer 600 
} 
/if (${FailureTimer}>0) { 
/varset StrafeFailure ${Math.Calc[${StrafeFailure} + 1]} 
} 
/if (${StrafeFailure}>=10 && ${FailureTimer}>0) { 
/keypress forward 
/keypress back hold 
/delay 5 
/keypress back 
/sit 
/afk Be back later, leave a message 
/echo Your movement failed more than 10 times in 30 seconds and most likely looked macroed. Ending macro. . . 
/endmacro 
/quit 
} 
/call strafePastObstacle ${StrafeFailure} 
} 
/varset distanceBefore ${Target.Distance} 
/varset distanceTimer 15 
} 

/if (${running}==0) { 
/keypress forward 
/if (${Target.Distance}>=${StopDistance}) { 
/varset running 1 
/keypress forward hold 
} 
} else { 
/if (${Target.Distance}<${StopDistance}) { 
/varset running 0 
/keypress forward 
} 
} 
/goto :moveToSpawn 
/return 

| Only to be used by the previous functions - It's obvious what it does. | 

sub strafePastObstacle(Number) 
/keypress forward 
/keypress back hold 
/delay ${Math.Calc[${Number}*3/2+4]} 
/keypress back 
/if (!${Me.State.Equal["STAND"]}) /stand 
/if (${Math.Rand[99]}>50) { 
/keypress strafe_right hold 
} else { 
/keypress strafe_left hold 
} 
/delay ${Math.Calc[${Number}*4+5]} 
/keypress strafe_right 
/keypress strafe_left 
/keypress forward hold 
/return 

Sub Turn(THeadingY,THeadingX) 
/declare PHeading outer 0 
/declare THeading outer 0 
/declare Bearing outer 0 
/declare IsTurning outer 0 
/declare TurnKey outer NULL 

:TurnLoop 
/delay 0 
/if (${Me.Sitting}) /sit off 
/varset PHeading ${Me.Heading.Degrees} 
/if (${Defined[THeadingX]}) { 
/varset THeading ${Heading[${THeadingY},${THeadingX}].Degrees} 
} else { 
/varset THeading ${Target.HeadingTo.Degrees} 
} 

/varset Bearing ${Math.Calc[(${PHeading}-${THeading}+540)%360-180]} 

/if (${Bearing}>=-7 && ${Bearing}<=7) { 
/if (${String[${TurnKey}].NotEqual[NULL]}) /keypress ${TurnKey} 
/face heading ${Heading[${THeading}].Degrees} nolook 
/return 
} else /if (${Bearing}>=-180 && ${Bearing}>=7) { 
/if (${String[${TurnKey}].NotEqual
}) /varset TurnKey LEFT } else /if (${Bearing}<=180 && ${Bearing}<=7) { /if (${String[${TurnKey}].NotEqual
}) /varset TurnKey RIGHT } /if (!${IsTurning}) { /keypress ${TurnKey} hold /varset IsTurning 1 } /goto :TurnLoop /return​


Sell.inc
Rich (BB code):
| 
| sell.inc
| Selling Include File needed for macros
| Version 1.3
| Date: August 7, 2004
|
| Please be sure to get the lastest updates at http://www.soc-music.com/mq2/
|
| These file MUST be in the common directory in your macros directory.
|
| Disclaimer:
| Code was used from other programers also from the MQ Forums.
| 


Sub Sell(string ItemToSell)
   /declare OldMoney int Inner    
   /declare NewMoney int Inner
 
   /autoinv 

   /if (${ItemToSell.Equal[NULL]}) {
     /return
   }

   :Finding 
      /if (${FindItemCount[${ItemToSell}]}==0) /goto :Done 
      /nomodkey /itemnotify ${FindItem[${ItemToSell}].InvSlot} leftmouseup 

   :WaitFind 
      /if (${Bool[${SelectedItem}]}==FALSE) /goto :WaitFind 

   :Selling
      /delay 5 
      /varset OldMoney ${Me.Cash} 
      /nomodkey /shift /notify MerchantWnd MW_Sell_Button leftmouseup 

   :WaitSell 
      /varset NewMoney $(Me.Cash} 
      /if (${NewMoney}==${OldMoney}) /goto :WaitSell 
      /goto :Finding 

   :Done 
      /echo No more ${ItemToSell} to sell!!!      
/return

packs.inc
Rich (BB code):
| 
| packs.inc
| Open and Close Packs Include File needed for macros
| Version 1.4
| Date: August 7, 2004
|
| Please be sure to get the lastest updates at http://www.soc-music.com/mq2/
|
| These file MUST be in the common directory in your macros directory.
|
| Disclaimer:
| Code was used from other programers also from the MQ Forums.
| 

Sub OpenPacks 
   /declare bag int local 0 
   /declare check int local 0 
   /newif (!${Window[InventoryWindow].Open}) /nomodkey /keypress inventory 
   /delay 1s 
   /for bag 1 to 8 step 1 
      /newif (${Window[Pack${bag}].Open}==FALSE) /nomodkey /itemnotify pack${bag} rightmouseup 
   /next bag 
   /delay 1s
   /for check 1 to 9 step 1
      /if  (${Window[TradeskillWnd].Open}) {
         /nomodkey /notify TradeskillWnd ExperimentButton leftmousehold
         /nomodkey /notify TradeskillWnd ExperimentButton leftmouseup
      }
   /next check
   /delay 1s
/return 

Sub ClosePacks 
   /declare bag int local 0 
   /newif (!${Window[InventoryWindow].Open}) /nomodkey /keypress inventory 
   /delay 1s
   /for bag 1 to 8 step 1 
      /newif (${Window[Pack${bag}].Open}==TRUE) /nomodkey /itemnotify pack${bag} rightmouseup 
   /next bag 
   /delay 1s
   /newif (${Window[InventoryWindow].Open}) /nomodkey /keypress inventory 
   /delay 1s 
/return
Loot.ini
Rich (BB code):
[The Rathe Mountains]
Loot1=Lambent Stone
Loot2=Fine Steel
Loot3=Jasper
Mob.ini
Rich (BB code):
[The Rathe Mountains]
Mob1=Hill Giant
Mob2=Bloodbeard
 
Last edited:
okay mad props sidden as far as i can tell this thing is very nice but will it take care of non HG adds like skellys or cyclops which you can sometimes get thatws about all i can see it missing really. other then that I would say its pretty much good to go very nicely done lots of proper checks anyways keep up the good work.
 
it'll take care of the adds once they actually start hitting you when you're looking for more mobs, with me that usually doesn't happen so i have an escort service of about 4-5 skeletons/cyclops' at any given time, but once one hits me they all tend to die
btw i only have 2.8k hp and i never go below 90% (thanks to the nofall + noenviro docrack)
 
Last edited:
i figure the sell.inc needs to be fixed because of the new vendor windows, but is that all that is broken?
 
At work right now so I can't check, but when I tried it I think it was something with the strings shortly after starting the Mac. , I will check when I get home and post it.
 
Rathe Mountains Farm_Giant.mac

Users who are viewing this thread

Back
Top
Cart