l2-unlegits/l2ooghelper/SE_funcs_handlers.cpp
2012-02-01 05:25:08 +00:00

33 lines
1.2 KiB
C++

#include "stdafx.h"
#include "Logger.h"
#include "SE_funcs.h"
#include "ScriptEngine.h"
// sys_register_onChat( function_name )
// ðåãèñòðèðóåò ôóíêöèþ function_name êàê îáðàáîò÷èê ÷àò-ñîîáùåíèé
// îáðàáîò÷èê äîëæåí èìåòü ïðîòîòèï Lua
// function onChat( senderObjectID, chatChannelID, chatText, senderName )
int sys_register_onChat( lua_State *L )
{
int typ = lua_type( L, lua_upvalueindex( 1 ) );
if( typ != LUA_TLIGHTUSERDATA )
{
log_error( LOG_ERROR, "sys_register_onChat(): no light user data!\n" );
return 0;
}
// ïîëó÷èì óêàçàòåëü íà ScriptEngine êàê light user data ôóíêöèè
// (óñòàíàâëèâàåòñÿ ïðè ðåãèñòðàöèè ôóíêöèè â SE_regScriptEngineFunc)
ScriptEngine *se = (ScriptEngine *)lua_touserdata( L, lua_upvalueindex( 1 ) );
if( se == NULL )
{
log_error( LOG_ERROR, "sys_register_onChat(): ptr to ScriptEngine == NULL!\n" );
return 0;
}
// ïîëó÷èì ïåðâûé àðóìåíò Lua ôóíêöèè sys_register_onChat êàê ñòðîêó
const char *funcName = lua_tolstring( L, 1, NULL );
// funcName ìîæåò áûòü NULL, åñëè ïåðâûé àðãóìåíò íå áûë ñòðîêîé. òîãäà îáðàáîò÷èê îòìåíèòñÿ
// çàðåãàåì îáðàáîò÷èê
se->set_onChat_handler( funcName );
return 0;
}