StreeTT, SMAC
Настрой этот модуль чтобы при обнаружении банил.модуль стоит smac_autotrigger.smx
Настрой этот модуль чтобы при обнаружении банил.
SMAC не от всех, защищет
Самый лучший способ защиты это - Контроль Админов!
Наполнить сервер Админами - не выход. Всем не запретишь.. Так можно без онлайна остаться) Может кто еще владеет информацией как запретить использование Бонни Хопа
Написано что только оповещает Админов,визуально я сам вижу кто его использует. Просто хотелось бы ограничить это для всех.Anti-bhop не пробовал поставить?Он после 2 прыжка не дает возможность распрыгаться и тормозит сильно игрока.
StreeTT, попробуй этот плагин поставить, немного поможет
http://hlmod.ru/forum/plaginy-dlya-sourcemod/758-bunnystopper-v-1-0-1-a.html
Все что тебе предложили - это хорошие плагины, но лично мое мнение, возможно тебе это поможет, лучший античит от бхоппа Macrodox.Добрый всем вечер,подскажите пожалуйста,есть ли реально работающая защита от Bunny hop'а (Распрыжки на сервере). Если кто обладает информацией,поделитесь,буду благодарен !
public Event_PlayerJump(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
afAvgJumps[client] = ( afAvgJumps[client] * 9.0 + float(aiJumps[client]) ) / 10.0;
decl Float:vec_vel[3];
GetEntPropVector(client, Prop_Data, "m_vecVelocity", vec_vel);
vec_vel[2] = 0.0;
new Float:speed = GetVectorLength(vec_vel);
afAvgSpeed[client] = (afAvgSpeed[client] * 9.0 + speed) / 10.0;
aaiLastJumps[client][aiLastPos[client]] = aiJumps[client];
aiLastPos[client]++;
if (aiLastPos[client] == 30)
{
aiLastPos[client] = 0;
}
if (afAvgJumps[client] > 15.0)
{
if ((aiPatternhits[client] > 0) && (aiJumps[client] == aiPattern[client]))
{
aiPatternhits[client]++;
if ((aiPatternhits[client] > 15) && (!bBanFlagged[client]))
{
BanDelayed(client, "pat1");
bBanFlagged[client] = true;
}
}
else if ((aiPatternhits[client] > 0) && (aiJumps[client] != aiPattern[client]))
{
aiPatternhits[client] -= 2;
}
else
{
aiPattern[client] = aiJumps[client];
aiPatternhits[client] = 2;
}
}
else if(aiJumps[client] > 1)
{
aiAutojumps[client] = 0;
}
else if((afAvgJumps[client] <1.1) && (!bBanFlagged[client]))
{
bSurfCheck[client] = true;
if (aiIgnoreCount[client])
{
aiIgnoreCount[client]--;
}
if (speed > 350 && aiIgnoreCount[client] == 0)
{
aiAutojumps[client]++;
if (aiAutojumps[client] >= 20)
{
BanDelayed(client, "hax1");
}
}
else if (aiAutojumps[client])
{
aiAutojumps[client]--;
}
}
aiJumps[client] = 0;
new Float:tempvec[3];
tempvec = avLastPos[client];
GetEntPropVector(client, Prop_Send, "m_vecOrigin", avLastPos[client]);
new Float:len = GetVectorDistance(avLastPos[client], tempvec, true);
if (len < 30.0)
{
aiIgnoreCount[client] = 2;
}
if (afAvgPerfJumps[client] >= 0.94 && !bBanFlagged[client])
{
BanDelayed(client, "hax2");
}
}
public OnGameFrame()
{
if (iTickCount > 1*MaxClients)
{
iTickCount = 1;
}
else
{
if (iTickCount % 1 == 0)
{
new index = iTickCount / 1;
if (bSurfCheck[index] && IsClientInGame(index) && IsPlayerAlive(index))
{
GetEntPropVector(index, Prop_Data, "m_vecVelocity", avVEL[index]);
if (avVEL[index][2] < -290)
{
aiIgnoreCount[index] = 2;
}
}
}
iTickCount++;
}
}
public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapon)
{
if(IsPlayerAlive(client))
{
static bool:bHoldingJump[MAXPLAYERS + 1];
static bLastOnGround[MAXPLAYERS + 1];
if(buttons & IN_JUMP)
{
if(!bHoldingJump[client])
{
bHoldingJump[client] = true;//started pressing +jump
aiJumps[client]++;
if (bLastOnGround[client] && (GetEntityFlags(client) & FL_ONGROUND))
{
afAvgPerfJumps[client] = ( afAvgPerfJumps[client] * 9.0 + 0 ) / 10.0;
}
else if (!bLastOnGround[client] && (GetEntityFlags(client) & FL_ONGROUND))
{
afAvgPerfJumps[client] = ( afAvgPerfJumps[client] * 9.0 + 1 ) / 10.0;
}
}
}
else if(bHoldingJump[client])
{
bHoldingJump[client] = false;//released (-jump)
}
bLastOnGround[client] = GetEntityFlags(client) & FL_ONGROUND;
if ((buttons & IN_LEFT) || (buttons & IN_RIGHT))
{
ForcePlayerSuicide(client);
}
}
return Plugin_Continue;
}
Все что тебе предложили - это хорошие плагины, но лично мое мнение, возможно тебе это поможет, лучший античит от бхоппа Macrodox.
Его минусы:
- Бан выдается не моментально, а лишь после смены карты.
Плюсы:
- Защищает сервер не только от AutoTrigger, а и от макросов на бхоп.
- Ведется отдельный лог, где будет указан интервал нажатия прыжка. Если знать что и как - можно понять какой вид бхопа игрок использовал.
Макросы используют большое количество игроков, у которых имеется мышь с скрипт редактором (пример: X7 Oscar Mouse Script Editor)
Решай.
Спасибо за предложение,но мне нужно что бы просто ограничивался распрыг, плагин Bunnystopper v.1.0.1 работает но слишком много от него ошибок в консоли :( Удалил его.. Проблема Актуальна..
конкретизировать надо.... что за ошибки-то?