• How do I draw text that counts down
    16 replies, posted
Hi, I want to create a bomb entity. What I wonder is how do I, in the cl_init.lua, draw the time remaining until explosion? I have a timer on the ENT:Use(), in my init.lua: [CODE]timer.Simple(explodeTime function() ENT:Explode() end)[/CODE] I want to have this time counting down in my cl_init.lua: [CODE]draw.WordBox(2, -TextWidth*0.5, -30, explodeTime, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255))[/CODE] Thank you.
[QUOTE=Busan1;42079703]Hi, I want to create a bomb entity. What I wonder is how do I, in the cl_init.lua, draw the time remaining until explosion? I have a timer on the ENT:Use(), in my init.lua: [CODE]timer.Simple(explodeTime function() ENT:Explode() end)[/CODE] I want to have this time counting down in my cl_init.lua: [CODE]draw.WordBox(2, -TextWidth*0.5, -30, explodeTime, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255))[/CODE] Thank you.[/QUOTE] draw.WordBox(2, -TextWidth*0.5, -30, [B]explodeTime.." lol"[/B], "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) If I know enough about lua it should say [B]<TIME> lol[/B]
Bump
This may work. Read the comments. [lua] timer.Simple(explodeTime, function() ENT:Explode() end) -- Comma added. --This would go in the HUDPaint hook that draw.WordBox is in. local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) [/lua]
[QUOTE=crazyscouter;42089215]This may work. Read the comments. [lua] timer.Simple(explodeTime, function() ENT:Explode() end) -- Comma added. --This would go in the HUDPaint hook that draw.WordBox is in. local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) [/lua][/QUOTE] Will that work in the init.lua? Doesn't HUD need to be in cl_init?
No, that wouldn't work in a serverside file. This all needs to be clientside. For instance. If all you have is the code I posted above it would be: [lua] hook.Add("HUDPaint", "DrawCountdown", function() local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) end) [/lua]
[QUOTE=crazyscouter;42089312]No, that wouldn't work in a serverside file. This all needs to be clientside. For instance. If all you have is the code I posted above it would be: [lua] hook.Add("HUDPaint", "DrawCountdown", function() local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) end) [/lua][/QUOTE] How would I call on the explode function that is in init.lua then?
The explode function would stay there. This is what you should have. cl_init.lua [lua] hook.Add("HUDPaint", "DrawCountdown", function() local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) end) [/lua] init.lua [lua] timer.Simple(explodeTime, function() ENT:Explode() end) -- Comma added. [/lua] You never read my comments.
[CODE]local CountDownTime = false function SetCountDownTime(seconds) CountDownTime = CurTime()+seconds end hook.Add("HUDPaint", "CountDownTimer", function(w, h) if CountDownTime then local Text = tostring(CountDownTime-CurTime()) surface.SetFont("HUDNumber5") local tw = surface.GetTextSize(Text) draw.WordBox(2, w/2-tw/2, 30, Text, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) if CurTime() >= CountDownTime then -- Explode da bomb end end end ) [/CODE] I'll let you figure out how to set the time and stuff from here.
[QUOTE=crazyscouter;42089509]The explode function would stay there. This is what you should have. cl_init.lua [lua] -- in ENT:Initialize: local explodeTime = 15 hook.Add("HUDPaint", "DrawCountdown", function() local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) end) [/lua] init.lua [lua] timer.Simple(explodeTime, function() ENT:Explode() end) -- Comma added. [/lua] You never read my comments.[/QUOTE] Thank you for your help. This is what it looks like: init.lua: [CODE] function ENT:Use(ply) timer.Simple(explodeTime, function() ENT:Explode() end) -- Comma added. end [/CODE] cl_init.lua: [CODE] include("shared.lua") function ENT:Initialize() end function ENT:Draw() self:DrawModel() self:SetColor(Color(71, 67, 69,255)) local Pos = self:GetPos() local Ang = self:GetAngles() surface.SetFont("HUDNumber5") local TextWidth = surface.GetTextSize(explodeTime) Ang:RotateAroundAxis(Ang:Up(), 90) hook.Add("HUDPaint", "DrawCountdown", function() local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) end) end function ENT:Think() end [/CODE] Error: [ERROR] cl_init.lua:23: bad argument #3 to 'Create' (number expected, got nil)
Oh. You're doing this an in ENT. (derp) Replace this [lua] function ENT:Draw() self:DrawModel() self:SetColor(Color(71, 67, 69,255)) local Pos = self:GetPos() local Ang = self:GetAngles() surface.SetFont("HUDNumber5") local TextWidth = surface.GetTextSize(explodeTime) Ang:RotateAroundAxis(Ang:Up(), 90) hook.Add("HUDPaint", "DrawCountdown", function() local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) end) end [/lua] with this: [lua] function ENT:Draw() self:DrawModel() self:SetColor(Color(71, 67, 69,255)) local Pos = self:GetPos() local Ang = self:GetAngles() surface.SetFont("HUDNumber5") local TextWidth = surface.GetTextSize(explodeTime) Ang:RotateAroundAxis(Ang:Up(), 90) local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) end [/lua]
[QUOTE=crazyscouter;42089810]Oh. You're doing this an in ENT. (derp) Replace this [lua] function ENT:Draw() self:DrawModel() self:SetColor(Color(71, 67, 69,255)) local Pos = self:GetPos() local Ang = self:GetAngles() surface.SetFont("HUDNumber5") local TextWidth = surface.GetTextSize(explodeTime) Ang:RotateAroundAxis(Ang:Up(), 90) hook.Add("HUDPaint", "DrawCountdown", function() local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) end) end [/lua] with this: [lua] function ENT:Draw() self:DrawModel() self:SetColor(Color(71, 67, 69,255)) local Pos = self:GetPos() local Ang = self:GetAngles() surface.SetFont("HUDNumber5") local TextWidth = surface.GetTextSize(explodeTime) Ang:RotateAroundAxis(Ang:Up(), 90) local time = explodeTime timer.Create("CountDown", 1, explodeTime, function() time = time - 1 end) draw.WordBox(2, -TextWidth*0.5, -30, time, "HUDNumber5", Color(140, 0, 0, 100), Color(255,255,255,255)) end [/lua][/QUOTE] Thank you, however, it's still spamming this: timer.Create("CountDown", 1, explodeTime, function() and also bad argument to GetTextSize(explodeTime).
-snip- Agreeing with guy below me
I think now it's time for you to figure the rest out on your own.
I tried to add timer.Start("CountDown") in the ENT:Use() in init.lua, then I tried to change it to a simple timer(just to see if that would work) which made it count down super fast. Can I get a clue on what to do? [editline]5th September 2013[/editline] Okay, it starts to count down after it explodes now. [editline]5th September 2013[/editline] I just can't figure this out. I've tried everything I can think of, cl_init.lua doesn't read explodeTime from init.lua!
Finally fixed it with SetNWInt! Thank you for your help.
Stop creating timers in :Draw()
Sorry, you need to Log In to post a reply to this thread.