Subb98 писал(а): RevCrew, cyberforum предложил бы, но что меня там бесит: создаёшь тему с вопросом - тебе отвечают ссылками на похожие темы, где даны ответы точно такими же ссылками на похожие темы с ответами с точно такими же ссылками. Как будто не на форум зашёл, а на порно-сайт с unlimited-redirect'ами.
Модераторы: Subb98, liFe iS GoOD
bool: bTestAABBAABB( iPlayer, iOther )
{
#define offset 1.0
new Float: vecAbsMinA[ 3 ];
new Float: vecAbsMaxA[ 3 ];
new Float: vecAbsMinB[ 3 ];
new Float: vecAbsMaxB[ 3 ];
get_entvar( iPlayer, var_absmin, vecAbsMinA );
get_entvar( iPlayer, var_absmax, vecAbsMaxA );
get_entvar( iOther, var_absmin, vecAbsMinB );
get_entvar( iOther, var_absmax, vecAbsMaxB );
if( vecAbsMaxA[ 0 ] - offset < vecAbsMinB[ 0 ] + offset || vecAbsMinA[ 0 ] + offset > vecAbsMaxB[ 0 ] - offset )
return false;
if( vecAbsMaxA[ 1 ] - offset < vecAbsMinB[ 1 ] + offset || vecAbsMinA[ 1 ] + offset > vecAbsMaxB[ 1 ] - offset )
return false;
if( vecAbsMaxA[ 2 ] - offset < vecAbsMinB[ 2 ] + offset || vecAbsMinA[ 2 ] + offset > vecAbsMaxB[ 2 ] - offset )
return false;
return true;
}
#if AMXX_VERSION_NUM < 183
stock entity_intersects(entity, other)
{
static Float:minsa[3], Float:maxsa[3]
static Float:minsb[3], Float:maxsb[3]
entity_get_vector(entity, EV_VEC_absmin, minsa)
entity_get_vector(entity,EV_VEC_absmax, maxsa)
entity_get_vector(other,EV_VEC_absmin, minsb)
entity_get_vector(other,EV_VEC_absmax, maxsb)
if(minsb[0] > maxsa[0] ||
minsb[1] > maxsa[1] ||
minsb[2] > maxsa[2] ||
maxsb[0] < minsa[0] ||
maxsb[1] < minsa[1] ||
maxsb[2] < minsa[2])
return 0
return 1
}
#endif
public is_angle_visible(Float:origin[3], Float:angles[3], Float:point[3], Float:x, Float:y)
{
static i; i = -1 // Если углы не игрока, т.е. от 0 до 360.
while(++i < sizeof(angles))
{
if(angles[i] > 180.0) angles[i] -= 360.0
}
static Float:vec[3]
vec[0] = point[0] - origin[0]
vec[1] = point[1] - origin[1]
vec[2] = point[2] - origin[2]
vector_to_angle(vec, vec)
vec[0] = floatabs(vec[0] - angles[0])
vec[1] = floatabs(vec[1] - angles[1])
if(vec[0] > 180.0) vec[0] = floatabs(360.0 - vec[0])
if(vec[1] > 180.0) vec[1] = floatabs(360.0 - vec[1])
if(vec[0] > y || vec[1] > x) return 0
return 1
}
#include <amxmodx>
#include <fakemeta>
new g_maxplayers
public plugin_init()
{
register_clcmd("say y", "functions")
g_maxplayers = get_maxplayers() + 1
}
public functions(id)
{
new text[256], len = formatex(text, charsmax(text), "You see:^n")
static Float:origin[3]; pev(id, pev_origin, origin)
static Float:view_ofs[3]; pev(id, pev_view_ofs, view_ofs)
origin[0] += view_ofs[0]
origin[1] += view_ofs[1]
origin[2] += view_ofs[2]
static Float:angles[3]; pev(id, pev_v_angle, angles)
static Float:porigin[3], i; i = -1
while(++i < g_maxplayers)
{
if(i == id) continue
if(!is_user_alive(i)) continue
pev(i, pev_origin, porigin)
engfunc(EngFunc_TraceLine, origin, porigin, DONT_IGNORE_MONSTERS, id, 0)
if(get_tr2(0, TR_pHit) != i) continue
if(!is_angle_visible(origin, angles, porigin, 46.0, 50.0)) continue
text[len++] = '^n'
len += get_user_name(i, text[len], charsmax(text) - len)
}
set_hudmessage(0, 255, 0, -1.0, 0.2, 0, 0.0, 10.0)
if(len > 10) show_hudmessage(id, text)
else show_hudmessage(id, "")
}
public is_angle_visible(Float:origin[3], Float:angles[3], Float:point[3], Float:x, Float:y)
{
static i; i = -1 // Если углы не игрока, т.е. от 0 до 360.
while(++i < sizeof(angles))
{
if(angles[i] > 180.0) angles[i] -= 360.0
}
static Float:vec[3]
vec[0] = point[0] - origin[0]
vec[1] = point[1] - origin[1]
vec[2] = point[2] - origin[2]
vector_to_angle(vec, vec)
vec[0] = floatabs(vec[0] - angles[0])
vec[1] = floatabs(vec[1] - angles[1])
if(vec[0] > 180.0) vec[0] = floatabs(360.0 - vec[0])
if(vec[1] > 180.0) vec[1] = floatabs(360.0 - vec[1])
if(vec[0] > y || vec[1] > x) return 0
return 1
}
stock ExecuteImpulse(id, iImpulse)
{
set_pev(id, pev_impulse, iImpulse)
ExecuteHam(Ham_Player_ImpulseCommands, id)
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11