33 lines
1.2 KiB
C++
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;
|
|
}
|