Gamemode is still broken!!!!!!!!!!!!!!!!!!!!!!!!!!!

Hello all, I am in the process of making a gmod gamemode where you get money for npc kills!!! :smiley: I got it to work BUUUUUT it gives you money whenever ANYONE kills an npc, is there any way to make it so that it will ONLY give you money if YOU kill the npc???

CODE:

init.lua


AddCSLuaFile( "shared.lua" )
AddCSLuaFile( "cl_init.lua" )
AddCSLuaFile( "sh_player.lua" )
include( "sh_player.lua" )

include( "shared.lua" )

MONEY_STARTAMOUNT = 1000 --Can be changed to your starting amount
function GM:PlayerSpawn( ply )
	ply:StripWeapons()
	ply:Give("weapon_crowbar")
end
function FirstSpawn( ply )
	local cash = ply:GetPData("money") --Get the saved money amount
 
	if cash == nil then --If it doesn't exist supply the player with the starting money amount
		ply:SetPData("money", MONEY_STARTAMOUNT) --Save it
		ply:SetMoney( MONEY_STARTAMOUNT ) --Set it to the networked ints that can be called from the client too
	else
	ply:SetMoney( cash ) --If not, set the networked ints to what we last saved
	end
 
end
hook.Add( "PlayerInitialSpawn", "playerInitialSpawn", FirstSpawn )
 
function PrintCash( pl )
	pl:ChatPrint("Your cash is: " .. pl:GetMoney())
end
 
function fPlayerDisconnect( ply )
	print("Player Disconnect: Money saved to SQLLite and TXT")
	ply:SaveMoney()
	ply:SaveMoneyTXT()
end
 
concommand.Add("cash_get",PrintCash)
 
	
function GM:PlayerInitialSpawn( ply )
	ply:SetTeam( 1 )
end

function NPCKill( ply )
	ply:AddMoney( 10 )
	ply:ChatPrint("You killed an NPC, and gained 10 dollars!")
end

function GM:ShowHelp( ply ) -- This hook is called everytime F1 is pressed.
    umsg.Start( "MyMenu", ply ) -- Sending a message to the client.
    umsg.End()
end --Ends function

function MyMenu( ply ) --Start the function
    umsg.Start( "MyMenu", ply ) --Send the contents of "MyMenu" to the client
    umsg.End()
end --End the function
hook.Add("ShowHelp", "MyHook", MyMenu) --Add the hook "ShowHelp" so it opens with F1

function GiveShtgAmmo( ply )
	cash = ply:GetMoney()
	if cash >= 50 then
		ply:TakeMoney( 50 )
		ply:GiveAmmo(80, "Buckshot")
		ply:ChatPrint("Gave you 80 shotgun ammo.")
	else
	ply:ChatPrint("You don't have enough money for shotgun ammo.")
	end
end

function GivePistol( ply )
	cash = ply:GetMoney()
	if cash >= 80 then
		ply:TakeMoney( 80 )
		ply:Give("weapon_pistol")
		ply:GiveAmmo(30, "pistol")
	else
	ply:ChatPrint("You don't have enough money for a pistol.")
	end
end

function GivePistAmmo( ply )
	cash = ply:GetMoney()
	if cash >= 50 then
		ply:TakeMoney( 50 )
		ply:GiveAmmo(100, "pistol")
		ply:ChatPrint("Gave you 100 spistol ammo.")
	else
	ply:ChatPrint("You don't have enough money for pistol ammo.")
	end
end

function GiveM4( ply )
	cash = ply:GetMoney()
	if cash >= 300 then
		ply:TakeMoney( 300 )
		ply:Give("weapon_m4")
		ply:GiveAmmo(75, "smg1")
	else
	ply:ChatPrint("You don't have enough money for an M4.")
	end
end

function BuyRifleAmmo( ply )
	cash = ply:GetMoney()
	if cash >= 100 then
		ply:TakeMoney( 100 )
		ply:GiveAmmo(100, "smg1")
	else
	ply:ChatPrint("You don't have enough money for rifle ammo.")
	end
end

function GiveShotgun( ply )
	cash = ply:GetMoney()
	if cash >= 150 then
		ply:TakeMoney( 150 )
		ply:Give("weapon_shotgun")
		ply:GiveAmmo(20, "Buckshot")
	else
	ply:ChatPrint("You don't have enough money for a shotgun.")
	end
end

concommand.Add("NPCKill",NPCKill)
concommand.Add("buy_shotgun",GiveShotgun)
concommand.Add("buy_shtg_ammo",GiveShtgAmmo)
concommand.Add("buy_pist_ammo",GivePistAmmo)
concommand.Add("buy_pistol",GivePistol)
concommand.Add("buy_m4",GiveM4)
function GM:OnNPCKilled( victim, killer, weapon )
   RunConsoleCommand("NPCKill")
end

shared.lua


GM.Name = "First Gamemode"
GM.Author = "=YRS= Cwkimzey"
GM.Email = "cwkimzey@gmail.com"
GM.Website = "www.www.com.com"

DeriveGamemode( "sandbox" )

team.SetUp(1, "Red", Color( 255, 0, 0, 255 ) )
team.SetUp(2, "Blue", Color( 0, 0, 255, 255 ) )
team.SetUp(3, "Spectators", Color( 25, 25, 25, 25 ) )

cl_init.lua


include( "shared.lua" )
include( "sh_player.lua" )
local function MyMenu()
    local Menu = vgui.Create("DFrame")
    Menu:SetPos(10, 10)
    Menu:SetSize(800, 350)
    Menu:SetText("My Menu")
    Menu:SetDraggable(false)
    Menu:ShowCloseButton(true)
    Menu:MakePopup()
	
	local Ammo = vgui.Create("DCollapsibleCategory", Menu)
	Ammo:SetPos(20, 40)
	Ammo:SetLabel("Weapons")
	Ammo:SetSize(350, 20)
	Ammo:SetExpanded(0)
	
	local Col = vgui.Create("DCollapsibleCategory", Menu)
	Col:SetPos(380, 40)
	Col:SetLabel("Ammo")
	Col:SetSize(350, 20)
	Col:SetExpanded(0)
	
	local WList = vgui.Create( "DPanelList" )
	WList:SetAutoSize(true)
	WList:SetSpacing(5)
	WList:EnableVerticalScrollbar(true)
	
	local AList = vgui.Create( "DPanelList" )
	AList:SetAutoSize(true)
	AList:SetSpacing(5)
	AList:EnableVerticalScrollbar(true)
	
	Col:SetContents(AList)
	Ammo:SetContents(WList)
	
	local BuyShotgun = vgui.Create("DButton")
    BuyShotgun:SetText("Shotgun")
	function BuyShotgun:OnMousePressed()
		RunConsoleCommand("buy_shotgun")
	end
	WList:AddItem(BuyShotgun)
	
	local BuyPistol = vgui.Create("DButton")
	BuyPistol:SetText("100: Pistol")
	function BuyPistol:OnMousePressed()
		RunConsoleCommand("buy_pistol")
	end
	WList:AddItem(BuyPistol)
	
	local BuyM4 = vgui.Create("DButton")
	BuyM4:SetText("300: M4")
	function BuyM4:OnMousePressed()
		RunConsoleCommand("buy_m4")
	end
	WList:AddItem(BuyM4)
	
	local BuyRifleAmmo = vgui.Create("DButton")
	BuyRifleAmmo:SetText("100: Assult rifle ammo")
	function BuyRifleAmmo:OnMousePressed()
		RunConsoleCommand("buy_rif_ammo")
	end
	
	local BuyPistolAmmo = vgui.Create("DButton")
	BuyPistolAmmo:SetText("Pistol ammo")
	function BuyPistolAmmo:OnMousePressed()
		RunConsoleCommand("buy_pist_ammo")
	end
	AList:AddItem(BuyPistolAmmo)
	
	local BuyShotgunAmmo = vgui.Create("DButton")
	BuyShotgunAmmo:SetText("Shotgun Ammo")
	function BuyShotgunAmmo:OnMousePressed()
		RunConsoleCommand("buy_shtg_ammo")
	end
	AList:AddItem(BuyShotgunAmmo)
	
end

usermessage.Hook("MyMenu", MyMenu)

sh_player.lua


local playerMeta = FindMetaTable("Player");
 
if (SERVER) then
    util.AddNetworkString("ply_SetMoney");
     
    function playerMeta:SetMoney(amount)
        net.Start("ply_SetMoney");
            net.WriteInt(amount, 16);
        net.Send(self);
 
        self.i_Money = amount;
    end;
 
    function playerMeta:AddMoney(amount)
        self:SetMoney(self:GetMoney() + amount);
    end;
 
    function playerMeta:TakeMoney(amount)
        self:AddMoney(-amount);
    end;
 
    function playerMeta:SaveMoney()
        local _, folder = find.Find("money", "DATA");
 
        if (!folder[1]) then
            file.CreateDir("money");
        end;
         
        local uniqueID = self:UniqueID();
        local amount = self:GetMoney();
 
        file.Write("money/"..uniqueID..".txt", amount);
    end;
 
    function playerMeta:RestoreMoney()
        local uniqueID = self:UniqueID();
        local content = file.Read("money/"..uniqueID..".txt", "DATA");
 
        if (content) then
            local amount = tonumber(content);
 
            if (amount) then
                self:SetMoney(amount);
            end;
        end;
    end;
else
    net.Receive("ply_SetMoney", function(length)
        local amount = net.ReadInt(16);
 
        LocalPlayer().i_Money = amount;
    end);
end;
 
function playerMeta:GetMoney()
    return self.i_Money or 0;
end;


(User was banned for this post ("Making the same thread mulitple times, awful thread title" - postal))

[lua]function GM:OnNPCKilled( victim, killer, weapon )
RunConsoleCommand(“NPCKill”)
end[/lua]

Might want to specify which player runs the console command.

killer:ConCommand( “NPCKill” )