mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2024-12-27 07:15:37 +03:00
Cstrike: Cache GET_USER_MSG_ID calls
This commit is contained in:
parent
84c320d539
commit
f13461caee
@ -24,6 +24,14 @@ bool g_noknives = false;
|
||||
extern CreateNamedEntityFunc CS_CreateNamedEntity;
|
||||
extern UTIL_FindEntityByStringFunc CS_UTIL_FindEntityByString;
|
||||
|
||||
extern int MessageIdMoney;
|
||||
extern int MessageIdScoreInfo;
|
||||
extern int MessageIdArmorType;
|
||||
extern int MessageIdTeamInfo;
|
||||
extern int MessageIdStatusIcon;
|
||||
extern int MessageIdScoreAttrib;
|
||||
extern int MessageIdResetHUD;
|
||||
|
||||
// native cs_set_user_money(index, money, flash = 1);
|
||||
static cell AMX_NATIVE_CALL cs_set_user_money(AMX *amx, cell *params)
|
||||
{
|
||||
@ -38,7 +46,7 @@ static cell AMX_NATIVE_CALL cs_set_user_money(AMX *amx, cell *params)
|
||||
|
||||
set_pdata<int>(pPlayer, m_iAccount, money);
|
||||
|
||||
MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "Money", nullptr), nullptr, pPlayer);
|
||||
MESSAGE_BEGIN(MSG_ONE, MessageIdMoney, nullptr, pPlayer);
|
||||
WRITE_LONG(money);
|
||||
WRITE_BYTE(flash);
|
||||
MESSAGE_END();
|
||||
@ -86,7 +94,7 @@ static cell AMX_NATIVE_CALL cs_set_user_deaths(AMX *amx, cell *params)
|
||||
|
||||
set_pdata<int>(pPlayer, m_iDeaths, deaths);
|
||||
|
||||
MESSAGE_BEGIN(MSG_ALL, GET_USER_MSG_ID(PLID, "ScoreInfo", nullptr));
|
||||
MESSAGE_BEGIN(MSG_ALL, MessageIdScoreInfo);
|
||||
WRITE_BYTE(index);
|
||||
WRITE_SHORT(static_cast<int>(pPlayer->v.frags));
|
||||
WRITE_SHORT(deaths);
|
||||
@ -352,7 +360,7 @@ static cell AMX_NATIVE_CALL cs_set_user_armor(AMX *amx, cell *params)
|
||||
|
||||
if (type == CS_ARMOR_KEVLAR || type == CS_ARMOR_ASSAULTSUIT)
|
||||
{
|
||||
MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "ArmorType", nullptr), nullptr, pPlayer);
|
||||
MESSAGE_BEGIN(MSG_ONE, MessageIdArmorType, nullptr, pPlayer);
|
||||
WRITE_BYTE(type == CS_ARMOR_ASSAULTSUIT ? 1 : 0);
|
||||
MESSAGE_END();
|
||||
}
|
||||
@ -428,7 +436,7 @@ static cell AMX_NATIVE_CALL cs_set_user_vip(AMX *amx, cell *params)
|
||||
scoreattrib = (pPlayer->v.deadflag == DEAD_NO && pPlayer->v.health > 0) ? SCOREATTRIB_NOTHING : SCOREATTRIB_DEAD;
|
||||
}
|
||||
|
||||
MESSAGE_BEGIN(MSG_ALL, GET_USER_MSG_ID(PLID, "ScoreAttrib", nullptr));
|
||||
MESSAGE_BEGIN(MSG_ALL, MessageIdScoreAttrib);
|
||||
WRITE_BYTE(index);
|
||||
WRITE_BYTE(scoreattrib);
|
||||
MESSAGE_END();
|
||||
@ -490,7 +498,7 @@ static cell AMX_NATIVE_CALL cs_set_user_team(AMX *amx, cell *params)
|
||||
default: sprintf(teaminfo, "TEAM_%i", team);
|
||||
}
|
||||
|
||||
MESSAGE_BEGIN(MSG_ALL, GET_USER_MSG_ID(PLID, "TeamInfo", nullptr));
|
||||
MESSAGE_BEGIN(MSG_ALL, MessageIdTeamInfo);
|
||||
WRITE_BYTE(index);
|
||||
WRITE_STRING(teaminfo);
|
||||
MESSAGE_END();
|
||||
@ -567,7 +575,7 @@ static cell AMX_NATIVE_CALL cs_set_user_plant(AMX *amx, cell *params)
|
||||
{
|
||||
if (icon)
|
||||
{
|
||||
MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "StatusIcon", nullptr), nullptr, pPlayer);
|
||||
MESSAGE_BEGIN(MSG_ONE, MessageIdStatusIcon, nullptr, pPlayer);
|
||||
WRITE_BYTE(1);
|
||||
WRITE_STRING("c4");
|
||||
WRITE_BYTE(DEFUSER_COLOUR_R);
|
||||
@ -578,7 +586,7 @@ static cell AMX_NATIVE_CALL cs_set_user_plant(AMX *amx, cell *params)
|
||||
}
|
||||
else
|
||||
{
|
||||
MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "StatusIcon", nullptr), nullptr, pPlayer);
|
||||
MESSAGE_BEGIN(MSG_ONE, MessageIdStatusIcon, nullptr, pPlayer);
|
||||
WRITE_BYTE(0);
|
||||
WRITE_STRING("c4");
|
||||
MESSAGE_END();
|
||||
@ -639,7 +647,7 @@ static cell AMX_NATIVE_CALL cs_set_user_defusekit(AMX *amx, cell *params)
|
||||
icon = MF_GetAmxString(amx, params[6], 1, &length);
|
||||
}
|
||||
|
||||
MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "StatusIcon", nullptr), nullptr, pPlayer);
|
||||
MESSAGE_BEGIN(MSG_ONE, MessageIdStatusIcon, nullptr, pPlayer);
|
||||
WRITE_BYTE(params[7] == 1 ? 2 : 1);
|
||||
WRITE_STRING(icon);
|
||||
WRITE_BYTE(colour[0]);
|
||||
@ -649,7 +657,7 @@ static cell AMX_NATIVE_CALL cs_set_user_defusekit(AMX *amx, cell *params)
|
||||
}
|
||||
else
|
||||
{
|
||||
MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "StatusIcon", nullptr), nullptr, pPlayer);
|
||||
MESSAGE_BEGIN(MSG_ONE, MessageIdStatusIcon, nullptr, pPlayer);
|
||||
WRITE_BYTE(0);
|
||||
WRITE_STRING("defuser");
|
||||
MESSAGE_END();
|
||||
@ -979,7 +987,7 @@ static cell AMX_NATIVE_CALL cs_set_user_tked(AMX *amx, cell *params)
|
||||
{
|
||||
pPlayer->v.frags -= subtract;
|
||||
|
||||
MESSAGE_BEGIN(MSG_ALL, GET_USER_MSG_ID(PLID, "ScoreInfo", nullptr));
|
||||
MESSAGE_BEGIN(MSG_ALL, MessageIdScoreInfo);
|
||||
WRITE_BYTE(index);
|
||||
WRITE_SHORT(static_cast<int>(pPlayer->v.frags));
|
||||
WRITE_SHORT(get_pdata<int>(pPlayer, m_iDeaths));
|
||||
@ -1500,8 +1508,6 @@ static cell AMX_NATIVE_CALL cs_set_c4_defusing(AMX* amx, cell* params)
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// cs_create_entity(const classname[])
|
||||
static cell AMX_NATIVE_CALL cs_create_entity(AMX* amx, cell* params)
|
||||
{
|
||||
@ -1641,7 +1647,7 @@ void FN_ServerDeactivate()
|
||||
void MessageBegin(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed)
|
||||
{
|
||||
// Reset player model a short while (MODELRESETTIME) after this if they are using an edited model.
|
||||
if(msg_type == GET_USER_MSG_ID(PLID, "ResetHUD", NULL))
|
||||
if(msg_type == MessageIdResetHUD)
|
||||
{
|
||||
int entityIndex = ENTINDEX(ed);
|
||||
|
||||
|
@ -14,6 +14,8 @@
|
||||
#include "amxxmodule.h"
|
||||
#include "MemoryUtils.h"
|
||||
|
||||
extern int MessageIdTextMsg;
|
||||
|
||||
bool UTIL_IsPlayer(edict_t *pPlayer)
|
||||
{
|
||||
return strcmp(STRING(pPlayer->v.classname), "player") == 0;
|
||||
@ -21,7 +23,7 @@ bool UTIL_IsPlayer(edict_t *pPlayer)
|
||||
|
||||
void UTIL_TextMsg_Generic(edict_t* pPlayer, const char* message)
|
||||
{
|
||||
MESSAGE_BEGIN(MSG_ONE, GET_USER_MSG_ID(PLID, "TextMsg", NULL), NULL, pPlayer);
|
||||
MESSAGE_BEGIN(MSG_ONE, MessageIdTextMsg, nullptr, pPlayer);
|
||||
WRITE_BYTE(HUD_PRINTCENTER); // 1 = console, 2 = console, 3 = chat, 4 = center, 5 = radio
|
||||
WRITE_STRING(message);
|
||||
MESSAGE_END();
|
||||
|
@ -35,6 +35,35 @@ IGameConfig *MainConfig;
|
||||
IGameConfig *OffsetConfig;
|
||||
IGameConfigManager *ConfigManager;
|
||||
|
||||
int MessageIdArmorType;
|
||||
int MessageIdMoney;
|
||||
int MessageIdResetHUD;
|
||||
int MessageIdScoreAttrib;
|
||||
int MessageIdScoreInfo;
|
||||
int MessageIdStatusIcon;
|
||||
int MessageIdTeamInfo;
|
||||
int MessageIdTextMsg;
|
||||
|
||||
struct UserMsg
|
||||
{
|
||||
const char* name;
|
||||
int* id;
|
||||
};
|
||||
|
||||
UserMsg MessagesList[] =
|
||||
{
|
||||
{ "ArmorType" , &MessageIdArmorType },
|
||||
{ "CurWeapon" , &MessageIdMoney },
|
||||
{ "ResetHUD" , &MessageIdResetHUD },
|
||||
{ "ScoreAttrib", &MessageIdScoreAttrib },
|
||||
{ "ScoreInfo" , &MessageIdScoreInfo },
|
||||
{ "StatusIcon" , &MessageIdStatusIcon },
|
||||
{ "TeamInfo" , &MessageIdTeamInfo },
|
||||
{ "TextMsg" , &MessageIdTextMsg },
|
||||
{ nullptr , 0 }
|
||||
};
|
||||
|
||||
|
||||
int AmxxCheckGame(const char *game)
|
||||
{
|
||||
if (strcasecmp(game, "cstrike") == 0 ||
|
||||
@ -116,6 +145,20 @@ void OnPluginsLoaded()
|
||||
}
|
||||
}
|
||||
|
||||
int OnRegUserMsg_Post(const char *pszName, int iSize)
|
||||
{
|
||||
for (size_t i = 0; MessagesList[i].name; ++i)
|
||||
{
|
||||
if (!*MessagesList[i].id && strcmp(MessagesList[i].name, pszName) == 0)
|
||||
{
|
||||
*MessagesList[i].id = META_RESULT_ORIG_RET(int);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_META_VALUE(MRES_IGNORED, 0);
|
||||
}
|
||||
|
||||
void OnAmxxDetach()
|
||||
{
|
||||
ConfigManager->CloseGameConfigFile(MainConfig);
|
||||
|
@ -427,7 +427,7 @@
|
||||
// #define FN_PEntityOfEntIndex_Post PEntityOfEntIndex_Post
|
||||
// #define FN_FindEntityByVars_Post FindEntityByVars_Post
|
||||
// #define FN_GetModelPtr_Post GetModelPtr_Post
|
||||
// #define FN_RegUserMsg_Post RegUserMsg_Post
|
||||
#define FN_RegUserMsg_Post OnRegUserMsg_Post
|
||||
// #define FN_AnimationAutomove_Post AnimationAutomove_Post
|
||||
// #define FN_GetBonePosition_Post GetBonePosition_Post
|
||||
// #define FN_FunctionFromName_Post FunctionFromName_Post
|
||||
|
Loading…
Reference in New Issue
Block a user