Code:
static cell AMX_NATIVE_CALL cs_set_user_defusekit(AMX *amx, cell *params) // cs_set_user_defusekit(index, defusekit = 1, r = 0, g = 160, b = 0, icon[] = "defuser", flash = 0); = 7 params
{
// Give/take defusekit.
// params[1] = user index
// params[2] = 1 = give
// params[3] = r
// params[4] = g
// params[5] = b
// params[6] = icon[]
// params[7] = flash = 0
// Valid entity should be within range
CHECK_PLAYER(params[1]);
// Make into edict pointer
edict_t *pPlayer = MF_GetPlayerEdict(params[1]);
int* defusekit = ((int *)pPlayer->pvPrivateData + OFFSET_DEFUSE_PLANT);
if (params[2])
{
int colour[3] = {DEFUSER_COLOUR_R, DEFUSER_COLOUR_G, DEFUSER_COLOUR_B};
for (int i = 0; i < 3; i++)
{
if (params[i + 3] != -1)
{
colour[i] = params[i + 3];
}
}
pPlayer->v.body = 1;
char* icon;
if (params[6] != -1)
{
int len;
icon = MF_GetAmxString(amx, params[6], 1, &len);
} else {
icon = "defuser";
}
*defusekit |= HAS_DEFUSE_KIT;
MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "StatusIcon", NULL), NULL, pPlayer);
WRITE_BYTE(params[7] == 1 ? 2 : 1); // show (if params[7] == 1, then this should flash, so we should set two here, else just 1 to show normally)
WRITE_STRING(icon);
WRITE_BYTE(colour[0]);
WRITE_BYTE(colour[1]);
WRITE_BYTE(colour[2]);
MESSAGE_END();
}
else {
*defusekit &= ~HAS_DEFUSE_KIT;
MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "StatusIcon", NULL), NULL, pPlayer);
WRITE_BYTE(0); // hide
WRITE_STRING("defuser");
MESSAGE_END();
pPlayer->v.body = 0;
}
/*
to show:
L 02/20/2004 - 16:10:26: [JGHG Trace] {MessageBegin type=StatusIcon(107), dest=MSG_ONE(1), classname=player netname=JGHG
L 02/20/2004 - 16:10:26: [JGHG Trace] WriteByte byte=1
L 02/20/2004 - 16:10:26: [JGHG Trace] WriteString string=defuser
L 02/20/2004 - 16:10:26: [JGHG Trace] WriteByte byte=0
L 02/20/2004 - 16:10:26: [JGHG Trace] WriteByte byte=160
L 02/20/2004 - 16:10:26: [JGHG Trace] WriteByte byte=0
L 02/20/2004 - 16:10:26: [JGHG Trace] MessageEnd}
to hide:
L 02/20/2004 - 16:10:31: [JGHG Trace] {MessageBegin type=StatusIcon(107), dest=MSG_ONE(1), classname=player netname=JGHG
L 02/20/2004 - 16:10:31: [JGHG Trace] WriteByte byte=0
L 02/20/2004 - 16:10:31: [JGHG Trace] WriteString string=defuser
L 02/20/2004 - 16:10:31: [JGHG Trace] MessageEnd}
*/
return 1;
}
Correct. The StatusIcon message from cs_set_user_defuse( ) is sent straight to the engine.
__________________