Плавный геноцид аваперов⛧13 написал(а):Да за что вы блин аваперов ненавидите так
Ой,не утрируйNimbo написал(а):Плавный геноцид аваперов
именно он и имелся в видуPukano_Bomb1to написал(а):SIMPLE ANTI SPAWN CAMP DD2 ONLY
#include <sdktools>
public Plugin myinfo =
{
name = "[CS:S] Anti spawn camp de_dust2",
version = "1.3.0",
author = "asdf (rewritten by Grey83)"
}
static const float
BOUNDS[][] =
{
{ -963.41, -164.05, 163.63},
{-1148.35, -162.63, 146.97},
{-1147.56, -193.74, 143.27},
{-1216.44, -264.22, 132.49},
{-1341.71, -263.94, 132.21},
{-1411.34, -197.33, 131.08},
{-1413.93, -150.47, 134.52},
{-1613.16, -152.08, 130.44},
{-1604.83, -227.03, 131.61},
{-1688.10, -239.88, 130.67},
{-1692.43, -311.95, 130.96},
{-1771.14, -308.64, 130.19},
{-1772.71, -696.17, 135.53},
{-2173.03, -691.28, 135.02},
{-2171.16, -877.23, 132.36},
{-2171.28, -939.36, 144.78},
{-2004.43, -940.52, 148.16},
{-2004.80, -996.33, 157.86},
{-1831.45, -997.83, 167.92},
{-1795.17, -994.59, 160.47},
{-1795.80, -1014.70, 162.32},
{-1548.89, -1013.07, 159.47},
{-1460.68, -1014.08, 166.52},
{-1442.89, -1012.50, 164.13},
{-1443.03, -973.10, 160.78},
{-1343.73, -974.21, 147.96},
{-1148.18, -972.59, 158.91},
{-1148.79, -1012.90, 160.03},
{ -964.23, -1011.95, 153.91},
{ -962.96, -969.51, 155.03},
{ -963.09, -923.84, 141.83},
{ -892.13, -925.54, 141.58},
{ -892.79, -971.85, 153.28},
{ -802.90, -973.01, 160.58},
{ -754.42, -971.78, 156.07},
{ -681.80, -972.46, 157.57},
{ -651.34, -973.15, 157.25},
{ -602.84, -971.09, 163.69},
{ -604.26, -1013.52, 178.97},
{ -571.86, -1013.78, 177.02},
{ -131.11, -1012.67, 75.37},
{ -132.47, -956.22, 63.45},
{ -112.83, -939.22, 52.86},
{ -64.44, -890.73, 41.06},
{ -4.19, -894.09, 27.37},
{ 196.13, -892.92, 23.80},
{ 261.02, -892.69, 32.45},
{ 315.92, -892.84, 28.37},
{ 379.32, -894.20, 37.86},
{ 379.04, -860.64, 22.01},
{ 411.36, -860.96, 12.80},
{ 413.63, -830.80, 5.43},
{ 407.82, -767.23, 2.73},
{ 408.04, -677.03, 5.64},
{ 374.47, -677.50, 9.56},
{ 377.51, -387.26, 11.64},
{ 130.30, -386.36, 7.10},
{ 35.27, -483.17, 6.82},
{ -289.95, -483.92, 3.05},
{ -386.64, -386.45, 9.25},
{ -387.45, -196.72, 7.57},
{ -508.29, -194.33, 7.91}
},
ZONE[][] =
{
{-1787.459960, -1015.959960, 0.029998},
{ 433.700134, -392.529968, 337.609985},
{-2246.750000, -1015.960021, 100.029998},
{-1767.339965, -682.919982, 330.850006},
{-1799.959960, -1014.390014, 100.559997},
{ -931.919982, -131.419982, 325.029998},
{ -511.959991, -390.450012, 0.029998},
{ -371.230010, -193.369995, 203.220001}
};
bool
bType;
int
nTexture,
iColor,
iDmg,
iTime;
float
fSize,
fJoin[MAXPLAYERS+1];
public void OnPluginStart()
{
ConVar cvar;
cvar = CreateConVar("sm_asc_size", "2.0","Толщина линии", _, true, 1.0, true, 10.0);
fSize = cvar.FloatValue;
cvar.AddChangeHook(CVarChanged_Size);
cvar = CreateConVar("sm_asc_color", "fff","Цвет обводки спавна террористов, HEX (RGB или RRGGBB, значения канала 0 - F или 00 - FF). Неправильный код = белый цвет.", FCVAR_PRINTABLEONLY);
SetColor(cvar);
cvar.AddChangeHook(CVarChanged_Color);
cvar = CreateConVar("sm_asc_dmg", "5","Размер урона игроку при превышении времени на спавне, каждую секунду: -1 - убить, >=0 - шлепнуть", _, true, -1.0);
iDmg = cvar.IntValue;
cvar.AddChangeHook(CVarChanged_Dmg);
cvar = CreateConVar("sm_asc_type", "1","Тип рассчета времени: 0 - от начала раунда для всех, 1 - реально проведенное игроком время", _, true, _, true, 1.0);
bType = cvar.BoolValue;
cvar.AddChangeHook(CVarChanged_Type);
cvar = CreateConVar("sm_asc_time", "30","Максимальное время нахождения на спавне террориста, сек.", _, true, 10.0);
iTime = cvar.IntValue;
cvar.AddChangeHook(CVarChanged_Time);
AutoExecConfig(true, "anti_spawn_camp");
}
public void CVarChanged_Size(ConVar cvar, const char[] oldValue, const char[] newValue)
{
fSize = cvar.FloatValue;
}
public void CVarChanged_Color(ConVar cvar, const char[] oldValue, const char[] newValue)
{
SetColor(cvar);
}
public void CVarChanged_Dmg(ConVar cvar, const char[] oldValue, const char[] newValue)
{
iDmg = cvar.IntValue;
}
public void CVarChanged_Type(ConVar cvar, const char[] oldValue, const char[] newValue)
{
bType = cvar.BoolValue;
}
public void CVarChanged_Time(ConVar cvar, const char[] oldValue, const char[] newValue)
{
iTime = cvar.IntValue;
}
stock void SetColor(ConVar cvar)
{
char clr[8];
cvar.GetString(clr, sizeof(clr));
clr[7] = 0; // чтобы проверялось максимум 7 первых символов
int i;
while(clr[i])
{
if(!(clr[i] >= '0' && clr[i] <= '9') && !(clr[i] >= 'A' && clr[i] <= 'F') && !(clr[i] >= 'a' && clr[i] <= 'f'))
{ // не HEX-число
iColor = -1;
LogError("HEX color '%s' isn't valid!\nHUD color is 0x%x (%d %d %d)!\n", clr, iColor, (iColor & 0xFF0000) >> 16, (iColor & 0xFF00) >> 8, iColor & 0xFF);
return;
}
i++;
}
clr[6] = 0;
if(i == 3) // короткая форма => полная форма
{
clr[4] = clr[5] = clr[2];
clr[2] = clr[3] = clr[1];
clr[1] = clr[0];
i = 6;
}
if(i != 6) iColor = -1; // невалидный цвет
else StringToIntEx(clr, iColor , 16);
}
public void OnMapStart()
{
static bool hooked;
char bufi[12];
GetCurrentMap(bufi, 12);
if(!strcmp(bufi, "de_dust2", false))
{
nTexture = PrecacheModel("sprites/bubble.vmt", true);
CreateTimer(1.0, Timer_DrawingBounds, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
if(hooked) return;
HookEvent("player_spawn", Events);
HookEvent("round_freeze_end", Events, EventHookMode_PostNoCopy);
hooked = true;
}
else if(hooked)
{
UnhookEvent("player_spawn", Events);
UnhookEvent("round_freeze_end", Events, EventHookMode_PostNoCopy);
hooked = false;
}
}
public void Events(Event event, const char[] name, bool dontBroadcast)
{
static int client;
if(name[0] == 'r') fJoin[0] = GetGameTime();
else if((client = GetClientOfUserId(event.GetInt("userid")))) fJoin[client] = 0.0;
}
public Action Timer_DrawingBounds(Handle timer)
{
static int z, i, clients[MAXPLAYERS], num;
static float time, pos[3];
static bool inzone;
for(i = 1, num = 0, time = GetGameTime(); i <= MaxClients;i++) if(IsClientInGame(i) && !IsFakeClient(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i))
{
clients[num++] = i;
GetClientAbsOrigin(i, pos);
for(z = 0, inzone = false; z < sizeof ZONE-1; z++) if(IsClientInside(pos, ZONE[z], ZONE[z+1]))
{
inzone = true;
break;
}
if(inzone)
{
if(bType && fJoin[i] == 0.0) fJoin[i] = GetGameTime();
if(time - fJoin[bType ? i : 0] > iTime)
{
if(iDmg != -1)
{
SlapPlayer(i, iDmg, true);
PrintToChat(i,"Не сидим на респе!");
}
else
{
ForcePlayerSuicide(i);
PrintToChat(i,"Вы были убиты т.к слишком долго были на респе.");
}
}
}
else fJoin[i] = 0.0;
}
for(i = 0; i < sizeof BOUNDS-1; i++)
{
TE_Start("BeamPoints");
TE_WriteVector("m_vecStartPoint", BOUNDS[i]);
TE_WriteVector("m_vecEndPoint", BOUNDS[i+1]);
TE_WriteNum("m_nModelIndex", nTexture);
TE_WriteNum("m_nHaloIndex", 0);
TE_WriteNum("m_nStartFrame", 0);
TE_WriteNum("m_nFrameRate", 15);
TE_WriteFloat("m_fLife", 1.0);
TE_WriteFloat("m_fWidth", fSize);
TE_WriteFloat("m_fEndWidth", fSize);
TE_WriteFloat("m_fAmplitude", 0.0);
TE_WriteNum("r", ((iColor & 0xFF0000) >> 16));
TE_WriteNum("g", ((iColor & 0xFF00) >> 8));
TE_WriteNum("b", (iColor & 0xFF));
TE_WriteNum("a", 255);
TE_WriteNum("m_nSpeed", 30);
TE_WriteNum("m_nFadeLength", 10);
TE_Send(clients, num);
}
}
stock bool IsClientInside(const float pos[3], const float min[3], const float max[3])
{
return pos[0] >= min[0] && pos[0] <= max[0] && pos[1] >= min[1] && pos[1] <= max[1] && pos[2] >= min[2] && pos[2] <= max[2];
}
Если бы он и мелся в виду то о нём сказали сразу но почему то об этом никто не написал, далее я скинул то что нашел, гл. Администрация не глупая и сама может найти что где и как и сами разберутся.Grey83 написал(а):именно он и имелся в виду
Только csgolife - это помойка, которая тянет бесплатные плагины с других сайтов и продаёт их.
Оригинал спизжен c hlmod.ru, где он в свободном доступе.
Я его немого переделал (будет чуть красивей выглядеть, и чуть меньше сервер нагружать, ну ещё и границу будут видеть только террористы)C-like:#include <sdktools> public Plugin myinfo = { name = "[CS:S] Anti spawn camp de_dust2", version = "1.3.0", author = "asdf (rewritten by Grey83)" } static const float BOUNDS[][] = { { -963.41, -164.05, 163.63}, {-1148.35, -162.63, 146.97}, {-1147.56, -193.74, 143.27}, {-1216.44, -264.22, 132.49}, {-1341.71, -263.94, 132.21}, {-1411.34, -197.33, 131.08}, {-1413.93, -150.47, 134.52}, {-1613.16, -152.08, 130.44}, {-1604.83, -227.03, 131.61}, {-1688.10, -239.88, 130.67}, {-1692.43, -311.95, 130.96}, {-1771.14, -308.64, 130.19}, {-1772.71, -696.17, 135.53}, {-2173.03, -691.28, 135.02}, {-2171.16, -877.23, 132.36}, {-2171.28, -939.36, 144.78}, {-2004.43, -940.52, 148.16}, {-2004.80, -996.33, 157.86}, {-1831.45, -997.83, 167.92}, {-1795.17, -994.59, 160.47}, {-1795.80, -1014.70, 162.32}, {-1548.89, -1013.07, 159.47}, {-1460.68, -1014.08, 166.52}, {-1442.89, -1012.50, 164.13}, {-1443.03, -973.10, 160.78}, {-1343.73, -974.21, 147.96}, {-1148.18, -972.59, 158.91}, {-1148.79, -1012.90, 160.03}, { -964.23, -1011.95, 153.91}, { -962.96, -969.51, 155.03}, { -963.09, -923.84, 141.83}, { -892.13, -925.54, 141.58}, { -892.79, -971.85, 153.28}, { -802.90, -973.01, 160.58}, { -754.42, -971.78, 156.07}, { -681.80, -972.46, 157.57}, { -651.34, -973.15, 157.25}, { -602.84, -971.09, 163.69}, { -604.26, -1013.52, 178.97}, { -571.86, -1013.78, 177.02}, { -131.11, -1012.67, 75.37}, { -132.47, -956.22, 63.45}, { -112.83, -939.22, 52.86}, { -64.44, -890.73, 41.06}, { -4.19, -894.09, 27.37}, { 196.13, -892.92, 23.80}, { 261.02, -892.69, 32.45}, { 315.92, -892.84, 28.37}, { 379.32, -894.20, 37.86}, { 379.04, -860.64, 22.01}, { 411.36, -860.96, 12.80}, { 413.63, -830.80, 5.43}, { 407.82, -767.23, 2.73}, { 408.04, -677.03, 5.64}, { 374.47, -677.50, 9.56}, { 377.51, -387.26, 11.64}, { 130.30, -386.36, 7.10}, { 35.27, -483.17, 6.82}, { -289.95, -483.92, 3.05}, { -386.64, -386.45, 9.25}, { -387.45, -196.72, 7.57}, { -508.29, -194.33, 7.91} }, ZONE[][] = { {-1787.459960, -1015.959960, 0.029998}, { 433.700134, -392.529968, 337.609985}, {-2246.750000, -1015.960021, 100.029998}, {-1767.339965, -682.919982, 330.850006}, {-1799.959960, -1014.390014, 100.559997}, { -931.919982, -131.419982, 325.029998}, { -511.959991, -390.450012, 0.029998}, { -371.230010, -193.369995, 203.220001} }; bool bType; int nTexture, iColor, iDmg, iTime; float fSize, fJoin[MAXPLAYERS+1]; public void OnPluginStart() { ConVar cvar; cvar = CreateConVar("sm_asc_size", "2.0","Толщина линии", _, true, 1.0, true, 10.0); fSize = cvar.FloatValue; cvar.AddChangeHook(CVarChanged_Size); cvar = CreateConVar("sm_asc_color", "fff","Цвет обводки спавна террористов, HEX (RGB или RRGGBB, значения канала 0 - F или 00 - FF). Неправильный код = белый цвет.", FCVAR_PRINTABLEONLY); SetColor(cvar); cvar.AddChangeHook(CVarChanged_Color); cvar = CreateConVar("sm_asc_dmg", "5","Размер урона игроку при превышении времени на спавне, каждую секунду: -1 - убить, >=0 - шлепнуть", _, true, -1.0); iDmg = cvar.IntValue; cvar.AddChangeHook(CVarChanged_Dmg); cvar = CreateConVar("sm_asc_type", "1","Тип рассчета времени: 0 - от начала раунда для всех, 1 - реально проведенное игроком время", _, true, _, true, 1.0); bType = cvar.BoolValue; cvar.AddChangeHook(CVarChanged_Type); cvar = CreateConVar("sm_asc_time", "30","Максимальное время нахождения на спавне террориста, сек.", _, true, 10.0); iTime = cvar.IntValue; cvar.AddChangeHook(CVarChanged_Time); AutoExecConfig(true, "anti_spawn_camp"); } public void CVarChanged_Size(ConVar cvar, const char[] oldValue, const char[] newValue) { fSize = cvar.FloatValue; } public void CVarChanged_Color(ConVar cvar, const char[] oldValue, const char[] newValue) { SetColor(cvar); } public void CVarChanged_Dmg(ConVar cvar, const char[] oldValue, const char[] newValue) { iDmg = cvar.IntValue; } public void CVarChanged_Type(ConVar cvar, const char[] oldValue, const char[] newValue) { bType = cvar.BoolValue; } public void CVarChanged_Time(ConVar cvar, const char[] oldValue, const char[] newValue) { iTime = cvar.IntValue; } stock void SetColor(ConVar cvar) { char clr[8]; cvar.GetString(clr, sizeof(clr)); clr[7] = 0; // чтобы проверялось максимум 7 первых символов int i; while(clr[i]) { if(!(clr[i] >= '0' && clr[i] <= '9') && !(clr[i] >= 'A' && clr[i] <= 'F') && !(clr[i] >= 'a' && clr[i] <= 'f')) { // не HEX-число iColor = -1; LogError("HEX color '%s' isn't valid!\nHUD color is 0x%x (%d %d %d)!\n", clr, iColor, (iColor & 0xFF0000) >> 16, (iColor & 0xFF00) >> 8, iColor & 0xFF); return; } i++; } clr[6] = 0; if(i == 3) // короткая форма => полная форма { clr[4] = clr[5] = clr[2]; clr[2] = clr[3] = clr[1]; clr[1] = clr[0]; i = 6; } if(i != 6) iColor = -1; // невалидный цвет else StringToIntEx(clr, iColor , 16); } public void OnMapStart() { static bool hooked; char bufi[12]; GetCurrentMap(bufi, 12); if(!strcmp(bufi, "de_dust2", false)) { nTexture = PrecacheModel("sprites/bubble.vmt", true); CreateTimer(1.0, Timer_DrawingBounds, _, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); if(hooked) return; HookEvent("player_spawn", Events); HookEvent("round_freeze_end", Events, EventHookMode_PostNoCopy); hooked = true; } else if(hooked) { UnhookEvent("player_spawn", Events); UnhookEvent("round_freeze_end", Events, EventHookMode_PostNoCopy); hooked = false; } } public void Events(Event event, const char[] name, bool dontBroadcast) { static int client; if(name[0] == 'r') fJoin[0] = GetGameTime(); else if((client = GetClientOfUserId(event.GetInt("userid")))) fJoin[client] = 0.0; } public Action Timer_DrawingBounds(Handle timer) { static int z, i, clients[MAXPLAYERS], num; static float time, pos[3]; static bool inzone; for(i = 1, num = 0, time = GetGameTime(); i <= MaxClients;i++) if(IsClientInGame(i) && !IsFakeClient(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i)) { clients[num++] = i; GetClientAbsOrigin(i, pos); for(z = 0, inzone = false; z < sizeof ZONE-1; z++) if(IsClientInside(pos, ZONE[z], ZONE[z+1])) { inzone = true; break; } if(inzone) { if(bType && fJoin[i] == 0.0) fJoin[i] = GetGameTime(); if(time - fJoin[bType ? i : 0] > iTime) { if(iDmg != -1) { SlapPlayer(i, iDmg, true); PrintToChat(i,"Не сидим на респе!"); } else { ForcePlayerSuicide(i); PrintToChat(i,"Вы были убиты т.к слишком долго были на респе."); } } } else fJoin[i] = 0.0; } for(i = 0; i < sizeof BOUNDS-1; i++) { TE_Start("BeamPoints"); TE_WriteVector("m_vecStartPoint", BOUNDS[i]); TE_WriteVector("m_vecEndPoint", BOUNDS[i+1]); TE_WriteNum("m_nModelIndex", nTexture); TE_WriteNum("m_nHaloIndex", 0); TE_WriteNum("m_nStartFrame", 0); TE_WriteNum("m_nFrameRate", 15); TE_WriteFloat("m_fLife", 1.0); TE_WriteFloat("m_fWidth", fSize); TE_WriteFloat("m_fEndWidth", fSize); TE_WriteFloat("m_fAmplitude", 0.0); TE_WriteNum("r", ((iColor & 0xFF0000) >> 16)); TE_WriteNum("g", ((iColor & 0xFF00) >> 8)); TE_WriteNum("b", (iColor & 0xFF)); TE_WriteNum("a", 255); TE_WriteNum("m_nSpeed", 30); TE_WriteNum("m_nFadeLength", 10); TE_Send(clients, num); } } stock bool IsClientInside(const float pos[3], const float min[3], const float max[3]) { return pos[0] >= min[0] && pos[0] <= max[0] && pos[1] >= min[1] && pos[1] <= max[1] && pos[2] >= min[2] && pos[2] <= max[2]; }
Я уже предлагал ему этот плагин.Pukano_Bomb1to написал(а):Администрация не глупая и сама может найти что где и как и сами разберутся.
Ты предлагал, а я показал обществу, что такой плагин есть в природе (может кто то и не вкусе был) для решение данной проблемы. А далее гл.Администрация сама решит этот вопрос.Grey83 написал(а):Я уже предлагал ему этот плагин.