hmm..
Hast du dir das Wire Base Entity angeschaut?
Bei dir fehlt etwas, was hier steht. :-?
include("shared.lua")
ENT.RenderGroup = RENDERGROUP_TRANSLUCENT//RENDERGROUP_OPAQUE//RENDERGROUP_BOTH
function ENT:Draw()
self:DoNormalDraw()
Wire_Render(self.Entity)
end
function ENT:DoNormalDraw()
local e = self.Entity;
if (LocalPlayer():GetEyeTrace().Entity == e and EyePos():Distance(e:GetPos()) < 256) then
if ( self.RenderGroup == RENDERGROUP_OPAQUE) then
self.OldRenderGroup = self.RenderGroup
self.RenderGroup = RENDERGROUP_TRANSLUCENT
end
self:DrawEntityOutline(1.0)
self.Entity:DrawModel()
if(self:GetOverlayText() ~= "") then
AddWorldTip(e:EntIndex(),self:GetOverlayText(),0.5 ,e:GetPos(),e)
end
else
if(self.OldRenderGroup) then
self.RenderGroup = self.OldRenderGroup
self.OldRenderGroup = nil
end
e:DrawModel()
end
end
function ENT:Think()
if (CurTime() >= (self.NextRBUpdate or 0)) then
self.NextRBUpdate = CurTime() + math.random(30,100)/10 --update renderbounds every 3 to 10 seconds
Wire_UpdateRenderBounds(self.Entity)
end
end
ENT.Type = "anim"
ENT.Base = "base_gmodentity"
ENT.PrintName = "Wire Entity"
ENT.Author = "Erkle"
ENT.Contact = "
[email protected]"
ENT.Purpose = "Base for all wired SEnts"
ENT.Instructions = ""
ENT.Spawnable = false
ENT.AdminSpawnable = false
ENT.IsWire = true
function ENT:GetOverlayText()
local name = self.Entity:GetNetworkedString("WireName")
//local txt = self.BaseClass.BaseClass.GetOverlayText(self) or ""
local txt = self.Entity:GetNetworkedBeamString("GModOverlayText") or ""
if (not SinglePlayer()) then
local PlayerName = self:GetPlayerName()
txt = txt .. "\n(" .. PlayerName .. ")"
end
if(name and name ~= "") then
if (txt == "") then
return "- "..name.." -"
end
return "- "..name.." -\n"..txt
end
return txt
end
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include("shared.lua")
ENT.WireDebugName = "No Name"
function ENT:Think()
if(not Wire_DisableOverlayTextUpdate and self.NextOverlayTextTime and CurTime() >= self.NextOverlayTextTime) then
if(self.NextOverlayText) then
//self.BaseClass.BaseClass.SetOverlayText(self, self.NextOverlayText)
self.Entity:SetNetworkedBeamString("GModOverlayText",self.NextOverlayText)
self.NextOverlayText = nil
self.NextOverlayTextTime = CurTime() + (self.OverlayDelay or 0.4) + math.random()*(self.OverlayRandom or 0.2)
if(Wire_SlowerOverlayTextUpdate) then
self.NextOverlayTextTime = self.NextOverlayTextTime + 1 //add a sec between updates
end
else
self.NextOverlayText = nil
self.NextOverlayTextTime = nil
end
end
end
function ENT:SetOverlayText(txt)
if(Wire_DisableOverlayTextUpdate) then return end
if(Wire_FastOverlayTextUpdate) then
self.Entity:SetNetworkedBeamString("GModOverlayText",txt,true) //send it now, damn it!
else
if(self.NextOverlayTextTime) then
self.NextOverlayText = txt
else
self.Entity:SetNetworkedBeamString("GModOverlayText",txt)
self.NextOverlayText = nil
if(not self.OverlayDelay or self.OverlayDelay > 0 or Wire_SlowerOverlayTextUpdate or not SinglePlayer() or Wire_ForceDelayOverlayTextUpdate) then
self.NextOverlayTextTime = CurTime() + (self.OverlayDelay or 0.6) + math.random()*(self.OverlayRandom or 0.2)
end
end
end
end
function ENT:OnRemove()
Wire_Remove(self.Entity)
end
function ENT:OnRestore()
Wire_Restored(self.Entity)
end
function ENT:BuildDupeInfo()
return WireLib.BuildDupeInfo(self.Entity)
end
function ENT:ApplyDupeInfo(ply, ent, info, GetEntByID)
WireLib.ApplyDupeInfo( ply, ent, info, GetEntByID )
end
function ENT:PreEntityCopy()
//build the DupeInfo table and save it as an entity mod
local DupeInfo = self:BuildDupeInfo()
if(DupeInfo) then
duplicator.StoreEntityModifier(self.Entity,"WireDupeInfo",DupeInfo)
end
end
function ENT:PostEntityPaste(Player,Ent,CreatedEntities)
//apply the DupeInfo
if(Ent.EntityMods and Ent.EntityMods.WireDupeInfo) then
Ent:ApplyDupeInfo(Player, Ent, Ent.EntityMods.WireDupeInfo, function(id) return CreatedEntities[id] end)
end
end