gamelib_extended

This commit is contained in:
Henrique Santiago 2012-05-15 17:37:09 -03:00
parent 946ec64e7f
commit 6162d51958
3 changed files with 71 additions and 0 deletions

View File

@ -5,6 +5,7 @@ Module
website: www.otclient.info
dependencies:
- gamelib_extended
- game_tibiafiles
- client_background
//- game_shaders

View File

@ -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

View File

@ -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()