From 8febb9f9de5d7dea4e84fe4e28b216a23b8847f6 Mon Sep 17 00:00:00 2001 From: Dadido3 Date: Thu, 13 Oct 2016 23:59:52 +0200 Subject: [PATCH] Optimizations --- XP Spreadsheet.ods | Bin 15951 -> 17079 bytes lua/d3stats/gamemodes/sv_zombiesurvival.lua | 12 ++++++--- lua/d3stats/sh_concommand.lua | 2 +- lua/d3stats/sh_settings.lua | 26 +++++++++++--------- lua/d3stats/sv_map.lua | 14 ++++++----- 5 files changed, 32 insertions(+), 22 deletions(-) diff --git a/XP Spreadsheet.ods b/XP Spreadsheet.ods index 34e38174219695d0750843d5e87bb5648593fd4b..ec69bde0f45c63a77fda8aaa47ac3687d101c8a3 100644 GIT binary patch delta 14977 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 oldLevel then + ply:CenterNotify( Color( 0, 255, 255 ), string.format( d3stats.Message.Level_Ascended, Level, d3stats.Levels[Level].Name ) ) + else + ply:CenterNotify( Color( 0, 255, 255 ), string.format( d3stats.Message.Level_Changed, Level, d3stats.Levels[Level].Name ) ) + end end ) -- Handle "Use_Hammer" permission. TODO: Only prevent that the person can nail things hook.Add( "PlayerSwitchWeapon", "D3Stats_ZS_EquipHammer", function( ply, oldWeapon, newWeapon ) local Class = newWeapon:GetClass() - if not ply:D3Stats_HasPermission( "Use_Hammer" ) then - if Class == "weapon_zs_hammer" or Class == "weapon_zs_electrohammer" then - ply:CenterNotify( Color( 255, 0, 0 ), string.format( d3stats.Disallow_Hold_Hammer, d3stats.GetPermissionLevel( "Use_Hammer" ) ) ) + if Class == "weapon_zs_hammer" or Class == "weapon_zs_electrohammer" then + if not ply:D3Stats_HasPermission( "Use_Hammer" ) then + ply:CenterNotify( Color( 255, 0, 0 ), string.format( d3stats.Message.Disallow_Hold_Hammer, d3stats.GetPermissionLevel( "Use_Hammer" ) ) ) return true end end diff --git a/lua/d3stats/sh_concommand.lua b/lua/d3stats/sh_concommand.lua index 321a728..5c7bda9 100644 --- a/lua/d3stats/sh_concommand.lua +++ b/lua/d3stats/sh_concommand.lua @@ -1,7 +1,7 @@ if SERVER then concommand.Add( "d3stats_clearall", function( ply, cmd, args ) - print( "Test asd asdasdasd!" ) + print( "What the hell are you doing?" ) end ) end \ No newline at end of file diff --git a/lua/d3stats/sh_settings.lua b/lua/d3stats/sh_settings.lua index 7899faa..766410c 100644 --- a/lua/d3stats/sh_settings.lua +++ b/lua/d3stats/sh_settings.lua @@ -5,19 +5,19 @@ Settings and level definitions are stored in here ]] -- Permissions --- Everything not in this list will be allowed by default --- AllowIfLessThan: If the amount of players who have the permission is lower than this number, allow it anyway --- Team: Reduces count to the specified team. In ZS: TEAM_SURVIVOR = 4, +-- - Everything not in this list will be allowed by default +-- - AllowIfLessThan: If the amount of players who have the permission is lower than this number, allow it anyway +-- - Team: Reduces count to the specified team. In ZS: TEAM_SURVIVOR = 4, d3stats.Permissions = { - ["Buy_Hammer"] = { AllowIfLessThan = 4, Team = 4 }, - ["Use_Hammer"] = { AllowIfLessThan = 4, Team = 4 }, + --["Buy_Hammer"] = { AllowIfLessThan = 4, Team = 4 }, + --["Use_Hammer"] = { AllowIfLessThan = 4, Team = 4 }, } -- Levels, please sort by XP d3stats.Levels = { - { XP_needed = 500, Name = "Citizen" }, + { XP_needed = 500, Name = "Kleiner" }, { XP_needed = 1370, Name = "Survivor" }, - { XP_needed = 2612, Name = "Rogue" }, + { XP_needed = 2612, Name = "Helper" }, { XP_needed = 4225, Name = "Engineer", Permissions = { ["Buy_Hammer"] = true, ["Use_Hammer"] = true } }, { XP_needed = 6209, Name = "Scout" }, { XP_needed = 8564, Name = "Officer" }, @@ -49,6 +49,7 @@ d3stats.Levels = { { XP_needed = 200000, Name = "God" }, } +-- Human reward settings d3stats.PlayerPointsAdded_Limit = 200 -- Ignore all "PlayerPointsAdded" callbacks above this XP value -- Zombie reward is calculated as follows: Reward = math.clamp( Static + Fraction * Human_Points, Min, Max ) @@ -58,10 +59,13 @@ d3stats.ZombieKilledHuman_Max = 1000 -- Upper XP reward clamp d3stats.ZombieKilledHuman_Min = 0 -- Lower XP reward clamp -- Messages TODO: Multilanguage -d3stats.Disallow_Hold_Hammer = "You can't use the hammer until you have reached level %i" -d3stats.MapStats_Zero = "We are playing %s." -- Message to players who just joined -d3stats.MapStats = "We are playing %s. Humans won %i of %i times (%.1f%%)" -- Message to players who just joined (With statistics) -d3stats.MapStats_End = "%s has been won %i of %i times (%.1f%%)" -- Message to all players at the end of the round (With statistics) +d3stats.Message = {} +d3stats.Message.Level_Ascended = "You ascended to level %i \"%s\"" +d3stats.Message.Level_Changed = "Your level changed to level %i \"%s\"" +d3stats.Message.Disallow_Hold_Hammer = "You can't use the hammer until you have reached level %i" +d3stats.Message.MapStats_Zero = "We are playing %s." -- Message to players who just joined +d3stats.Message.MapStats = "We are playing %s. Humans won %i of %i times (%.1f%%)" -- Message to players who just joined (With statistics) +d3stats.Message.MapStats_End = "%s has been won %i of %i times (%.1f%%)" -- Message to all players at the end of the round (With statistics) if CLIENT then -- Overlay positions diff --git a/lua/d3stats/sv_map.lua b/lua/d3stats/sv_map.lua index 3ad8df9..4f12a51 100644 --- a/lua/d3stats/sv_map.lua +++ b/lua/d3stats/sv_map.lua @@ -5,12 +5,12 @@ function d3stats.Map_Message( roundend, ply ) local Message if count > 0 then if roundend == true then - Message = string.format( d3stats.MapStats_End, map, wins, count, wins / count * 100 ) + Message = string.format( d3stats.Message.MapStats_End, map, wins, count, wins / count * 100 ) else - Message = string.format( d3stats.MapStats, map, wins, count, wins / count * 100 ) + Message = string.format( d3stats.Message.MapStats, map, wins, count, wins / count * 100 ) end else - Message = string.format( d3stats.MapStats_Zero, map ) + Message = string.format( d3stats.Message.MapStats_Zero, map ) end if ply then @@ -22,10 +22,12 @@ end function d3stats.Map_End( won ) local map = game.GetMap() + local players = #player.GetAll() - d3stats.Storage.Map_AddOutcome( map, won, #player.GetAll() ) - - d3stats.Map_Message( true ) + if players > 0 then + d3stats.Storage.Map_AddOutcome( map, won, players ) + d3stats.Map_Message( true ) + end end --d3stats.Map_End( false )