int Init( lua_State *L ) { if (FAILED(::CoInitialize(NULL))) return 1; HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&Voice); if( !SUCCEEDED( hr ) ) return 1; Voice->GetVolume(&DefaultVolume); Voice->GetRate(&DefaultRate); Voice->GetVoice(&DefaultVoice); ILuaInterface* gLua = Lua(); ILuaObject* tts = gLua->GetNewTable(); tts->SetMember( "Say", Say ); tts->SetMember( "IsSpeaking", IsSpeaking ); tts->SetMember( "QueueSize", QueueSize ); tts->SetMember( "Pause", Pause ); tts->SetMember( "Resume", Resume ); gLua->SetGlobal( "tts", tts ); tts->UnReference(); return 0; }
int Open(lua_State* L) { ILuaInterface *gLua = Lua(); ILuaObject* gntp = gLua->GetNewTable(); gntp->SetMember("Notify", growl_notify); gLua->SetGlobal("gntp", gntp); gntp->UnReference(); return 0; }
int Open( lua_State *L ) { ILuaInterface* gLua = Lua(); gLua->NewGlobalTable( "cmd" ); ILuaObject *cmdTable = gLua->GetGlobal( "cmd" ); cmdTable->SetMember( "exec", cmd_exec ); cmdTable->UnReference(); return 0; }
void VFUNC newDispatchUserMessage( IBaseClientDLL *baseCLDLL, int peebis, int msg_type, bf_read &msg_data ) { for ( int i=0; i <= 1; i++) { ILuaInterface* gLua = CStateManager::GetByIndex( i ); if ( gLua == NULL ){ continue; } gLua->Push( gLua->GetGlobal("hook")->GetMember("Call") ); gLua->Push("DispatchUserMessage"); gLua->PushNil(); gLua->Push( (float) peebis ); gLua->Push( (float) msg_type ); ILuaObject *metaT = gLua->GetMetaTable( CBITREAD_NAME, CBITREAD_ID ); //Push our custom stringtable object gLua->PushUserData( metaT, &msg_data ); metaT->UnReference(); gLua->Call(4, 0); } return origDispatchUserMessage( baseCLDLL, peebis, msg_type, msg_data ); }
int Start(lua_State *L) { ILuaInterface *gLua = Lua(); /* RSA::PrivateKey privKey; StringSource privateKey( serverprivatekey, *serverprivatekey_length, true); try { privKey.BERDecode(privateKey); } catch(...) { std::cerr << "Private key error" << std::endl; } */ ILuaObject *table = gLua->GetNewTable(); table->SetMember("md5", crypto_md5); table->SetMember("sha1", crypto_sha1); table->SetMember("sha256", crypto_sha256); gLua->SetGlobal("crypto", table); return 0; }
void CLuaInterface_Hooks::ErrorFromLua_H( const char *err, ... ) { ILuaInterface *luaInterface = (ILuaInterface *)this; // Construct error string char szBuf[512]; va_list arg_ptr; va_start( arg_ptr, err ); _vsntprintf( szBuf, sizeof(szBuf)-1, (char *)err, arg_ptr ); va_end( arg_ptr ); // Only call hook if the state has the module loaded if ( g_LuaInterfaces.Find( luaInterface ) == -1 ) { (this->*ErrorFromLua_T)( szBuf ); return; } // Call LuaError hook ILuaObject *hookTable = luaInterface->GetGlobal( "hook" ); ILuaObject *hookCallFunction = hookTable->GetMember( "Call" ); hookCallFunction->Push(); luaInterface->Push( "LuaError" ); luaInterface->PushNil(); luaInterface->Push( szBuf ); luaInterface->Call( 3, 1 ); hookTable->UnReference(); hookCallFunction->UnReference(); // Check return value ILuaObject *returnValue = luaInterface->GetReturn( 0 ); // Call original if nothing is returned if ( returnValue->isNil() ) (this->*ErrorFromLua_T)( szBuf ); returnValue->UnReference(); }