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; }
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 ); }