Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.

mjc said:Aside from Cganking an item, is anyone having issues with just right clicking on a ground spawn in the map and crashing?
HardOne said:Anyone figure out how to keep from Crashing to Server Select after ganking more then 1 item in a row. (Specifically ShroomGank.mac: http://www.redguides.com/community/showthread.php?t=8322&page=2)
It ganks first shroom fine, after second gank, it will crash.
cronic said:Type /items. You can either "/itemtarget name" with one of the items in that list, or you can "/itemtarget" with no arguments and just target the nearest item to your character.
cronic
Dudes,
Where do I get the MQ2 download?
Gank1.MAC
| Written by Dlewis4
|
| Updated 20 May 06 - Using Armysoilderiers shrrom gank macro as a base and for
| -pc check and gm check features
| - also used portions of the LAFM macro to allow selective
| - keeping of ganked items
|
|
| Useage : /macro gank1
| Description : This macro will gank anything that starts with a *
|
|
|------------------------------------------------------------------------------------
#Event End "#*#There is no place#*#"
#Event End "[MQ2] End"
#Event CGank "#*#Couldn't parse#*#"
#Event Find "#*#Couldn't find #*#"
Sub Main
/declare lootr int outer
/declare lootrt int outer
/declare test
/declare DefaultMaxSave int outer
/varset DefaultMaxSave ${Ini[yafm.ini,Default,MaxSave,${NotFound}]}
/if (${DefaultMaxSave}==${NotFound}) {
/ini "gank.ini" "Default" "MaxSave" "60"
/varset DefaultMaxSave 60
}
/cleanup
:Start
/call GMCheck
| /call PC
/itemtarget *
/varset test ${Ground.Name}
/if (${test.Equal["NULL"]}) {
/call Pause
}
/doevents
/delay 1s
/Gank
/delay 1s
| If we successfully foraged something then take care of it.
/if (${Cursor.ID}) {
/echo Keeping a ${Cursor.Name}... WOOT!
/varcalc lootr ${lootr}+1
/call HandleItem
}
}
/autoinventory
/delay 1s
/call DisplayStats
/doevents
/delay 1s
/call GMCheck
|/call PC
/goto :Start
/return
Sub Event_End
/echo Ending Macro
/call DisplayStats
/endmacro
/return
Sub Event_CGank
/echo you do not have MQ2CGank Loaded
/endmacro
/return
Sub Event_Find
|/varset x 30
/call DisplayStats
/call pause
/return
Sub Pause
/echo No items.. Pausing 15 min
/delay 5m
/echo tic toc .. 5 Min
/delay 5m
/echo tic toc .. 10 Min
/delay 5m
/echo tic toc .. 1 Min
/echo DING DING DING!!!
/echo time to try again
/return
Sub GMCheck
:redo
/if (${Spawn[gm].ID}) {
/beep
/beep
/beep
/echo GM has entered the zone!
/echo pausing the macro...
/afk Gone for more beer BRB
/delay 2m
/goto :redo
}
/return
Sub PC
:redopc
/if (${Spawn[pc noalert 2 radius 100].ID}) {
/echo player nearby
/beep
/beep
/beep
/echo Player Nearby!!!
/echo pausing the macro...
/afk Gone for More Beer - BRB
/delay 2m
/goto :redopc
}
/return
|--------------------------------------------------------------------------------
|SUB: Display Stats
|--------------------------------------------------------------------------------
Sub DisplayStats
/echo Test
/echo ${lootr} items
/return
|sub HandleItem
sub HandleItem
/declare ItemSetting int local
/declare NotFound int local
/declare ItemsHave int local
/varset NotFound -1
:LootIt
| Look up this item in gank.ini
/varset ItemSetting ${Ini[yafm.ini,GankList,${Cursor.Name},${NotFound}]}
/delay 5
| If the item isn't in the .ini file then add it.
/if (${ItemSetting}==${NotFound}) {
/ini "gank.ini" "GankList" "${Cursor.Name}" "${DefaultMaxSave}"
/varset ItemSetting ${DefaultMaxSave}
}
/varset ItemsHave ${FindItem=${Cursor.Name}}
| If we're keeping this item then stash it in our bags.
| Otherwise, just destroy it.
/if (${ItemSetting}>=${ItemsHave}) {
/autoinventory
} else {
/destroy
}
/delay 5
/if (${Cursor.ID}) /goto :LootIt
/return
// cronic
#include "../MQ2Plugin.h"
PLUGIN_VERSION(20060616);
#ifdef PKT_UPDATE_POSITION
#undef PKT_UPDATE_POSITION
#endif
#define PKT_UPDATE_POSITION 0x178a
#define PKT_GRAB_ITEM 0x1418
PreSetup("MQ2CGank");
VOID GankCmd(PSPAWNINFO pChar, PCHAR szLine)
{
// check for target
if (!pGroundTarget) {
WriteChatf("Please use /itemtarget to aquire a target.");
return;
}
// acquire item
PGROUNDITEM pItem = (PGROUNDITEM)pGroundTarget;
PSPAWNINFO Target = (PSPAWNINFO)pTarget;
// setup move packet
struct _MOVEPKT {
/*0000*/ unsigned short SpawnID;
/*0002*/ unsigned short TimeStamp;
/*0004*/ int Heading:16;
/*0006*/ int unknown1:16; //??
/*0008*/ float DeltaZ; // ?? not sure
/*0012*/ int Animation:16;
/*0014*/ int padding014:16; //??
/*0016*/ int DeltaHeading:16; //?? not sure
/*0018*/ int Animation2:16; // something else to do with animation
/*0020*/ float Y;
/*0024*/ float DeltaY; //?? not sure
/*0028*/ float DeltaX; //?? not sure
/*0032*/ float Z;
/*0036*/ float X;;
} P;
// init move packet
ZeroMemory(&P, sizeof(P));
P.SpawnID = (unsigned short)pChar->SpawnID;
P.Heading = (unsigned int)(pChar->Heading * 4);
// jump to
P.Z = pItem->Z;
P.Y = pItem->Y;
P.X = pItem->X;
SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));
// gank
struct _GRABITEMPKT {
unsigned long DropID;
unsigned long SpawnID;
} GP;
GP.DropID = pItem->DropID;
GP.SpawnID = pChar->SpawnID;
SendEQMessage(PKT_GRAB_ITEM, &GP, sizeof(GP));
// jump back
P.Z = pChar->Z;
P.Y = pChar->Y;
P.X = pChar->X;
SendEQMessage(PKT_UPDATE_POSITION, &P, sizeof(P));
// clear target
pTarget = 0;
pGroundTarget = 0;
}
PLUGIN_API VOID InitializePlugin(VOID)
{
AddCommand("/gank", GankCmd);
}
PLUGIN_API VOID ShutdownPlugin(VOID)
{
RemoveCommand("/gank");
}
Is this not working? Can't seem to get it to work...
