Merge branch 'more-debug' into 'master'

More item debug

See merge request KartKrew/Kart!185
This commit is contained in:
Sal 2020-05-03 21:16:58 -04:00
commit 5a56271392
5 changed files with 170 additions and 46 deletions

View file

@ -73,6 +73,7 @@ static void Got_ExitLevelcmd(UINT8 **cp, INT32 playernum);
static void Got_SetupVotecmd(UINT8 **cp, INT32 playernum); static void Got_SetupVotecmd(UINT8 **cp, INT32 playernum);
static void Got_ModifyVotecmd(UINT8 **cp, INT32 playernum); static void Got_ModifyVotecmd(UINT8 **cp, INT32 playernum);
static void Got_PickVotecmd(UINT8 **cp, INT32 playernum); static void Got_PickVotecmd(UINT8 **cp, INT32 playernum);
static void Got_GiveItemcmd(UINT8 **cp, INT32 playernum);
static void Got_RequestAddfilecmd(UINT8 **cp, INT32 playernum); static void Got_RequestAddfilecmd(UINT8 **cp, INT32 playernum);
#ifdef DELFILE #ifdef DELFILE
static void Got_Delfilecmd(UINT8 **cp, INT32 playernum); static void Got_Delfilecmd(UINT8 **cp, INT32 playernum);
@ -203,6 +204,8 @@ static void Command_Archivetest_f(void);
#endif #endif
#endif #endif
static void Command_KartGiveItem_f(void);
// ========================================================================= // =========================================================================
// CLIENT VARIABLES // CLIENT VARIABLES
// ========================================================================= // =========================================================================
@ -393,10 +396,24 @@ consvar_t cv_karteliminatelast = {"karteliminatelast", "Yes", CV_NETVAR|CV_CHEAT
consvar_t cv_kartusepwrlv = {"kartusepwrlv", "Yes", CV_NETVAR|CV_CHEAT, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartusepwrlv = {"kartusepwrlv", "Yes", CV_NETVAR|CV_CHEAT, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL};
static CV_PossibleValue_t kartdebugitem_cons_t[] = {{-1, "MIN"}, {NUMKARTITEMS-1, "MAX"}, {0, NULL}}; static CV_PossibleValue_t kartdebugitem_cons_t[] =
{
#define FOREACH( name, n ) { n, #name }
KART_ITEM_ITERATOR,
#undef FOREACH
{0}
};
consvar_t cv_kartdebugitem = {"kartdebugitem", "0", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugitem_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebugitem = {"kartdebugitem", "0", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugitem_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}}; static CV_PossibleValue_t kartdebugamount_cons_t[] = {{1, "MIN"}, {255, "MAX"}, {0, NULL}};
consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebugamount = {"kartdebugamount", "1", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, kartdebugamount_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_kartallowgiveitem = {"kartallowgiveitem",
#ifdef DEVELOP
"Yes",
#else
"No",
#endif
CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL
};
consvar_t cv_kartdebugshrink = {"kartdebugshrink", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebugshrink = {"kartdebugshrink", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_kartdebugdistribution = {"kartdebugdistribution", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebugdistribution = {"kartdebugdistribution", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_kartdebughuddrop = {"kartdebughuddrop", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_kartdebughuddrop = {"kartdebughuddrop", "Off", CV_NETVAR|CV_CHEAT|CV_NOSHOWHELP, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
@ -587,6 +604,8 @@ void D_RegisterServerCommands(void)
RegisterNetXCmd(XD_MODIFYVOTE, Got_ModifyVotecmd); RegisterNetXCmd(XD_MODIFYVOTE, Got_ModifyVotecmd);
RegisterNetXCmd(XD_PICKVOTE, Got_PickVotecmd); RegisterNetXCmd(XD_PICKVOTE, Got_PickVotecmd);
RegisterNetXCmd(XD_GIVEITEM, Got_GiveItemcmd);
// Remote Administration // Remote Administration
CV_RegisterVar(&cv_dummyjoinpassword); CV_RegisterVar(&cv_dummyjoinpassword);
COM_AddCommand("joinpassword", Command_ChangeJoinPassword_f); COM_AddCommand("joinpassword", Command_ChangeJoinPassword_f);
@ -645,6 +664,8 @@ void D_RegisterServerCommands(void)
#endif #endif
#endif #endif
COM_AddCommand("kartgiveitem", Command_KartGiveItem_f);
// for master server connection // for master server connection
AddMServCommands(); AddMServCommands();
@ -5726,6 +5747,41 @@ static void Got_PickVotecmd(UINT8 **cp, INT32 playernum)
Y_SetupVoteFinish(pick, level); Y_SetupVoteFinish(pick, level);
} }
static void Got_GiveItemcmd(UINT8 **cp, INT32 playernum)
{
int item;
int amt;
INT32 *kartstuff;
item = READSINT8 (*cp);
amt = READUINT8 (*cp);
if (
( netgame && ! cv_kartallowgiveitem.value ) ||
( item < KITEM_SAD || item >= NUMKARTITEMS )
)
{
CONS_Alert(CONS_WARNING,
M_GetText ("Illegal give item received from %s\n"),
player_names[playernum]);
if (server)
{
XBOXSTATIC UINT8 buf[2];
buf[0] = (UINT8)playernum;
buf[1] = KICK_MSG_CON_FAIL;
SendNetXCmd(XD_KICK, &buf, 2);
}
return;
}
kartstuff = players[playernum].kartstuff;
kartstuff[k_itemtype] = item;
kartstuff[k_itemamount] = amt;
}
/** Prints the number of displayplayers[0]. /** Prints the number of displayplayers[0].
* *
* \todo Possibly remove this; it was useful for debugging at one point. * \todo Possibly remove this; it was useful for debugging at one point.
@ -5911,6 +5967,80 @@ static void Command_Archivetest_f(void)
#endif #endif
#endif #endif
/** Give yourself an, optional quantity or one of, an item.
*
* \sa cv_kartallowgiveitem
*/
static void Command_KartGiveItem_f(void)
{
char buf[2];
int ac;
const char *name;
int item;
const char * str;
int i;
/* Allow always in local games. */
if (! netgame || cv_kartallowgiveitem.value)
{
ac = COM_Argc();
if (ac < 2)
{
CONS_Printf(
"kartgiveitem <item> [amount]: Give yourself an item\n"
);
}
else
{
item = NUMKARTITEMS;
name = COM_Argv(1);
if (isdigit(*name) || *name == '-')
{
item = atoi(name);
}
else
{
for (i = 0; ( str = kartdebugitem_cons_t[i].strvalue ); ++i)
{
if (strcasecmp(name, str) == 0)
{
item = kartdebugitem_cons_t[i].value;
break;
}
}
}
if (item < NUMKARTITEMS)
{
buf[0] = item;
if (ac > 2)
buf[1] = atoi(COM_Argv(2));
else
buf[1] = 1;/* default to one quantity */
SendNetXCmd(XD_GIVEITEM, buf, 2);
}
else
{
CONS_Alert(CONS_WARNING,
"No item matches '%s'\n",
name);
}
}
}
else
{
CONS_Alert(CONS_NOTICE,
"The server does not allow this.\n");
}
}
/** Makes a change to ::cv_forceskin take effect immediately. /** Makes a change to ::cv_forceskin take effect immediately.
* *
* \sa Command_SetForcedSkin_f, cv_forceskin, forcedskin * \sa Command_SetForcedSkin_f, cv_forceskin, forcedskin

View file

@ -126,7 +126,7 @@ extern consvar_t cv_kartusepwrlv;
extern consvar_t cv_votetime; extern consvar_t cv_votetime;
extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop; extern consvar_t cv_kartdebugitem, cv_kartdebugamount, cv_kartallowgiveitem, cv_kartdebugshrink, cv_kartdebugdistribution, cv_kartdebughuddrop;
extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes, cv_kartdebugcolorize; extern consvar_t cv_kartdebugcheckpoint, cv_kartdebugnodes, cv_kartdebugcolorize;
extern consvar_t cv_kartdebugwaypoints; extern consvar_t cv_kartdebugwaypoints;
@ -187,9 +187,10 @@ typedef enum
XD_ACCEPTPARTYINVITE, // 28 XD_ACCEPTPARTYINVITE, // 28
XD_LEAVEPARTY, // 29 XD_LEAVEPARTY, // 29
XD_CANCELPARTYINVITE, // 30 XD_CANCELPARTYINVITE, // 30
XD_GIVEITEM, // 31
#ifdef HAVE_BLUA #ifdef HAVE_BLUA
XD_LUACMD, // 31 XD_LUACMD, // 32
XD_LUAVAR, // 32 XD_LUAVAR, // 33
#endif #endif
MAXNETXCMD MAXNETXCMD
} netxcmd_t; } netxcmd_t;

View file

@ -200,29 +200,39 @@ typedef enum
NUMPOWERS NUMPOWERS
} powertype_t; } powertype_t;
/*
To use: #define FOREACH( name, number )
Do with it whatever you want.
Run this macro, then #undef FOREACH afterward
*/
#define KART_ITEM_ITERATOR \
FOREACH (SAD, -1),\
FOREACH (NONE, 0),\
FOREACH (SNEAKER, 1),\
FOREACH (ROCKETSNEAKER, 2),\
FOREACH (INVINCIBILITY, 3),\
FOREACH (BANANA, 4),\
FOREACH (EGGMAN, 5),\
FOREACH (ORBINAUT, 6),\
FOREACH (JAWZ, 7),\
FOREACH (MINE, 8),\
FOREACH (BALLHOG, 9),\
FOREACH (SPB, 10),\
FOREACH (GROW, 11),\
FOREACH (SHRINK, 12),\
FOREACH (THUNDERSHIELD, 13),\
FOREACH (BUBBLESHIELD, 14),\
FOREACH (FLAMESHIELD, 15),\
FOREACH (HYUDORO, 16),\
FOREACH (POGOSPRING, 17),\
FOREACH (SUPERRING, 18),\
FOREACH (KITCHENSINK, 19)
typedef enum typedef enum
{ {
KITEM_SAD = -1, #define FOREACH( name, n ) KITEM_ ## name = n
KITEM_NONE = 0, KART_ITEM_ITERATOR,
KITEM_SNEAKER, #undef FOREACH
KITEM_ROCKETSNEAKER,
KITEM_INVINCIBILITY,
KITEM_BANANA,
KITEM_EGGMAN,
KITEM_ORBINAUT,
KITEM_JAWZ,
KITEM_MINE,
KITEM_BALLHOG,
KITEM_SPB,
KITEM_GROW,
KITEM_SHRINK,
KITEM_THUNDERSHIELD,
KITEM_BUBBLESHIELD,
KITEM_FLAMESHIELD,
KITEM_HYUDORO,
KITEM_POGOSPRING,
KITEM_SUPERRING,
KITEM_KITCHENSINK,
NUMKARTITEMS, NUMKARTITEMS,

View file

@ -9115,27 +9115,9 @@ struct {
// SRB2Kart // SRB2Kart
// kartitems_t // kartitems_t
{"KITEM_SAD",KITEM_SAD}, // Actual items (can be set for k_itemtype) #define FOREACH( name, n ) { #name, KITEM_ ## name }
{"KITEM_NONE",KITEM_NONE}, KART_ITEM_ITERATOR, // Actual items (can be set for k_itemtype)
{"KITEM_SNEAKER",KITEM_SNEAKER}, #undef FOREACH
{"KITEM_ROCKETSNEAKER",KITEM_ROCKETSNEAKER},
{"KITEM_INVINCIBILITY",KITEM_INVINCIBILITY},
{"KITEM_BANANA",KITEM_BANANA},
{"KITEM_EGGMAN",KITEM_EGGMAN},
{"KITEM_ORBINAUT",KITEM_ORBINAUT},
{"KITEM_JAWZ",KITEM_JAWZ},
{"KITEM_MINE",KITEM_MINE},
{"KITEM_BALLHOG",KITEM_BALLHOG},
{"KITEM_SPB",KITEM_SPB},
{"KITEM_GROW",KITEM_GROW},
{"KITEM_SHRINK",KITEM_SHRINK},
{"KITEM_THUNDERSHIELD",KITEM_THUNDERSHIELD},
{"KITEM_BUBBLESHIELD",KITEM_BUBBLESHIELD},
{"KITEM_FLAMESHIELD",KITEM_FLAMESHIELD},
{"KITEM_HYUDORO",KITEM_HYUDORO},
{"KITEM_POGOSPRING",KITEM_POGOSPRING},
{"KITEM_SUPERRING",KITEM_SUPERRING},
{"KITEM_KITCHENSINK",KITEM_KITCHENSINK},
{"NUMKARTITEMS",NUMKARTITEMS}, {"NUMKARTITEMS",NUMKARTITEMS},
{"KRITEM_TRIPLESNEAKER",KRITEM_TRIPLESNEAKER}, // Additional roulette IDs (not usable for much in Lua besides K_GetItemPatch) {"KRITEM_TRIPLESNEAKER",KRITEM_TRIPLESNEAKER}, // Additional roulette IDs (not usable for much in Lua besides K_GetItemPatch)
{"KRITEM_TRIPLEBANANA",KRITEM_TRIPLEBANANA}, {"KRITEM_TRIPLEBANANA",KRITEM_TRIPLEBANANA},

View file

@ -629,6 +629,7 @@ void K_RegisterKartStuff(void)
CV_RegisterVar(&cv_kartdebugitem); CV_RegisterVar(&cv_kartdebugitem);
CV_RegisterVar(&cv_kartdebugamount); CV_RegisterVar(&cv_kartdebugamount);
CV_RegisterVar(&cv_kartdebugshrink); CV_RegisterVar(&cv_kartdebugshrink);
CV_RegisterVar(&cv_kartallowgiveitem);
CV_RegisterVar(&cv_kartdebugdistribution); CV_RegisterVar(&cv_kartdebugdistribution);
CV_RegisterVar(&cv_kartdebughuddrop); CV_RegisterVar(&cv_kartdebughuddrop);
CV_RegisterVar(&cv_kartdebugwaypoints); CV_RegisterVar(&cv_kartdebugwaypoints);