• attempt to index value 'BaseClass'
    10 replies, posted
I have an entity, i set it's base: [CODE]ENT.Base = "base_gmodentity"[/CODE] the base_gmodentity is another entity, it's like the one from sandbox, but i just copied it, 'couz i don't want to derive from sandbox just because one entity. Everything works for me, but for other players not: [QUOTE]attempt to index value 'BaseClass' (a nil value)[/QUOTE] but they see a shadow of entity if they turn flashlight on. base_gmodentity's init.lua does send client side files: [CODE]AddCSLuaFile( "cl_init.lua" ) AddCSLuaFile( "shared.lua" )[/CODE] I don't get it, whats wrong?
I'm not sure, but base_gmodentity may use things specific to sandbox. Try using base_anim and see what the results are.
[QUOTE=Fobaz;25290694]I have an entity, i set it's base: [CODE]ENT.Base = "base_gmodentity"[/CODE] the base_gmodentity is another entity, it's like the one from sandbox, but i just copied it, 'couz i don't want to derive from sandbox just because one entity. Everything works for me, but for other players not: but they see a shadow of entity if they turn flashlight on. base_gmodentity's init.lua does send client side files: [CODE]AddCSLuaFile( "cl_init.lua" ) AddCSLuaFile( "shared.lua" )[/CODE] I don't get it, whats wrong?[/QUOTE] Make sure you include cl_init and shared unique to your ENT at the top of its code.
[QUOTE=Chief Tiger;25291448]I'm not sure, but base_gmodentity may use things specific to sandbox. Try using base_anim and see what the results are.[/QUOTE] Sandbox is not involved here. [QUOTE=SomeFaggot;25291577]Make sure you include cl_init and shared unique to your ENT at the top of its code.[/QUOTE] I do.
[QUOTE=iRzilla;25292503]Show us all your code.[/QUOTE] [B] base_gmodentity[/B] init.lua [PHP]AddCSLuaFile( "cl_init.lua" ) AddCSLuaFile( "shared.lua" ) include('shared.lua') [/PHP] shared.lua [PHP] ENT.Type = "anim" ENT.Base = "base_anim" ENT.PrintName = "" ENT.Author = "" ENT.Contact = "" ENT.Purpose = "" ENT.Instructions = "" ENT.Spawnable = false ENT.AdminSpawnable = false function ENT:SetOverlayText( text ) self:SetNetworkedString( "GModOverlayText", text ) end function ENT:GetOverlayText() local txt = self:GetNetworkedString( "GModOverlayText" ) if ( txt == "" ) then return "" end if ( SinglePlayer() ) then return txt end local PlayerName = self:GetPlayerName() return txt .. "\n(" .. PlayerName .. ")" end function ENT:SetPlayer( ply ) self:SetVar( "Founder", ply ) self:SetVar( "FounderIndex", ply:UniqueID() ) self:SetNetworkedString( "FounderName", ply:Nick() ) end function ENT:GetPlayer() return self:GetVar( "Founder", NULL ) end function ENT:GetPlayerIndex() return self:GetVar( "FounderIndex", 0 ) end function ENT:GetPlayerName() local ply = self:GetPlayer() if ( ply != NULL ) then return ply:Nick() end return self:GetNetworkedString( "FounderName" ) end[/PHP] cl_init.lua [PHP]include('shared.lua') surface.CreateFont( "coolvetica", 64, 500, true, false, "SandboxLabel" ) ENT.LabelColor = Color( 255, 255, 255, 255 ) // Default Draw Routine.. function ENT:Draw( bDontDrawModel ) if ( LocalPlayer():GetEyeTrace().Entity == self.Entity && EyePos():Distance( self:GetPos() ) < 256 ) then if ( self.RenderGroup == RENDERGROUP_OPAQUE ) then self.OldRenderGroup = self.RenderGroup self.RenderGroup = RENDERGROUP_TRANSLUCENT end if ( self:GetOverlayText() != "" ) then AddWorldTip( self:EntIndex(), self:GetOverlayText(), 0.5, self:GetPos(), self.Entity ) end else if ( self.OldRenderGroup != nil ) then self.RenderGroup = self.OldRenderGroup self.OldRenderGroup = nil end end if ( !bDontDrawModel ) then self:DrawModel() end end function ENT:DrawTranslucent( bDontDrawModel ) if ( bDontDrawModel ) then return end if ( LocalPlayer():GetEyeTrace().Entity == self.Entity && EyePos():Distance( self:GetPos() ) < 256 ) then self:DrawEntityOutline( 1 ) end self:Draw() end function ENT:DrawOverlayText() if ( !self:SetLabelVariables() ) then return end self:DrawLabel() end function ENT:DrawFlatLabel( size ) local TargetAngle = self:GetAngles() local TargetPos = self:GetPos() - TargetAngle:Forward() * 16 TargetAngle:RotateAroundAxis( TargetAngle:Up(), 90 ) cam.Start3D2D( TargetPos, TargetAngle, 0.05 * size * self.LabelScale ) local Shadow = Color( 0, 0, 0, self.LabelAlpha * 255 ) draw.DrawText( self.LabelText, self.LabelFont, 3, 3, Shadow, TEXT_ALIGN_CENTER ) self.LabelColor.a = self.LabelAlpha * 255 draw.DrawText( self.LabelText, self.LabelFont, 0, 0, self.LabelColor, TEXT_ALIGN_CENTER ) cam.End3D2D() end function ENT:SetLabelVariables() // Override this to set the label position, return true to draw and false to not draw. self.LabelText = self:GetOverlayText() if ( self.LabelText == "" ) then return false end // Only draw if so close self.LabelDistance = EyePos():Distance( self:GetPos() ) if ( self.LabelDistance > 256 ) then return false end // Which way should our quad face self.LabelAngles = self:GetAngles() self.LabelAngles:RotateAroundAxis( self.LabelAngles:Right(), 90 ) // Make sure we're standing in front of it (so we can see it) local ViewNormal = EyePos() - self:GetPos() ViewNormal:Normalize() local ViewDot = ViewNormal:Dot( self.LabelAngles:Forward() ) if ( ViewDot < 0 ) then return false end // Set the label position self.LabelPos = self:GetPos() + self.LabelAngles:Forward() + self.LabelAngles:Up() * 4 // Alpha self.LabelAlpha = (1 - self.LabelDistance / 256)^0.4 self.LabelFont = "SandboxLabel" self.LabelScale = 1 return true end local matOutlineWhite = Material( "white_outline" ) local ScaleNormal = Vector() local ScaleOutline1 = Vector() * 1.05 local ScaleOutline2 = Vector() * 1.1 local matOutlineBlack = Material( "black_outline" ) function ENT:DrawEntityOutline( size ) size = size or 1.0 render.SuppressEngineLighting( true ) render.SetAmbientLight( 1, 1, 1 ) render.SetColorModulation( 1, 1, 1 ) // First Outline self:SetModelScale( ScaleOutline2 * size ) SetMaterialOverride( matOutlineBlack ) self:DrawModel() // Second Outline self:SetModelScale( ScaleOutline1 * size ) SetMaterialOverride( matOutlineWhite ) self:DrawModel() // Revert everything back to how it should be SetMaterialOverride( nil ) self:SetModelScale( ScaleNormal ) render.SuppressEngineLighting( false ) local r, g, b = self:GetColor() render.SetColorModulation( r/255, g/255, b/255 ) end[/PHP] [B]mat_ore entity (the one who doesn't work)[/B] cl_init.lua [PHP]include('shared.lua') function ENT:Draw() self.BaseClass.Draw(self) end[/PHP] init.lua [PHP]AddCSLuaFile( "cl_init.lua" ) AddCSLuaFile( "shared.lua" ) include('shared.lua') local ent = "mat_ore" function ENT:SpawnFunction(ply, tr) -- Spawn function needed to make it appear on the spawn menu if (!tr.HitWorld) then return end ent = ents.Create("mat_ore") -- Create the entity ent:SetPos(tr.HitPos + Vector(0, 0, 50)) -- Set it to spawn 50 units over the spot you aim at when spawning it ent:Spawn() -- Spawn it return ent -- You need to return the entity to make it work end function ENT:Initialize() self:SetModel( "models/Items/CrossbowRounds.mdl" ) self:PhysicsInit( SOLID_VPHYSICS ) self:SetMoveType( MOVETYPE_VPHYSICS ) self:SetSolid( SOLID_VPHYSICS ) self:SetUseType(SIMPLE_USE) local phys = self:GetPhysicsObject() if (phys:IsValid()) then phys:Wake() end end function ENT:Use( activator, caller ) if ( !activator:IsPlayer() ) then return end if (PickUp(activator,ent)) then self.Entity:Remove() end end function ENT:Think() end [/PHP] shared.lua [PHP]ENT.Type = "anim" ENT.Base = "base_gmodentity" ENT.PrintName = "Ore." ENT.Author = "Fobaz" ENT.Contact = "" ENT.Purpose = "Smelt it to metal." ENT.Instructions = "Smelt it." ENT.Spawnable = false ENT.AdminSpawnable = false [/PHP]
[QUOTE=iRzilla;25293631]local ent = "mat_ore" No need for that line. And there is no need to remake base_gmodentity.[/QUOTE] local ent = "mat_ore" I use this string in Use function, it's just there, because i just copy/paste one entity and change model, the line above and few other lines. I'm remaking base_gmodentity because I'm not deriving from sandbox, and I'll add more to it.
[QUOTE=iRzilla;25294161]You can't use a string as an entity.[/QUOTE] I don't. [PHP] if (PickUp(activator,ent)) then [/PHP] PickUp writes the string ent to database. It's just a class of entity.
Anyone?
Sorry, you need to Log In to post a reply to this thread.