How do I limit the amount of money a DarkRP Printer can hold?

This has already been solved.

I’m currently modding the DarkRP printer, and I was wondering how I would limit the amount of money a printer can hold? ( I’m a noob at coding :frowning: )

Here is my init.lua code:


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

ENT.SeizeReward = 950

local PrintMore
function ENT:Initialize()
    self:SetModel("models/props_c17/consolebox01a.mdl")
    self:SetColor( Color( 36, 114, 224, 255 ) )
    self:PhysicsInit(SOLID_VPHYSICS)
    self:SetMoveType(MOVETYPE_VPHYSICS)
    self:SetSolid(SOLID_VPHYSICS)
    local phys = self:GetPhysicsObject()
    phys:Wake()

    self.sparking = false
    self.damage = 100
    self.IsMoneyPrinter = true
    timer.Simple(0.5, function() PrintMore(self) end)
end

PrintMore = function(ent)
    if not IsValid(ent) then return end

    ent.sparking = true
    timer.Simple(0.5, function()
        if not IsValid(ent) then return end
        ent:CreateMoneybag()
    end)
end

function ENT:CreateMoneybag()
    if not IsValid(self) or self:IsOnFire() then return end

    local MoneyPos = self:GetPos()

    local amount = 1

    self:SetMoney( self:GetMoney() + amount )
    self.sparking = false
    timer.Simple(0.5, function() PrintMore(self) end)
end

function ENT:Use( ply )
    if self:GetMoney() > 0 then
        ply:addMoney( self:GetMoney() )
        DarkRP.notify( ply, 0, 10, "You received $" .. self:GetMoney() .. " from this printer.")
        self:SetMoney( 0 )
    end
end

function ENT:OnRemove()
    if self.sound then
        self.sound:Stop()
    end
end

If you need more code or information, just let me know.

[editline]25th March 2016[/editline]

wrap
self:GetMoney() + amount

in math.max

[editline]25th March 2016[/editline]

ooops im dumb one second

ment this one not max

He meant how much the printer can hold. Not how much maximum it can send out.

Your printer seems to send out money bags infinitely. You might want to design it so it that sends them out a certain amount of times. Or modify already existing printers to your needs.

Alright, I’ll try both ways when I’m done cooking :stuck_out_tongue:

no it does not create money bags, it uses the “createmoneybag” function but it is storing the money in itself (hense “self”) by adding a clamp to self:SetMoney( self:GetMoney() + amount ) you are effectively making it so that all “money bags” that are created can not go over whatever you set the amount to.

[editline]25th March 2016[/editline]

math.max is not what you want, dont use that

[editline]25th March 2016[/editline]

or of course you can wrap ent:CreateMoneybag() (inside the printmore function) in an
[lua]
if ent:GetMoney() <= yourmax then
ent:CreateMoneybag()
end
[/lua]

Thank you kulcris! That math.clamp worked :smiley:

np, please mark thread as solved :slight_smile: