diff options
| author | Alexander Pickering <alexandermpickering@gmail.com> | 2016-04-16 12:37:24 -0400 |
|---|---|---|
| committer | Alexander Pickering <alexandermpickering@gmail.com> | 2016-04-16 12:37:24 -0400 |
| commit | 31a40cca9772b62baea8bb3a2a3a872e128ec9d9 (patch) | |
| tree | 169620a0050a4ed83ecab3804fa24ecebd78aab8 /gamemode | |
| parent | 95bf646ef4610252f0899948d5999bc4988732b3 (diff) | |
| download | gmstranded-31a40cca9772b62baea8bb3a2a3a872e128ec9d9.tar.gz gmstranded-31a40cca9772b62baea8bb3a2a3a872e128ec9d9.tar.bz2 gmstranded-31a40cca9772b62baea8bb3a2a3a872e128ec9d9.zip | |
Moved admin commands from init.lua to admin_commands.lua
Diffstat (limited to 'gamemode')
| -rw-r--r-- | gamemode/init.lua | 218 | ||||
| -rw-r--r-- | gamemode/server/admin_commands.lua | 217 |
2 files changed, 218 insertions, 217 deletions
diff --git a/gamemode/init.lua b/gamemode/init.lua index 06d7d8c..8861d06 100644 --- a/gamemode/init.lua +++ b/gamemode/init.lua @@ -317,223 +317,7 @@ timer.Simple( 60, function() GAMEMODE.ReproduceTrees() end ) Admin commands ---------------------------------------------------------------------------------------------------- */ -concommand.Add( "gms_admin_maketree", function( ply ) - if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end - local tr = ply:TraceFromEyes( 10000 ) - GAMEMODE.MakeTree( tr.HitPos ) -end ) - -concommand.Add( "gms_admin_makerock", function( ply ) - if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end - local tr = ply:TraceFromEyes( 10000 ) - GAMEMODE.MakeGenericPlant( ply, tr.HitPos, GMS.RockModels[ math.random( 1, #GMS.RockModels ) ], true ) -end ) - -concommand.Add( "gms_admin_makefood", function( ply ) - if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end - local tr = ply:TraceFromEyes( 10000 ) - local ent = ents.Create( "prop_physics" ) - ent:SetAngles( Angle( 0, math.random( 1, 360 ), 0 ) ) - ent:SetModel( GMS.EdibleModels[math.random( 1, #GMS.EdibleModels )] ) - ent:SetPos( tr.HitPos + Vector( 0, 0, 10 ) ) - ent:Spawn() - SPropProtection.PlayerMakePropOwner( ply, ent ) -end ) - -concommand.Add( "gms_admin_makeantlionbarrow", function( ply, cmd, args ) - if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end - if ( !args[1] ) then ply:SendMessage( "Specify max antlions!", 3, Color( 200, 0, 0, 255 ) ) return end - local tr = ply:TraceFromEyes( 10000 ) - local ent = ents.Create( "gms_antlionbarrow" ) - ent:SetPos( tr.HitPos ) - ent:Spawn() - ent:SetNetworkedString( "Owner", "World" ) - ent:SetKeyValue( "MaxAntlions", args[1] ) -end ) - -concommand.Add( "gms_admin_makeplant", function( ply, cmd, args ) - if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end - - local tr = ply:TraceFromEyes( 10000 ) - local typ = tonumber( args[ 1 ] ) or math.random( 1, 5 ) - local pos = tr.HitPos - - if ( typ == 1 ) then - GAMEMODE.MakeMelon( pos, math.random( 1, 3 ), ply ) - elseif ( typ == 2 ) then - GAMEMODE.MakeBanana( pos, math.random( 1, 3 ), ply ) - elseif ( typ == 3 ) then - GAMEMODE.MakeOrange( pos, math.random( 1, 3 ), ply ) - elseif ( typ == 4 ) then - GAMEMODE.MakeBush( pos, ply ) - elseif ( typ == 5 ) then - GAMEMODE.MakeGrain( pos, ply ) - end -end ) - -concommand.Add( "gms_admin_populatearea", function( ply, cmd, args ) - if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end - if ( !args[1] or !args[2] or !args[3] ) then ply:SendMessage( "You need to specify <type> <amount> <radius>", 3, Color( 200, 0, 0, 255 ) ) return end - - for k, v in pairs( player.GetAll() ) do - v:SendMessage( "Populating area...", 3, Color( 255, 255, 255, 255 ) ) - end - - --Population time - local Amount = tonumber( args[2] ) or 10 - local info = {} - info.Amount = Amount - - if ( Amount > 200 ) then - ply:SendMessage( "Auto-capped at 200 props.", 3, Color( 200, 0, 0, 255 ) ) - info.Amount = 200 - end - - local Type = args[1] - local Amount = info.Amount - local Radius = tonumber( args[3] ) or 1000 - - --Find playertrace - local plytrace = ply:TraceFromEyes( 10000 ) - - for i = 1, Amount do - info.pos = plytrace.HitPos + Vector( math.random( -Radius, Radius ), math.random( -Radius, Radius ), 1000 ) - info.Retries = 50 - - --Find pos in world - while ( util.IsInWorld( info.pos ) == false and info.Retries > 0 ) do - info.pos = plytrace.HitPos + Vector( math.random( -Radius, Radius ), math.random( -Radius, Radius ), 1000 ) - info.Retries = info.Retries - 1 - end - - --Find ground - local trace = {} - trace.start = info.pos - trace.endpos = trace.start + Vector( 0, 0, -100000 ) - trace.mask = MASK_SOLID_BRUSHONLY - - local groundtrace = util.TraceLine( trace ) - - --Assure space - local nearby = ents.FindInSphere( groundtrace.HitPos, 200 ) - info.HasSpace = true - - for k, v in pairs( nearby ) do - if ( v:IsProp() ) then - info.HasSpace = false - end - end - - --Find sky - local trace = {} - trace.start = groundtrace.HitPos - trace.endpos = trace.start + Vector( 0, 0, 100000 ) - - local skytrace = util.TraceLine( trace ) - - --Find water? - local trace = {} - trace.start = groundtrace.HitPos - trace.endpos = trace.start + Vector( 0, 0, 1 ) - trace.mask = MASK_WATER - - local watertrace = util.TraceLine( trace ) - - --All a go, make entity - if ( Type == "Trees" ) then - if ( info.HasSpace and skytrace.HitSky and !watertrace.Hit and ( groundtrace.MatType == MAT_DIRT or groundtrace.MatType == MAT_GRASS or groundtrace.MatType == MAT_SAND ) ) then - GAMEMODE.MakeTree( groundtrace.HitPos ) - end - elseif ( Type == "Rocks" ) then - if ( !watertrace.Hit and ( groundtrace.MatType == MAT_DIRT or groundtrace.MatType == MAT_GRASS or groundtrace.MatType == MAT_SAND ) ) then - local ent = ents.Create( "prop_physics" ) - ent:SetAngles( Angle( 0, math.random( 1, 360 ), 0 ) ) - ent:SetModel( GMS.RockModels[math.random( 1, #GMS.RockModels )] ) - ent:SetPos( groundtrace.HitPos ) - ent:Spawn() - ent:SetNetworkedString( "Owner", "World" ) - ent:Fadein() - ent.PhysgunDisabled = true - ent:GetPhysicsObject():EnableMotion( false ) - end - elseif ( Type == "Random_Plant" and info.HasSpace ) then - if ( !watertrace.Hit and ( groundtrace.MatType == MAT_DIRT or groundtrace.MatType == MAT_GRASS or groundtrace.MatType == MAT_SAND ) ) then - local typ = math.random( 1, 5 ) - local pos = groundtrace.HitPos - - if ( typ == 1 ) then - GAMEMODE.MakeMelon( pos,math.random( 1, 2 ), ply ) - elseif ( typ == 2 ) then - GAMEMODE.MakeBanana( pos,math.random( 1, 2 ), ply ) - elseif ( typ == 3 ) then - GAMEMODE.MakeOrange( pos,math.random( 1, 2 ), ply ) - elseif ( typ == 4 ) then - GAMEMODE.MakeBush( pos, ply ) - elseif ( typ == 5 ) then - GAMEMODE.MakeGrain( pos, ply ) - end - end - end - end - - --Finished - for k, v in pairs( player.GetAll() ) do - v:SendMessage( "Done!", 3, Color( 255, 255, 255, 255 ) ) - end -end ) - -concommand.Add( "gms_admin_clearmap", function( ply ) - if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end - - for k, v in pairs( ents.GetAll() ) do - if ( v:IsRockModel() or v:IsTreeModel() ) then - for k, tbl in pairs( GAMEMODE.RisingProps ) do - if ( tbl.Entity == v ) then - table.remove( GAMEMODE.RisingProps, k ) - end - end - for k, tbl in pairs( GAMEMODE.SinkingProps ) do - if ( tbl.Entity == v ) then - table.remove( GAMEMODE.SinkingProps, k ) - end - end - for k, ent in pairs( GAMEMODE.FadingInProps ) do - if ( ent == v ) then - table.remove( GAMEMODE.FadingInProps, k ) - end - end - v:Fadeout() - end - end - - for k, v in pairs( player.GetAll() ) do v:SendMessage( "Cleared map.", 3, Color( 255, 255, 255, 255 ) ) end -end ) - -concommand.Add( "gms_admin_saveallcharacters", function( ply ) - if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end - - for k, v in pairs( player.GetAll() ) do - v:SaveCharacter() - end - - ply:SendMessage( "Saved characters on all current players.", 3, Color( 255, 255, 255, 255 ) ) -end ) - -function GM.ADropResource( ply, cmd, args ) - if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end - if ( args == nil or args[1] == nil ) then ply:SendMessage( "You need to at least give a resource type!", 3, Color( 200, 0, 0, 255 ) ) return end - - args[1] = string.Capitalize( args[1] ) - if ( args[2] == nil or string.lower( args[2] ) == "all" ) then args[2] = tostring( ply:GetResource( args[1] ) ) end - if ( tonumber( args[2] ) <= 0 ) then ply:SendMessage( "No zeros/negatives!", 3, Color( 200, 0, 0, 255 ) ) return end - - local int = tonumber( args[2] ) - local Type = args[1] - - ply:DropResource( Type, int ) - ply:SendMessage( "Dropped " .. string.Replace( Type, "_", " " ) .. " ( " .. int .. "x )", 3, Color( 10, 200, 10, 255 ) ) -end -concommand.Add( "gms_ADropResources", GM.ADropResource ) +//Moved to admin_commands.lua /* ---------------------------------------------------------------------------------------------------- Console Commands diff --git a/gamemode/server/admin_commands.lua b/gamemode/server/admin_commands.lua new file mode 100644 index 0000000..284792c --- /dev/null +++ b/gamemode/server/admin_commands.lua @@ -0,0 +1,217 @@ +concommand.Add( "gms_admin_maketree", function( ply ) + if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end + local tr = ply:TraceFromEyes( 10000 ) + GAMEMODE.MakeTree( tr.HitPos ) +end ) + +concommand.Add( "gms_admin_makerock", function( ply ) + if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end + local tr = ply:TraceFromEyes( 10000 ) + GAMEMODE.MakeGenericPlant( ply, tr.HitPos, GMS.RockModels[ math.random( 1, #GMS.RockModels ) ], true ) +end ) + +concommand.Add( "gms_admin_makefood", function( ply ) + if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end + local tr = ply:TraceFromEyes( 10000 ) + local ent = ents.Create( "prop_physics" ) + ent:SetAngles( Angle( 0, math.random( 1, 360 ), 0 ) ) + ent:SetModel( GMS.EdibleModels[math.random( 1, #GMS.EdibleModels )] ) + ent:SetPos( tr.HitPos + Vector( 0, 0, 10 ) ) + ent:Spawn() + SPropProtection.PlayerMakePropOwner( ply, ent ) +end ) + +concommand.Add( "gms_admin_makeantlionbarrow", function( ply, cmd, args ) + if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end + if ( !args[1] ) then ply:SendMessage( "Specify max antlions!", 3, Color( 200, 0, 0, 255 ) ) return end + local tr = ply:TraceFromEyes( 10000 ) + local ent = ents.Create( "gms_antlionbarrow" ) + ent:SetPos( tr.HitPos ) + ent:Spawn() + ent:SetNetworkedString( "Owner", "World" ) + ent:SetKeyValue( "MaxAntlions", args[1] ) +end ) + +concommand.Add( "gms_admin_makeplant", function( ply, cmd, args ) + if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end + + local tr = ply:TraceFromEyes( 10000 ) + local typ = tonumber( args[ 1 ] ) or math.random( 1, 5 ) + local pos = tr.HitPos + + if ( typ == 1 ) then + GAMEMODE.MakeMelon( pos, math.random( 1, 3 ), ply ) + elseif ( typ == 2 ) then + GAMEMODE.MakeBanana( pos, math.random( 1, 3 ), ply ) + elseif ( typ == 3 ) then + GAMEMODE.MakeOrange( pos, math.random( 1, 3 ), ply ) + elseif ( typ == 4 ) then + GAMEMODE.MakeBush( pos, ply ) + elseif ( typ == 5 ) then + GAMEMODE.MakeGrain( pos, ply ) + end +end ) + +concommand.Add( "gms_admin_populatearea", function( ply, cmd, args ) + if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end + if ( !args[1] or !args[2] or !args[3] ) then ply:SendMessage( "You need to specify <type> <amount> <radius>", 3, Color( 200, 0, 0, 255 ) ) return end + + for k, v in pairs( player.GetAll() ) do + v:SendMessage( "Populating area...", 3, Color( 255, 255, 255, 255 ) ) + end + + --Population time + local Amount = tonumber( args[2] ) or 10 + local info = {} + info.Amount = Amount + + if ( Amount > 200 ) then + ply:SendMessage( "Auto-capped at 200 props.", 3, Color( 200, 0, 0, 255 ) ) + info.Amount = 200 + end + + local Type = args[1] + local Amount = info.Amount + local Radius = tonumber( args[3] ) or 1000 + + --Find playertrace + local plytrace = ply:TraceFromEyes( 10000 ) + + for i = 1, Amount do + info.pos = plytrace.HitPos + Vector( math.random( -Radius, Radius ), math.random( -Radius, Radius ), 1000 ) + info.Retries = 50 + + --Find pos in world + while ( util.IsInWorld( info.pos ) == false and info.Retries > 0 ) do + info.pos = plytrace.HitPos + Vector( math.random( -Radius, Radius ), math.random( -Radius, Radius ), 1000 ) + info.Retries = info.Retries - 1 + end + + --Find ground + local trace = {} + trace.start = info.pos + trace.endpos = trace.start + Vector( 0, 0, -100000 ) + trace.mask = MASK_SOLID_BRUSHONLY + + local groundtrace = util.TraceLine( trace ) + + --Assure space + local nearby = ents.FindInSphere( groundtrace.HitPos, 200 ) + info.HasSpace = true + + for k, v in pairs( nearby ) do + if ( v:IsProp() ) then + info.HasSpace = false + end + end + + --Find sky + local trace = {} + trace.start = groundtrace.HitPos + trace.endpos = trace.start + Vector( 0, 0, 100000 ) + + local skytrace = util.TraceLine( trace ) + + --Find water? + local trace = {} + trace.start = groundtrace.HitPos + trace.endpos = trace.start + Vector( 0, 0, 1 ) + trace.mask = MASK_WATER + + local watertrace = util.TraceLine( trace ) + + --All a go, make entity + if ( Type == "Trees" ) then + if ( info.HasSpace and skytrace.HitSky and !watertrace.Hit and ( groundtrace.MatType == MAT_DIRT or groundtrace.MatType == MAT_GRASS or groundtrace.MatType == MAT_SAND ) ) then + GAMEMODE.MakeTree( groundtrace.HitPos ) + end + elseif ( Type == "Rocks" ) then + if ( !watertrace.Hit and ( groundtrace.MatType == MAT_DIRT or groundtrace.MatType == MAT_GRASS or groundtrace.MatType == MAT_SAND ) ) then + local ent = ents.Create( "prop_physics" ) + ent:SetAngles( Angle( 0, math.random( 1, 360 ), 0 ) ) + ent:SetModel( GMS.RockModels[math.random( 1, #GMS.RockModels )] ) + ent:SetPos( groundtrace.HitPos ) + ent:Spawn() + ent:SetNetworkedString( "Owner", "World" ) + ent:Fadein() + ent.PhysgunDisabled = true + ent:GetPhysicsObject():EnableMotion( false ) + end + elseif ( Type == "Random_Plant" and info.HasSpace ) then + if ( !watertrace.Hit and ( groundtrace.MatType == MAT_DIRT or groundtrace.MatType == MAT_GRASS or groundtrace.MatType == MAT_SAND ) ) then + local typ = math.random( 1, 5 ) + local pos = groundtrace.HitPos + + if ( typ == 1 ) then + GAMEMODE.MakeMelon( pos,math.random( 1, 2 ), ply ) + elseif ( typ == 2 ) then + GAMEMODE.MakeBanana( pos,math.random( 1, 2 ), ply ) + elseif ( typ == 3 ) then + GAMEMODE.MakeOrange( pos,math.random( 1, 2 ), ply ) + elseif ( typ == 4 ) then + GAMEMODE.MakeBush( pos, ply ) + elseif ( typ == 5 ) then + GAMEMODE.MakeGrain( pos, ply ) + end + end + end + end + + --Finished + for k, v in pairs( player.GetAll() ) do + v:SendMessage( "Done!", 3, Color( 255, 255, 255, 255 ) ) + end +end ) + +concommand.Add( "gms_admin_clearmap", function( ply ) + if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end + + for k, v in pairs( ents.GetAll() ) do + if ( v:IsRockModel() or v:IsTreeModel() ) then + for k, tbl in pairs( GAMEMODE.RisingProps ) do + if ( tbl.Entity == v ) then + table.remove( GAMEMODE.RisingProps, k ) + end + end + for k, tbl in pairs( GAMEMODE.SinkingProps ) do + if ( tbl.Entity == v ) then + table.remove( GAMEMODE.SinkingProps, k ) + end + end + for k, ent in pairs( GAMEMODE.FadingInProps ) do + if ( ent == v ) then + table.remove( GAMEMODE.FadingInProps, k ) + end + end + v:Fadeout() + end + end + + for k, v in pairs( player.GetAll() ) do v:SendMessage( "Cleared map.", 3, Color( 255, 255, 255, 255 ) ) end +end ) + +concommand.Add( "gms_admin_saveallcharacters", function( ply ) + if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end + + for k, v in pairs( player.GetAll() ) do + v:SaveCharacter() + end + + ply:SendMessage( "Saved characters on all current players.", 3, Color( 255, 255, 255, 255 ) ) +end ) + +function GM.ADropResource( ply, cmd, args ) + if ( IsValid( ply ) && !ply:IsAdmin() ) then ply:SendMessage( "You need admin rights for this!", 3, Color( 200, 0, 0, 255 ) ) return end + if ( args == nil or args[1] == nil ) then ply:SendMessage( "You need to at least give a resource type!", 3, Color( 200, 0, 0, 255 ) ) return end + + args[1] = string.Capitalize( args[1] ) + if ( args[2] == nil or string.lower( args[2] ) == "all" ) then args[2] = tostring( ply:GetResource( args[1] ) ) end + if ( tonumber( args[2] ) <= 0 ) then ply:SendMessage( "No zeros/negatives!", 3, Color( 200, 0, 0, 255 ) ) return end + + local int = tonumber( args[2] ) + local Type = args[1] + + ply:DropResource( Type, int ) + ply:SendMessage( "Dropped " .. string.Replace( Type, "_", " " ) .. " ( " .. int .. "x )", 3, Color( 10, 200, 10, 255 ) ) +end +concommand.Add( "gms_ADropResources", GM.ADropResource ) |
