I just can't figure this out

I’m having trouble with GM:PlayerInitialSpawn for base I’m trying to make the Team menu pop up on first spawn it’s been a real pain and could use some help
Here are my codes

shared.lua
[lua]GM.Name = “PlayerLineWars” --Set the gamemode name
GM.Author = “Zargero” --Set the author name
GM.Email = “N/A” --Set the author email
GM.Website = “N/A” --Set the author website

team.SetUp( 1, “Red”, Color( 255, 0, 0, 255 ) ) --Here we make the team Guests
team.SetUp( 2, “Blue”, Color( 0, 0, 255 , 225 ) )[/lua]

init.lua
[lua]AddCSLuaFile( “cl_init.lua” ) --Tell the server that the client need to download cl_init.lua
AddCSLuaFile( “shared.lua” ) --Tell the server that the client need to download shared.lua

include( ‘shared.lua’ ) --Tell the server to load shared.lua
include( ‘cl_init.lua’ ) --Tell the server to load cl_init.lua

function GM:PlayerInitialSpawn( ply ) --“When the player first joins the server and spawns” function

RunConsoleCommand( "team_menu" ) --Run the console command when the player first spawns

end --End the “when player first joins server and spawn” function

function GM:PlayerLoadout( ply ) --Weapon/ammo/item function

if ply:Team() == 1 then --If the player is in team 1

ply:Spawn() – Make the player respawn

elseif ply:Team() == 2 then --If the player is in team 2

ply:Spawn() – Make the player respawn

end --Here we end the if condition

end --Here we end the Loadout function

function team_1( ply )

ply:SetTeam( 1 )

end

function team_2( ply )

ply:SetTeam( 2 )

end

concommand.Add( “team_1”, team_1 )
concommand.Add( “team_2”, team_2 )[/lua]

cl_init.lua
[lua]include( ‘shared.lua’ ) --Tell the client to load shared.lua

function set_team()

local frame = vgui.Create( “DFrame” )
frame:SetPos( ScrW() / 2, ScrH() / 2 ) --Set the window in the middle of the players screen/game window
frame:SetSize( 250, 250 ) --Set the size
frame:SetTitle( “Choose Team” ) --Set title
frame:SetVisible( true )
frame:SetDraggable( false )
frame:ShowCloseButton( true )
frame:MakePopup()

team_1 = vgui.Create( “DButton”, frame )
team_1:SetPos( frame:GetTall() / 2, 5 ) --Place it half way on the tall and 5 units in horizontal
team_1:SetSize( 50, 100 )
team_1:SetText( “Red” )
team_1.DoClick = function() --Make the player join team 1
RunConsoleCommand( “team_1” )
RunConsoleCommand( “kill” )
end

team_2 = vgui.Create( “DButton”, frame )
team_2:SetPos( frame:GetTall() / 2, 105 ) --Place it next to our previous one
team_2:SetSize( 50, 100 )
team_2:SetText( “Blue” )
team_2.DoClick = function() --Make the player join team 2
RunConsoleCommand( “team_2” )
RunConsoleCommand( “kill” )
end

end
concommand.Add( “team_menu”, set_team )[/lua]

I’m not sure if you need this but
Info.txt
[lua]“Gamemode”
{
“name” “PlayerLineWars”
“version” “0.1”
“up_date” “1/08/2009” // The date this version was published. Set before release!

"author_name"	"Zargero"
"author_email"	"Zargero10@hotmail.com"
"author_url"	"http://steamcommunity.com/id/Zargeroz"

"info"		"Send Waves of NPCs to the other team to win"
"icon" 	 	"" // Icon to show in the Mods list inside Garry's Mod
"hide"		"0" // Do not hide this gamemode from the Mods list inside Garry's Mod

"mappattern" // This sets all maps with gt_ before the name to default the map gamemode to "GM_test"
{
	"1"	"^gt_"
}

}
[/lua]

It’s probably better if you use usermessages.

init.lua:
[lua]function GM:PlayerInitialSpawn( ply )
umsg.Start(“TeamMenu”, ply)
umsg.End()
end[/lua]

cl_init.lua:
[lua]usermessage.Hook(“TeamMenu”, function()
local frame = vgui.Create( “DFrame” )
frame:SetPos( ScrW() / 2, ScrH() / 2 ) --Set the window in the middle of the players screen/game window
frame:SetSize( 250, 250 ) --Set the size
frame:SetTitle( “Choose Team” ) --Set title
frame:SetVisible( true )
frame:SetDraggable( false )
frame:ShowCloseButton( true )
frame:MakePopup()

team_1 = vgui.Create( "DButton", frame )
team_1:SetPos( frame:GetTall() / 2, 5 ) --Place it half way on the tall and 5 units in horizontal
team_1:SetSize( 50, 100 )
team_1:SetText( "Red" )
team_1.DoClick = function() --Make the player join team 1
	RunConsoleCommand( "team_1" )
	RunConsoleCommand( "kill" )
end
 
team_2 = vgui.Create( "DButton", frame )
team_2:SetPos( frame:GetTall() / 2, 105 ) --Place it next to our previous one
team_2:SetSize( 50, 100 )
team_2:SetText( "Blue" )
team_2.DoClick = function() --Make the player join team 2
	RunConsoleCommand( "team_2" )
	RunConsoleCommand( "kill" )
end

end)[/lua]

Or replace
[lua]RunConsoleCommand( “team_menu” )[/lua]
with
[lua]ply:ConCommand( “team_menu” )[/lua]
in init.lua.

RunConsoleCommand will run the command on the server.

Thanks guys it works but now im getting an error when i change team


PlayerLineWars\gamemode\init.lua:28: attempt to call method 'SetTeam' (a nil value)
PlayerLineWars\gamemode\init.lua:34: attempt to call method 'SetTeam' (a nil value)

and my lines 28 -34 are…

[lua]function team_1( ply )

ply:SetTeam( 1 )

end

function team_2( ply )

ply:SetTeam( 2 )

end

concommand.Add( “team_1”, team_1 )
concommand.Add( “team_2”, team_2 )[/lua]

.

This worked perfectly thank you but is there a way to make lets say F2 pop that menu up also just encase someone wants to change teams

Add this to your init.lua:

[lua]function GM:ShowTeam(ply)
umsg.Start(“TeamMenu”, ply)
umsg.End()
end[/lua]

**[Gamemode.ShowTeam

http://wiki.garrysmod.com/favicon.ico](wiki.garrysmod.com/?title=Gamemode.ShowTeam)** is a gamemode function that is called when someone presses F2.

Thanks again NullPoint you alot of help