gamelib_extended
This commit is contained in:
parent
946ec64e7f
commit
6162d51958
|
@ -5,6 +5,7 @@ Module
|
||||||
website: www.otclient.info
|
website: www.otclient.info
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
|
- gamelib_extended
|
||||||
- game_tibiafiles
|
- game_tibiafiles
|
||||||
- client_background
|
- client_background
|
||||||
//- game_shaders
|
//- 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