diff options
| -rw-r--r-- | gamemode/init.lua | 72 | ||||
| -rw-r--r-- | gamemode/server/player_functions.lua | 74 |
2 files changed, 74 insertions, 72 deletions
diff --git a/gamemode/init.lua b/gamemode/init.lua index 7d16b4f..98c541d 100644 --- a/gamemode/init.lua +++ b/gamemode/init.lua @@ -1327,77 +1327,7 @@ function GM:ShutDown() for k, v in pairs( player.GetAll() ) do v:SaveCharacter() 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 +//Moved to player_functions.lua concommand.Add( "gms_savecharacter", function( ply, cmd, args ) if ( ply.GMSLastSave && ply.GMSLastSave > CurTime() ) then ply:SendMessage( "You must wait " .. math.floor( ply.GMSLastSave - CurTime() ) .. " seconds before saving again.", 3, Color( 255, 50, 50, 255 ) ) return end 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 |
