Tomiks
Участник
- Сообщения
- 419
- Реакции
- 288
Привет всем, разбираюсь в написании плагинов на lua в Garry's Mod. Застопорился на одном моменте, не могу засунуть владельца Entity в NetworkVar, может неправильно объясняю, но вот ниже прикрепил код shared.lua. Знает ли кто-нибудь как это правильно делать?
C++:
ENT.Type = "anim"
ENT.Base = "base_gmodentity"
ENT.PrintName = "Money Printer"
ENT.Spawnable = true
function ENT:SetupDataTables()
self:NetworkVar("Int", 0, "MoneyAmount")
self:NetworkVar("Entity", 0, "owner_printer") -- <-- вот сюда хочу засунуть entity игрока, чтобы получать потом его ник(нужен именно того, кто создал ентити)
self:NetworkVar("Int", 1, "PrinterLVL")
self:NetworkVar("Int", 2, "IsPaper")
end
C++:
AddCSLuaFile("shared.lua")
AddCSLuaFile("cl_init.lua")
include("shared.lua")
function ENT:Initialize()
self:SetModel("models/steel_printer/steel_printer.mdl")
self:PhysicsInit(SOLID_VPHYSICS)
self:SetMoveType(MOVETYPE_VPHYSICS)
self:SetSolid(SOLID_VPHYSICS)
self:SetUseType(SIMPLE_USE)
self:SetPrinterLVL(1)
self.sound = CreateSound(self, Sound("ambient/levels/labs/equipment_printer_loop1.wav"))
self.sound:SetSoundLevel(52)
self.sound:PlayEx(1, 100)
local phys = self:GetPhysicsObject()
if phys:IsValid() then
phys:Wake()
end
end
function ENT:OnRemove()
if self.sound then
self.sound:Stop()
end
end
function ENT:Touch(ent)
local printerLevel = self:GetPrinterLVL()
if ent:IsValid() and ent:GetClass() == "printer_upgrader" and printerLevel < 5 then
ent:Remove()
self:SetPrinterLVL(printerLevel+1)
end
end
function ENT:Use(Activator, Caller)
Activator:addMoney(100000)
end
C++:
include("shared.lua")
surface.CreateFont( "TheDefaultSettings", {
font = "Arial", -- Use the font-name which is shown to you by your operating system Font Viewer, not the file name
extended = false,
size = 25,
weight = 500,
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 Ang = self:GetAngles()
local Pos = self:GetPos()
local owner = "self:Getowner_printer():Nick()"
local printerlvl = "Printer Level: " .. self:GetPrinterLVL()
local text = "Money Printer"
local TextWidth = surface.GetTextSize(text)
local TextWidth2 = surface.GetTextSize(owner)
local TextWidth3 = surface.GetTextSize(printerlvl)
Ang:RotateAroundAxis(Ang:Up(), 90)
cam.Start3D2D(Pos + Ang:Up() * 11.5, Ang, 0.11)
draw.WordBox(2, -TextWidth * 0.7, -140, text, "TheDefaultSettings", Color(140, 0, 0, 100), Color(255, 255, 255, 255))
draw.WordBox(2, -TextWidth2 * 0.7, -40, owner, "TheDefaultSettings", Color(140, 0, 0, 100), Color(255, 255, 255, 255))
draw.WordBox(2, -TextWidth3 * 0.7, 18, printerlvl, "TheDefaultSettings", Color(140, 0, 0, 100), Color(255, 255, 255, 255))
cam.End3D2D()
end
function ENT:Think()
end