From 59a1a03960826a15596c9d363a999ba2519617e8 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sun, 1 Sep 2024 10:56:23 +0500 Subject: [PATCH 01/34] Change the way version is checked --- beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua | 18 +++++++----------- beatrun/gamemodes/beatrun/gamemode/cl_init.lua | 10 +++------- beatrun/gamemodes/beatrun/gamemode/shared.lua | 3 ++- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua b/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua index af0c0db..61dfac9 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua @@ -138,17 +138,13 @@ local function BeatrunHUD() surface.DrawText(version_text) surface.SetFont("BeatrunHUD") - if file.Exists("beatrun/version.txt", "DATA") then - local latest_version = file.Read("beatrun/version.txt", "DATA") - - if latest_version ~= VERSIONGLOBAL then - local update_text = "Update available!" - local notlatest_w, _ = surface.GetTextSize(update_text) - surface.SetTextColor(255, 255, 255, 30) - surface.SetTextPos(scrw - notlatest_w, 10) - surface.DrawText(update_text) - surface.SetFont("BeatrunHUD") - end + if not VERSIONLATEST then + local update_text = "Update available!" + local notlatest_w, _ = surface.GetTextSize(update_text) + surface.SetTextColor(255, 255, 255, 30) + surface.SetTextPos(scrw - notlatest_w, 10) + surface.DrawText(update_text) + surface.SetFont("BeatrunHUD") end local pl = ply:GetNW2Int("PLoss") diff --git a/beatrun/gamemodes/beatrun/gamemode/cl_init.lua b/beatrun/gamemodes/beatrun/gamemode/cl_init.lua index c178950..8bb0030 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl_init.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl_init.lua @@ -6,14 +6,10 @@ end http.Fetch("https://raw.githubusercontent.com/JonnyBro/beatrun/main/version.txt", function(body, size, headers, code) if code == 200 then - if not file.Exists("beatrun/version.txt", "DATA") then - file.Write("beatrun/version.txt", body) - end - - if body ~= VERSIONGLOBAL then - file.Write("beatrun/version.txt", body) + if body == VERSIONGLOBAL then + VERSIONLATEST = true else - print("Latest version already") + VERSIONLATEST = false end else print("Error while checking version:\n" .. body) diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index 5dfbf66..21895ec 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,5 @@ -VERSIONGLOBAL = "1.0.8" +VERSIONGLOBAL = "1.0.9" +VERSIONLATEST = NULL DeriveGamemode("sandbox") From 810ddfe3da686926167be3c157c4dfe11ef0d50f Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" <48434875+JonnyBro@users.noreply.github.com> Date: Mon, 2 Sep 2024 13:03:13 +0500 Subject: [PATCH 02/34] update version lol MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit forgor 💀 --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index 337a6a8..66c4c22 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.8 \ No newline at end of file +1.0.9 From 6169712625b9a64a35580b2aa16392484a893d7c Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Mon, 2 Sep 2024 17:42:06 +0500 Subject: [PATCH 03/34] fix version checking --- beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua | 2 +- beatrun/gamemodes/beatrun/gamemode/cl_init.lua | 16 +--------------- beatrun/gamemodes/beatrun/gamemode/shared.lua | 16 +++++++++++++--- version.txt | 2 +- 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua b/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua index 61dfac9..881ca02 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua @@ -138,7 +138,7 @@ local function BeatrunHUD() surface.DrawText(version_text) surface.SetFont("BeatrunHUD") - if not VERSIONLATEST then + if VERSIONGLOBAL ~= VERSIONLATEST then local update_text = "Update available!" local notlatest_w, _ = surface.GetTextSize(update_text) surface.SetTextColor(255, 255, 255, 30) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl_init.lua b/beatrun/gamemodes/beatrun/gamemode/cl_init.lua index 8bb0030..7b719c4 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl_init.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl_init.lua @@ -2,18 +2,4 @@ include("shared.lua") for _, v in ipairs(file.Find("gamemodes/beatrun/gamemode/cl/*.lua", "GAME")) do include("cl/" .. v) -end - -http.Fetch("https://raw.githubusercontent.com/JonnyBro/beatrun/main/version.txt", function(body, size, headers, code) - if code == 200 then - if body == VERSIONGLOBAL then - VERSIONLATEST = true - else - VERSIONLATEST = false - end - else - print("Error while checking version:\n" .. body) - end -end, function(e) - print("Error while checking version:\n" .. e) -end) \ No newline at end of file +end \ No newline at end of file diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index 21895ec..ae62a20 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,5 +1,5 @@ -VERSIONGLOBAL = "1.0.9" -VERSIONLATEST = NULL +VERSIONGLOBAL = "1.0.10" +VERSIONLATEST = "" DeriveGamemode("sandbox") @@ -13,4 +13,14 @@ include("player_class/player_beatrun.lua") for _, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sh/*.lua", "GAME", "nameasc")) do AddCSLuaFile("sh/" .. v) include("sh/" .. v) -end \ No newline at end of file +end + +http.Fetch("https://raw.githubusercontent.com/JonnyBro/beatrun/main/version.txt", function(body, size, headers, code) + if code == 200 then + VERSIONLATEST = body:gsub("[\n\r]", "") + else + print("Error while checking version (not 200 code):\n" .. body) + end +end, function(e) + print("Error while checking version (error on fetch):\n" .. e) +end) \ No newline at end of file diff --git a/version.txt b/version.txt index 66c4c22..7ee7020 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.9 +1.0.10 From 6bbab427a9d6f73c2b02f132463b6eb04e794676 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Thu, 5 Sep 2024 18:32:04 +0500 Subject: [PATCH 04/34] fix jump off on "slippery" places --- .../beatrun/entities/entities/br_laser/shared.lua | 7 +++---- .../beatrun/entities/weapons/runnerhands/shared.lua | 13 ++++++------- .../gamemodes/beatrun/gamemode/sh/FreerunSysAll.lua | 11 +++++------ beatrun/gamemodes/beatrun/gamemode/sh/Melee.lua | 13 ++++++------- beatrun/gamemodes/beatrun/gamemode/sh/Sliding.lua | 12 +++++------- 5 files changed, 25 insertions(+), 31 deletions(-) diff --git a/beatrun/gamemodes/beatrun/entities/entities/br_laser/shared.lua b/beatrun/gamemodes/beatrun/entities/entities/br_laser/shared.lua index 806098c..aaf6f40 100644 --- a/beatrun/gamemodes/beatrun/entities/entities/br_laser/shared.lua +++ b/beatrun/gamemodes/beatrun/entities/entities/br_laser/shared.lua @@ -63,10 +63,9 @@ function ENT:BRCollisionFunc(ent) if util.QuickTrace(self:GetPos(), ang:Up() * self.LaserLength, self).Entity ~= ent then return false end local dmginfo = DamageInfo() - dmginfo:SetAttacker(self) - dmginfo:SetDamage(1000) - dmginfo:SetDamageType(DMG_DISSOLVE) - + dmginfo:SetAttacker(self) + dmginfo:SetDamage(1000) + dmginfo:SetDamageType(DMG_DISSOLVE) ent:TakeDamageInfo(dmginfo) ent:EmitSound("bigspark" .. math.random(1, 2) .. ".wav") diff --git a/beatrun/gamemodes/beatrun/entities/weapons/runnerhands/shared.lua b/beatrun/gamemodes/beatrun/entities/weapons/runnerhands/shared.lua index a34c025..a7d88f6 100644 --- a/beatrun/gamemodes/beatrun/entities/weapons/runnerhands/shared.lua +++ b/beatrun/gamemodes/beatrun/entities/weapons/runnerhands/shared.lua @@ -495,13 +495,12 @@ function SWEP:PrimaryAttack() if SERVER and IsValid(ent) then if not ply:IsPlayer() or (Course_Name == "" and not GetGlobalBool("GM_INFECTION")) then local d = DamageInfo() - d:SetDamage((punch ~= 3 and 10) or 20) - d:SetAttacker(ply) - d:SetInflictor(self) - d:SetDamageType(DMG_CLUB) - d:SetDamagePosition(tr.start) - d:SetDamageForce(ply:EyeAngles():Forward() * 7000) - + d:SetDamage((punch ~= 3 and 10) or 20) + d:SetAttacker(ply) + d:SetInflictor(self) + d:SetDamageType(DMG_CLUB) + d:SetDamagePosition(tr.start) + d:SetDamageForce(ply:EyeAngles():Forward() * 7000) ent:TakeDamageInfo(d) if ent:IsNPC() then diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/FreerunSysAll.lua b/beatrun/gamemodes/beatrun/gamemode/sh/FreerunSysAll.lua index 59463a5..e43c732 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/FreerunSysAll.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/FreerunSysAll.lua @@ -196,15 +196,14 @@ hook.Add("OnPlayerHitGround", "MELandSound", function(ply, water, floater, speed end if SERVER and speed >= 500 and ply:GetJumpTurn() then - local info = DamageInfo() local dmg = ply:Health() * 0.1 if ply:Health() - dmg > 0 then - info:SetDamage(dmg) - info:SetDamageType(DMG_FALL) - info:SetAttacker(game.GetWorld()) - info:SetInflictor(game.GetWorld()) - + local info = DamageInfo() + info:SetDamage(dmg) + info:SetDamageType(DMG_FALL) + info:SetAttacker(game.GetWorld()) + info:SetInflictor(game.GetWorld()) ply:TakeDamageInfo(info) end end diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/Melee.lua b/beatrun/gamemodes/beatrun/gamemode/sh/Melee.lua index e304939..e1d109a 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/Melee.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/Melee.lua @@ -191,13 +191,12 @@ local function MeleeThink(ply, mv, cmd) if SERVER and IsValid(ent) and (not ent:IsPlayer() or Course_Name == "" and not GetGlobalBool("GM_INFECTION") and GetConVar("sbox_playershurtplayers"):GetBool()) then local d = DamageInfo() - d:SetDamage(meleedata[ply:GetMelee()][6]) - d:SetAttacker(ply) - d:SetInflictor(ply) - d:SetDamageType(DMG_CLUB) - d:SetDamagePosition(tr.start) - d:SetDamageForce(ply:EyeAngles():Forward() * 7000) - + d:SetDamage(meleedata[ply:GetMelee()][6]) + d:SetAttacker(ply) + d:SetInflictor(ply) + d:SetDamageType(DMG_CLUB) + d:SetDamagePosition(tr.start) + d:SetDamageForce(ply:EyeAngles():Forward() * 7000) ent:TakeDamageInfo(d) if SERVER and ent:GetClass() == "func_breakable_surf" then diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/Sliding.lua b/beatrun/gamemodes/beatrun/gamemode/sh/Sliding.lua index 5800a0e..03e8bf2 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/Sliding.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/Sliding.lua @@ -321,12 +321,10 @@ hook.Add("SetupMove", "qslide", function(ply, mv, cmd) ply:SetCrouchJump(false) - if SERVER and mv:GetVelocity().z <= -1250 then + if SERVER and mv:GetVelocity().z <= -1250 and not ply:InOverdrive() then local dmg = DamageInfo() - - dmg:SetDamageType(DMG_FALL) - dmg:SetDamage(1000) - + dmg:SetDamageType(DMG_FALL) + dmg:SetDamage(1000) ply:TakeDamageInfo(dmg) end end @@ -520,8 +518,8 @@ hook.Add("SetupMove", "qslide", function(ply, mv, cmd) if not slippery and pos.z > ply:GetSlidingLastPos().z + 1 then ply:SetSlidingTime(ply:GetSlidingTime() - 0.025) elseif slippery or slidedelta < 1 and pos.z < ply:GetSlidingLastPos().z - 0.25 then - ply:SetSlidingTime(CT + slidetime) --[[ 450 * ply:GetOverdriveMult() ]] - ply:SetSlidingVel(math.min(mv:GetVelocity():Length() * 0.865, GetConVar("Beatrun_SpeedLimit"):GetInt() * 2) * ply:GetOverdriveMult()) + ply:SetSlidingTime(CT + slidetime) --[[ GetConVar("Beatrun_SpeedLimit"):GetInt() ]] + ply:SetSlidingVel(math.min(mv:GetVelocity():Length() * 0.865, 450 * ply:GetOverdriveMult())) end ply:SetSlidingLastPos(pos) From 708520d008f8ed914426f7a78b5666bb74992d57 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Thu, 5 Sep 2024 18:32:36 +0500 Subject: [PATCH 05/34] v1.0.11 --- beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index ae62a20..89dd844 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,4 @@ -VERSIONGLOBAL = "1.0.10" +VERSIONGLOBAL = "1.0.11" VERSIONLATEST = "" DeriveGamemode("sandbox") diff --git a/version.txt b/version.txt index 7ee7020..8684498 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.10 +1.0.11 \ No newline at end of file From b557af99817767c66419bfc81f11e9c37aa612c3 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sun, 8 Sep 2024 11:43:43 +0500 Subject: [PATCH 06/34] Add keystrokes on HUD --- .../localization/en/beatrun.properties | 7 +- .../localization/it/beatrun.properties | 7 +- .../localization/pl/beatrun.properties | 7 +- .../localization/pt-BR/beatrun.properties | 7 +- .../localization/ru/beatrun.properties | 7 +- .../localization/tr/beatrun.properties | 8 +- .../localization/uk/beatrun.properties | 7 +- .../beatrun/gamemode/cl/BodyAnim.lua | 9 -- .../beatrun/gamemode/cl/Keystrokes.lua | 134 ++++++++++++++++++ .../beatrun/gamemode/cl/PacketLossFix.lua | 7 +- .../beatrun/gamemode/cl/ToolMenuSettings.lua | 7 +- 11 files changed, 175 insertions(+), 32 deletions(-) create mode 100644 beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties index 1c09569..5aadf4c 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties @@ -114,8 +114,8 @@ beatrun.toolsmenu.hud.showspeedometerdesc=Shows the speedometer on HUD beatrun.toolsmenu.hud.showSpeedometer=Show Speedometer beatrun.toolsmenu.hud.showSpeedometerDesc=Shows the speedometer on HUD (hiding HUD does not affect visibility) -beatrun.toolsmenu.hud.wind=Wind Effect -beatrun.toolsmenu.hud.winddesc=Wind noises when running +beatrun.toolsmenu.hud.keystrokes=Show Keystrokes +beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press beatrun.toolsmenu.hud.hidden=Hide HUD beatrun.toolsmenu.hud.hiddendesc=0 - Shown\n1 - Gamemode only\n2 - Hidden @@ -156,6 +156,9 @@ beatrun.toolsmenu.gameplay.disablegrappledesc=Toggles grapple ability beatrun.toolsmenu.gameplay.rollspeedloss=Lose Speed on Roll beatrun.toolsmenu.gameplay.rollspeedlossdesc=Toggles loss of speed on safety roll +beatrun.toolsmenu.gameplay.wind=Wind Effect +beatrun.toolsmenu.gameplay.winddesc=Wind noises when running + # Tools Menu Misc Section beatrun.toolsmenu.misc.name=Misc beatrun.toolsmenu.misc.desc=Misc Settings diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/it/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/it/beatrun.properties index 5cd0d15..a43c364 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/it/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/it/beatrun.properties @@ -105,8 +105,8 @@ beatrun.toolsmenu.hud.nametagsdesc=Attiva/disattiva i nametag sopra i giocatori beatrun.toolsmenu.hud.hudxp=Mostra XP HUD beatrun.toolsmenu.hud.hudxpdesc=Mostra XP totali vicino al tuo nickname -beatrun.toolsmenu.hud.wind=Effetto del vento -beatrun.toolsmenu.hud.winddesc=Rumori del vento durante la corsa +beatrun.toolsmenu.hud.keystrokes=Show Keystrokes +beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press beatrun.toolsmenu.hud.hidden=Nascondi HUD beatrun.toolsmenu.hud.hiddendesc=0 - Mostra\n1 - Solo Modalità di gioco\n2 - Nascosta @@ -140,6 +140,9 @@ beatrun.toolsmenu.gameplay.puristmodedesc=La modalità purista è una modalità beatrun.toolsmenu.gameplay.disablegrapple=Disabilita il rampino beatrun.toolsmenu.gameplay.disablegrappledesc=Disabilita l'abilità del rampino +beatrun.toolsmenu.gameplay.wind=Effetto del vento +beatrun.toolsmenu.gameplay.winddesc=Rumori del vento durante la corsa + # Tools Menu Misc Section beatrun.toolsmenu.misc.name=Varie beatrun.toolsmenu.misc.desc=Impostazioni Varie diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/pl/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/pl/beatrun.properties index 7c20a34..180f1a4 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/pl/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/pl/beatrun.properties @@ -106,8 +106,8 @@ beatrun.toolsmenu.hud.nametagsdesc=Włącz/Wyłącz wyświetlanie identyfikator beatrun.toolsmenu.hud.hudxp=Wyświetl PD na interfejsie beatrun.toolsmenu.hud.hudxpdesc=Pokaż całkowitą liczbę PD w pobliżu swojego nicku -beatrun.toolsmenu.hud.wind=Efekt wiatru -beatrun.toolsmenu.hud.winddesc=Włącza dźwięki wiatru w trakcie biegu +beatrun.toolsmenu.hud.keystrokes=Show Keystrokes +beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press beatrun.toolsmenu.hud.hidden=Ukryj interfejs beatrun.toolsmenu.hud.hiddendesc=0 - Pokazany\n1 - Tylko poza rozgrywką swobodną\n2 - Ukryty @@ -148,6 +148,9 @@ beatrun.toolsmenu.gameplay.disablegrappledesc=Wyłącza zdolność używania tyr beatrun.toolsmenu.gameplay.rollspeedloss=Utrata prędkości przy przewrocie beatrun.toolsmenu.gameplay.rollspeedlossdesc=Włącz/Wyłącz utratę prędkości przy przewrocie na końcu upadku +beatrun.toolsmenu.gameplay.wind=Efekt wiatru +beatrun.toolsmenu.gameplay.winddesc=Włącza dźwięki wiatru w trakcie biegu + # Tools Menu Misc Section beatrun.toolsmenu.misc.name=Inne beatrun.toolsmenu.misc.desc=Inne ustawienia diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/pt-BR/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/pt-BR/beatrun.properties index 920cc8b..b4a6875 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/pt-BR/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/pt-BR/beatrun.properties @@ -106,8 +106,8 @@ beatrun.toolsmenu.hud.nametagsdesc=Mostrar crachás acima dos nomes de jogadores beatrun.toolsmenu.hud.hudxp=Mostrar XP beatrun.toolsmenu.hud.hudxpdesc=Mostrar XP total perto do seu nome -beatrun.toolsmenu.hud.wind=Efeito do Vento -beatrun.toolsmenu.hud.winddesc=Barulho de vento enquanto estiver correndo +beatrun.toolsmenu.hud.keystrokes=Show Keystrokes +beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press beatrun.toolsmenu.hud.hidden=Esconder a HUD beatrun.toolsmenu.hud.hiddendesc=0 - Mostrado\n1 - Gamemode apenas\n2 - Escondido @@ -142,6 +142,9 @@ beatrun.toolsmenu.gameplay.puristmodedesc=Modo Purista é uma preferencia local beatrun.toolsmenu.gameplay.disablegrapple=Desativar a Habilidade de Gancho beatrun.toolsmenu.gameplay.disablegrappledesc=Desativa a Habilidade de Gancho +beatrun.toolsmenu.gameplay.wind=Efeito do Vento +beatrun.toolsmenu.gameplay.winddesc=Barulho de vento enquanto estiver correndo + # Tools Menu Misc Section beatrun.toolsmenu.misc.name=Diversos beatrun.toolsmenu.misc.desc=Configurações Diversas diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties index 9f1492c..81c34c8 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties @@ -111,8 +111,8 @@ beatrun.toolsmenu.hud.hudxpdesc=Показывает весь XP в HUD beatrun.toolsmenu.hud.showspeedometer=Показать спидометр beatrun.toolsmenu.hud.showspeedometerdesc=Показывает спидометр в HUD -beatrun.toolsmenu.hud.wind=Эффект Ветра -beatrun.toolsmenu.hud.winddesc=Шум ветра во время бега +beatrun.toolsmenu.hud.keystrokes=Показывать клавиши +beatrun.toolsmenu.hud.keystrokesdesc=Показывает нажатие клавиш в HUD beatrun.toolsmenu.hud.hidden=Скрыть HUD beatrun.toolsmenu.hud.hiddendesc=0 - Показать\n1 - Только режим\n2 - Скрыть полностью @@ -153,6 +153,9 @@ beatrun.toolsmenu.gameplay.disablegrappledesc=Переключает испол beatrun.toolsmenu.gameplay.rollspeedloss=Потеря скорости при перекате beatrun.toolsmenu.gameplay.rollspeedlossdesc=Переключает потерю скорости при перекате +beatrun.toolsmenu.gameplay.wind=Эффект Ветра +beatrun.toolsmenu.gameplay.winddesc=Шум ветра во время бега + # Tools Menu Misc Section beatrun.toolsmenu.misc.name=Другое beatrun.toolsmenu.misc.desc=Другие настройки diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/tr/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/tr/beatrun.properties index 50b9a3e..a9c9fc3 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/tr/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/tr/beatrun.properties @@ -106,9 +106,8 @@ beatrun.toolsmenu.hud.nametagsdesc=Oyuncuların üzerindeki ad etiketlerini aça beatrun.toolsmenu.hud.hudxp=Arayüz XP'yi göster beatrun.toolsmenu.hud.hudxpdesc=Takma adın yanında toplam XP'yi göster -beatrun.toolsmenu.hud.wind=Rüzgar Etkisi -beatrun.toolsmenu.hud.winddesc=Koşarken rüzgar sesleri - +beatrun.toolsmenu.hud.keystrokes=Show Keystrokes +beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press beatrun.toolsmenu.hud.hidden=Arayüzü gizle beatrun.toolsmenu.hud.hiddendesc=0 - Gösterilen\n1 - Yalnızca oyun\nmodu 2 - Gizli @@ -143,6 +142,9 @@ beatrun.toolsmenu.gameplay.puristmodedesc=Purist modu, havadayken "strafe" atmay beatrun.toolsmenu.gameplay.disablegrapple=Kanca Özelliğini Devre Dışı Bırak beatrun.toolsmenu.gameplay.disablegrappledesc=Kanca özelliğini devre dışı bırakır +beatrun.toolsmenu.gameplay.wind=Rüzgar Etkisi +beatrun.toolsmenu.gameplay.winddesc=Koşarken rüzgar sesleri + # Tools Menu Misc Section beatrun.toolsmenu.misc.name=Diğer beatrun.toolsmenu.misc.desc=Çeşitli Ayarlar diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/uk/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/uk/beatrun.properties index 87eb30e..c8e3b7b 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/uk/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/uk/beatrun.properties @@ -110,8 +110,8 @@ beatrun.toolsmenu.hud.hudxpdesc=Показує весь XP в HUD beatrun.toolsmenu.hud.showSpeedometer=Показувати швидкість (спідометр) beatrun.toolsmenu.hud.showSpeedometerDesc=Показує спідометр на HUD (приховування HUD не впливає на видимість) -beatrun.toolsmenu.hud.wind=Ефект Вітру -beatrun.toolsmenu.hud.winddesc=Шум вітру під час бігу +beatrun.toolsmenu.hud.keystrokes=Show Keystrokes +beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press beatrun.toolsmenu.hud.hidden=Приховати HUD beatrun.toolsmenu.hud.hiddendesc=0 - Показати\n1 - Тільки режим\n2 - Приховати повністю @@ -149,6 +149,9 @@ beatrun.toolsmenu.gameplay.disablegrappledesc=Відключає викорис beatrun.toolsmenu.gameplay.rollLoseSpeed=Втрата швидкості під час перекату beatrun.toolsmenu.gameplay.rollLoseSpeedDesc=Чи буде гравець втрачати швидкість під час перекату чи ні (як у ME:Catalyst) +beatrun.toolsmenu.gameplay.wind=Ефект Вітру +beatrun.toolsmenu.gameplay.winddesc=Шум вітру під час бігу + # Tools Menu Misc Section beatrun.toolsmenu.misc.name=Інше beatrun.toolsmenu.misc.desc=Інші налаштування diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/BodyAnim.lua b/beatrun/gamemodes/beatrun/gamemode/cl/BodyAnim.lua index c4c1f16..c3eb69b 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/BodyAnim.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/BodyAnim.lua @@ -42,15 +42,8 @@ hook.Add("Think", "beatrun_detect_tool", function() end end) --- local BodyAnimPos = Vector(0, 0, 0) --- local BodyAnimAngLerp = Angle(0, 0, 0) --- local DidDraw = false local AnimString = "nil" --- local angclosenuff = false local savedeyeangb = Angle(0, 0, 0) --- local bodylockview = false --- local bodyanimdone = false --- local holstertime = 0 local animmodelstring = "" local showweapon = false @@ -93,7 +86,6 @@ function RemoveBodyAnim(noang) if shouldremove then return end local ply = LocalPlayer() - -- local ang = ply:EyeAngles() local newang = ply:EyeAngles() local noang = noang or false @@ -245,7 +237,6 @@ function CacheLerpBodyAnim() BodyAnimMDL:SetNoDraw(true) local pos = LocalPlayer():GetPos() - -- local posdelta = pos - matrixfrompos local this = BodyAnim this.m = this.m or Matrix() diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua b/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua new file mode 100644 index 0000000..18b3a6c --- /dev/null +++ b/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua @@ -0,0 +1,134 @@ +local showKeystrokes = CreateClientConVar("Beatrun_ShowKeystrokes", 1, true, true) + +local color_white = Color(255, 255, 255) +local color_white_t = Color(255, 255, 255, 100) +local color_black = Color(0, 0, 0) +local color_black_t = Color(0, 0, 0, 100) +local size = 35 + +local function ShowKeyStrokes() + if showKeystrokes:GetBool() then + -- Key W + if LocalPlayer():KeyDown(IN_FORWARD) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(size, 0, size, size) + draw.SimpleText("W", "BeatrunHUD", size + 10, size - 30, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(size, 0, size, size) + draw.SimpleText("W", "BeatrunHUD", size + 10, size - 30, color_white) + end + + -- Key E + if LocalPlayer():KeyDown(IN_USE) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(size * 2, 0, size, size) + draw.SimpleText("E", "BeatrunHUD", size + 48, size - 30, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(size * 2, 0, size, size) + draw.SimpleText("E", "BeatrunHUD", size + 48, size - 30, color_white) + end + + -- Key R + if LocalPlayer():KeyDown(IN_RELOAD) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(size * 3, 0, size, size) + draw.SimpleText("R", "BeatrunHUD", size * 3 + 12, size - 30, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(size * 3, 0, size, size) + draw.SimpleText("R", "BeatrunHUD", size * 3 + 12, size - 30, color_white) + end + + -- Key A + if LocalPlayer():KeyDown(IN_MOVELEFT) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(0, size, size, size) + draw.SimpleText("A", "BeatrunHUD", size - 23, size + 8, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(0, size, size, size) + draw.SimpleText("A", "BeatrunHUD", size - 23, size + 8, color_white) + end + + -- Key S + if LocalPlayer():KeyDown(IN_BACK) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(size, size, size, size) + draw.SimpleText("S", "BeatrunHUD", size + 12, size + 8, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(size, size, size, size) + draw.SimpleText("S", "BeatrunHUD", size + 12, size + 8, color_white) + end + + -- Key D + if LocalPlayer():KeyDown(IN_MOVERIGHT) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(size * 2, size, size, size) + draw.SimpleText("D", "BeatrunHUD", size + 48, size + 8, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(size * 2, size, size, size) + draw.SimpleText("D", "BeatrunHUD", size + 48, size + 8, color_white) + end + + -- Space + if LocalPlayer():KeyDown(IN_JUMP) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(0, size * 2, size * 3, size) + draw.SimpleText("SPACE", "BeatrunHUD", 28, size * 2 + 8, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(0, size * 2, size * 3, size) + draw.SimpleText("SPACE", "BeatrunHUD", 28, size * 2 + 8, color_white) + end + + -- Shift + if LocalPlayer():KeyDown(IN_SPEED) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(0, size * 3, size * 3, size) + draw.SimpleText("SHIFT", "BeatrunHUD", 28, size * 3 + 8, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(0, size * 3, size * 3, size) + draw.SimpleText("SHIFT", "BeatrunHUD", 28, size * 3 + 8, color_white) + end + + -- Ctrl + if LocalPlayer():KeyDown(IN_DUCK) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(0, size * 4, size * 3, size) + draw.SimpleText("CTRL", "BeatrunHUD", 32, size * 4 + 8, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(0, size * 4, size * 3, size) + draw.SimpleText("CTRL", "BeatrunHUD", 32, size * 4 + 8, color_white) + end + + -- Left Mouse + if LocalPlayer():KeyDown(IN_ATTACK) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(size * 3, size, size * 2, size) + draw.SimpleText("LMB", "BeatrunHUD", size + 87, size + 8, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(size * 3, size, size * 2, size) + draw.SimpleText("LMB", "BeatrunHUD", size + 87, size + 8, color_white) + end + + -- Right Mouse + if LocalPlayer():KeyDown(IN_ATTACK2) then + surface.SetDrawColor(color_white_t) + surface.DrawRect(size * 3, size * 2, size * 2, size) + draw.SimpleText("RMB", "BeatrunHUD", size + 86, size * 2 + 8, color_black) + else + surface.SetDrawColor(color_black_t) + surface.DrawRect(size * 3, size * 2, size * 2, size) + draw.SimpleText("RMB", "BeatrunHUD", size + 86, size * 2 + 8, color_white) + end + end +end + +hook.Add("HUDPaint", "KeyStrokes", ShowKeyStrokes) \ No newline at end of file diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/PacketLossFix.lua b/beatrun/gamemodes/beatrun/gamemode/cl/PacketLossFix.lua index d221856..70a916a 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/PacketLossFix.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/PacketLossFix.lua @@ -1,4 +1,3 @@ --- local checktimer = 0 local errorc = Color(255, 25, 25) local whitelist = { @@ -8,11 +7,7 @@ local whitelist = { local whitelistanims = fbanims local function BodyAnimAntiStuck() - if not IsValid(BodyAnim) then - checktimer = 0 - - return - end + if not IsValid(BodyAnim) then return end local ply = LocalPlayer() diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/ToolMenuSettings.lua b/beatrun/gamemodes/beatrun/gamemode/cl/ToolMenuSettings.lua index bbef6ca..3a77c7a 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/ToolMenuSettings.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/ToolMenuSettings.lua @@ -167,8 +167,8 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function() panel:CheckBox("#beatrun.toolsmenu.hud.showspeedometer", "Beatrun_ShowSpeedometer") panel:ControlHelp("#beatrun.toolsmenu.hud.showspeedometerdesc") - panel:CheckBox("#beatrun.toolsmenu.hud.wind", "Beatrun_Wind") - panel:ControlHelp("#beatrun.toolsmenu.hud.winddesc") + panel:CheckBox("#beatrun.toolsmenu.hud.keystrokes", "Beatrun_ShowKeystrokes") + panel:ControlHelp("#beatrun.toolsmenu.hud.keystrokesdesc") panel:NumSlider("#beatrun.toolsmenu.hud.hidden", "Beatrun_HUDHidden", 0, 2, 0) panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.hud.hiddendesc")) @@ -250,6 +250,9 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function() panel:CheckBox("#beatrun.toolsmenu.moves.totsugekiaudio", "Beatrun_TotsugekiAudio") panel:ControlHelp(language.GetPhrase("beatrun.toolsmenu.moves.totsugekiaudiodesc")) + + panel:CheckBox("#beatrun.toolsmenu.gameplay.wind", "Beatrun_Wind") + panel:ControlHelp("#beatrun.toolsmenu.gameplay.winddesc") end) spawnmenu.AddToolMenuOption("Beatrun", "Server", "beatrun_misc", "#beatrun.toolsmenu.misc.name", "", "", function(panel) From e2e2d70b25937c33e5753ed3dd64795c0bdcb9be Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sun, 8 Sep 2024 11:44:17 +0500 Subject: [PATCH 07/34] v.1.0.12 --- beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index 89dd844..ae8e5fd 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,4 @@ -VERSIONGLOBAL = "1.0.11" +VERSIONGLOBAL = "1.0.12" VERSIONLATEST = "" DeriveGamemode("sandbox") diff --git a/version.txt b/version.txt index 8684498..492b167 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.11 \ No newline at end of file +1.0.12 \ No newline at end of file From 38ed35b2f0df16da9ae71c7294af06e6466562c4 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sun, 8 Sep 2024 11:50:25 +0500 Subject: [PATCH 08/34] Hide everything on HudHidden 2 and hide keystrokes on HudHidden 1 --- .../beatrun/content/resource/localization/en/beatrun.properties | 2 +- .../beatrun/content/resource/localization/ru/beatrun.properties | 2 +- beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua | 2 +- beatrun/gamemodes/beatrun/gamemode/sh/Checkpoints.lua | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties index 5aadf4c..6f11804 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties @@ -118,7 +118,7 @@ beatrun.toolsmenu.hud.keystrokes=Show Keystrokes beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press beatrun.toolsmenu.hud.hidden=Hide HUD -beatrun.toolsmenu.hud.hiddendesc=0 - Shown\n1 - Gamemode only\n2 - Hidden +beatrun.toolsmenu.hud.hiddendesc=0 - Shown\n1 - Gamemode and speedometer only\n2 - Hidden beatrun.toolsmenu.hud.textcolor=HUD Text Color beatrun.toolsmenu.hud.cornercolor=HUD Corner Color diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties index 81c34c8..6ffac5f 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties @@ -115,7 +115,7 @@ beatrun.toolsmenu.hud.keystrokes=Показывать клавиши beatrun.toolsmenu.hud.keystrokesdesc=Показывает нажатие клавиш в HUD beatrun.toolsmenu.hud.hidden=Скрыть HUD -beatrun.toolsmenu.hud.hiddendesc=0 - Показать\n1 - Только режим\n2 - Скрыть полностью +beatrun.toolsmenu.hud.hiddendesc=0 - Показать\n1 - Только режим и спидометр\n2 - Скрыть полностью beatrun.toolsmenu.hud.textcolor=Цвет Текста в HUD beatrun.toolsmenu.hud.cornercolor=Цвет Края в HUD diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua b/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua index 18b3a6c..dd876ca 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua @@ -7,7 +7,7 @@ local color_black_t = Color(0, 0, 0, 100) local size = 35 local function ShowKeyStrokes() - if showKeystrokes:GetBool() then + if showKeystrokes:GetBool() and GetConVar("Beatrun_HUDHidden"):GetInt() == 0 then -- Key W if LocalPlayer():KeyDown(IN_FORWARD) then surface.SetDrawColor(color_white_t) diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/Checkpoints.lua b/beatrun/gamemodes/beatrun/gamemode/sh/Checkpoints.lua index 03d6b25..e02fcb2 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/Checkpoints.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/Checkpoints.lua @@ -246,7 +246,7 @@ function CourseHUD() surface.DrawText(text) end - if GetConVar("Beatrun_ShowSpeedometer"):GetBool() then + if GetConVar("Beatrun_ShowSpeedometer"):GetBool() and GetConVar("Beatrun_HUDHidden"):GetInt() ~= 2 then local speed = math.Round(ply:GetVelocity():Length() * 0.06858125) if speed < 10 then From 7cba7cf9e7c3cb1351ba229766854d027cd950b8 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sun, 8 Sep 2024 11:50:41 +0500 Subject: [PATCH 09/34] v1.0.13 --- beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index ae8e5fd..a07d7df 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,4 @@ -VERSIONGLOBAL = "1.0.12" +VERSIONGLOBAL = "1.0.13" VERSIONLATEST = "" DeriveGamemode("sandbox") diff --git a/version.txt b/version.txt index 492b167..9256e28 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.12 \ No newline at end of file +1.0.13 \ No newline at end of file From 3418007f8e36e79b560e67420af3f6e17efb06c5 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sat, 14 Sep 2024 18:19:54 +0500 Subject: [PATCH 10/34] lookup keybinds for keystrokes --- beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua | 4 +- .../beatrun/gamemode/cl/Keystrokes.lua | 59 ++++++++++++------- beatrun/gamemodes/beatrun/gamemode/shared.lua | 39 ++++++++---- version.txt | 2 +- 4 files changed, 68 insertions(+), 36 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua b/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua index 881ca02..a5b4fc7 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/HUD.lua @@ -131,14 +131,14 @@ local function BeatrunHUD() surface.SetFont("DebugFixedSmall") - local version_text = "v" .. VERSIONGLOBAL + local version_text = "v" .. VERSION_GLOBAL local tw, _ = surface.GetTextSize(version_text) surface.SetTextColor(255, 255, 255, 20) surface.SetTextPos(scrw - tw, 0) surface.DrawText(version_text) surface.SetFont("BeatrunHUD") - if VERSIONGLOBAL ~= VERSIONLATEST then + if VERSION_GLOBAL ~= VERSION_LATEST then local update_text = "Update available!" local notlatest_w, _ = surface.GetTextSize(update_text) surface.SetTextColor(255, 255, 255, 30) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua b/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua index dd876ca..cd36921 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua @@ -8,125 +8,140 @@ local size = 35 local function ShowKeyStrokes() if showKeystrokes:GetBool() and GetConVar("Beatrun_HUDHidden"):GetInt() == 0 then + local forward = string.upper(input.LookupBinding("+forward")) + local back = string.upper(input.LookupBinding("+back")) + local moveleft = string.upper(input.LookupBinding("+moveleft")) + local moveright = string.upper(input.LookupBinding("+moveright")) + local use = string.upper(input.LookupBinding("+use")) + local reload = string.upper(input.LookupBinding("+reload")) + local jump = string.upper(input.LookupBinding("+jump")) + local speed = string.upper(input.LookupBinding("+speed")) + local duck = string.upper(input.LookupBinding("+duck")) + local attack = string.upper(input.LookupBinding("+attack")) + local attack2 = string.upper(input.LookupBinding("+attack2")) + + if attack == "MOUSE1" then attack = "LMB" end + if attack2 == "MOUSE2" then attack2 = "RMB" end + -- Key W if LocalPlayer():KeyDown(IN_FORWARD) then surface.SetDrawColor(color_white_t) surface.DrawRect(size, 0, size, size) - draw.SimpleText("W", "BeatrunHUD", size + 10, size - 30, color_black) + draw.SimpleText(forward, "BeatrunHUD", size + 10, size - 30, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(size, 0, size, size) - draw.SimpleText("W", "BeatrunHUD", size + 10, size - 30, color_white) + draw.SimpleText(forward, "BeatrunHUD", size + 10, size - 30, color_white) end -- Key E if LocalPlayer():KeyDown(IN_USE) then surface.SetDrawColor(color_white_t) surface.DrawRect(size * 2, 0, size, size) - draw.SimpleText("E", "BeatrunHUD", size + 48, size - 30, color_black) + draw.SimpleText(use, "BeatrunHUD", size + 48, size - 30, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(size * 2, 0, size, size) - draw.SimpleText("E", "BeatrunHUD", size + 48, size - 30, color_white) + draw.SimpleText(use, "BeatrunHUD", size + 48, size - 30, color_white) end -- Key R if LocalPlayer():KeyDown(IN_RELOAD) then surface.SetDrawColor(color_white_t) surface.DrawRect(size * 3, 0, size, size) - draw.SimpleText("R", "BeatrunHUD", size * 3 + 12, size - 30, color_black) + draw.SimpleText(reload, "BeatrunHUD", size * 3 + 12, size - 30, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(size * 3, 0, size, size) - draw.SimpleText("R", "BeatrunHUD", size * 3 + 12, size - 30, color_white) + draw.SimpleText(reload, "BeatrunHUD", size * 3 + 12, size - 30, color_white) end -- Key A if LocalPlayer():KeyDown(IN_MOVELEFT) then surface.SetDrawColor(color_white_t) surface.DrawRect(0, size, size, size) - draw.SimpleText("A", "BeatrunHUD", size - 23, size + 8, color_black) + draw.SimpleText(moveleft, "BeatrunHUD", size - 23, size + 8, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(0, size, size, size) - draw.SimpleText("A", "BeatrunHUD", size - 23, size + 8, color_white) + draw.SimpleText(moveleft, "BeatrunHUD", size - 23, size + 8, color_white) end -- Key S if LocalPlayer():KeyDown(IN_BACK) then surface.SetDrawColor(color_white_t) surface.DrawRect(size, size, size, size) - draw.SimpleText("S", "BeatrunHUD", size + 12, size + 8, color_black) + draw.SimpleText(back, "BeatrunHUD", size + 12, size + 8, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(size, size, size, size) - draw.SimpleText("S", "BeatrunHUD", size + 12, size + 8, color_white) + draw.SimpleText(back, "BeatrunHUD", size + 12, size + 8, color_white) end -- Key D if LocalPlayer():KeyDown(IN_MOVERIGHT) then surface.SetDrawColor(color_white_t) surface.DrawRect(size * 2, size, size, size) - draw.SimpleText("D", "BeatrunHUD", size + 48, size + 8, color_black) + draw.SimpleText(moveright, "BeatrunHUD", size + 48, size + 8, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(size * 2, size, size, size) - draw.SimpleText("D", "BeatrunHUD", size + 48, size + 8, color_white) + draw.SimpleText(moveright, "BeatrunHUD", size + 48, size + 8, color_white) end -- Space if LocalPlayer():KeyDown(IN_JUMP) then surface.SetDrawColor(color_white_t) surface.DrawRect(0, size * 2, size * 3, size) - draw.SimpleText("SPACE", "BeatrunHUD", 28, size * 2 + 8, color_black) + draw.SimpleText(jump, "BeatrunHUD", 28, size * 2 + 8, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(0, size * 2, size * 3, size) - draw.SimpleText("SPACE", "BeatrunHUD", 28, size * 2 + 8, color_white) + draw.SimpleText(jump, "BeatrunHUD", 28, size * 2 + 8, color_white) end -- Shift if LocalPlayer():KeyDown(IN_SPEED) then surface.SetDrawColor(color_white_t) surface.DrawRect(0, size * 3, size * 3, size) - draw.SimpleText("SHIFT", "BeatrunHUD", 28, size * 3 + 8, color_black) + draw.SimpleText(speed, "BeatrunHUD", 28, size * 3 + 8, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(0, size * 3, size * 3, size) - draw.SimpleText("SHIFT", "BeatrunHUD", 28, size * 3 + 8, color_white) + draw.SimpleText(speed, "BeatrunHUD", 28, size * 3 + 8, color_white) end -- Ctrl if LocalPlayer():KeyDown(IN_DUCK) then surface.SetDrawColor(color_white_t) surface.DrawRect(0, size * 4, size * 3, size) - draw.SimpleText("CTRL", "BeatrunHUD", 32, size * 4 + 8, color_black) + draw.SimpleText(duck, "BeatrunHUD", 32, size * 4 + 8, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(0, size * 4, size * 3, size) - draw.SimpleText("CTRL", "BeatrunHUD", 32, size * 4 + 8, color_white) + draw.SimpleText(duck, "BeatrunHUD", 32, size * 4 + 8, color_white) end -- Left Mouse if LocalPlayer():KeyDown(IN_ATTACK) then surface.SetDrawColor(color_white_t) surface.DrawRect(size * 3, size, size * 2, size) - draw.SimpleText("LMB", "BeatrunHUD", size + 87, size + 8, color_black) + draw.SimpleText(attack, "BeatrunHUD", size + 87, size + 8, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(size * 3, size, size * 2, size) - draw.SimpleText("LMB", "BeatrunHUD", size + 87, size + 8, color_white) + draw.SimpleText(attack, "BeatrunHUD", size + 87, size + 8, color_white) end -- Right Mouse if LocalPlayer():KeyDown(IN_ATTACK2) then surface.SetDrawColor(color_white_t) surface.DrawRect(size * 3, size * 2, size * 2, size) - draw.SimpleText("RMB", "BeatrunHUD", size + 86, size * 2 + 8, color_black) + draw.SimpleText(attack2, "BeatrunHUD", size + 86, size * 2 + 8, color_black) else surface.SetDrawColor(color_black_t) surface.DrawRect(size * 3, size * 2, size * 2, size) - draw.SimpleText("RMB", "BeatrunHUD", size + 86, size * 2 + 8, color_white) + draw.SimpleText(attack2, "BeatrunHUD", size + 86, size * 2 + 8, color_white) end end end diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index a07d7df..d9ccf2d 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,5 +1,6 @@ -VERSIONGLOBAL = "1.0.13" -VERSIONLATEST = "" +VERSION_GLOBAL = "1.0.14" +VERSION_LATEST = "" +VERSION_CHECKED = false DeriveGamemode("sandbox") @@ -15,12 +16,28 @@ for _, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sh/*.lua", "GAME", "nam include("sh/" .. v) end -http.Fetch("https://raw.githubusercontent.com/JonnyBro/beatrun/main/version.txt", function(body, size, headers, code) - if code == 200 then - VERSIONLATEST = body:gsub("[\n\r]", "") - else - print("Error while checking version (not 200 code):\n" .. body) - end -end, function(e) - print("Error while checking version (error on fetch):\n" .. e) -end) \ No newline at end of file +if not VERSION_CHECKED then + http.Fetch("https://raw.githubusercontent.com/JonnyBro/beatrun/main/version.txt", function(body, size, headers, code) + if code == 200 then + VERSION_LATEST = body:gsub("[\n\r]", "") + print("Latest version: " .. VERSION_LATEST) + + if VERSION_LATEST > VERSION_GLOBAL then + print("Your version is behind latest, please update.") + elseif VERSION_LATEST == VERSION_GLOBAL then + print("You're up to date, nice!") + else + print("Your version is ahead of latest. Huh?") + end + + VERSION_CHECKED = true + + return + else + print("Error while checking version (not 200 code):\n" .. body) + VERSION_CHECKED = true + + return + end + end) +end \ No newline at end of file diff --git a/version.txt b/version.txt index 9256e28..97bceaa 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.13 \ No newline at end of file +1.0.14 \ No newline at end of file From 9361b3b75c0efd6e49e6f11e96e2e5b681f0710f Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" <48434875+JonnyBro@users.noreply.github.com> Date: Fri, 20 Sep 2024 08:58:43 +0500 Subject: [PATCH 11/34] Rewrite READMEs --- README.md | 73 +++++++++++++--------------- README.ru.md | 133 +++++++++++++++++++++++++-------------------------- 2 files changed, 98 insertions(+), 108 deletions(-) diff --git a/README.md b/README.md index 87b94e3..db8cc7c 100644 --- a/README.md +++ b/README.md @@ -7,29 +7,27 @@ * [Русский](./README.ru.md) -**PLEASE READ EVERYTHING BEFORE ASKING QUESTIONS ON OUR SERVER!**\ -**WE DOCUMENTED EVERYTHING ENOUGH SO YOU CAN INSTALL THIS YOURSELF PRETTY EASILY** +**PLEASE READ EVERYTHING BEFORE ASKING QUESTIONS!** -Infamous parkour addon for Garry's Mod.\ -Fully open sourced and maintained by the community (me 😞). +Infamous parkour addon for Garry's Mod. Fully open sourced and maintained by the community (me 😞). > [!IMPORTANT] -> This repository doesn't contain any malicious modules. It does contain some modules for additional functionality like: +> This repository doesn't contain any malicious modules. However, we have some modules for additional functionality: > > * Discord Rich Presence. > * Steam Presence. > -> **They are optional and can be removed at any time.**\ +> **They are completely optional and can be removed at any time.**\ > You can find all modules **[here](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**.\ > Check **[Credits](#credits)** section for their source code. ## Automatic Installation (Recommended | Windows 10/11) > [!WARNING] -> Windows 7 is not supported.\ -> Update already... +> Windows 7 and old versions of Windows 10 are not supported.\ +> Please update. -Run the command below in Powershell. +Run the command below in Powershell (run as admin if your Steam or game located in a C: drive). > [!NOTE] > Win + R > `powershell` > *Enter* @@ -37,69 +35,66 @@ Run the command below in Powershell. irm https://beatrun.jonnybro.ru/install | iex ``` +* Start the game. * Select the `Beatrun` gamemode in right lower corner. ## Manual Installation 1. **[Download this repository](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip)**. -2. **Delete the `beatrun` folder in *your_game_folder/garrysmod/addons* if you have one.** -3. Extract the `beatrun-main/beatrun` folder to *your_game_folder/garrysmod/addons*. -4. If you want to have Discord and Steam Presence: +1. **Delete the `beatrun` folder in *your_game_folder/garrysmod/addons* if you have one.** +1. Extract the `beatrun-main/beatrun` folder to *your_game_folder/garrysmod/addons*. +1. If you want to have Discord and Steam Presence: * Extract the `beatrun-main/lua` folder to *your_game_folder/garrysmod*. -5. Select the `Beatrun` gamemode in right lower corner. +1. Start the game. +1. Select the `Beatrun` gamemode in right lower corner. ## Animations -[Please refer to this file.](beatrun/README.md) +Animations installer was removed, now you can switch between animations in Tools menu in Beatrun category. -## Features +## What's new > [!IMPORTANT] > There are many undocumented changes and fixes in this version, you better look at the commits for more specific changes. -* Jonny_Bro is hosting **[custom courses database](https://courses.jonnybro.ru)**, which is also **free** to use and **[open sourced](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-express)**! +* Jonny_Bro is hosting **[custom courses database](https://courses.jonnybro.ru)**, which is also **free** to use and **[open sourced](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-docker)**! * New gamemode - **Deathmatch** (it's way more fun than Data Theft I promise). * "Proper" Kick Glitch just like in **[original game](https://www.youtube.com/watch?v=zK5y3NBUStc)**. -* In-game configuration menu - you can find it in the tools menu, in the **Beatrun** category.\ +* In-game configuration menu - you can find it in the Tools menu, in the **Beatrun** category.\ **All** of the Beatrun settings can be changed in the configuration menu! * Discord and Steam Presence. * Localization support.\ Available in 7 languages! * Build Mode Tweaks.\ -You can now spawn any prop from Spawn Menu and they will save in your course. -* Ability to roll after ziplines with CTRL 🤯 (thanks c4nk <3). + You can now spawn any prop from Spawn Menu and they will save in your course. +* Ability to roll after ziplines with CTRL (thanks c4nk <3). * Ability to get off of ladders - Press CTRL. * Ability to remove ziplines that created with *Zipline Gun* - Press RMB. * Arrow that shows the next checkpoint. -* ConVar to allow Overdrive usage (server) - `Beatrun_AllowOverdriveInMultiplayer`. -* ConVar to allow players to spawn props and weapons without admin rights (server) - `Beatrun_AllowPropSpawn`. -* ConVar to toggle the heatlh regeneration (server) - `Beatrun_HealthRegen`. -* ConVars to change HUD colors (client) - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`. -* ConVar to toggle the grapple ability (client) - `Beatrun_DisableGrapple`. -* ConVar to toggle between old and new Kick Glitch (client) - `Beatrun_OldKickGlitch`. -* ConVar to allow QuickTurn with any weapon or only with *Runner Hands* (client) - `Beatrun_QuickturnHandsOnly`. +* Server ConVar to allow Overdrive usage in multiplayer - `Beatrun_AllowOverdriveInMultiplayer`. +* Server ConVar to allow players to spawn props and weapons without admin rights - `Beatrun_AllowPropSpawn`. +* Server ConVar to toggle the health regeneration - `Beatrun_HealthRegen`. +* Client ConVars to change HUD colors - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`. +* Client ConVar to toggle the grapple ability - `Beatrun_DisableGrapple`. +* Client ConVar to toggle between old and new Kick Glitch - `Beatrun_OldKickGlitch`. +* Client ConVar to allow QuickTurn with any weapon or only with *Runner Hands* - `Beatrun_QuickturnHandsOnly`. * Small camera punch when diving. -* Your SteamID on the screen is no longer present. +* SteamID is no longer shown on screen. ## Fixes -* Some playermodels show up as **ERROR**. +* Some playermodels show up as ERROR in first person. * Leaderboard sorting in gamemodes. * Grapple usage in courses and gamemodes. * Crash in Data Theft when touching Data Bank. -* Collisions issues - PvP damage not going through in gamemodes other than Data Theft. -* Allowed jumping while walking (🤷). -* Tweaked safety roll - now you can roll under things. -* Tweaked some grapple related stuff - now it moves with the entity it was attached to and other players can see the rope. - -## TODO - -* [ ] Loadouts creation menu for Data Theft and Deathmatch. (idk how to properly implement this for know). +* PvP damage not going through in gamemodes other than Data Theft. +* Allowed jumping while walking. +* You can now roll under things using safety roll. +* Now grapple moves with the entity it was attached to and other players can see the rope. ## Known issues * [Issues](https://github.com/JonnyBro/beatrun/issues). -* Maybe more, i forgor 💀. ## Related projects @@ -108,8 +103,8 @@ You can now spawn any prop from Spawn Menu and they will save in your course. ## Credits * [All contributors](https://github.com/JonnyBro/beatrun/graphs/contributors) - <3. -* [EarthyKiller127](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - He made that piece of shit. +* [EarthyKiller127/datae](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - Original creator of Beatrun. * [relaxtakenotes](https://github.com/relaxtakenotes) - Made all of this possible. * [MTB](https://www.youtube.com/@MTB396) - Beatrun Reanimated Project. * [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) - Discord Rich Presence. -* [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) - Steam Presence. +* [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) - Steam Presence (TFA Base creator!). diff --git a/README.ru.md b/README.ru.md index fd12c07..8073293 100644 --- a/README.ru.md +++ b/README.ru.md @@ -3,33 +3,31 @@ [![forthebadge](https://forthebadge.com/images/featured/featured-powered-by-electricity.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/powered-by-black-magic.svg)](https://forthebadge.com) -[Нажми чтобы присоединиться к нашему Discord серверу!](https://discord.gg/93Psubbgsg) +[Нажмите чтобы присоедениться к нашему Discord серверу!](https://discord.gg/93Psubbgsg) -* [English](./README.md) +* [Русский](./README.ru.md) -**ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ЭТОТ ФАЙЛ ПЕРЕД ТЕМ КАК ЗАДАВАТЬ ВОПРОСЫ!**\ -**МЫ ОПИСАЛИ ДОСТАТОЧНО, ЧТОБЫ ВЫ МОГЛИ УСТАНОВИТЬ ЭТОТ МОД САМОСТОЯТЕЛЬНО** +**ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ВЕСЬ ДОКУМЕНТ ПЕРЕД ТЕМ КАК ЗАДАВАТЬ ВОПРОСЫ!** -Печально известный паркур мод для Garry's Mod.\ -Мод с открытым исходным кодом и поддерживаемый сообществом (мной 😞). +Печально известный паркур аддон для Garry's Mod. Теперь, с полностью открытым исходным кодом и поддерживаемый сообществом (мной 😞). > [!IMPORTANT] -> Данный проект не содержит вредоносных модулей. Здесь присутствуют модули для доп. функций, таких как: +> Данный репозиторий не содержит вредоносных модулей. Однако, мы имеем несколько модулей для дополнительного функционала: > -> * Показ статуса в Discord. -> * Показ статуса в Steam. +> * Модуль для показа статуса в Discord. +> * Модуль для показа статуса в Steam. > -> **Данные модули опциональны и могут быть удалены в любой момент.**\ -> Все модули можно найти **[здесь](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**.\ -> Проверьте **[Благодарности](#благодарности)** чтобы найти исходный код модулей. +> **Они не обязательны и могут быть удалены в любой момент.**\ +> Список всех модуйлей находится **[здесь](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**.\ +> Проверьте **[Благодарности](#благодарности)** чтобы найти их исходный код. -## Автоматическая установка (Рекомендуемое | Windows 10/11) +## Автоматическая установка (Рекомендуется | Windows 10/11) > [!WARNING] -> Windows 7 не поддерживается.\ -> Кому-то давно пора обновиться... +> Windows 7 и старые сборки Windows 10 не поддерживаются. +> Обновитесь, пожалуйста. -Запустите команду в Powershell. +Запустите команду ниже в Powershell (запустите от администратора если Steam или игра расположены на диске C:). > [!NOTE] > Win + R > `powershell` > *Enter* @@ -37,79 +35,76 @@ irm https://beatrun.jonnybro.ru/install | iex ``` -* Выберите режим `Beatrun` в правом нижнем углу. +* Запустить игру. +* Выбрать режим `Beatrun` в правом нижнем углу. ## Ручная установка -1. **[Скачайте проект](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip)**. -2. **Удалите папку `beatrun` по пути *путь_к_игре/garrysmod/addons* если присутствует.** -3. Извлеките папку `beatrun-main/beatrun` по пути *путь_к_игре/garrysmod/addons*. -4. Если вы хотите показ статусов в Discord и Steam: - * Извлеките папку `beatrun-main/lua` по пути *путь_к_игре/garrysmod*. -5. Выберите режим `Beatrun` в правом нижнем углу. +1. **[Скачать репозиторий](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip)**. +1. **Удалить папку `beatrun` в *путь_к_игре/garrysmod/addons*, если у вас такова имеется.** +1. Извлечь папку `beatrun-main/beatrun` в *путь_к_игре/garrysmod/addons*. +1. Если вы хотите показ статуса в Discord и Steam: + * Извлечь папку `beatrun-main/lua` в *путь_к_игре/garrysmod*. +1. Запустить игру. +1. Выбрать режим `Beatrun` в правом нижнем углу. ## Анимации -[Читаем тут](beatrun/README.md) +Установщик анимаций был удалён, теперь анимации можно переключить в меню Инструментов в категории Beatrun. -## Особенности +## Отличия от оригинала > [!IMPORTANT] -> Множество изменений и исправлений не задокументированы, обратитесь к списку коммитов для более подробного списка изменений. +> Множество изменений не задокументированы, проверьте коммиты для полного списка изменений. -* Jonny_Bro поддерживает **[свою базу курсов](https://courses.jonnybro.ru)**, которая так же **бесплатна** к использованию и имеет **[открытый исходный код](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-express)**! -* Новый режим - **Deathmatch** (намного веселее чем Data Theft, честно). -* "Правильный" Kick Glitch прямо как в **[оригинальной игре](https://www.youtube.com/watch?v=zK5y3NBUStc)**. -* Меню настроек - найти его можно в меню инструментов, в категории **Beatrun**.\ - **Все** настройки Beatrun можно найти там! -* Показ статусов в Steam и Discord. -* Поддержка локализаций.\ - Доступно 7 языков! -* Улучшения режима строительства. - Можно заспавнить любой проп из меню спавна и он сохранится в курсе. -* Возможность переката после зиплайнов на CTRL 🤯 (спасибо c4nk <3). -* Возможность спрыгивать с лестниц - Нажмите CTRL. -* Возможность удалять зиплайны созданные *Zipline Gun* - Нажмите ПКМ. -* Стрелка, показывающая местоположение след. контрольной точки. -* Переменная, разрешающая использование Overdrive (сервер) - `Beatrun_AllowOverdriveInMultiplayer`. -* Переменная, разрешающая создание объектов без прав администратора (сервер) - `Beatrun_AllowPropSpawn`. -* Переменная, переключающая регенерацию здоровья (сервер) - `Beatrun_HealthRegen`. -* Переменные, изменяющие цвет HUD (клиент) - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`. -* Переменная, переключающая использование крюка-кошки (клиент) - `Beatrun_DisableGrapple`. -* Переменная, переключающая режим Kick Glitch (клиент) - `Beatrun_OldKickGlitch`. -* Переменная, переключающая использование Quickturn только с *Runner Hands* или любым оружием (клиент) - `Beatrun_QuickturnHandsOnly`. -* Небольшой толчёк камеры при нырянии. -* Убран SteamID с экрана. +* Jonny_Bro поддерживает свою **[базу курсов](https://courses.jonnybro.ru)**, которая так же **бесплатна** для использования и имеет **[открытый исходный код](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-docker)**! +* Новый режим - **Deathmatch** (намного интереснее Data Theft, честно). +* Оригинальный Kick Glitch как в **[оригинальной игре](https://www.youtube.com/watch?v=zK5y3NBUStc)**. +* Внутриигровое меню настроек - оно находится в меню Инструментов в категории **Beatrun**.\ + Там можно найти **все** настройки Beatrun! +* Показ статуса в Discord и Steam. +* Поддержка локализации.\ + Доступно на 7 языках! +* Изменения в режиме строительства курсов.\ + Любой проп из меню спавна теперь сохраняется в курсе. +* Возможность переката на кнопку приседания (CTRL) после зиплайнов (спасибо c4nk <3). +* Возможность спрыгивать с лестниц на кнопку приседания (CTRL). +* Возможность удалять зиплайны, созданные *Zipline Gun* по нажатию на второстепенный огонь (ПКМ). +* Стрелка, указывающая на следующий чекпоинт. +* Серверная переменная которая разрешает использование Overdrive в мультиплеере - `Beatrun_AllowOverdriveInMultiplayer`. +* Серверная переменная которая разрешает создание оружия и объектов из меню спавна без прав администратора - `Beatrun_AllowPropSpawn`. +* Серверная переменная которая переключает регенерацию здоровья - `Beatrun_HealthRegen`. +* Клиентские переменные для изменения цвета интерфейса - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`. +* Клиентская переменная которая переключает использование крюка-кошки - `Beatrun_DisableGrapple`. +* Клиентская переменная которая переключает использование старого и нового Kick Glitch - `Beatrun_OldKickGlitch`. +* Клиентская переменная которая переключает быстрый разворот с оружием или только с *Runner Hands* - `Beatrun_QuickturnHandsOnly`. +* Небольшой толчок камеры при нырянии. +* SteamID больше не видно на экране. ## Исправления -* Отображение моделей как **ERROR**. -* Сортировка таблицы лидеров. -* Использование крюка-кошки в режимах. -* Краш в Data Theft при касании с Data Bank. -* Ошибки с коллиизей - урон в PvP не проходил, если режим не Data Theft. -* Возможность прыгать во время ходьбы (🤷). -* Подправлен кувырок - можно кувыркаться под объектами. -* Подправлена крюк-кошка - движется с объектом к которому прикреплена и видна другим игрокам. - -## TODO - -* [ ] Меню создания снаряжений для Deathmatch/Data Theft. +* Некоторые модельки игрока отображались как ERROR от первого лица. +* Сортировка таблиц лидеров в режимах. +* Использование крюка-кошки в режимах и курсах. +* Краш игры в режиме Data Theft при использовании Data Bank. +* Урон между игроками проходил только в Data Theft. +* Разрешены прыжки при ходьбе. +* Возможность переката **под** объектами. +* Крюк-кошка теперь следует за объектом к которому она присоединена, так же её видят другие игроки. ## Известные проблемы -* [Тут](https://github.com/JonnyBro/beatrun/issues). -* Может ещё чего, я не помню 💀. +* [Проблемы](https://github.com/JonnyBro/beatrun/issues). ## Связанные проекты -* [Beatrun Reanimated Project](https://github.com/JonnyBro/beatrun-anims). +* [Проект Beatrun Reanimated](https://github.com/JonnyBro/beatrun-anims). ## Благодарности * [Все участники](https://github.com/JonnyBro/beatrun/graphs/contributors) - <3. -* [EarthyKiller127](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - Создатель этого ужаса. -* [relaxtakenotes](https://github.com/relaxtakenotes) - Без него этого проекта бы не существовало. -* [MTB](https://www.youtube.com/@MTB396) - Beatrun Reanimated Project. -* [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) - Discord Rich Presence. -* [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) - Steam Presence. +* [EarthyKiller127/datae](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - Создатель оригинального Beatrun. +* [relaxtakenotes](https://github.com/relaxtakenotes) - Без него этот проект не существовал бы. +* [MTB](https://www.youtube.com/@MTB396) - Проект Beatrun Reanimated. +* [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) - Модуль показа статусов в Discord. +* [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) - Модуль показа статусов в Steam (создатель TFA Base!). From b100b9c96f2a8a6afce8ca5ea2c51275a7b52a07 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" <48434875+JonnyBro@users.noreply.github.com> Date: Mon, 23 Sep 2024 15:42:48 +0500 Subject: [PATCH 12/34] fix typo in russian readme --- README.ru.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.ru.md b/README.ru.md index 8073293..118c69d 100644 --- a/README.ru.md +++ b/README.ru.md @@ -5,7 +5,7 @@ [Нажмите чтобы присоедениться к нашему Discord серверу!](https://discord.gg/93Psubbgsg) -* [Русский](./README.ru.md) +* [English](./README.md) **ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ВЕСЬ ДОКУМЕНТ ПЕРЕД ТЕМ КАК ЗАДАВАТЬ ВОПРОСЫ!** From f890b7ba07a3c4207d703edf1d89544e62441be0 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Thu, 3 Oct 2024 13:26:41 +0500 Subject: [PATCH 13/34] =?UTF-8?q?update=20LICENSE=20=F0=9F=A4=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/LICENSE b/LICENSE index fdddb29..5c93f45 100644 --- a/LICENSE +++ b/LICENSE @@ -1,24 +1,13 @@ -This is free and unencumbered software released into the public domain. + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. + Copyright (C) 2004 Sam Hocevar -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -For more information, please refer to + 0. You just DO WHAT THE FUCK YOU WANT TO. From 20a26ec5e191032307fa4c11cd6286fbe0587364 Mon Sep 17 00:00:00 2001 From: Patrxgt <62941214+Patrxgt@users.noreply.github.com> Date: Thu, 3 Oct 2024 13:53:14 +0200 Subject: [PATCH 14/34] Update Polish translation --- .../resource/localization/pl/beatrun.properties | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/pl/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/pl/beatrun.properties index 180f1a4..16b751f 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/pl/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/pl/beatrun.properties @@ -41,6 +41,7 @@ beatrun.convars.disablegrapple=Wyłącz zdolność używania tyrolki beatrun.convars.puristmode=Tryb purystyczny to opcja po stronie klienta, która poważnie ogranicza zdolność do strafe'owania w powietrzu, tak jak w grach z serii ME.\n0 = Brak ograniczeń\n1 = Zmniejszona prędkość ruchu w powietrzu. beatrun.convars.quickturnground=Umożliwia szybki obrót za pomocą ataku drugorzędnego na ziemi beatrun.convars.quickturnhandsonly=Umożliwia szybki obrót tylko w trybie "Rąk biegacza" +beatrun.convars.showspeedometer=Przełącz widoczność prędkościomierza # HUD beatrun.hud.course=Bieg: %s @@ -53,7 +54,7 @@ beatrun.coursemenu.trials=Biegi - %s beatrun.coursemenu.buildmode=Przełącz tryb budowania beatrun.coursemenu.freeplay=Wróć do rozgrywki swobodnej -# CoursesDatabase +# Courses Database beatrun.coursesdatabase.cantuploadfreeplay=Nie można przesyłać biegów w trybie rozgrywki swobodnej beatrun.coursesdatabase.upload1=Próbujesz przesłać kurs o nazwie %s na mapie %s. beatrun.coursesdatabase.upload2=Użyj Beatrun_Confirm, aby kontynuować lub Beatrun_Cancel, aby anulować. @@ -62,6 +63,7 @@ beatrun.coursesdatabase.update1=Próbujesz zaktualizować bieg oznaczony kodem % # Tools Menu beatrun.toolsmenu.client=Klient beatrun.toolsmenu.server=Serwer +beatrun.toolsmenu.extra=Ekstra # Tools Menu Courses Section beatrun.toolsmenu.courses.name=Biegi @@ -106,8 +108,14 @@ beatrun.toolsmenu.hud.nametagsdesc=Włącz/Wyłącz wyświetlanie identyfikator beatrun.toolsmenu.hud.hudxp=Wyświetl PD na interfejsie beatrun.toolsmenu.hud.hudxpdesc=Pokaż całkowitą liczbę PD w pobliżu swojego nicku -beatrun.toolsmenu.hud.keystrokes=Show Keystrokes -beatrun.toolsmenu.hud.keystrokesdesc=Shows keys that you press +beatrun.toolsmenu.hud.showspeedometer=Pokaż prędkościomierz +beatrun.toolsmenu.hud.showspeedometerdesc=Pokazuje prędkościomierz na interfejsie + +beatrun.toolsmenu.hud.showSpeedometer=Pokaż prędkościomierz +beatrun.toolsmenu.hud.showSpeedometerDesc=Pokazuje prędkościomierz na interfejsie (ukrycie interfejsu nie wpływa na to ustawienie) + +beatrun.toolsmenu.hud.keystrokes=Pokaż naciśnięte klawisze +beatrun.toolsmenu.hud.keystrokesdesc=Pokazuje na interfejsie klawisze, które wciskasz podczas gry beatrun.toolsmenu.hud.hidden=Ukryj interfejs beatrun.toolsmenu.hud.hiddendesc=0 - Pokazany\n1 - Tylko poza rozgrywką swobodną\n2 - Ukryty @@ -121,7 +129,7 @@ beatrun.toolsmenu.camera.name=Kołysanie kamery w ruchu beatrun.toolsmenu.camera.desc=Ustawienia kołysania kamery w ruchu beatrun.toolsmenu.camera.stabilization=Stabilizacja kołysania kamery w ruchu -beatrun.toolsmenu.camera.stabilizationdesc=Włącz, aby zmniejszyć chorobę lokomocyjną za pomocą utrzymywania stabilności kamery w ruchu +beatrun.toolsmenu.camera.stabilizationdesc=Włącz, aby zmniejszyć efekt powodujący chorobę lokomocyjną za pomocą utrzymywania stabilności kamery w ruchu beatrun.toolsmenu.camera.intensity=Intensywność kołysania kamery w ruchu beatrun.toolsmenu.camera.fov=Pole widzenia beatrun.toolsmenu.camera.fovdesc=Zmienia pole widzenia From bd4a147c1befb2899221212e84b67ca1c548597b Mon Sep 17 00:00:00 2001 From: LostTrackpad <161031457+LostTrackpad@users.noreply.github.com> Date: Fri, 4 Oct 2024 20:05:52 +0700 Subject: [PATCH 15/34] Hotfix for keystrokes glitching with key unbound (#217) --- .../beatrun/gamemode/cl/Keystrokes.lua | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua b/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua index cd36921..910daf4 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua @@ -6,19 +6,35 @@ local color_black = Color(0, 0, 0) local color_black_t = Color(0, 0, 0, 100) local size = 35 +local function GetFormattedKey(bind) + string = input.LookupBinding(bind) + + if string == "MOUSE1" then string = "LMB" + elseif string == "MOUSE2" then string = "RMB" + elseif string == "MOUSE3" then string = "MMB" end + + if string then + return string.upper(string) + else + return "???" + end +end + local function ShowKeyStrokes() if showKeystrokes:GetBool() and GetConVar("Beatrun_HUDHidden"):GetInt() == 0 then - local forward = string.upper(input.LookupBinding("+forward")) - local back = string.upper(input.LookupBinding("+back")) - local moveleft = string.upper(input.LookupBinding("+moveleft")) - local moveright = string.upper(input.LookupBinding("+moveright")) - local use = string.upper(input.LookupBinding("+use")) - local reload = string.upper(input.LookupBinding("+reload")) - local jump = string.upper(input.LookupBinding("+jump")) - local speed = string.upper(input.LookupBinding("+speed")) - local duck = string.upper(input.LookupBinding("+duck")) - local attack = string.upper(input.LookupBinding("+attack")) - local attack2 = string.upper(input.LookupBinding("+attack2")) + -- will have inconsistent indent on GH web view, thanks github + -- absolutely indented correctly, view in an editor like vscode + local forward = GetFormattedKey("+forward") + local back = GetFormattedKey("+back") + local moveleft = GetFormattedKey("+moveleft") + local moveright = GetFormattedKey("+moveright") + local use = GetFormattedKey("+use") + local reload = GetFormattedKey("+reload") + local jump = GetFormattedKey("+jump") + local speed = GetFormattedKey("+speed") + local duck = GetFormattedKey("+duck") + local attack = GetFormattedKey("+attack") + local attack2 = GetFormattedKey("+attack2") if attack == "MOUSE1" then attack = "LMB" end if attack2 == "MOUSE2" then attack2 = "RMB" end @@ -146,4 +162,4 @@ local function ShowKeyStrokes() end end -hook.Add("HUDPaint", "KeyStrokes", ShowKeyStrokes) \ No newline at end of file +hook.Add("HUDPaint", "KeyStrokes", ShowKeyStrokes) From e5c25f310e5dd00c5a683a26fa8352906d2b4d93 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Fri, 4 Oct 2024 18:17:02 +0500 Subject: [PATCH 16/34] clean up previous commit --- .../beatrun/gamemode/cl/Keystrokes.lua | 52 +++++++------------ 1 file changed, 18 insertions(+), 34 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua b/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua index 910daf4..a3c0053 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/Keystrokes.lua @@ -7,39 +7,33 @@ local color_black_t = Color(0, 0, 0, 100) local size = 35 local function GetFormattedKey(bind) - string = input.LookupBinding(bind) + local keyBind = input.LookupBinding(bind) - if string == "MOUSE1" then string = "LMB" - elseif string == "MOUSE2" then string = "RMB" - elseif string == "MOUSE3" then string = "MMB" end + if keyBind == "MOUSE1" then keyBind = "LMB" + elseif keyBind == "MOUSE2" then keyBind = "RMB" + elseif keyBind == "MOUSE3" then keyBind = "MMB" end - if string then - return string.upper(string) + if keyBind then + return string.upper(keyBind) else - return "???" + return "?" end end local function ShowKeyStrokes() if showKeystrokes:GetBool() and GetConVar("Beatrun_HUDHidden"):GetInt() == 0 then - -- will have inconsistent indent on GH web view, thanks github - -- absolutely indented correctly, view in an editor like vscode - local forward = GetFormattedKey("+forward") - local back = GetFormattedKey("+back") - local moveleft = GetFormattedKey("+moveleft") - local moveright = GetFormattedKey("+moveright") - local use = GetFormattedKey("+use") - local reload = GetFormattedKey("+reload") - local jump = GetFormattedKey("+jump") - local speed = GetFormattedKey("+speed") - local duck = GetFormattedKey("+duck") - local attack = GetFormattedKey("+attack") - local attack2 = GetFormattedKey("+attack2") + local forward = GetFormattedKey("+forward") + local back = GetFormattedKey("+back") + local moveleft = GetFormattedKey("+moveleft") + local moveright = GetFormattedKey("+moveright") + local use = GetFormattedKey("+use") + local reload = GetFormattedKey("+reload") + local jump = GetFormattedKey("+jump") + local speed = GetFormattedKey("+speed") + local duck = GetFormattedKey("+duck") + local attack = GetFormattedKey("+attack") + local attack2 = GetFormattedKey("+attack2") - if attack == "MOUSE1" then attack = "LMB" end - if attack2 == "MOUSE2" then attack2 = "RMB" end - - -- Key W if LocalPlayer():KeyDown(IN_FORWARD) then surface.SetDrawColor(color_white_t) surface.DrawRect(size, 0, size, size) @@ -50,7 +44,6 @@ local function ShowKeyStrokes() draw.SimpleText(forward, "BeatrunHUD", size + 10, size - 30, color_white) end - -- Key E if LocalPlayer():KeyDown(IN_USE) then surface.SetDrawColor(color_white_t) surface.DrawRect(size * 2, 0, size, size) @@ -61,7 +54,6 @@ local function ShowKeyStrokes() draw.SimpleText(use, "BeatrunHUD", size + 48, size - 30, color_white) end - -- Key R if LocalPlayer():KeyDown(IN_RELOAD) then surface.SetDrawColor(color_white_t) surface.DrawRect(size * 3, 0, size, size) @@ -72,7 +64,6 @@ local function ShowKeyStrokes() draw.SimpleText(reload, "BeatrunHUD", size * 3 + 12, size - 30, color_white) end - -- Key A if LocalPlayer():KeyDown(IN_MOVELEFT) then surface.SetDrawColor(color_white_t) surface.DrawRect(0, size, size, size) @@ -83,7 +74,6 @@ local function ShowKeyStrokes() draw.SimpleText(moveleft, "BeatrunHUD", size - 23, size + 8, color_white) end - -- Key S if LocalPlayer():KeyDown(IN_BACK) then surface.SetDrawColor(color_white_t) surface.DrawRect(size, size, size, size) @@ -94,7 +84,6 @@ local function ShowKeyStrokes() draw.SimpleText(back, "BeatrunHUD", size + 12, size + 8, color_white) end - -- Key D if LocalPlayer():KeyDown(IN_MOVERIGHT) then surface.SetDrawColor(color_white_t) surface.DrawRect(size * 2, size, size, size) @@ -105,7 +94,6 @@ local function ShowKeyStrokes() draw.SimpleText(moveright, "BeatrunHUD", size + 48, size + 8, color_white) end - -- Space if LocalPlayer():KeyDown(IN_JUMP) then surface.SetDrawColor(color_white_t) surface.DrawRect(0, size * 2, size * 3, size) @@ -116,7 +104,6 @@ local function ShowKeyStrokes() draw.SimpleText(jump, "BeatrunHUD", 28, size * 2 + 8, color_white) end - -- Shift if LocalPlayer():KeyDown(IN_SPEED) then surface.SetDrawColor(color_white_t) surface.DrawRect(0, size * 3, size * 3, size) @@ -127,7 +114,6 @@ local function ShowKeyStrokes() draw.SimpleText(speed, "BeatrunHUD", 28, size * 3 + 8, color_white) end - -- Ctrl if LocalPlayer():KeyDown(IN_DUCK) then surface.SetDrawColor(color_white_t) surface.DrawRect(0, size * 4, size * 3, size) @@ -138,7 +124,6 @@ local function ShowKeyStrokes() draw.SimpleText(duck, "BeatrunHUD", 32, size * 4 + 8, color_white) end - -- Left Mouse if LocalPlayer():KeyDown(IN_ATTACK) then surface.SetDrawColor(color_white_t) surface.DrawRect(size * 3, size, size * 2, size) @@ -149,7 +134,6 @@ local function ShowKeyStrokes() draw.SimpleText(attack, "BeatrunHUD", size + 87, size + 8, color_white) end - -- Right Mouse if LocalPlayer():KeyDown(IN_ATTACK2) then surface.SetDrawColor(color_white_t) surface.DrawRect(size * 3, size * 2, size * 2, size) From ea2c5f58cadee01db03d97550b4828dc3d24ec75 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Fri, 4 Oct 2024 18:17:35 +0500 Subject: [PATCH 17/34] v1.0.15 --- beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index d9ccf2d..45051b4 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,4 @@ -VERSION_GLOBAL = "1.0.14" +VERSION_GLOBAL = "1.0.15" VERSION_LATEST = "" VERSION_CHECKED = false diff --git a/version.txt b/version.txt index 97bceaa..758a46e 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.14 \ No newline at end of file +1.0.15 \ No newline at end of file From 2d190d3d5bf09d4949dfc9622b571223aced4b69 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Wed, 9 Oct 2024 21:00:35 +0500 Subject: [PATCH 18/34] add vmanip and some vmanip based addons to non compatible list --- beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua b/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua index e774848..47fa345 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua @@ -23,6 +23,9 @@ end local addons = 0 local incompatible = { + ["2155366756"] = true, -- VManip (Base) + ["2364206712"] = true, -- [VManip] Vaulting + ["2416989205"] = true, -- [VManip] Quick Slide ["1581533176"] = true, -- The Aperture [Reupload] ["2675972006"] = true, -- Custom Loadout ["378401390"] = true, -- Quake/Half-Life View bobbing From c60ef6eed76961484e78c53633ec27f098bea701 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Wed, 9 Oct 2024 21:01:02 +0500 Subject: [PATCH 19/34] v1.0.16 --- beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index 45051b4..7d145c5 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,4 @@ -VERSION_GLOBAL = "1.0.15" +VERSION_GLOBAL = "1.0.16" VERSION_LATEST = "" VERSION_CHECKED = false diff --git a/version.txt b/version.txt index 758a46e..d941c12 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.15 \ No newline at end of file +1.0.16 \ No newline at end of file From 7043cd002ae2abc3aa574819b301cc7686b4c408 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Fri, 1 Nov 2024 20:26:32 +0500 Subject: [PATCH 20/34] update anims :O --- .../content/models/new_climbanim.dx80.vtx | Bin 72 -> 72 bytes .../content/models/new_climbanim.dx90.vtx | Bin 72 -> 72 bytes .../beatrun/content/models/new_climbanim.mdl | Bin 2322996 -> 2323124 bytes .../beatrun/content/models/new_climbanim.vvd | Bin 64 -> 64 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx80.vtx b/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx80.vtx index 0e9b04b702ff4d03fccf56b7c7c74e1ddffa7a6d..24a95299bcf1f7c319fdfa9892aa5e0243071b5d 100644 GIT binary patch literal 72 rcmZQ)U|^5{VgUwD24*1r?nu{bMj-6~#2{J)N^>C5KqdnZh(H1W&@lt& literal 72 rcmZQ)U|^5{VgUwD24*1rP4=rIBan6gVi2tYr8$sjAd`UyL?8hGn$QC2 diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx90.vtx b/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx90.vtx index 3054c31bd78395207a2b47e964f53f7a2da2c823..2838eeb011879bde21dcc4d26125ef93893e5395 100644 GIT binary patch literal 72 rcmZQ)U|^5{Vp9fA24*1r?nu{bMj-6~#2{J)N^>C5KqdnZh(H1W*>MC6 literal 72 rcmZQ)U|^5{Vp9fA24*1rP4=rIBan6gVi2tYr8$sjAd`UyL?8hGq!0rR diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.mdl b/beatrun/gamemodes/beatrun/content/models/new_climbanim.mdl index cf69f2d6d573565b7ca27f4e1bd14d00aa683c5c..cf4179848a766bbee137a9cc0c30058ec1436edf 100644 GIT binary patch delta 15826 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 ag{WU=z-a|}9^tADV$wJ7=V+CE%>M!DQR7Yk diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.vvd b/beatrun/gamemodes/beatrun/content/models/new_climbanim.vvd index 91c0e309f04692424ef8c387fa3513cd89d9a147..725857aec27c43383038bbb0c9b945ea702b3f66 100644 GIT binary patch literal 64 ccmeZt2@YdnU|@K6r0X>!kR}E=02RS70RHC%BLDyZ literal 64 ccmeZt2@YdnU|{$r`&E$(^b From 83e2d53d9f3fb8c335d4951e5875501eac28e9a5 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Mon, 4 Nov 2024 19:05:50 +0500 Subject: [PATCH 21/34] fix anticamp box working only in infection --- .../beatrun/entities/entities/br_anticampbox/shared.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beatrun/gamemodes/beatrun/entities/entities/br_anticampbox/shared.lua b/beatrun/gamemodes/beatrun/entities/entities/br_anticampbox/shared.lua index 919b893..6115cce 100644 --- a/beatrun/gamemodes/beatrun/entities/entities/br_anticampbox/shared.lua +++ b/beatrun/gamemodes/beatrun/entities/entities/br_anticampbox/shared.lua @@ -37,7 +37,7 @@ function ENT:StartTouch(ent) end function ENT:Touch(ent) - if ent:IsPlayer() then + if ent:IsPlayer() and GetGlobalBool("GM_INFECTION") then if CurTime() > ent.MemeTime then if not ent.MemeMessage then ent:ChatPrint("Are you having fun standing still in a parkour game? Let's spice things up a bit!") From 7fc975dc42d5b777f907843c767d3d8cfe458b9f Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Mon, 4 Nov 2024 19:06:33 +0500 Subject: [PATCH 22/34] v1.0.17 --- beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index 7d145c5..144b716 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,4 @@ -VERSION_GLOBAL = "1.0.16" +VERSION_GLOBAL = "1.0.17" VERSION_LATEST = "" VERSION_CHECKED = false diff --git a/version.txt b/version.txt index d941c12..e92964f 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.16 \ No newline at end of file +1.0.17 \ No newline at end of file From 148352596f3f6936473b36d4609d0c5767c88824 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Thu, 7 Nov 2024 17:03:50 +0500 Subject: [PATCH 23/34] update anims, inflict huge damage to insure player's death --- .../content/models/new_climbanim.dx80.vtx | Bin 72 -> 72 bytes .../content/models/new_climbanim.dx90.vtx | Bin 72 -> 72 bytes .../beatrun/content/models/new_climbanim.mdl | Bin 2323124 -> 2322772 bytes .../beatrun/content/models/new_climbanim.vvd | Bin 64 -> 64 bytes .../entities/entities/br_laser/shared.lua | 2 +- .../beatrun/gamemode/sh/SafetyRoll.lua | 2 +- beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- version.txt | 2 +- 8 files changed, 4 insertions(+), 4 deletions(-) diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx80.vtx b/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx80.vtx index 24a95299bcf1f7c319fdfa9892aa5e0243071b5d..9c9c3bba5986150b99ee417c0d93e1dcf57664b8 100644 GIT binary patch literal 72 rcmZQ)U|^5{VgUwD24)~F5_8}PBan6gVi2tYr8$sjAd`UyL?8hGjd}vK literal 72 rcmZQ)U|^5{VgUwD24*1r?nu{bMj-6~#2{J)N^>C5KqdnZh(H1W&@lt& diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx90.vtx b/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx90.vtx index 2838eeb011879bde21dcc4d26125ef93893e5395..5ddf97af6795f52b140e0b27437c65f4b4233e65 100644 GIT binary patch literal 72 rcmZQ)U|^5{Vp9fA24)~F5_8}PBan6gVi2tYr8$sjAd`UyL?8hGmbwDj literal 72 rcmZQ)U|^5{Vp9fA24*1r?nu{bMj-6~#2{J)N^>C5KqdnZh(H1W*>MC6 diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.mdl b/beatrun/gamemodes/beatrun/content/models/new_climbanim.mdl index cf4179848a766bbee137a9cc0c30058ec1436edf..a1903fcd90a1e79a5b375ccf70abd28f2b973848 100644 GIT binary patch delta 12487 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 diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.vvd b/beatrun/gamemodes/beatrun/content/models/new_climbanim.vvd index 725857aec27c43383038bbb0c9b945ea702b3f66..70efffd973ff9714601eb3b657604888de57c8c7 100644 GIT binary patch literal 64 ccmeZt2@YdnU|!kR}E=02RS70RHC%BLDyZ diff --git a/beatrun/gamemodes/beatrun/entities/entities/br_laser/shared.lua b/beatrun/gamemodes/beatrun/entities/entities/br_laser/shared.lua index aaf6f40..58a71c9 100644 --- a/beatrun/gamemodes/beatrun/entities/entities/br_laser/shared.lua +++ b/beatrun/gamemodes/beatrun/entities/entities/br_laser/shared.lua @@ -64,7 +64,7 @@ function ENT:BRCollisionFunc(ent) local dmginfo = DamageInfo() dmginfo:SetAttacker(self) - dmginfo:SetDamage(1000) + dmginfo:SetDamage(math.huge) dmginfo:SetDamageType(DMG_DISSOLVE) ent:TakeDamageInfo(dmginfo) ent:EmitSound("bigspark" .. math.random(1, 2) .. ".wav") diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/SafetyRoll.lua b/beatrun/gamemodes/beatrun/gamemode/sh/SafetyRoll.lua index 5e19aca..d2a34eb 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/SafetyRoll.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/SafetyRoll.lua @@ -250,7 +250,7 @@ if SERVER then if speed < 800 and CurTime() < ply:GetSafetyRollKeyTime() and not ply:GetCrouchJump() and not ply:Crouching() then return 0 else - return 1000 + return math.huge end end diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index 144b716..0348deb 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,4 @@ -VERSION_GLOBAL = "1.0.17" +VERSION_GLOBAL = "1.0.18" VERSION_LATEST = "" VERSION_CHECKED = false diff --git a/version.txt b/version.txt index e92964f..c678b02 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.17 \ No newline at end of file +1.0.18 \ No newline at end of file From d7d9a16250ac016b4f58d144e4027befd2c35dc1 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Fri, 8 Nov 2024 21:35:11 +0500 Subject: [PATCH 24/34] testing random arc9 weapons --- .../beatrun/gamemode/sh/!Helpers.lua | 29 ++++++++++++++++++- .../beatrun/gamemode/sh/DataTheft.lua | 15 +++++++--- .../beatrun/gamemode/sh/Deathmatch.lua | 29 +++++++------------ 3 files changed, 50 insertions(+), 23 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/!Helpers.lua b/beatrun/gamemodes/beatrun/gamemode/sh/!Helpers.lua index 1da2a05..51a133b 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/!Helpers.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/!Helpers.lua @@ -1,6 +1,9 @@ local vmatrixmeta = FindMetaTable("VMatrix") local playermeta = FindMetaTable("Player") +CreateConVar("Beatrun_RandomMWLoadouts", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}) +CreateConVar("Beatrun_RandomARC9Loadouts", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}) + BEATRUN_GAMEMODES_LOADOUTS = { {"weapon_357", "weapon_ar2"} } @@ -86,4 +89,28 @@ function playermeta:notUsingRH(wep) else return false end -end \ No newline at end of file +end + +function getRandomMGBaseSWEP() + local allWep = weapons.GetList() + local wepIndex = math.random(#allWep) + local wep = allWep[wepIndex] + + if wep.Base == "mg_base" and not wep.AdminOnly then + return wep + else + return getRandomMGBaseSWEP() + end +end + +function getRandomARC9SWEP() + local allWep = weapons.GetList() + local wepIndex = math.random(#allWep) + local wep = allWep[wepIndex] + + if wep.Base == "arc9_cod2019_base" and not wep.AdminOnly then + return wep + else + return getRandomARC9SWEP() + end +end diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/DataTheft.lua b/beatrun/gamemodes/beatrun/gamemode/sh/DataTheft.lua index 717bb0f..a4fe1d3 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/DataTheft.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/DataTheft.lua @@ -22,17 +22,24 @@ if SERVER then v:Spawn() end - if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then + if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() and not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() then for i = 0, 1 do - local randomSWEP = getRandomMGBaseWeapon() - local w = v:Give(randomSWEP.ClassName) + local swep = getRandomMGBaseSWEP() + local w = v:Give(swep.ClassName) timer.Simple(1, function() if w:GetPrimaryAmmoType() ~= -1 then v:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end if w:GetSecondaryAmmoType() ~= -1 then v:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end end) end - else + elseif GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then + for i = 0, 1 do + -- We don't need ammo because ARC9 got the infinite ammo option! + + local swep = getRandomARC9SWEP() + v:Give(swep.ClassName) + end + elseif not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then for _, b in ipairs(BEATRUN_GAMEMODES_LOADOUTS[math.random(#BEATRUN_GAMEMODES_LOADOUTS)]) do local w = v:Give(b) diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/Deathmatch.lua b/beatrun/gamemodes/beatrun/gamemode/sh/Deathmatch.lua index a2a9401..700326a 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/Deathmatch.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/Deathmatch.lua @@ -2,20 +2,6 @@ if SERVER then util.AddNetworkString("Deathmatch_Start") util.AddNetworkString("Deathmatch_Sync") - CreateConVar("Beatrun_RandomMWLoadouts", 0, {FCVAR_REPLICATED, FCVAR_ARCHIVE}) - - function getRandomMGBaseWeapon() - local allWep = weapons.GetList() - local wepIndex = math.random(#allWep) - local wep = allWep[wepIndex] - - if wep.Base == "mg_base" and not wep.AdminOnly then - return wep - else - return getRandomMGBaseWeapon() - end - end - function Beatrun_StartDeathmatch() if GetGlobalBool("GM_DEATHMATCH") then return end if Course_Name ~= "" then return end @@ -31,17 +17,24 @@ if SERVER then v:Spawn() end - if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then + if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() and not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() then for i = 0, 1 do - local randomSWEP = getRandomMGBaseWeapon() - local w = v:Give(randomSWEP.ClassName) + local swep = getRandomMGBaseSWEP() + local w = v:Give(swep.ClassName) timer.Simple(1, function() if w:GetPrimaryAmmoType() ~= -1 then v:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end if w:GetSecondaryAmmoType() ~= -1 then v:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end end) end - else + elseif GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then + for i = 0, 1 do + -- We don't need ammo because ARC9 got the infinite ammo option! + + local swep = getRandomARC9SWEP() + v:Give(swep.ClassName) + end + elseif not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then for _, b in ipairs(BEATRUN_GAMEMODES_LOADOUTS[math.random(#BEATRUN_GAMEMODES_LOADOUTS)]) do local w = v:Give(b) From 45c2c77bc367a3889f1780c22216a0d15f5fc8cd Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Fri, 8 Nov 2024 21:57:50 +0500 Subject: [PATCH 25/34] proper arc9 random weapons --- .../gamemode/player_class/player_beatrun.lua | 21 +--------- .../beatrun/gamemode/sh/!Helpers.lua | 41 +++++++++++++++++-- .../beatrun/gamemode/sh/DataTheft.lua | 28 +------------ .../beatrun/gamemode/sh/Deathmatch.lua | 28 +------------ beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- version.txt | 2 +- 6 files changed, 42 insertions(+), 80 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/player_class/player_beatrun.lua b/beatrun/gamemodes/beatrun/gamemode/player_class/player_beatrun.lua index 8ab55f9..1f38caa 100644 --- a/beatrun/gamemodes/beatrun/gamemode/player_class/player_beatrun.lua +++ b/beatrun/gamemodes/beatrun/gamemode/player_class/player_beatrun.lua @@ -124,26 +124,7 @@ end function PLAYER:Loadout() if GetGlobalBool("GM_DATATHEFT") or GetGlobalBool("GM_DEATHMATCH") then - if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then - for i = 0, 1 do - local randomSWEP = getRandomMGBaseWeapon() - local w = self.Player:Give(randomSWEP.ClassName) - - timer.Simple(1, function() - if w:GetPrimaryAmmoType() ~= -1 then self.Player:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end - if w:GetSecondaryAmmoType() ~= -1 then self.Player:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end - end) - end - else - for _, v in ipairs(BEATRUN_GAMEMODES_LOADOUTS[math.random(#BEATRUN_GAMEMODES_LOADOUTS)]) do - local w = self.Player:Give(v) - - timer.Simple(1, function() - if w:GetPrimaryAmmoType() ~= -1 then self.Player:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end - if w:GetSecondaryAmmoType() ~= -1 then self.Player:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end - end) - end - end + Beatrun_GiveGMWeapon(self.Player) else self.Player:RemoveAllAmmo() end diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/!Helpers.lua b/beatrun/gamemodes/beatrun/gamemode/sh/!Helpers.lua index 51a133b..a46d66f 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/!Helpers.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/!Helpers.lua @@ -91,7 +91,12 @@ function playermeta:notUsingRH(wep) end end -function getRandomMGBaseSWEP() +function Beatrun_GiveAmmo(weapon, ply) + if weapon:GetPrimaryAmmoType() ~= -1 then ply:GiveAmmo(10000, weapon:GetPrimaryAmmoType(), true) end + if weapon:GetSecondaryAmmoType() ~= -1 then ply:GiveAmmo(5, weapon:GetSecondaryAmmoType(), true) end +end + +function Beatrun_getRandomMWBaseSWEP() local allWep = weapons.GetList() local wepIndex = math.random(#allWep) local wep = allWep[wepIndex] @@ -99,11 +104,11 @@ function getRandomMGBaseSWEP() if wep.Base == "mg_base" and not wep.AdminOnly then return wep else - return getRandomMGBaseSWEP() + return Beatrun_getRandomMWBaseSWEP() end end -function getRandomARC9SWEP() +function Beatrun_getRandomARC9SWEP() local allWep = weapons.GetList() local wepIndex = math.random(#allWep) local wep = allWep[wepIndex] @@ -111,6 +116,34 @@ function getRandomARC9SWEP() if wep.Base == "arc9_cod2019_base" and not wep.AdminOnly then return wep else - return getRandomARC9SWEP() + return Beatrun_getRandomARC9SWEP() + end +end + +function Beatrun_GiveGMWeapon(ply) + if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() and not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() then + for i = 0, 1 do + local swep = Beatrun_getRandomMWBaseSWEP() + local w = ply:Give(swep.ClassName) + + timer.Simple(1, function() + Beatrun_GiveAmmo(w, ply) + end) + end + elseif GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then + for i = 0, 1 do + -- We don't need ammo because ARC9 got the infinite ammo option! + + local swep = Beatrun_getRandomARC9SWEP() + ply:Give(swep.ClassName) + end + elseif not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then + for _, b in ipairs(BEATRUN_GAMEMODES_LOADOUTS[math.random(#BEATRUN_GAMEMODES_LOADOUTS)]) do + local w = v:Give(b) + + timer.Simple(1, function() + Beatrun_GiveAmmo(w, ply) + end) + end end end diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/DataTheft.lua b/beatrun/gamemodes/beatrun/gamemode/sh/DataTheft.lua index a4fe1d3..1ab2fb5 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/DataTheft.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/DataTheft.lua @@ -22,33 +22,7 @@ if SERVER then v:Spawn() end - if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() and not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() then - for i = 0, 1 do - local swep = getRandomMGBaseSWEP() - local w = v:Give(swep.ClassName) - - timer.Simple(1, function() - if w:GetPrimaryAmmoType() ~= -1 then v:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end - if w:GetSecondaryAmmoType() ~= -1 then v:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end - end) - end - elseif GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then - for i = 0, 1 do - -- We don't need ammo because ARC9 got the infinite ammo option! - - local swep = getRandomARC9SWEP() - v:Give(swep.ClassName) - end - elseif not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then - for _, b in ipairs(BEATRUN_GAMEMODES_LOADOUTS[math.random(#BEATRUN_GAMEMODES_LOADOUTS)]) do - local w = v:Give(b) - - timer.Simple(1, function() - if w:GetPrimaryAmmoType() ~= -1 then v:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end - if w:GetSecondaryAmmoType() ~= -1 then v:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end - end) - end - end + Beatrun_GiveGMWeapon(v) end end diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/Deathmatch.lua b/beatrun/gamemodes/beatrun/gamemode/sh/Deathmatch.lua index 700326a..881ae3d 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/Deathmatch.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/Deathmatch.lua @@ -17,33 +17,7 @@ if SERVER then v:Spawn() end - if GetConVar("Beatrun_RandomMWLoadouts"):GetBool() and not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() then - for i = 0, 1 do - local swep = getRandomMGBaseSWEP() - local w = v:Give(swep.ClassName) - - timer.Simple(1, function() - if w:GetPrimaryAmmoType() ~= -1 then v:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end - if w:GetSecondaryAmmoType() ~= -1 then v:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end - end) - end - elseif GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then - for i = 0, 1 do - -- We don't need ammo because ARC9 got the infinite ammo option! - - local swep = getRandomARC9SWEP() - v:Give(swep.ClassName) - end - elseif not GetConVar("Beatrun_RandomARC9Loadouts"):GetBool() and not GetConVar("Beatrun_RandomMWLoadouts"):GetBool() then - for _, b in ipairs(BEATRUN_GAMEMODES_LOADOUTS[math.random(#BEATRUN_GAMEMODES_LOADOUTS)]) do - local w = v:Give(b) - - timer.Simple(1, function() - if w:GetPrimaryAmmoType() ~= -1 then v:GiveAmmo(10000, w:GetPrimaryAmmoType(), true) end - if w:GetSecondaryAmmoType() ~= -1 then v:GiveAmmo(5, w:GetSecondaryAmmoType(), true) end - end) - end - end + Beatrun_GiveGMWeapon(v) end end diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index 0348deb..6d89af4 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,4 @@ -VERSION_GLOBAL = "1.0.18" +VERSION_GLOBAL = "1.0.20" VERSION_LATEST = "" VERSION_CHECKED = false diff --git a/version.txt b/version.txt index c678b02..450f88e 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.18 \ No newline at end of file +1.0.20 \ No newline at end of file From 669c266cfd27aa653e7a36fe76cc9222f1b82401 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sun, 10 Nov 2024 16:59:25 +0500 Subject: [PATCH 26/34] Hopefully fix roll-to-slide bug https://github.com/losttrackpad/beatrun-forked/commit/dff602a65101b448a0141d16316c54b2244d79a9 --- beatrun/gamemodes/beatrun/gamemode/sh/Sliding.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/Sliding.lua b/beatrun/gamemodes/beatrun/gamemode/sh/Sliding.lua index 03e8bf2..4959f53 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/Sliding.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/Sliding.lua @@ -246,6 +246,7 @@ end hook.Add("SetupMove", "qslide", function(ply, mv, cmd) if not ply:Alive() then return end + if ply:GetSafetyRollKeyTime() > CurTime() then return end if not ply.OldDuckSpeed then ply.OldDuckSpeed = ply:GetDuckSpeed() From f794f7e10b51f53bcea946c8240e9651ca14b6ff Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sun, 10 Nov 2024 17:00:46 +0500 Subject: [PATCH 27/34] v1.0.21 --- beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index 6d89af4..00badd4 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,4 @@ -VERSION_GLOBAL = "1.0.20" +VERSION_GLOBAL = "1.0.21" VERSION_LATEST = "" VERSION_CHECKED = false diff --git a/version.txt b/version.txt index 450f88e..ace256e 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.20 \ No newline at end of file +1.0.21 \ No newline at end of file From 48422f02629222501d8d01977c221892d294dd05 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sun, 10 Nov 2024 19:31:07 +0500 Subject: [PATCH 28/34] add checkbox for arc9 loadouts --- .../content/resource/localization/en/beatrun.properties | 2 ++ .../content/resource/localization/ru/beatrun.properties | 2 ++ beatrun/gamemodes/beatrun/gamemode/cl/ToolMenuSettings.lua | 3 +++ 3 files changed, 7 insertions(+) diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties index 6f11804..dfcb415 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties @@ -269,3 +269,5 @@ beatrun.infection.end=The game has ended!\nSurvivors: %s\nRestarting in 15s # Server ConVars beatrun.randommwloadouts=Random MW Base Loadouts beatrun.randommwloadoutsdesc=Toggles random MW Base loadouts in Deathmatch and DataTheft +beatrun.randoarc9loadouts=Random ARC9 MW Loadouts +beatrun.randoarc9loadoutsdesc=Toggles random ARC9 MW 2019 loadouts in Deathmatch and DataTheft diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties index 6ffac5f..934424d 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties @@ -266,3 +266,5 @@ beatrun.infection.end=Игра окончена!\nВыжившие: %s\nПере # Server ConVars beatrun.randommwloadouts=Случайные наборы оружия MW Base beatrun.randommwloadoutsdesc=Переключает случайные наборы оружия MW Base в Deathmatch и DataTheft +beatrun.randoarc9loadouts=Случайные наборы оружия ARC9 MW +beatrun.randoarc9loadoutsdesc=Переключает случайные наборы оружия ARC9 MW 2019 в Deathmatch и DataTheft diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/ToolMenuSettings.lua b/beatrun/gamemodes/beatrun/gamemode/cl/ToolMenuSettings.lua index 3a77c7a..16ae891 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/ToolMenuSettings.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/ToolMenuSettings.lua @@ -350,6 +350,9 @@ hook.Add("PopulateToolMenu", "Beatrun_ToolMenu", function() panel:CheckBox("#beatrun.randommwloadouts", "Beatrun_RandomMWLoadouts") panel:ControlHelp("#beatrun.randommwloadoutsdesc") + panel:CheckBox("#beatrun.randoarc9loadouts", "Beatrun_RandomARC9Loadouts") + panel:ControlHelp("#beatrun.randoarc9loadoutsdesc") + local DatatheftButton = vgui.Create("DButton", panel) DatatheftButton:SetText("#beatrun.toolsmenu.gamemodes.datatheft") DatatheftButton:SetSize(0, 20) From 4467097586bb235a3540d23c9c3cf5d9bf0086e5 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sat, 23 Nov 2024 16:10:16 +0500 Subject: [PATCH 29/34] v1.0.22 fix courses on maps with spaces in the name not loading (i hate edge runner) --- .../content/resource/localization/en/beatrun.properties | 2 +- .../content/resource/localization/ru/beatrun.properties | 2 +- .../content/resource/localization/uk/beatrun.properties | 2 +- beatrun/gamemodes/beatrun/gamemode/cl/Menu_Course.lua | 4 ++-- beatrun/gamemodes/beatrun/gamemode/sh/BuildMode.lua | 6 +++--- beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- version.txt | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties index dfcb415..e9b9b81 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/en/beatrun.properties @@ -50,7 +50,7 @@ beatrun.hud.lvl=Lvl: %s beatrun.hud.infector=Infector # Menu_Course -beatrun.coursemenu.trials=Courses - %s +beatrun.coursemenu.trials=Courses - Folder: %s beatrun.coursemenu.buildmode=Toggle Build Mode beatrun.coursemenu.freeplay=Return to Freeplay diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties index 934424d..fe90302 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/ru/beatrun.properties @@ -50,7 +50,7 @@ beatrun.hud.lvl=Лвл: %s beatrun.hud.infector=Заражённый # Menu_Course -beatrun.coursemenu.trials=Курсы - %s +beatrun.coursemenu.trials=Курсы - Папка: %s beatrun.coursemenu.buildmode=Режим строительства beatrun.coursemenu.freeplay=Свободная игра diff --git a/beatrun/gamemodes/beatrun/content/resource/localization/uk/beatrun.properties b/beatrun/gamemodes/beatrun/content/resource/localization/uk/beatrun.properties index c8e3b7b..e616b40 100644 --- a/beatrun/gamemodes/beatrun/content/resource/localization/uk/beatrun.properties +++ b/beatrun/gamemodes/beatrun/content/resource/localization/uk/beatrun.properties @@ -50,7 +50,7 @@ beatrun.hud.lvl=Лвл: %s beatrun.hud.infector=Заражений # Menu_Course -beatrun.coursemenu.trials=Курси - %s +beatrun.coursemenu.trials=Курси - Папка: %s beatrun.coursemenu.buildmode=Режим будівництва beatrun.coursemenu.freeplay=Вільна гра diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/Menu_Course.lua b/beatrun/gamemodes/beatrun/gamemode/cl/Menu_Course.lua index 9b6f455..9080937 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/Menu_Course.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/Menu_Course.lua @@ -25,7 +25,7 @@ local function buildmodebutton() LocalPlayer():ConCommand("buildmode") end -AEUI:Text(coursepanel, language.GetPhrase("beatrun.coursemenu.trials"):format(game.GetMap()), "AEUIVeryLarge", 20, 30) +AEUI:Text(coursepanel, language.GetPhrase("beatrun.coursemenu.trials"):format(string.Replace(game.GetMap(), " ", "-")), "AEUIVeryLarge", 20, 30) local buildmodebutton = AEUI:AddButton(coursepanel, "#beatrun.coursemenu.buildmode", buildmodebutton, "AEUILarge", coursepanel.w - 400, coursepanel.h - 50) buildmodebutton.greyed = sacheck @@ -55,7 +55,7 @@ function OpenCourseMenu() AEUI:AddPanel(coursepanel) AEUI:AddPanel(courselist) - local dir = "beatrun/courses/" .. game.GetMap() .. "/" + local dir = "beatrun/courses/" .. string.Replace(game.GetMap(), " ", "-") .. "/" local dirsearch = dir .. "*.txt" local files = file.Find(dirsearch, "DATA", "datedesc") diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/BuildMode.lua b/beatrun/gamemodes/beatrun/gamemode/sh/BuildMode.lua index 9591127..5a5c7ea 100644 --- a/beatrun/gamemodes/beatrun/gamemode/sh/BuildMode.lua +++ b/beatrun/gamemodes/beatrun/gamemode/sh/BuildMode.lua @@ -576,7 +576,7 @@ if SERVER then end function Beatrun_ReadCourseLocal(id) - local dir = "beatrun/courses/" .. game.GetMap() .. "/" + local dir = "beatrun/courses/" .. string.Replace(game.GetMap(), " ", "-") .. "/" local save = file.Read(dir .. id .. ".txt", "DATA") if not save then @@ -943,7 +943,7 @@ if CLIENT then local save = CourseData(name) local jsonsave = util.TableToJSON(save) local id = util.CRC(jsonsave) - local dir = "beatrun/courses/" .. game.GetMap() .. "/" + local dir = "beatrun/courses/" .. string.Replace(game.GetMap(), " ", "-") .. "/" if compress == nil then compress = true end @@ -1011,7 +1011,7 @@ if CLIENT then --[[ concommand.Add("Beatrun_PrintCourse", function(ply, cmd, args, argstr) - local dir = "beatrun/courses/" .. game.GetMap() .. "/" + local dir = "beatrun/courses/" .. string.Replace(game.GetMap(), " ", "-") .. "/" local save = file.Read(dir .. args[1] .. ".txt", "DATA") if not save then diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index 00badd4..04e9c51 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -1,4 +1,4 @@ -VERSION_GLOBAL = "1.0.21" +VERSION_GLOBAL = "1.0.22" VERSION_LATEST = "" VERSION_CHECKED = false diff --git a/version.txt b/version.txt index ace256e..2fa3901 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.21 \ No newline at end of file +1.0.22 \ No newline at end of file From 6472e0af42e705fd88214686300e16fdc8fe571f Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sat, 30 Nov 2024 21:21:50 +0500 Subject: [PATCH 30/34] rewrite READMEs again (yipee) --- README.md | 175 ++++++++++-------- README.ru.md | 173 +++++++++-------- .../beatrun/gamemode/cl/AddonWarning.lua | 3 +- 3 files changed, 192 insertions(+), 159 deletions(-) diff --git a/README.md b/README.md index db8cc7c..38cb712 100644 --- a/README.md +++ b/README.md @@ -1,110 +1,125 @@ -# Beatrun | Community edition +# Beatrun | Community Edition -[![forthebadge](https://forthebadge.com/images/featured/featured-powered-by-electricity.svg)](https://forthebadge.com) -[![forthebadge](https://forthebadge.com/images/badges/powered-by-black-magic.svg)](https://forthebadge.com) +[![Powered by Electricity](https://forthebadge.com/images/featured/featured-powered-by-electricity.svg)](https://forthebadge.com) +[![Powered by Black Magic](https://forthebadge.com/images/badges/powered-by-black-magic.svg)](https://forthebadge.com) -[Click to join our Discord!](https://discord.gg/93Psubbgsg) +[**Join our Discord Community!**](https://discord.gg/93Psubbgsg) -* [Русский](./README.ru.md) +> *[Русский | Russian](./README.ru.md)* -**PLEASE READ EVERYTHING BEFORE ASKING QUESTIONS!** +--- -Infamous parkour addon for Garry's Mod. Fully open sourced and maintained by the community (me 😞). +## 🚨 Important Notice -> [!IMPORTANT] -> This repository doesn't contain any malicious modules. However, we have some modules for additional functionality: -> -> * Discord Rich Presence. -> * Steam Presence. -> -> **They are completely optional and can be removed at any time.**\ -> You can find all modules **[here](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**.\ -> Check **[Credits](#credits)** section for their source code. +### Please read this README thoroughly before asking questions -## Automatic Installation (Recommended | Windows 10/11) +### The **only official source** for this fork is this GitHub repository. Workshop versions are outdated and unsupported + +--- + +## About + +Beatrun is an **infamous parkour addon for Garry's Mod**, now fully open-sourced and maintained by the community. +It includes various improvements, new features, and enhanced functionality. > [!WARNING] -> Windows 7 and old versions of Windows 10 are not supported.\ -> Please update. +> **This repository contains no malicious modules.** However, optional modules such as Discord Rich Presence and Steam Presence are available for additional features. +> These are **completely optional** and can be removed at any time. +> +> - Modules are located **[here](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**. +> - Refer to the **[Credits](#credits)** section for their source code. + +--- + +## Installation + +### 🔧 Automatic Installation (Recommended for Windows 10/11) -Run the command below in Powershell (run as admin if your Steam or game located in a C: drive). > [!NOTE] -> Win + R > `powershell` > *Enter* +> Windows 7 and old versions of Windows 10 are not supported. Please update your OS. + +Run the following command in PowerShell (Run as Administrator if Steam and/or the game is installed on the system (C:) drive): ```powershell irm https://beatrun.jonnybro.ru/install | iex ``` -* Start the game. -* Select the `Beatrun` gamemode in right lower corner. - -## Manual Installation - -1. **[Download this repository](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip)**. -1. **Delete the `beatrun` folder in *your_game_folder/garrysmod/addons* if you have one.** -1. Extract the `beatrun-main/beatrun` folder to *your_game_folder/garrysmod/addons*. -1. If you want to have Discord and Steam Presence: - * Extract the `beatrun-main/lua` folder to *your_game_folder/garrysmod*. 1. Start the game. -1. Select the `Beatrun` gamemode in right lower corner. +2. Select the `Beatrun` gamemode in the bottom-right corner. + +### 🛠️ Manual Installation + +1. **[Download this repository](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip).** +2. Delete the `beatrun` folder in `your_game_folder/garrysmod/addons`, if it exists. +3. Extract `beatrun-main/beatrun` into `your_game_folder/garrysmod/addons`. +4. (Optional) For Discord and Steam Presence, extract `beatrun-main/lua` to `your_game_folder/garrysmod`. +5. Start the game. +6. Select the `Beatrun` gamemode in the bottom-right corner. + +--- + +## Features and Updates + +### New Features + +- **Custom Courses Database** hosted by Jonny_Bro: **[Access Here](https://courses.jonnybro.ru)** (free and **[open source](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-docker)**). +- **New Gamemode:** Deathmatch. +- "Proper" Kick Glitch similar to the **[original game](https://www.youtube.com/watch?v=zK5y3NBUStc)**. +- In-game configuration menu in the Tools menu under **Beatrun**. All settings can be modified here. +- Localization support in **7 languages**. +- Enhanced Build Mode: spawn props from the Spawn Menu, and they will save in your course. +- Various new abilities: + - **Roll after ziplines:** Press `+duck` (CTRL by default). + - **Dismount ladders:** Press `+duck` (CTRL by default). + - **Remove ziplines created with Zipline Gun:** Press `+attack2` (RMB by default). + - **Next checkpoint arrow** for easier navigation. +- New server and client configuration variables: + - Server: + - `Beatrun_AllowOverdriveInMultiplayer`: Allows Overdrive in multiplayer. + - `Beatrun_AllowPropSpawn`: Lets players spawn props and weapons without admin rights. + - `Beatrun_HealthRegen`: Toggles health regeneration. + - Client: + - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`: Customize HUD colors. + - `Beatrun_DisableGrapple`: Toggle the grapple ability. + - `Beatrun_OldKickGlitch`: Switch between old and new Kick Glitch. + - `Beatrun_QuickturnHandsOnly`: Restrict QuickTurn to the Runner Hands weapon. +- Other improvements: + - Small camera punch effect when diving. + - SteamID no longer displayed on screen. + +### Fixes + +- Fixed playermodels showing as `ERROR` in first person. +- Improved leaderboard sorting in gamemodes. +- Fixed crashes and issues with Data Theft gamemode. +- Enabled jumping while walking. +- Grapples now follow moving entities and are visible to other players. + +--- ## Animations -Animations installer was removed, now you can switch between animations in Tools menu in Beatrun category. +The animations installer has been removed. You can now switch animations directly in the **Tools menu** under the Beatrun category. -## What's new +--- -> [!IMPORTANT] -> There are many undocumented changes and fixes in this version, you better look at the commits for more specific changes. +## Known Issues -* Jonny_Bro is hosting **[custom courses database](https://courses.jonnybro.ru)**, which is also **free** to use and **[open sourced](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-docker)**! -* New gamemode - **Deathmatch** (it's way more fun than Data Theft I promise). -* "Proper" Kick Glitch just like in **[original game](https://www.youtube.com/watch?v=zK5y3NBUStc)**. -* In-game configuration menu - you can find it in the Tools menu, in the **Beatrun** category.\ - **All** of the Beatrun settings can be changed in the configuration menu! -* Discord and Steam Presence. -* Localization support.\ - Available in 7 languages! -* Build Mode Tweaks.\ - You can now spawn any prop from Spawn Menu and they will save in your course. -* Ability to roll after ziplines with CTRL (thanks c4nk <3). -* Ability to get off of ladders - Press CTRL. -* Ability to remove ziplines that created with *Zipline Gun* - Press RMB. -* Arrow that shows the next checkpoint. -* Server ConVar to allow Overdrive usage in multiplayer - `Beatrun_AllowOverdriveInMultiplayer`. -* Server ConVar to allow players to spawn props and weapons without admin rights - `Beatrun_AllowPropSpawn`. -* Server ConVar to toggle the health regeneration - `Beatrun_HealthRegen`. -* Client ConVars to change HUD colors - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`. -* Client ConVar to toggle the grapple ability - `Beatrun_DisableGrapple`. -* Client ConVar to toggle between old and new Kick Glitch - `Beatrun_OldKickGlitch`. -* Client ConVar to allow QuickTurn with any weapon or only with *Runner Hands* - `Beatrun_QuickturnHandsOnly`. -* Small camera punch when diving. -* SteamID is no longer shown on screen. +- See the full list of issues **[here](https://github.com/JonnyBro/beatrun/issues)**. -## Fixes +--- -* Some playermodels show up as ERROR in first person. -* Leaderboard sorting in gamemodes. -* Grapple usage in courses and gamemodes. -* Crash in Data Theft when touching Data Bank. -* PvP damage not going through in gamemodes other than Data Theft. -* Allowed jumping while walking. -* You can now roll under things using safety roll. -* Now grapple moves with the entity it was attached to and other players can see the rope. +## Related Projects -## Known issues +- **[Beatrun Reanimated Project](https://github.com/JonnyBro/beatrun-anims)** -* [Issues](https://github.com/JonnyBro/beatrun/issues). - -## Related projects - -* [Beatrun Reanimated Project](https://github.com/JonnyBro/beatrun-anims). +--- ## Credits -* [All contributors](https://github.com/JonnyBro/beatrun/graphs/contributors) - <3. -* [EarthyKiller127/datae](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - Original creator of Beatrun. -* [relaxtakenotes](https://github.com/relaxtakenotes) - Made all of this possible. -* [MTB](https://www.youtube.com/@MTB396) - Beatrun Reanimated Project. -* [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) - Discord Rich Presence. -* [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) - Steam Presence (TFA Base creator!). +- **[All contributors](https://github.com/JonnyBro/beatrun/graphs/contributors)** ❤️ +- [EarthyKiller127/datae](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - Original creator of Beatrun. +- [relaxtakenotes](https://github.com/relaxtakenotes) - Made this project possible. +- [MTB](https://www.youtube.com/@MTB396) - Beatrun Reanimated Project. +- [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) - Discord Rich Presence. +- [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) - Steam Presence (TFA Base creator). diff --git a/README.ru.md b/README.ru.md index 118c69d..84358f8 100644 --- a/README.ru.md +++ b/README.ru.md @@ -1,110 +1,127 @@ -# Beatrun | Community edition +# Beatrun | Community Edition -[![forthebadge](https://forthebadge.com/images/featured/featured-powered-by-electricity.svg)](https://forthebadge.com) -[![forthebadge](https://forthebadge.com/images/badges/powered-by-black-magic.svg)](https://forthebadge.com) +[![Powered by Electricity](https://forthebadge.com/images/featured/featured-powered-by-electricity.svg)](https://forthebadge.com) +[![Powered by Black Magic](https://forthebadge.com/images/badges/powered-by-black-magic.svg)](https://forthebadge.com) -[Нажмите чтобы присоедениться к нашему Discord серверу!](https://discord.gg/93Psubbgsg) +[**Присоединяйтесь к нашему сообществу в Discord!**](https://discord.gg/93Psubbgsg) -* [English](./README.md) +> *[English | Английский](./README.md)* -**ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ВЕСЬ ДОКУМЕНТ ПЕРЕД ТЕМ КАК ЗАДАВАТЬ ВОПРОСЫ!** +--- -Печально известный паркур аддон для Garry's Mod. Теперь, с полностью открытым исходным кодом и поддерживаемый сообществом (мной 😞). +## 🚨 Важное уведомление -> [!IMPORTANT] -> Данный репозиторий не содержит вредоносных модулей. Однако, мы имеем несколько модулей для дополнительного функционала: -> -> * Модуль для показа статуса в Discord. -> * Модуль для показа статуса в Steam. -> -> **Они не обязательны и могут быть удалены в любой момент.**\ -> Список всех модуйлей находится **[здесь](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**.\ -> Проверьте **[Благодарности](#благодарности)** чтобы найти их исходный код. +### Пожалуйста, прочитайте этот README полностью перед тем, как задавать вопросы. -## Автоматическая установка (Рекомендуется | Windows 10/11) +### **Единственный официальный источник** этого форка — этот репозиторий на GitHub. Версии в Workshop устарели и не поддерживаются. + +--- + +## О проекте + +Beatrun — это **знаменитый паркур-аддон для Garry's Mod**, теперь с полностью открытым исходным кодом и поддерживаемый сообществом. +Включает различные улучшения, новые функции и расширенную функциональность. > [!WARNING] -> Windows 7 и старые сборки Windows 10 не поддерживаются. -> Обновитесь, пожалуйста. +> **В этом репозитории нет вредоносных модулей.** Однако доступны опциональные модули, такие как показ статусов в Discord и Steam, для дополнительного функционала. +> Эти модули **абсолютно опциональны** и могут быть удалены в любое время. +> +> - Модули находятся **[здесь](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**. +> - Ознакомьтесь с разделом **[Благодарности](#credits)** для их исходного кода. + +--- + +## Установка + +### 🔧 Автоматическая установка (Рекомендуется для Windows 10/11) -Запустите команду ниже в Powershell (запустите от администратора если Steam или игра расположены на диске C:). > [!NOTE] -> Win + R > `powershell` > *Enter* +> Windows 7 и старые версии Windows 10 не поддерживаются. Обновите свою ОС. + +Запустите данную команду в PowerShell (Запустите от админа если Steam и/или игра установлены на системный (C:) диск): ```powershell irm https://beatrun.jonnybro.ru/install | iex ``` -* Запустить игру. -* Выбрать режим `Beatrun` в правом нижнем углу. +1. Запустите игру. +2. Выберите режим `Beatrun` в правом нижнем углу. -## Ручная установка +### 🛠️ Ручная установка 1. **[Скачать репозиторий](https://github.com/JonnyBro/beatrun/archive/refs/heads/master.zip)**. -1. **Удалить папку `beatrun` в *путь_к_игре/garrysmod/addons*, если у вас такова имеется.** -1. Извлечь папку `beatrun-main/beatrun` в *путь_к_игре/garrysmod/addons*. -1. Если вы хотите показ статуса в Discord и Steam: - * Извлечь папку `beatrun-main/lua` в *путь_к_игре/garrysmod*. -1. Запустить игру. -1. Выбрать режим `Beatrun` в правом нижнем углу. +2. Удалите папку `beatrun` в `путь_к_игре/garrysmod/addons`, если она существует. +3. Извлеките `beatrun-main/beatrun` в `путь_к_игре/garrysmod/addons`. +4. *(Опционально)* Для показа статусов в Discord и Steam извлеките `beatrun-main/lua` в `путь_к_игре/garrysmod`. +5. Запустите игру. +6. Выберите режим `Beatrun` в правом нижнем углу. + +--- + +## Особенности и обновления + +### Новые возможности + +- **База курсов** от Jonny_Bro: **[Доступна здесь](https://courses.jonnybro.ru)** (бесплатна и имеет **[открытый исходный код](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-docker)**). +- **Новый режим:** Deathmatch. +- Полностью исправленный Kick Glitch, как в **[оригинальной игре](https://www.youtube.com/watch?v=zK5y3NBUStc)**. +- Меню настроек в игре в категории **Beatrun** в меню Инструментов. + Здесь можно настроить **все** параметры Beatrun. +- Поддержка локализации на **7 языках**. +- Улучшенный режим строительства курсов: + Пропы из меню спавна сохраняются в вашем курсе. +- Новые способности: + - **Перекат после зиплайнов:** Нажмите `CTRL`. + - **Слезание с лестниц:** Нажмите `CTRL`. + - **Удаление зиплайнов:** Нажмите ПКМ (`RMB`). + - **Указатель следующего чекпоинта** для облегчения навигации. +- Новые серверные и клиентские переменные: + - Серверные: + - `Beatrun_AllowOverdriveInMultiplayer` — разрешает Overdrive в мультиплеере. + - `Beatrun_AllowPropSpawn` — разрешает спавн пропов и оружия без прав администратора. + - `Beatrun_HealthRegen` — переключает регенерацию здоровья. + - Клиентские: + - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor` — настройка цветов интерфейса. + - `Beatrun_DisableGrapple` — включение/выключение крюка-кошки. + - `Beatrun_OldKickGlitch` — переключение между старым и новым Kick Glitch. + - `Beatrun_QuickturnHandsOnly` — ограничение QuickTurn только для оружия Runner Hands. +- Прочие улучшения: + - Лёгкий толчок камеры при нырянии. + - SteamID больше не отображается на экране. + +### Исправления + +- Исправлено отображение моделей игроков как `ERROR` от первого лица. +- Улучшена сортировка таблиц лидеров в режимах. +- Исправлены краши и баги в режиме Data Theft. +- Включены прыжки при ходьбе. +- Крюк-кошка теперь следует за перемещаемыми объектами и видна другим игрокам. + +--- ## Анимации -Установщик анимаций был удалён, теперь анимации можно переключить в меню Инструментов в категории Beatrun. +Установщик анимаций удалён. Теперь их можно переключать в **меню Инструментов** в категории Beatrun. -## Отличия от оригинала - -> [!IMPORTANT] -> Множество изменений не задокументированы, проверьте коммиты для полного списка изменений. - -* Jonny_Bro поддерживает свою **[базу курсов](https://courses.jonnybro.ru)**, которая так же **бесплатна** для использования и имеет **[открытый исходный код](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-docker)**! -* Новый режим - **Deathmatch** (намного интереснее Data Theft, честно). -* Оригинальный Kick Glitch как в **[оригинальной игре](https://www.youtube.com/watch?v=zK5y3NBUStc)**. -* Внутриигровое меню настроек - оно находится в меню Инструментов в категории **Beatrun**.\ - Там можно найти **все** настройки Beatrun! -* Показ статуса в Discord и Steam. -* Поддержка локализации.\ - Доступно на 7 языках! -* Изменения в режиме строительства курсов.\ - Любой проп из меню спавна теперь сохраняется в курсе. -* Возможность переката на кнопку приседания (CTRL) после зиплайнов (спасибо c4nk <3). -* Возможность спрыгивать с лестниц на кнопку приседания (CTRL). -* Возможность удалять зиплайны, созданные *Zipline Gun* по нажатию на второстепенный огонь (ПКМ). -* Стрелка, указывающая на следующий чекпоинт. -* Серверная переменная которая разрешает использование Overdrive в мультиплеере - `Beatrun_AllowOverdriveInMultiplayer`. -* Серверная переменная которая разрешает создание оружия и объектов из меню спавна без прав администратора - `Beatrun_AllowPropSpawn`. -* Серверная переменная которая переключает регенерацию здоровья - `Beatrun_HealthRegen`. -* Клиентские переменные для изменения цвета интерфейса - `Beatrun_HUDTextColor`, `Beatrun_HUDCornerColor`, `Beatrun_HUDFloatingXPColor`. -* Клиентская переменная которая переключает использование крюка-кошки - `Beatrun_DisableGrapple`. -* Клиентская переменная которая переключает использование старого и нового Kick Glitch - `Beatrun_OldKickGlitch`. -* Клиентская переменная которая переключает быстрый разворот с оружием или только с *Runner Hands* - `Beatrun_QuickturnHandsOnly`. -* Небольшой толчок камеры при нырянии. -* SteamID больше не видно на экране. - -## Исправления - -* Некоторые модельки игрока отображались как ERROR от первого лица. -* Сортировка таблиц лидеров в режимах. -* Использование крюка-кошки в режимах и курсах. -* Краш игры в режиме Data Theft при использовании Data Bank. -* Урон между игроками проходил только в Data Theft. -* Разрешены прыжки при ходьбе. -* Возможность переката **под** объектами. -* Крюк-кошка теперь следует за объектом к которому она присоединена, так же её видят другие игроки. +--- ## Известные проблемы -* [Проблемы](https://github.com/JonnyBro/beatrun/issues). +- Полный список доступен **[здесь](https://github.com/JonnyBro/beatrun/issues)**. + +--- ## Связанные проекты -* [Проект Beatrun Reanimated](https://github.com/JonnyBro/beatrun-anims). +- **[Beatrun Reanimated Project](https://github.com/JonnyBro/beatrun-anims)** + +--- ## Благодарности -* [Все участники](https://github.com/JonnyBro/beatrun/graphs/contributors) - <3. -* [EarthyKiller127/datae](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) - Создатель оригинального Beatrun. -* [relaxtakenotes](https://github.com/relaxtakenotes) - Без него этот проект не существовал бы. -* [MTB](https://www.youtube.com/@MTB396) - Проект Beatrun Reanimated. -* [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) - Модуль показа статусов в Discord. -* [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) - Модуль показа статусов в Steam (создатель TFA Base!). +- **[Все участники](https://github.com/JonnyBro/beatrun/graphs/contributors)** ❤️ +- [EarthyKiller127/datae](https://www.youtube.com/channel/UCiFqPwGo4x0J65xafIaECDQ) — создатель оригинального Beatrun. +- [relaxtakenotes](https://github.com/relaxtakenotes) — этот проект стал возможен благодаря ему. +- [MTB](https://www.youtube.com/@MTB396) — проект Beatrun Reanimated. +- [Fluffy Servers](https://github.com/fluffy-servers/gmod-discord-rpc) — модуль показа статусов в Discord. +- [YuRaNnNzZZ](https://github.com/YuRaNnNzZZ/gmcl_steamrichpresencer) — модуль показа статусов в Steam (создатель TFA Base). diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua b/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua index 47fa345..feb2f6c 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua @@ -54,7 +54,8 @@ local incompatible = { ["748422181"] = true, -- FOV Changer ["2930331275"] = true, -- Realistic Fragmentation System ["112806637"] = true, -- Gmod Legs 3 - ["678037029"] = true -- Enhanced Camera + ["678037029"] = true, -- Enhanced Camera + ["2497150824"] = true -- Smooth Camera } local warnpanel = { From d718ef226a065bfed0a085c94614b84adf1d63eb Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Sat, 30 Nov 2024 21:23:34 +0500 Subject: [PATCH 31/34] fix some warnings --- README.ru.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.ru.md b/README.ru.md index 84358f8..6351633 100644 --- a/README.ru.md +++ b/README.ru.md @@ -11,9 +11,9 @@ ## 🚨 Важное уведомление -### Пожалуйста, прочитайте этот README полностью перед тем, как задавать вопросы. +### Пожалуйста, прочитайте этот README полностью перед тем, как задавать вопросы -### **Единственный официальный источник** этого форка — этот репозиторий на GitHub. Версии в Workshop устарели и не поддерживаются. +### **Единственный официальный источник** этого форка — этот репозиторий на GitHub. Версии в Workshop устарели и не поддерживаются --- @@ -27,7 +27,7 @@ Beatrun — это **знаменитый паркур-аддон для Garry's > Эти модули **абсолютно опциональны** и могут быть удалены в любое время. > > - Модули находятся **[здесь](https://github.com/JonnyBro/beatrun/tree/main/lua/bin)**. -> - Ознакомьтесь с разделом **[Благодарности](#credits)** для их исходного кода. +> - Ознакомьтесь с разделом **[Благодарности](#благодарности)** для их исходного кода. --- From b59c0f6ca2491347b811fc14225c83a0f7c115e1 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" Date: Fri, 6 Dec 2024 23:46:51 +0500 Subject: [PATCH 32/34] update link to the database sources --- README.md | 2 +- README.ru.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 38cb712..67d4057 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ irm https://beatrun.jonnybro.ru/install | iex ### New Features -- **Custom Courses Database** hosted by Jonny_Bro: **[Access Here](https://courses.jonnybro.ru)** (free and **[open source](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-docker)**). +- **Custom Courses Database** hosted by Jonny_Bro: **[Access Here](https://courses.jonnybro.ru)** (free and **[open source](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server)**). - **New Gamemode:** Deathmatch. - "Proper" Kick Glitch similar to the **[original game](https://www.youtube.com/watch?v=zK5y3NBUStc)**. - In-game configuration menu in the Tools menu under **Beatrun**. All settings can be modified here. diff --git a/README.ru.md b/README.ru.md index 6351633..199a92a 100644 --- a/README.ru.md +++ b/README.ru.md @@ -62,7 +62,7 @@ irm https://beatrun.jonnybro.ru/install | iex ### Новые возможности -- **База курсов** от Jonny_Bro: **[Доступна здесь](https://courses.jonnybro.ru)** (бесплатна и имеет **[открытый исходный код](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server-docker)**). +- **База курсов** от Jonny_Bro: **[Доступна здесь](https://courses.jonnybro.ru)** (бесплатна и имеет **[открытый исходный код](https://git.jonnybro.ru/jonny_bro/beatrun-courses-server)**). - **Новый режим:** Deathmatch. - Полностью исправленный Kick Glitch, как в **[оригинальной игре](https://www.youtube.com/watch?v=zK5y3NBUStc)**. - Меню настроек в игре в категории **Beatrun** в меню Инструментов. From 89383faa3a20aee4acdcf98e175c29d1531e0000 Mon Sep 17 00:00:00 2001 From: "Jonny_Bro (Nikita)" <48434875+JonnyBro@users.noreply.github.com> Date: Sat, 14 Dec 2024 12:23:39 +0500 Subject: [PATCH 33/34] update anims --- .../content/models/new_climbanim.dx80.vtx | Bin 72 -> 72 bytes .../content/models/new_climbanim.dx90.vtx | Bin 72 -> 72 bytes .../beatrun/content/models/new_climbanim.mdl | Bin 2322772 -> 2319924 bytes .../beatrun/content/models/new_climbanim.vvd | Bin 64 -> 64 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx80.vtx b/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx80.vtx index 9c9c3bba5986150b99ee417c0d93e1dcf57664b8..c71e2d824b566b9d586e65ad26cddb1d54f963f7 100644 GIT binary patch literal 72 rcmZQ)U|^5{VgUwD24)~FKA}sR5lA}#F^E=y(i})MkjcOUB9H(8YV86H literal 72 rcmZQ)U|^5{VgUwD24)~F5_8}PBan6gVi2tYr8$sjAd`UyL?8hGjd}vK diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx90.vtx b/beatrun/gamemodes/beatrun/content/models/new_climbanim.dx90.vtx index 5ddf97af6795f52b140e0b27437c65f4b4233e65..abc1f2d638f68abc52c2d51412f264e377b28fff 100644 GIT binary patch literal 72 rcmZQ)U|^5{Vp9fA24)~FKA}sR5lA}#F^E=y(i})MkjcOUB9H(8bS(lg literal 72 rcmZQ)U|^5{Vp9fA24)~F5_8}PBan6gVi2tYr8$sjAd`UyL?8hGmbwDj diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.mdl b/beatrun/gamemodes/beatrun/content/models/new_climbanim.mdl index a1903fcd90a1e79a5b375ccf70abd28f2b973848..48676f9659da747209f539a26bd48ff3a7ff384b 100644 GIT binary patch delta 27410 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 delta 31510 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ℑl{>TA6% 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
ZU^3Vc<*`o zK}{VlFd3fJp@+A4$gRf>oeWYv2A9IY7Y*nr#~0qdgjap^{NvKB$GVDwnlzIZmS4i{ zs`de|Ml|Ug0}qh?K4V&}X4s44L>na#`rDG53*qxb1L*xiIvS9?R!72HQ< z*&1oU=E<1|(@MjB*mDKr!2{W*G^0t~XmGj81vunpFE)Mf$qIw_`9y;UOuLF(H0TAl zui}pN!>DVhj`e~Q*Ko${QLy7WGSw3nnelQ~!xl5ITd=!%B-poN-uW=871yyH z39YTz9qbMzH#kA5-I8V~h4vdbG~W$2wV~w$C~ZS^vn$MN#~r!_U$$co$6O%jCQfW~ z2E{F;+8LT|VW5>aE2H%r8Vys$Tth6VEErjY28t|blIR5MJJ7=_*w=v`(j8&eZR{?0 zfPg#5PBjeN!P~JN{5x@f-PCZg6Rn>@PbXSOkAVEUs0PB>yQn7H!>W6jT`Bx<53|cs zLF}LCqtXs^UAUu%Pi0C8jcd*vd_OeiONi^j_`8QgZx?RYHt@fXL1~9W)qR{{90u7B z&`~yE4fJBg3MDLih(UP4o`)Djo-M?5vp0fGi&a?u@{Q2L-UvOMMqUGk9yIA!z`Y)H zErg=6k5$N z`7swF7vS^9s5cIo!RZNCZzIDmZau+)I&goA1A#BhAU@^%<)1;zQ?A%1VbBc!>gW8G zshR&UXrZ*9J7BZ%xfwowhLaBum?3O{^L3t}xgeRtcbH;!^%@+l^@alYWPsbNGCwn0 z&G@3hXZtyOwx4sJ@&cIj9M`dXW`^s}(Z|GoGaMSk0LDT4APy{iYKE_0;J~&gW|%vK zk%;i+5Jpn=*bL*X+yuN4KeTc`+F1I`c$x-Ruh8^;*T6R@^pD^tIUgX8fD3ZISh2Jh z)+%^TS!K~n5wK5zU70;F!v-x)-N4!Mq4?7Hz?R>u>UwClmM(bt^eTCLdX>Db^J^dU zO4e21OBU@4Q)919%vSJM@;@p(A3}|i*EuX`x*;|CZ#gPwCZpW@1h;qcP!49~MU3gPFIAKgw?`UNQd$Y;s3ekD=5ZU2SfKd3e~6b9r35REA0H8_{Hl$+~K2gzY17gO0U8 zkO!{R0C67tQQtPR*?M)lOm-8S0^gAAGmokZ;la-M-RcbR^~8YGW@z%noa^C*C*~Y+ z9g0Tb&64r>g5(YLqp&OS8m#xi#L}VV=#xTMu_#{1$hFj^ubN5yaYO594&!3UmWdjfL^A4 x1HK%p+6JiNc%8}unhN`;=cSc!pTiZ6^^ncujj>+5!1HtM6w%AYfI!|c^4|j!j^qFU diff --git a/beatrun/gamemodes/beatrun/content/models/new_climbanim.vvd b/beatrun/gamemodes/beatrun/content/models/new_climbanim.vvd index 70efffd973ff9714601eb3b657604888de57c8c7..9f5364702e1a2559109ac782998f38b4798e5983 100644 GIT binary patch literal 64 ccmeZt2@YdnU| Date: Wed, 18 Dec 2024 22:31:44 +0500 Subject: [PATCH 34/34] update incompatible addons --- beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua b/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua index feb2f6c..ea80f4a 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl/AddonWarning.lua @@ -52,7 +52,7 @@ local incompatible = { ["2824714462"] = true, -- [TFA] Screen Shake ["3037375111"] = true, -- Quick Slide With Legs ["748422181"] = true, -- FOV Changer - ["2930331275"] = true, -- Realistic Fragmentation System + ["2919970981"] = true, -- Realistic Fragmentation System [OLD] ["112806637"] = true, -- Gmod Legs 3 ["678037029"] = true, -- Enhanced Camera ["2497150824"] = true -- Smooth Camera