Added WeaponIDToAlias native to CStrike extension (bug 5460, r=psychonic).
This commit is contained in:
@@ -294,6 +294,22 @@ static cell_t CS_TerminateRound(IPluginContext *pContext, const cell_t *params)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static cell_t CS_WeaponIDToAlias(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
char *dest;
|
||||
|
||||
pContext->LocalToString(params[2], &dest);
|
||||
|
||||
const char *ret = WeaponIDToAlias(params[1]);
|
||||
|
||||
if (ret == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return strncopy(dest, ret, params[3]);
|
||||
}
|
||||
|
||||
static cell_t CS_GetTranslatedWeaponAlias(IPluginContext *pContext, const cell_t *params)
|
||||
{
|
||||
char *weapon;
|
||||
@@ -669,6 +685,7 @@ sp_nativeinfo_t g_CSNatives[] =
|
||||
{"CS_SetTeamScore", CS_SetTeamScore},
|
||||
{"CS_GetMVPCount", CS_GetMVPCount},
|
||||
{"CS_SetMVPCount", CS_SetMVPCount},
|
||||
{"CS_WeaponIDToAlias", CS_WeaponIDToAlias},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
|
||||
@@ -129,6 +129,35 @@ int AliasToWeaponID(const char *weapon)
|
||||
pWrapper->Execute(vstk, &weaponID);
|
||||
|
||||
return weaponID;
|
||||
}
|
||||
|
||||
const char *WeaponIDToAlias(int weaponID)
|
||||
{
|
||||
static ICallWrapper *pWrapper = NULL;
|
||||
|
||||
if (!pWrapper)
|
||||
{
|
||||
REGISTER_ADDR("WeaponIDToAlias", 0,
|
||||
PassInfo pass[1]; \
|
||||
PassInfo retpass; \
|
||||
pass[0].flags = PASSFLAG_BYVAL; \
|
||||
pass[0].type = PassType_Basic; \
|
||||
pass[0].size = sizeof(int); \
|
||||
retpass.flags = PASSFLAG_BYVAL; \
|
||||
retpass.type = PassType_Basic; \
|
||||
retpass.size = sizeof(const char *); \
|
||||
pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &retpass, pass, 1))
|
||||
}
|
||||
const char *ret = NULL;
|
||||
|
||||
unsigned char vstk[sizeof(int)];
|
||||
unsigned char *vptr = vstk;
|
||||
|
||||
*(int *)vptr = GetRealWeaponID(weaponID);
|
||||
|
||||
pWrapper->Execute(vstk, &ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
int GetRealWeaponID(int weaponId)
|
||||
{
|
||||
|
||||
@@ -153,7 +153,9 @@ void *GetWeaponInfo(int weaponID);
|
||||
|
||||
const char *GetTranslatedWeaponAlias(const char *weapon);
|
||||
|
||||
int AliasToWeaponID(const char *weapon);
|
||||
int AliasToWeaponID(const char *weapon);
|
||||
|
||||
const char *WeaponIDToAlias(int weaponID);
|
||||
|
||||
int GetRealWeaponID(int weaponId);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user