Extended = {} -- private variables local callbacks = {} -- hooked functions local function onExtendedOpcode(protocol, opcode, buffer) local callback = callbacks[opcode] if callback then callback(protocol, opcode, buffer) end end -- public functions function Extended.init() connect(ProtocolGame, { onExtendedOpcode = onExtendedOpcode } ) end function Extended.terminate() disconnect(ProtocolGame, { onExtendedOpcode = onExtendedOpcode } ) callbacks = nil Extended = nil end function Extended.register(opcode, callback) if not callback or type(callback) ~= 'function' then error('Invalid callback.') return false end if opcode < 0 or opcode > 255 then error('Invalid opcode. Range: 0-255') return false end if callbacks[opcode] then error('Opcode is already taken.') return false end callbacks[opcode] = callback return true end function Extended.unregister(opcode) if opcode < 0 or opcode > 255 then error('Invalid opcode. Range: 0-255') return false end if not callbacks[opcode] then error('Opcode is not registered.') return false end callbacks[opcode] = nil return true end