diff --git a/dlls/cstrike/cstrike.cpp b/dlls/cstrike/cstrike.cpp index f4602405..653155ed 100755 --- a/dlls/cstrike/cstrike.cpp +++ b/dlls/cstrike/cstrike.cpp @@ -1308,6 +1308,24 @@ static cell AMX_NATIVE_CALL cs_set_weapon_ammo(AMX *amx, cell *params) // cs_set return 1; } +static cell AMX_NATIVE_CALL cs_get_user_hasprimary(AMX *amx, cell *params) // cs_get_user_hasprimary(index); = 1 param +{ + // Return 1 if user has a primary or shield (actually just return the value at the offset) + // params[1] = user index + + // Check player + if (!MF_IsPlayerIngame(params[1])) + { + MF_RaiseAmxError(amx, AMX_ERR_NATIVE); + return 0; + } + + // Make into edict pointer + edict_t *pPlayer = INDEXENT(params[1]); + + return *((int *)pPlayer->pvPrivateData + OFFSET_PRIMARYWEAPON); +} + AMX_NATIVE_INFO cstrike_Exports[] = { {"cs_set_user_money", cs_set_user_money}, {"cs_get_user_money", cs_get_user_money}, @@ -1338,6 +1356,7 @@ AMX_NATIVE_INFO cstrike_Exports[] = { {"cs_reset_user_model", cs_reset_user_model}, {"cs_set_weapon_ammo", cs_set_weapon_ammo}, {"cs_get_weapon_ammo", cs_get_weapon_ammo}, + {"cs_get_user_hasprim", cs_get_user_hasprimary}, //------------------- <-- max 19 characters! {NULL, NULL} }; diff --git a/dlls/cstrike/cstrike.h b/dlls/cstrike/cstrike.h index 6b84dfa3..6409a450 100755 --- a/dlls/cstrike/cstrike.h +++ b/dlls/cstrike/cstrike.h @@ -55,6 +55,7 @@ // "player" entities #define OFFSET_TEAM 114 + EXTRAOFFSET // same as STEAM #define OFFSET_CSMONEY 115 + EXTRAOFFSET // same as STEAM + //#define OFFSET_PRIMARYWEAPON 116 + EXTRAOFFSET // not confirmed (very likely it's the same though) #define OFFSET_INTERNALMODEL 126 + EXTRAOFFSET // same as STEAM #define OFFSET_NVGOGGLES 129 + EXTRAOFFSET // same as STEAM #define OFFSET_DEFUSE_PLANT 193 + EXTRAOFFSET // same as STEAM @@ -88,6 +89,7 @@ // "player" entities #define OFFSET_TEAM 114 + EXTRAOFFSET #define OFFSET_CSMONEY 115 + EXTRAOFFSET + #define OFFSET_PRIMARYWEAPON 116 + EXTRAOFFSET #define OFFSET_INTERNALMODEL 126 + EXTRAOFFSET #define OFFSET_NVGOGGLES 129 + EXTRAOFFSET #define OFFSET_DEFUSE_PLANT 193 + EXTRAOFFSET diff --git a/plugins/include/cstrike.inc b/plugins/include/cstrike.inc index 7865e42a..594e6734 100755 --- a/plugins/include/cstrike.inc +++ b/plugins/include/cstrike.inc @@ -67,6 +67,10 @@ native cs_set_user_defuse(index, defusekit = 1, r = 0, g = 160, b = 0, icon[] = */ native cs_get_user_buyzone(index); +/* Returns 1 when user has a primary weapon OR a shield in inventory, else 0. + */ +native cs_get_user_hasprim(index); + /* Get user model. */ native cs_get_user_model(index, model[], len);