Automatic Corpse Loot?

Status
Not open for further replies.

antld0te

Member
Joined
Jun 17, 2006
Messages
117
Reaction score
0
Points
16
I've seen some macros with automatic corpse looting upon being rezzed. Is it possibel to make a macro that will automatically loot your corpse up and start itself up just by right-clicking your corpse? These days I'll do anything to save these poor wrists from a few clicks. :p
 
here I use this all the time it is a macro

Code:
|Wait4rez.mac 

Sub Main 

   /declare a int outer 1 
   /declare t int outer 0 
   /declare Names string outer "Consented: " 
   /declare loottotal int outer 
   /declare lootslot int outer 
   /declare lootleft int outer 

    
   /e Awaiting rez: will auto-accept, then loot corpse 
   :waitforrez 
   /if (!${Window[ConfirmationDialogBox].Open}) { 
      /delay 1s ${Window[ConfirmationDialogBox].Open} 
      /goto :waitforrez 
   } 
   /if (${Window[ConfirmationDialogBox].Open}) /notify ConfirmationDialogBox Yes_Button leftmouseup 
   :zonein 
   /delay 5 
   /target mycorpse
   /delay 2 
   /sumcorpse
   /delay 5 ${Target.CleanName.Equal[${Me}'s corpse]} 
   /if (${Target.CleanName.NotEqual[${Me}'s corpse]}) /goto :zonein 
   /if (${Target.CleanName.Equal[${Me}'s corpse]}) { 
      /delay 3s 
      /call Loot 0 
   } else /goto :zonein 
/end 

Sub Loot 
   /varset lootleft ${Param0} 
   /if (!${Defined[Param0]}) { 
   /varset lootleft 1 
   /echo Defaulting to leaving ${lootleft} item/s on corpse 
   } 
   :corpsepull 
   /target mycorpse 
   /delay 5 ${Target.CleanName.Equal[${Me}'s corpse]} 
   /if (${Target.CleanName.NotEqual[${Me}'s corpse]}) { 
      /echo No corpse in this zone 
      /return 
   } 
   /corpse 
   /delay 1s ${Target.Distance}<20 
   /if (${Target.Distance}>20) { 
      /echo Corpse is too far away 
      /return 
   } 
   /if (${Target.CleanName.Equal[${Me}'s corpse]}) { 
      /loot 
   } else { 
      /echo where did my corpse go? 
      /return 
   } 
   /delay 5s ${Me.State.Equal[BIND]} 
   /if (${Me.State.NotEqual[BIND]}) /goto :corpsepull 
   /varset loottotal 0 
   :LootLag 
   /if (${loottotal}!=${Corpse.Items}) { 
      /varset loottotal ${Corpse.Items} 
      /delay 1s 
      /goto :LootLag 
   } 
   /if (${loottotal}<=${lootleft}) { 
      /echo Looting aborted.  Error in number items to be left on corpse. 
      /notify LootWnd DoneButton leftmouseup 
      /return 
   } 
   /varset loottotal ${Math.Calc[${Corpse.Items}-${lootleft}]} 
   /echo Looting all but ${lootleft} item(s) 
   /for lootslot 1 to ${loottotal} 
   :LootItem 
   /itemnotify loot${lootslot} rightmouseup 
   /delay 5 !${Corpse.Item[${lootslot}].ID} 
   /if (!${Corpse.Item[${lootslot}].ID}) { 
      /next lootslot 
   } else /goto :LootItem 
   /if (${Math.Calc[${Corpse.Items}-${lootleft}]}>0) /goto :LootLag 
   :DoneLooting 
   /notify LootWnd DoneButton leftmouseup 
   /echo Done looting.  ${lootleft} Item(s) left on your corpse. 
/return


Works Great :cool:
 
WickedMyth said:
here I use this all the time it is a macro

Code:
|Wait4rez.mac 

Sub Main 

   /declare a int outer 1 
   /declare t int outer 0 
   /declare Names string outer "Consented: " 
   /declare loottotal int outer 
   /declare lootslot int outer 
   /declare lootleft int outer 

    
   /e Awaiting rez: will auto-accept, then loot corpse 
   :waitforrez 
   /if (!${Window[ConfirmationDialogBox].Open}) { 
      /delay 1s ${Window[ConfirmationDialogBox].Open} 
      /goto :waitforrez 
   } 
   /if (${Window[ConfirmationDialogBox].Open}) /notify ConfirmationDialogBox Yes_Button leftmouseup 
   :zonein 
   /delay 5 
   /target mycorpse
   /delay 2 
   /sumcorpse
   /delay 5 ${Target.CleanName.Equal[${Me}'s corpse]} 
   /if (${Target.CleanName.NotEqual[${Me}'s corpse]}) /goto :zonein 
   /if (${Target.CleanName.Equal[${Me}'s corpse]}) { 
      /delay 3s 
      /call Loot 0 
   } else /goto :zonein 
/end 

Sub Loot 
   /varset lootleft ${Param0} 
   /if (!${Defined[Param0]}) { 
   /varset lootleft 1 
   /echo Defaulting to leaving ${lootleft} item/s on corpse 
   } 
   :corpsepull 
   /target mycorpse 
   /delay 5 ${Target.CleanName.Equal[${Me}'s corpse]} 
   /if (${Target.CleanName.NotEqual[${Me}'s corpse]}) { 
      /echo No corpse in this zone 
      /return 
   } 
   /corpse 
   /delay 1s ${Target.Distance}<20 
   /if (${Target.Distance}>20) { 
      /echo Corpse is too far away 
      /return 
   } 
   /if (${Target.CleanName.Equal[${Me}'s corpse]}) { 
      /loot 
   } else { 
      /echo where did my corpse go? 
      /return 
   } 
   /delay 5s ${Me.State.Equal[BIND]} 
   /if (${Me.State.NotEqual[BIND]}) /goto :corpsepull 
   /varset loottotal 0 
   :LootLag 
   /if (${loottotal}!=${Corpse.Items}) { 
      /varset loottotal ${Corpse.Items} 
      /delay 1s 
      /goto :LootLag 
   } 
   /if (${loottotal}<=${lootleft}) { 
      /echo Looting aborted.  Error in number items to be left on corpse. 
      /notify LootWnd DoneButton leftmouseup 
      /return 
   } 
   /varset loottotal ${Math.Calc[${Corpse.Items}-${lootleft}]} 
   /echo Looting all but ${lootleft} item(s) 
   /for lootslot 1 to ${loottotal} 
   :LootItem 
   /itemnotify loot${lootslot} rightmouseup 
   /delay 5 !${Corpse.Item[${lootslot}].ID} 
   /if (!${Corpse.Item[${lootslot}].ID}) { 
      /next lootslot 
   } else /goto :LootItem 
   /if (${Math.Calc[${Corpse.Items}-${lootleft}]}>0) /goto :LootLag 
   :DoneLooting 
   /notify LootWnd DoneButton leftmouseup 
   /echo Done looting.  ${lootleft} Item(s) left on your corpse. 
/return


Works Great :cool:
Yep, that's wait4rez.mac.. the person was asking for a mac that did the same thing, except you didn't need to wait for a rez. I think anyways... I'd try to make one, but knowing me, I'd mess it up :)
 
heres the macro i use as mainly in a "damn i died. need to recover fast after rez" situation... it will target any corpse near you and attempt to loot it and all items quite fast. (if your near other player corpses pull your corpse a bit away from the pile first and be sure to end the macro afterwards (/end).

This macro was originally made to loot mass piles of bodies when i'm aoe farming ts items, hence why it doesnt end after just looting your corpse.

Code:
Sub Main
/declare lootslot int outer 0
/declare loottotal int outer 0
	:mainloop
	/if (${Spawn[corpse].Distance} < 10 && ${Spawn[corpse].ID}) {
		/tar id ${Spawn[corpse].ID}
		/loot
	}
	/if (${Window[Lootwnd].Open}) /goto :lootopen
	/goto :mainloop

	:lootopen
	/varset loottotal 0
	:LootLag
	/if (${loottotal}!=${Corpse.Items}) {
	  /varset loottotal ${Corpse.Items}
	  /delay 2
	  /goto :LootLag
	}
	/varset loottotal ${Corpse.Items}
	/for lootslot 1 to ${loottotal}
	:LootItem
	/itemnotify loot${lootslot} rightmouseup
	/delay 5 !${Corpse.Item[${lootslot}].ID}
	/if (!${Corpse.Item[${lootslot}].ID}) {
	  /next lootslot
	} else {
	  /goto :LootItem
	}
	/if (${Math.Calc[${Corpse.Items}-${lootleft}]}>0) /goto :LootLag
	:DoneLooting
	/notify LootWnd DoneButton leftmouseup
	/goto :mainloop
/return
 
Status
Not open for further replies.