2006-09-08 14:49:54 +00:00
|
|
|
/* Xtrafun backwards compatibility
|
|
|
|
*
|
|
|
|
* by the AMX Mod X Development Team
|
|
|
|
* These natives were originally made by SpaceDude, EJ, and JustinHoMi.
|
|
|
|
*
|
|
|
|
* This file is provided as is (no warranties).
|
|
|
|
*/
|
|
|
|
|
|
|
|
#if !defined _xtrafun_included
|
|
|
|
#define _xtrafun_included
|
|
|
|
|
|
|
|
#if !defined _engine_included
|
|
|
|
#include <engine.inc>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Gets the velocity of an entity */
|
|
|
|
stock get_entity_velocity(index, velocity[3]) {
|
|
|
|
new Float:vector[3]
|
|
|
|
entity_get_vector(index, EV_VEC_velocity, vector)
|
|
|
|
FVecIVec(vector, velocity)
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Sets the velocity of an entity */
|
|
|
|
stock set_entity_velocity(index, velocity[3]) {
|
|
|
|
new Float:vector[3]
|
|
|
|
IVecFVec(velocity, vector)
|
|
|
|
entity_set_vector(index, EV_VEC_velocity, vector)
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Gets the origin of an entity */
|
|
|
|
stock get_entity_origin(index, origin[3]) {
|
|
|
|
new Float:vector[3]
|
|
|
|
entity_get_vector(index, EV_VEC_origin, vector)
|
|
|
|
FVecIVec(vector, origin)
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Sets the origin of an entity */
|
|
|
|
stock set_entity_origin(index, origin[3]) {
|
|
|
|
new Float:vector[3]
|
|
|
|
IVecFVec(origin, vector)
|
|
|
|
entity_set_vector(index, EV_VEC_origin, vector)
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Get the index of the grenade belonging to index.
|
|
|
|
* Model of grenade is returned in model[].
|
|
|
|
* Specify the grenadeindex to start searching from,
|
|
|
|
* or leave it at 0 to search from the start.
|
|
|
|
* Returns grenade index.
|
|
|
|
* Paths + models of grenades in Counter-Strike:
|
|
|
|
* HEGRENADE = "models/w_hegrenade.mdl"
|
|
|
|
* FLASHBANG = "models/w_flashbang.mdl"
|
|
|
|
* SMOKEGRENADE = "models/w_smokegrenade.mdl" */
|
|
|
|
stock get_grenade_index(index, model[], len, grenadeindex = 0) {
|
|
|
|
new entfind = grenadeindex
|
|
|
|
new entowner = index
|
|
|
|
|
|
|
|
for (;;) {
|
|
|
|
entfind = find_ent_by_class(entfind, "grenade")
|
|
|
|
|
|
|
|
if (entfind && is_valid_ent(entfind)) {
|
|
|
|
if (entity_get_edict(entFind, EV_ENT_owner) == entowner) {
|
|
|
|
entity_get_string(entfind, EV_SZ_model, model)
|
|
|
|
return entfind
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
// Eventually comes here if loop fails to find a grenade with specified owner.
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Find the number of entities in the game */
|
|
|
|
stock current_num_ents() {
|
|
|
|
return entity_count();
|
|
|
|
}
|
|
|
|
|
|
|
|
enum {
|
|
|
|
classname = 0,
|
|
|
|
target,
|
|
|
|
targetname
|
|
|
|
}
|
|
|
|
|
2006-12-19 02:02:49 +00:00
|
|
|
#if !defined _vexd_bcompat_included
|
2006-09-08 14:49:54 +00:00
|
|
|
/* Find an entity ID from start_from_ent id (use 0 to start from
|
|
|
|
* the beginning, category is either "classname", "target" or
|
|
|
|
* "targetname", value is the name you are searching for */
|
|
|
|
stock find_entity(start_from_ent, category, value[]) {
|
|
|
|
switch (category) {
|
|
|
|
case target: return find_ent_by_target(start_from_ent, value)
|
|
|
|
case targetname: return find_ent_by_tname(start_from_ent, value)
|
|
|
|
}
|
|
|
|
return find_ent_by_class(start_from_ent, value)
|
|
|
|
}
|
2006-12-19 02:02:49 +00:00
|
|
|
#endif
|
2006-09-08 14:49:54 +00:00
|
|
|
|
|
|
|
#endif // _xtrafun_included
|