I need help with something I'm trying to code for darkrp, basically it allows the Mayor to fire cps if they don't do their job probably, the other is a thing to stop cps from self promoting themselves to the Chief, so basically the Mayor has to choose the CP.
Now I've tried starting the fire command, but I don't think I have it right.
[Lua] local function FirePlayer(ply, args)
if args == "" then return "" end
if ply:Team() ~= TEAM_MAYOR then Notify(ply, 1, 4, "You are not the Mayor") return "" end [/lua]
The problem Im having here is the name, like you would type it out as /fire "name" but I don't know how to get the name part, that's what confusing me.
The self promotion bit I have no clue on how to do.
Any help would be appreciated.
Wtf is ~=?
you mean !=
[lua]
concommand.Add("mayor_firecop", function(p,command,arguments)
if ( p:Team() != TEAM_MAYOR ) then return end;
for _,a in pairs( player.GetAll() ) do
if ( a:SteamID() == arguments[1] ) then
-- Set there team right here.
a:SetTeam(tInd);
return;
end
end
end);
[/lua]
[QUOTE=LauScript;33786907]Wtf is ~=?
you mean !=
[lua]
concommand.Add("mayor_firecop", function(p,command,arguments)
if ( p:Team() != TEAM_MAYOR ) then return end;
for _,a in pairs( player.GetAll() ) do
if ( a:SteamID() == arguments[1] ) then
-- Set there team right here.
a:SetTeam(tInd);
return;
end
end
end);
[/lua][/QUOTE]
Lol? Doesnt ~ mean not also?
[QUOTE=Deadman123;33788202]Lol? Doesnt ~ mean not also?[/QUOTE]
I've never heard of that before, atleast not in Lua.
Hm, lemme go look it up
~= is used for Lua
!= is used in C
[url]http://cprogramminglanguage.net/c-relational-operators.aspx[/url]
[url]http://www.lua.org/pil/3.2.html[/url]
So the whole thing should look like this:
[Lua] local function FirePlayer(p,command,arguments)
concommand.Add("mayor_firecop", function(p,command,arguments)
if ( p:Team() != TEAM_MAYOR ) then return end;
for _,a in pairs( player.GetAll() ) do
if ( a:SteamID() == arguments[1] ) then
a:SetTeam( TEAM_CITIZEN )
a:SetTeam(tInd);
return;
end
end
end
AddChatCommand ( "/fire", FirePlayer )[/Lua]
Oops it says I need to close the function, apparently I am missing a parenthesis, but I can't see it.
You are missing it on your last end. And missing an end for the function.
[lua]
local function FirePlayer(p,command,arguments)
concommand.Add("mayor_firecop", function(p,command,arguments)
if ( p:Team() != TEAM_MAYOR ) then return end;
for _,a in pairs( player.GetAll() ) do
if ( a:SteamID() == arguments[1] ) then
a:SetTeam( TEAM_CITIZEN )
a:SetTeam(tInd);
return;
end
end
end)
end
AddChatCommand ( "/fire", FirePlayer )
[/lua]
So if I where to make it notify the player I would write it out as:
[lua]local function FirePlayer(p,command,arguments)
concommand.Add("mayor_firecop", function(p,command,arguments)
if ( p:Team() != TEAM_MAYOR ) then return end;
for _,a in pairs( player.GetAll() ) do
if ( a:SteamID() == arguments[1] ) then
a:SetTeam( TEAM_CITIZEN )
a:SetTeam(tInd);
Notify(1,4”You have been fired”)
return;
end
end
end)
end
AddChatCommand ( "/fire", FirePlayer )
[/lua]
[lua]
Notify(1,4”You have been fired”)
[/lua]
Should be
[lua]
Notify(a,1,4,”You have been fired”)
[/lua]
If I recall what the arguments to notify are. The order might be different.
Yes that's what the arguments where.
Well when I tried /fire it just appeared as if I said nothing.
Well it seems all you did was just create a console command.
[lua]
local function cmdFirePlayer(client, arguments)
if (client:Team() == TEAM_MAYOR) then
if (arguments[1] and arguments[1] != "") then
for k, v in pairs( player.GetAll() ) do
if ( v:SteamID() == arguments[1] ) then
v:SetTeam(TEAM_CITIZEN);
Notify(v, 1, 4, "You have been fired from your job.");
end;
end;
end;
end;
end;
AddChatCommand("/fire", cmdFirePlayer);
[/lua]
Fixed for you.
I put it in main.lua and it seems to do the same thing as before, for example:Player: /fire firedud would come out as Player: firedud
You need to put the SteamID.
[lua]local function cmdFirePlayer(client, arguments)
if (client:Team() == TEAM_MAYOR) then
if (arguments[1] and arguments[1] != "") then
for k, v in pairs( player.GetAll() ) do
if ( v:Nick() == arguments[1] ) then
v:SetTeam(TEAM_CITIZEN);
Notify(v, 1, 4, "You have been fired from your job.");
end;
end;
end;
end;
end;
AddChatCommand("/fire", cmdFirePlayer);[/lua]
Try this
It does the same thing as before.
Necropost.
[lua]
local function cmdFirePlayer(client, arguments)
if (client:Team() == TEAM_MAYOR) then
if (arguments[1] and arguments[1] != "") then
for k, v in pairs( player.GetAll() ) do
if (string.find(v:Nick(),arguments[1]) then
v:SetTeam(TEAM_CITIZEN);
Notify(v, 1, 4, "You have been fired from your job.")
break
end;
end;
end;
end;
return ""
end;
AddChatCommand("/fire", cmdFirePlayer);
[/lua]
May I suggest you have some sort of ply:IsCP() check, as this means mayors can fire everyone.
Seriously... why isn't anybody using the FindPlayer(info) function [b]created[/b] in DarkRP, which was specifically made for things like this?!
[QUOTE=skullorz;33918082]Necropost.
[lua]
local function cmdFirePlayer(client, arguments)
if (client:Team() == TEAM_MAYOR) then
if (arguments[1] and arguments[1] != "") then
for k, v in pairs( player.GetAll() ) do
if (string.find(v:Nick(),arguments[1]) then
v:SetTeam(TEAM_CITIZEN);
Notify(v, 1, 4, "You have been fired from your job.")
break
end;
end;
end;
end;
return ""
end;
AddChatCommand("/fire", cmdFirePlayer);
[/lua]
May I suggest you have some sort of ply:IsCP() check, as this means mayors can fire everyone.[/QUOTE]
v:SetTeam(TEAM_CITIZEN, true)
Sorry, you need to Log In to post a reply to this thread.