int Start(lua_State *L)
{
	CreateInterfaceFn interfaceFactory = Sys_GetFactory( ENGINE_LIB );
	CreateInterfaceFn gameServerFactory = Sys_GetFactory( SERVER_LIB );
	CreateInterfaceFn physicsFactory = Sys_GetFactory( VPHYSICS_LIB );

	surfaceprop = (IPhysicsSurfaceProps*)physicsFactory(VPHYSICS_SURFACEPROPS_INTERFACE_VERSION, NULL);

	engine = (IVEngineServer*)interfaceFactory(INTERFACEVERSION_VENGINESERVER, NULL);

	ILuaInterface *gLua = Lua();

	ILuaObject *vmeta = gLua->GetMetaTable("Vehicle", GLua::TYPE_ENTITY);

		vmeta->SetMember("GetOperatingParams", getoperatingparams);
		vmeta->SetMember("GetVehicleParams", getvehicleparams);
		vmeta->SetMember("SetVehicleParams", setvehicleparams);
		vmeta->SetMember("SetWheelMaterial", SetWheelMaterial);
		vmeta->SetMember("GetWheelMaterial", GetWheelMaterial);

	vmeta->UnReference();

	gLua->SetGlobal("GetUcmdButtons", GetUcmdButtons);
	gLua->SetGlobal("SetUcmdButtons", SetUcmdButtons);

	return 0;
}
Exemplo n.º 2
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 );
}