[Lua] Eventhooks erstellen

10/15/2012 15:19 Mijago#1
Dieser Thread ist eine Kopie meines Releases im [Only registered and activated users can see links. Click Here To Register...]. Ich gebe in ePvP keinen aktiven Support mehr.

Diese Funktion gibt euch die möglichkeit, in jeder .lua sog. Hooks zu erstellen.
Ein Hook ist in unserem Fall nichts anderes als eine Funktion, die bei bestimmten Events ausgeführt wird.

PHP Code:
create_folder = function(path)
    
local pp ''
    
for i in string.gfind(path,'([%w_\-]*/)') do
        
pp pp..i
        os
.execute('if [ ! -d '..pp..' ]; then mkdir '..pp..'; fi')
    
end
end
hooks 
= {__data ={}}
hooks.add = function(typ,func)
    
hooks.__data[typ] = hooks.__data[typ] or {}
    
table.insert(hooks.__data[typ],func)
end
setmetatable
(hooks,{__newindex hooks.__data__index hooks.__data})

create_folder('locale/germany/quest/object/state/hooker_ptr')
local fi io.open('locale/germany/quest/object/state/hooker_ptr','w'); fi:write('hooker_ptr={["start"]=0}'); fi:close()
for 
i,l in {"button","enter","info","kill","leave","letter","levelup","login","logout","target","unmount"} do
    
create_folder('locale/germany/quest/object/notarget/'..l..'/hooker_ptr.start')
    
local fi io.open('locale/germany/quest/object/notarget/'..l..'/hooker_ptr.start','w')
    
fi:write('table.foreach(hooks.'..l..' or {},function(i,l) l() end)')
    
fi:close()
end 

Ein Hook könnte zB folgendermaßen aussehen:
PHP Code:
hooks.add('login',function()
    
notice('Willkommen, '..pc.get_name()..'.')
end
Ihr könnt damit jede beliebige Funktion aufrufen.
PHP Code:
local function test()
    
notice('Willkommen, '..pc.get_name()..'.')
end
hooks
.add('login',test
Mögliche Werte für Hooks: "button","enter","info","kill","leave","letter","l evelup","login","logout","target","unmount"

Tested!
10/15/2012 15:23 Lauling#2
ah sehr interessant, danke fürs teilen werd ich mir mal genauer angucken.

mfg
10/15/2012 15:44 IgorGlock#3
Wie immer hochqualitativ&nützlich für ein oder anderen HobbyCoder :)
10/15/2012 16:31 He3o Sippel#4
Sehr gut gemacht
10/15/2012 16:46 .Iscariot#5
super ! Danke :)