Код за потвърждение: Избери целия код
new g_FwAddToFullPack;
new bool:g_bTeamCheck;
new g_Alive;
new g_Team[33];
Float:operator*(Float:,_:)(Float:oper1, oper2)
{
return floatmul(oper1, float(oper2));
}
Float:operator+(Float:,_:)(Float:oper1, oper2)
{
return floatadd(oper1, float(oper2));
}
bool:operator==(Float:,Float:)(Float:oper1, Float:oper2)
{
return floatcmp(oper1, oper2) == 0;
}
public plugin_init()
{
register_plugin("Simple WH Blocker", "0.3", "Makzz");
register_event("CurWeapon", "ev_CurWeapon", "be", 360);
register_event("ResetHUD", "ev_PlayerSpawn", "be", "1=1");
register_event("DeathMsg", "ev_PlayerDeath", 584, 360);
register_concmd("swhb", "Cmd_Swhb", 2048, "- access to SWHB", -1);
return 0;
}
public ev_CurWeapon(id)
{
g_Team[id] = get_user_team(id, {0}, g_FwAddToFullPack);
return 0;
}
public ev_PlayerSpawn(id)
{
g_Alive = 1 << id + -1 | g_Alive;
return 0;
}
public ev_PlayerDeath()
{
new id = read_data(2);
g_Alive = ~1 << id + -1 & g_Alive;
return 0;
}
public Cmd_Swhb(id, level)
{
if (!level & get_user_flags(id, g_FwAddToFullPack))
{
return 1;
}
new sCmd[14];
read_argv(1, sCmd, 13);
if (equali(sCmd, "on", g_FwAddToFullPack))
{
if (!g_FwAddToFullPack)
{
g_FwAddToFullPack = register_forward(124, "fw_AddToFullPack", g_FwAddToFullPack);
console_print(id, "SWHB: Enabled");
}
else
{
console_print(id, "SWHB: Already enabled");
}
}
else
{
if (equali(sCmd, "off", g_FwAddToFullPack))
{
if (g_FwAddToFullPack)
{
unregister_forward(122, g_FwAddToFullPack, g_FwAddToFullPack);
g_FwAddToFullPack = 0;
console_print(id, "SWHB: Disabled");
}
else
{
console_print(id, "SWHB: Already disabled");
}
}
if (equali(sCmd, "ignoreteam", g_FwAddToFullPack))
{
if (g_bTeamCheck)
{
g_bTeamCheck = false;
}
else
{
g_bTeamCheck = true;
}
new var1;
if (g_bTeamCheck)
{
var1 = 1252;
}
else
{
var1 = 1268;
}
console_print(id, "SWHB: Ignore team is %s", var1);
}
}
return 1;
}
public fw_AddToFullPack(entity_state, e, ent, host, hostflags, player, set)
{
new var1;
if (host > 32 || ent > 32 || ent != host)
{
return 1;
}
new var2;
if (!1 << ent + -1 & g_Alive || !1 << host + -1 & g_Alive)
{
return 1;
}
if (g_bTeamCheck)
{
if (g_Team[host] == g_Team[ent])
{
return 1;
}
}
new var3;
if (is_user_visible(host, ent))
{
var3 = 1;
}
else
{
var3 = 4;
}
return var3;
}
bool:is_user_visible(host, who)
{
static Float:fOfsWho[3];
static Float:fPosWho[3];
static Float:fOfsHost[3];
static Float:fPosHost[3];
static Float:fFraction;
static tr;
pev(host, 118, fPosHost);
pev(host, 135, fOfsHost);
new var1 = fPosHost;
var1[0] = floatadd(var1[0], fOfsHost[0]);
new var2 = fPosHost[1];
var2 = floatadd(var2, fOfsHost[1]);
new var3 = fPosHost[2];
var3 = floatadd(var3, fOfsHost[2]);
pev(who, 118, fPosWho);
pev(who, 135, fOfsWho);
new var4 = fOfsWho;
var4[0] = floatadd(var4[0], fPosWho[0]);
new var5 = fOfsWho[1];
var5 = floatadd(var5, fPosWho[1]);
new var6 = fOfsWho[2];
var6 = floatadd(var6, fPosWho[2] + 12);
engfunc(29, fPosHost, fOfsWho, 257, host, tr);
get_tr2(tr, g_bTeamCheck, fFraction);
if (1.0 == fFraction)
{
return true;
}
static Float:fVecRightSrcHost[3];
static Float:fVecRightHost[3];
global_get(30, fVecRightHost);
new var7 = fVecRightHost;
var7[0] = var7[0] * 18;
fVecRightHost[1] *= 18;
fVecRightHost[2] *= 18;
fVecRightSrcHost[0] = floatadd(fPosWho[0], fVecRightHost[0]);
fVecRightSrcHost[1] = floatadd(fPosWho[1], fVecRightHost[1]);
fVecRightSrcHost[2] = floatadd(fPosWho[2], fVecRightHost[2]);
engfunc(29, fPosHost, fVecRightSrcHost, 257, host, tr);
get_tr2(tr, g_bTeamCheck, fFraction);
if (1.0 == fFraction)
{
return true;
}
static Float:fVecLeftSrcHost[3];
fVecLeftSrcHost[0] = floatsub(fPosWho[0], fVecRightHost[0]);
fVecLeftSrcHost[1] = floatsub(fPosWho[1], fVecRightHost[1]);
fVecLeftSrcHost[2] = floatsub(fPosWho[2], fVecRightHost[2]);
engfunc(29, fPosHost, fVecLeftSrcHost, 257, host, tr);
get_tr2(tr, g_bTeamCheck, fFraction);
if (1.0 == fFraction)
{
return true;
}
return false;
}