gamelib_extended
This commit is contained in:
parent
946ec64e7f
commit
6162d51958
|
@ -5,6 +5,7 @@ Module
|
|||
website: www.otclient.info
|
||||
|
||||
dependencies:
|
||||
- gamelib_extended
|
||||
- game_tibiafiles
|
||||
- client_background
|
||||
//- game_shaders
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
Extended = {}
|
||||
|
||||
-- private variables
|
||||
local callbacks = {}
|
||||
|
||||
-- hooked functions
|
||||
local function onExtendedOpcode(protocol, opcode, buffer)
|
||||
local callback = callbacks[opcode]
|
||||
if callback then
|
||||
callback(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
|
|
@ -0,0 +1,12 @@
|
|||
Module
|
||||
name: gamelib_extended
|
||||
description: Manage client extended messages
|
||||
author: baxnie
|
||||
website: www.otclient.info
|
||||
|
||||
@onLoad: |
|
||||
dofile 'extended'
|
||||
Extended.init()
|
||||
|
||||
@onUnload: |
|
||||
Extended.terminate()
|
Loading…
Reference in New Issue