• HudPaint Door Issues.
    6 replies, posted
I would just like to say, I am a serverside scripter 99% of the time, and the clientside scripter for our gamemode normally does this, so don't eat me. [LUA] function DrawDisplay() local trace = LocalPlayer():GetEyeTrace() if (ValidEntity(trace.Entity)) and (trace.Entity:GetPos():Distance(LocalPlayer():GetPos()) < 100) then ent = trace.Entity if ent:IsDoor() then if ent:IsOwnable() == false then pos = ent:GetPos() draw.DrawText("Un Ownable", "TargetID", pos.x, pos.y, Color( 255, 255, 255, 255), 1) end end end end hook.Add("HUDPaint", "DrawBox", DrawDisplay); [/LUA] The current problem is, is that the text isn't showing up. However, when I change the X,Y values of the text to anything other than pos.x or pos.y (ie. 100,100), it actually appears on the screen. So basically, it IS recognizing its a door and that it is unownable, but its just not writing it. Ideas?
You shouldn't use Entity.GetPos directly, you have to also Vector.ToScreen the position that it gives. [lua]local pos = ent:GetPos():ToScreen()[/lua]
*facepalms self*, Yep that makes total sense.
That will draw at the bottom of the door, use trace.HitPos:ToScreen()
If you just want it in the center of the door just use the OBBCenter. I'm not sure if that is the mass center of the door nor do I know how to get the mass center if you're looking for it. For now I'm sure this will suffice as it puts the text in the center of the door. [url]http://wiki.garrysmod.com/?title=Entity.OBBCenter[/url]
This should work: [lua]function DrawDisplay() local trace = LocalPlayer():GetEyeTrace() if (ValidEntity(trace.Entity)) and (trace.Entity:GetPos():Distance(LocalPlayer():GetPos()) < 100) then local ent = trace.Entity if ent:IsDoor() then if ent:IsOwnable() == false then local pos = ent:LocalToWorld(ent:OBBCenter()):ToScreen() draw.DrawText("Un Ownable", "TargetID", pos.x, pos.y, Color( 255, 255, 255, 255), 1) end end end end hook.Add("HUDPaint", "DrawBox", DrawDisplay);[/lua]
Sorry, you need to Log In to post a reply to this thread.