Page 2 of 5

Posted: Wed Nov 12, 2008 4:34 pm
by missingfiles
Macros keeps sitting and stops targeting mobs after a little while and when it does get close to a mob sometimes it gets to close causing the screen to jump around. Also attack is pressed over and over again spamming one of my windows. Anyone have any ideas on how to fix this?

Thanks

Posted: Sat Dec 13, 2008 10:27 am
by demonmachine666
missingfiles wrote:Macros keeps sitting and stops targeting mobs after a little while and when it does get close to a mob sometimes it gets to close causing the screen to jump around. Also attack is pressed over and over again spamming one of my windows. Anyone have any ideas on how to fix this?

Thanks
In the first post it explains what it does.

Code: Select all

This macro will use autoattack and will spam hotkey 1, which I set to be Bash. It could be easily modded to use spells or other skills. 
I would suggest changing your hotkey as EQ default hotkey 1 as autoattack.

Posted: Thu Dec 18, 2008 3:08 pm
by G1zm0|)-->
^PWND :lol:

Re: Farming Macro

Posted: Fri Sep 17, 2010 4:58 pm
by frappy6666
Sorry to dig an old tread.
I love farming macro but having issue with the code in this tread and looting when more then 1 item (2x silk for example). it just do not loot. Also, the 'all' for looting everything not working, it just skip the whole corpse and more to next mob.


I remember LONG time ago a macro called hunter.mac and was awesome... but tried it and not working anymore.

thx in advance

Re: Farming Macro

Posted: Sat Sep 18, 2010 11:50 am
by eqsomebody
Thanks for this post jacensolo!

About an hour ago I started to incorporate pieces of the original into one that I'm using and it works fine. Here is what I have for the looting.

Code: Select all

Sub Looting
	/declare x int local
	/target corpse radius 15
	/delay 2
	/face fast
	/delay 1
	/loot 
	/delay 1s
	/notify LootWnd LootAllButton leftmouseup 
	/nomodkey 	/notify ConfirmationDialogBox Yes_Button leftmouseup	
	/delay 5s
	/notify LootWnd DoneButton leftmouseup 
	/target clear
	/look
/return
I'm just farming for AA and stuff I can sell.

I hope this helps.

Re: Farming Macro

Posted: Sun Sep 19, 2010 8:21 pm
by eqsomebody
I've been playing with the loot routine for the past couple of days. The previous one worked until all your bags filled up and your toon stopped working. :( So my next challange was to figure out how to pick the corn out of the crap, so to say. There are items I want and then there are those crap Rogue drops used for making poisons that are not worth anything.

What I did is plagerized code from a Forage macro to determine if the drop is something I want.

It works pretty good but I have it looping through 6 loot itmes. However, I don't want it to loop through all 6 if there is a) nothing on the corpse or b) everything has been looted. Right now even if there are two items on the corpse, it still has to loop through all 6. I would like for it to bail out if there is nothing on the cursor. Unfortunately, I can't seem to figure out how to do that. Doing searches on here breaks up all the words in a search string for "Cursor.ID" or "Cursor.Name" so it is difficult finding code that is already being used.

Code: Select all

Sub Looting
	/declare x int local
	/target corpse radius 15
	/delay 1
	/face fast
	/loot 
	/delay 1s
	/for x 1 to 6
		/itemnotify loot${x} leftmouseup
|		/if !(${Cursor.ID}) /goto :EndLoot
		/nomodkey	/notify QuantityWnd QTYW_Accept_Button leftmouseup	
		/nomodkey	/notify ConfirmationDialogBox Yes_Button leftmouseup	
		/delay 1s
		/if (!${Ini[forage.ini,ForageList,${Cursor.Name}].Length}) {
			/ini "Forage.ini" "ForageList" "${Cursor.Name}" "-1"
		} else {
		/if (${Ini[forage.ini,ForageList,${Cursor.Name}]}) {
			/if (${FindItemCount["=${Cursor.Name}"]}>=${Ini[forage.ini,ForageList,${Cursor.Name}]} && ${Ini[forage.ini,ForageList,${Cursor.Name}]}!=-1) /goto :Destroy
		} else {
			:Destroy
			/echo Destroying ${Cursor.Name}
			/destroy
			/next x
			}
		}
		:LootIt
		/echo Keeping ${Cursor.Name}
		/autoinventory
		/if (${Cursor.ID}) /goto :LootIt
	} 
	/next x
	:EndLoot
	/delay 1s
	/notify LootWnd DoneButton leftmouseup 
	/target clear
	/look
/return

If anyone has any suggestions, I'm game and thanks in advance.

If you don't care if your toon spends the time looping through all 6 slots, then it works great. It even loots items with multiple quantities and No Drop items.

If you have not used the Forage macro, just create a file called "Forage.ini". As things are found the macro will insert an entry in the INI. You can specify a quantity for the max number of items to maintain in your inventory, specify 0 (zero) to just destroy the item or use a -1 to keep an infinite number of items.

Re: Farming Macro

Posted: Wed Sep 22, 2010 10:27 pm
by xomega1

Code: Select all

/declare loottotal int local
:lootlag
/varset loottotal ${Corpse.Items}
/delay 1s ${loottotal}!=${Corpse.Items}
/if (${loottotal}!=${Corpse.Items}) /goto :lootlag
/for i 1 to ${loottotal}
  do stuff
next i

Re: Farming Macro

Posted: Mon Dec 20, 2010 2:53 pm
by ozum
Is this macro looting for anyone after the release of HoT, or am I just unlucky (as usual)? And, yes, I have tried all 3 versions that are in this thread, as well as the loot variations ( I have farm.mac thru farm6.mac, in my macro folder).

Re: Farming Macro

Posted: Sun Apr 17, 2011 8:05 pm
by demonmachine666
I've almost got a fully working version of this. It runs around killing the mob you tell it to, and instead of looting what you tell it to, it loots everything lol. Still working on it. Once I get it lined out, I'll post it here and give credit to original author.

Re: Farming Macro

Posted: Tue Apr 03, 2012 7:14 pm
by spartikus
Ok, people a lot smarter than me did a lot of neat things with this macro. I have cleaned it up a bit and added a couple "cool" things I wanted:
- Added new parameter to allow for multiple mob target names to more efficiently farm an area
- Added in some very crude but semi functional "Am I in combat or looting" checks to ease up on missed corpses.
- Added in a parameter to check range of target so you can keep your player in a relatively confined area.
- Added in some basic event monitoring and a DPSslave macro to assist this master macro so you can kick some ass :)

IMPORTANT: I have set the loot code to look for a "gain party experience" event because I am farming level appropriate mobs. You should change that to whatever death event makes sense.

I'll put out another version of this macro once I clean up a few more items just for fun ;)

WORK IN PROGRESS, fair warning.

Code: Select all

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| DPS Pet Caster - Farming and Looting
|
| Set the Pet Caster running this macro as the Group MA 
| 
|   Bind the following:
|   /pet attack to Hotkey 3
|   A light DPS spell rotation to hotkey 2 that starts with a /gsay Attack << %t >>
|   A burn rotation to hotkey 4 ** Not implemented - need more target.hlth checking**
|   The /sit command to Hotkey 9
|   
|   This macro has 3 startup parameters:
|  P1 - partial name match of mob1
|  P2 - partial name match of mob2
|  P3 - search radius for mobs (think in terms of feet on a scale basis)
|
|  Example startup: /macro dpsmaster diamondback wolf 150
|      The above startup will actively scan a 150 foot radius around the char based on
|       whatever your current location is and attack anything that has a partial name
|       match for 'diamondback' or 'wolf'. Example: Diamondback Snake and Alpha Wolf.
|
|  This macro will loot the nearest corpse to the player that has a partial name match
|     to the currently active target name, approach it and loot all items unless limits or
|     zeros are set in the forage.ini file.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

#event Looting "#.# gain party #*#"
#event Farm_talk "#*#tells you#*#"

Sub Main
/declare targ1 string outer ${Param0}
/declare targ2 string outer ${Param1} 
/declare dist int outer ${Param2}
/declare ready int outer 0
/declare fighting int outer 0
/declare mob string outer
/declare i int local
/varset mob ${targ1}
   :startpoint
   /echo "About to check Events"
   /doevents
   /varset fighting 0
   /varset ready 0
   /if (${Me.PctMana}<41) {
   /call medbreak
   }
   /if (${Target.Name.Equal[${Me.Name}]}) {
      /delay 100
      /goto :startpoint
   }
   /echo "about to aquire a new target!"
   /squelch /target npc radius ${dist} zradius 50 ${mob}
   /if (!${Target.ID}) {
      /echo Changing to alternate target
      /varset mob ${targ1}
      /squelch /target npc radius ${dist} zradius 50 ${mob}
      /if (!${Target.ID}) {
         /echo Changing to alternate target
         /varset mob ${targ2}
         /squelch /target npc radius ${dist} zradius 50 ${mob}
         }
      }
   /if (!${Target.ID}) /delay 10s
   /echo "No Target in Startpoint function"
   /if (${Target.ID} && ${Me.PctMana}>40 && ${ready}==0 && ${fighting}==0) /call Combat
   /squelch /target clear
   /doevents
   /if (!${Me.FreeInventory}) {
      /echo "No bag space!"
      /beep
      /endmac
   }
   /goto :startpoint
/return   

Sub Combat
   /echo "Combat Starting!!!"
   /varset fighting 1
   /if (${Target.Distance}>70) {
      /face fast nolook
      /keypress forward hold
      :moveloop
      /if (${Target.ID}) /face fast nolook
      /if (${Target.Distance}>70) /goto :moveloop
      /keypress forward
   } 
| Send in the Pet - should be bound to hotkey 3
   /keypress 3
   /delay 14s
   :combatloop
    /echo "Starting Combat Loop"
    /doevents Looting
   /if (${Target.ID} && ${fighting}==1) {
   /if (${Target.ID}) /face fast nolook
| Activate your spellcasting macro - should be bound to hotkey 2
   /echo "Starting my regular DPS cycle"
   /if (!${Me.Casting.ID}) /nomodkey /keypress 2
| Adjust this delay based on the cast times and cooldowns of the spells in your spellcasting hotkey #2
   /delay 8s
   /doevents Looting
   }
   /Echo "About to check for a targetID"
   /if (${Target.ID} && ${fighting}==1) /goto :combatloop
/return

Sub Event_Looting
   /echo "In the looting sub routine"
   /varset fighting 0
   /varset ready 1
   /declare x int local
   /if (!${Me.FreeInventory}) {
      /echo "No bag space!"
      /beep
      /endmac
   }
   /target corpse radius 80 ${mob}
   /delay 1
   /face fast
   /if (${Target.Distance}>14) {
      /face fast nolook
      /keypress forward hold
      :moveloop
      /if (${Target.ID}) /face fast nolook
      /if (${Target.Distance}>8) /goto :moveloop
      /keypress forward
   }
   /loot 
   /delay 1s
   /for x 1 to 6
      /itemnotify loot${x} leftmouseup
|      /if !(${Cursor.ID}) /goto :EndLoot
      /nomodkey   /notify QuantityWnd QTYW_Accept_Button leftmouseup   
      /nomodkey   /notify ConfirmationDialogBox Yes_Button leftmouseup   
      /delay 1s
      /if (!${Ini[Forage.ini,ForageList,${Cursor.Name}].Length}) {
         /ini "Forage.ini" "ForageList" "${Cursor.Name}" "-1"
      } else {
      /if (${Ini[Forage.ini,ForageList,${Cursor.Name}]}) {
         /if (${FindItemCount["=${Cursor.Name}"]}>=${Ini[Forage.ini,ForageList,

${Cursor.Name}]} && ${Ini[Forage.ini,ForageList,${Cursor.Name}]}!=-1) /goto :Destroy
      } else {
         :Destroy
         /echo Destroying ${Cursor.Name}
         /destroy
         /next x
         }
      }
      :LootIt
      /echo Keeping ${Cursor.Name}
      /autoinventory
      /if (${Cursor.ID}) /goto :LootIt
   } 
   /next x
   :EndLoot
   /delay 1s
   /notify LootWnd DoneButton leftmouseup 
   /target clear
   /look
   /varset ready 0
   /delay 2s
/return

Sub Event_Farm_talk
   /if (${afkset}) {
      /camp
      /unload
   }
/return

Sub MedBreak
   /echo "Med Break!"
   /g Med break. mana up
   /keypress 9
   /if (!${Me.Sitting}) /sit
   :medloop
   /if (${Target.ID} && !${Me.Sitting}) /call Combat
   /delay 10
   /if (!${Me.Sitting}) /sit
   /delay 5s
   /if (${Me.PctMana}<95) /goto :medloop
/return

Re: Farming Macro

Posted: Tue Apr 03, 2012 7:20 pm
by spartikus
The Slave macro that goes along with the above macro. setup your hotbar accordingly as noted.

Code: Select all

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|  DPS Caster - Slave macro
|   This macro will follow around the main assist and attack the MAs target
|   When the MA says Attack in group chat. When the MA says Burn in group chat
|       the caster will unload his max DPS rotation
|   Bind the following:
|   /assist group to Hotkey 3
|   A light spell rotation to hotkey 2
|   A burn rotation to hotkey 4
|   /target %MA (Insert your Main Assist here) to Hotkey 5 
|   
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#chat group
#event Assist "#*#tells the group, 'Assist#*#"
#event Burn "#*#tells the group, 'Burn#*#"
#event Med "#*#tells the group, 'Med break#*#"
#event Fight "#*# gain party#*#"
 
Sub Main
   /declare ready int outer 0
   /declare fight int outer 0
   :FollowLoop
      /keypress 5
      /delay 1s
      /doevents
      /if (${Target.Distance}>60) /keypress up hold
      /if (${Target.Distance}<40) /keypress up 
      /face fast
      /delay 3
      /goto :FollowLoop
/return

Sub Event_Assist
   /echo "Found a request to assist DPS"
   /varset fight 1
   /keypress 3
   /delay 1s
   :AssistLoop
   | Start light DPS Spell rotation if not already engaged
   /face fast
   /keypress 2
   | Give it 8 seconds to get through the light DPS rotation and then go back to following the MA
   /delay 13s
   /doevents Fight
   /delay 1s
   /if (${fight}==1) /goto :AssistLoop
   /target clear
   /delay 1s
   /keypress 5
/return

Sub Event_Burn
| /assist group
   /keypress 3
   /delay 1s
   /face fast
| Start DPS burn spell rotation
  /keypress 4
| Give it 8 seconds to get through the light DPS rotation and then go back to following the MA
  /delay 8s
  /target clear
  /delay 1s
  /keypress 5
/return

Sub Event_Fight
   | Clear the Im fighting variable
   /echo Killed it
   /varset fight 0
   /doevents flush
/return

Sub Event_Med
   /echo "Med Break!"
   /target clear
   /keypress 9
   /if (!${Me.Sitting}) /sit
   :medloop
   /if (!${Me.Sitting}) /sit
   /delay 5s
   /if (${Me.PctMana}<95) /goto :medloop
   /if (${Me.Sitting}) /stand
/return

Re: Farming Macro

Posted: Wed Apr 04, 2012 9:24 am
by spartikus
Having some more fun with this one.. Will post an update later today with the following:
- Migrated the mob name params into the ini file so you can have almost endless names on your kill list. (Great for named mobs)
- Cleaned up the loot code and added multi corpse looting just to squeeze that extra few plats out
- Changed the combat toggles to utilize XTarget in both the med break and looting routines
- Added a couple of basic survival tweaks to the slave macro to mitigate the unit from running off on it's own
- Added in an on-death check to turn the macro off.

Still a very basic macro based primarily on other peoples work but I may post in a new thread as it has grown pretty far beyond the basic forage and farm macro. Just want to share it :)

Re: Farming Macro

Posted: Fri Apr 06, 2012 4:34 am
by spartikus
The macros in the VIP section are pretty wicked. I have tweaked this farm/loot macro into a very crude self-leveling macro but crude is certainly the word of the day.

I fine tuned it a little more today, cleaned up the logic significantly and am running some testing currently to see how it stands up.

Things I am still wanting to add:
- Mob exclusion list
- Buff cycle
- Auto-accept rez
- XP tracker

The DPSCasterSlave macro that goes along with my version of this is still very clunky. Going to clean it up a bit more. Hope to have a macro posted here over the weekend that works

Re: Farming Macro

Posted: Fri Apr 06, 2012 11:38 am
by TheDroidUrLookingFor

Things I am still wanting to add:
- Mob exclusion list
- Buff cycle
- Auto-accept rez
- XP tracker

Haven't tested the code below but I believe it would work for group buffing. I assumed that you can get your group member's buff ID's like you can get them for yourself. I am at work currently but when I get home I will double check it works! Will look into writing an auto-accept and XP Tracker for you.

Code: Select all


Sub GroupBuffCheck(BuffSpell)
   /declare i int local 1    
   /for i 1 to 50 
:GroupBuff 
  /if (!${Group.Member[i].Buff[${BuffSpell}].ID) { 
  /echo Buffing ${Group.Member[i].Name} with ${BuffSpell}
   /target ${Group.Member[i].Name}
   /delay 5 
    /call cast "${BuffSpell}" 15s 
       /if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :GroupBuff 
       /if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :GroupBuff 
  } 
  /next i 
/return 


Re: Farming Macro

Posted: Fri Apr 06, 2012 12:07 pm
by PeteSampras
Here is an ignore list include i wrote. I cut it out some custom stuff, hopefully everything still functions in this version. It should still handle ignoring mobs, and auto create slow/mez/snare immune lists and fire/poison/cold/disease/magic immune lists in case you wanted those as well. to check if mob is on the ignore list: !${IgnoreList.Find[${Target.CleanName}]}

You need to #include IgnoreList.inc, and prior to being in your main loop you need to /call IgnoreLoad

It adds some commands.
/imob - adds current target to ignoremob list
/cmob - adds current target to coldimmune list
/dmob - adds current target to diseaseimmune list
/fmob - adds current target to fireimmune list
/mmob - adds current target to magicimmune list
/pmob - adds current target to poisonimmune list

I wrote includes for pretty much everything you need to do on a character to play, but a bunch have custom TLO/members that you dont have access to in standard compile, so there isnt much point in posting them. This one should be ok though.