Converted MQ2 Commands

Moderator: MacroQuest Developers

JGC84
a ghoul
a ghoul
Posts: 116
Joined: Sat Nov 29, 2003 2:51 am

Converted MQ2 Commands

Post by JGC84 » Thu Feb 24, 2005 12:17 am

dibs on the idiot proof ones!
ISXCommandList.h

Code: Select all

COMMAND("MacroBeep",CMD_MacroBeep,true,false);
COMMAND("do_ranged",CMD_do_ranged,true,false);
COMMAND("SetAutoRun",CMD_SetAutoRun,true,false);
COMMAND("DisplayLoginName",CMD_DisplayLoginName,true,false);
COMMAND("PopupText",CMD_PopupText,true,false);
ISXCommands.cpp

Code: Select all

// /beep
int CMD_MacroBeep(int argc, char *argv[])
{
    //bRunNextCommand = TRUE;
    Beep(0x500,250);
	return 0;
}
// /ranged
int CMD_do_ranged(int argc, char *argv[])
{
	EQPlayer *pRangedTarget=pTarget;
	if (argc-1)
	{
		pRangedTarget=GetSpawnByID(atoi(argv[1]));
		if (!pRangedTarget)
		{
			printf("Invalid spawn ID.  Use /ranged with no parameters, or with a spawn ID");
			return 0;
		}
	}
	if (!pRangedTarget)
	{
		printf("No target for ranged attack");
		return 0;
	}
	if (gbRangedAttackReady)
	{
		pLocalPlayer->DoAttack(0x0B,0,pRangedTarget);
		gbRangedAttackReady=0;
	}
    return 0;
}
// /autorun
int CMD_SetAutoRun(int argc, char *argv[])
{
	_strlwr(argv[1]);
	if(argv[1]=="on" || argv[1]=="off")
	{
	    CHAR szServerAndName[MAX_STRING] = {0};
		sprintf(szServerAndName,"%s.%s",((PCHARINFO)pCharData)->Server,((PCHARINFO)pCharData)->Name);
		WritePrivateProfileString(szServerAndName,"AutoRun",argv[1],gszINIFilename);
		sprintf(szServerAndName,"Set autorun to: '%s'",argv[1]);
		WriteChatColor(szServerAndName,USERCOLOR_DEFAULT);
	}
	return 0;
}

// /loginname
int CMD_DisplayLoginName(int argc, char *argv[]) 
{
	PCHAR szLogin = GetLoginName();
	if (!szLogin) {
		printf("Unable to retrieve login name.");
	} else {
		WriteChatf("Login name: \ay%s\ax",szLogin);
		free(szLogin);
	}
	return 0;
}

// /popup
int CMD_PopupText(int argc, char *argv[])
{
   CHAR szRest[MAX_STRING] = {0};
   pISInterface->GetArgs(1,argc,argv,szRest);
   DisplayOverlayText(szRest, CONCOLOR_LIGHTBLUE, 100, 500,500,3000);
   return 0;
}
ACK! I think I blew it up....

I dont think your allowed to talk about this outside of a "free speech zone" anymore.

slimjim
a ghoul
a ghoul
Posts: 94
Joined: Thu Oct 17, 2002 4:05 pm

Post by slimjim » Thu Feb 24, 2005 4:14 am

Code: Select all

int CMD_BuyItem(int argc, char *argv[])
{
   bRunNextCommand = FALSE;
   if (!pMerchantWnd) return 0;

   CHAR szQty[MAX_STRING] = {0};
   PCHARINFO pCharInfo = NULL;
   DWORD Qty;
   if (NULL == (pCharInfo = GetCharInfo())) return 0;

   pISInterface->GetArgs(1,argc,argv,szQty);
   Qty=(DWORD)atoi(szQty);

   if (Qty > 20 || Qty < 1) return 0;
   pMerchantWnd->RequestBuyItem(Qty);
   return 0;
}

slimjim
a ghoul
a ghoul
Posts: 94
Joined: Thu Oct 17, 2002 4:05 pm

Post by slimjim » Thu Feb 24, 2005 4:17 am

untested but should work... will test tomorrow.

Code: Select all

int CMD_SellItem(int argc, char *argv[])
{
    bRunNextCommand = FALSE;
	if (!pMerchantWnd) return 0;

    CHAR szQty[MAX_STRING] = {0};
    PCHARINFO pCharInfo = NULL;
    DWORD Qty;

    if (NULL == (pCharInfo = GetCharInfo())) return 0;
    pISInterface->GetArgs(1,argc,argv,szQty);
    Qty = (DWORD)atoi(szQty);
    if (Qty > 20 || Qty < 1) return 0;
    pMerchantWnd->RequestSellItem(Qty);
    return 0;
}

slimjim
a ghoul
a ghoul
Posts: 94
Joined: Thu Oct 17, 2002 4:05 pm

Post by slimjim » Sat Feb 26, 2005 3:32 pm

Code: Select all

// ***************************************************************************
// Function:    CMD_Where
// Description: Our '/where' command
//              Displays the direction and distance to the closest spawn
// Usage:       /where <spawn>
// ***************************************************************************
int CMD_Where(int argc, char* argv[])
{
	if (argc<2)
	{
		WriteChatf("Syntax: %s <spawn>",argv[0]);
		return 0;
	}
    if (!ppSpawnList) return 0;
    if (!pSpawnList) return 0;
	PSPAWNINFO pChar = GetCharInfo()->pSpawn;
    PSPAWNINFO pSpawnClosest = NULL;
    SEARCHSPAWN SearchSpawn;
    ClearSearchSpawn(&SearchSpawn);
    CHAR szMsg[MAX_STRING] = {0};
    CHAR szName[MAX_STRING] = {0};
    CHAR szArg[MAX_STRING] = {0};
   
    bRunNextCommand = TRUE;
	SearchSpawn.SpawnType= PC;

    for(int i=1;i<argc;i++)
	{
		i+=ParseSearchSpawnArg(i,argc,argv,SearchSpawn);
	}	

    if (!(pSpawnClosest = SearchThroughSpawns(&SearchSpawn,pChar))) {
        sprintf(szMsg,"There were no matches for: %s",FormatSearchSpawn(szArg,&SearchSpawn));
    } else {
        INT Angle = (INT)((atan2f(pChar->X - pSpawnClosest->X, pChar->Y - pSpawnClosest->Y) * 180.0f / PI + 360.0f) / 22.5f + 0.5f) % 16;
        sprintf(szMsg,"The closest '%s' is a level %d %s %s and %1.2f away to the %s, Z difference = %1.2f",
            CleanupName(strcpy(szName,pSpawnClosest->Name),FALSE),
            pSpawnClosest->Level,
            pEverQuest->GetRaceDesc(pSpawnClosest->Race),
            GetClassDesc(pSpawnClosest->Class),
            DistanceToSpawn(pChar,pSpawnClosest),
            szHeading[Angle],
            pSpawnClosest->Z-pChar->Z);
        DebugSpew("Where - %s",szMsg);
    }
    WriteChatColor(szMsg,USERCOLOR_WHO);
	
    return 0;
}

slimjim
a ghoul
a ghoul
Posts: 94
Joined: Thu Oct 17, 2002 4:05 pm

Post by slimjim » Sun Feb 27, 2005 2:39 am

Code: Select all

// ***************************************************************************
// Function:    Target
// Description: Our '/target' command
//              Selects the closest spawn
// Usage:       /target [spawn|myself|mycorpse]
// ***************************************************************************
int CMD_Target(int argc, char* argv[])
{
    if (!ppSpawnList) return 0;
    if (!pSpawnList) return 0;
	PSPAWNINFO pChar = GetCharInfo()->pSpawn;
    PSPAWNINFO pSpawnClosest = NULL;
	
    SEARCHSPAWN SearchSpawn;
    ClearSearchSpawn(&SearchSpawn);
    //CHAR szArg[MAX_STRING] = {0};
    CHAR szMsg[MAX_STRING] = {0};
    //CHAR szLLine[MAX_STRING] = {0};
    //PCHAR szFilter = szLLine;
    BOOL DidTarget = FALSE;
    BOOL bArg = TRUE;
	CHAR szTempName[MAX_STRING] = {0};

    bRunNextCommand = TRUE;
    for(int i=1;i<argc;i++)
	{
		if (!stricmp(argv[i],"myself")) {
            if (pChar) {
                pSpawnClosest = pChar;
                DidTarget = TRUE;
            }
		} else if (!stricmp(argv[i],"mycorpse")) {
            if (pChar) {
			    SearchSpawn.SpawnType = CORPSE;
				strcpy(szTempName,pChar->Name);
				strcpy(SearchSpawn.szName,strlwr(szTempName));
            }
        } else if (!stricmp(argv[i],"clear")) {
            pTarget = NULL;
            DebugSpew("Target cleared.");
            WriteChatColor("Target cleared.",USERCOLOR_WHO);
            return 0;
        } else {
           i+= ParseSearchSpawnArg(i,argc,argv,SearchSpawn);
        }
	}
	
    if (pTarget) SearchSpawn.FromSpawnID = ((PSPAWNINFO)pTarget)->SpawnID;

    if (!DidTarget) {
        pSpawnClosest = SearchThroughSpawns(&SearchSpawn,pChar);
    }

    if (!pSpawnClosest) {
        CHAR szTemp[MAX_STRING] = {0};
        sprintf(szMsg,"There are no spawns matching: %s",FormatSearchSpawn(szTemp,&SearchSpawn));
    } else {
        PSPAWNINFO *psTarget = NULL;
        if (ppTarget) {
            psTarget = (PSPAWNINFO*)ppTarget;
            *psTarget = pSpawnClosest;
            DebugSpew("Target - %s selected",pSpawnClosest->Name);
			szMsg[0]=0;
        } else {
            sprintf(szMsg,"Unable to target, address = 0");
        }
    }
	if (szMsg[0])
    if (!gFilterTarget) WriteChatColor(szMsg,USERCOLOR_WHO);
    return 0;
}

slimjim
a ghoul
a ghoul
Posts: 94
Joined: Thu Oct 17, 2002 4:05 pm

Post by slimjim » Sun Feb 27, 2005 5:32 am

I wasn't sure if szToggle is a needed value or not; Whether SetDisplaySWhoFilter would read from gFilterSWho class to determine if it was already set and then toggle it. So i decided to make it so you had to type in on or off. Also helped fix a couple crashing problems i had if they didn't because of the strcpy command i was using.


Code: Select all

// ***************************************************************************
// Function:    SWhoFilter
// Description: Our '/whofilter' command
//              Sets SuperWho filters
// Usage:       /whofilter [options]
// ***************************************************************************
int CMD_SWhoFilter(int argc, char* argv[])
{
	CHAR szArg[MAX_STRING] = {0};
	CHAR szToggle[MAX_STRING] = {0};
	CHAR szTemp[MAX_STRING] = {0};
	if (argc < 3)
	{
		 WriteChatColor("Usage: /whofilter <lastname|class|race|level|gm|guild|holding|ld|sneak|anon|lfg|npctag|spawnid|trader|afk|concolor|invisible> [on|off]");
		 return 0;
	}
	strcpy(szArg,argv[1]);
	strcpy(szToggle,argv[2]);
	
	if (!stricmp(szArg,"Lastname")) {
		SetDisplaySWhoFilter(&gFilterSWho.Lastname,"Lastname",szToggle);
	} else if (!stricmp(szArg,"Class")) {
		SetDisplaySWhoFilter(&gFilterSWho.Class,"Class",szToggle);
	} else if (!stricmp(szArg,"Race")) {
		SetDisplaySWhoFilter(&gFilterSWho.Race,"Race",szToggle);
	} else if (!stricmp(szArg,"Body")) {
		SetDisplaySWhoFilter(&gFilterSWho.Body,"Body",szToggle);
	} else if (!stricmp(szArg,"Level")) {
		SetDisplaySWhoFilter(&gFilterSWho.Level,"Level",szToggle);
	} else if (!stricmp(szArg,"GM")) {
		SetDisplaySWhoFilter(&gFilterSWho.GM,"GM",szToggle);
	} else if (!stricmp(szArg,"Guild")) {
		SetDisplaySWhoFilter(&gFilterSWho.Guild,"Guild",szToggle);
	} else if (!stricmp(szArg,"LD")) {
		SetDisplaySWhoFilter(&gFilterSWho.LD,"LD",szToggle);
    } else if (!stricmp(szArg,"Sneak")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Sneak,"Sneak",szToggle);   
	} else if (!stricmp(szArg,"LFG")) {
		SetDisplaySWhoFilter(&gFilterSWho.LFG,"LFG",szToggle);
	} else if (!stricmp(szArg,"NPCTag")) {
		SetDisplaySWhoFilter(&gFilterSWho.NPCTag,"NPCTag",szToggle);
	} else if (!stricmp(szArg,"SpawnID")) {
		SetDisplaySWhoFilter(&gFilterSWho.SpawnID,"SpawnID",szToggle);
	} else if (!stricmp(szArg,"Trader")) {
		SetDisplaySWhoFilter(&gFilterSWho.Trader,"Trader",szToggle);
	} else if (!stricmp(szArg,"AFK")) {
		SetDisplaySWhoFilter(&gFilterSWho.AFK,"AFK",szToggle);
	} else if (!stricmp(szArg,"Anon")) {
		SetDisplaySWhoFilter(&gFilterSWho.Anon,"Anon",szToggle);
	} else if (!stricmp(szArg,"Distance")) {
		SetDisplaySWhoFilter(&gFilterSWho.Distance,"Distance",szToggle);
	} else if (!stricmp(szArg,"Light")) {
		SetDisplaySWhoFilter(&gFilterSWho.Light,"Light",szToggle);
	} else if (!stricmp(szArg,"Holding")) {
		SetDisplaySWhoFilter(&gFilterSWho.Holding,"Holding",szToggle);
	} else if (!stricmp(szArg,"ConColor")) { 
        SetDisplaySWhoFilter(&gFilterSWho.ConColor,"ConColor",szToggle); 
	} else if (!stricmp(szArg,"invisible")) {
        SetDisplaySWhoFilter(&gFilterSWho.Invisible,"Invisible",szToggle);
	} else {
      WriteChatColor("Usage: /whofilter <lastname|class|race|level|gm|guild|holding|ld|sneak|anon|lfg|npctag|spawnid|trader|afk|concolor|invisible> [on|off]");
   } 
	return 0;
}

JGC84
a ghoul
a ghoul
Posts: 116
Joined: Sat Nov 29, 2003 2:51 am

Post by JGC84 » Sun Feb 27, 2005 11:40 am

granted your not saving much memory, and it doesnt make much difference, but just seems logical not to bother with the extra strings, so why not:

Code: Select all

int CMD_SWhoFilter(int argc, char* argv[]) 
{ 
   if (argc < 3) 
   { 
       WriteChatColor("Usage: /whofilter <lastname|class|race|level|gm|guild|holding|ld|sneak|anon|lfg|npctag|spawnid|trader|afk|concolor|invisible> [on|off]"); 
       return 0; 
   } 
    
   if (!stricmp(argv[1],"Lastname")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Lastname,"Lastname",argv[2]); 
   } else if (!stricmp(argv[1],"Class")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Class,"Class",argv[2]); 
   } else if (!stricmp(argv[1],"Race")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Race,"Race",argv[2]); 
   } else if (!stricmp(argv[1],"Body")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Body,"Body",argv[2]); 
   } else if (!stricmp(argv[1],"Level")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Level,"Level",argv[2]); 
   } else if (!stricmp(argv[1],"GM")) { 
      SetDisplaySWhoFilter(&gFilterSWho.GM,"GM",argv[2]); 
   } else if (!stricmp(argv[1],"Guild")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Guild,"Guild",argv[2]); 
   } else if (!stricmp(argv[1],"LD")) { 
      SetDisplaySWhoFilter(&gFilterSWho.LD,"LD",argv[2]); 
    } else if (!stricmp(argv[1],"Sneak")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Sneak,"Sneak",argv[2]);    
   } else if (!stricmp(argv[1],"LFG")) { 
      SetDisplaySWhoFilter(&gFilterSWho.LFG,"LFG",argv[2]); 
   } else if (!stricmp(argv[1],"NPCTag")) { 
      SetDisplaySWhoFilter(&gFilterSWho.NPCTag,"NPCTag",argv[2]); 
   } else if (!stricmp(argv[1],"SpawnID")) { 
      SetDisplaySWhoFilter(&gFilterSWho.SpawnID,"SpawnID",argv[2]); 
   } else if (!stricmp(argv[1],"Trader")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Trader,"Trader",argv[2]); 
   } else if (!stricmp(argv[1],"AFK")) { 
      SetDisplaySWhoFilter(&gFilterSWho.AFK,"AFK",argv[2]); 
   } else if (!stricmp(argv[1],"Anon")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Anon,"Anon",argv[2]); 
   } else if (!stricmp(argv[1],"Distance")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Distance,"Distance",argv[2]); 
   } else if (!stricmp(argv[1],"Light")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Light,"Light",argv[2]); 
   } else if (!stricmp(argv[1],"Holding")) { 
      SetDisplaySWhoFilter(&gFilterSWho.Holding,"Holding",argv[2]); 
   } else if (!stricmp(argv[1],"ConColor")) { 
        SetDisplaySWhoFilter(&gFilterSWho.ConColor,"ConColor",argv[2]); 
   } else if (!stricmp(argv[1],"invisible")) { 
        SetDisplaySWhoFilter(&gFilterSWho.Invisible,"Invisible",argv[2]); 
   } else { 
      WriteChatColor("Usage: /whofilter <lastname|class|race|level|gm|guild|holding|ld|sneak|anon|lfg|npctag|spawnid|trader|afk|concolor|invisible> [on|off]"); 
   } 
   return 0; 
}
ACK! I think I blew it up....

I dont think your allowed to talk about this outside of a "free speech zone" anymore.

xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Converted MQ2 Commands

Post by xyilla » Tue Apr 15, 2025 3:01 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Converted MQ2 Commands

Post by xyilla » Tue Apr 15, 2025 3:02 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Converted MQ2 Commands

Post by xyilla » Tue Apr 15, 2025 3:04 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Converted MQ2 Commands

Post by xyilla » Tue Apr 15, 2025 3:05 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Converted MQ2 Commands

Post by xyilla » Tue Apr 15, 2025 3:06 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Converted MQ2 Commands

Post by xyilla » Tue Apr 15, 2025 3:07 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Converted MQ2 Commands

Post by xyilla » Tue Apr 15, 2025 3:08 am


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Converted MQ2 Commands

Post by xyilla » Tue Apr 15, 2025 3:09 am