- Initiateur de la discussion
mscaioni
Geek
- Messages
- 112
- Score réaction
- 20
- Points
- 65
Bonjour,
J'ai récemment installé un addon Workshop sur mon serveur, le nom est StormFox c'est un addon météo avec système jour / nuit. LIEN WORKSHOP (StormFox)
J'ai une entité qui devient invisible quand je la fais devenir persistante, le problème est que je ne peux pas utiliser le mode de persistance sur mon serveur mais seulement PermaProps.
Avant de demander de l'aide, j'ai essayé plusieurs fois de trouver un moyen de fixer cela, mais j'ai échoué ou je ne pouvais pas terminer complètement. Je voudrais faire ceci: Rendre l'entité invisible sans avoir à appuyer sur E ou à la rendre persistante.
Si vous pouviez m'aider et supprimer tout ce qui fait que l'entité devinor visible sans faire bug le système de nuit / jour. S'il y a des choses à essayer, je vais tout tester et redonner les résultats.
C'est ainsi que l'entité ressemble au jeu avec le texte et la visibilité:
J'ai récemment installé un addon Workshop sur mon serveur, le nom est StormFox c'est un addon météo avec système jour / nuit. LIEN WORKSHOP (StormFox)
J'ai une entité qui devient invisible quand je la fais devenir persistante, le problème est que je ne peux pas utiliser le mode de persistance sur mon serveur mais seulement PermaProps.
Avant de demander de l'aide, j'ai essayé plusieurs fois de trouver un moyen de fixer cela, mais j'ai échoué ou je ne pouvais pas terminer complètement. Je voudrais faire ceci: Rendre l'entité invisible sans avoir à appuyer sur E ou à la rendre persistante.
Si vous pouviez m'aider et supprimer tout ce qui fait que l'entité devinor visible sans faire bug le système de nuit / jour. S'il y a des choses à essayer, je vais tout tester et redonner les résultats.
C'est ainsi que l'entité ressemble au jeu avec le texte et la visibilité:
Blocs de Codes
Code:
include("shared.lua")
function ENT:Initialize() self.PixVis = util.GetPixelVisibleHandle()
end
local matLight = Material( "sprites/light_ignorez" )
local matBeam = Material( "effects/lamp_beam" )
local rmat = Material("models/props_combine/tpballglow")
function ENT:Draw() if self:GetPersistent() then return end render.MaterialOverride(rmat) self:DrawModel() render.MaterialOverride() local pos = EyeAngles():Forward() * -10 cam.Start3D2D(self:LocalToWorld(Vector(0,0,0)) + pos,Angle(0,EyeAngles().y + 270,90),0.2) draw.DrawText("Press E to make persistent and invisible","BudgetLabel",0,0,Color(255,255,255),1) cam.End3D2D()
end
function ENT:OnRemove() if self.flashlight and IsValid(self.flashlight) then self.flashlight:Remove() end
end
function ENT:DrawTranslucent() if ( halo.RenderedEntity() == self ) then return end local dis = EyePos():DistToSqr(self:GetPos()) if dis < 200000 and not self:GetPersistent() then local pos = EyeAngles():Forward() * -10 cam.Start3D2D(self:LocalToWorld(Vector(0,0,0)) + pos,Angle(0,EyeAngles().y + 270,90),0.2) draw.DrawText("Press E to make persistent and invisible","BudgetLabel",0,0,Color(255,255,255),1) cam.End3D2D() end local fon = self:GetNWBool("On",false) if not fon or dis > 2000000 then if self.flashlight and IsValid(self.flashlight) then self.flashlight:Remove() end return end local lpos = self:LocalToWorld(Vector(0,0,10)) local con = GetConVar("sf_allow_dynamiclights") if con:GetBool() then if not self.flashlight or not IsValid(self.flashlight) then self.flashlight = ProjectedTexture() self.flashlight:SetPos(lpos) self.flashlight:SetAngles(self:LocalToWorldAngles(Angle( 90, 0, 0 ))) self.flashlight:SetEnableShadows(true) self.flashlight:SetNearZ( 12 ) self.flashlight:SetFOV( 80 ) self.flashlight:SetBrightness(3) self.flashlight:SetFarZ( 1000 ) self.flashlight:SetColor( Color(255,255,255) ) self.flashlight:SetTexture("effects/flashlight001") self.flashlight:Update() self.oldpos = self:GetPos() self.oldang = self:GetAngles() elseif (self.oldpos or Vector(0,0,0)) ~= self:GetPos() or (self.oldang or Angle(0,0,0)) ~= self:GetAngles() then self.flashlight:SetPos(lpos) self.flashlight:SetAngles(self:LocalToWorldAngles(Angle( 90, 0, 0 ))) self.flashlight:Update() self.oldpos = self:GetPos() self.oldang = self:GetAngles() end elseif self.flashlight and IsValid(self.flashlight) then self.flashlight:Remove() end --print("CREATE") render.SetMaterial(matBeam) -- Thx gmod_light local LightNrm = -self:GetAngles():Up() local ViewNormal = lpos - EyePos() local Distance = ViewNormal:Length() ViewNormal:Normalize() local ViewDot = ViewNormal:Dot( LightNrm * -1 ) - 0.4 local Alpha = 100 - math.Clamp( ( 700 - Distance ) * ViewDot, 0, 100 ) render.StartBeam( 3 ) render.AddBeam( lpos + LightNrm * -1, 128 * 2, -0.01, Color( 255,255, 255, Alpha) ) render.AddBeam( lpos - LightNrm * -300, 128 * 2, 0.5, Color( 255, 255, 255, Alpha / 2) ) render.AddBeam( lpos - LightNrm * -400, 128 * 2, 1, Color( 255,255, 255, 0) ) render.EndBeam() --render.DrawBeam(lpos,lpos - self:GetAngles():Up() * 500,180,0,1,Color(255,255,255,100 - Alpha * 0.9)) if ( ViewDot >= 0 ) then render.SetMaterial( matLight ) local Visibile = util.PixelVisible( lpos, 16, self.PixVis ) if ( !Visibile ) then return end local Size = math.Clamp( Distance * Visibile * ViewDot * 2, 64, 512 / 2 ) Distance = math.Clamp( Distance, 32, 800 ) local Alpha = math.Clamp( ( 1000 - Distance ) * Visibile * ViewDot, 0, 100 ) local Col = self:GetColor() Col.a = Alpha render.DrawSprite( lpos, Size, Size, Col, Visibile * ViewDot ) render.DrawSprite( lpos, Size * 0.4, Size * 0.4, Color( 255, 255, 255, Alpha ), Visibile * ViewDot ) end
end
Code:
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include("shared.lua")
function ENT:Initialize() self:SetModel( "models/hunter/blocks/cube025x025x025.mdl" ) self:PhysicsInit( SOLID_VPHYSICS ) self:SetMoveType( MOVETYPE_NONE ) self.RenderMode = self:SetRenderMode(RENDERMODE_TRANSALPHA) self:SetColor(Color(255,255,255)) self.on = false self.lastT = SysTime() + 7end
ENT.Use = StormFox.MakeEntityPersistance
function ENT:SpawnFunction( ply, tr, ClassName )if ( !tr.Hit ) thenreturnendlocal SpawnPos = tr.HitPos + tr.HitNormal * 40local ent = ents.Create( ClassName ) local ang = (ply:GetPos() - SpawnPos):Angle().y - 90 ent:SetPos( SpawnPos ) ent:SetAngles(Angle(0,ang,0)) ent:Spawn() ent:Activate() ply:PrintMessage( HUD_PRINTCENTER, "Press E" ) return ent
endfunction ENT:Think()if (self.lastT or0) > SysTime() + 20then self.lastT = 0endif (self.lastT or0) > SysTime() thenreturnend self.lastT = SysTime() + math.random(5,7) --local on = StormFox.GetDaylightAmount() <= 0.4local on = StormFox.GetData("MapLight",100) < 12local fon = self:GetNWBool("On",false) ifnot fon and on then self.on = true self:DrawShadow(false) self:SetNWBool("On",true) self:EmitSound("doors/door_metal_large_chamber_close1.wav",65,0.8) elseif fon andnot on then self:SetNWBool("On",false) self.on = false self:DrawShadow(true) self:EmitSound("doors/door_metal_large_chamber_close1.wav",65,0.8) if self.flashlight then self.flashlight:Remove() endendend
Code:
ENT.Type = "anim"
ENT.Base = "base_anim"
ENT.PrintName= "Lumiere Invisible"
ENT.Author= "Tahos"
ENT.Purpose = "Lumiere de Ville"
ENT.Instructions= "Le mettre quelquepart"
ENT.Category = "Tahos"
ENT.Editable = true
ENT.Spawnable = true
ENT.AdminOnly = true
ENT.RenderGroup = RENDERGROUP_BOTH