Hello,
First off, I am by no means good at Lua programming, I just picked it up again after about 8 months, and back then I still didn't know as much as I would have liked to. Also, I apologise if I missed any other threads that ask the same question, but I did search and couldn't find anything.
So here is my issue:
I followed the Wiki's tutorial on how to build a simple gamemode from scratch, and it went well until I joined the gamemode on single player and noticed that I spawned with a crowbar, baton, smg, gravity gun and grenades.
I read online that you can fix the issue by stripping the player's weapons before you give them the weapons that you want them to have, but the problem is that my gamemode is in teams, and I'm not sure where to take the weapons away.
I would imagine that the issue is easy to fix, but I'm too new to Lua to actually see it.
[b]nl_init.lua[/b]
[lua]include('shared.lua')
function set_team()
Ready = vgui.Create("DFrame")
Ready:SetPos(ScrW() / 2, ScrH() / 2)
Ready:SetSize(175, 75)
Ready:SetTitle("Are you ready to join?")
Ready:SetVisible(true)
Ready:SetDraggable(false)
Ready:ShowCloseButton(false)
Ready:MakePopup()
ready1 = vgui.Create("DButton", Ready)
ready1:SetPos(20, 25)
ready1:SetSize(140, 40)
ready1:SetText("Hell yeah!")
ready1.DoClick = function()
RunConsoleCommand("sb_team1")
end
end
concommand.Add("sb_start", set_team)[/lua]
[b]init.lua[/b]
[lua]AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
AddCSLuaFile("specialchars.lua")
include('shared.lua')
include('specialchars.lua')
function GM:PlayerSpawn(ply)
self.BaseClass:PlayerSpawn(ply)
ply:SetGravity(1)
ply:SetMaxHealth(100, true)
ply:SetWalkSpeed(325)
ply:SetRunSpeed(325)
end
function GM:PlayerInitialSpawn(ply)
CheckSpecialCharacters(ply)
if ply:IsAdmin() then
sb_team2(ply)
else
joining(ply)
RunConsoleCommand("sb_start")
end
function GM:PlayerLoadout(ply)
if ply:Team() == 1 then
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("weapon_camera")
ply:Give("gmod_tool")
elseif ply:Team() == 2 then
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("weapon_AR2")
ply:Give("weapon_camera")
ply:Give("gmod_tool")
end
end
function sb_team1(ply)
ply:UnSpectate()
ply:SetTeam(1)
ply:Spawn()
ply:PrintMessage(HUD_PRINTTALK, "[easyBuild]Welcome to the server, " .. ply:Nick())
end
function sb_team2(ply)
ply:SetTeam(2)
ply:Spawn()
ply:PrintMessage(HUD_PRINTTALK, "[easyBuild]Welcome, we recognise you as an admin, " .. ply:Nick())
end
concommand.Add("sb_team1", sb_team1)
function joining(ply)
ply:Spectate(5)
ply:SetTeam(4)
end[/lua]
[b]shared.lua[/b]
[lua]GM.Name = "easyBuild"
GM.Author = "N/A"
GM.Email = "N/A"
GM.Website = "N/A"
DeriveGamemode("sandbox")
team.SetUp(1, "Guest", Color(125, 125, 125, 255))
team.SetUp(2, "Admin", Color(255, 255, 255, 255))
team.SetUp(3, "SuperAdmin", Color(148, 0, 211, 255))
team.SetUp(4, "Joining", Color(0, 0 , 0, 255))[/lua]
[b]specialchars.lua[/b]
[lua]function CheckSpecialCharacters(ply)
--SA 1
if (ply:SteamID() == "STEAM_0:0:26967041") then
ply:PrintMessage(HUD_PRINTTALK, "[easyBuild]Welcome back, " .. ply:Nick() .. "\nYou connected under the IP: " .. ply:IPAddress())
ply:SetTeam(3)
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("gmod_tool")
ply:Give("gmod_camera")
--SA 2
elseif (ply:SteamID() == "STEAM_0:0:4678674") then
ply:PrintMessage(HUD_PRINTTALK, "[easyBuild]Welcome to the server, " .. ply:Nick() .. "\nYou have connected under the IP: " .. ply:IPAddress())
ply:SetTeam(3)
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("gmod_tool")
ply:Give("gmod_camera")
end
end[/lua]
I apologise if the answer is blatantly clear.
EDIT:
I also don't get ANY errors when in-game.
I also want to add that this gamemode has worked before, I don't know what I did to break it though.
Try checking for errors. nl_init.lua?
Change in init.lua Line 23:
[lua]function GM:PlayerInitialSpawn(ply)
CheckSpecialCharacters(ply)
if ply:IsAdmin() then
sb_team2(ply)
else
joining(ply)
RunConsoleCommand("sb_start")
end
[/lua]
to
[lua]function GM:PlayerInitialSpawn(ply)
CheckSpecialCharacters(ply)
if ply:IsAdmin() then
sb_team2(ply)
else
joining(ply)
RunConsoleCommand("sb_start")
end
end
[/lua]
You was missing an end.
And add an Admin check on to SetTeam2
[lua]
function sb_team2(ply)
if ply:IsAdmin() then
ply:SetTeam(2)
ply:Spawn()
ply:PrintMessage(HUD_PRINTTALK, "[easyBuild]Welcome, we recognise you as an admin, " .. ply:Nick())
end
end
concommand.Add("sb_team1", sb_team1)[/lua]
Ahg, I was right, super easy reason to understand... thanks, RetTurtl3!
Much appreciated.
Thanks for your input too, yoBrelliKX. :)
EDIT:
There's actually another issue, when I join the server, I should be different to the admin user group, as I'm in a different group, but it welcomes me as admin, I guess I need to do another check somewhere?
Though, the gamemode now works. :P
[QUOTE=Joker213;30495187]Ahg, I was right, super easy reason to understand... thanks, RetTurtl3!
Much appreciated.
Thanks for your input too, yoBrelliKX. :)
EDIT:
There's actually another issue, when I join the server, I should be different to the admin user group, as I'm in a different group, but it welcomes me as admin, I guess I need to do another check somewhere?
Though, the gamemode now works. :P[/QUOTE]
Replace my init.lua with yours
[lua]AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
AddCSLuaFile("specialchars.lua")
include('shared.lua')
include('specialchars.lua')
function GM:PlayerSpawn(ply)
self.BaseClass:PlayerSpawn(ply)
ply:SetGravity(1)
ply:SetMaxHealth(100, true)
ply:SetWalkSpeed(325)
ply:SetRunSpeed(325)
end
function GM:PlayerInitialSpawn(ply)
CheckSpecialCharacters(ply)
sb_team2(ply)
if !ply:IsAdmin() and
!ply:IsSuperAdmin() and
!ply:SteamID() == "STEAM_0:0:26967041" and
!ply:SteamID() == "STEAM_0:0:4678674" then //Don't switch these people to spectate
joining(ply)
end
RunConsoleCommand("sb_start")
end
function GM:PlayerLoadout(ply)
if ply:Team() == 1 then
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("weapon_camera")
ply:Give("gmod_tool")
elseif ply:Team() == 2 then
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("weapon_AR2")
ply:Give("weapon_camera")
ply:Give("gmod_tool")
end
end
function sb_team1(ply)
ply:UnSpectate()
ply:SetTeam(1)
ply:Spawn()
ply:PrintMessage(HUD_PRINTTALK, "[easyBuild]Welcome to the server, " .. ply:Nick())
end
concommand.Add("sb_team1", sb_team1)
function sb_team2(ply)
if ply:IsAdmin() then
ply:SetTeam(2)
ply:Spawn()
ply:PrintMessage(HUD_PRINTTALK, "[easyBuild]Welcome, we recognise you as an admin, " .. ply:Nick())
elseif ply:IsSuperAdmin() || ply:SteamID() == "STEAM_0:0:26967041" || ply:SteamID() == "STEAM_0:0:4678674" then
ply:SetTeam(3)
ply:Spawn()
ply:PrintMessage(HUD_PRINTTALK, "[easyBuild]Welcome, we recognise you as an SuperAdmin, " .. ply:Nick())
end
end
function joining(ply)
ply:Spectate(5)
ply:SetTeam(4)
end[/lua]
Thanks, I'll give it a spin, I guess it's good that I understand all of it, right? :P
Whoops just saw an major error.
Change on Line 23
[lua]
function GM:PlayerInitialSpawn(ply)
CheckSpecialCharacters(ply)
sb_team2(ply)
if !ply:IsAdmin() and
!ply:IsSuperAdmin() and
!ply:SteamID() == "STEAM_0:0:26967041" and
!ply:SteamID() == "STEAM_0:0:4678674" then //Don't switch these people to spectate
joining(ply)
end
RunConsoleCommand("sb_start")
end
[/lua]
To
[lua]function GM:PlayerInitialSpawn(ply)
CheckSpecialCharacters(ply)
sb_team2(ply)
if !ply:IsAdmin() and
!ply:IsSuperAdmin() and
!ply:SteamID() == "STEAM_0:0:26967041" and
!ply:SteamID() == "STEAM_0:0:4678674" then //Don't switch these people to spectate
joining(ply)
end
ply:ConCommand("sb_start") // We want to execute to client not server, Duhhh.
end
[/lua]
And Line 37
[lua]function GM:PlayerLoadout(ply)
if ply:Team() == 1 then
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("weapon_camera")
ply:Give("gmod_tool")
elseif ply:Team() == 2 then
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("weapon_AR2")
ply:Give("weapon_camera")
ply:Give("gmod_tool")
end
end[/lua]
[lua]
function GM:PlayerLoadout(ply)
if ply:Team() == 1 then
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("weapon_camera")
ply:Give("gmod_tool")
elseif ply:Team() == 2 then
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("weapon_AR2")
ply:Give("weapon_camera")
ply:Give("gmod_tool")
elseif ply:Team() == 3 then
ply:Give("weapon_physcannon")
ply:Give("weapon_physgun")
ply:Give("weapon_AR2")
ply:Give("weapon_camera")
ply:Give("gmod_tool")
end
end[/lua]
Sorry, you need to Log In to post a reply to this thread.