mirror of
https://github.com/alliedmodders/amxmodx.git
synced 2024-12-25 14:25:38 +03:00
Added amb37, amb38, amb39 and amb205: various cstrike natives.
(Still need to test)
This commit is contained in:
parent
d682375d7d
commit
68d2b03e48
@ -1520,6 +1520,178 @@ static cell AMX_NATIVE_CALL cs_get_user_zoom(AMX *amx, cell *params)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
// Returns whether the player has a thighpack or backpack model on
|
||||||
|
|
||||||
|
static cell AMX_NATIVE_CALL cs_get_user_submodel(AMX* amx, cell* params)
|
||||||
|
{
|
||||||
|
// Check Player
|
||||||
|
CHECK_PLAYER(params[1]);
|
||||||
|
// Fetch player pointer
|
||||||
|
edict_t* pPlayer = MF_GetPlayerEdict(params[1]);
|
||||||
|
|
||||||
|
return pPlayer->v.body;
|
||||||
|
}
|
||||||
|
static cell AMX_NATIVE_CALL cs_set_user_submodel(AMX* amx, cell* params)
|
||||||
|
{
|
||||||
|
// Check Player
|
||||||
|
CHECK_PLAYER(params[1]);
|
||||||
|
// Fetch player pointer
|
||||||
|
edict_t* pPlayer = MF_GetPlayerEdict(params[1]);
|
||||||
|
|
||||||
|
pPlayer->v.body = params[2];
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#if PAWN_CELL_SIZE == 32
|
||||||
|
static cell AMX_NATIVE_CALL cs_get_user_lastactivity(AMX *amx, cell *params)
|
||||||
|
{
|
||||||
|
//Return time that the user last did activity
|
||||||
|
|
||||||
|
//Check player
|
||||||
|
CHECK_PLAYER(params[1]);
|
||||||
|
|
||||||
|
// Make into edict pointer
|
||||||
|
edict_t *pPlayer = MF_GetPlayerEdict(params[1]);
|
||||||
|
|
||||||
|
return amx_ftoc(*((REAL*)pPlayer->pvPrivateData + OFFSET_LASTACTIVITY));
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell AMX_NATIVE_CALL cs_set_user_lastactivity(AMX *amx, cell *params)
|
||||||
|
{
|
||||||
|
//set time that the user last did activity
|
||||||
|
|
||||||
|
//Check player
|
||||||
|
CHECK_PLAYER(params[1]);
|
||||||
|
|
||||||
|
// Make into edict pointer
|
||||||
|
edict_t *pPlayer = MF_GetPlayerEdict(params[1]);
|
||||||
|
|
||||||
|
*((REAL*)pPlayer->pvPrivateData + OFFSET_LASTACTIVITY) = amx_ctof(params[2]);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
static cell AMX_NATIVE_CALL cs_get_hostage_lastuse(AMX *amx, cell *params)
|
||||||
|
{
|
||||||
|
//Return time that the hostage was last used
|
||||||
|
|
||||||
|
CHECK_NONPLAYER(params[1]);
|
||||||
|
|
||||||
|
// Make into edict pointer
|
||||||
|
edict_t* pHostage = INDEXENT(params[1]);
|
||||||
|
|
||||||
|
// Make sure this is a hostage.
|
||||||
|
if (strcmp(STRING(pHostage->v.classname), "hostage_entity") != 0) {
|
||||||
|
MF_LogError(amx, AMX_ERR_NATIVE, "Entity %d (\"%s\") is not a hostage", params[1], STRING(pHostage->v.classname));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return amx_ftoc(*((REAL*)pHostage->pvPrivateData + OFFSET_HOSTAGE_LASTUSE));
|
||||||
|
}
|
||||||
|
static cell AMX_NATIVE_CALL cs_set_hostage_lastuse(AMX *amx, cell *params)
|
||||||
|
{
|
||||||
|
//Return time that the hostage was last used
|
||||||
|
|
||||||
|
CHECK_NONPLAYER(params[1]);
|
||||||
|
|
||||||
|
// Make into edict pointer
|
||||||
|
edict_t* pHostage = INDEXENT(params[1]);
|
||||||
|
|
||||||
|
// Make sure this is a hostage.
|
||||||
|
if (strcmp(STRING(pHostage->v.classname), "hostage_entity") != 0) {
|
||||||
|
MF_LogError(amx, AMX_ERR_NATIVE, "Entity %d (\"%s\") is not a hostage", params[1], STRING(pHostage->v.classname));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*((REAL*)pHostage->pvPrivateData + OFFSET_HOSTAGE_LASTUSE) = amx_ctof(params[2]);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
static cell AMX_NATIVE_CALL cs_get_hostage_nextuse(AMX* amx, cell* params)
|
||||||
|
{
|
||||||
|
//Return time that the hostage was last used
|
||||||
|
|
||||||
|
CHECK_NONPLAYER(params[1]);
|
||||||
|
|
||||||
|
// Make into edict pointer
|
||||||
|
edict_t* pHostage = INDEXENT(params[1]);
|
||||||
|
|
||||||
|
// Make sure this is a hostage.
|
||||||
|
if (strcmp(STRING(pHostage->v.classname), "hostage_entity") != 0) {
|
||||||
|
MF_LogError(amx, AMX_ERR_NATIVE, "Entity %d (\"%s\") is not a hostage", params[1], STRING(pHostage->v.classname));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return amx_ftoc(*((REAL*)pHostage->pvPrivateData + OFFSET_HOSTAGE_NEXTUSE));
|
||||||
|
}
|
||||||
|
static cell AMX_NATIVE_CALL cs_set_hostage_nextuse(AMX* amx, cell* params)
|
||||||
|
{
|
||||||
|
//Return time that the hostage was last used
|
||||||
|
|
||||||
|
CHECK_NONPLAYER(params[1]);
|
||||||
|
|
||||||
|
// Make into edict pointer
|
||||||
|
edict_t* pHostage = INDEXENT(params[1]);
|
||||||
|
|
||||||
|
// Make sure this is a hostage.
|
||||||
|
if (strcmp(STRING(pHostage->v.classname), "hostage_entity") != 0) {
|
||||||
|
MF_LogError(amx, AMX_ERR_NATIVE, "Entity %d (\"%s\") is not a hostage", params[1], STRING(pHostage->v.classname));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*((REAL*)pHostage->pvPrivateData + OFFSET_HOSTAGE_NEXTUSE) = amx_ctof(params[2]);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static cell AMX_NATIVE_CALL cs_get_c4_explode_time(AMX* amx, cell* params)
|
||||||
|
{
|
||||||
|
CHECK_NONPLAYER(params[1]);
|
||||||
|
edict_t* pC4 = INDEXENT(params[1]);
|
||||||
|
|
||||||
|
// Make sure it's a c4
|
||||||
|
if (strcmp(STRING(pC4->v.classname), "grenade") != 0)
|
||||||
|
{
|
||||||
|
MF_LogError(amx, AMX_ERR_NATIVE, "Entity %d (\"%s\") is not C4!", params[1], STRING(pC4->v.classname));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return amx_ftoc(*((REAL*)pC4->pvPrivateData + OFFSET_C4_EXPLODE_TIME));
|
||||||
|
}
|
||||||
|
static cell AMX_NATIVE_CALL cs_set_c4_explode_time(AMX* amx, cell* params)
|
||||||
|
{
|
||||||
|
CHECK_NONPLAYER(params[1]);
|
||||||
|
edict_t* pC4 = INDEXENT(params[1]);
|
||||||
|
|
||||||
|
// Make sure it's a c4
|
||||||
|
if (strcmp(STRING(pC4->v.classname), "grenade") != 0)
|
||||||
|
{
|
||||||
|
MF_LogError(amx, AMX_ERR_NATIVE, "Entity %d (\"%s\") is not C4!", params[1], STRING(pC4->v.classname));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*((REAL*)pC4->pvPrivateData + OFFSET_C4_EXPLODE_TIME) = amx_ctof(params[2]);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static cell AMX_NATIVE_CALL not_on_64(AMX* amx, cell* params)
|
||||||
|
{
|
||||||
|
MF_LogError(amx, AMX_ERR_NATIVE, "This function is not implemented on AMD64");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#define cs_get_user_lastactivity not_on_64
|
||||||
|
#define cs_set_user_lastactivity not_on_64
|
||||||
|
#define cs_get_hostage_lastuse not_on_64
|
||||||
|
#define cs_set_hostage_lastuse not_on_64
|
||||||
|
#define cs_get_hostage_nextuse not_on_64
|
||||||
|
#define cs_set_hostage_nextuse not_on_64
|
||||||
|
#define cs_get_c4_explode_time not_on_64
|
||||||
|
#define cs_set_c4_explode_time not_on_64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
AMX_NATIVE_INFO cstrike_Exports[] = {
|
AMX_NATIVE_INFO cstrike_Exports[] = {
|
||||||
{"cs_set_user_money", cs_set_user_money},
|
{"cs_set_user_money", cs_set_user_money},
|
||||||
@ -1568,6 +1740,17 @@ AMX_NATIVE_INFO cstrike_Exports[] = {
|
|||||||
{"cs_set_armoury_type", cs_set_armoury_type},
|
{"cs_set_armoury_type", cs_set_armoury_type},
|
||||||
{"cs_get_user_zoom", cs_get_user_zoom},
|
{"cs_get_user_zoom", cs_get_user_zoom},
|
||||||
{"cs_set_user_zoom", cs_set_user_zoom},
|
{"cs_set_user_zoom", cs_set_user_zoom},
|
||||||
|
{"cs_get_user_submodel", cs_get_user_submodel},
|
||||||
|
{"cs_set_user_submodel", cs_set_user_submodel},
|
||||||
|
{"cs_get_user_lastactivity", cs_get_user_lastactivity},
|
||||||
|
{"cs_set_user_lastactivity", cs_set_user_lastactivity},
|
||||||
|
{"cs_get_hostage_lastuse", cs_get_hostage_lastuse},
|
||||||
|
{"cs_set_hostage_lastuse", cs_set_hostage_lastuse},
|
||||||
|
{"cs_get_hostage_nextuse", cs_get_hostage_nextuse},
|
||||||
|
{"cs_set_hostage_nextuse", cs_set_hostage_nextuse},
|
||||||
|
{"cs_get_c4_explode_time", cs_get_c4_explode_time},
|
||||||
|
{"cs_set_c4_explode_time", cs_set_c4_explode_time},
|
||||||
|
|
||||||
//------------------- <-- max 19 characters!
|
//------------------- <-- max 19 characters!
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
@ -69,6 +69,7 @@
|
|||||||
#define OFFSET_TEAM 114 + EXTRAOFFSET
|
#define OFFSET_TEAM 114 + EXTRAOFFSET
|
||||||
#define OFFSET_CSMONEY 115 + EXTRAOFFSET
|
#define OFFSET_CSMONEY 115 + EXTRAOFFSET
|
||||||
#define OFFSET_PRIMARYWEAPON 116 + EXTRAOFFSET
|
#define OFFSET_PRIMARYWEAPON 116 + EXTRAOFFSET
|
||||||
|
#define OFFSET_LASTACTIVITY 124 + EXTRAOFFSET
|
||||||
#define OFFSET_INTERNALMODEL 126 + EXTRAOFFSET
|
#define OFFSET_INTERNALMODEL 126 + EXTRAOFFSET
|
||||||
#define OFFSET_NVGOGGLES 129 + EXTRAOFFSET
|
#define OFFSET_NVGOGGLES 129 + EXTRAOFFSET
|
||||||
#define OFFSET_DEFUSE_PLANT 193 + EXTRAOFFSET
|
#define OFFSET_DEFUSE_PLANT 193 + EXTRAOFFSET
|
||||||
@ -102,9 +103,13 @@
|
|||||||
#define OFFSET_SILENCER_FIREMODE 74 + EXTRAOFFSET_WEAPONS
|
#define OFFSET_SILENCER_FIREMODE 74 + EXTRAOFFSET_WEAPONS
|
||||||
// "hostage_entity" entities
|
// "hostage_entity" entities
|
||||||
#define OFFSET_HOSTAGEFOLLOW 86 + EXTRAOFFSET
|
#define OFFSET_HOSTAGEFOLLOW 86 + EXTRAOFFSET
|
||||||
|
#define OFFSET_HOSTAGE_NEXTUSE 100 + EXTRAOFFSET
|
||||||
|
#define OFFSET_HOSTAGE_LASTUSE 483 + EXTRAOFFSET
|
||||||
#define OFFSET_HOSTAGEID 487 + EXTRAOFFSET
|
#define OFFSET_HOSTAGEID 487 + EXTRAOFFSET
|
||||||
// "armoury_entity"
|
// "armoury_entity"
|
||||||
#define OFFSET_ARMOURY_TYPE 34 + EXTRAOFFSET_WEAPONS
|
#define OFFSET_ARMOURY_TYPE 34 + EXTRAOFFSET_WEAPONS
|
||||||
|
// C4 offsets
|
||||||
|
#define OFFSET_C4_EXPLODE_TIME 100 + EXTRAOFFSET
|
||||||
#else
|
#else
|
||||||
// Amd64 offsets here
|
// Amd64 offsets here
|
||||||
#define OFFSET_ARMORTYPE 137 + EXTRAOFFSET
|
#define OFFSET_ARMORTYPE 137 + EXTRAOFFSET
|
||||||
|
@ -295,3 +295,39 @@ native cs_set_user_zoom(index, type, mode);
|
|||||||
/* Returns how a user is zooming during the native call. Values correspond to the above enum, but will return 0 if an error occurred.
|
/* Returns how a user is zooming during the native call. Values correspond to the above enum, but will return 0 if an error occurred.
|
||||||
*/
|
*/
|
||||||
native cs_get_user_zoom(index);
|
native cs_get_user_zoom(index);
|
||||||
|
|
||||||
|
/* Returns the submodel setting of the player.
|
||||||
|
* If this is 1, then the user has a backpack or defuser on their model (depending on team)
|
||||||
|
*/
|
||||||
|
native cs_get_user_submodel(index);
|
||||||
|
|
||||||
|
/* Sets the submodel setting of the player.
|
||||||
|
* If this is 1, then the user has a backpack or defuser on their model (depending on team)
|
||||||
|
* 0 removes it.
|
||||||
|
*/
|
||||||
|
native cs_set_user_submodel(index, value);
|
||||||
|
|
||||||
|
/* Gets or sets the user's last activity time. This is the time that CS's internal afk kicker
|
||||||
|
* checks to see who has been afk too long.
|
||||||
|
*/
|
||||||
|
native Float:cs_get_user_lastactivity(index);
|
||||||
|
|
||||||
|
native cs_set_user_lastactivity(index, Float:value);
|
||||||
|
|
||||||
|
/* Gets or sets the time that the hostage was last used.
|
||||||
|
*/
|
||||||
|
native Float:cs_get_hostage_lastuse(index);
|
||||||
|
|
||||||
|
native cs_set_hostage_lastuse(index, Float:value);
|
||||||
|
|
||||||
|
/* Gets or sets the time which the hostage can next be used.
|
||||||
|
*/
|
||||||
|
native Float:cs_get_hostage_nextuse(index);
|
||||||
|
|
||||||
|
native cs_set_hostage_nextuse(index, Float:value);
|
||||||
|
|
||||||
|
/* Gets or sets the time in which the C4 will explode.
|
||||||
|
*/
|
||||||
|
native Float:cs_get_c4_explode_time(index);
|
||||||
|
|
||||||
|
native cs_set_c4_explode_time(index, Float:value);
|
||||||
|
Loading…
Reference in New Issue
Block a user