ItemTarget and GroundItem:Grab

Moderator: MacroQuest Developers

onetimehero
a ghoul
a ghoul
Posts: 105
Joined: Fri Sep 05, 2003 2:42 pm

ItemTarget and GroundItem:Grab

Post by onetimehero » Mon Aug 21, 2006 7:05 pm

FWIW,

ISXEQCommands.cpp

Code: Select all

int CMD_ItemTarget(int argc, char *argv[])
{
    if (!ppItemList) return 0;
    if (!pItemList) return 0;
   PSPAWNINFO pChar = (PSPAWNINFO)pLocalPlayer;
    PGROUNDITEM pItem = (PGROUNDITEM)pItemList;
    FLOAT cDistance = 100000.0f;
	CHAR szName[MAX_STRING]={0};
    CHAR szBuffer[MAX_STRING] = {0};
    ZeroMemory(&EnviroTarget,sizeof(EnviroTarget));
    pGroundTarget = NULL;
    while (pItem) {
        GetFriendlyNameForGroundItem(pItem,szName);
        if (
                (
                    (argc<2) ||
                    (!strnicmp(szName,argv[1],strlen(argv[1])))
                ) && (
                    (gZFilter >=10000.0f) ||
                    (
                        (pItem->Z <= pChar->Z + gZFilter) &&
                        (pItem->Z >= pChar->Z - gZFilter)
                    )
                )
            ) {
            SPAWNINFO tSpawn;
            ZeroMemory(&tSpawn,sizeof(tSpawn));
            strcpy(tSpawn.Name,szName);
            tSpawn.Y=pItem->Y;
            tSpawn.X=pItem->X;
            tSpawn.Z=pItem->Z;
            tSpawn.Type = SPAWN_NPC;
            tSpawn.HPCurrent = 1;
            tSpawn.HPMax = 1;
            tSpawn.Heading=pItem->Heading;
            tSpawn.Race = pItem->DropID;
            FLOAT Distance = DistanceToSpawn(pChar,&tSpawn);
            if (Distance<cDistance) {
                CopyMemory(&EnviroTarget,&tSpawn,sizeof(EnviroTarget));
                cDistance=Distance;
                pGroundTarget = pItem;
            }
        }

        pItem = pItem->pNext;
    }
    if (EnviroTarget.Name[0]!=0) {
        sprintf(szBuffer,"Item '%s' targeted.",EnviroTarget.Name);
        WriteChatColor(szBuffer,USERCOLOR_DEFAULT);
	}

	return 0;
}
ISXEQCommandList.h

Code: Select all

COMMAND("itemtarget",CMD_ItemTarget,true,false);
ISXEQDataTypes.cpp

Code: Select all

bool MQ2GroundType::GETMETHOD()
{
#define pPtr ((PGROUNDITEM)VarPtr.Ptr)
	if (!VarPtr.Ptr)
		return false;
	PMQ2TYPEMETHOD pMethod=MQ2GroundType::FindMethod(Method);
	if (!pMethod)
	{
		return false;
	}
	// TODO
	switch((GroundMethods)pMethod->ID)
	{
	case Grab:
		if (EnviroTarget.Name[0]!=0 && DistanceToSpawn((PSPAWNINFO)pCharSpawn,&EnviroTarget)<20.0f ) 
		{
				INTERACTGROUNDITEM Data;
				Data.SpawnID = GetCharInfo()->pSpawn->SpawnID;
				Data.DropID = EnviroTarget.Race;
				SendEQMessage(EQ_INTERACTGROUNDITEM,&Data,sizeof(INTERACTGROUNDITEM));
				EnviroTarget.Name[0]=0;
				return true;
		}
		return false;
	}
	return false;
#undef pPtr
}
MQ2DataTypes.h

Code: Select all

	static enum GroundMethods
	{
		Grab=1,
	};

	MQ2GroundType():MQ2Type("ground")
	{
		TypeMember(ID);//1,
		TypeMember(Distance);//2,
		TypeMember(X);//3,
		TypeMember(Y);//4,
		TypeMember(Z);//5,
		TypeMember(Heading);//6,
		TypeMember(Name);//7,
		TypeMember(HeadingTo);
		AddMember(xLineOfSight,"LineOfSight");

		TypeMethod(Grab);
	}

	~MQ2GroundType()
	{
	}
Caveat: If you ask "where do I paste this", I will reach thru teh intarweb and choke the living shit out of you.
Last edited by onetimehero on Mon Aug 21, 2006 7:49 pm, edited 2 times in total.
Hmm. That's odd.

Yunto?
a grimling bloodguard
a grimling bloodguard
Posts: 502
Joined: Sat Nov 19, 2005 12:05 pm

Post by Yunto? » Mon Aug 21, 2006 7:39 pm

So.
Like.
Where does all that stuff get copied into?
(10:02:10 AM) fearless: kate beckinsale
(10:02:18 AM) fearless: chick from underpants
(10:02:27 AM) fearless: er . . . world, underworld

User avatar
aChallenged1
a grimling bloodguard
a grimling bloodguard
Posts: 1804
Joined: Mon Jun 28, 2004 10:12 pm

Post by aChallenged1 » Mon Aug 21, 2006 10:15 pm

each section goes into the file that is listed above it.
Fuck writing MQ2 macros. Go with IS scripts; IS Rules!

User avatar
dont_know_at_all
Developer
Developer
Posts: 5450
Joined: Sun Dec 01, 2002 4:15 am
Location: Florida, USA
Contact:

Post by dont_know_at_all » Fri Aug 25, 2006 11:56 pm

Zipperooed.