From b1391811ca15f5095a65fafce361c4ca7997707a Mon Sep 17 00:00:00 2001 From: Garrus2142 Date: Tue, 1 Aug 2017 19:15:49 +0200 Subject: [PATCH 1/6] Add language system --- gamemode/config.lua | 1 + gamemode/core/_includes.lua | 7 ++++- gamemode/core/lang/cl_lang.lua | 42 ++++++++++++++++++++++++++++++ gamemode/core/lang/sv_lang.lua | 14 ++++++++++ gamemode/core/rounds/cl_rounds.lua | 2 +- 5 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 gamemode/core/lang/cl_lang.lua create mode 100644 gamemode/core/lang/sv_lang.lua diff --git a/gamemode/config.lua b/gamemode/config.lua index baae811..3226e17 100755 --- a/gamemode/config.lua +++ b/gamemode/config.lua @@ -8,6 +8,7 @@ local GM = GM or GAMEMODE GM.CONFIG = {} +GM.CONFIG["lang_default"] = "en" GM.CONFIG["disabled_modules"] = { -- ["goal"] = true, -- set true to disable module diff --git a/gamemode/core/_includes.lua b/gamemode/core/_includes.lua index ac5bbfc..cc22e82 100755 --- a/gamemode/core/_includes.lua +++ b/gamemode/core/_includes.lua @@ -2,10 +2,13 @@ -- -- @Author: Garrus2142 -- @Date: 2017-07-25 16:15:45 --- @Last Modified by: Guilhem PECH +-- @Last Modified by: Garrus2142 -- @Last Modified time: 2017-07-27 13:32:59 if SERVER then + -- Language + include("lang/sv_lang.lua") + AddCSLuaFile("lang/cl_lang.lua") -- Fonts AddCSLuaFile("fonts.lua") -- Format @@ -37,6 +40,8 @@ if SERVER then -- Slot CheckPassword include ("slot/sv_slotcheck.lua") else + -- Language + include("lang/cl_lang.lua") -- Fonts include("fonts.lua") -- Format diff --git a/gamemode/core/lang/cl_lang.lua b/gamemode/core/lang/cl_lang.lua new file mode 100644 index 0000000..ee51e1d --- /dev/null +++ b/gamemode/core/lang/cl_lang.lua @@ -0,0 +1,42 @@ +-- Utopia Games - Slashers +-- +-- @Author: Garrus2142 +-- @Date: 2017-08-01 17:14:14 +-- @Last Modified by: Garrus2142 +-- @Last Modified time: 2017-08-01 17:14:14 + +local GM = GM or GAMEMODE +local LANG + +GM.LANG = {} + +function GM.LANG:GetString(key, ...) + return string.format(LANG[key], ...) +end + +local function LoadLanguage(lang) + local languagesPath = "slashers/gamemode/languages" + local files, _ = file.Find(languagesPath .. "/*.lua", "LUA") + + LANG = include(languagesPath .. "/" .. GM.CONFIG["lang_default"] .. ".lua") + + for _, v in ipairs(files) do + if v == lang .. ".lua" then + table.Merge(LANG, include(languagesPath .. "/" .. v)) + return + end + end +end + +local function OnLangChange(convar_name, value_old, value_new) + if value_new != value_old then + LoadLanguage(value_new) + end +end +cvars.AddChangeCallback("gmod_language", OnLangChange) + +-- Load user language +do + local cvLang = GetConVar("gmod_language") + LoadLanguage(cvLang:GetString()) +end diff --git a/gamemode/core/lang/sv_lang.lua b/gamemode/core/lang/sv_lang.lua new file mode 100644 index 0000000..b5f80fc --- /dev/null +++ b/gamemode/core/lang/sv_lang.lua @@ -0,0 +1,14 @@ +-- Utopia Games - Slashers +-- +-- @Author: Garrus2142 +-- @Date: 2017-08-01 17:14:19 +-- @Last Modified by: Garrus2142 +-- @Last Modified time: 2017-08-01 17:14:19 + +-- Send all language files to client +local languagesPath = "slashers/gamemode/languages" +local files, _ = file.Find(languagesPath .. "/*.lua", "LUA") + +for _, f in ipairs(files) do + AddCSLuaFile(languagesPath .. "/" .. f) +end diff --git a/gamemode/core/rounds/cl_rounds.lua b/gamemode/core/rounds/cl_rounds.lua index 307d28c..ab4cf66 100755 --- a/gamemode/core/rounds/cl_rounds.lua +++ b/gamemode/core/rounds/cl_rounds.lua @@ -29,7 +29,7 @@ local function HUDPaint() -- Waiting for player if GM.ROUND.WaitingPlayers then - local text = "Waiting for players " .. #player.GetAll() .. "/" .. GM.CONFIG["round_min_player"] + local text = GM.LANG:GetString("round_wait_players", #player.GetAll(), GM.CONFIG["round_min_player"]) surface.SetFont("horror1") local tw = surface.GetTextSize(text) surface.SetTextColor(Color(255, 255, 255)) From 69d7ecdb0cc84c6020f80d263156d79932601423 Mon Sep 17 00:00:00 2001 From: Garrus2142 Date: Tue, 1 Aug 2017 21:45:53 +0200 Subject: [PATCH 2/6] edit file to support language system --- gamemode/core/class/sh_class.lua | 132 +++++++++++++--------- gamemode/core/rounds/cl_rounds.lua | 29 ++--- gamemode/languages/en.lua | 51 +++++++++ gamemode/modules/antiafk/cl_antiafk.lua | 2 +- gamemode/modules/f1menu/cl_f1menu.lua | 14 +-- gamemode/modules/workshop/cl_download.lua | 8 +- 6 files changed, 159 insertions(+), 77 deletions(-) create mode 100644 gamemode/languages/en.lua diff --git a/gamemode/core/class/sh_class.lua b/gamemode/core/class/sh_class.lua index 1f2b05a..c8113fb 100755 --- a/gamemode/core/class/sh_class.lua +++ b/gamemode/core/class/sh_class.lua @@ -2,7 +2,7 @@ -- -- @Author: Garrus2142 -- @Date: 2017-07-25 16:15:46 --- @Last Modified by: Guilhem PECH +-- @Last Modified by: Garrus2142 -- @Last Modified time: 2017-07-27 11:49:54 local GM = GM or GAMEMODE @@ -12,163 +12,191 @@ GM.CLASS.Survivors = {} GM.CLASS.Killers = {} GM.CLASS.Survivors[CLASS_SURV_SPORTS] = {} -GM.CLASS.Survivors[CLASS_SURV_SPORTS].name = "Sports" -GM.CLASS.Survivors[CLASS_SURV_SPORTS].dispname = "Trent" -GM.CLASS.Survivors[CLASS_SURV_SPORTS].description = "You have unlimited stamina and you're strong. Use weapons to stun the killer and helping the survivors running away." GM.CLASS.Survivors[CLASS_SURV_SPORTS].walkspeed = 150 GM.CLASS.Survivors[CLASS_SURV_SPORTS].runspeed = 240 GM.CLASS.Survivors[CLASS_SURV_SPORTS].life = 120 GM.CLASS.Survivors[CLASS_SURV_SPORTS].stamina = 210 GM.CLASS.Survivors[CLASS_SURV_SPORTS].model = "models/steinman/slashers/sport_pm.mdl" -GM.CLASS.Survivors[CLASS_SURV_SPORTS].icon = Material("icons/icon_sportif.png") GM.CLASS.Survivors[CLASS_SURV_SPORTS].die_sound = "slashers/effects/scream_man_1.wav" GM.CLASS.Survivors[CLASS_SURV_SPORTS].weapons = {} +if CLIENT then + GM.CLASS.Survivors[CLASS_SURV_SPORTS].name = "Sports" + GM.CLASS.Survivors[CLASS_SURV_SPORTS].dispname = "Trent" + GM.CLASS.Survivors[CLASS_SURV_SPORTS].description = GM.LANG:GetString("class_desc_sports") + GM.CLASS.Survivors[CLASS_SURV_SPORTS].icon = Material("icons/icon_sportif.png") +end GM.CLASS.Survivors[CLASS_SURV_POPULAR] = {} -GM.CLASS.Survivors[CLASS_SURV_POPULAR].name = "Popular girl" -GM.CLASS.Survivors[CLASS_SURV_POPULAR].dispname = "Lynda" -GM.CLASS.Survivors[CLASS_SURV_POPULAR].description = "You're notified of the exact position of the Police at the end of each game. Use it to help the survivors escaping." GM.CLASS.Survivors[CLASS_SURV_POPULAR].walkspeed = 160 GM.CLASS.Survivors[CLASS_SURV_POPULAR].runspeed = 240 GM.CLASS.Survivors[CLASS_SURV_POPULAR].life = 80 GM.CLASS.Survivors[CLASS_SURV_POPULAR].stamina = 120 GM.CLASS.Survivors[CLASS_SURV_POPULAR].model = "models/steinman/slashers/popular_pm.mdl" -GM.CLASS.Survivors[CLASS_SURV_POPULAR].icon = Material("icons/icon_popular.png") GM.CLASS.Survivors[CLASS_SURV_POPULAR].die_sound = "slashers/effects/scream_girl_1.wav" GM.CLASS.Survivors[CLASS_SURV_POPULAR].weapons = {} +if CLIENT then + GM.CLASS.Survivors[CLASS_SURV_POPULAR].name = "Popular girl" + GM.CLASS.Survivors[CLASS_SURV_POPULAR].dispname = "Lynda" + GM.CLASS.Survivors[CLASS_SURV_POPULAR].description = GM.LANG:GetString("class_desc_popular") + GM.CLASS.Survivors[CLASS_SURV_POPULAR].icon = Material("icons/icon_popular.png") +end GM.CLASS.Survivors[CLASS_SURV_NERD] = {} -GM.CLASS.Survivors[CLASS_SURV_NERD].name = "Nerd" -GM.CLASS.Survivors[CLASS_SURV_NERD].dispname = "Noah" -GM.CLASS.Survivors[CLASS_SURV_NERD].description = "Use your detector to see players nearby. Be careful, you can't make difference between survivors and the killer." GM.CLASS.Survivors[CLASS_SURV_NERD].walkspeed = 130 GM.CLASS.Survivors[CLASS_SURV_NERD].runspeed = 240 GM.CLASS.Survivors[CLASS_SURV_NERD].life = 100 GM.CLASS.Survivors[CLASS_SURV_NERD].stamina = 110 GM.CLASS.Survivors[CLASS_SURV_NERD].model = "models/steinman/slashers/nerd_pm.mdl" -GM.CLASS.Survivors[CLASS_SURV_NERD].icon = Material("icons/icon_nerd.png") GM.CLASS.Survivors[CLASS_SURV_NERD].die_sound = "slashers/effects/scream_man_1.wav" GM.CLASS.Survivors[CLASS_SURV_NERD].weapons = {"tim_detector"} +if CLIENT then + GM.CLASS.Survivors[CLASS_SURV_NERD].name = "Nerd" + GM.CLASS.Survivors[CLASS_SURV_NERD].dispname = "Noah" + GM.CLASS.Survivors[CLASS_SURV_NERD].description = GM.LANG:GetString("class_desc_nerd") + GM.CLASS.Survivors[CLASS_SURV_NERD].icon = Material("icons/icon_nerd.png") +end GM.CLASS.Survivors[CLASS_SURV_FAT] = {} -GM.CLASS.Survivors[CLASS_SURV_FAT].name = "Fat boy" -GM.CLASS.Survivors[CLASS_SURV_FAT].dispname = "Franklin" -GM.CLASS.Survivors[CLASS_SURV_FAT].description = "You're the strongest and hardest survivor to kill but you have the lowest stamina." GM.CLASS.Survivors[CLASS_SURV_FAT].walkspeed = 130 GM.CLASS.Survivors[CLASS_SURV_FAT].runspeed = 240 GM.CLASS.Survivors[CLASS_SURV_FAT].life = 180 GM.CLASS.Survivors[CLASS_SURV_FAT].stamina = 80 GM.CLASS.Survivors[CLASS_SURV_FAT].model = "models/steinman/slashers/fat_pm.mdl" -GM.CLASS.Survivors[CLASS_SURV_FAT].icon = Material("icons/icon_fat.png") GM.CLASS.Survivors[CLASS_SURV_FAT].die_sound = "slashers/effects/scream_man_1.wav" GM.CLASS.Survivors[CLASS_SURV_FAT].weapons = {} +if CLIENT then + GM.CLASS.Survivors[CLASS_SURV_FAT].name = "Fat boy" + GM.CLASS.Survivors[CLASS_SURV_FAT].dispname = "Franklin" + GM.CLASS.Survivors[CLASS_SURV_FAT].description = GM.LANG:GetString("class_desc_fat") + GM.CLASS.Survivors[CLASS_SURV_FAT].icon = Material("icons/icon_fat.png") +end GM.CLASS.Survivors[CLASS_SURV_SHY] = {} -GM.CLASS.Survivors[CLASS_SURV_SHY].name = "Shy girl" -GM.CLASS.Survivors[CLASS_SURV_SHY].dispname = "Sydney" -GM.CLASS.Survivors[CLASS_SURV_SHY].description = "You're immunized to the killer main ability, but you're very weak. Be careful, the killer may want to kill you in priority." GM.CLASS.Survivors[CLASS_SURV_SHY].walkspeed = 140 GM.CLASS.Survivors[CLASS_SURV_SHY].runspeed = 240 GM.CLASS.Survivors[CLASS_SURV_SHY].life = 60 GM.CLASS.Survivors[CLASS_SURV_SHY].stamina = 140 GM.CLASS.Survivors[CLASS_SURV_SHY].model = "models/player/korka007/maxc.mdl" -GM.CLASS.Survivors[CLASS_SURV_SHY].icon = Material("icons/icon_shy.png") GM.CLASS.Survivors[CLASS_SURV_SHY].die_sound = "slashers/effects/scream_girl_1.wav" GM.CLASS.Survivors[CLASS_SURV_SHY].weapons = {} +if CLIENT then + GM.CLASS.Survivors[CLASS_SURV_SHY].name = "Shy girl" + GM.CLASS.Survivors[CLASS_SURV_SHY].dispname = "Sydney" + GM.CLASS.Survivors[CLASS_SURV_SHY].description = GM.LANG:GetString("class_desc_shy") + GM.CLASS.Survivors[CLASS_SURV_SHY].icon = Material("icons/icon_shy.png") +end GM.CLASS.Survivors[CLASS_SURV_JUNKY] = {} -GM.CLASS.Survivors[CLASS_SURV_JUNKY].name = "Junky" -GM.CLASS.Survivors[CLASS_SURV_JUNKY].dispname = "Marty" -GM.CLASS.Survivors[CLASS_SURV_JUNKY].description = "You have an improved vision. Use it instead of your flashlight for a better stealth." GM.CLASS.Survivors[CLASS_SURV_JUNKY].walkspeed = 130 GM.CLASS.Survivors[CLASS_SURV_JUNKY].runspeed = 240 GM.CLASS.Survivors[CLASS_SURV_JUNKY].life = 110 GM.CLASS.Survivors[CLASS_SURV_JUNKY].stamina = 120 GM.CLASS.Survivors[CLASS_SURV_JUNKY].model = "models/steinman/slashers/junky_pm.mdl" -GM.CLASS.Survivors[CLASS_SURV_JUNKY].icon = Material("icons/icon_junky.png") GM.CLASS.Survivors[CLASS_SURV_JUNKY].die_sound = "slashers/effects/scream_man_1.wav" GM.CLASS.Survivors[CLASS_SURV_JUNKY].weapons = {} +if CLIENT then + GM.CLASS.Survivors[CLASS_SURV_JUNKY].name = "Junky" + GM.CLASS.Survivors[CLASS_SURV_JUNKY].dispname = "Marty" + GM.CLASS.Survivors[CLASS_SURV_JUNKY].description = GM.LANG:GetString("class_desc_junky") + GM.CLASS.Survivors[CLASS_SURV_JUNKY].icon = Material("icons/icon_junky.png") +end GM.CLASS.Survivors[CLASS_SURV_EMO] = {} -GM.CLASS.Survivors[CLASS_SURV_EMO].name = "Emo" -GM.CLASS.Survivors[CLASS_SURV_EMO].dispname = "Audrey" -GM.CLASS.Survivors[CLASS_SURV_EMO].description = "You're immunized to the killer second ability. Stay alone when hiding for a better chance of survival." GM.CLASS.Survivors[CLASS_SURV_EMO].walkspeed = 130 GM.CLASS.Survivors[CLASS_SURV_EMO].runspeed = 240 GM.CLASS.Survivors[CLASS_SURV_EMO].life = 110 GM.CLASS.Survivors[CLASS_SURV_EMO].stamina = 130 GM.CLASS.Survivors[CLASS_SURV_EMO].model = "models/steinman/slashers/emo_pm.mdl" -GM.CLASS.Survivors[CLASS_SURV_EMO].icon = Material("icons/icon_emo.png") GM.CLASS.Survivors[CLASS_SURV_EMO].die_sound = "slashers/effects/scream_girl_1.wav" GM.CLASS.Survivors[CLASS_SURV_EMO].weapons = {} +if CLIENT then + GM.CLASS.Survivors[CLASS_SURV_EMO].name = "Emo" + GM.CLASS.Survivors[CLASS_SURV_EMO].dispname = "Audrey" + GM.CLASS.Survivors[CLASS_SURV_EMO].description = GM.LANG:GetString("class_desc_emo") + GM.CLASS.Survivors[CLASS_SURV_EMO].icon = Material("icons/icon_emo.png") +end GM.CLASS.Survivors[CLASS_SURV_BLACK] = {} -GM.CLASS.Survivors[CLASS_SURV_BLACK].name = "Black" -GM.CLASS.Survivors[CLASS_SURV_BLACK].dispname = "Roland" -GM.CLASS.Survivors[CLASS_SURV_BLACK].description = "You have 3 keys, use them to lock doors and keep the survivors safe. You can unlock locked doors to get back your keys." GM.CLASS.Survivors[CLASS_SURV_BLACK].walkspeed = 140 GM.CLASS.Survivors[CLASS_SURV_BLACK].runspeed = 240 GM.CLASS.Survivors[CLASS_SURV_BLACK].life = 120 GM.CLASS.Survivors[CLASS_SURV_BLACK].stamina = 130 GM.CLASS.Survivors[CLASS_SURV_BLACK].model = "models/player/spike/lamar.mdl" -GM.CLASS.Survivors[CLASS_SURV_BLACK].icon = Material("icons/icon_black.png") GM.CLASS.Survivors[CLASS_SURV_BLACK].die_sound = "slashers/effects/scream_man_1.wav" GM.CLASS.Survivors[CLASS_SURV_BLACK].weapons = {"weapon_keys"} GM.CLASS.Survivors[CLASS_SURV_BLACK].keysNumber = 3 +if CLIENT then + GM.CLASS.Survivors[CLASS_SURV_BLACK].name = "Black" + GM.CLASS.Survivors[CLASS_SURV_BLACK].dispname = "Roland" + GM.CLASS.Survivors[CLASS_SURV_BLACK].description = GM.LANG:GetString("class_desc_black") + GM.CLASS.Survivors[CLASS_SURV_BLACK].icon = Material("icons/icon_black.png") +end GM.CLASS.Survivors[CLASS_SURV_SHERIF] = {} -GM.CLASS.Survivors[CLASS_SURV_SHERIF].name = "Sherif" -GM.CLASS.Survivors[CLASS_SURV_SHERIF].dispname = "Gale" -GM.CLASS.Survivors[CLASS_SURV_SHERIF].description = "You have a revolver. Use it to stun the killer and allow the survivors to run away. You can't kill the killer." GM.CLASS.Survivors[CLASS_SURV_SHERIF].walkspeed = 150 GM.CLASS.Survivors[CLASS_SURV_SHERIF].runspeed = 240 GM.CLASS.Survivors[CLASS_SURV_SHERIF].life = 130 GM.CLASS.Survivors[CLASS_SURV_SHERIF].stamina = 140 GM.CLASS.Survivors[CLASS_SURV_SHERIF].model = "models/steinman/slashers/sheriff_pm.mdl" -GM.CLASS.Survivors[CLASS_SURV_SHERIF].icon = Material("icons/icon_sherif.png") GM.CLASS.Survivors[CLASS_SURV_SHERIF].die_sound = "slashers/effects/scream_girl_1.wav" GM.CLASS.Survivors[CLASS_SURV_SHERIF].weapons = {"stun_gun"} +if CLIENT then + GM.CLASS.Survivors[CLASS_SURV_SHERIF].name = "Sherif" + GM.CLASS.Survivors[CLASS_SURV_SHERIF].dispname = "Gale" + GM.CLASS.Survivors[CLASS_SURV_SHERIF].description = GM.LANG:GetString("class_desc_sherif") + GM.CLASS.Survivors[CLASS_SURV_SHERIF].icon = Material("icons/icon_sherif.png") +end GM.CLASS.Killers[CLASS_KILL_JASON] = {} -GM.CLASS.Killers[CLASS_KILL_JASON].name = "Jason" -GM.CLASS.Killers[CLASS_KILL_JASON].description = "You're the fastest killer and have the ability to see footprints left by the survivors to follow them. Listen carefully, you may hear survivors' hearbeat." GM.CLASS.Killers[CLASS_KILL_JASON].walkspeed = 190 GM.CLASS.Killers[CLASS_KILL_JASON].runspeed = 240 GM.CLASS.Killers[CLASS_KILL_JASON].model = "models/player/mkx_jason.mdl" -GM.CLASS.Killers[CLASS_KILL_JASON].icon = Material("icons/icon_jason.png") +if CLIENT then + GM.CLASS.Killers[CLASS_KILL_JASON].name = "Jason" + GM.CLASS.Killers[CLASS_KILL_JASON].description = GM.LANG:GetString("class_desc_jason") + GM.CLASS.Killers[CLASS_KILL_JASON].icon = Material("icons/icon_jason.png") +end GM.CLASS.Killers[CLASS_KILL_GHOSTFACE] = {} -GM.CLASS.Killers[CLASS_KILL_GHOSTFACE].name = "Ghostface" -GM.CLASS.Killers[CLASS_KILL_GHOSTFACE].description = "You have the ability to see when a survivor open or close a door, use it to find them quickly. Think about closing opened doors to force the survivors to open door again. Listen carefully, you may hear survivors' hearbeat." GM.CLASS.Killers[CLASS_KILL_GHOSTFACE].walkspeed = 190 GM.CLASS.Killers[CLASS_KILL_GHOSTFACE].runspeed = 240 GM.CLASS.Killers[CLASS_KILL_GHOSTFACE].model = "models/player/screamplayermodel/scream/scream.mdl" -GM.CLASS.Killers[CLASS_KILL_GHOSTFACE].icon = Material("icons/icon_ghostface.png") +if CLIENT then + GM.CLASS.Killers[CLASS_KILL_GHOSTFACE].name = "Ghostface" + GM.CLASS.Killers[CLASS_KILL_GHOSTFACE].description = GM.LANG:GetString("class_desc_ghostface") + GM.CLASS.Killers[CLASS_KILL_GHOSTFACE].icon = Material("icons/icon_ghostface.png") +end GM.CLASS.Killers[CLASS_KILL_MYERS] = {} -GM.CLASS.Killers[CLASS_KILL_MYERS].name = "Michael Myers" -GM.CLASS.Killers[CLASS_KILL_MYERS].description = "You're the slowest killer and have the ability to focus one survivor at the time. Use it carefully to surprise the survivors and kill them quickly. Listen carefully, you may heard survivors' hearbeat." GM.CLASS.Killers[CLASS_KILL_MYERS].walkspeed = 200 GM.CLASS.Killers[CLASS_KILL_MYERS].runspeed = 200 GM.CLASS.Killers[CLASS_KILL_MYERS].model = "models/player/dewobedil/mike_myers/default_p.mdl" -GM.CLASS.Killers[CLASS_KILL_MYERS].icon = Material("icons/icon_myers.png") +if CLIENT then + GM.CLASS.Killers[CLASS_KILL_MYERS].name = "Michael Myers" + GM.CLASS.Killers[CLASS_KILL_MYERS].description = GM.LANG:GetString("class_desc_myers") + GM.CLASS.Killers[CLASS_KILL_MYERS].icon = Material("icons/icon_myers.png") +end GM.CLASS.Killers[CLASS_KILL_PROXY] = {} -GM.CLASS.Killers[CLASS_KILL_PROXY].name = "the Proxy" -GM.CLASS.Killers[CLASS_KILL_PROXY].description = "You have the ability to appear and disappear when not visible by a survivor. Use it to sneak and surprise your victims. Press your menu key ('A' by default) to use it. Listen carefully, you may hear survivors' heartbeat." GM.CLASS.Killers[CLASS_KILL_PROXY].walkspeed = 200 GM.CLASS.Killers[CLASS_KILL_PROXY].runspeed = 200 GM.CLASS.Killers[CLASS_KILL_PROXY].model = "models/slender_arrival/chaser.mdl" -GM.CLASS.Killers[CLASS_KILL_PROXY].icon = Material("icons/icon_proxy.png") +if CLIENT then + GM.CLASS.Killers[CLASS_KILL_PROXY].name = "the Proxy" + GM.CLASS.Killers[CLASS_KILL_PROXY].description = GM.LANG:GetString("class_desc_proxy") + GM.CLASS.Killers[CLASS_KILL_PROXY].icon = Material("icons/icon_proxy.png") +end GM.CLASS.Killers[CLASS_KILL_INTRUDER] = {} -GM.CLASS.Killers[CLASS_KILL_INTRUDER].name = "the Intruder" -GM.CLASS.Killers[CLASS_KILL_INTRUDER].description = "You have the ability to place traps to help you killing the survivors. Use your alert ropes to spot the survivors, your bear traps to neutralize them and the door axe to kill them by surprise.Listen carefully, you may hear survivors' heartbeat." GM.CLASS.Killers[CLASS_KILL_INTRUDER].walkspeed = 200 GM.CLASS.Killers[CLASS_KILL_INTRUDER].runspeed = 200 GM.CLASS.Killers[CLASS_KILL_INTRUDER].model = "models/steinman/slashers/intruder_pm.mdl" -GM.CLASS.Killers[CLASS_KILL_INTRUDER].icon = Material("icons/icon_intruder.png") GM.CLASS.Killers[CLASS_KILL_INTRUDER].weapons = {"weapon_beartrap", "weapon_alertropes", "weapon_dooraxe"} +if CLIENT then + GM.CLASS.Killers[CLASS_KILL_INTRUDER].name = "the Intruder" + GM.CLASS.Killers[CLASS_KILL_INTRUDER].description = GM.LANG:GetString("class_desc_intruder") + GM.CLASS.Killers[CLASS_KILL_INTRUDER].icon = Material("icons/icon_intruder.png") +end local function StartRound() for _, v in ipairs(player.GetAll()) do diff --git a/gamemode/core/rounds/cl_rounds.lua b/gamemode/core/rounds/cl_rounds.lua index ab4cf66..29cad15 100755 --- a/gamemode/core/rounds/cl_rounds.lua +++ b/gamemode/core/rounds/cl_rounds.lua @@ -11,15 +11,18 @@ local scrw, scrh = ScrW(), ScrH() local function HUDPaint() local curtime = CurTime() if GM.ROUND.Active && GM.ROUND.EndTime && GM.ROUND.EndTime > curtime then - local text + local text, duration + + duration = math.floor((GM.ROUND.EndTime - curtime) / 60) .. ":" .. format.Seconde(math.floor(GM.ROUND.EndTime - curtime) % 60) + if GM.ROUND.WaitingPolice then - text = LocalPlayer():Team() == TEAM_SURVIVORS and "Police arrives in " or "Kill them all " + text = LocalPlayer():Team() == TEAM_SURVIVORS and GM.LANG:GetString("round_mission_police", duration) or GM.LANG:GetString("round_mission_police_killer", duration) elseif GM.ROUND.Escape then - text = LocalPlayer():Team() == TEAM_SURVIVORS and "Escape " or "Don't let them go " + text = LocalPlayer():Team() == TEAM_SURVIVORS and GM.LANG:GetString("round_mission_escape", duration) or GM.LANG:GetString("round_mission_escape_killer", duration) else - text = LocalPlayer():Team() == TEAM_SURVIVORS and "Complete the objectives " or "Kill them all " + text = LocalPlayer():Team() == TEAM_SURVIVORS and GM.LANG:GetString("round_mission_objectives", duration) or GM.LANG:GetString("round_mission_objectives_killer", duration) end - text = text .. math.floor((GM.ROUND.EndTime - curtime) / 60) .. ":" .. format.Seconde(math.floor(GM.ROUND.EndTime - curtime) % 60) + surface.SetFont("horror2") local tw = surface.GetTextSize(text) surface.SetTextColor(Color(220, 220, 220, 255)) @@ -52,14 +55,14 @@ local function PostStart() if LocalPlayer():Team() == 1001 then return end if LocalPlayer():Team() == TEAM_SURVIVORS then - TeamName = "a Survivor" - TeamText = "Each survivor has a special perk. Your goal is to find jerrycans (number varying with the amount of player) to fill the generator so you can turn on the radio then call the police for help. Each element you have to find has many possible spawn points and spawns randomly on the map. The teamplay and a moderate use of your flashlight are the key of surviving." + TeamName = GM.LANG:GetString("round_team_name_survivor") + TeamText = GM.LANG:GetString("round_team_desc_survivor") ImageCharac = "/characteres/"..string.lower(GAMEMODE.CLASS.Survivors[LocalPlayer().ClassID].name)..".png" CharacName = GAMEMODE.CLASS.Survivors[LocalPlayer().ClassID].dispname CharacText = GAMEMODE.CLASS.Survivors[LocalPlayer().ClassID].description elseif LocalPlayer():Team() == TEAM_KILLER then - TeamName = "the Killer" - TeamText = "You are a killer from a slasher movie and you are immortal. Your goal is to kill every survivors before they can escape. You are randomly given one of the following weapons ; the axe, the machete or the chainsaw (which turns on by pushing R) To give a harder hit, you can hold left click and release. You can hear survivors' heartbeat when they're not moving, just follow the sound and you'll find them." + TeamName = GM.LANG:GetString("round_team_name_killer") + TeamText = GM.LANG:GetString("round_team_desc_killer") ImageCharac = "/characteres/"..string.lower(GAMEMODE.CLASS.Killers[LocalPlayer().ClassID].name)..".png" CharacName = GAMEMODE.CLASS.Killers[LocalPlayer().ClassID].name CharacText = GAMEMODE.CLASS.Killers[LocalPlayer().ClassID].description @@ -72,23 +75,23 @@ hook.Add("sls_round_PostStart", "sls_round_PostStart", PostStart) local function StartWaitingPolice() if LocalPlayer():Team() == TEAM_SURVIVORS then - messages.PrintFade("Survive until the police arrival !", scrh / 2, 5, 2, Color(255, 255, 255), "horror1") + messages.PrintFade(GM.LANG:GetString("round_notif_police"), scrh / 2, 5, 2, Color(255, 255, 255), "horror1") end end hook.Add("sls_round_StartWaitingPolice", "sls_round_StartWaitingPolice", StartWaitingPolice) local function StartEscape() - messages.PrintFade(LocalPlayer():Team() == TEAM_SURVIVORS and "Escape" or "Don't let them go", scrh / 2, 5, 2, Color(255, 255, 255), "horror1") + messages.PrintFade(LocalPlayer():Team() == TEAM_SURVIVORS and GM.LANG:GetString("round_notif_escape") or GM.LANG:GetString("round_notif_escape_killer"), scrh / 2, 5, 2, Color(255, 255, 255), "horror1") end hook.Add("sls_round_StartEscape", "sls_round_StartEscape", StartEscape) local function OnTeamWin(winner) local text if winner == TEAM_SURVIVORS then - text = "The survivors have escaped... for now" + text = GM.LANG:GetString("round_end_escaped") surface.PlaySound("slashers/ambient/survivors_win.wav") else - text = "The survivors have been eradicated" + text = GM.LANG:GetString("round_end_dead") surface.PlaySound("slashers/ambient/killer_win.wav") end diff --git a/gamemode/languages/en.lua b/gamemode/languages/en.lua new file mode 100644 index 0000000..db3205c --- /dev/null +++ b/gamemode/languages/en.lua @@ -0,0 +1,51 @@ +-- Utopia Games - Slashers +-- +-- @Author: Garrus2142 +-- @Date: 2017-08-01 16:53:54 +-- @Last Modified by: Garrus2142 +-- @Last Modified time: 2017-08-01 16:53:55 + +local LANG = {} + +-- Core Gamemode +-- Survivors +LANG["class_desc_sports"] = "You have unlimited stamina and you're strong. Use weapons to stun the killer and helping the survivors running away." +LANG["class_desc_popular"] = "You're notified of the exact position of the Police at the end of each game. Use it to help the survivors escaping." +LANG["class_desc_nerd"] = "Use your detector to see players nearby. Be careful, you can't make difference between survivors and the killer." +LANG["class_desc_fat"] = "You're the strongest and hardest survivor to kill but you have the lowest stamina." +LANG["class_desc_shy"] = "You're immunized to the killer main ability, but you're very weak. Be careful, the killer may want to kill you in priority." +LANG["class_desc_junky"] = "You have an improved vision. Use it instead of your flashlight for a better stealth." +LANG["class_desc_emo"] = "You're immunized to the killer second ability. Stay alone when hiding for a better chance of survival." +LANG["class_desc_black"] = "You have 3 keys, use them to lock doors and keep the survivors safe. You can unlock locked doors to get back your keys." +LANG["class_desc_sherif"] = "You have a revolver. Use it to stun the killer and allow the survivors to run away. You can't kill the killer." +-- Killers +LANG["class_desc_jason"] = "You're the fastest killer and have the ability to see footprints left by the survivors to follow them. Listen carefully, you may hear survivors' hearbeat." +LANG["class_desc_ghostface"] = "You have the ability to see when a survivor open or close a door, use it to find them quickly. Think about closing opened doors to force the survivors to open door again. Listen carefully, you may hear survivors' hearbeat." +LANG["class_desc_myers"] = "You're the slowest killer and have the ability to focus one survivor at the time. Use it carefully to surprise the survivors and kill them quickly. Listen carefully, you may heard survivors' hearbeat." +LANG["class_desc_proxy"] = "You have the ability to appear and disappear when not visible by a survivor. Use it to sneak and surprise your victims. Press your menu key ('A' by default) to use it. Listen carefully, you may hear survivors' heartbeat." +LANG["class_desc_intruder"] = "You have the ability to place traps to help you killing the survivors. Use your alert ropes to spot the survivors, your bear traps to neutralize them and the door axe to kill them by surprise.Listen carefully, you may hear survivors' heartbeat." + +LANG["round_mission_police"] = "Police arrives in %s" +LANG["round_mission_police_killer"] = "Kill them all %s" +LANG["round_mission_escape"] = "Escape %s" +LANG["round_mission_escape_killer"] = "Don't let them go %s" +LANG["round_mission_objectives"] = "Complete the objectives %s" +LANG["round_mission_objectives_killer"] = "Kill them all %s" +LANG["round_wait_players"] = "Waiting for players %i/%i" +LANG["round_team_name_survivor"] = "a Survivor" +LANG["round_team_name_killer"] = "the Killer" +LANG["round_team_desc_survivor"] = "Each survivor has a special perk. Your goal is to find jerrycans (number varying with the amount of player) to fill the generator so you can turn on the radio then call the police for help. Each element you have to find has many possible spawn points and spawns randomly on the map. The teamplay and a moderate use of your flashlight are the key of surviving." +LANG["round_team_desc_killer"] = "You are a killer from a slasher movie and you are immortal. Your goal is to kill every survivors before they can escape. You are randomly given one of the following weapons ; the axe, the machete or the chainsaw (which turns on by pushing R) To give a harder hit, you can hold left click and release. You can hear survivors' heartbeat when they're not moving, just follow the sound and you'll find them." +LANG["round_notif_police"] = "Survive until the police arrival !" +LANG["round_notif_escape"] = "Escape" +LANG["round_notif_escape_killer"] = "Don't let them go" +LANG["round_end_escaped"] = "The survivors have escaped... for now" +LANG["round_end_dead"] = "The survivors have been eradicated" + +-- Modules +LANG["antiafk_will_kicked"] = "You're about to be kicked out of the server for inactivity in %s" +LANG["f1menu_you_are"] = "You are %s" +LANG["workshop_need_content"] = "You may need extra content from the Steam Workshop." +LANG["workshop_get_it"] = "Take me to it!" +LANG["workshop_no"] = "I'd rather not." +return LANG diff --git a/gamemode/modules/antiafk/cl_antiafk.lua b/gamemode/modules/antiafk/cl_antiafk.lua index c207f03..0d57c48 100755 --- a/gamemode/modules/antiafk/cl_antiafk.lua +++ b/gamemode/modules/antiafk/cl_antiafk.lua @@ -37,7 +37,7 @@ local function HUDPaint() alpha_bg = Lerp(0.05, alpha_bg, 225) end - text = "You're about to be kicked out of the server for inactivity in " .. formatSeconde(LocalPlayer():GetNWInt("afk_warn") - CurTime()) + text = GM.LANG:GetString("antiakf_will_kicked", formatSeconde(LocalPlayer():GetNWInt("afk_warn") - CurTime())) surface.SetDrawColor(Color(0, 0, 0, alpha_bg)) surface.DrawRect(0, 0, scrW, scrH) diff --git a/gamemode/modules/f1menu/cl_f1menu.lua b/gamemode/modules/f1menu/cl_f1menu.lua index fc74a01..9a7e7d1 100755 --- a/gamemode/modules/f1menu/cl_f1menu.lua +++ b/gamemode/modules/f1menu/cl_f1menu.lua @@ -2,7 +2,7 @@ -- -- @Author: Guilhem PECH -- @Date: 2017-07-26T13:50:55+02:00 --- @Last Modified by: Guilhem PECH +-- @Last Modified by: Garrus2142 -- @Last Modified time: 2017-07-27 01:39:07 @@ -49,7 +49,7 @@ function ShowPlayerScreen(TeamName,TeamText,CharacName,CharacText,ImageCharac,Ti local TitleSpe = vgui.Create("DLabel",DescriptionBox) - TitleSpe:SetText("You are "..CharacName) + TitleSpe:SetText(GM.LANG:GetString("f1menu_you_are", CharacName)) TitleSpe:SetFont( "Bohemian typewriter TITLE" ) TitleSpe:SetColor(Color(168,0,0,255)) TitleSpe:SizeToContents() @@ -69,7 +69,7 @@ function ShowPlayerScreen(TeamName,TeamText,CharacName,CharacText,ImageCharac,Ti local TitleGen = vgui.Create("DLabel",DescriptionBox) --Title1:Dock(TOP) - TitleGen:SetText("You are " .. TeamName) + TitleGen:SetText(GM.LANG:GetString("f1menu_you_are", TeamName)) TitleGen:MoveBelow( SpecificDescription, 1/4*ScrH() ) TitleGen:SetFont( "Bohemian typewriter TITLE" ) TitleGen:SetColor(Color(168,0,0,255)) @@ -139,15 +139,15 @@ net.Receive( "sls_f1_menu", function () if LocalPlayer():Team() == 2 then - TeamName = "a Survivor" - TeamText = "Each survivor has a special perk. Your goal is to find jerrycans (number varying with the amount of player) to fill the generator so you can turn on the radio then call the police for help. Each element you have to find has many possible spawn points and spawns randomly on the map. The teamplay and a moderate use of your flashlight are the key of surviving." + TeamName = GM.LANG:GetString("round_team_name_survivor") + TeamText = GM.LANG:GetString("round_team_desc_survivor") ImageCharac = "/characteres/"..string.lower(GAMEMODE.CLASS.Survivors[LocalPlayer().ClassID].name)..".png" CharacName = GAMEMODE.CLASS.Survivors[LocalPlayer().ClassID].dispname CharacText = GAMEMODE.CLASS.Survivors[LocalPlayer().ClassID].description elseif LocalPlayer():Team() == 1 then - TeamName = "the Killer" - TeamText = "You are a killer from a slasher movie and you are immortal. Your goal is to kill every survivors before they can escape. You are randomly given one of the following weapons ; the axe, the machete or the chainsaw (which turns on by pushing R) To give a harder hit, you can hold left click and release. You can hear survivors' heartbeat when they're not moving, just follow the sound and you'll find them." + TeamName = GM.LANG:GetString("round_team_name_killer") + TeamText = GM.LANG:GetString("round_team_desc_killer") ImageCharac = "/characteres/"..string.lower(GAMEMODE.CLASS.Killers[LocalPlayer().ClassID].name)..".png" CharacName = GM.CLASS.Killers[LocalPlayer().ClassID].name CharacText = GAMEMODE.CLASS.Killers[LocalPlayer().ClassID].description diff --git a/gamemode/modules/workshop/cl_download.lua b/gamemode/modules/workshop/cl_download.lua index e0a0128..c8f43e5 100644 --- a/gamemode/modules/workshop/cl_download.lua +++ b/gamemode/modules/workshop/cl_download.lua @@ -2,7 +2,7 @@ -- -- @Author: Guilhem PECH -- @Date: 2017-07-26T18:34:04+02:00 --- @Last Modified by: Guilhem PECH +-- @Last Modified by: Garrus2142 -- @Last Modified time: 2017-07-27 01:37:04 @@ -28,11 +28,11 @@ function WorkshopDownloadCheck() local InstructionLabel = vgui.Create( "DLabel", MainFrame ) InstructionLabel:SetPos( 5, 25 ) - InstructionLabel:SetText( "You may need extra content from the Steam Workshop." ) + InstructionLabel:SetText( GAMEMODE.LANG:GetString("workshop_need_content") ) InstructionLabel:SizeToContents() local WSButton = vgui.Create( "DButton", MainFrame ) - WSButton:SetText( "Take me to it!" ) + WSButton:SetText( GAMEMODE.LANG:GetString("workshop_get_it") ) WSButton:SetTextColor( Color( 0, 0, 0 ) ) WSButton:SetPos( 5, 40 ) WSButton:SetSize( 100, 30 ) @@ -42,7 +42,7 @@ function WorkshopDownloadCheck() end local CloseButton = vgui.Create( "DButton", MainFrame ) - CloseButton:SetText( "I'd rather not." ) + CloseButton:SetText( GAMEMODE.LANG:GetString("workshop_no") ) CloseButton:SetTextColor( Color( 0, 0, 0 ) ) CloseButton:SetPos( 195, 40 ) CloseButton:SetSize( 100, 30 ) From 9251abaf3a0e6028abd79503d27fc9bb22fb90b8 Mon Sep 17 00:00:00 2001 From: Garrus2142 Date: Wed, 2 Aug 2017 00:32:14 +0200 Subject: [PATCH 3/6] Add toggle f1menu and remove ugly button. --- gamemode/modules/f1menu/cl_f1menu.lua | 79 ++++++++++----------------- 1 file changed, 30 insertions(+), 49 deletions(-) diff --git a/gamemode/modules/f1menu/cl_f1menu.lua b/gamemode/modules/f1menu/cl_f1menu.lua index 9a7e7d1..1c653df 100755 --- a/gamemode/modules/f1menu/cl_f1menu.lua +++ b/gamemode/modules/f1menu/cl_f1menu.lua @@ -5,14 +5,11 @@ -- @Last Modified by: Garrus2142 -- @Last Modified time: 2017-07-27 01:39:07 - - -local active local GM = GAMEMODE or GM +local BackGroundPanel, timed -function ShowPlayerScreen(TeamName,TeamText,CharacName,CharacText,ImageCharac,Time,isOpen,active) - active = true - local BackGroundPanel = vgui.Create( "DPanel" ) +function ShowPlayerScreen(TeamName,TeamText,CharacName,CharacText,ImageCharac,Time,isOpen) + BackGroundPanel = vgui.Create( "DPanel" ) BackGroundPanel:SetSize( ScrW(),ScrH() ) BackGroundPanel:Dock(FILL) BackGroundPanel:SetDrawBackground( true ) @@ -87,56 +84,42 @@ function ShowPlayerScreen(TeamName,TeamText,CharacName,CharacText,ImageCharac,Ti GenericDescription:SetAutoStretchVertical( true ) GenericDescription:SetWidth((1/1.45)*ScrH()) end ) -end) - -if Time ~= 0 then - timer.Simple( Time-0.3, function() - img_charac:MoveTo((ScrW() /2) - (img_charac:GetWide()/2) ,0,0.5,0,1) - DescriptionBox:MoveTo((ScrW() /2) - (DescriptionBox:GetWide()/2.5) ,0,0.5,0,1) - DescriptionBox:MoveToBefore(img_charac) - DescriptionBox:SizeTo( 0, DescriptionBox:GetTall(), 0.4, 0, -1, function () - PersoPANEL:MoveBy(0,PersoPANEL:GetTall() /2,0.5,0.1,1) - PersoPANEL:SizeTo(PersoPANEL:GetWide(),0,0.5,0.1,1) - img_charac:MoveBy(0,-(PersoPANEL:GetTall()/2),0.5,0.1,1,function() - BackGroundPanel:Remove() - isOpen = false + end) + + if Time ~= 0 then + timed = true + timer.Simple( Time-0.3, function() + img_charac:MoveTo((ScrW() /2) - (img_charac:GetWide()/2) ,0,0.5,0,1) + DescriptionBox:MoveTo((ScrW() /2) - (DescriptionBox:GetWide()/2.5) ,0,0.5,0,1) + DescriptionBox:MoveToBefore(img_charac) + DescriptionBox:SizeTo( 0, DescriptionBox:GetTall(), 0.4, 0, -1, function () + PersoPANEL:MoveBy(0,PersoPANEL:GetTall() /2,0.5,0.1,1) + PersoPANEL:SizeTo(PersoPANEL:GetWide(),0,0.5,0.1,1) + img_charac:MoveBy(0,-(PersoPANEL:GetTall()/2),0.5,0.1,1,function() + BackGroundPanel:Remove() + isOpen = false + timed = false + end) end) - end) - - end ) -end -if Time == 0 then - - local CloseB = vgui.Create( "DButton" ) - CloseB:MakePopup() - CloseB:MoveToFront() - CloseB:SetPos( 40, 40 ) - CloseB:SetText( "X" ) - - CloseB:SetSize( 20, 20 ) - CloseB.DoClick = function() - img_charac:MoveTo((ScrW() /2) - (img_charac:GetWide()/2) ,0,0.5,0,1) - DescriptionBox:MoveTo((ScrW() /2) - (DescriptionBox:GetWide()/2.5) ,0,0.5,0,1) - DescriptionBox:MoveToBefore(img_charac) - DescriptionBox:SizeTo( 0, DescriptionBox:GetTall(), 0.4, 0, -1, function () - PersoPANEL:MoveBy(0,PersoPANEL:GetTall() /2,0.5,0.1,1) - PersoPANEL:SizeTo(PersoPANEL:GetWide(),0,0.5,0.1,1) - img_charac:MoveBy(0,-(PersoPANEL:GetTall()/2),0.5,0.1,1,function() BackGroundPanel:Remove() end) - end) - CloseB:Remove() - active = false + end ) + else + timed = false end end -end - net.Receive( "sls_f1_menu", function () - active = false local TeamName = " " local TeamText = " " local ImageCharac = "/characteres/default.png" local CharacName = " " + if timed then return end + + if IsValid(BackGroundPanel) then + BackGroundPanel:Remove() + return + end + if LocalPlayer():Team() == 2 then TeamName = GM.LANG:GetString("round_team_name_survivor") @@ -159,9 +142,7 @@ net.Receive( "sls_f1_menu", function () CharacText = "none" end - if (!active) then - ShowPlayerScreen(TeamName,TeamText,CharacName,CharacText,ImageCharac,0,active) - end + ShowPlayerScreen(TeamName,TeamText,CharacName,CharacText,ImageCharac,0) end) function ShowTitle(Title,Second) From 79a8f1900f14c829714c9b347b2ccdfb9458a141 Mon Sep 17 00:00:00 2001 From: Packages Date: Wed, 2 Aug 2017 09:01:07 +0300 Subject: [PATCH 4/6] Adding the Russian language. --- gamemode/languages/ru.lua | 51 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 gamemode/languages/ru.lua diff --git a/gamemode/languages/ru.lua b/gamemode/languages/ru.lua new file mode 100644 index 0000000..1d2cdb0 --- /dev/null +++ b/gamemode/languages/ru.lua @@ -0,0 +1,51 @@ +-- Utopia Games - Slashers +-- +-- @Author: Packages +-- @Date: 2017-08-02 8:58:00 +-- @Last Modified by: Packages +-- @Last Modified time: 2017-08-02 8:58:00 + +local LANG = {} + +-- Core Gamemode +-- Survivors +LANG["class_desc_sports"] = "Вы имеете быстрый бег, и большую силу. Используйте оружие что бы замедлить/оглушить убийцу и убежать." +LANG["class_desc_popular"] = "В конце каждой игры вас уведомляют о точном положении откуда приехала полиция. Используйте его, чтобы помочь выжившим." +LANG["class_desc_nerd"] = "Используйте детектор, чтобы видеть игроков поблизости. Будьте осторожны, вы не можете различать выживших и убийцу на радаре." +LANG["class_desc_fat"] = "Вы самый толстый из выживших, чтобы вас убить нужно много времени. Это вам поможет сбежать." +LANG["class_desc_shy"] = "Вы имеете иммунитет от основной способности убийцы, но вы очень слабы. Будьте осторожны, убийца может захотеть убить вас в приоритетном порядке." +LANG["class_desc_junky"] = "У вас улучшенное зрение. Используйте его вместо фонарика для того чтобы спрятаться лучше." +LANG["class_desc_emo"] = "Вы имеете иммунитет от второй способности убийцы, но вы очень слабы. Оставайтесь в одиночестве, прячась, чтобы получить больше шансов на выживание." +LANG["class_desc_black"] = "У вас есть 3 ключа, используйте их для запирание дверей и обеспечения безопасности оставшихся в живых. Вы можете отпереть запертые двери, чтобы вернуть свои ключи." +LANG["class_desc_sherif"] = "У вас есть револьвер. Используйте его, чтобы оглушить убийцу и позволить оставшимся в живых убежать. Вы не можете убить убийцу." +-- Killers +LANG["class_desc_jason"] = "Вы самый быстрый убийца и имеете возможность видеть следы оставшихся в живых, чтобы следить за ними. Слушайте внимательно, вы можете услышать сердцебиение выживших." +LANG["class_desc_ghostface"] = "У вас есть возможность видеть, когда выживший открывает или закрывает дверь, используйте его, чтобы быстро найти их. Подумайте о закрытии открытых дверей, чтобы заставить оставшихся в живых снова открыть дверь. Слушайте внимательно, вы можете услышать сердцебиение выживших." +LANG["class_desc_myers"] = "Вы самый медленный убийца и имеете возможность видеть позицию одного выжившего. Используйте его осторожно, чтобы удивить выживших и убить его быстро. Слушайте внимательно, вы можете услышать сердцебиение выживших." +LANG["class_desc_proxy"] = "У вас есть способность появляться и исчезать, когда не видно выжившим. Используйте его, чтобы прокрасться и удивить своих жертв. Нажмите клавишу меню (по умолчанию «A»), чтобы использовать способность. Слушайте внимательно, вы можете услышать сердцебиение выживших." +LANG["class_desc_intruder"] = "У вас есть возможность разместить ловушки, чтобы помочь вам убить оставшихся в живых. Используйте сигнальную веревку для выявления выживших и ваши медвежьи ловушеки чтобы нейтрализовать их и убить их топором в врасплох. Слушайте внимательно, вы можете услышать сердцебиение выживших." + +LANG["round_mission_police"] = "Полиция приедет в %s" +LANG["round_mission_police_killer"] = "Убейте их всех за %s минут." +LANG["round_mission_escape"] = "%s сбежал." +LANG["round_mission_escape_killer"] = "Не позволяйте им cбежать %s" +LANG["round_mission_objectives"] = "Закончите цели за %s" +LANG["round_mission_objectives_killer"] = "Убейте их всех за %s минут." +LANG["round_wait_players"] = "Ожидание игроков, чтобы начать раунд %i/%i" +LANG["round_team_name_survivor"] = "Выживший" +LANG["round_team_name_killer"] = "Убийца" +LANG["round_team_desc_survivor"] = "У каждого выжившего есть особая способность. Ваша цель состоит в том, чтобы найти канистры (число, варьирующееся с количеством игроков в игре), чтобы завести генератор, чтобы вы могли включить радио, а затем вызвать полицию с помощью его. Каждый элемент, который вы должны найти, имеет много возможных точек появления и появляется случайно на карте. Командная игра и умеренное использование фонарика являются ключом к выживанию." +LANG["round_team_desc_killer"] = "Вы убийца из хоррор фильма, и вы бессмертны. Ваша цель - убить всех выживших, прежде чем они смогут убежать. Вы случайно получили одно из следующих видов оружия; Топор, мачете или бензопилу (которая включается, нажимая R). Чтобы дать более сильный удар вы можете удерживать левый клик и отпускать. Вы можете услышать сердцебиение выживших, когда они не двигаются, просто следуйте за звуком, и вы их найдете." +LANG["round_notif_police"] = "Выживете до приезда полиции!" +LANG["round_notif_escape"] = "Сбегите!" +LANG["round_notif_escape_killer"] = "Don't let them go" +LANG["round_end_escaped"] = "Убижавшие выжившие на данный момент..." +LANG["round_end_dead"] = "Все выжившие были убиты." + +-- Modules +LANG["antiafk_will_kicked"] = "Вас выкинет из сервера за бездействие в %s" +LANG["f1menu_you_are"] = "Вы %s" +LANG["workshop_need_content"] = "Вам может понадобиться дополнительный контент из Мастерской." +LANG["workshop_get_it"] = "Покажи мне!" +LANG["workshop_no"] = "Я не хочу." +return LANG From aa9bb2784b69fd76f9b455cbfe0a702172a3ca8d Mon Sep 17 00:00:00 2001 From: Packages Date: Wed, 2 Aug 2017 12:57:51 +0300 Subject: [PATCH 5/6] Update ru.lua --- gamemode/languages/ru.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gamemode/languages/ru.lua b/gamemode/languages/ru.lua index 1d2cdb0..33af76a 100644 --- a/gamemode/languages/ru.lua +++ b/gamemode/languages/ru.lua @@ -37,7 +37,7 @@ LANG["round_team_name_killer"] = "Убийца" LANG["round_team_desc_survivor"] = "У каждого выжившего есть особая способность. Ваша цель состоит в том, чтобы найти канистры (число, варьирующееся с количеством игроков в игре), чтобы завести генератор, чтобы вы могли включить радио, а затем вызвать полицию с помощью его. Каждый элемент, который вы должны найти, имеет много возможных точек появления и появляется случайно на карте. Командная игра и умеренное использование фонарика являются ключом к выживанию." LANG["round_team_desc_killer"] = "Вы убийца из хоррор фильма, и вы бессмертны. Ваша цель - убить всех выживших, прежде чем они смогут убежать. Вы случайно получили одно из следующих видов оружия; Топор, мачете или бензопилу (которая включается, нажимая R). Чтобы дать более сильный удар вы можете удерживать левый клик и отпускать. Вы можете услышать сердцебиение выживших, когда они не двигаются, просто следуйте за звуком, и вы их найдете." LANG["round_notif_police"] = "Выживете до приезда полиции!" -LANG["round_notif_escape"] = "Сбегите!" +LANG["round_notif_escape"] = "Побег!" LANG["round_notif_escape_killer"] = "Don't let them go" LANG["round_end_escaped"] = "Убижавшие выжившие на данный момент..." LANG["round_end_dead"] = "Все выжившие были убиты." From 5b474a2fd2be3a8fdbab88d2cb40bf209cd50479 Mon Sep 17 00:00:00 2001 From: Packages Date: Wed, 2 Aug 2017 12:58:47 +0300 Subject: [PATCH 6/6] Update ru.lua --- gamemode/languages/ru.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gamemode/languages/ru.lua b/gamemode/languages/ru.lua index 33af76a..9109228 100644 --- a/gamemode/languages/ru.lua +++ b/gamemode/languages/ru.lua @@ -38,7 +38,7 @@ LANG["round_team_desc_survivor"] = "У каждого выжившего ест LANG["round_team_desc_killer"] = "Вы убийца из хоррор фильма, и вы бессмертны. Ваша цель - убить всех выживших, прежде чем они смогут убежать. Вы случайно получили одно из следующих видов оружия; Топор, мачете или бензопилу (которая включается, нажимая R). Чтобы дать более сильный удар вы можете удерживать левый клик и отпускать. Вы можете услышать сердцебиение выживших, когда они не двигаются, просто следуйте за звуком, и вы их найдете." LANG["round_notif_police"] = "Выживете до приезда полиции!" LANG["round_notif_escape"] = "Побег!" -LANG["round_notif_escape_killer"] = "Don't let them go" +LANG["round_notif_escape_killer"] = "Не позволяйте им идти убежать" LANG["round_end_escaped"] = "Убижавшие выжившие на данный момент..." LANG["round_end_dead"] = "Все выжившие были убиты."