Files
wnsrc/lua/includes/modules/usermessage.lua
lifestorm 94063e4369 Upload
2024-08-04 22:55:00 +03:00

98 lines
2.3 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
-- Globals that we are going to use
local unpack = unpack
local Msg = Msg
--[[
This is merely a convenience function. If you pass numbers
using this they're always sent as long. Which sucks if you're sending
numbers that are always under 100 etc.
--]]
function SendUserMessage( name, ply, ... )
if ( CLIENT ) then return end
umsg.Start( name, ply )
for k, v in ipairs( { ... } ) do
local t = TypeID( v )
if ( t == TYPE_STRING ) then
umsg.String( v )
elseif ( t == TYPE_ENTITY ) then
umsg.Entity( v )
elseif ( t == TYPE_NUMBER ) then
umsg.Long( v )
elseif ( t == TYPE_VECTOR ) then
umsg.Vector( v )
elseif ( t == TYPE_ANGLE ) then
umsg.Angle( v )
elseif ( t == TYPE_BOOL ) then
umsg.Bool( v )
else
ErrorNoHalt( "SendUserMessage: Couldn't send type " .. type( v ) .. "\n" )
end
end
umsg.End()
end
--[[---------------------------------------------------------
Name: usermessage
Desc: Enables the server to send the client messages (in a bandwidth friendly manner)
-----------------------------------------------------------]]
module( "usermessage" )
local Hooks = {}
--[[---------------------------------------------------------
Name: GetTable
Desc: Returns the table of hooked usermessages
-----------------------------------------------------------]]
function GetTable()
return Hooks
end
--[[---------------------------------------------------------
Name: Hook
Desc: Adds a hook
-----------------------------------------------------------]]
function Hook( messagename, func, ... )
Hooks[ messagename ] = {}
Hooks[ messagename ].Function = func
Hooks[ messagename ].PreArgs = { ... }
end
--[[---------------------------------------------------------
Name: Call( name, args )
Desc: Called by the engine to call a gamemode hook
-----------------------------------------------------------]]
function IncomingMessage( MessageName, msg )
if ( Hooks[ MessageName ] ) then
Hooks[ MessageName ].Function( msg, unpack( Hooks[ MessageName ].PreArgs ) )
return
end
Msg( "Warning: Unhandled usermessage '" .. MessageName .. "'\n" )
end