Giving people XP and Money


I’m not going to go through your code but i’ll give you a concept on how my usually look like
This is just a “concept”

hook.Add( "PlayerDeath", "Killing Reward", function( victim, inflictor, attacker )
	if ( attacker:IsPlayer() && attacker:Alive() ) then
		attacker:GetCurrentMoney() + 30
		attacker:GetCurrentExp() + 30
              -- Loses a certain amount of money and exp on death
		victim:DeductMoney() - 30 -- or victim:GetCurrentMoney() - 30
 		victim:DeductExp() - 30 -- or victim:GetCurrentExp() - 30

First off, you are typing local too many times :stuck_out_tongue: Just use local once to declare the variable and then you can reference it without that.

function ply:ShortSteamID()
  local id = self:SteamID()
  local id = tostring(id) -- Remove the local in front of all of these below
  local id = string.Replace(id, "STEAM_0:0:", "")
  local id = string.Replace(id, "STEAM_0:1:", "")
  return id

Now for your question, usually in gLua people have SetX and GetX functions that are opposites with X being whatever it does (except for SetHealth/Heath…). You have databaseGetValue and I found databaseSetValue in the code and it has 2 arguments. So your code should be something like this: (assuming I understand the code right)

local curXP = ply:databaseGetValue("xp")
local newXP = 10 + curXP

ply:databaseSetValue("xp", newXP)

No idea if that works, thats just how you would do it I figure

Ok, thanks that works for the code. I was a little confused on how to do this, because I mainly code java. But yah, I shouldn’t have put local either infront every time xD Thanks though.

Next time try to make your code more readable to yourself, so you can avoid having this problem again.

I thought it was something like that, but it was a little confusing cause I mainly code java. But thanks for the comment, ill try to make it more readable!