Проблема с правами клиентов. Владелец энтити покупаемого "world"

Сделал энтити картину , которую можно купить. Проблема в том , что рндачить ее никто не может из-за того , что энтити не имеет владельца игрока , а имеет world

Я не знаю что делать , помогите.

энтити написано 1 файлом.

код энтити:

AddCSLuaFile()

ENT.Type = "anim"
ENT.Base = "base_gmodentity"

ENT.PrintName = "Wide Large"
ENT.Category = "URLPaint"
ENT.Author = "crester"

ENT.Spawnable = true
ENT.Owned = false

if SERVER then
	function ENT:Use(caller)
		if CPPI then
			if self:CPPIGetOwner() ~= caller then
				return
			end 
		else
			if not self.Owned then
				self.Owned = caller
			end
			if self.Owned ~= caller then
				return
			end
		end

		net.Start("URLPaint Menu")
			net.WriteEntity(self)
		net.Send(caller)
	end

	function ENT:Initialize()
		self:SetModel("models/crester/urlpaint/painting_2.mdl")

		self:PhysicsInit(SOLID_VPHYSICS)
		self:SetMoveType(MOVETYPE_VPHYSICS)
		self:SetSolid(SOLID_VPHYSICS)

		self:SetUseType(SIMPLE_USE)
	end

	function ENT:OnRemove()
		if URLPaint.List[self] then
			URLPaint.List[self] = nil
		end
	end
else
	function ENT:Draw()
		self:DrawModel()

		if self:GetNWString("URLPaint Pic") == "" or Material(self:GetNWString("URLPaint Pic")):IsError() then
			return
		end

		local ang = self:GetAngles()
		ang:RotateAroundAxis(ang:Up(), 90)
		ang:RotateAroundAxis(ang:Forward(), 90)

		cam.Start3D2D(self:GetPos() + (self:GetUp() * 51.9) + (self:GetRight() * (self:OBBMaxs().y - 0.99)), ang, 0.0995)
			surface.SetDrawColor(color_white)
			surface.SetMaterial(Material(self:GetNWString("URLPaint Pic")))
			surface.DrawTexturedRect(0, 0, 512, 512)
		cam.End3D2D()
	end
end

как мне добавить владельца игрока? а не ворлд

Тебе надо было сделать функцию ENT:SpawnFunction для установки владельца сразу после спавна энтити.


ENT.Type = "anim"
ENT.Base = "base_gmodentity"

ENT.PrintName = "Wide Large"
ENT.Category = "URLPaint"
ENT.Author = "crester"

ENT.Spawnable = true

if SERVER then

    -- Установка владельца при спавне
    function ENT:SpawnFunction(ply, tr, ClassName)
        if not tr.Hit then return end

        local ent = ents.Create(ClassName)
        ent:SetPos(tr.HitPos + tr.HitNormal * 16)
        ent:Spawn()
        ent:Activate()

        -- Установка владельца через CPPI (если поддерживается)
        if CPPI then
            ent:CPPISetOwner(ply)
        end

        -- Также можно сохранить владельца вручную, если CPPI не используется
        ent.Owner = ply

        return ent
    end

    function ENT:Initialize()
        self:SetModel("models/crester/urlpaint/painting_2.mdl")

        self:PhysicsInit(SOLID_VPHYSICS)
        self:SetMoveType(MOVETYPE_VPHYSICS)
        self:SetSolid(SOLID_VPHYSICS)

        self:SetUseType(SIMPLE_USE)
    end

    function ENT:Use(caller)
        if CPPI then
            if self:CPPIGetOwner() ~= caller then
                return
            end
        else
            if not self.Owner then
                self.Owner = caller
            end
            if self.Owner ~= caller then
                return
            end
        end

        net.Start("URLPaint Menu")
            net.WriteEntity(self)
        net.Send(caller)
    end

    function ENT:OnRemove()
        if URLPaint.List[self] then
            URLPaint.List[self] = nil
        end
    end

else

    function ENT:Draw()
        self:DrawModel()

        if self:GetNWString("URLPaint Pic") == "" or Material(self:GetNWString("URLPaint Pic")):IsError() then
            return
        end

        local ang = self:GetAngles()
        ang:RotateAroundAxis(ang:Up(), 90)
        ang:RotateAroundAxis(ang:Forward(), 90)

        cam.Start3D2D(self:GetPos() + (self:GetUp() * 51.9) + (self:GetRight() * (self:OBBMaxs().y - 0.99)), ang, 0.0995)
            surface.SetDrawColor(color_white)
            surface.SetMaterial(Material(self:GetNWString("URLPaint Pic")))
            surface.DrawTexturedRect(0, 0, 512, 512)
        cam.End3D2D()
    end

end