I got this money command i'm making.
I got these tips from Spacetech:
Spacetech: for k,v in pairs(player.GetAll()) do if(v:UserID() == tonumber(args[1])) then target = v end end
Spacetech: if(IsValid(target)) then givemoneyhere end
My current money giving code:[lua]concommand.Add("givedollars", function(ply, cmd, args)
if not ply:IsAdmin() then return end
local playerid = player.GetByID(args[1])
local num = tonumber(args[2])
playerid:AddMoney(num, "has given " .. ply:Nick() .. "!")
end)[/lua]
How would I implent this? I have no idea, I want to type like "givedollars [a players userid] [amount of money]".
givedollars staneh 1000 would mean that givedollars is cmd, staneh is args[1] and 1000 is args[2]
playerid:AddMoney doesn't exist
printmessage (HUD_PRINTCHAT, ply..."has given "...args[1]:Nick().." "..args[2].." dollars.")
Staneh has given Zephilinox 1000 dollars.
of course, you would need someplace to save the money, I believe the gmod wiki has a sqlite tutorial based on a money saving system, I'll see if I can find it later.
I got my whole money system done, you know, it's just this command.
My AddMoney function is: [lua]function meta:AddMoney(amount)
local current_cash = self:GetMoney()
self:SetMoney( current_cash + amount )
end[/lua]
[lua]concommand.Add("givedollars", function(ply, cmd, args)
if not ply:IsAdmin() then return end
local playerid = player.GetByID(args[1])
local num = tonumber(args[2])
printmessage (HUD_PRINTCHAT, ply..."has given "...playerid:Nick().." "..num.." dollars.")
playerid:AddMoney (num)
end)[/lua]
Got to go, sorry I couldn't help more.
Thank you so so much, it worked.
Though theres something wrong with: PrintMessage(HUD_PRINTCHAT, ply:Nick()..."has given "...playerid:Nick().." "..num.." dollars.")
The error: [gamemodes\basicdm\gamemode\shared.lua:22] ')' expected near '...'
[QUOTE=Staneh;25896964]Thank you so so much, it worked.
Though theres something wrong with: PrintMessage(HUD_PRINTCHAT, ply:Nick()..."has given "...playerid:Nick().." "..num.." dollars.")
The error: [gamemodes\basicdm\gamemode\shared.lua:22] ')' expected near '...'[/QUOTE]
My bad, I was in a rush so I didn't double check it, I see you got the help you needed from the WAYWO thread, is everything working now?
Well, not really, I still don't have the PrintMessage text, but the command itself works.
[QUOTE=Staneh;25913283]Well, not really, I still don't have the PrintMessage text, but the command itself works.[/QUOTE]
Why don't you have it?
[lua] printmessage (HUD_PRINTCHAT, ply.."has given "..playerid:Nick().." "..num.." dollars.") [/lua]
[lua]ply:PrintMessage( HUD_PRINTCHAT, ply:Nick().." has given "..playerid:Nick().." "..num.." dollars." )[/lua]
[gamemodes\basicdm\gamemode\shared.lua:25] attempt to call method 'Nick' (a nil value)
That error pops up now.
May I ask what you typed into the console? Try typing 'givedollars 1 2000' (In single player)
I did that, "givedollars [my userid] [moneyamount]"
[lua]
concommand.Add("givedollars", function(ply, cmd, args)
if not ply:IsAdmin() then return end
local player = tonumber(args[1])
local num = tonumber(args[2])
if player == nil then PrintMessage ( HUD_PRINTCONSOLE, "You did not enter a number for the player id" ) return end
if num == nil then PrintMessage ( HUD_PRINTCONSOLE, "You did not enter a number for the dollar value" ) return end
local playerid = player.GetByID(player)
if ply:Nick() == playerid:Nick() then PrintMessage ( HUD_PRINTCHAT, ply:Nick().." has given himself "..num.." dollars.")
else
PrintMessage (HUD_PRINTCHAT, ply:Nick().." has given "..playerid:Nick().." "..num.." dollars.")
end
playerid:AddMoney (num)
end)
[/lua]
I'll check if it works.
Now the command isnt even here, it says: "Unknown Command"
Uh, I don't see why it wouldn't exist, any errors on startup? and is this in a shared file?
EDIT: I don't think this would fix anything, but worth a try I guess.
[lua]
concommand.Add("givedollars", function(ply, cmd, args)
local playernum = type(tonumber(args[1]))
local isnum = type(tonumber(args[2]))
local playerid = player.GetByID(args[1])
local num = args[2]
if not ply:IsAdmin() then return end
if playernum != number then PrintMessage ( HUD_PRINTCONSOLE, "You did not enter a number for the player id" ) return end
if isnum != number then PrintMessage ( HUD_PRINTCONSOLE, "You did not enter a number for the dollar value" ) return end
if ply:Nick() == playerid:Nick() then PrintMessage ( HUD_PRINTCHAT, ply:Nick().." has given himself "..num.." dollars.")
else PrintMessage (HUD_PRINTCHAT, ply:Nick().." has given "..playerid:Nick().." "..num.." dollars.")
end
playerid:AddMoney (num)
end)
[/lua]
No errors, only the Nick one, and i'm sure it is in Shared.lua
You should just do a simpler method that you'd understand and use 3 or 4 times, for other thing.
Zephilinox stop trying to help you obviously don't know what you're doing.
You shouldn't be using PrintMessage since that prints to all players, trying using player:PrintMessage instead.
You should also check to see if playerid is a valid player (plus everything else is just a mess and won't work), try this code:
[lua]
concommand.Add("givedollars", function(ply, cmd, args)
local playerid = player.GetByID(tonumber(args[1]))
local amount = tonumber(args[2]) or 0
if !ply:IsAdmin() then
ply:PrintMessage(HUD_PRINTCONSOLE, "You are not an admin!")
return
end
if !playerid or !playerid:IsPlayer() then
ply:PrintMessage(HUD_PRINTCONSOLE, "Invalid player!")
return
end
if amount == 0 then
ply:PrintMessage(HUD_PRINTCONSOLE, "Invalid amount to give!")
return
end
if ply == playerid then
PrintMessage(HUD_PRINTCHAT, ply:Nick().." has given himself $"..amount.." (what a cheater)")
else
PrintMessage(HUD_PRINTCHAT, ply:Nick().." has given "..playerid:Nick().." "..num.." dollars.")
end
playerid:AddMoney(amount)
--ply:RemoveMoney(amount) -- if you want them to 'give'
end)
[/lua]
This is why garry should add a fucking modular function that looks up a player for you, if it is a int check the player ids if it is something else check the player names if it looks like a steam id check those etc... seriously everytime I need something like that I have to write my own functions.
Sorry, you need to Log In to post a reply to this thread.