function TestModel(pos,callback,model)
local ent = ents.CreateClientProp()
ent.RenderOverride = function()
callback(ent)
end
ent:SetPos(pos)
ent:SetModel(model)
ent:SetAngles(Angle(0,0,0))
end
TestModel(self:GetPos(),function(ent)
print("test !!")
ent:DrawModel()
end,"models/hunter/tubes/tube4x4x1to2x2.mdl")
how can i use callback? this code not working X(
someone help me for using callback :)
RenderOverride only works for Lua entities -- clientside props are engine ents.
[QUOTE=code_gs;52401743]RenderOverride only works for Lua entities -- clientside props are engine ents.[/QUOTE]
then why this code works fine?
[code]
local rocks = {
"models/props_wasteland/rockcliff01b.mdl",
"models/props_wasteland/rockcliff01c.mdl",
"models/props_wasteland/rockcliff01e.mdl",
"models/props_wasteland/rockcliff01f.mdl",
"models/props_wasteland/rockcliff01g.mdl",
"models/props_wasteland/rockcliff01j.mdl",
"models/props_wasteland/rockcliff01k.mdl",
}
for i = 1, 2 do
local offset = VectorRand() * scale * 50
local trace = util.TraceLine({start = self:GetPos() + offset * scale, endpos = (self:GetPos() + offset) + normal * -100, mask = MASK_SOLID_BRUSHONLY })
if trace.Hit then
local life_time = 0.6
local ent = ents.CreateClientProp()
SafeRemoveEntityDelayed(ent, life_time)
local time = RealTime()
local s
local rand = math.random() * 500
ent.RenderOverride = function()
s = s or ent:GetModelScale()
local fade = RealTime() - time
fade = math.Clamp((-fade + life_time) / life_time, 0, 1)
local scale = (math.min((fade ^ 0.5) + 0.5, 1) - 0.5)
ent:SetModelScale(scale * s)
ent:DrawModel()
end
ent:SetModel(table.Random(rocks))
ent:SetPos(trace.HitPos)
ent:SetAngles(trace.HitNormal:Angle() )
ent:SetModelScale(scale * math.Rand(0.3, 0.5)/2)
ent:SetCollisionGroup(COLLISION_GROUP_PROJECTILE)
ent:PhysicsInitBox(Vector(1,1,1) * -5*scale, Vector(1,1,1) * 5*scale)
local phys = ent:GetPhysicsObject()
phys:Wake()
phys:AddVelocity((normal*2 + VectorRand()) * 100 * scale)
phys:AddAngleVelocity(VectorRand()*200)
phys:SetMaterial("default_silent")
local trace_check = trace.Hit and trace.HitTexture ~= "**empty**" -- Check if we're actually hitting a texture that exists.
local color = Vector(0,0,0)
if trace_check then
color = render.GetSurfaceColor(trace.HitPos + normal, trace.HitPos + (normal * -100))
end
ent:SetColor(Color(color.x*255, color.y*255, color.z*255))
end
end
[/code]
Please post your code in code tags, e.g.
[noparse][code]
-- code
[/code]
[/noparse]
[QUOTE=code_gs;52401743]RenderOverride only works for Lua entities -- clientside props are engine ents.[/QUOTE]
Works for any entity, [img]http://wiki.garrysmod.com/favicon.ico[/img] [url=http://wiki.garrysmod.com/page/ENTITY/RenderOverride]ENT:RenderOverride[/url]
[quote]
This hook works on any entity (scripted or not) it is applied on.
[/quote]
[QUOTE=bigdogmat;52401934]Please post your code in code tags, e.g.
[noparse][code]
-- code
[/code]
[/noparse]
Works for any entity, [img]http://wiki.garrysmod.com/favicon.ico[/img] [url=http://wiki.garrysmod.com/page/ENTITY/RenderOverride]ENT:RenderOverride[/url][/QUOTE]
thanks, can you help me for adding callback into renderoverride()?
[QUOTE=bigdogmat;52401934]Please post your code in code tags, e.g.
[noparse][code]
-- code
[/code]
[/noparse]
Works for any entity, [img]http://wiki.garrysmod.com/favicon.ico[/img] [url=http://wiki.garrysmod.com/page/ENTITY/RenderOverride]ENT:RenderOverride[/url][/QUOTE]
Ah, didn't see that note.
[editline]26th June 2017[/editline]
[QUOTE=hyein6790;52401940]thanks, can you help me for adding callback into renderoverride()?[/QUOTE]
Do ent.RenderOverride = callback instead. No need to wrap the function.
[QUOTE=code_gs;52401961]Ah, didn't see that note.
[editline]26th June 2017[/editline]
Do ent.RenderOverride = callback instead. No need to wrap the function.[/QUOTE]
thanks , but i can't call it inside of renderoverride?
[QUOTE=hyein6790;52401976]thanks , but i can't call it inside of renderoverride?[/QUOTE]
It will be called automatically by the callback.
[QUOTE=code_gs;52401988]It will be called automatically by the callback.[/QUOTE]
no, i mean this case how to get ent parameter?
[code]
TestModel(self:GetPos(),function(ent)
print("test !!")
ent:DrawModel()
end,"models/hunter/tubes/tube4x4x1to2x2.mdl")
[/code]
It will provide the ent parameter automatically if you do what I said above.
Sorry, you need to Log In to post a reply to this thread.