From 4798fd39c66363541cd1b6ca9e489bdce70a7aeb Mon Sep 17 00:00:00 2001 From: IL0co Date: Wed, 26 Feb 2020 21:05:58 +0200 Subject: [PATCH] Update 1.0 --- addons/sourcemod/plugins/shower_damage.smx | Bin 0 -> 9750 bytes addons/sourcemod/scripting/shower_damage.sp | 231 ++++++++++++++++++ .../translations/shower_base.phrases.txt | 35 +++ cfg/sourcemod/shower_damage.cfg | 63 +++++ 4 files changed, 329 insertions(+) create mode 100644 addons/sourcemod/plugins/shower_damage.smx create mode 100644 addons/sourcemod/scripting/shower_damage.sp create mode 100644 addons/sourcemod/translations/shower_base.phrases.txt create mode 100644 cfg/sourcemod/shower_damage.cfg diff --git a/addons/sourcemod/plugins/shower_damage.smx b/addons/sourcemod/plugins/shower_damage.smx new file mode 100644 index 0000000000000000000000000000000000000000..2fc9ce935bf4540bfcb815c7ed2e41729952373f GIT binary patch literal 9750 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 + +public Plugin myinfo = +{ + name = "Shower of Damage", + version = "1.0", + description = "Shower of your damage", + author = "ღ λŌK0ЌЭŦ ღ ™", + url = "https://github.com/IL0co" +} + +static const char SPACE[][][] = {{"", "", "", "", "", "", ""}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}, + {"", " ", " ", " ", " ", " ", " "}}; + +char oldValue[MAXPLAYERS+1][5][16]; +float iTime[MAXPLAYERS+1]; + +bool g_bHUD[MAXPLAYERS+1]; + +Handle g_hCookie, iHud, iTimer[MAXPLAYERS+1]; + +ConVar cvar_cCount, + cvar_cType, + cvar_cTimeClean, + cvar_cTypePoss, + cvar_cHudColor, + cvar_cHudPoss, + cvar_cTimeHide, + cvar_cEnable; + +int cCount, cType, cTypePoss, cHudColor[4]; +float cTimeClean, cHudPoss[2], cTimeHide; +bool cEnable; + +public void OnPluginStart() +{ + iHud = CreateHudSynchronizer(); + g_hCookie = RegClientCookie("shower_damage", "shower_damage", CookieAccess_Private); + SetCookieMenuItem(CreditsCookieHandler, 0, "shower_damage"); + for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && IsClientAuthorized(i)) + OnClientCookiesCached(i); + + (cvar_cEnable = CreateConVar("sm_shower_damage_enable", "1", "RU: Включен ли плагин?\nEN: Enabled plugin?", _, true, 0.0, true, 1.0)).AddChangeHook(CVarChanged); + cEnable = cvar_cEnable.BoolValue; + + (cvar_cCount = CreateConVar("sm_shower_damage_count", "5", "RU: Количество столбиков\nEN: Number of posts", _, true, 1.0, true, 5.0)).AddChangeHook(CVarChanged); + cCount = cvar_cCount.IntValue; + + (cvar_cType = CreateConVar("sm_shower_damage_type", "2", "RU: На сколько смещать каждую новую строчку? (в пробелах)\nEN: How much to shift each new line? (in spaces)", _, true, 0.0, true, 7.0)).AddChangeHook(CVarChanged); + cType = cvar_cType.IntValue; + + (cvar_cTypePoss = CreateConVar("sm_shower_damage_type_poss", "2", "RU: Куда уходит лесенка начиная от прицела?, 0 - в левый низ, 1 - в правый вверх, 2 - в правый низ, 3 - в левый вверх\nEN: Where does the ladder go from the sight ?, 0 - to the left bottom, 1 - to the right up, 2 - to the right bottom, 3 - to the left up", _, true, 0.0, true, 3.0)).AddChangeHook(CVarChanged); + cTypePoss = cvar_cTypePoss.IntValue; + + (cvar_cTimeClean = CreateConVar("sm_shower_damage_clean_time", "2.0", "RU: Время очищения истории\nEN: History Cleansing Time", _, true, 0.1)).AddChangeHook(CVarChanged); + cTimeClean = cvar_cTimeClean.FloatValue; + + (cvar_cHudColor = CreateConVar("sm_shower_damage_rgba", "255 0 0 255", "RU: RGBA цвет худа\nEN: RGBA color hud")).AddChangeHook(CVarChanged); + SetHUDColor(cvar_cHudColor); + + (cvar_cHudPoss = CreateConVar("sm_shower_damage_poss", "0.54 0.5", "RU: XY позиция худа\nEN: XY hud position")).AddChangeHook(CVarChanged); + SetHUDPosition(cvar_cHudPoss); + + (cvar_cTimeHide = CreateConVar("sm_shower_damage_hide_time", "2.0", "RU: Время скрытия худа\nEN: Hud hiding time", _, true, 0.1)).AddChangeHook(CVarChanged); + cTimeHide = cvar_cTimeHide.FloatValue; + + AutoExecConfig(true, "shower_damage"); + + HookEvent("player_hurt", Event_PlayerHurt); + + LoadTranslations("shower_base.phrases"); +} + +public void CVarChanged(ConVar cvar, const char[] oldVal, const char[] newVal) +{ + if(cvar == cvar_cCount) cCount = cvar.IntValue; + else if(cvar == cvar_cType) cType = cvar.IntValue; + else if(cvar == cvar_cTypePoss) cTypePoss = cvar.IntValue; + else if(cvar == cvar_cTimeClean) cTimeClean = cvar.FloatValue; + else if(cvar == cvar_cTimeHide) cTimeHide = cvar.FloatValue; + else if(cvar == cvar_cEnable) cEnable = cvar.BoolValue; + else if(cvar == cvar_cHudColor) SetHUDColor(cvar); + else if(cvar == cvar_cHudPoss) SetHUDPosition(cvar); +} + +public Action Event_PlayerHurt(Event hEvent, const char[] name, bool dontBroadcast) +{ + if(!cEnable) return Plugin_Continue; + + int client = GetClientOfUserId(GetEventInt(hEvent, "attacker")), + victim = GetClientOfUserId(GetEventInt(hEvent, "userid")); + + if(!client || !IsClientInGame(client) && !g_bHUD[client]) return Plugin_Continue; + + char textBuff[256]; + int damage = GetEventInt(hEvent, "dmg_health"); + + if(client != victim) + { + iTime[client] = cTimeClean; + iTimer[client] = CreateTimer(0.1, TimerDamege_Clean, GetClientUserId(client), TIMER_REPEAT); + + if(damage == -1) Format(oldValue[client][0], sizeof(oldValue[][]), "%T", "Killed", client); + else Format(oldValue[client][0], sizeof(oldValue[][]), "-%i", damage); + + switch(cTypePoss) + { + case 0: Procc_Left_Down(client, textBuff, sizeof(textBuff)); + case 1: Procc_Right_Up(client, textBuff, sizeof(textBuff)); + case 2: Procc_Right_Down(client, textBuff, sizeof(textBuff)); + case 3: Procc_Left_Up(client, textBuff, sizeof(textBuff)); + } + + for(int poss = cCount-1; poss > 0; poss--) + oldValue[client][poss] = oldValue[client][poss-1]; + + SetHudTextParams(cHudPoss[0], cHudPoss[1], cTimeHide, cHudColor[0], cHudColor[1], cHudColor[2], cHudColor[3], 0, 0.0, 0.1, 0.1); + ShowSyncHudText(client, iHud, textBuff); + + } + return Plugin_Continue; +} + +public Action TimerDamege_Clean(Handle timer, any client) +{ + client = GetClientOfUserId(client); + + if(!client || !IsClientInGame(client) || iTimer[client] != timer) + return Plugin_Stop; + + if((iTime[client] -= 0.1) <= 0.0) + { + for(int poss = 0; poss < cCount; poss++) + oldValue[client][poss][0] = '\0'; + + return Plugin_Stop; + } + + return Plugin_Continue; +} + +public void OnClientCookiesCached(int client) +{ + char szValue[4]; + GetClientCookie(client, g_hCookie, szValue, sizeof(szValue)); + if(!szValue[0]) g_bHUD[client] = true; + else g_bHUD[client] = view_as(StringToInt(szValue)); +} + +public void CreditsCookieHandler(int client, CookieMenuAction action, any info, char[] buffer, int maxlen) +{ + if(!cEnable) return; + switch (action) + { + case CookieMenuAction_DisplayOption: + { + SetGlobalTransTarget(client); + FormatEx(buffer, maxlen, "%t%t", g_bHUD[client] ? "Plus" : "Minus", "Damage"); + } + case CookieMenuAction_SelectOption: + { + if(g_bHUD[client]) SetClientCookie(client, g_hCookie, "0"); + else SetClientCookie(client, g_hCookie, "1"); + + g_bHUD[client] = !g_bHUD[client]; + + ShowCookieMenu(client); + } + } +} + +stock void Procc_Right_Up(int client, char[] textBuff, int size = 256) +{ + for(int poss = cCount; poss > 0; poss--) + { + if(oldValue[client][poss-1][0]) + Format(textBuff, size, "%s\n%s%s", textBuff, SPACE[cType][poss], oldValue[client][poss-1]); + else + Format(textBuff, size, "%s\n%s", textBuff, SPACE[cType][poss]); + } +} + +stock void Procc_Left_Down(int client, char[] textBuff, int size = 256) +{ + for(int poss = 0, poss2 = cCount; poss < cCount; poss++, poss2--) if(oldValue[client][poss][0]) + { + Format(textBuff, size, "%s\n%s%s", textBuff, SPACE[cType][poss2], oldValue[client][poss]); + } +} +stock void Procc_Right_Down(int client, char[] textBuff, int size = 256) +{ + for(int poss = 0, poss2 = cCount; poss < cCount; poss++, poss2--) if(oldValue[client][poss][0]) + { + Format(textBuff, size, "%s\n%s%s", textBuff, SPACE[cType][poss], oldValue[client][poss]); + } +} + +stock void Procc_Left_Up(int client, char[] textBuff, int size = 256) +{ + for(int poss = 0, poss2 = cCount; poss < cCount; poss++, poss2--) + { + if(oldValue[client][poss2-1][0]) + Format(textBuff, size, "%s\n%s%s", textBuff, SPACE[cType][poss], oldValue[client][poss2-1]); + else + Format(textBuff, size, "%s\n%s", textBuff, SPACE[cType][poss]); + } +} + +stock void SetHUDColor(ConVar cvar) +{ + char buffer[16], clr[4][4]; + cvar.GetString(buffer, sizeof(buffer)); + ExplodeString(buffer, " ", clr, 4, 4); + for(int i; i <= 3; i++) cHudColor[i] = StringToInt(clr[i]); +} + +stock void SetHUDPosition(ConVar cvar) +{ + char buffer[16], pos[2][8]; + cvar.GetString(buffer, sizeof(buffer)); + ExplodeString(buffer, " ", pos, 2, 8); + cHudPoss[0] = StringToFloat(pos[0]); + cHudPoss[1] = StringToFloat(pos[1]); +} diff --git a/addons/sourcemod/translations/shower_base.phrases.txt b/addons/sourcemod/translations/shower_base.phrases.txt new file mode 100644 index 0000000..68aba1a --- /dev/null +++ b/addons/sourcemod/translations/shower_base.phrases.txt @@ -0,0 +1,35 @@ +"Phrases" +{ + "Plus" + { + "en" "[ + ] " + } + "Minus" + { + "en" "[ - ] " + } + "Health" + { + "en" "Ladder of health" + "ru" "Лестница здоровья" + "ua" "Сходи здоров’я" + } + "Armor" + { + "en" "Ladder of armor" + "ru" "Лестница брони" + "ua" "Сходи броні" + } + "Damage" + { + "en" "Ladder of damage" + "ru" "Лестница ущерба" + "ua" "Драбина пошкодження" + } + "Killed" + { + "en" "KILLED" + "ru" "УБИЛ" + "ua" "УБИЛ" + } +} diff --git a/cfg/sourcemod/shower_damage.cfg b/cfg/sourcemod/shower_damage.cfg new file mode 100644 index 0000000..7df5c42 --- /dev/null +++ b/cfg/sourcemod/shower_damage.cfg @@ -0,0 +1,63 @@ +// This file was auto-generated by SourceMod (v1.10.0.6422) +// ConVars for plugin "shower_damage.smx" + + +// RU: Время очищения истории +// EN: History Cleansing Time +// - +// Default: "2.0" +// Minimum: "0.100000" +sm_shower_damage_clean_time "2.0" + +// RU: Количество столбиков +// EN: Number of posts +// - +// Default: "5" +// Minimum: "1.000000" +// Maximum: "5.000000" +sm_shower_damage_count "5" + +// RU: Включен ли плагин? +// EN: Enabled plugin? +// - +// Default: "1" +// Minimum: "0.000000" +// Maximum: "1.000000" +sm_shower_damage_enable "1" + +// RU: Время скрытия худа +// EN: Hud hiding time +// - +// Default: "2.0" +// Minimum: "0.100000" +sm_shower_damage_hide_time "2.0" + +// RU: XY позиция худа +// EN: XY hud position +// - +// Default: "0.54 0.5" +sm_shower_damage_poss "0.54 0.5" + +// RU: RGBA цвет худа +// EN: RGBA color hud +// - +// Default: "255 0 0 255" +sm_shower_damage_rgba "255 0 0 255" + +// RU: На сколько смещать каждую новую строчку? (в пробелах) +// EN: How much to shift each new line? (in spaces) +// - +// Default: "2" +// Minimum: "0.000000" +// Maximum: "7.000000" +sm_shower_damage_type "2" + +// RU: Куда уходит лесенка начиная от прицела?, 0 - в левый низ, 1 - в правый вверх, 2 - в правый низ, 3 - в левый вверх +// EN: Where does the ladder go from the sight ?, 0 - to the lef +// - +// Default: "2" +// Minimum: "0.000000" +// Maximum: "3.000000" +sm_shower_damage_type_poss "2" + +