Денежный принтер для игры Garry's mod не останавливает/возобновляет печать
Сервер:
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include('shared.lua')
local timerInter = 120
function ENT:Initialize()
self:SetModel("models/props_c17/consolebox03a.mdl")
self:PhysicsInit(SOLID_VPHYSICS)
self:SetMoveType(MOVETYPE_VPHYSICS)
self:SetSolid(SOLID_VPHYSICS)
self:SetColor(0, 0, 0 ,255)
self:SetUseType(SIMPLE_USE)
self.timer = CurTime()
local phys = self:GetPhysicsObject()
if (phys:IsValid()) then
phys:Wake()
end
self:SetPrintEnabled(true) --Принтер ставится во включённое состояние при инициализации
end
function ENT:Use(ply)
util.AddNetworkString("Used")
net.Start("Used")
net.Send(ply)
net.Receive("Used", function(len, ply)
local Money = self:GetMoneyAmount()
self:SetMoneyAmount(0)
ply:addMoney(Money)
end)
end
function ENT:Think()
(self:GetPrintEnabled() == false) then --Проходит проверка на состояние принтера, но по итогу он не перестаёт/начинает печать
if (CurTime() > self.timer + timerInter) then
self.timer = CurTime()
self:SetMoneyAmount(self:GetMoneyAmount() + 1000)
end
self:SetProgress(CurTime() - self.timer)
end
end
Клиент:
include('shared.lua')
surface.CreateFont( "MoneyFont", {
font = "Arial",
extended = false,
size = 50,
weight = 800,
blursize = 0,
scanlines = 0,
antialias = true,
underline = false,
italic = false,
strikeout = false,
symbol = false,
rotary = false,
shadow = false,
additive = false,
outline = false,
})
function ENT:Draw()
self:DrawModel()
local angM = self:GetAngles()
local posM = self:GetPos() + (self:GetAngles():Forward() * 10.5) + (self:GetAngles():Right() * 10.6) + (self:GetAngles():Up() * 7.34)
angM:RotateAroundAxis(self:GetAngles():Forward(), 90)
angM:RotateAroundAxis(self:GetAngles():Up(), 90)
cam.Start3D2D(posM, angM, 0.1)
draw.RoundedBox(0, 0, 0, 212, 55, Color(0,0,0,255))
draw.RoundedBox(0, 1, 1, 210, 53, Color(50,50,50,255))
draw.SimpleText(self:GetMoneyAmount().." $","MoneyFont", 104.5, 28, Color( 100, 255, 100, 255 ), 1, 1)
cam.End3D2D()
local angP = self:GetAngles()
local posP = self:GetPos() + (self:GetAngles():Forward() * 10.8) + (self:GetAngles():Right() * 10.6) + (self:GetAngles():Up() * 1.8)
angP:RotateAroundAxis(self:GetAngles():Forward(), 90)
angP:RotateAroundAxis(self:GetAngles():Up(), 90)
cam.Start3D2D(posP, angP, 0.1)
draw.RoundedBox(2, 0, 0, 212, 15, Color(0,0,0,255))
draw.RoundedBox(2, 1, 1, 2.1 * (self:GetProgress() / 120 * 100) , 13, Color(0,255,0,255))
cam.End3D2D()
Enty = self
end
net.Receive("Used", function(len, ply)
local moneyFrame = vgui.Create("DFrame")
moneyFrame:SetSize(360,200)
moneyFrame:SetVisible(true)
moneyFrame:Center()
moneyFrame:MakePopup()
local Label = vgui.Create("DLabel", moneyFrame)
Label:SetPos(100, 35)
Label:SetText(" ")
Label:SetTextColor( Color(255, 232, 0 ))
local GetMon = vgui.Create("DButton", moneyFrame)
GetMon:SetPos(130,100)
GetMon:SetSize(100,35)
GetMon:SetText("Снять деньги")
function GetMon:DoClick() -- При нажатии на кнопку "Снять деньги" отправляется сообщение серверу о начислении денег игроку и снятии их со счёта принтера
net.Start("Used")
net.SendToServer()
end
if (Enty:GetPrintEnabled() == true) then -- Идёт проверка включен принтер или нет, если он включен, то будет отображаться кнопка выключения
local Off = vgui.Create("DButton", moneyFrame)
Off:SetPos(160,150)
Off:SetSize(100,35)
Off:SetText("Отключить принтер")
function Off:DoClick() -- При нажатии на эту кнопку принтер должен выключаться
Enty:SetPrintEnabled(false)
end
end
if (Enty:GetPrintEnabled() == false) then - Идёт проверка выключен принтер или нет, если он выключен, то будет отображаться кнопка включения
local On = vgui.Create("DButton", moneyFrame)
On:SetPos(160,150)
On:SetSize(100,35)
On:SetText("Включить принтер") -- При нажатии на эту кнопку принтер должен вкоючатся
function On:DoClick()
Enty:SetPrintEnabled(true)
end
end
end)
Shared:
ENT.Type = "anim"
ENT.Base = "base_gmodentity"
ENT.PrintName = "Shit Printer"
ENT.Spawnable = true
function ENT:SetupDataTables()
self:NetworkVar("Int", 0 , "CumAmount")
self:NetworkVar("Int", 1 , "Progress" )
self:NetworkVar("Bool", 0 , "PrintEnabled")
end