mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2024-12-25 06:15:37 +03:00
cs_get_user_backpackammo cs_set_user_backpackammo
This commit is contained in:
parent
7471a45bf4
commit
6ffc9c7b49
@ -1,3 +1,5 @@
|
||||
#include "cstrike.h"
|
||||
|
||||
/* AMX Mod X
|
||||
* Counter-Strike Module
|
||||
*
|
||||
@ -31,15 +33,7 @@
|
||||
* version.
|
||||
*/
|
||||
|
||||
#include "cstrike.h"
|
||||
|
||||
/*
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
Utils first
|
||||
*/
|
||||
// Utils first
|
||||
|
||||
bool isplayer(AMX* amx, edict_t* pPlayer) {
|
||||
bool player = false;
|
||||
@ -54,6 +48,7 @@ bool isplayer(AMX* amx, edict_t* pPlayer) {
|
||||
return player;
|
||||
}
|
||||
|
||||
// Then natives
|
||||
|
||||
static cell AMX_NATIVE_CALL cs_set_user_money(AMX *amx, cell *params) // cs_set_user_money(index, money, flash = 1); = 3 arguments
|
||||
{
|
||||
@ -710,6 +705,190 @@ static cell AMX_NATIVE_CALL cs_set_user_defusekit(AMX *amx, cell *params) // cs_
|
||||
return 1;
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL cs_get_user_backpackammo(AMX *amx, cell *params) // cs_get_user_backpackammo(index, weapon); = 2 params
|
||||
{
|
||||
// Get amount of ammo in a user's backpack for a specific weapon type.
|
||||
// params[1] = user index
|
||||
// params[2] = weapon, as in CSW_*
|
||||
|
||||
// Valid entity should be within range
|
||||
if (params[1] < 1 || params[1] > gpGlobals->maxClients)
|
||||
{
|
||||
AMX_RAISEERROR(amx, AMX_ERR_NATIVE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Make into edict pointer
|
||||
edict_t *pPlayer = INDEXENT(params[1]);
|
||||
|
||||
// Check entity validity
|
||||
if (FNullEnt(pPlayer)) {
|
||||
AMX_RAISEERROR(amx, AMX_ERR_NATIVE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int offset;
|
||||
|
||||
switch (params[2]) {
|
||||
case CSW_AWP:
|
||||
offset = OFFSET_AWM_AMMO;
|
||||
break;
|
||||
case CSW_SCOUT:
|
||||
case CSW_AK47:
|
||||
case CSW_G3SG1:
|
||||
offset = OFFSET_SCOUT_AMMO;
|
||||
break;
|
||||
case CSW_M249:
|
||||
offset = OFFSET_PARA_AMMO;
|
||||
break;
|
||||
case CSW_FAMAS:
|
||||
case CSW_M4A1:
|
||||
case CSW_AUG:
|
||||
case CSW_SG550:
|
||||
case CSW_GALI:
|
||||
case CSW_SG552:
|
||||
offset = OFFSET_FAMAS_AMMO;
|
||||
break;
|
||||
case CSW_M3:
|
||||
case CSW_XM1014:
|
||||
offset = OFFSET_M3_AMMO;
|
||||
break;
|
||||
case CSW_USP:
|
||||
case CSW_UMP45:
|
||||
case CSW_MAC10:
|
||||
offset = OFFSET_USP_AMMO;
|
||||
break;
|
||||
case CSW_FIVESEVEN:
|
||||
case CSW_P90:
|
||||
offset = OFFSET_FIVESEVEN_AMMO;
|
||||
break;
|
||||
case CSW_DEAGLE:
|
||||
offset = OFFSET_DEAGLE_AMMO;
|
||||
break;
|
||||
case CSW_P228:
|
||||
offset = OFFSET_P228_AMMO;
|
||||
break;
|
||||
case CSW_GLOCK18:
|
||||
case CSW_MP5NAVY:
|
||||
case CSW_TMP:
|
||||
case CSW_ELITE:
|
||||
offset = OFFSET_GLOCK_AMMO;
|
||||
break;
|
||||
case CSW_FLASHBANG:
|
||||
offset = OFFSET_FLASH_AMMO;
|
||||
break;
|
||||
case CSW_HEGRENADE:
|
||||
offset = OFFSET_HE_AMMO;
|
||||
break;
|
||||
case CSW_SMOKEGRENADE:
|
||||
offset = OFFSET_SMOKE_AMMO;
|
||||
break;
|
||||
case CSW_C4:
|
||||
offset = OFFSET_C4_AMMO;
|
||||
break;
|
||||
default:
|
||||
AMX_RAISEERROR(amx, AMX_ERR_NATIVE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (int)*((int *)pPlayer->pvPrivateData + offset);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static cell AMX_NATIVE_CALL cs_set_user_backpackammo(AMX *amx, cell *params) // cs_set_user_backpackammo(index, weapon, amount); = 3 params
|
||||
{
|
||||
// Set amount of ammo in a user's backpack for a specific weapon type.
|
||||
// params[1] = user index
|
||||
// params[2] = weapon, as in CSW_*
|
||||
// params[3] = new amount
|
||||
|
||||
// Valid entity should be within range
|
||||
if (params[1] < 1 || params[1] > gpGlobals->maxClients)
|
||||
{
|
||||
AMX_RAISEERROR(amx, AMX_ERR_NATIVE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Make into edict pointer
|
||||
edict_t *pPlayer = INDEXENT(params[1]);
|
||||
|
||||
// Check entity validity
|
||||
if (FNullEnt(pPlayer)) {
|
||||
AMX_RAISEERROR(amx, AMX_ERR_NATIVE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int offset;
|
||||
|
||||
switch (params[2]) {
|
||||
case CSW_AWP:
|
||||
offset = OFFSET_AWM_AMMO;
|
||||
break;
|
||||
case CSW_SCOUT:
|
||||
case CSW_AK47:
|
||||
case CSW_G3SG1:
|
||||
offset = OFFSET_SCOUT_AMMO;
|
||||
break;
|
||||
case CSW_M249:
|
||||
offset = OFFSET_PARA_AMMO;
|
||||
break;
|
||||
case CSW_FAMAS:
|
||||
case CSW_M4A1:
|
||||
case CSW_AUG:
|
||||
case CSW_SG550:
|
||||
case CSW_GALI:
|
||||
case CSW_SG552:
|
||||
offset = OFFSET_FAMAS_AMMO;
|
||||
break;
|
||||
case CSW_M3:
|
||||
case CSW_XM1014:
|
||||
offset = OFFSET_M3_AMMO;
|
||||
break;
|
||||
case CSW_USP:
|
||||
case CSW_UMP45:
|
||||
case CSW_MAC10:
|
||||
offset = OFFSET_USP_AMMO;
|
||||
break;
|
||||
case CSW_FIVESEVEN:
|
||||
case CSW_P90:
|
||||
offset = OFFSET_FIVESEVEN_AMMO;
|
||||
break;
|
||||
case CSW_DEAGLE:
|
||||
offset = OFFSET_DEAGLE_AMMO;
|
||||
break;
|
||||
case CSW_P228:
|
||||
offset = OFFSET_P228_AMMO;
|
||||
break;
|
||||
case CSW_GLOCK18:
|
||||
case CSW_MP5NAVY:
|
||||
case CSW_TMP:
|
||||
case CSW_ELITE:
|
||||
offset = OFFSET_GLOCK_AMMO;
|
||||
break;
|
||||
case CSW_FLASHBANG:
|
||||
offset = OFFSET_FLASH_AMMO;
|
||||
break;
|
||||
case CSW_HEGRENADE:
|
||||
offset = OFFSET_HE_AMMO;
|
||||
break;
|
||||
case CSW_SMOKEGRENADE:
|
||||
offset = OFFSET_SMOKE_AMMO;
|
||||
break;
|
||||
case CSW_C4:
|
||||
offset = OFFSET_C4_AMMO;
|
||||
break;
|
||||
default:
|
||||
AMX_RAISEERROR(amx, AMX_ERR_NATIVE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
(int)*((int *)pPlayer->pvPrivateData + offset) = params[3];
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
AMX_NATIVE_INFO cstrike_Exports[] = {
|
||||
{"cs_set_user_money", cs_set_user_money},
|
||||
{"cs_get_user_money", cs_get_user_money},
|
||||
@ -728,6 +907,8 @@ AMX_NATIVE_INFO cstrike_Exports[] = {
|
||||
{"cs_set_user_plant", cs_set_user_plant},
|
||||
{"cs_get_user_defusekit", cs_get_user_defusekit},
|
||||
{"cs_set_user_defusekit", cs_set_user_defusekit},
|
||||
{"cs_get_user_backpackammo", cs_get_user_backpackammo},
|
||||
{"cs_set_user_backpackammo", cs_set_user_backpackammo},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
@ -759,6 +940,11 @@ C_DLLEXPORT int Meta_Attach(PLUG_LOADTIME now, META_FUNCTIONS *pFunctionTable, m
|
||||
memcpy(pFunctionTable, &gMetaFunctionTable, sizeof(META_FUNCTIONS));
|
||||
gpGamedllFuncs = pGamedllFuncs;
|
||||
|
||||
// Init stuff here
|
||||
//g_msgMoney = GET_USER_MSG_ID(PLID, "Money", NULL);
|
||||
//g_msgTextMsg = GET_USER_MSG_ID(PLID, "TextMsg", NULL);
|
||||
//g_msgStatusIcon = GET_USER_MSG_ID(PLID, "StatusIcon", NULL);
|
||||
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
|
@ -31,16 +31,17 @@
|
||||
* version.
|
||||
*/
|
||||
|
||||
// cstrike MODULE TO DO HERE: http://www.amxmodx.org/forums/viewtopic.php?t=45
|
||||
|
||||
#include <extdll.h>
|
||||
#include <meta_api.h>
|
||||
#include <modules.h>
|
||||
|
||||
// Check later if all of these really are needed!
|
||||
meta_globals_t *gpMetaGlobals; // Variables provided to plugins.
|
||||
gamedll_funcs_t *gpGamedllFuncs; // Pair of function tables provided by game DLL.
|
||||
mutil_funcs_t *gpMetaUtilFuncs; // Meta Utility Function table type.
|
||||
enginefuncs_t g_engfuncs; // Engine hands this to DLLs for functionality callbacks
|
||||
globalvars_t *gpGlobals; // JGHG says: contains info on server, like maxclients, (time?) etc, stringbase is here :-) seems to be used with entity classnames...
|
||||
globalvars_t *gpGlobals; // JGHG says: contains info on server, like maxcliens, (time?) etc, stringbase is here :-) seems to be used with entity classnames...
|
||||
|
||||
// Must provide at least one of these...
|
||||
static META_FUNCTIONS gMetaFunctionTable; /* = {
|
||||
@ -73,6 +74,22 @@ pfnmodule_engine_g* g_engModuleFunc;
|
||||
#define OFFSET_DEFUSE_PLANT 193 + 5
|
||||
#define OFFSET_VIP 215 + 5
|
||||
#define OFFSET_BUYZONE 241 + 5
|
||||
|
||||
#define OFFSET_AWM_AMMO 382 + 5
|
||||
#define OFFSET_SCOUT_AMMO 383 + 5
|
||||
#define OFFSET_PARA_AMMO 384 + 5
|
||||
#define OFFSET_FAMAS_AMMO 385 + 5
|
||||
#define OFFSET_M3_AMMO 386 + 5
|
||||
#define OFFSET_USP_AMMO 387 + 5
|
||||
#define OFFSET_FIVESEVEN_AMMO 388 + 5
|
||||
#define OFFSET_DEAGLE_AMMO 389 + 5
|
||||
#define OFFSET_P228_AMMO 390 + 5
|
||||
#define OFFSET_GLOCK_AMMO 391 + 5
|
||||
#define OFFSET_FLASH_AMMO 392 + 5
|
||||
#define OFFSET_HE_AMMO 393 + 5
|
||||
#define OFFSET_SMOKE_AMMO 394 + 5
|
||||
#define OFFSET_C4_AMMO 395 + 5
|
||||
|
||||
#define OFFSET_CSDEATHS 449 + 5
|
||||
#define OFFSET_HOSTAGEID 487 + 5
|
||||
#else
|
||||
@ -83,14 +100,76 @@ pfnmodule_engine_g* g_engModuleFunc;
|
||||
#define OFFSET_DEFUSE_PLANT 193
|
||||
#define OFFSET_VIP 215
|
||||
#define OFFSET_BUYZONE 241
|
||||
|
||||
#define OFFSET_AWM_AMMO 382
|
||||
#define OFFSET_SCOUT_AMMO 383
|
||||
#define OFFSET_PARA_AMMO 384
|
||||
#define OFFSET_FAMAS_AMMO 385
|
||||
#define OFFSET_M3_AMMO 386
|
||||
#define OFFSET_USP_AMMO 387
|
||||
#define OFFSET_FIVESEVEN_AMMO 388
|
||||
#define OFFSET_DEAGLE_AMMO 389
|
||||
#define OFFSET_P228_AMMO 390
|
||||
#define OFFSET_GLOCK_AMMO 391
|
||||
#define OFFSET_FLASH_AMMO 392
|
||||
#define OFFSET_HE_AMMO 393
|
||||
#define OFFSET_SMOKE_AMMO 394
|
||||
#define OFFSET_C4_AMMO 395
|
||||
|
||||
#define OFFSET_CSDEATHS 449
|
||||
#define OFFSET_HOSTAGEID 487
|
||||
#endif // defined __linux__
|
||||
|
||||
|
||||
// Offsets of ammo amount in player entities
|
||||
/*
|
||||
382 int awm
|
||||
383 int scout, ak, g3
|
||||
384 int para
|
||||
385 int famas, m4a1, aug, sg550, galil, sg552
|
||||
386 int m3, xm
|
||||
387 int usp, ump, mac
|
||||
388 int fiveseven, p90
|
||||
389 int deagle
|
||||
390 int p228
|
||||
391 int glock, mp5, tmp, elites
|
||||
392 int flash
|
||||
393 int he
|
||||
394 int smoke
|
||||
395 int c4
|
||||
*/
|
||||
|
||||
// Ids of weapons in CS
|
||||
#define CSW_P228 1
|
||||
//#define CSW_SHIELD 2
|
||||
#define CSW_SCOUT 3
|
||||
#define CSW_HEGRENADE 4
|
||||
#define CSW_XM1014 5
|
||||
#define CSW_C4 6
|
||||
#define CSW_MAC10 7
|
||||
#define CSW_AUG 8
|
||||
#define CSW_SMOKEGRENADE 9
|
||||
#define CSW_ELITE 10
|
||||
#define CSW_FIVESEVEN 11
|
||||
#define CSW_UMP45 12
|
||||
#define CSW_SG550 13
|
||||
#define CSW_GALI 14
|
||||
#define CSW_FAMAS 15
|
||||
#define CSW_USP 16
|
||||
#define CSW_GLOCK18 17
|
||||
#define CSW_AWP 18
|
||||
#define CSW_MP5NAVY 19
|
||||
#define CSW_M249 20
|
||||
#define CSW_M3 21
|
||||
#define CSW_M4A1 22
|
||||
#define CSW_TMP 23
|
||||
#define CSW_G3SG1 24
|
||||
#define CSW_FLASHBANG 25
|
||||
#define CSW_DEAGLE 26
|
||||
#define CSW_SG552 27
|
||||
#define CSW_AK47 28
|
||||
//#define CSW_KNIFE 29
|
||||
#define CSW_P90 30
|
||||
|
||||
#define M4A1_UNSILENCED 0
|
||||
#define M4A1_SILENCED 4
|
||||
@ -138,4 +217,8 @@ module_info_s module_info = {
|
||||
AMX_INTERFACE_VERSION,
|
||||
RELOAD_MODULE,
|
||||
};
|
||||
|
||||
//int g_msgMoney;
|
||||
//int g_msgTextMsg;
|
||||
//int g_msgStatusIcon;
|
||||
// Globals above
|
||||
|
Loading…
Reference in New Issue
Block a user