• ply:PrintMessage Spam
    4 replies, posted
Made a simple thing to prevent from picking up heavy props but get spammed with the player message. Is there anyway to prevent the ply:PrintMessage from spamming when I try to pick it up? Here's the code. [lua] function TooHeavy( ply, ent ) if ent:GetPhysicsObject():GetMass() >= 75 then ply:PrintMessage(HUD_PRINTTALK, "You can't pick this up! It's too heavy") return false else return true end end hook.Add( "PhysgunPickup", "TooHeavy", TooHeavy) [/lua]
Maybe you could use Player.KeyPressed so that it only shows once per right click.
Try adding a cooldown timer. [lua] function TooHeavy(ply, prop) if (prop.LastTriedPickup == nil or prop.LastTriedPickup + 5 < CurTime()) and prop:GetPhysicsObject():GetMass() >= 75 then prop.LastTriedPickup = CurTime() ply:PrintMessage(HUD_PRINTCENTER, "hey asshole that's too heavy") end end hook.Add("PhysgunPickup", "TooHeavy", TooHeavy) [/lua] Bit of a monster if line, but basically it checks to see if it was picked up in the last 5 seconds and it's too heavy. If it is it sets the last-pickup-denied time for the prop and gives him a message.
[lua]hook.Add( "PhysgunPickup", "TooHeavy", function(ply, ent) -- You do not need anything but an inline function for hooks. if (not IsValid(ent)) then -- We don't want to mess with invalid ents return -- Always use return on it's own unless you want to override the default behaviour. We don't want to. end local phys = ent:GetPhysicsObject(); if (IsValid(phys) and phys:GetMass() >= 75) then -- Make sure it's a valid physics object before using it, or errors will happen. ply._NextGrabMsg = ply._NextGrabMsg or 0; -- Make sure there is a number var called ._NextGrabMsg if (ply._NextGrabMsg < CurTime()) then -- See if they can be msg'd ply._NextGrabMsg = CurTime() + 5; -- make it so they can't be msg'd for another 5s ply:ChatPrint("You can't pick htis up! It's too heavy"); -- ChatPrint is the same as PrintMessage(HUD_PRINTTALK) end return false; -- Stop them picking it up end -- DO NOT RETURN TRUE HERE! If you do return true, then you will override the default behaviour that stops players picking up things that they shouldn't end);[/lua]
Thanks a lot man
Sorry, you need to Log In to post a reply to this thread.