133 lines
2.7 KiB
PHP
133 lines
2.7 KiB
PHP
/* VexdUM stocks backwards compatibility
|
|
*
|
|
* by the AMX Mod X Development Team
|
|
*
|
|
* This file is provided as is (no warranties).
|
|
*/
|
|
|
|
#if defined _vexd_bcompat_stocks_included
|
|
#endinput
|
|
#endif
|
|
#define _vexd_bcompat_stocks_included
|
|
|
|
#if !defined _engine_included
|
|
#include <engine>
|
|
#endif
|
|
|
|
stock is_entity(ent)
|
|
{
|
|
return pev_valid(ent);
|
|
}
|
|
|
|
stock get_offset_int(ent, offset, linos = 5)
|
|
{
|
|
return get_pdata_int(ent, offset, linos);
|
|
}
|
|
|
|
stock set_offset_int(ent, offset, value, linos = 5)
|
|
{
|
|
return set_pdata_int(ent, offset, value, linos);
|
|
}
|
|
|
|
stock in_view_cone(ent, Float:Orig[3])
|
|
{
|
|
return is_in_viewcone(ent, Orig);
|
|
}
|
|
|
|
stock get_maxentities()
|
|
{
|
|
return global_get(glb_maxEntities);
|
|
}
|
|
|
|
stock can_see(ent1, ent2)
|
|
{
|
|
if (is_entity(ent1) && is_entity(ent2))
|
|
{
|
|
new flags = pev(ent1, pev_flags);
|
|
if (flags & EF_NODRAW || flags & FL_NOTARGET)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
new Float:lookerOrig[3];
|
|
new Float:targetOrig[3];
|
|
new Float:temp[3];
|
|
|
|
pev(ent1, pev_origin, lookerOrig);
|
|
pev(ent1, pev_view_ofs, temp);
|
|
lookerOrig[0] += temp[0];
|
|
lookerOrig[1] += temp[1];
|
|
lookerOrig[2] += temp[2];
|
|
|
|
pev(ent2, pev_origin, targetOrig);
|
|
pev(ent2, pev_view_ofs, temp);
|
|
targetOrig[0] += temp[0];
|
|
targetOrig[1] += temp[1];
|
|
targetOrig[2] += temp[2];
|
|
|
|
engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, ent1, 0);
|
|
if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
|
|
{
|
|
return 0;
|
|
} else {
|
|
new Float:flFraction;
|
|
get_tr2(0, TraceResult:TR_Fraction, flFraction);
|
|
if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_Hit) == ent2))
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//From AMX Mod:
|
|
// Find an entity in the world, will return -1 if nothing is found
|
|
// type = 0: "classname"
|
|
// type = 1: "globalname"
|
|
// type = 2: "model"
|
|
// type = 3: "target"
|
|
// type = 4: "targetname"
|
|
// type = 5: "netname"
|
|
// type = 6: "message"
|
|
// type = 7: "noise"
|
|
// type = 8: "noise1"
|
|
// type = 9: "noise2"
|
|
// type = 10: "noise3"
|
|
// type = 11: "viewmodel"
|
|
// type = 12: "weaponmodel"
|
|
stock find_entity(ent, szValue[], type=0)
|
|
{
|
|
static _g_FindEntTypes[13][] =
|
|
{
|
|
"classname",
|
|
"globalname",
|
|
"model",
|
|
"target",
|
|
"targetname",
|
|
"netname",
|
|
"messages",
|
|
"noise",
|
|
"noise1",
|
|
"noise2",
|
|
"noise3",
|
|
"viewmodel",
|
|
"weaponmodel"
|
|
};
|
|
|
|
if (type < 0 || type >= 13)
|
|
{
|
|
type = 0;
|
|
}
|
|
|
|
return engfunc(EngFunc_FindEntityByString, ent, _g_FindEntTypes[type], szValue);
|
|
}
|
|
|
|
//From AMX Mod:
|
|
// Find an entity within a given origin and radius
|
|
stock find_entity_sphere(ent, Float:Orig[3], Float:Rad)
|
|
{
|
|
return engfunc(EngFunc_FindEntityInSphere, ent, Orig, Rad);
|
|
}
|