Page 1 of 1

ItemTarget and GroundItem:Grab

Posted: Mon Aug 21, 2006 7:05 pm
by onetimehero
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.

Posted: Mon Aug 21, 2006 7:39 pm
by Yunto?
So.
Like.
Where does all that stuff get copied into?

Posted: Mon Aug 21, 2006 10:15 pm
by aChallenged1
each section goes into the file that is listed above it.

Posted: Fri Aug 25, 2006 11:56 pm
by dont_know_at_all
Zipperooed.

Re: ItemTarget and GroundItem:Grab

Posted: Sat Jan 10, 2026 1:16 pm
by xyilla

Re: ItemTarget and GroundItem:Grab

Posted: Sat Jan 10, 2026 1:17 pm
by xyilla

Re: ItemTarget and GroundItem:Grab

Posted: Sat Jan 10, 2026 1:19 pm
by xyilla