From 780ec3971158b8a4ef47e99f0b27d17a082d268d Mon Sep 17 00:00:00 2001 From: Fesiug Date: Fri, 27 Sep 2024 16:10:50 -0400 Subject: [PATCH] Big commit FP camera pos edit Convar system tweaks lang tweaks thrown weapons fixes inventory prints HUD improvements --- .../benny/entities/entities/b-itembase.lua | 4 +- .../benny/entities/weapons/itemhandler.lua | 18 +- gamemodes/benny/gamemode/camera.lua | 33 +-- gamemodes/benny/gamemode/convars.lua | 17 +- gamemodes/benny/gamemode/gamestate.lua | 72 ++--- gamemodes/benny/gamemode/hud.lua | 23 +- gamemodes/benny/gamemode/inventory.lua | 15 +- gamemodes/benny/gamemode/items.lua | 27 +- gamemodes/benny/gamemode/language.lua | 3 +- gamemodes/benny/gamemode/languages/en-us.lua | 245 ++++++++++++++---- gamemodes/benny/gamemode/pausemenu.lua | 22 +- gamemodes/benny/gamemode/shared.lua | 5 + 12 files changed, 326 insertions(+), 158 deletions(-) diff --git a/gamemodes/benny/entities/entities/b-itembase.lua b/gamemodes/benny/entities/entities/b-itembase.lua index f56d881..6166ee9 100644 --- a/gamemodes/benny/entities/entities/b-itembase.lua +++ b/gamemodes/benny/entities/entities/b-itembase.lua @@ -29,7 +29,7 @@ else if ent:IsValid() then ent:SetPredictable( false ) - print("CL Stopping prediction on", ent) + print("[prediction] cl stop:", ent) end end) end @@ -73,7 +73,7 @@ function ENT:Think() net.Start("Benny_ItemSlept") net.WriteEntity(self) net.Broadcast() - print("SV Stopping prediction on", self) + print("[prediction] sv stop:", self) --self:SetCollisionGroup( COLLISION_GROUP_WEAPON ) self.BAsleep = true end diff --git a/gamemodes/benny/entities/weapons/itemhandler.lua b/gamemodes/benny/entities/weapons/itemhandler.lua index 9d429f7..99657f6 100644 --- a/gamemodes/benny/entities/weapons/itemhandler.lua +++ b/gamemodes/benny/entities/weapons/itemhandler.lua @@ -109,10 +109,9 @@ else local ent = net.ReadEntity() if ent:IsValid() then ent:SetPredictable( net.ReadBool() ) - print("Starting prediction on", ent) + print("[prediction] cl prediction start:", ent) else - print("Tried to make an ent predictable but it wasn't valid.") - debug.Trace() + print("[prediction] cl tried to predict invalid ent") end end) end @@ -122,14 +121,13 @@ function SWEP:EquipItem( ent ) if CLIENT then print("FUCK OFF") debug.Trace() return end if IsValid(ent) and ent.BennyItem then if ent:GetOwner() != NULL then - print( ent, "belongs to", ent:GetOwner(), "!! Not equipping." ) + print( "[equip]", ent, "belongs to", ent:GetOwner(), "not equipping" ) + return + elseif p:GetInventory()[ent] then + print( "[equip]", ent, "already belongs to", p ) return end - if p:GetInventory()[ent] then - print( ent, "is in", p, "'s inventory!" ) - return - end - print("Pick up", ent) + print("[equip]", ent) self:SetDesireR( ent ) @@ -162,7 +160,7 @@ function SWEP:DropItem() local p = self:GetOwner() local ent = self:GetActiveR() if ent:IsValid() then - if CLIENT then print("DropItem called on CLIENT but certain things aren't finished yet.") return end + if CLIENT then print("[drop] DropItem called on cl not allowed") return end self:SetDesireR( NULL ) diff --git a/gamemodes/benny/gamemode/camera.lua b/gamemodes/benny/gamemode/camera.lua index 69ad4fe..4962732 100644 --- a/gamemodes/benny/gamemode/camera.lua +++ b/gamemodes/benny/gamemode/camera.lua @@ -3,13 +3,13 @@ -- Your Name is Benny --------------------- -local cam_f = CreateConVar( "b-cam_f", -75 ) -local cam_r = CreateConVar( "b-cam_r", 12 ) -local cam_u = CreateConVar( "b-cam_u", 12 ) -local cam_fov = CreateConVar( "b-cam_fov", 75 ) +BENNY.AddConvar( "cam_f", -75 ) +BENNY.AddConvar( "cam_r", 12 ) +BENNY.AddConvar( "cam_u", 12 ) +BENNY.AddConvar( "cam_fov", 75 ) -local cam_fp = CreateConVar( "b-cam_fp", 0 ) -local cam_fp_fov = CreateConVar( "b-cam_fp_fov", 75 ) +BENNY.AddConvar( "cam_fp", 0 ) +BENNY.AddConvar( "cam_fp_fov", 75 ) local lastfp local m = 3 @@ -24,13 +24,13 @@ function CamSpot( ang, pos ) local f, r, u = TPSOverride:Forward(), TPSOverride:Right(), TPSOverride:Up() local tr = { start = pos, - endpos = pos + (f*cam_f:GetFloat()) + (r*cam_r:GetFloat()) + (u*cam_u:GetFloat()), + endpos = pos + (f*c_cam_f:GetFloat()) + (r*c_cam_r:GetFloat()) + (u*c_cam_u:GetFloat()), filter = LocalPlayer(), -- ply, mins = m1, maxs = m2, } - if cam_fp:GetBool() then - tr.endpos = EyePos() + if c_cam_fp:GetBool() then + tr.endpos = LocalPlayer():EyePos() end tr = util.TraceHull(tr) return tr.HitPos @@ -49,9 +49,9 @@ function QConvert( fovDegrees ) end function GM:PreDrawViewModels() - local fp = cam_fp:GetBool() + local fp = c_cam_fp:GetBool() if fp then - cam.Start3D( nil, nil, QConvert( cam_fp_fov:GetFloat() ) ) + cam.Start3D( nil, nil, QConvert( c_cam_fp_fov:GetFloat() ) ) cam.IgnoreZ( true ) local p = LocalPlayer() p.IWantDraw = true @@ -67,7 +67,7 @@ function GM:PreDrawViewModels() end function GM:PrePlayerDraw( ply, flags ) - local fp = cam_fp:GetBool() + local fp = c_cam_fp:GetBool() if fp and ply == LocalPlayer() and !ply.IWantDraw then return true end @@ -77,15 +77,16 @@ function GM:CalcView( ply, pos, ang, fov ) local view = { origin = CamSpot(TPSOverride), -- pos includes the smoothstair offset which looks stupid here angles = TPSOverride, - fov = cam_fov:GetFloat(), + fov = c_cam_fov:GetFloat(), drawviewer = true } - local fp = cam_fp:GetBool() + local fp = c_cam_fp:GetBool() if fp then ply:SetupBones() - local bm = ply:GetBoneMatrix(ply:LookupBone("DEF-spine.006")) + local bm = ply:GetBoneMatrix(ply:LookupBone("DEF-spine.003")) view.origin = bm:GetTranslation() + view.origin:Add( vector_up*10 ) if ply:GetLayerSequence( GESTURE_SLOT_JUMP ) == ply:LookupSequence("dive_end_handgun") then local progress = ply:GetLayerCycle( GESTURE_SLOT_JUMP ) @@ -145,7 +146,7 @@ hook.Add( "OnRequestFullUpdate", "Benny_OnRequestFullUpdate_CameraFP", function( if CLIENT then local ply = LocalPlayer() if !ply:IsValid() then return end - local fp = cam_fp:GetBool() + local fp = c_cam_fp:GetBool() if lastfp == nil then lastfp = !fp end timer.Simple( 0, function() if !fp then diff --git a/gamemodes/benny/gamemode/convars.lua b/gamemodes/benny/gamemode/convars.lua index 2f40283..c07dd54 100644 --- a/gamemodes/benny/gamemode/convars.lua +++ b/gamemodes/benny/gamemode/convars.lua @@ -3,15 +3,14 @@ -- Your Name is Benny --------------------- -Convars = {} - -Convars.List = {} - -function Convars:Add( name, def, help, mins, max ) - +function BENNY.AddConvar( name, value, flags, mins, maxs ) + local CV = CreateConVar( "b-" .. name, value, flags, l8( "#Convar." .. name .. ".Description" ), mins, maxs ) + _G["c_" .. name] = CV + -- print( "Created Convar: " .. name .. " : " .. l8( "#Convar." .. name .. ".Name" ) .. " : " .. l8( "#Convar." .. name .. ".Description" ) ) + return CV end -function Convars:GetVector() - local exploded = string.Explode( " ", "" ) - return Vector() +function BENNY.AddClientConvar( name, value, flags, mins, maxs ) + if SERVER then return end + return BENNY.AddConvar( name, value, flags, mins, maxs ) end \ No newline at end of file diff --git a/gamemodes/benny/gamemode/gamestate.lua b/gamemodes/benny/gamemode/gamestate.lua index c7c026c..cf86006 100644 --- a/gamemodes/benny/gamemode/gamestate.lua +++ b/gamemodes/benny/gamemode/gamestate.lua @@ -5,20 +5,20 @@ BennyGame = BennyGame or {} BG_GTYPE_CAMPAIGN = 0 BG_GTYPE_MP = 1 -local cGametype = CreateConVar("b-gametype", 1, nil, "0 for Campaign, 1 for MP") -local cGamemode = CreateConVar("b-gamemode", "dom", nil, "") +BENNY.AddConvar("gametype", 1) +BENNY.AddConvar("gamemode", "dom") -local cMinplayers = CreateConVar("b-g_minplayers", 2) -local cPregame = CreateConVar("b-g_pregame", 15) -local cPostgame = CreateConVar("b-g_postgame", 15) -local cIntermission = CreateConVar("b-g_intermission", 10) +BENNY.AddConvar("g_minplayers", 2) +BENNY.AddConvar("g_pregame", 15) +BENNY.AddConvar("g_postgame", 15) +BENNY.AddConvar("g_intermission", 10) function BennyGame:GetType() - return cGametype:GetBool() and BG_GTYPE_MP or BG_GTYPE_CAMPAIGN + return c_gametype:GetBool() and BG_GTYPE_MP or BG_GTYPE_CAMPAIGN end function BennyGame:GetMode() - return cGamemode:GetString() + return c_gamemode:GetString() end function BennyGame:GetModeData() @@ -45,52 +45,52 @@ BennyGame.Gamemodes = { name = "#Gamemode.tdm.Name", description = "#Gamemode.tdm.Description", - scorelimit = CreateConVar("b-g_tdm_scorelimit", 75 ), - timelimit = CreateConVar("b-g_tdm_timelimit", 10*60 ), + scorelimit = BENNY.AddConvar("g_tdm_scorelimit", 75 ), + timelimit = BENNY.AddConvar("g_tdm_timelimit", 10*60 ), }, ["ffa"] = { name = "#Gamemode.ffa.Name", description = "#Gamemode.ffa.Description", - scorelimit = CreateConVar("b-g_ffa_scorelimit", 30 ), - timelimit = CreateConVar("b-g_ffa_timelimit", 10*60 ), + scorelimit = BENNY.AddConvar("g_ffa_scorelimit", 30 ), + timelimit = BENNY.AddConvar("g_ffa_timelimit", 10*60 ), }, ["snd"] = { name = "#Gamemode.snd.Name", description = "#Gamemode.snd.Description", - scorelimit = CreateConVar("b-g_snd_scorelimit", 6 ), - timelimit = CreateConVar("b-g_snd_timelimit", 2.5*60 ), + scorelimit = BENNY.AddConvar("g_snd_scorelimit", 6 ), + timelimit = BENNY.AddConvar("g_snd_timelimit", 2.5*60 ), }, ["ctf"] = { name = "#Gamemode.ctf.Name", description = "#Gamemode.ctf.Description", - scorelimit = CreateConVar("b-g_ctf_scorelimit", 3 ), - timelimit = CreateConVar("b-g_ctf_timelimit", 10*60 ), + scorelimit = BENNY.AddConvar("g_ctf_scorelimit", 3 ), + timelimit = BENNY.AddConvar("g_ctf_timelimit", 10*60 ), }, ["dom"] = { name = "#Gamemode.dom.Name", description = "#Gamemode.dom.Description", - scorelimit = CreateConVar("b-g_dom_scorelimit", 1000 ), - timelimit = CreateConVar("b-g_dom_timelimit", 10*60 ), - roundlimit = CreateConVar("b-g_dom_roundlimit", 1 ), + scorelimit = BENNY.AddConvar("g_dom_scorelimit", 1000 ), + timelimit = BENNY.AddConvar("g_dom_timelimit", 10*60 ), + roundlimit = BENNY.AddConvar("g_dom_roundlimit", 1 ), }, ["dem"] = { name = "#Gamemode.dem.Name", description = "#Gamemode.dem.Description", - scorelimit = CreateConVar("b-g_dem_scorelimit", 3 ), - timelimit = CreateConVar("b-g_dem_timelimit", 5*60 ), - roundlimit = CreateConVar("b-g_dom_roundlimit", 2 ), + scorelimit = BENNY.AddConvar("g_dem_scorelimit", 3 ), + timelimit = BENNY.AddConvar("g_dem_timelimit", 5*60 ), + roundlimit = BENNY.AddConvar("g_dom_roundlimit", 2 ), }, ["hp"] = { name = "#Gamemode.hp.Name", description = "#Gamemode.hp.Description", - scorelimit = CreateConVar("b-g_hp_scorelimit", 300 ), - timelimit = CreateConVar("b-g_hp_timelimit", 10*60 ), + scorelimit = BENNY.AddConvar("g_hp_scorelimit", 300 ), + timelimit = BENNY.AddConvar("g_hp_timelimit", 10*60 ), }, } @@ -159,6 +159,7 @@ hook.Add("InitPostEntity", "Benny_Gamestate_InitPostEntity", function() BennyGame:Accessor( "Round", "Int", 1 ) BennyGame:Accessor( "SwappedAtRound", "Int", 1 ) BennyGame:Accessor( "TimeExtension", "Int", 0 ) + BennyGame:Accessor( "UUID", "Int", 0 ) BennyGame:Accessor( "Team1_Score", "Int", 0 ) BennyGame:Accessor( "Team2_Score", "Int", 0 ) @@ -168,6 +169,10 @@ hook.Add("InitPostEntity", "Benny_Gamestate_InitPostEntity", function() BennyGame:Accessor( "Team6_Score", "Int", 0 ) BennyGame:Accessor( "TeamsSwapped", "Bool", false ) + + if SERVER then + BennyGame:SetUUID( math.random( -(2^31), (2^31)-1 ) ) + end end) function BennyGame:GetScoreLimit() @@ -187,15 +192,15 @@ end function BennyGame:GetPregameTime() - return cPregame:GetInt() + return c_g_pregame:GetInt() end function BennyGame:GetPostgameTime() - return cPostgame:GetInt() + return c_g_postgame:GetInt() end function BennyGame:GetIntermissionTime() - return cIntermission:GetInt() + return c_g_intermission:GetInt() end function BennyGame:GetScoreForTeam( teamid ) @@ -270,7 +275,7 @@ function BennyGame:EndRound( reason, forceteam ) else TheFull = TheFull .. l8(TEAMS[winningteam].name) .. " wins! " end - TheFull = TheFull .. cPostgame:GetInt() .. "s until the next round." + TheFull = TheFull .. c_g_postgame:GetInt() .. "s until the next round." PrintMessage(HUD_PRINTCENTER, TheFull) local roundtime = CurTime() - BennyGame:GetRoundStartedAt() @@ -347,11 +352,11 @@ hook.Add("Think", "Benny_Gamestate_Think", function() count = count + 1 end - if count >= cMinplayers:GetInt() then + if count >= c_g_minplayers:GetInt() then roundstate = BG_STATE_PRE BennyGame:SetState( roundstate ) BennyGame:SetPregameStartedAt( CurTime() ) - PrintMessage(HUD_PRINTCENTER, "Pregame. " .. cPregame:GetInt() .. "s until the round starts") + PrintMessage(HUD_PRINTCENTER, "Pregame. " .. c_g_pregame:GetInt() .. "s until the round starts") end end @@ -385,4 +390,9 @@ hook.Add("Think", "Benny_Gamestate_Think", function() end end -end) \ No newline at end of file +end) + +-- Map functions +function BennyGame:GetMapName() + return "SixT" +end \ No newline at end of file diff --git a/gamemodes/benny/gamemode/hud.lua b/gamemodes/benny/gamemode/hud.lua index efe84d3..1d2577d 100644 --- a/gamemodes/benny/gamemode/hud.lua +++ b/gamemodes/benny/gamemode/hud.lua @@ -283,7 +283,11 @@ function GM:HUDPaint() if BennyGame:GetType() == BG_GTYPE_CAMPAIGN then CURRCHAR = "benny" else - CURRCHAR = TEAMS[myteam].factionid + if TEAMS[myteam] then + CURRCHAR = TEAMS[myteam].factionid + else + CURRCHAR = "unassigned" + end end local COLOR_MAIN = FACTIONS[CURRCHAR].COLOR_MAIN local COLOR_DARK = FACTIONS[CURRCHAR].COLOR_DARK @@ -808,8 +812,15 @@ local things = { local function QuickDrawStat( wide, data, first ) local gap = 0 - local teamd = TEAMS[data.id] - local faction = FACTIONS[teamd.factionid] + local teamd + local faction + if TEAMS[data.id] then + teamd = TEAMS[data.id] + faction = FACTIONS[teamd.factionid] + else + teamd = TEAMS[0] + faction = FACTIONS[teamd.factionid] + end local TeamName = l8( teamd.name ) hTextQ( TeamName, "HUD_36", 0, 0, faction.COLOR_MAIN, nil, nil, faction.COLOR_DARK ) @@ -881,7 +892,11 @@ function GM:HUDDrawScoreBoard() if BennyGame:GetType() == BG_GTYPE_CAMPAIGN then CURRCHAR = "benny" else - CURRCHAR = TEAMS[myteam].factionid + if TEAMS[myteam] then + CURRCHAR = TEAMS[myteam].factionid + else + CURRCHAR = "unassigned" + end end local COLOR_MAIN = FACTIONS[CURRCHAR].COLOR_MAIN local COLOR_DARK = FACTIONS[CURRCHAR].COLOR_DARK diff --git a/gamemodes/benny/gamemode/inventory.lua b/gamemodes/benny/gamemode/inventory.lua index cb10360..554151b 100644 --- a/gamemodes/benny/gamemode/inventory.lua +++ b/gamemodes/benny/gamemode/inventory.lua @@ -57,7 +57,7 @@ InventoryMeta.__index = InventoryMeta function PT:GetInventory() if !self.Inventory then - print("Creating new inventory for", self) + print("[inventory] new inventory created: ", self) self.Inventory = {} self.Inventory[0] = { Owner = self } setmetatable( self.Inventory, InventoryMeta ) @@ -65,7 +65,7 @@ function PT:GetInventory() if SERVER then for i, v in pairs( self:GetChildren() ) do if v.AEItem then - print( "Regen, adding", v, "to inventory") + print( "[inventory] regen: adding", v) self.Inventory[v] = true end end @@ -78,15 +78,15 @@ function PT:GetInventory() return self.Inventory end - gameevent.Listen( "OnRequestFullUpdate" ) -hook.Add( "OnRequestFullUpdate", "OnRequestFullUpdate_example", function( data ) +hook.Add( "OnRequestFullUpdate", "Benny_OnRequestFullUpdate_Inventory", function( data ) local name = data.name // Same as Player:Nick() local steamid = data.networkid // Same as Player:SteamID() local id = data.userid // Same as Player:UserID() local index = data.index // Same as Entity:EntIndex() minus one if SERVER then + print("[inventory]", Player(id), "FullUpdate resync") Player(id):GetInventory():Sync() end end ) @@ -95,7 +95,7 @@ if SERVER then util.AddNetworkString("AEINV_InvSync") else net.Receive("AEINV_InvSync", function() - print("Destroyed old inventory") + print("[inventory] sync start:") local p = LocalPlayer() p.Inventory = nil if p.GetInventory then @@ -103,12 +103,13 @@ else local count = net.ReadUInt(8) for i=1, count do local key = net.ReadEntity() - print( "Added", key) + print( "\tadded", key) inv[key] = true end else - print("Asked for inventory too early!!") + print("\ti don't have an inventory, maybe you asked too early!!") end + print("\tsync done") end) end diff --git a/gamemodes/benny/gamemode/items.lua b/gamemodes/benny/gamemode/items.lua index bcc634f..2683c27 100644 --- a/gamemodes/benny/gamemode/items.lua +++ b/gamemodes/benny/gamemode/items.lua @@ -222,13 +222,17 @@ AddItem( "base_firearm", { BaseClass.Think( class, ent, handler ) end, - ["EntThink"] = function( class, ent, handler ) - if IsValid(handler) then return end + ["EntThink"] = function( class, ent ) + if IsValid(ent:GetOwner()) then return end -- Only run this stuff when there's no owner in hand + if CLIENT then return end + + local Firedown = ((ent.ShootTime or 0) >= CurTime()) + if Firedown then class:Attack( ent ) end + local InProcess = ent:GetBurstCount() > 0 local Topped = ent:GetBurstCount() == class.BurstCount local Runaway = class.BurstRunaway local BAuto = class.BurstAuto - local Firedown = false if Runaway and InProcess and !Topped then class:Attack( ent, handler ) else @@ -243,10 +247,6 @@ AddItem( "base_firearm", { ent:SetDelayBurst( CurTime() + class.BurstDelay ) end end - if ent:GetRefillTime() != 0 and ent:GetRefillTime() <= CurTime() then - ent:SetClip( class.ClipSize ) - ent:SetRefillTime( 0 ) - end end, ["Attack"] = function( class, ent, handler ) @@ -266,6 +266,7 @@ AddItem( "base_firearm", { ent:SetDelayBurst( CurTime() + class.BurstDelay ) if BAuto then ent:SetBurstCount( 0 ) + ent.ShootTime = 0 end end @@ -377,7 +378,7 @@ AddItem( "base_firearm", { ["EntPhysicsCollide"] = function( class, ent, data, collider ) if ( data.DeltaTime > 0.1 and data.Speed > 200 ) then - class:Attack( ent ) + ent.ShootTime = CurTime() + math.Rand( 0.1, 0.5 ) end end, @@ -632,8 +633,8 @@ do -- Handguns }) AddItem( "cz75", { - PrintName = "CZ-75", - Description = "9mm handgun", + PrintName = "#Item.cz75.Name", + Description = "#Item.cz75.Description", Category = "pistol", Base = "base_firearm", @@ -660,8 +661,8 @@ do -- Handguns }) AddItem( "g18", { - PrintName = "G18", - Description = "automatic 9mm handgun", + PrintName = "#Item.g18.Name", + Description = "#Item.g18.Description", Category = "pistol", Base = "base_firearm", @@ -980,7 +981,7 @@ do -- Shotguns ClipSize = 8, Pellets = 8, - Delay = 0.4, + Delay = 0.22, BurstCount = 1, FireSound = { "benny/weapons/spas12/01.ogg", diff --git a/gamemodes/benny/gamemode/language.lua b/gamemodes/benny/gamemode/language.lua index 2fbc1b9..2da0d24 100644 --- a/gamemodes/benny/gamemode/language.lua +++ b/gamemodes/benny/gamemode/language.lua @@ -6,7 +6,8 @@ Languages = {} function l8( inp ) - return Languages["en-us"][inp] or Languages["en-us"][inp] or inp + if inp[1] == "#" then inp = inp:Right(-2) else return "Untranslatable: '" .. inp .. "'" end + return Languages["en-us"][inp] or Languages["en-us"][inp] or ("No translation: '" .. inp .. "'") end local AD, IN = AddCSLuaFile, include diff --git a/gamemodes/benny/gamemode/languages/en-us.lua b/gamemodes/benny/gamemode/languages/en-us.lua index 37f37eb..6fb86e7 100644 --- a/gamemodes/benny/gamemode/languages/en-us.lua +++ b/gamemodes/benny/gamemode/languages/en-us.lua @@ -3,85 +3,222 @@ local L = {} Languages["en-us"] = L L["Name"] = "English (United States)" +-- Convars +L["Convar.cam_f.Name"] = "Camera Forward Offset" +L["Convar.cam_f.Description"] = "" + +L["Convar.cam_fov.Name"] = "Camera FOV" +L["Convar.cam_fov.Description"] = "Field-of-view of the camera, horizontally, in 4:3 (further in higher aspect-ratios)" + +L["Convar.cam_fp.Name"] = "First-person Mode" +L["Convar.cam_fp.Description"] = "First-person perspective" + +L["Convar.cam_fp_fov.Name"] = "First-person weapon FOV" +L["Convar.cam_fp_fov.Description"] = "How close objects in the player's hand will appear" + +L["Convar.cam_r.Name"] = "Camera Right Offset" +L["Convar.cam_r.Description"] = "" + +L["Convar.cam_u.Name"] = "Camera Up Offset" +L["Convar.cam_u.Description"] = "" + +L["Convar.cheat_endround.Name"] = "Cheat: End Round" +L["Convar.cheat_endround.Description"] = "Cheat" + +L["Convar.cheat_rewardxp.Name"] = "Cheat: Reward XP" +L["Convar.cheat_rewardxp.Description"] = "Cheat" + +L["Convar.cheat_setxp.Name"] = "Cheat: Set XP" +L["Convar.cheat_setxp.Description"] = "Cheat" + +L["Convar.cheat_scoreadd.Name"] = "Cheat: Add Score" +L["Convar.cheat_scoreadd.Description"] = "Cheat" + +L["Convar.cheat_scoreset.Name"] = "Cheat: Set Score" +L["Convar.cheat_scoreset.Description"] = "Cheat" + +L["Convar.cheat_setstate.Name"] = "Cheat: Set Game State" +L["Convar.cheat_setstate.Description"] = "Cheat" + +L["Convar.cheat_setteam.Name"] = "Cheat: Set Team" +L["Convar.cheat_setteam.Description"] = "Cheat" + +L["Convar.debug_listbones.Name"] = "debug_listbones" +L["Convar.debug_listbones.Description"] = "List all bones of the current character" + +L["Convar.g_intermission.Name"] = "g_intermission" +L["Convar.g_intermission.Description"] = "Intermission time" + +L["Convar.g_minplayers.Name"] = "g_minplayers" +L["Convar.g_minplayers.Description"] = "Minimal players necessary to start the game" + +L["Convar.g_pregame.Name"] = "g_pregame" +L["Convar.g_pregame.Description"] = "Pre-game time" + +L["Convar.g_postgame.Name"] = "g_postgame" +L["Convar.g_postgame.Description"] = "Post-game time" + +L["Convar.g_snd_scorelimit.Name"] = "g_snd_scorelimit" +L["Convar.g_snd_scorelimit.Description"] = "Search and Destroy: Score Limit" + +L["Convar.g_snd_timelimit.Name"] = "g_snd_timelimit" +L["Convar.g_snd_timelimit.Description"] = "Search and Destroy: Time Limit" + +L["Convar.g_tdm_scorelimit.Name"] = "g_tdm_scorelimit" +L["Convar.g_tdm_scorelimit.Description"] = "Team Deathmatch: Score Limit" + +L["Convar.g_tdm_timelimit.Name"] = "g_tdm_timelimit" +L["Convar.g_tdm_timelimit.Description"] = "Team Deathmatch: Time Limit" + +L["Convar.g_ctf_scorelimit.Name"] = "g_ctf_scorelimit" +L["Convar.g_ctf_scorelimit.Description"] = "Capture the Flag: Score Limit" + +L["Convar.g_ctf_timelimit.Name"] = "g_ctf_timelimit" +L["Convar.g_ctf_timelimit.Description"] = "Capture the Flag: Time Limit" + +L["Convar.g_dem_scorelimit.Name"] = "g_dem_scorelimit" +L["Convar.g_dem_scorelimit.Description"] = "Demolition: Score Limit" + +L["Convar.g_dem_timelimit.Name"] = "g_dem_timelimit" +L["Convar.g_dem_timelimit.Description"] = "Demolition: Time Limit" + +L["Convar.g_dom_roundlimit.Name"] = "g_dom_roundlimit" +L["Convar.g_dom_roundlimit.Description"] = "Domination: Round Limit" + +L["Convar.g_dom_scorelimit.Name"] = "g_dom_scorelimit" +L["Convar.g_dom_scorelimit.Description"] = "Domination: Score Limit" + +L["Convar.g_dom_timelimit.Name"] = "g_dom_timelimit" +L["Convar.g_dom_timelimit.Description"] = "Domination: Time Limit" + +L["Convar.g_ffa_scorelimit.Name"] = "g_ffa_scorelimit" +L["Convar.g_ffa_scorelimit.Description"] = "Free For All: Score Limit" + +L["Convar.g_ffa_timelimit.Name"] = "g_ffa_timelimit" +L["Convar.g_ffa_timelimit.Description"] = "Free For All: Time Limit" + +L["Convar.g_hp_scorelimit.Name"] = "g_hp_scorelimit" +L["Convar.g_hp_scorelimit.Description"] = "Hardpoint: Score Limit" + +L["Convar.g_hp_timelimit.Name"] = "g_hp_timelimit" +L["Convar.g_hp_timelimit.Description"] = "Hardpoint: Time Limit" + +L["Convar.gamemode.Name"] = "Gamemode" +L["Convar.gamemode.Description"] = "Game mode" + +L["Convar.gametype.Name"] = "Gametype" +L["Convar.gametype.Description"] = "Game type: SP or MP" + +-- Gamemodes +L["Gamemode.free.Name"] = "Freeplay" +L["Gamemode.free.Description"] = "Objectiveless free-roam." + +L["Gamemode.tdm.Name"] = "Team Deathmatch" +L["Gamemode.tdm.Description"] = "Several teams fight to the death for the most kills." + +L["Gamemode.ffa.Name"] = "Free-for-all" +L["Gamemode.ffa.Description"] = "Every man for himself." + +L["Gamemode.snd.Name"] = "Search and Destroy" +L["Gamemode.snd.Description"] = "One half tries to plant a bomb while the other half attempts to stop it." + +L["Gamemode.ctf.Name"] = "Capture the Flag" +L["Gamemode.ctf.Description"] = "Bring your enemies flags to your base." + +L["Gamemode.dom.Name"] = "Domination" +L["Gamemode.dom.Description"] = "Several teams fight to hold capture points for the longest amount of time" + +L["Gamemode.dem.Name"] = "Demolition" +L["Gamemode.dem.Description"] = "One half tries to destroy the other halves objectives." + +L["Gamemode.hp.Name"] = "Hardpoint" +L["Gamemode.hp.Description"] = "Several teams fight to hold a singular capture point for the longest amount of time." + -- Teams -L["#Team.cia.Name"] = "CIA" -L["#Team.cia.Description"] = "CIA black ops, coverup crew" +L["Team.cia.Name"] = "CIA" +L["Team.cia.Description"] = "CIA black ops, coverup crew" -L["#Team.halo.Name"] = "HALO" -L["#Team.halo.Description"] = "Assassination agency?" +L["Team.halo.Name"] = "HALO" +L["Team.halo.Description"] = "Assassination agency?" -L["#Team.plasof.Name"] = "PLASOF" -L["#Team.plasof.Description"] = "People's Liberation Army Special Operations Forces" +L["Team.plasof.Name"] = "PLASOF" +L["Team.plasof.Description"] = "People's Liberation Army Special Operations Forces" -L["#Team.arng.Name"] = "NATIONAL GUARD" -L["#Team.arng.Description"] = "United States National Guard" +L["Team.arng.Name"] = "NATIONAL GUARD" +L["Team.arng.Description"] = "United States National Guard" -L["#Team.militia.Name"] = "MILITIA" -L["#Team.militia.Description"] = "Brazilian militia??? what" +L["Team.militia.Name"] = "MILITIA" +L["Team.militia.Description"] = "Brazilian militia??? what" -L["#Team.viper.Name"] = "VIPERS" -L["#Team.viper.Description"] = "Gang" +L["Team.viper.Name"] = "VIPERS" +L["Team.viper.Description"] = "Gang" -- Items -L["#Item.mk23.Name"] = "MK.23" -L["#Item.mk23.Description"] = "Special forces sidearm" +L["Item.mk23.Name"] = "MK.23" +L["Item.mk23.Description"] = "Special forces sidearm" -L["#Item.fnc.Name"] = "FNC Para" -L["#Item.fnc.Description"] = "Imported assault rifle" +L["Item.cz75.Name"] = "CZ-75" +L["Item.cz75.Description"] = "Rugged semi-automatic handgun" -L["#Item.qbz.Name"] = "QBZ-95" -L["#Item.qbz.Description"] = "Low-profile bullpup assault rifle" +L["Item.g18.Name"] = "G18" +L["Item.g18.Description"] = "Automatic machine pistol" -L["#Item.qbb.Name"] = "QBB-LSW" -L["#Item.qbb.Description"] = "Bullpup machine gun" +L["Item.fnc.Name"] = "FNC Para" +L["Item.fnc.Description"] = "Imported assault rifle" -L["#Item.stoner.Name"] = "STONER-63" -L["#Item.stoner.Description"] = "Modular machine gun" +L["Item.qbz.Name"] = "QBZ-95" +L["Item.qbz.Description"] = "Low-profile bullpup assault rifle" -L["#Item.hk21.Name"] = "HK-21" -L["#Item.hk21.Description"] = "Powerful medium machine gun" +L["Item.qbb.Name"] = "QBB-LSW" +L["Item.qbb.Description"] = "Bullpup machine gun" -L["#Item.m16a2.Name"] = "M16A2" -L["#Item.m16a2.Description"] = "Rugged burst rifle" +L["Item.stoner.Name"] = "STONER-63" +L["Item.stoner.Description"] = "Modular machine gun" -L["#Item.oicw.Name"] = "OICW" -L["#Item.oicw.Description"] = "Advanced combat rifle" +L["Item.hk21.Name"] = "HK-21" +L["Item.hk21.Description"] = "Powerful medium machine gun" -L["#Item.spas12.Name"] = "SPAS-12" -L["#Item.spas12.Description"] = "Chrome-lined autoshotgun" +L["Item.m16a2.Name"] = "M16A2" +L["Item.m16a2.Description"] = "Rugged burst rifle" -L["#Item.tmp.Name"] = "TMP" -L["#Item.tmp.Description"] = "Concealable machine pistol" +L["Item.oicw.Name"] = "OICW" +L["Item.oicw.Description"] = "Advanced combat rifle" -L["#Item.mp5k.Name"] = "MP5K" -L["#Item.mp5k.Description"] = "High-quality SMG" +L["Item.spas12.Name"] = "SPAS-12" +L["Item.spas12.Description"] = "Chrome-lined autoshotgun" -L["#Item.mp7.Name"] = "MP7" -L["#Item.mp7.Description"] = "Special forces PDW" +L["Item.tmp.Name"] = "TMP" +L["Item.tmp.Description"] = "Concealable machine pistol" -L["#Item.mac11.Name"] = "MAC-11" -L["#Item.mac11.Description"] = "Tiny hornet gun" +L["Item.mp5k.Name"] = "MP5K" +L["Item.mp5k.Description"] = "High-quality SMG" -L["#Item.1887.Name"] = "1887" -L["#Item.1887.Description"] = "Lever-action" +L["Item.mp7.Name"] = "MP7" +L["Item.mp7.Description"] = "Special forces PDW" -L["#Item.db.Name"] = "DB" -L["#Item.db.Description"] = "Side-by-side shotgun" +L["Item.mac11.Name"] = "MAC-11" +L["Item.mac11.Description"] = "Tiny hornet gun" -L["#Item.aa12.Name"] = "AA-12" -L["#Item.aa12.Description"] = "Automatic combat shotgun" +L["Item.1887.Name"] = "1887" +L["Item.1887.Description"] = "Lever-action" -L["#Item.striker.Name"] = "Streetsweeper" -L["#Item.striker.Description"] = "Semi-automatic drum-fed shotgun" +L["Item.db.Name"] = "DB" +L["Item.db.Description"] = "Side-by-side shotgun" -L["#Item.r870.Name"] = "R870" -L["#Item.r870.Description"] = "Sawn-off pump-action shotgun" +L["Item.aa12.Name"] = "AA-12" +L["Item.aa12.Description"] = "Automatic combat shotgun" -L["#Item.spas15.Name"] = "SPAS-15" -L["#Item.spas15.Description"] = "Mag-fed pump-action shotgun" +L["Item.striker.Name"] = "Streetsweeper" +L["Item.striker.Description"] = "Semi-automatic drum-fed shotgun" -L["#Item.satchels.Name"] = "Satchels" -L["#Item.satchels.Description"] = "Packs of bombs and a detonator" +L["Item.r870.Name"] = "R870" +L["Item.r870.Description"] = "Sawn-off pump-action shotgun" -L["#Item.toolgun.Name"] = "Tool gun" -L["#Item.toolgun.Description"] = "Developer tools" \ No newline at end of file +L["Item.spas15.Name"] = "SPAS-15" +L["Item.spas15.Description"] = "Mag-fed pump-action shotgun" + +L["Item.satchels.Name"] = "Satchels" +L["Item.satchels.Description"] = "Packs of bombs and a detonator" + +L["Item.toolgun.Name"] = "Tool gun" +L["Item.toolgun.Description"] = "Developer tools" \ No newline at end of file diff --git a/gamemodes/benny/gamemode/pausemenu.lua b/gamemodes/benny/gamemode/pausemenu.lua index 0a5b49a..e03e7c2 100644 --- a/gamemodes/benny/gamemode/pausemenu.lua +++ b/gamemodes/benny/gamemode/pausemenu.lua @@ -14,12 +14,12 @@ local settings = { { name = "Camera", items = { - { type = TYPE_NUMBER, cvar = "b-cam_f", min = -200, max = 200, name = "Camera Forward" }, - { type = TYPE_NUMBER, cvar = "b-cam_r", min = -30, max = 30, name = "Camera Right" }, - { type = TYPE_NUMBER, cvar = "b-cam_u", min = -30, max = 30, name = "Camera Up" }, - { type = TYPE_NUMBER, cvar = "b-cam_fov", min = 30, max = 120, name = "Camera FOV" }, - { type = TYPE_BOOL, cvar = "b-cam_fp", name = "First-person Mode" }, - { type = TYPE_NUMBER, cvar = "b-cam_fp_fov", min = 30, max = 120, name = "FP weapon FOV" }, + { type = TYPE_NUMBER, cvar = "cam_f", min = -200, max = 200 }, + { type = TYPE_NUMBER, cvar = "cam_r", min = -30, max = 30 }, + { type = TYPE_NUMBER, cvar = "cam_u", min = -30, max = 30 }, + { type = TYPE_NUMBER, cvar = "cam_fov", min = 30, max = 120 }, + { type = TYPE_BOOL, cvar = "cam_fp" }, + { type = TYPE_NUMBER, cvar = "cam_fp_fov", min = 30, max = 120 }, } }, { @@ -80,17 +80,17 @@ local entries = { SP:AddItem(Cat) for index, data in ipairs( data.items ) do - if !data.cvarpointer then data.cvarpointer = GetConVar(data.cvar) end + if !data.cvarpointer then data.cvarpointer = GetConVar("b-" .. data.cvar) end if data.type == TYPE_BOOL then local Changer = vgui.Create("DCheckBoxLabel", Cat) Changer:Dock( TOP ) - Changer:SetConVar( data.cvar ) - Changer:SetText( data.name ) + Changer:SetConVar( "b-" .. data.cvar ) + Changer:SetText( l8( "#Convar." .. data.cvar .. ".Name" ) ) elseif data.type == TYPE_NUMBER then local Changer = vgui.Create("DNumSlider", Cat) Changer:Dock( TOP ) - Changer:SetConVar( data.cvar ) - Changer:SetText( data.name ) + Changer:SetConVar( "b-" .. data.cvar ) + Changer:SetText( l8( "#Convar." .. data.cvar .. ".Name" ) ) Changer:SetMin( data.min ) Changer:SetMax( data.max ) Changer:SetDecimals( 0 ) diff --git a/gamemodes/benny/gamemode/shared.lua b/gamemodes/benny/gamemode/shared.lua index 57bd0ac..3ca948e 100644 --- a/gamemodes/benny/gamemode/shared.lua +++ b/gamemodes/benny/gamemode/shared.lua @@ -42,8 +42,13 @@ function TSelShared( tbl, seed ) return tbl[math.Round( util.SharedRandom( seed, 1, #tbl ) )] end +-- Language might want to be loaded first +-- Otherwise things will fail to call 'l8' AC("language.lua") IN("language.lua") + +AC("convars.lua") +IN("convars.lua") AC("camera.lua") IN("camera.lua") AC("items.lua")