LUA:Custom Money Printer

From GMod Wiki

Jump to: navigation, search

Contents

OK. Here i will show you how to create a new money printer, but only by copying and pasting to make it easy for you.

A program that would be useful to you is notepad++ you Can Download it Here.

Starting Off

In DarkRP/Gamemodes/Entities/Entities create a folder called something_moneyprinter (you may rename it to whatever you want it to be).

Create 3 lua files: cl_init.lua init.lua shared.lua


init.lua

In init copy and paste this code into it:

-- RRPX Money Printer by philxyz  edited by Ninjarudo
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include("shared.lua")
 
function ENT:Initialize()
	self:SetModel("models/props_c17/consolebox01a.mdl")
	self:PhysicsInit(SOLID_VPHYSICS)
	self:SetMoveType(MOVETYPE_VPHYSICS)
	self:SetSolid(SOLID_VPHYSICS)
	local phys = self:GetPhysicsObject()
	if phys:IsValid() then phys:Wake() end
	self.sparking = false
	self.damage = 200
	self.IsMoneyPrinter = true
	timer.Simple(5, self.CreateMoneybag, self)
end
 
function ENT:OnTakeDamage(dmg)
	if self.burningup then return end
 
	self.damage = self.damage - dmg:GetDamage()
	if self.damage <= 0 then
		local rnd = math.random(1, 10)
		if rnd < 3 then
			self:BurstIntoFlames()
		else
			self:Destruct()
			self:Remove()
		end
	end
end
 
function ENT:Destruct()
	local vPoint = self:GetPos()
	local effectdata = EffectData()
	effectdata:SetStart(vPoint)
	effectdata:SetOrigin(vPoint)
	effectdata:SetScale(1)
	util.Effect("Explosion", effectdata)
	Notify(self.dt.owning_ent, 1, 4, "Your Golden Money Printer has exploded!")
end
 
function ENT:Fireball()
	if not self:IsOnFire() then return end
	local dist = math.random(30, 300) -- Explosion radius
	self:Destruct()
	for k, v in pairs(ents.FindInSphere(self:GetPos(), dist)) do
		if not v:IsPlayer() and not v.IsMoneyPrinter then v:Ignite(math.random(5, 22), 0) end
	end
	self:Remove()
end
 
local function PrintMore(ent)
	if ValidEntity(ent) then
		ent.sparking = true
		timer.Simple(1, ent.CreateMoneybag, ent)
	end
end
 
function ENT:CreateMoneybag()
	if not ValidEntity(self) then return end
	if self:IsOnFire() then return end
	local MoneyPos = self:GetPos()
 
	local amount = 1000
	if amount == 0 then
		amount = 1000
	end
 
	DarkRPCreateMoneyBag(Vector(MoneyPos.x + 15, MoneyPos.y, MoneyPos.z + 15), amount)
	self.sparking = false
	timer.Simple(math.random(100, 150), PrintMore, self)
end
 
function ENT:Think()
	if not self.sparking then return end
 
	local effectdata = EffectData()
	effectdata:SetOrigin(self:GetPos())
	effectdata:SetMagnitude(1)
	effectdata:SetScale(1)
	effectdata:SetRadius(2)
	util.Effect("Sparks", effectdata)
end


cl_init.lua

In cl_init copy and paste this code into it:

include("shared.lua")
 
function ENT:Draw()
	self:DrawModel()
 
	local Pos = self:GetPos()
	local Ang = self:GetAngles()
 
	local owner = self.dt.owning_ent
	owner = (ValidEntity(owner) and owner:Nick()) or "unknown"
 
	surface.SetFont("HUDNumber6")
	local TextWidth = surface.GetTextSize("Golden Money printer")
	local TextWidth2 = surface.GetTextSize(owner)
 
	Ang:RotateAroundAxis(Ang:Up(), 90)
 
	cam.Start3D2D(Pos + Ang:Up() * 11.5, Ang, 0.11)
		draw.WordBox(2, -TextWidth*0.5, -30, "Golden Money printer", "HUDNumber6", Color(140, 0, 0, 100), Color(255,255,255,255))
		draw.WordBox(2, -TextWidth2*0.5, 18, owner, "HUDNumber6", Color(140, 0, 0, 100), Color(255,255,255,255))
	cam.End3D2D()
end

shared.lua

In shared copy and paste this code into it:

ENT.Type = "anim"
ENT.Base = "base_gmodentity"
ENT.PrintName = "InsertNameHere"
ENT.Author = ""
ENT.Spawnable = false
ENT.AdminSpawnable = false
 
function ENT:SetupDataTables()
	self:DTVar("Int",0,"price")
	self:DTVar("Entity",1,"owning_ent")
end
Personal tools
Namespaces
Variants
Actions
Navigation
Lua Scripting
Functions
Hooks
Toolbox