RU
RU
UA
EN
PL
ГЛАВНАЯ
УСЛУГИ
ПЛАГИНЫ
КАРТЫ
REBUY
SCANMON
CASSA
SALE
ФОРУМ
МОНИТОР
HELP
КОНТАКТ
Главная
/
Plugins
/
Anticamp 1.0.3
Anticamp 1.0.3
Теги:
Скачать плагины csgo
Серверные
Sourcemod 1.9
Предупреждает и наказывает игрока за кемперство на сервере.
Компилятор: 1.10.0
+ZIP
820
Команды:
Кваров и команд нет
.sma / .sp
#pragma semicolon 1 #pragma newdecls required #include
public Plugin myinfo = { name = "Anticamp", author = "Drumanid", version = "1.0.3", url = "Discord: Drumanid#9108 | Telegram: t.me/drumanid" }; #define Slapsound "player/pl_pain5.wav" #define Ringsound "*buttons/blip1.wav" #define CON ConVar hCvar, const char[] sOldValue, const char[] sNewValue #define END Event hEvent, const char[] sName, bool bDbc int g_iTime[MAXPLAYERS +1], g_iWarningCount[MAXPLAYERS +1], g_iBeam, g_iHalo, g_iCvarTime, g_iCvarSlap, g_iCvarGap, g_iCvarTeam, g_iCvarWarningCount; float g_fPos[MAXPLAYERS +1][3], g_fCvarTimer, g_fCvarDistance; //g_fCvarPosHud[2]; bool g_bActive, g_bAdminFlag[MAXPLAYERS +1], g_bCvarRings; char g_sCvarAdminFlag[4], g_sCvarWeapons[256]; static const int g_iColors[2][4] = { {255, 0, 0, 255}, {0, 0, 255, 255} }; public void OnPluginStart() { HookEvent("player_spawn", PlayerSpawn); HookEvent("player_activate", PlayerActivate); HookEvent("round_freeze_end", OtherEvents); HookEvent("round_end", OtherEvents); HookEvent("bomb_planted", OtherEvents); ConVar hCvar; (hCvar = CreateConVar("anticamp_timer", "1.0", "Время проверки позиции игрока в секундах")).AddChangeHook(CvarHookTimer); g_fCvarTimer = hCvar.FloatValue; (hCvar = CreateConVar("anticamp_time", "10", "Через сколько секунд отправить первое уведомление игроку о кемперстве")).AddChangeHook(CvarHookTime); g_iCvarTime = hCvar.IntValue; (hCvar = CreateConVar("anticamp_distance", "200.0", "Дистанция между старой точкой и новой (радиус)")).AddChangeHook(CvarHookDistance); g_fCvarDistance = hCvar.FloatValue; (hCvar = CreateConVar("anticamp_slap", "5", "Сколько урона получит игрок за кемперство | -1 - не наносить урон")).AddChangeHook(CvarHookSlap); g_iCvarSlap = hCvar.IntValue; (hCvar = CreateConVar("anticamp_gap", "3", "Промежуток времени в секундах между уведомлениями (наказанием)")).AddChangeHook(CvarHookGap); g_iCvarGap = hCvar.IntValue; (hCvar = CreateConVar("anticamp_weapons", "knife|bayonet", "Какое оружие будет игнорироваться от проверки на кемперство, перечислять через '|' и без 'weapon_'")).AddChangeHook(CvarHookWeapons); hCvar.GetString(g_sCvarWeapons, sizeof(g_sCvarWeapons)); (hCvar = CreateConVar("anticamp_team", "0", "Какая команда будет игнорироваться от проверки на кемперство - (2 - т / 3 - кт) | Любое другое значение - проверятся будут все команды")).AddChangeHook(CvarHookTeam); g_iCvarTeam = hCvar.IntValue; //(hCvar = CreateConVar("anticamp_posxy_hud", "0.3|0.4", "Позиция худ сообщения | x - это вправо/влево | y - вверх/вниз")).AddChangeHook(CvarHookPosHud); ConvertPosxy(hCvar); (hCvar = CreateConVar("anticamp_rings", "1", "1 - включить кольца обнаружения / 0 - выключить")).AddChangeHook(CvarHookRings); g_bCvarRings = hCvar.BoolValue; (hCvar = CreateConVar("anticamp_warningcount", "3", "Через сколько уведомлений(предупреждений) наказывать игрока? | 0 - сразу")).AddChangeHook(CvarHookWarningCount); g_iCvarWarningCount = hCvar.IntValue; (hCvar = CreateConVar("anticamp_adminflag", "z", "Флаг администратора, который дает иммунитет от антикемперства")).AddChangeHook(CvarHookAdminFlag); hCvar.GetString(g_sCvarAdminFlag, sizeof(g_sCvarAdminFlag)); AutoExecConfig(true, "Anticamp"); LoadTranslations("Anticamp.phrases.txt"); } public void CvarHookTimer(CON) { g_fCvarTimer = hCvar.FloatValue; } public void CvarHookTime(CON) { g_iCvarTime = hCvar.IntValue; } public void CvarHookDistance(CON) { g_fCvarDistance = hCvar.FloatValue; } public void CvarHookSlap(CON) { g_iCvarSlap = hCvar.IntValue; } public void CvarHookGap(CON) { g_iCvarGap = hCvar.IntValue; } public void CvarHookWeapons(CON) { hCvar.GetString(g_sCvarWeapons, sizeof(g_sCvarWeapons)); } public void CvarHookTeam(CON) { g_iCvarTeam = hCvar.IntValue; } //public void CvarHookPosHud(CON) { ConvertPosxy(hCvar); } public void CvarHookRings(CON) { g_bCvarRings = hCvar.BoolValue; } public void CvarHookWarningCount(CON) { g_iCvarWarningCount = hCvar.IntValue; } public void CvarHookAdminFlag(CON) { hCvar.GetString(g_sCvarAdminFlag, sizeof(g_sCvarAdminFlag)); } public void OtherEvents(END) { g_bActive = sName[6] == 'f' ? true:false; } public void PlayerActivate(END) { RequestFrame(PlayerActivateFrame, hEvent.GetInt("userid")); } public void PlayerSpawn(END) { int iClient = GetClientOfUserId(hEvent.GetInt("userid")); g_fPos[iClient][0] = g_fPos[iClient][1] = g_fPos[iClient][2] = 0.0; } void PlayerActivateFrame(int iClient) { if((iClient = GetClientOfUserId(iClient)) && IsClientInGame(iClient)) { g_bAdminFlag[iClient] = false; int iFlagBits = GetUserFlagBits(iClient); if(iFlagBits & ReadFlagString("z") || iFlagBits & ReadFlagString(g_sCvarAdminFlag)) g_bAdminFlag[iClient] = true; } } public void OnConfigsExecuted() { if(g_bCvarRings) { g_iBeam = PrecacheModel("materials/sprites/laserbeam.vmt", true); g_iHalo = PrecacheModel("materials/sprites/halo.vmt", true); PrecacheSound(Ringsound, true); } CreateTimer(g_fCvarTimer, TimerCheck, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); } public Action TimerCheck(Handle hTimer) { if(!g_bActive) return; int iTime = GetTime(), iHealth, iTeam; float fPos[3]; char sWeapon[32]; Handle hMessage; //SetHudTextParams(g_fCvarPosHud[0], g_fCvarPosHud[1], 1.0, 255, 255, 255, 255, 0, 0.5, 0.0, 0.5); for(int i = 1; i <= MaxClients; ++i) { if(IsClientInGame(i) && IsPlayerAlive(i) && !g_bAdminFlag[i]) { iTeam = GetClientTeam(i); if(GetClientTeam(i) != g_iCvarTeam) { GetClientAbsOrigin(i, fPos); if(GetVectorDistance(g_fPos[i], fPos) > g_fCvarDistance) { g_iTime[i] = iTime + g_iCvarTime; g_fPos[i] = fPos; g_iWarningCount[i] = g_iCvarWarningCount; } else if((g_iTime[i] - iTime) < 1) { g_iTime[i] += g_iCvarGap; GetClientWeapon(i, sWeapon, sizeof(sWeapon)); if(!(StrContains(g_sCvarWeapons, sWeapon[FindCharInString(sWeapon, '_') +1], false) != -1) || g_sCvarWeapons[0] == 0) { if(--g_iWarningCount[i] < 1) { //ShowHudText(i, 4, "%t", "Punishment message"); PrintHintText(i, "%t", "Punishment message"); if(g_iCvarSlap != -1) { //SlapPlayer(i, g_iCvarSlap, true); if((iHealth = GetEntProp(i, Prop_Data, "m_iHealth") - g_iCvarSlap) > 0) { SetEntProp(i, Prop_Data, "m_iHealth", iHealth); ClientCommand(i, "play %s", Slapsound); } else { ForcePlayerSuicide(i); PrintToChat(i, "%t", "Kill message"); } } } else PrintHintText(i, "%t", "Warning message", g_iWarningCount[i], g_iCvarWarningCount); //ShowHudText(i, 4, "%t", "Warning message", g_iWarningCount[i], g_iCvarWarningCount); hMessage = StartMessageOne("Fade", i); PbSetInt(hMessage, "duration", 300); PbSetInt(hMessage, "hold_time", 1); PbSetInt(hMessage, "flags", 0x0001); PbSetColor(hMessage, "clr", {0, 0, 0, 255}); EndMessage(); if(g_bCvarRings) { TE_SetupBeamRingPoint(fPos, 10.0, 500.0, g_iBeam, g_iHalo, 0, 10, 1.0, 10.0, 0.0, g_iColors[iTeam -2], 0, 0); TE_SendToAll(); EmitAmbientSound(Ringsound, fPos); } } } } } } } /*void ConvertPosxy(ConVar hCvar) { char sBuffer[16], sCountBuffer[2][8]; hCvar.GetString(sBuffer, sizeof(sBuffer)); ExplodeString(sBuffer, "|", sCountBuffer, sizeof(sCountBuffer), sizeof(sCountBuffer[])); for(int i; i < 2; i++) g_fCvarPosHud[i] = StringToFloat(sCountBuffer[i]); }*/
Отправить
Загрузил
ADEPT
2020-05-30 17:00:10
0
39
Установить на сервер
Скачать
Нет оплаченых серверов
Купить сервер CS 1.6
Купить сервер CS:GO
Купить сервер CSS v34
Подключить свой VDS к панели
УКРАЇНСЬКИЙ - ПАТРІОТ [ 2013 - 2024 ] © 18+
195.211.60.213:27015
УКРАЇНА - Б А Н Д Е Р Ш Т А Т - [2000 FPS] 18+
195.211.60.213:27018
В І Л Ь Н А - У К Р А Ї Н А [ RYZEN 9 - 5.7 GHZ ]
195.211.60.213:27016
(Д) (І) (В) (О) (Ч) (А) - (В) (Л) (А) (Д) (А) | 18+
195.211.60.213:27017
Данная иконка означает, что плагин был проверен администрацией хостинга на тестовом сервере, и проблем с ним не было выявлено. Рекомендуем ставить исключительно проверенные плагины.
Плагин загружен на сервер, но проверка еще не была проведена.
CSHOST.COM.UA 2012-2024 Хостинг игровых серверов