From 5fded36ceef4f4822a5ea077bc3e9f408ecc7620 Mon Sep 17 00:00:00 2001 From: Dmitry Korolev Date: Tue, 14 Oct 2014 19:19:44 +0400 Subject: [PATCH] Lua Vehicle functions (CLuaFunctionDefinitions) --- mta-mono/src/lua/CLuaFunctionDefinitions.cpp | 1522 +++++++++++++++++- mta-mono/src/lua/CLuaFunctionDefinitions.h | 192 ++- 2 files changed, 1616 insertions(+), 98 deletions(-) diff --git a/mta-mono/src/lua/CLuaFunctionDefinitions.cpp b/mta-mono/src/lua/CLuaFunctionDefinitions.cpp index 62a6838..04c80e4 100644 --- a/mta-mono/src/lua/CLuaFunctionDefinitions.cpp +++ b/mta-mono/src/lua/CLuaFunctionDefinitions.cpp @@ -2582,4 +2582,1524 @@ void* CLuaFunctionDefinitions::CreateVehicle( lua_State* pLuaVM, int model, floa } return NULL; -} \ No newline at end of file +} + +// Vehicle get functions +string CLuaFunctionDefinitions::GetVehicleType( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleType", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return string( pLuaArgument.GetString() ); + } + + return string(); +} + +bool CLuaFunctionDefinitions::GetVehicleVariant( lua_State* pLuaVM, void* pUserData, unsigned char& ucVariant, unsigned char& ucVariant2 ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleVariant", 2 ) ) + { + ucVariant = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -2 ) )->GetNumber() ); + ucVariant2 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -1 ) )->GetNumber() ); + + return true; + } + + return false; +} + +bool CLuaFunctionDefinitions::GetVehicleColor( lua_State* pLuaVM, void* pUserData, unsigned char& ucR1, unsigned char& ucG1, unsigned char& ucB1, unsigned char& ucR2, unsigned char& ucG2, unsigned char& ucB2, unsigned char& ucR3, unsigned char& ucG3, unsigned char& ucB3, unsigned char& ucR4, unsigned char& ucG4, unsigned char& ucB4 ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( true ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleColor", 12 ) ) + { + ucR1 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -12 ) )->GetNumber() ); + ucG1 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -11 ) )->GetNumber() ); + ucB1 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -10 ) )->GetNumber() ); + + ucR2 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -9 ) )->GetNumber() ); + ucG2 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -8 ) )->GetNumber() ); + ucB2 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -7 ) )->GetNumber() ); + + ucR3 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -6 ) )->GetNumber() ); + ucG3 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -5 ) )->GetNumber() ); + ucB3 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -4 ) )->GetNumber() ); + + ucR4 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -3 ) )->GetNumber() ); + ucG4 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -2 ) )->GetNumber() ); + ucB4 = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -1 ) )->GetNumber() ); + + return true; + } + + return false; +} + +unsigned short CLuaFunctionDefinitions::GetVehicleModelFromName( lua_State* pLuaVM, const char* szName ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushString( szName ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleModelFromName", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return static_cast< unsigned short >( pLuaArgument.GetNumber() ); + } + + return 0; +} + +bool CLuaFunctionDefinitions::GetVehicleLandingGearDown( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleLandingGearDown", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +int CLuaFunctionDefinitions::GetVehicleMaxPassengers( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleMaxPassengers", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return static_cast< int >( pLuaArgument.GetNumber() ); + } + + return 0; +} + +string CLuaFunctionDefinitions::GetVehicleName( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleName", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return string( pLuaArgument.GetString() ); + } + + return string(); +} + +string CLuaFunctionDefinitions::GetVehicleNameFromModel( lua_State* pLuaVM, void* pUserData, unsigned short usModel ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( usModel ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleNameFromModel", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return string( pLuaArgument.GetString() ); + } + + return string(); +} + +void* CLuaFunctionDefinitions::GetVehicleOccupant( lua_State* pLuaVM, void* pUserData, unsigned int uiSeat ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( uiSeat ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleOccupant", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetLightUserData(); + } + + return NULL; +} + +CLuaArguments* CLuaFunctionDefinitions::GetVehicleOccupants( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleOccupants", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + //return pLuaArgument.GetLightUserData(); + } + + return NULL; +} + +void* CLuaFunctionDefinitions::GetVehicleController( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleController", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetLightUserData(); + } + + return NULL; +} + +bool CLuaFunctionDefinitions::GetVehicleSirensOn( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleSirensOn", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::GetVehicleTurnVelocity( lua_State* pLuaVM, void* pUserData, float &fX, float& fY, float& fZ ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleTurnVelocity", 3 ) ) + { + fX = static_cast< float >( ( new CLuaArgument( pLuaVM, -3 ) )->GetNumber() ); + fY = static_cast< float >( ( new CLuaArgument( pLuaVM, -2 ) )->GetNumber() ); + fZ = static_cast< float >( ( new CLuaArgument( pLuaVM, -1 ) )->GetNumber() ); + + return true; + } + + return false; +} + +bool CLuaFunctionDefinitions::GetVehicleTurretPosition( lua_State* pLuaVM, void* pUserData, float &fX, float& fY ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleTurretPosition", 2 ) ) + { + fX = static_cast< float >( ( new CLuaArgument( pLuaVM, -2 ) )->GetNumber() ); + fY = static_cast< float >( ( new CLuaArgument( pLuaVM, -1 ) )->GetNumber() ); + + return true; + } + + return false; +} + +bool CLuaFunctionDefinitions::IsVehicleLocked( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "isVehicleLocked", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +CLuaArguments* CLuaFunctionDefinitions::GetVehiclesOfType( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehiclesOfType", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + //return pLuaArgument.GetBoolean(); + } + + return false; +} + +unsigned short CLuaFunctionDefinitions::GetVehicleUpgradeOnSlot( lua_State* pLuaVM, void* pUserData, unsigned char ucSlot ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucSlot ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleUpgradeOnSlot", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return static_cast< unsigned short >( pLuaArgument.GetNumber() ); + } + + return 0; +} + +CLuaArguments* CLuaFunctionDefinitions::GetVehicleUpgrades( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleUpgrades", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + //return pLuaArgument.GetNumber(); + } + + return NULL; +} + +string CLuaFunctionDefinitions::GetVehicleUpgradeSlotName( lua_State* pLuaVM, unsigned char ucSlot ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushNumber( ucSlot ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleUpgradeSlotName", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return string( pLuaArgument.GetString() ); + } + + return string(); +} + +string CLuaFunctionDefinitions::GetVehicleUpgradeSlotName( lua_State* pLuaVM, unsigned short usUpgrade ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushNumber( usUpgrade ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleUpgradeSlotName", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return string( pLuaArgument.GetString() ); + } + + return string(); +} + +CLuaArguments* CLuaFunctionDefinitions::GetVehicleCompatibleUpgrades( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleCompatibleUpgrades", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + //return pLuaArgument.GetString(); + } + + return NULL; +} + +unsigned char CLuaFunctionDefinitions::GetVehicleDoorState( lua_State* pLuaVM, void* pUserData, unsigned char ucDoor ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucDoor ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleDoorState", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return static_cast< unsigned char >( pLuaArgument.GetNumber() ); + } + + return 0; +} + +bool CLuaFunctionDefinitions::GetVehicleWheelStates( lua_State* pLuaVM, void* pUserData, unsigned char& ucFrontLeft, unsigned char& ucRearLeft, unsigned char& ucFrontRight, unsigned char& ucRearRight ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleWheelStates", 4 ) ) + { + ucFrontLeft = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -4 ) )->GetNumber() ); + ucRearLeft = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -3 ) )->GetNumber() ); + ucFrontRight = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -2 ) )->GetNumber() ); + ucRearRight = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -1 ) )->GetNumber() ); + + return true; + } + + return false; +} + +unsigned char CLuaFunctionDefinitions::GetVehicleLightState( lua_State* pLuaVM, void* pUserData, unsigned char ucLight ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucLight ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleLightState", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return static_cast< unsigned char >( pLuaArgument.GetNumber() ); + } + + return 0; +} + +unsigned char CLuaFunctionDefinitions::GetVehiclePanelState( lua_State* pLuaVM, void* pUserData, unsigned char ucPanel ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucPanel ); + + if( pLuaArguments.Call( pLuaVM, "getVehiclePanelState", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return static_cast< unsigned char >( pLuaArgument.GetNumber() ); + } + + return 0; +} + +unsigned char CLuaFunctionDefinitions::GetVehicleOverrideLights( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleOverrideLights", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return static_cast< unsigned char >( pLuaArgument.GetNumber() ); + } + + return 0; +} + +void* CLuaFunctionDefinitions::GetVehicleTowedByVehicle( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleTowedByVehicle", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetLightUserData(); + } + + return NULL; +} + +void* CLuaFunctionDefinitions::GetVehicleTowingVehicle( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleTowingVehicle", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetLightUserData(); + } + + return NULL; +} + +unsigned char CLuaFunctionDefinitions::GetVehiclePaintjob( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehiclePaintjob", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return static_cast< unsigned char >( pLuaArgument.GetNumber() ); + } + + return 0; +} + +const char* CLuaFunctionDefinitions::GetVehiclePlateText( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehiclePlateText", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetString(); + } + + return NULL; +} + +bool CLuaFunctionDefinitions::IsVehicleDamageProof( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "isVehicleDamageProof", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::IsVehicleFuelTankExplodable( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "isVehicleFuelTankExplodable", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::IsVehicleFrozen( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "isVehicleFrozen", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::IsVehicleOnGround( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "isVehicleOnGround", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::GetVehicleEngineState( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleEngineState", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::IsTrainDerailed( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "isTrainDerailed", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::IsTrainDerailable( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "isTrainDerailable", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::GetTrainDirection( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getTrainDirection", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +float CLuaFunctionDefinitions::GetTrainSpeed( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getTrainSpeed", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return static_cast< float >( pLuaArgument.GetNumber() ); + } + + return 0.0f; +} + +bool CLuaFunctionDefinitions::IsVehicleBlown( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "isVehicleBlown", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::GetVehicleHeadLightColor( lua_State* pLuaVM, void* pUserData, unsigned char& ucRed, unsigned char& ucGreen, unsigned char& ucBlue ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleHeadLightColor", 1 ) ) + { + ucRed = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -3 ) )->GetNumber() ); + ucGreen = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -2 ) )->GetNumber() ); + ucBlue = static_cast< unsigned char >( ( new CLuaArgument( pLuaVM, -1 ) )->GetNumber() ); + + return true; + } + + return false; +} + +float CLuaFunctionDefinitions::GetVehicleDoorOpenRatio( lua_State* pLuaVM, void* pUserData, unsigned char ucDoor ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucDoor ); + + if( pLuaArguments.Call( pLuaVM, "getVehicleDoorOpenRatio", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return static_cast< float >( pLuaArgument.GetBoolean() ); + } + + return 0.0f; +} + +bool CLuaFunctionDefinitions::IsVehicleTaxiLightOn( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "isVehicleTaxiLightOn", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +// Vehicle set functions +bool CLuaFunctionDefinitions::FixVehicle( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "fixVehicle", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::BlowVehicle( lua_State* pLuaVM, void* pUserData, bool bExplode ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bExplode ); + + if( pLuaArguments.Call( pLuaVM, "blowVehicle", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleTurnVelocity( lua_State* pLuaVM, void* pUserData, float fX, float fY, float fZ ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( fX ); + pLuaArguments.PushNumber( fY ); + pLuaArguments.PushNumber( fZ ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleTurnVelocity", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleColor( lua_State* pLuaVM, void* pUserData, unsigned char& ucRed, unsigned char& ucGreen, unsigned char& ucBlue, unsigned char& ucRed2, unsigned char& ucGreen2, unsigned char& ucBlue2, unsigned char& ucRed3, unsigned char& ucGreen3, unsigned char& ucBlue3, unsigned char& ucRed4, unsigned char& ucGreen4, unsigned char& ucBlue4 ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + pLuaArguments.PushNumber( ucRed ); + pLuaArguments.PushNumber( ucGreen ); + pLuaArguments.PushNumber( ucBlue ); + + pLuaArguments.PushNumber( ucRed2 ); + pLuaArguments.PushNumber( ucGreen2 ); + pLuaArguments.PushNumber( ucBlue2 ); + + pLuaArguments.PushNumber( ucRed3 ); + pLuaArguments.PushNumber( ucGreen3 ); + pLuaArguments.PushNumber( ucBlue3 ); + + pLuaArguments.PushNumber( ucRed4 ); + pLuaArguments.PushNumber( ucGreen4 ); + pLuaArguments.PushNumber( ucBlue4 ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleColor", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleLandingGearDown( lua_State* pLuaVM, void* pUserData, bool bLandingGearDown ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bLandingGearDown ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleLandingGearDown", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleLocked( lua_State* pLuaVM, void* pUserData, bool bLocked ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bLocked ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleLocked", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleDoorsUndamageable( lua_State* pLuaVM, void* pUserData, bool bDoorsUndamageable ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bDoorsUndamageable ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleDoorsUndamageable", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleSirensOn( lua_State* pLuaVM, void* pUserData, bool bSirensOn ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bSirensOn ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleSirensOn", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleTaxiLightOn( lua_State* pLuaVM, void* pUserData, bool bTaxiLightState ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bTaxiLightState ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleTaxiLightOn", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::AddVehicleUpgrade( lua_State* pLuaVM, void* pUserData, unsigned short usUpgrade ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( usUpgrade ); + + if( pLuaArguments.Call( pLuaVM, "addVehicleUpgrade", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::RemoveVehicleUpgrade( lua_State* pLuaVM, void* pUserData, unsigned short usUpgrade ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( usUpgrade ); + + if( pLuaArguments.Call( pLuaVM, "removeVehicleUpgrade", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleDoorState( lua_State* pLuaVM, void* pUserData, unsigned char ucDoor, unsigned char ucState ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucDoor ); + pLuaArguments.PushNumber( ucState ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleDoorState", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleWheelStates( lua_State* pLuaVM, void* pUserData, int iFrontLeft, int iRearLeft, int iFrontRight, int iRearRight ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( iFrontLeft ); + pLuaArguments.PushNumber( iRearLeft ); + pLuaArguments.PushNumber( iFrontRight ); + pLuaArguments.PushNumber( iRearRight ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleWheelStates", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleLightState( lua_State* pLuaVM, void* pUserData, unsigned char ucLight, unsigned char ucState ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucLight ); + pLuaArguments.PushNumber( ucState ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleLightState", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehiclePanelState( lua_State* pLuaVM, void* pUserData, unsigned char ucPanel, unsigned char ucState ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucPanel ); + pLuaArguments.PushNumber( ucState ); + + if( pLuaArguments.Call( pLuaVM, "setVehiclePanelState", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleIdleRespawnDelay( lua_State* pLuaVM, void* pUserData, unsigned long ulTime ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ulTime ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleIdleRespawnDelay", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleRespawnDelay( lua_State* pLuaVM, void* pUserData, unsigned long ulTime ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ulTime ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleRespawnDelay", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleRespawnPosition( lua_State* pLuaVM, void* pUserData, float fX, float fY, float fZ, float fRX, float fRY, float fRZ ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( fX ); + pLuaArguments.PushNumber( fY ); + pLuaArguments.PushNumber( fZ ); + pLuaArguments.PushNumber( fRX ); + pLuaArguments.PushNumber( fRY ); + pLuaArguments.PushNumber( fRZ ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleRespawnPosition", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::ToggleVehicleRespawn( lua_State* pLuaVM, void* pUserData, bool bRespawn ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( bRespawn ); + + if( pLuaArguments.Call( pLuaVM, "toggleVehicleRespawn", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::ResetVehicleExplosionTime( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "resetVehicleExplosionTime", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::ResetVehicleIdleTime( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "resetVehicleIdleTime", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SpawnVehicle( lua_State* pLuaVM, void* pUserData, float fX, float fY, float fZ, float fRX, float fRY, float fRZ ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( fX ); + pLuaArguments.PushNumber( fY ); + pLuaArguments.PushNumber( fZ ); + pLuaArguments.PushNumber( fRX ); + pLuaArguments.PushNumber( fRY ); + pLuaArguments.PushNumber( fRZ ); + + if( pLuaArguments.Call( pLuaVM, "spawnVehicle", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::RespawnVehicle( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "respawnVehicle", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleOverrideLights( lua_State* pLuaVM, void* pUserData, unsigned char ucLights ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucLights ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleOverrideLights", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::AttachTrailerToVehicle( lua_State* pLuaVM, void* pUserData, void* pTrailer ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushUserData( pTrailer ); + + if( pLuaArguments.Call( pLuaVM, "attachTrailerToVehicle", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::DetachTrailerFromVehicle( lua_State* pLuaVM, void* pUserData, void* pTrailer ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pTrailer ) + { + pLuaArguments.PushUserData( pTrailer ); + } + + if( pLuaArguments.Call( pLuaVM, "detachTrailerFromVehicle", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleEngineState( lua_State* pLuaVM, void* pUserData, bool bState ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bState ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleEngineState", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleDirtLevel( lua_State* pLuaVM, void* pUserData, float fDirtLevel ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( fDirtLevel ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleDirtLevel", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleDamageProof( lua_State* pLuaVM, void* pUserData, bool bDamageProof ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bDamageProof ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleDamageProof", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehiclePaintjob( lua_State* pLuaVM, void* pUserData, unsigned char ucPaintjob ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucPaintjob ); + + if( pLuaArguments.Call( pLuaVM, "setVehiclePaintjob", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleFuelTankExplodable( lua_State* pLuaVM, void* pUserData, bool bExplodable ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bExplodable ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleFuelTankExplodable", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleFrozen( lua_State* pLuaVM, void* pUserData, bool bFrozen ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bFrozen ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleFrozen", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetTrainDerailed( lua_State* pLuaVM, void* pUserData, bool bDerailed ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bDerailed ); + + if( pLuaArguments.Call( pLuaVM, "setTrainDerailed", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetTrainDerailable( lua_State* pLuaVM, void* pUserData, bool bDerailable ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bDerailable ); + + if( pLuaArguments.Call( pLuaVM, "setTrainDerailable", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetTrainDirection( lua_State* pLuaVM, void* pUserData, bool bDireciton ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushBoolean( bDireciton ); + + if( pLuaArguments.Call( pLuaVM, "setTrainDirection", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetTrainSpeed( lua_State* pLuaVM, void* pUserData, float fSpeed ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( fSpeed ); + + if( pLuaArguments.Call( pLuaVM, "setTrainDirection", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleHeadLightColor( lua_State* pLuaVM, void* pUserData, unsigned char ucRed, unsigned char ucGreen, unsigned char ucBlue ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucRed ); + pLuaArguments.PushNumber( ucGreen ); + pLuaArguments.PushNumber( ucBlue ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleHeadLightColor", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleTurretPosition( lua_State* pLuaVM, void* pUserData, float fHorizontal, float fVertical ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( fHorizontal ); + pLuaArguments.PushNumber( fVertical ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleTurretPosition", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleDoorOpenRatio( lua_State* pLuaVM, void* pUserData, unsigned char ucDoor, float fRatio, unsigned long ulTime ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucDoor ); + pLuaArguments.PushNumber( fRatio ); + pLuaArguments.PushNumber( ulTime ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleDoorOpenRatio", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleVariant( lua_State* pLuaVM, void* pUserData, unsigned char ucVariant, unsigned char ucVariant2 ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucVariant ); + pLuaArguments.PushNumber( ucVariant2 ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleVariant", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::GiveVehicleSirens( lua_State* pLuaVM, void* pUserData, unsigned char ucSirenType, unsigned char ucSirenCount, bool bFlag360, bool bCheckLosFlag, bool bUseRandomiserFlag, bool bSilentFlag ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucSirenType ); + pLuaArguments.PushNumber( ucSirenCount ); + pLuaArguments.PushBoolean( bFlag360 ); + pLuaArguments.PushBoolean( bCheckLosFlag ); + pLuaArguments.PushBoolean( bUseRandomiserFlag ); + pLuaArguments.PushBoolean( bSilentFlag ); + + if( pLuaArguments.Call( pLuaVM, "addVehicleSirens", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::RemoveVehicleSirens( lua_State* pLuaVM, void* pUserData ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + + if( pLuaArguments.Call( pLuaVM, "removeVehicleSirens", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehicleSirens( lua_State* pLuaVM, void* pUserData, unsigned char ucSirenID, float fX, float fY, float fZ, float fRed, float fGreen, float fBlue, float fAlpha, float fMinAlpha ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushNumber( ucSirenID ); + pLuaArguments.PushNumber( fX ); + pLuaArguments.PushNumber( fY ); + pLuaArguments.PushNumber( fZ ); + pLuaArguments.PushNumber( fRed ); + pLuaArguments.PushNumber( fGreen ); + pLuaArguments.PushNumber( fBlue ); + pLuaArguments.PushNumber( fAlpha ); + pLuaArguments.PushNumber( fMinAlpha ); + + if( pLuaArguments.Call( pLuaVM, "setVehicleSirens", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} + +bool CLuaFunctionDefinitions::SetVehiclePlateText( lua_State* pLuaVM, void* pUserData, const char* szName ) +{ + CLuaArguments pLuaArguments; + + pLuaArguments.PushUserData( pUserData ); + pLuaArguments.PushString( szName ); + + if( pLuaArguments.Call( pLuaVM, "setVehiclePlateText", 1 ) ) + { + CLuaArgument pLuaArgument( pLuaVM, -1 ); + + return pLuaArgument.GetBoolean(); + } + + return false; +} diff --git a/mta-mono/src/lua/CLuaFunctionDefinitions.h b/mta-mono/src/lua/CLuaFunctionDefinitions.h index 9e2a458..f78c2b8 100644 --- a/mta-mono/src/lua/CLuaFunctionDefinitions.h +++ b/mta-mono/src/lua/CLuaFunctionDefinitions.h @@ -207,109 +207,107 @@ public: // static bool SetWeaponProperty ( lua_State* pLuaVM, void* pUserData ); // Weapon give/take functions - // static int GiveWeapon ( lua_State* luaVM ); - // static int TakeWeapon ( lua_State* luaVM ); - // static int TakeAllWeapons ( lua_State* luaVM ); - // static int SetWeaponAmmo ( lua_State* luaVM ); - // static int GetSlotFromWeapon ( lua_State* luaVM ); + // static int GiveWeapon ( lua_State* pLuaVM ); + // static int TakeWeapon ( lua_State* pLuaVM ); + // static int TakeAllWeapons ( lua_State* pLuaVM ); + // static int SetWeaponAmmo ( lua_State* pLuaVM ); + // static int GetSlotFromWeapon ( lua_State* pLuaVM ); // Vehicle create/destroy functions - static void* CreateVehicle ( lua_State* luaVM, int model, float fX, float fY, float fZ, float fRX, float fRY, float fRZ, string numberplate, bool direction = false, int variant1 = 255, int variant2 = 255 ); + static void* CreateVehicle ( lua_State* pLuaVM, int model, float fX, float fY, float fZ, float fRX, float fRY, float fRZ, string numberplate, bool direction = false, int variant1 = 255, int variant2 = 255 ); // Vehicle get functions - // static int GetVehicleType ( lua_State* luaVM ); - // static int GetVehicleVariant ( lua_State* luaVM ); - // static int GetVehicleColor ( lua_State* luaVM ); - // static int GetVehicleModelFromName ( lua_State* luaVM ); - // static int GetVehicleLandingGearDown ( lua_State* luaVM ); - // static int GetVehicleMaxPassengers ( lua_State* luaVM ); - // static int GetVehicleName ( lua_State* luaVM ); - // static int GetVehicleNameFromModel ( lua_State* luaVM ); - // static int GetVehicleOccupant ( lua_State* luaVM ); - // static int GetVehicleOccupants ( lua_State* luaVM ); - // static int GetVehicleController ( lua_State* luaVM ); - // static int GetVehicleRotation ( lua_State* luaVM ); - // static int GetVehicleSirensOn ( lua_State* luaVM ); - // static int GetVehicleTurnVelocity ( lua_State* luaVM ); - // static int GetVehicleTurretPosition ( lua_State* luaVM ); - // static int IsVehicleLocked ( lua_State* luaVM ); - // static int GetVehiclesOfType ( lua_State* luaVM ); - // static int GetVehicleUpgradeOnSlot ( lua_State* luaVM ); - // static int GetVehicleUpgrades ( lua_State* luaVM ); - // static int GetVehicleUpgradeSlotName ( lua_State* luaVM ); - // static int GetVehicleCompatibleUpgrades ( lua_State* luaVM ); - // static int GetVehicleDoorState ( lua_State* luaVM ); - // static int GetVehicleWheelStates ( lua_State* luaVM ); - // static int GetVehicleLightState ( lua_State* luaVM ); - // static int GetVehiclePanelState ( lua_State* luaVM ); - // static int GetVehicleOverrideLights ( lua_State* luaVM ); - // static int GetVehicleTowedByVehicle ( lua_State* luaVM ); - // static int GetVehicleTowingVehicle ( lua_State* luaVM ); - // static int GetVehiclePaintjob ( lua_State* luaVM ); - // static int GetVehiclePlateText ( lua_State* luaVM ); - // static int IsVehicleDamageProof ( lua_State* luaVM ); - // static int IsVehicleFuelTankExplodable ( lua_State* luaVM ); - // static int IsVehicleFrozen ( lua_State* luaVM ); - // static int IsVehicleOnGround ( lua_State* luaVM ); - // static int GetVehicleEngineState ( lua_State* luaVM ); - // static int IsTrainDerailed ( lua_State* luaVM ); - // static int IsTrainDerailable ( lua_State* luaVM ); - // static int GetTrainDirection ( lua_State* luaVM ); - // static int GetTrainSpeed ( lua_State* luaVM ); - // static int IsVehicleBlown ( lua_State* luaVM ); - // static int GetVehicleHeadLightColor ( lua_State* luaVM ); - // static int GetVehicleDoorOpenRatio ( lua_State* luaVM ); + static string GetVehicleType ( lua_State* pLuaVM, void* pUserData ); + static bool GetVehicleVariant ( lua_State* pLuaVM, void* pUserData, unsigned char& ucVariant, unsigned char& ucVariant2 ); + static bool GetVehicleColor ( lua_State* pLuaVM, void* pUserData, unsigned char& ucR1, unsigned char& ucG1, unsigned char& ucB1, unsigned char& ucR2, unsigned char& ucG2, unsigned char& ucB2, unsigned char& ucR3, unsigned char& ucG3, unsigned char& ucB3, unsigned char& ucR4, unsigned char& ucG4, unsigned char& ucB4 ); + static unsigned short GetVehicleModelFromName ( lua_State* pLuaVM, const char* szName ); + static bool GetVehicleLandingGearDown ( lua_State* pLuaVM, void* pUserData ); + static int GetVehicleMaxPassengers ( lua_State* pLuaVM, void* pUserData ); + static string GetVehicleName ( lua_State* pLuaVM, void* pUserData ); + static string GetVehicleNameFromModel ( lua_State* pLuaVM, void* pUserData, unsigned short usModel ); + static void* GetVehicleOccupant ( lua_State* pLuaVM, void* pUserData, unsigned int uiSeat ); + static CLuaArguments* GetVehicleOccupants ( lua_State* pLuaVM, void* pUserData ); + static void* GetVehicleController ( lua_State* pLuaVM, void* pUserData ); + static bool GetVehicleSirensOn ( lua_State* pLuaVM, void* pUserData ); + static bool GetVehicleTurnVelocity ( lua_State* pLuaVM, void* pUserData, float &fX, float& fY, float& fZ ); + static bool GetVehicleTurretPosition ( lua_State* pLuaVM, void* pUserData, float &fX, float& fY ); + static bool IsVehicleLocked ( lua_State* pLuaVM, void* pUserData ); + static CLuaArguments* GetVehiclesOfType ( lua_State* pLuaVM, void* pUserData ); + static unsigned short GetVehicleUpgradeOnSlot ( lua_State* pLuaVM, void* pUserData, unsigned char ucSlot ); + static CLuaArguments* GetVehicleUpgrades ( lua_State* pLuaVM, void* pUserData ); + static string GetVehicleUpgradeSlotName ( lua_State* pLuaVM, unsigned char ucSlot ); + static string GetVehicleUpgradeSlotName ( lua_State* pLuaVM, unsigned short usUpgrade ); + static CLuaArguments* GetVehicleCompatibleUpgrades ( lua_State* pLuaVM, void* pUserData ); + static unsigned char GetVehicleDoorState ( lua_State* pLuaVM, void* pUserData, unsigned char ucDoor ); + static bool GetVehicleWheelStates ( lua_State* pLuaVM, void* pUserData, unsigned char& ucFrontLeft, unsigned char& ucRearLeft, unsigned char& ucFrontRight, unsigned char& ucRearRight ); + static unsigned char GetVehicleLightState ( lua_State* pLuaVM, void* pUserData, unsigned char ucLight ); + static unsigned char GetVehiclePanelState ( lua_State* pLuaVM, void* pUserData, unsigned char ucPanel ); + static unsigned char GetVehicleOverrideLights ( lua_State* pLuaVM, void* pUserData ); + static void* GetVehicleTowedByVehicle ( lua_State* pLuaVM, void* pUserData ); + static void* GetVehicleTowingVehicle ( lua_State* pLuaVM, void* pUserData ); + static unsigned char GetVehiclePaintjob ( lua_State* pLuaVM, void* pUserData ); + static const char* GetVehiclePlateText ( lua_State* pLuaVM, void* pUserData ); + static bool IsVehicleDamageProof ( lua_State* pLuaVM, void* pUserData ); + static bool IsVehicleFuelTankExplodable ( lua_State* pLuaVM, void* pUserData ); + static bool IsVehicleFrozen ( lua_State* pLuaVM, void* pUserData ); + static bool IsVehicleOnGround ( lua_State* pLuaVM, void* pUserData ); + static bool GetVehicleEngineState ( lua_State* pLuaVM, void* pUserData ); + static bool IsTrainDerailed ( lua_State* pLuaVM, void* pUserData ); + static bool IsTrainDerailable ( lua_State* pLuaVM, void* pUserData ); + static bool GetTrainDirection ( lua_State* pLuaVM, void* pUserData ); + static float GetTrainSpeed ( lua_State* pLuaVM, void* pUserData ); + static bool IsVehicleBlown ( lua_State* pLuaVM, void* pUserData ); + static bool GetVehicleHeadLightColor ( lua_State* pLuaVM, void* pUserData, unsigned char& ucRed, unsigned char& ucGreen, unsigned char& ucBlue ); + static float GetVehicleDoorOpenRatio ( lua_State* pLuaVM, void* pUserData, unsigned char ucDoor ); + static bool IsVehicleTaxiLightOn ( lua_State* pLuaVM, void* pUserData ); // Vehicle set functions - // static int FixVehicle ( lua_State* luaVM ); - // static int BlowVehicle ( lua_State* luaVM ); - // static int SetVehicleRotation ( lua_State* luaVM ); - // static int SetVehicleTurnVelocity ( lua_State* luaVM ); - // static int SetVehicleColor ( lua_State* luaVM ); - // static int SetVehicleLandingGearDown ( lua_State* luaVM ); - // static int SetVehicleLocked ( lua_State* luaVM ); - // static int SetVehicleModel ( lua_State* luaVM ); - // static int SetVehicleDoorsUndamageable ( lua_State* luaVM ); - // static int SetVehicleSirensOn ( lua_State* luaVM ); - // static int SetVehicleTaxiLightOn ( lua_State* luaVM ); - // static int IsVehicleTaxiLightOn ( lua_State* luaVM ); - // static int AddVehicleUpgrade ( lua_State* luaVM ); - // static int RemoveVehicleUpgrade ( lua_State* luaVM ); - // static int SetVehicleDoorState ( lua_State* luaVM ); - // static int SetVehicleWheelStates ( lua_State* luaVM ); - // static int SetVehicleLightState ( lua_State* luaVM ); - // static int SetVehiclePanelState ( lua_State* luaVM ); - // static int SetVehicleIdleRespawnDelay ( lua_State* luaVM ); - // static int SetVehicleRespawnDelay ( lua_State* luaVM ); - // static int SetVehicleRespawnPosition ( lua_State* luaVM ); - // static int ToggleVehicleRespawn ( lua_State* luaVM ); - // static int ResetVehicleExplosionTime ( lua_State* luaVM ); - // static int ResetVehicleIdleTime ( lua_State* luaVM ); - // static int SpawnVehicle ( lua_State* luaVM ); - // static int RespawnVehicle ( lua_State* luaVM ); - // static int SetVehicleOverrideLights ( lua_State* luaVM ); - // static int AttachTrailerToVehicle ( lua_State* luaVM ); - // static int DetachTrailerFromVehicle ( lua_State* luaVM ); - // static int SetVehicleEngineState ( lua_State* luaVM ); - // static int SetVehicleDirtLevel ( lua_State* luaVM ); - // static int SetVehicleDamageProof ( lua_State* luaVM ); - // static int SetVehiclePaintjob ( lua_State* luaVM ); - // static int SetVehicleFuelTankExplodable ( lua_State* luaVM ); - // static int SetVehicleFrozen ( lua_State* luaVM ); - // static int SetTrainDerailed ( lua_State* luaVM ); - // static int SetTrainDerailable ( lua_State* luaVM ); - // static int SetTrainDirection ( lua_State* luaVM ); - // static int SetTrainSpeed ( lua_State* luaVM ); - // static int SetVehicleHeadLightColor ( lua_State* luaVM ); - // static int SetVehicleTurretPosition ( lua_State* luaVM ); - // static int SetVehicleDoorOpenRatio ( lua_State* luaVM ); - // static int SetVehicleVariant ( lua_State* luaVM ); - // static int GiveVehicleSirens ( lua_State* luaVM ); - // static int RemoveVehicleSirens ( lua_State* luaVM ); - // static int SetVehicleSirens ( lua_State* luaVM ); - // static int GetVehicleSirens ( lua_State* luaVM ); - // static int GetVehicleSirenParams ( lua_State* luaVM ); - // static int SetVehiclePlateText ( lua_State* luaVM ); + static bool FixVehicle ( lua_State* pLuaVM, void* pUserData ); + static bool BlowVehicle ( lua_State* pLuaVM, void* pUserData, bool bExplode ); + static bool SetVehicleTurnVelocity ( lua_State* pLuaVM, void* pUserData, float fX, float fY, float fZ ); + static bool SetVehicleColor ( lua_State* pLuaVM, void* pUserData, unsigned char& ucRed, unsigned char& ucGreen, unsigned char& ucBlue, unsigned char& ucRed2, unsigned char& ucGreen2, unsigned char& ucBlue2, unsigned char& ucRed3, unsigned char& ucGreen3, unsigned char& ucBlue3, unsigned char& ucRed4, unsigned char& ucGreen4, unsigned char& ucBlue4 ); + static bool SetVehicleLandingGearDown ( lua_State* pLuaVM, void* pUserData, bool bLandingGearDown ); + static bool SetVehicleLocked ( lua_State* pLuaVM, void* pUserData, bool bLocked ); + static bool SetVehicleDoorsUndamageable ( lua_State* pLuaVM, void* pUserData, bool bDoorsUndamageable ); + static bool SetVehicleSirensOn ( lua_State* pLuaVM, void* pUserData, bool bSirensOn ); + static bool SetVehicleTaxiLightOn ( lua_State* pLuaVM, void* pUserData, bool bTaxiLightState ); + static bool AddVehicleUpgrade ( lua_State* pLuaVM, void* pUserData, unsigned short usUpgrade ); + static bool RemoveVehicleUpgrade ( lua_State* pLuaVM, void* pUserData, unsigned short usUpgrade ); + static bool SetVehicleDoorState ( lua_State* pLuaVM, void* pUserData, unsigned char ucDoor, unsigned char ucState ); + static bool SetVehicleWheelStates ( lua_State* pLuaVM, void* pUserData, int iFrontLeft, int iRearLeft = -1, int iFrontRight = -1, int iRearRight = -1 ); + static bool SetVehicleLightState ( lua_State* pLuaVM, void* pUserData, unsigned char ucLight, unsigned char ucState ); + static bool SetVehiclePanelState ( lua_State* pLuaVM, void* pUserData, unsigned char ucPanel, unsigned char ucState ); + static bool SetVehicleIdleRespawnDelay ( lua_State* pLuaVM, void* pUserData, unsigned long ulTime ); + static bool SetVehicleRespawnDelay ( lua_State* pLuaVM, void* pUserData, unsigned long ulTime ); + static bool SetVehicleRespawnPosition ( lua_State* pLuaVM, void* pUserData, float fX, float fY, float fZ, float fRX, float fRY, float fRZ ); + static bool ToggleVehicleRespawn ( lua_State* pLuaVM, void* pUserData, bool bRespawn ); + static bool ResetVehicleExplosionTime ( lua_State* pLuaVM, void* pUserData ); + static bool ResetVehicleIdleTime ( lua_State* pLuaVM, void* pUserData ); + static bool SpawnVehicle ( lua_State* pLuaVM, void* pUserData, float fX, float fY, float fZ, float fRX, float fRY, float fRZ ); + static bool RespawnVehicle ( lua_State* pLuaVM, void* pUserData ); + static bool SetVehicleOverrideLights ( lua_State* pLuaVM, void* pUserData, unsigned char ucLights ); + static bool AttachTrailerToVehicle ( lua_State* pLuaVM, void* pUserData, void* pTrailer ); + static bool DetachTrailerFromVehicle ( lua_State* pLuaVM, void* pUserData, void* pTrailer = NULL ); + static bool SetVehicleEngineState ( lua_State* pLuaVM, void* pUserData, bool bState ); + static bool SetVehicleDirtLevel ( lua_State* pLuaVM, void* pUserData, float fDirtLevel ); + static bool SetVehicleDamageProof ( lua_State* pLuaVM, void* pUserData, bool bDamageProof ); + static bool SetVehiclePaintjob ( lua_State* pLuaVM, void* pUserData, unsigned char ucPaintjob ); + static bool SetVehicleFuelTankExplodable ( lua_State* pLuaVM, void* pUserData, bool bExplodable ); + static bool SetVehicleFrozen ( lua_State* pLuaVM, void* pUserData, bool bFrozen ); + static bool SetTrainDerailed ( lua_State* pLuaVM, void* pUserData, bool bDerailed ); + static bool SetTrainDerailable ( lua_State* pLuaVM, void* pUserData, bool bDerailable ); + static bool SetTrainDirection ( lua_State* pLuaVM, void* pUserData, bool bDireciton ); + static bool SetTrainSpeed ( lua_State* pLuaVM, void* pUserData, float fSpeed ); + static bool SetVehicleHeadLightColor ( lua_State* pLuaVM, void* pUserData, unsigned char ucRed, unsigned char ucGreen, unsigned char ucBlue ); + static bool SetVehicleTurretPosition ( lua_State* pLuaVM, void* pUserData, float fHorizontal, float fVertical ); + static bool SetVehicleDoorOpenRatio ( lua_State* pLuaVM, void* pUserData, unsigned char ucDoor, float fRatio, unsigned long ulTime = 0 ); + static bool SetVehicleVariant ( lua_State* pLuaVM, void* pUserData, unsigned char ucVariant, unsigned char ucVariant2 ); + static bool GiveVehicleSirens ( lua_State* pLuaVM, void* pUserData, unsigned char ucSirenType, unsigned char ucSirenCount, bool bFlag360 = false, bool bCheckLosFlag = true, bool bUseRandomiserFlag = true, bool bSilentFlag = false ); + static bool RemoveVehicleSirens ( lua_State* pLuaVM, void* pUserData ); + static bool SetVehicleSirens ( lua_State* pLuaVM, void* pUserData, unsigned char ucSirenID, float fX, float fY, float fZ, float fRed, float fGreen, float fBlue, float fAlpha = 255, float fMinAlpha = 0.0 ); +// static bool GetVehicleSirens ( lua_State* pLuaVM, void* pUserData ); +// static bool GetVehicleSirenParams ( lua_State* pLuaVM, void* pUserData ); + static bool SetVehiclePlateText ( lua_State* pLuaVM, void* pUserData, const char* szName ); // Marker create/destroy functions // static int CreateMarker ( lua_State* luaVM );