• how can i use callback function?
    9 replies, posted
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.