Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <clientprefs>
- #pragma newdecls required
- #pragma semicolon 1
- #define GRAVITY (1 << 1)
- #define SLOW (1 << 2)
- #define SPEED (1 << 3)
- #define BHOP (1 << 4)
- #define THIRDPERSON (1 << 5)
- #define NOCLIP (1 << 6)
- #define CycleToClients(%0) for (int %0 = 1; %0 <= MaxClients; ++%0) if (IsClientInGame(%0) && !IsFakeClient(%0))
- public Plugin myinfo =
- {
- name = "Round End Thrash Mix",
- author = "Tonki_Ton",
- description = "Мусорная солянка",
- version = "1.1.0",
- url = "https://hlmod.ru"
- };
- Handle g_hRemCookie;
- ConVar g_hTimeScale;
- int g_iGravMode,
- g_iSlowMode,
- g_iSpeedMode,
- g_iBhopMode,
- g_iThirdPMode,
- g_iNoclipMode,
- g_iFlags[MAXPLAYERS+1];
- bool g_bRoundEnd;
- float g_fSpeedValue,
- g_fGravValue,
- g_fSlowValue;
- public void OnPluginStart()
- {
- g_hRemCookie = RegClientCookie("REMCookies", "round end trash mix cookies", CookieAccess_Private);
- g_hTimeScale = FindConVar("host_timescale");
- HookEvent("round_start", RoundEvents);
- HookEvent("round_end", RoundEvents);
- RegAdminCmd("sm_reload_rem", RR, ADMFLAG_ROOT);
- RegConsoleCmd("sm_rem", RemMenu);
- CycleToClients(i)
- OnClientCookiesCached(i);
- LoadTranslations("round_end_mix.phrases");
- }
- public Action RR(int iClient, int iArgs)
- {
- PrintToConsole(iClient, "Конфиг перезагружен!");
- OnMapStart();
- return Plugin_Handled;
- }
- public void OnMapStart()
- {
- char sBuff[128];
- KeyValues KvRm = new KeyValues("REM_Settings");
- BuildPath(Path_SM, sBuff, sizeof(sBuff), "configs/round_end_mix.txt");
- if(!KvRm.ImportFromFile(sBuff)) LogMessage("Конфигурационный файл отсутсвует!");
- KvRm.Rewind();
- g_iGravMode = KvRm.GetNum("Gravity_Mode", 1);
- g_iSlowMode = KvRm.GetNum("Slow_Motion_Mode", 1);
- g_iSpeedMode = KvRm.GetNum("Speed_Mode", 1);
- g_iBhopMode = KvRm.GetNum("Bunny_hop_Mode", 1);
- g_iThirdPMode = KvRm.GetNum("Thirdperson_Mode", 1);
- g_iNoclipMode = KvRm.GetNum("Noclip_Mode", 1);
- g_fGravValue = KvRm.GetFloat("Gravity_Value", 0.5);
- g_fSlowValue = KvRm.GetFloat("Slow_Motion_Value", 0.4);
- g_fSpeedValue = KvRm.GetFloat("Speed_Value", 1.5);
- delete KvRm;
- }
- public void OnPluginEnd()
- {
- CycleToClients(i)
- OnClientDisconnect(i);
- }
- public void OnClientCookiesCached(int iClient)
- {
- char sBuff[16];
- GetClientCookie(iClient, g_hRemCookie, sBuff, sizeof(sBuff));
- if (!sBuff[0])
- {
- g_iFlags[iClient] ^= (g_iGravMode > 1) ? GRAVITY:0;
- g_iFlags[iClient] ^= (g_iSlowMode > 1) ? SLOW:0;
- g_iFlags[iClient] ^= (g_iSpeedMode > 1) ? SPEED:0;
- g_iFlags[iClient] ^= (g_iBhopMode > 1) ? BHOP:0;
- g_iFlags[iClient] ^= (g_iThirdPMode > 1) ? THIRDPERSON:0;
- g_iFlags[iClient] ^= (g_iNoclipMode > 1) ? NOCLIP:0;
- return;
- }
- g_iFlags[iClient] = StringToInt(sBuff);
- }
- public void OnClientDisconnect(int iClient)
- {
- char sFlags[16];
- IntToString(g_iFlags[iClient], sFlags, 16);
- SetClientCookie(iClient, g_hRemCookie, sFlags);
- }
- public Action RemMenu(int iClient, int iArgs)
- {
- Menu hMenu = new Menu(RemMenuHandler);
- char sBuff[128];
- hMenu.SetTitle("%T\n \n", "rem_menu", iClient);
- FormatEx(sBuff, sizeof(sBuff), "%T", "gravity", iClient, (g_iGravMode == 1 || g_iGravMode == 2) ? (g_iFlags[iClient] & GRAVITY) ? "+":"-":"X");
- hMenu.AddItem("", sBuff, (g_iGravMode == 1 || g_iGravMode == 2) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
- FormatEx(sBuff, sizeof(sBuff), "%T", "slowmotion", iClient, (g_iSlowMode == 1 || g_iSlowMode == 2) ? (g_iFlags[iClient] & SLOW) ? "+":"-":"X");
- hMenu.AddItem("", sBuff, (g_iSlowMode == 1 || g_iSlowMode == 2) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
- FormatEx(sBuff, sizeof(sBuff), "%T", "speed", iClient, (g_iSpeedMode == 1 || g_iSpeedMode == 2) ? (g_iFlags[iClient] & SPEED) ? "+":"-":"X");
- hMenu.AddItem("", sBuff, (g_iSpeedMode == 1 || g_iSpeedMode == 2) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
- FormatEx(sBuff, sizeof(sBuff), "%T", "bhop", iClient, (g_iBhopMode == 1 || g_iBhopMode == 2) ? (g_iFlags[iClient] & BHOP) ? "+":"-":"X");
- hMenu.AddItem("", sBuff, (g_iBhopMode == 1 || g_iBhopMode == 2) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
- FormatEx(sBuff, sizeof(sBuff), "%T", "thirdperson", iClient, (g_iThirdPMode == 1 || g_iThirdPMode == 2) ? (g_iFlags[iClient] & THIRDPERSON) ? "+":"-":"X");
- hMenu.AddItem("", sBuff, (g_iThirdPMode == 1 || g_iThirdPMode == 2) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
- FormatEx(sBuff, sizeof(sBuff), "%T", "noclip", iClient, (g_iNoclipMode == 1 || g_iNoclipMode == 2) ? (g_iFlags[iClient] & NOCLIP) ? "+":"-":"X");
- hMenu.AddItem("", sBuff, (g_iNoclipMode == 1 || g_iNoclipMode == 2) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
- hMenu.Display(iClient, 20);
- return Plugin_Handled;
- }
- public int RemMenuHandler(Menu hMenu, MenuAction action, int iClient, int iPick)
- {
- if (action == MenuAction_Select)
- {
- g_iFlags[iClient] ^= (1 << iPick+1);
- RemMenu(iClient, 0);
- }
- else if (action == MenuAction_End)
- delete hMenu;
- }
- public void RoundEvents(Event hEvent, const char[] sName, bool bDontBroadcast)
- {
- if (sName[6] == 'e')
- {
- CycleToClients(i) if (IsPlayerAlive(i))
- {
- if (g_iFlags[i] & GRAVITY) SetEntPropFloat(i, Prop_Data, "m_flGravity", g_fGravValue);
- if (g_iFlags[i] & SLOW)
- {
- SetEntPropFloat(i, Prop_Data,"m_flLaggedMovementValue", g_fSlowValue);
- SetConVarFloat(g_hTimeScale, g_fSlowValue, true);
- }
- if (g_iFlags[i] & SPEED) SetEntPropFloat(i, Prop_Data,"m_flLaggedMovementValue", g_fSpeedValue);
- if (g_iFlags[i] & THIRDPERSON) ClientCommand(i, "thirdperson");
- if (g_iFlags[i] & NOCLIP) SetEntityMoveType(i, MOVETYPE_NOCLIP);
- }
- g_bRoundEnd = true;
- }
- else
- {
- CycleToClients(i)
- {
- SetEntPropFloat(i, Prop_Data, "m_flGravity", 1.0);
- SetConVarFloat(g_hTimeScale, 1.0, true);
- ClientCommand(i, "firstperson");
- }
- g_bRoundEnd = false;
- }
- }
- public Action OnPlayerRunCmd(int iClient, int &iButtons, int &iImpulse, float fVel[3], float fAng[3], int &iWeapon)
- {
- if (g_bRoundEnd && (g_iFlags[iClient] & BHOP) && IsPlayerAlive(iClient) && (iButtons & IN_JUMP) && !(GetEntityFlags(iClient) & FL_ONGROUND) && !(GetEntityMoveType(iClient) & MOVETYPE_LADDER) && (GetEntProp(iClient, Prop_Data, "m_nWaterLevel") <= 1))
- iButtons &= ~IN_JUMP;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement