diff options
Diffstat (limited to 'gamemode/server/player_functions.lua')
| -rw-r--r-- | gamemode/server/player_functions.lua | 74 |
1 files changed, 73 insertions, 1 deletions
diff --git a/gamemode/server/player_functions.lua b/gamemode/server/player_functions.lua index 51b7a63..093b20a 100644 --- a/gamemode/server/player_functions.lua +++ b/gamemode/server/player_functions.lua @@ -237,7 +237,7 @@ function PlayerMeta:CreateStructureBuildingSite( pos, angle, model, class, cost, "models/props_lab/reciever_cart.mdl", "models/props_trainstation/trainstation_clock001.mdl" } - + local rep = ents.Create( "gms_buildsite" ) local str = ":" for k, v in pairs( cost ) do @@ -516,3 +516,75 @@ function PlayerMeta:Wakeup() self:SendMessage( "Ah, nothing like a good nights sleep!", 5, Color( 255, 255, 255, 255 ) ) end end + +function PlayerMeta:UpdatePlayerColor() + local col = self:GetInfo( "cl_playercolor" ) + if ( GetConVarNumber( "gms_TeamColors" ) > 0 ) then + local tcol = team.GetColor( self:Team() ) + col = tcol.r / 255 .. " " .. tcol.g / 255 .. " " .. tcol.b / 255 + end + self:SetPlayerColor( Vector( col ) ) +end + +function PlayerMeta:ResetCharacter() + + self.Skills = {} + self.Resources = {} + self.Experience = {} + self.FeatureUnlocks = {} + + self:SetSkill( "Survival", 0 ) + self:SetXP( "Survival", 0 ) + self.MaxResources = 25 + + self:SaveCharacter() + + umsg.Start( "gms_ResetPlayer", ply ) + umsg.End() + +end + +function PlayerMeta:SaveCharacter() + if ( !file.IsDir( "gmstranded", "DATA" ) ) then file.CreateDir( "gmstranded" ) end + if ( !file.IsDir( "gmstranded/saves", "DATA" ) ) then file.CreateDir( "gmstranded/saves" ) end + if ( !self.Loaded ) then + print( "Player " .. self:Name() .. " tried to save before he has loaded!" ) + self:SendMessage( "Character save failed: Not yet loaded!", 3, Color( 255, 50, 50, 255 ) ) + return + end + + local tbl = {} + tbl["date"] = os.date( "%A %m/%d/%y" ) + tbl["name"] = self:Nick() + + tbl["skills"] = self.Skills + tbl["experience"] = self.Experience + tbl["unlocks"] = self.FeatureUnlocks + + tbl["resources"] = {} + tbl["weapons"] = {} + tbl["ammo"] = {} + + for k, v in pairs( self.Resources ) do + if ( v > 0 ) then tbl["resources"][ k ] = v end + end + + for id, wep in pairs( self:GetWeapons() ) do + if ( wep:GetClass() != "gms_fists" || wep:GetClass() != "weapon_physgun" || wep:GetClass() != "weapon_physcannon" ) then + table.insert( tbl[ "weapons" ], wep:GetClass() ) + end + end + + local ammo_types = { "ar2", "smg1", "pistol", "buckshot", "357", "grenade", "alyxgun", "xbowbolt", "AlyxGun", "RPG_Round","SMG1_Grenade", "SniperRound", + "SniperPenetratedRound", "Grenade", "Thumper", "Gravity", "Battery", "GaussEnergy", "CombineCannon", "AirboatGun", "StriderMinigun", "StriderMinigunDirect", + "HelicopterGun", "AR2AltFire", "Grenade", "Hopwire", "CombineHeavyCannon", "ammo_proto1" + } + + for id, str in pairs( ammo_types ) do + local ammo = self:GetAmmoCount( str ) + if ( ammo > 0 ) then tbl[ "ammo" ][ str ] = ammo end + end + + file.Write( "gmstranded/saves/" .. self:UniqueID() .. ".txt", util.TableToJSON( tbl ) ) + self:SendMessage( "Saved character!", 3, Color( 255, 255, 255 ) ) +end |
