Пример #1
0
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;
}
Пример #2
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;
}
Пример #3
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;
}
Пример #4
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 );
}
Пример #5
0
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;
}
Пример #6
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();
}