1
0
mirror of https://github.com/metrostroi-repo/MetrostroiAddon.git synced 2026-05-02 00:42:29 +00:00
Files
MetrostroiAddon/lua/entities/gmod_train_special_box/init.lua
kosmik641 7d046a0638 Фикс self:GetOwner()
Добавлено наследование от базового класса "base_gmodentity" для корректной работы E2 (enitiy():owner())
Заменен self:GetOwner() на self:GetPlayer()/SetPlayer() там, где это необходимо
2025-11-12 16:14:02 +03:00

94 lines
3.0 KiB
Lua

AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include("shared.lua")
--------------------------------------------------------------------------------
function ENT:Initialize()
self:SetModel("models/metrostroi_train/reversor/reversor_collection_box.mdl")
self:SetMoveType(MOVETYPE_VPHYSICS)
self:SetSolid(SOLID_VPHYSICS)
self:PhysicsInit(SOLID_VPHYSICS)
self:SetUseType(SIMPLE_USE)
local phys = self:GetPhysicsObject()
if IsValid(phys) then phys:Wake() end
self.Owner._RevBlockSpawn = true
end
function ENT:OnRemove()
-- Remove all linked objects
constraint.RemoveAll(self)
if IsValid(self.Cover) then
SafeRemoveEntity(self.Cover)
end
self.Owner._RevBlockSpawn = false
end
function ENT:Use(_,ply)
if ply~=self.Owner then return end
if not self.Cover then
self:SetModel(self.Code and "models/metrostroi_train/reversor/reversor_collection_box2.mdl" or "models/metrostroi_train/reversor/reversor_collection_box_empty.mdl")
self.Cover = ents.Create("prop_physics")
self.Cover:SetModel("models/metrostroi_train/reversor/reversor_collection_box2_cover.mdl")
self.Cover:SetPos(self:LocalToWorld(Vector(0,0,5.7)))
self.Cover:SetAngles(self:GetAngles())
self.Cover:Spawn()
local phys = self.Cover:GetPhysicsObject()
phys:ApplyForceCenter(self.Cover:GetUp()*phys:GetMass()*40+self.Cover:GetRight()*phys:GetMass()*35 )
if IsValid(self.Owner) then
self.Cover:SetPlayer(self.Owner)
if CPPI then self.Cover:CPPISetOwner(self.Owner) end
end
if self.Code then self:SetNW2Int("Code",self.Code) end
elseif self:GetModel() == "models/metrostroi_train/reversor/reversor_collection_box2.mdl" then
ply:StripWeapon("train_kv_wrench")
ply:Give("train_kv_wrench_gold")
ply:SelectWeapon("train_kv_wrench_gold")
local reverser = ply:GetWeapon("train_kv_wrench_gold")
if IsValid(reverser) then
reverser:SetCode(self.Code)
end
self:SetModel("models/metrostroi_train/reversor/reversor_collection_box_empty.mdl")
self:SetNW2Int("Code",-1)
end
end
function ENT:Think(dT)
end
function ENT:SpawnReverser(ent,code)
if not code then
ent.Owner:StripWeapon("train_kv_wrench_gold")
end
ent.Code = code
ent:Spawn()
ent:Activate()
end
function ENT:SpawnFunction(ply,tr,className)
if not tr.Hit or ply.SpawningReverser or ply._RevBlockSpawn then return end
ply.SpawningReverser = false
local ent = ents.Create(className)
local SpawnPos = tr.HitPos + tr.HitNormal * 10
local SpawnAng = ply:EyeAngles()
SpawnAng.p = 0
SpawnAng.y = SpawnAng.y+90
ent:SetPos( SpawnPos )
ent:SetAngles( SpawnAng )
ent.Owner = ply
--ent.Code = code
--ent:Spawn()
--ent:Activate()
Metrostroi.GetReverserID(ply,function(code)
if not IsValid(ent) then return end
ply.SpawningReverser = false
self:SpawnReverser(ent,code)
end,true)
return ent
end