From c09297997e9878f06e6cd513e26cbbe50ae860fb Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Mon, 18 Jan 2021 22:19:30 +0300 Subject: [PATCH] script full --- src/control/Bridge.h | 3 +- src/control/CarCtrl.cpp | 6 +- src/control/CarCtrl.h | 3 +- src/control/GameLogic.cpp | 3 +- src/control/GameLogic.h | 1 + src/control/Garages.cpp | 161 ++++-- src/control/Pickups.cpp | 18 +- src/control/Pickups.h | 3 + src/control/Script.cpp | 322 ++++++----- src/control/Script10.cpp | 528 +++++++++++------ src/control/Script2.cpp | 12 +- src/control/Script3.cpp | 2 +- src/control/Script4.cpp | 4 +- src/control/Script7.cpp | 2 +- src/control/Script8.cpp | 5 +- src/control/Script9.cpp | 1051 ++++++++++++++++++++++++---------- src/control/ScriptCommands.h | 316 +++++----- src/core/Camera.cpp | 3 +- src/core/Camera.h | 1 + src/core/Pad.h | 4 +- src/core/config.h | 5 +- src/modelinfo/ModelIndices.h | 45 +- src/objects/Object.h | 1 + src/peds/Ped.h | 11 +- src/peds/PedAI.cpp | 2 +- src/vehicles/Cranes.cpp | 22 +- src/vehicles/Vehicle.h | 2 + 27 files changed, 1666 insertions(+), 870 deletions(-) diff --git a/src/control/Bridge.h b/src/control/Bridge.h index c5702629..dd781a9a 100644 --- a/src/control/Bridge.h +++ b/src/control/Bridge.h @@ -8,7 +8,8 @@ enum bridgeStates { STATE_LIFT_PART_MOVING_DOWN, STATE_LIFT_PART_IS_DOWN, STATE_LIFT_PART_ABOUT_TO_MOVE_UP, - STATE_LIFT_PART_MOVING_UP + STATE_LIFT_PART_MOVING_UP, + STATE_BRIDGE_ALWAYS_UNLOCKED }; class CBridge diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index faee574c..15cfee11 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -112,6 +112,8 @@ int32 CCarCtrl::LoadedCarsArray[TOTAL_CUSTOM_CLASSES][MAX_CAR_MODELS_IN_ARRAY]; CVehicle* apCarsToKeep[MAX_CARS_TO_KEEP]; uint32 aCarsToKeepTime[MAX_CARS_TO_KEEP]; +bool gbEmergencyVehiclesEnabled = true; + //--MIAMI: done except heli/plane functions void @@ -3205,7 +3207,7 @@ void CCarCtrl::GenerateEmergencyServicesCar(void) if (NumFiretrucksOnDuty + NumAmbulancesOnDuty + NumParkedCars + NumMissionCars + NumLawEnforcerCars + NumRandomCars > MaxNumberOfCarsInUse) return; - if (NumAmbulancesOnDuty == 0 /* TODO(LCS): && gbEmergencyVehiclesEnabled */){ + if (NumAmbulancesOnDuty == 0 && gbEmergencyVehiclesEnabled){ if (gAccidentManager.CountActiveAccidents() < 2){ if (CStreaming::HasModelLoaded(MI_AMBULAN)) CStreaming::SetModelIsDeletable(MI_MEDIC); @@ -3224,7 +3226,7 @@ void CCarCtrl::GenerateEmergencyServicesCar(void) } } } - if (NumFiretrucksOnDuty == 0 /* TODO(LCS): && gbEmergencyVehiclesEnabled */){ + if (NumFiretrucksOnDuty == 0 && gbEmergencyVehiclesEnabled){ if (gFireManager.GetTotalActiveFires() < 3){ if (CStreaming::HasModelLoaded(MI_FIRETRUCK)) CStreaming::SetModelIsDeletable(MI_FIREMAN); diff --git a/src/control/CarCtrl.h b/src/control/CarCtrl.h index fcb7929b..edf1f41e 100644 --- a/src/control/CarCtrl.h +++ b/src/control/CarCtrl.h @@ -172,4 +172,5 @@ public: static int32 LoadedCarsArray[TOTAL_CUSTOM_CLASSES][MAX_CAR_MODELS_IN_ARRAY]; }; -extern CVehicle* apCarsToKeep[MAX_CARS_TO_KEEP]; \ No newline at end of file +extern CVehicle* apCarsToKeep[MAX_CARS_TO_KEEP]; +extern bool gbEmergencyVehiclesEnabled; \ No newline at end of file diff --git a/src/control/GameLogic.cpp b/src/control/GameLogic.cpp index 93e6c67d..d17c5b04 100644 --- a/src/control/GameLogic.cpp +++ b/src/control/GameLogic.cpp @@ -45,6 +45,7 @@ float CGameLogic::AfterDeathStartPointOrientation[NUM_SHORTCUT_START_POINTS]; CVector CGameLogic::ShortCutDropOffForMission; float CGameLogic::ShortCutDropOffOrientationForMission; bool CGameLogic::MissionDropOffReadyToBeUsed; +char CGameLogic::mStoredPlayerOutfit[8] = "plr3"; //--MIAMI: file done @@ -90,7 +91,7 @@ CGameLogic::SortOutStreamingAndMemory(const CVector &pos) CStreaming::DeleteRwObjectsAfterDeath(pos); CStreaming::RemoveUnusedModelsInLoadedList(); CGame::DrasticTidyUpMemory(true); - CWorld::Players[CWorld::PlayerInFocus].m_pPed->Undress("player"); + CWorld::Players[CWorld::PlayerInFocus].m_pPed->Undress(mStoredPlayerOutfit); CStreaming::LoadSceneCollision(pos); CStreaming::LoadScene(pos); CWorld::Players[CWorld::PlayerInFocus].m_pPed->Dress(); diff --git a/src/control/GameLogic.h b/src/control/GameLogic.h index 9b774cc7..a12b4031 100644 --- a/src/control/GameLogic.h +++ b/src/control/GameLogic.h @@ -48,4 +48,5 @@ public: static CVector ShortCutDropOffForMission; static float ShortCutDropOffOrientationForMission; static bool MissionDropOffReadyToBeUsed; + static char mStoredPlayerOutfit[8]; }; \ No newline at end of file diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index f083ecb5..0f384cb4 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -857,7 +857,79 @@ void CGarage::Update() } break; case GARAGE_CRUSHER: + { + // for now version from III + switch (m_eGarageState) { + case GS_OPENED: + { + int i = CPools::GetVehiclePool()->GetSize() * (CTimer::GetFrameCounter() % CRUSHER_VEHICLE_TEST_SPAN) / CRUSHER_VEHICLE_TEST_SPAN; + int end = CPools::GetVehiclePool()->GetSize() * (CTimer::GetFrameCounter() % CRUSHER_VEHICLE_TEST_SPAN + 1) / CRUSHER_VEHICLE_TEST_SPAN; + for (; i < end; i++) { + CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i); + if (!pVehicle) + continue; + if (pVehicle->IsCar() && IsEntityEntirelyInside3D(pVehicle, 0.0f)) { + m_eGarageState = GS_CLOSING; + m_pTarget = pVehicle; + m_pTarget->RegisterReference((CEntity**)&m_pTarget); + } + } + break; + } + case GS_CLOSING: + if (m_pTarget) { + m_fDoorPos = Max(0.0f, m_fDoorPos - CRUSHER_CRANE_SPEED * CTimer::GetTimeStep()); + if (m_fDoorPos < TWOPI / 5) { + m_pTarget->bUsesCollision = false; + m_pTarget->bAffectedByGravity = false; + m_pTarget->SetMoveSpeed(0.0f, 0.0f, 0.0f); + } + else { + m_pTarget->SetMoveSpeed(m_pTarget->GetMoveSpeed() * Pow(0.8f, CTimer::GetTimeStep())); + } + if (m_fDoorPos == 0.0f) { + CGarages::CrushedCarId = CPools::GetVehiclePool()->GetIndex(m_pTarget); + float reward = Min(CRUSHER_MAX_REWARD, CRUSHER_MIN_REWARD + m_pTarget->pHandling->nMonetaryValue * m_pTarget->m_fHealth * CRUSHER_REWARD_COEFFICIENT); + CWorld::Players[CWorld::PlayerInFocus].m_nMoney += reward; + DestroyVehicleAndDriverAndPassengers(m_pTarget); + //++CStats::CarsCrushed; + m_pTarget = nil; + m_eGarageState = GS_AFTERDROPOFF; + m_nTimeToStartAction = CTimer::GetTimeInMilliseconds() + TIME_TO_CRUSH_CAR; + DMAudio.PlayOneShot(hGarages, SOUND_GARAGE_DOOR_CLOSED, 1.0f); + } + } + else + m_eGarageState = GS_OPENING; + UpdateCrusherAngle(); + break; + case GS_AFTERDROPOFF: + if (CTimer::GetTimeInMilliseconds() <= m_nTimeToStartAction) { + UpdateCrusherShake((myrand() & 0xFF - 128) * 0.0002f, (myrand() & 0xFF - 128) * 0.0002f); + } + else { + UpdateCrusherShake(0.0f, 0.0f); + m_eGarageState = GS_OPENING; + } + break; + case GS_OPENING: + m_fDoorPos = Min(HALFPI, m_fDoorPos + CTimer::GetTimeStep() * CRUSHER_CRANE_SPEED); + if (m_fDoorPos == HALFPI) { + m_eGarageState = GS_OPENED; + DMAudio.PlayOneShot(hGarages, SOUND_GARAGE_DOOR_OPENED, 1.0f); + } + UpdateCrusherAngle(); + break; + //case GS_FULLYCLOSED: + //case GS_CLOSEDCONTAINSCAR: + //case GS_OPENEDCONTAINSCAR: + default: + break; + } + if (!FindPlayerVehicle() && (CTimer::GetFrameCounter() & 0x1F) == 0x17 && IsEntityEntirelyInside3D(FindPlayerPed(), 0.0f)) + FindPlayerPed()->InflictDamage(nil, WEAPONTYPE_RAMMEDBYCAR, 300.0f, PEDPIECE_TORSO, 0); break; + } case GARAGE_MISSION_KEEPCAR: case GARAGE_MISSION_KEEPCAR_REMAINCLOSED: switch (m_eGarageState) { @@ -1494,13 +1566,14 @@ void CGarage::BuildRotatedDoorMatrix(CEntity * pDoor, float fPosition) void CGarage::UpdateCrusherAngle() { RefreshDoorPointers(false); - //m_pDoor2->GetMatrix().SetRotateXOnly(TWOPI - m_fDoorPos); TODO - //m_pDoor2->GetMatrix().UpdateRW(); - //m_pDoor2->UpdateRwFrame(); + m_pDoor1->GetMatrix().SetRotateXOnly(TWOPI - m_fDoorPos); + m_pDoor1->GetMatrix().UpdateRW(); + m_pDoor1->UpdateRwFrame(); } void CGarage::UpdateCrusherShake(float X, float Y) { + /* RefreshDoorPointers(false); m_pDoor1->GetMatrix().GetPosition().x += X; m_pDoor1->GetMatrix().GetPosition().y += Y; @@ -1514,6 +1587,7 @@ void CGarage::UpdateCrusherShake(float X, float Y) m_pDoor2->UpdateRwFrame(); m_pDoor2->GetMatrix().GetPosition().x -= X; m_pDoor2->GetMatrix().GetPosition().y -= Y; + */ } void CGarage::RefreshDoorPointers(bool bCreate) @@ -1749,15 +1823,17 @@ void CGarage::FindDoorsEntities() } } if (m_pDoor1 && m_pDoor2) { - CVector2D vecDoor1ToGarage(m_pDoor1->GetPosition().x - GetGarageCenterX(), m_pDoor1->GetPosition().y - GetGarageCenterY()); - CVector2D vecDoor2ToGarage(m_pDoor2->GetPosition().x - GetGarageCenterX(), m_pDoor2->GetPosition().y - GetGarageCenterY()); - if (DotProduct2D(vecDoor1ToGarage, vecDoor2ToGarage) > 0.0f) { - if (vecDoor1ToGarage.MagnitudeSqr() >= vecDoor2ToGarage.MagnitudeSqr()) { - m_pDoor1 = m_pDoor2; - m_bDoor1IsDummy = m_bDoor2IsDummy; + if (m_pDoor1->GetModelIndex() != MI_LCS_GARAGEDOOR39 && m_pDoor1->GetModelIndex() != MI_LCS_GARAGEDOOR40) { + CVector2D vecDoor1ToGarage(m_pDoor1->GetPosition().x - GetGarageCenterX(), m_pDoor1->GetPosition().y - GetGarageCenterY()); + CVector2D vecDoor2ToGarage(m_pDoor2->GetPosition().x - GetGarageCenterX(), m_pDoor2->GetPosition().y - GetGarageCenterY()); + if (DotProduct2D(vecDoor1ToGarage, vecDoor2ToGarage) > 0.0f) { + if (vecDoor1ToGarage.MagnitudeSqr() >= vecDoor2ToGarage.MagnitudeSqr()) { + m_pDoor1 = m_pDoor2; + m_bDoor1IsDummy = m_bDoor2IsDummy; + } + m_pDoor2 = nil; + m_bDoor2IsDummy = false; } - m_pDoor2 = nil; - m_bDoor2IsDummy = false; } } if (m_pDoor1) @@ -2331,27 +2407,44 @@ void CGarages::Load(uint8* buf, uint32 size) bool CGarages::IsModelIndexADoor(uint32 id) { - return id == MI_GARAGEDOOR2 || - id == MI_GARAGEDOOR3 || - id == MI_GARAGEDOOR4 || - id == MI_GARAGEDOOR5 || - id == MI_GARAGEDOOR6 || - id == MI_GARAGEDOOR7 || - id == MI_GARAGEDOOR9 || - id == MI_GARAGEDOOR10 || - id == MI_GARAGEDOOR11 || - id == MI_GARAGEDOOR12 || - id == MI_GARAGEDOOR13 || - id == MI_GARAGEDOOR14 || - id == MI_GARAGEDOOR15 || - id == MI_GARAGEDOOR16 || - id == MI_GARAGEDOOR18 || - id == MI_GARAGEDOOR19 || - id == MI_GARAGEDOOR20 || - id == MI_GARAGEDOOR21 || - id == MI_GARAGEDOOR22 || - id == MI_GARAGEDOOR23 || - id == MI_GARAGEDOOR24 || - id == MI_GARAGEDOOR25 || - id == MI_GARAGEDOOR26; + return id == MI_LCS_GARAGEDOOR01 || + id == MI_LCS_GARAGEDOOR02 || + id == MI_LCS_GARAGEDOOR03 || + id == MI_LCS_GARAGEDOOR04 || + id == MI_LCS_GARAGEDOOR05 || + id == MI_LCS_GARAGEDOOR06 || + id == MI_LCS_GARAGEDOOR07 || + id == MI_LCS_GARAGEDOOR08 || + id == MI_LCS_GARAGEDOOR09 || + id == MI_LCS_GARAGEDOOR10 || + id == MI_LCS_GARAGEDOOR11 || + id == MI_LCS_GARAGEDOOR12 || + id == MI_LCS_GARAGEDOOR13 || + id == MI_LCS_GARAGEDOOR14 || + id == MI_LCS_GARAGEDOOR15 || + id == MI_LCS_GARAGEDOOR16 || + id == MI_LCS_GARAGEDOOR17 || + id == MI_LCS_GARAGEDOOR18 || + id == MI_LCS_GARAGEDOOR19 || + id == MI_LCS_GARAGEDOOR20 || + id == MI_LCS_GARAGEDOOR21 || + id == MI_LCS_GARAGEDOOR22 || + id == MI_LCS_GARAGEDOOR23 || + id == MI_LCS_GARAGEDOOR24 || + id == MI_LCS_GARAGEDOOR25 || + id == MI_LCS_GARAGEDOOR26 || + id == MI_LCS_GARAGEDOOR27 || + id == MI_LCS_GARAGEDOOR28 || + id == MI_LCS_GARAGEDOOR29 || + id == MI_LCS_GARAGEDOOR30 || + id == MI_LCS_GARAGEDOOR31 || + id == MI_LCS_GARAGEDOOR32 || + id == MI_LCS_GARAGEDOOR33 || + id == MI_LCS_GARAGEDOOR34 || + id == MI_LCS_GARAGEDOOR35 || + id == MI_LCS_GARAGEDOOR36 || + id == MI_LCS_GARAGEDOOR37 || + id == MI_LCS_GARAGEDOOR38 || + id == MI_LCS_GARAGEDOOR39 || + id == MI_LCS_GARAGEDOOR40; } diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 5186a8d2..8f589ad3 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -1675,4 +1675,20 @@ CPed::CreateDeadPedPickupCoors(float *x, float *y, float *z) *y = GetPosition().y; *z = GetPosition().z + 0.4f; #undef NUMBER_OF_ATTEMPTS -} \ No newline at end of file +} + +float CPickups::GetValue(int index) +{ + int i = GetActualPickupIndex(index); + if (i == -1) + return 0.0f; + return aPickUps[i].m_fRevenue; +} + +void CPickups::SetValue(int index, float value) +{ + int i = GetActualPickupIndex(index); + if (i == -1) + return; + aPickUps[i].m_fRevenue = value; +} diff --git a/src/control/Pickups.h b/src/control/Pickups.h index af9503e0..08fb2bc8 100644 --- a/src/control/Pickups.h +++ b/src/control/Pickups.h @@ -117,6 +117,9 @@ public: static void RemoveAllPickupsOfACertainWeaponGroupWithNoAmmo(eWeaponType); static CPickup *FindPickUpForThisObject(CEntity*); + + static float GetValue(int); + static void SetValue(int, float); }; extern uint16 AmmoForWeapon[WEAPONTYPE_TOTALWEAPONS + 1]; diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 0f32f873..1efcbc9d 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -1647,166 +1647,166 @@ const tScriptCommandData commands[] = { REGISTER_COMMAND(COMMAND_GET_RANDOM_CHAR_IN_AREA_NO_CHECKS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), REGISTER_COMMAND(COMMAND_GET_RANDOM_CAR_IN_AREA_NO_CHECKS_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), REGISTER_COMMAND(COMMAND_STORE_CAR_COLLIDED_WITH_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1497, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1498, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1499, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1500, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1501, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1502, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1503, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1504, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1505, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1506, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1507, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1508, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1509, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1510, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1511, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1512, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1513, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1514, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1515, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1516, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1517, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1518, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1519, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1520, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1521, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1522, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1523, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1524, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1525, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1526, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1527, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1528, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1529, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1530, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1531, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1532, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1533, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1534, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1535, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1536, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1537, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1538, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1539, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1540, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1541, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1542, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1543, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1544, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1545, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1546, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1547, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1548, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1549, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1550, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1551, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1552, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1553, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1554, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1555, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1556, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1557, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1558, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1559, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1560, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_1561, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1562, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1563, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1564, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1565, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DISABLE_FERRY_PATH, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ENABLE_FERRY_PATH, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CLOSEST_DOCKED_FERRY, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_OPEN_FERRY_DOOR, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLOSE_FERRY_DOOR, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_FERRY_DOOR_OPEN, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_FERRY_DOOR_CLOSED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SKIP_FERRY_TO_NEXT_DOCK, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_DROPS_WEAPONS_ON_DEATH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_CROUCHING, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GET_FERRY_BOARDING_SPACE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_FERRY_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_FERRIES_ENABLED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_OVERRIDE_CAR_REMOTE_CONTROL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CANCEL_REMOTE_MODE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_CAR_SOLD, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_WITH_CAR_SALES, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_BRIDGE_STATE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_TURN_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_MASS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_CUTSCENE_LOADED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_UNIQUE_JUMPS_FOUND, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_HIDDEN_PACKAGES_COLLECTED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_BIKE_SOLD, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_WITH_BIKE_SALES, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_PACKAGE_SMUGGLED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_SMUGGLER_WASTED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_FASTEST_SMUGGLING_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_DIVE_FROM_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_WRECK_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_IN_COACH, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_COLLECTING_TRASH, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_HITMAN_KILLED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_GUARDIAN_ANGEL_MISSION_PASSED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_HIGHEST_GUARDIAN_ANGEL_JUSTICE_DISHED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_BEST_BANDIT_LAP_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_BEST_BANDIT_POSITION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_MOST_TIME_LEFT_TRAIN_RACE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_HIGHEST_TRAIN_CASH_EARNED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_FASTEST_HELI_RACE_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_BEST_HELI_RACE_POSITION, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_OUTFIT_CHANGE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_STREET_RACE_FASTEST_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_STREET_RACE_FASTEST_LAP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_STREET_RACE_BEST_POSITION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_OBJECT_LAST_WEAPON_DAMAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_TURN_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_MOVE_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_PROOFS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAMERA_PED_ZOOM_INDICATOR, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAMERA_PED_ZOOM_INDICATOR, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAR_ORIENTATION, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_ORIENTATION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_DEBUG_MENU_ON, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_OPEN_VAN_BACK_DOORS, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CHAR_THREAT_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_FREEZE_PED_ZOOM_SWITCH, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_RENDERED_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_RANDOM_CAR_IN_AREA_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_MADE_SAFE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_IF_FREE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_E3_BUILD, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_DECLARE_FORT_STAUNTON_DESTROYED_FLAG, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_BIG_MESSAGES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_AREA_OF_OBJECTS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_NON_STANDARD_PED_ANIM, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_UNLOAD_NON_STANDARD_PED_ANIM, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), REGISTER_COMMAND(COMMAND_1566, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1567, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1568, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1569, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_1570, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1571, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1572, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1573, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1574, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1575, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1576, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1577, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1578, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1579, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1580, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1581, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1582, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1583, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1584, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1585, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1586, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1587, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1588, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1589, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1590, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1591, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1592, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1593, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1594, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1595, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1596, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1597, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1598, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1599, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1600, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1601, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1602, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1603, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1604, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1605, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1606, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1607, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1608, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1609, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1610, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1611, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1612, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1613, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1614, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1615, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1616, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1617, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1618, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1619, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1620, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1621, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1622, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1623, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1624, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1625, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1626, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1627, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1628, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1629, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1630, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1631, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1632, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1633, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1634, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1635, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1636, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1637, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1638, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1639, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1640, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1641, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1642, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1643, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1644, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1645, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1646, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1647, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1648, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1649, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1650, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1651, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1652, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1653, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1654, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1655, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_1656, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_BUILD_WORLD_GEOMETRY, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STORE_BUILDING_SWAP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_MULTIPLAYER_ACTIVE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GET_MULTIPLAYER_MODE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_MULTIPLAYER_SCRIPT_DONE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_MULTIPLAYER_SERVER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_MULTIPLAYER_TEAM_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GET_MULTIPLAYER_TEAM_ID, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_DOES_SHORTCUT_TAXI_EXIST, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ONSCREEN_TIMER_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ONSCREEN_TIMER_BACKGROUND_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_CAR_BOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_POINT_3D_MARKER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_VECTOR_FROM_MULTIPLAYER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_HELP_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_STRING, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_HELP_FOREVER_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_STRING, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_FERRY_COLLISION, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_MAX_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_SHOOT_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_ATTACK_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_HELI_ROTOR_BLADES_FULLSPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CRUSHER_REWARD_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWAP_BUILDINGS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STREAM_BUILDING_SWAPS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_WORLD_STREAMING_COMPLETE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SWAP_TO_STREAMED_SECTOR, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_ATTACKS_PLAYER_WITH_COPS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_FACE_PLANT_DISTANCE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_MAX_SECONDS_ON_CARNAGE_LEFT, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_MAX_KILLS_ON_RC_TRIAD, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_HIGHEST_LEVEL_SLASH_TV, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_WITH_SLASH_TV, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_TOTAL_KILLS_ON_SLASH_TV, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_NOODLES_DELIEVERED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_SCRAPYARD_CHALLENGE_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_9MM_MAYHEM_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_SCOOTER_SHOOTER_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_MONEY_MADE_FROM_TOURIST, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_TOURISTS_TAKEN_TO_SPOTS, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_EXPORTED_CARS, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TOTAL_EXPORT_CARS, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_DIRT_BIKE_FASTEST_LAP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_DIRT_BIKE_FASTEST_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_DIRT_BIKE_AIR_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_ARROW_3D_MARKER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_NOW_OVERRIDE_FADE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_PICKUP_VALUE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PICKUP_VALUE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_DEVELOPER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_DEVELOPER_FLAG, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_WICHITA_WIPEOUT_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ATTACH_OBJECT_TO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DETACH_OBJECT_FROM_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PAD_STICKS_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_SUBTITLE_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_SUBTITLE_NOW_OVERRIDE_FADE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_SUBTITLE_NOW_NO_BRIEF, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER_NOW_NO_BRIEF, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_ANGLE_BETWEEN_POINTS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_OVERRIDE_CHAR_MOVE_ANIM, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_1627, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ENABLE_EMERGENCY_VEHICLES, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_UNLOCKED_COSTUME, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_MULTIPLAYER_SPLASH_SCREEN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_2_NUMBERS_NOW_NO_BRIEF, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_OBJECT_ORIENTATION, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_ORIENTATION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHANGE_ONSCREEN_COUNTER_PREFIX, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STORE_PLAYER_OUTFIT, INPUT_ARGUMENTS(ARGTYPE_STRING, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_STRING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_STRING, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_CURRENT_WEAPON_AMMO_IN_CLIP, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_WAIT_STATE_REPEAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_BEST_TIME_GOGO_FAGGIO, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOCK_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_FINAL_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ALLOWED_COLLISION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_GUARDIAN_ANGEL_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_2_STRINGS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_PLAYER_STORED_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_INT, ), false, -1, ""), + REGISTER_COMMAND(COMMAND_DISABLE_PAUSE_MENU, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHANNEL_PLAYING, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CLOCK_EVENT_WARNING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_EXTRA_COLOUR_LIGHT_DIRECTION, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_CAN_BE_TARGETTED_BY_LEADER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_HELP_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_HELP_FOREVER_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_HELP_ALWAYS_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_MISSION_CAR_CAN_BE_STORED_IN_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), }; #undef REGISTER_COMMAND #undef INPUT_ARGUMENTS @@ -2930,7 +2930,7 @@ int8 CRunningScript::ProcessOneCommand() case ARGTYPE_STRING: sprintf(tmp, " '%s'", (const char*)&CTheScripts::ScriptSpace[m_nIp]); m_nIp += KEY_LENGTH_IN_SCRIPT; break; case ARGTYPE_LABEL: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%s(%d))" : " %s(%d)", value >= 0 ? "G" : "L", abs(value)); break; case ARGTYPE_BOOL: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%s)" : " %s", value ? "TRUE" : "FALSE"); break; - case ARGTYPE_ANDOR: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, " %d %ss", (value + 1) % 10, value / 10 == 0 ? "AND" : "OR"); break; + case ARGTYPE_ANDOR: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, " %d %ss", (value) % 10, value / 10 == 0 ? "AND" : "OR"); break; default: script_assert(0); } strcat(commandInfo, tmp); @@ -4621,10 +4621,8 @@ int8 CRunningScript::ProcessCommands200To299(int32 command) m_bCondResult = false; // pointless }else if (m_nAndOrState >= ANDS_1 && m_nAndOrState <= ANDS_8){ m_bCondResult = true; - m_nAndOrState++; }else if (m_nAndOrState >= ORS_1 && m_nAndOrState <= ORS_8){ m_bCondResult = false; - m_nAndOrState++; }else{ script_assert(0 && "COMMAND_ANDOR: invalid ANDOR state"); } diff --git a/src/control/Script10.cpp b/src/control/Script10.cpp index d558727e..388bfe8e 100644 --- a/src/control/Script10.cpp +++ b/src/control/Script10.cpp @@ -3,209 +3,411 @@ #include "Script.h" #include "ScriptCommands.h" +#include "CarCtrl.h" +#include "DMAudio.h" +#include "Frontend.h" +#include "GameLogic.h" +#include "General.h" +#include "Hud.h" +#include "Messages.h" +#include "Object.h" +#include "Pad.h" +#include "Pickups.h" #include "PlayerPed.h" +#include "Pools.h" +#include "Vehicle.h" +#include "SpecialFX.h" +#include "Stats.h" +#include "User.h" +#include "Weather.h" #include "World.h" +bool gDeveloperFlag; + int8 CRunningScript::ProcessCommands1600To1699(int32 command) { switch (command) { - case COMMAND_1600: - script_assert(false); - return 0; - case COMMAND_1601: - script_assert(false); - return 0; - case COMMAND_1602: - script_assert(false); - return 0; - case COMMAND_1603: - script_assert(false); - return 0; - case COMMAND_1604: - script_assert(false); - return 0; - case COMMAND_1605: - script_assert(false); - return 0; - case COMMAND_1606: - script_assert(false); - return 0; - case COMMAND_1607: + case COMMAND_ADD_NOODLES_DELIEVERED: CollectParameters(&m_nIp, 1); - // TODO (SET_TOTAL_CARS_FOR_EXPORT) + // CStats::NoodlesDelievered += GET_INTEGER_PARAM(0); return 0; - case COMMAND_1608: - script_assert(false); + case COMMAND_REGISTER_SCRAPYARD_CHALLENGE_SCORE: + //CStats::TopScrapyardChallengeScore = Max(CStats::TopScrapyardChallengeScore, GET_INTEGER_PARAM(0)); return 0; - case COMMAND_1609: - script_assert(false); + case COMMAND_REGISTER_9MM_MAYHEM_SCORE: + //CStats::Top9mmMayhemScore = Max(CStats::Top9mmMayhemScore, GET_INTEGER_PARAM(0)); return 0; - case COMMAND_1610: - script_assert(false); + case COMMAND_REGISTER_SCOOTER_SHOOTER_SCORE: + //CStats::TopScooterShooterScore = Max(CStats::TopScooterShooterScore, GET_INTEGER_PARAM(0)); return 0; - case COMMAND_1611: - script_assert(false); + case COMMAND_ADD_MONEY_MADE_FROM_TOURIST: + CollectParameters(&m_nIp, 1); + // CStats::MoneyMadeFromTourist += GET_INTEGER_PARAM(0); return 0; - case COMMAND_1612: - script_assert(false); + case COMMAND_ADD_TOURISTS_TAKEN_TO_SPOTS: + CollectParameters(&m_nIp, 1); + // CStats::TouristsTakenToSpots += GET_INTEGER_PARAM(0); return 0; - case COMMAND_1613: - script_assert(false); + case COMMAND_ADD_EXPORTED_CARS: + CollectParameters(&m_nIp, 1); + // CStats::NumberOfExportedCars += GET_INTEGER_PARAM(0); return 0; - case COMMAND_1614: - script_assert(false); + case COMMAND_SET_TOTAL_EXPORT_CARS: + CollectParameters(&m_nIp, 1); + // CStats::TotalNumberOfCarExport = GET_INTEGER_PARAM(0); return 0; - case COMMAND_1615: - // TODO (GET_DEVELOPER_FLAG?) - UpdateCompareFlag(false); + case COMMAND_REGISTER_DIRT_BIKE_FASTEST_LAP: + CollectParameters(&m_nIp, 2); + // CStats::RegisterDirtBikeFastestLap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); return 0; - case COMMAND_1616: - // TODO (SET_DEVELOPER_FLAG) + case COMMAND_REGISTER_DIRT_BIKE_FASTEST_TIME: + CollectParameters(&m_nIp, 2); + // CStats::RegisterDirtBikeFastestTime(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); return 0; - case COMMAND_1617: - script_assert(false); + case COMMAND_REGISTER_DIRT_BIKE_AIR_TIME: + //CStats::DirtBikeMostAir = Max(CStats::DirtBikeMostAir, GET_INTEGER_PARAM(0)); return 0; - case COMMAND_1618: - script_assert(false); + case COMMAND_ADD_ARROW_3D_MARKER: + { + uint32 ip = m_nIp; + uint32 id = (uint32)(uintptr)GetPointerToScriptVariable(&m_nIp, 0); + CollectParameters(&m_nIp, 10); + CVector pos = GET_VECTOR_PARAM(0); + CVector dir = GET_VECTOR_PARAM(3); + pos.z += GET_FLOAT_PARAM(9) + 7.0f; + //C3dMarkers::PlaceMarker(id, MARKERTYPE_ARROW, pos, GET_INTEGER_PARAM(6), GET_INTEGER_PARAM(7), GET_INTEGER_PARAM(8), 200, 1, 3.2f, 1, dir, 1.0f, 0, 0); - TODO return 0; - case COMMAND_1619: - script_assert(false); - return 0; - case COMMAND_1620: - script_assert(false); - return 0; - case COMMAND_1621: + } + case COMMAND_PRINT_NOW_OVERRIDE_FADE: { wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp); CollectParameters(&m_nIp, 2); - // TODO (SET_SUBTITLE_TEXT) + CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // true, true return 0; } - case COMMAND_1622: - script_assert(false); - return 0; - case COMMAND_1623: - script_assert(false); - return 0; - case COMMAND_1624: - script_assert(false); - return 0; - case COMMAND_1625: - script_assert(false); - return 0; - case COMMAND_1626: - script_assert(false); - return 0; - case COMMAND_1627: - script_assert(false); - return 0; - case COMMAND_1628: - script_assert(false); - return 0; - case COMMAND_1629: - script_assert(false); - return 0; - case COMMAND_1630: - script_assert(false); - return 0; - case COMMAND_1631: - script_assert(false); - return 0; - case COMMAND_1632: - script_assert(false); - return 0; - case COMMAND_1633: - script_assert(false); - return 0; - case COMMAND_1634: - script_assert(false); - return 0; - case COMMAND_1635: - { - char tmp[12]; // TODO - CTheScripts::ReadTextLabelFromScript(&m_nIp, tmp); - m_nIp += KEY_LENGTH_IN_SCRIPT; - // TODO (CHANGE_STORED_PLAYER_OUTFIT?) - return 0; - } - case COMMAND_1636: - script_assert(false); - return 0; - case COMMAND_1637: - script_assert(false); - return 0; - case COMMAND_1638: - script_assert(false); - return 0; - case COMMAND_1639: - script_assert(false); - return 0; - case COMMAND_1640: - CollectParameters(&m_nIp, 2); - // TODO (LOCK_GARAGE?) - return 0; - case COMMAND_1641: - // TODO - UpdateCompareFlag(true); - return 0; - case COMMAND_1642: - script_assert(false); - return 0; - case COMMAND_1643: - script_assert(false); - return 0; - case COMMAND_1644: - script_assert(false); - return 0; - case COMMAND_1645: + case COMMAND_GET_PICKUP_VALUE: { CollectParameters(&m_nIp, 1); - // TODO (GET_STORED_WEAPON?) - CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed; - script_assert(pPed); - ScriptParams[0] = pPed->m_storedWeapon; + SET_INTEGER_PARAM(0, CPickups::GetValue(GET_INTEGER_PARAM(0))); + return 0; + } + case COMMAND_SET_PICKUP_VALUE: + { + CollectParameters(&m_nIp, 2); + CPickups::SetValue(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); + return 0; + } + case COMMAND_IS_DEVELOPER: + UpdateCompareFlag(gDeveloperFlag); + return 0; + case COMMAND_SET_DEVELOPER_FLAG: + CollectParameters(&m_nIp, 1); + gDeveloperFlag = GET_INTEGER_PARAM(0); + return 0; + case COMMAND_REGISTER_WICHITA_WIPEOUT_SCORE: + CollectParameters(&m_nIp, 1); + //CStats::TopWichitaWipeoutScore = Max(CStats::TopWichitaWipeoutScore, GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_ATTACH_OBJECT_TO_CAR: + { + CollectParameters(&m_nIp, 5); + CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pObject); + CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1)); + script_assert(pVehicle); + CVector offset = GET_VECTOR_PARAM(2); + // pObject->AttachObjectToEntity(pVehicle, offset); + return 0; + } + case COMMAND_DETACH_OBJECT_FROM_CAR: + { + CollectParameters(&m_nIp, 1); + CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pObject); + // if (pObject && pObject->m_pAttachedTo) + // pObject->DettachObjectFromEntity(); + return 0; + } + case COMMAND_SET_PAD_STICKS_MULTIPLIER: + { + CollectParameters(&m_nIp, 2); + CPad::GetPad(0)->unk_B4 = GET_FLOAT_PARAM(0); + CPad::GetPad(0)->unk_B8 = GET_FLOAT_PARAM(1); + return 0; + } + case COMMAND_PRINT_SUBTITLE_NOW: + { + wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CollectParameters(&m_nIp, 2); + if (FrontEndMenuManager.m_PrefsShowSubtitles) + CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // false, true + else + CMessages::AddToPreviousBriefArray(key, -1, -1, -1, -1, -1, -1, nil); + return 0; + } + case COMMAND_PRINT_SUBTITLE_NOW_OVERRIDE_FADE: + { + wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CollectParameters(&m_nIp, 2); + if (FrontEndMenuManager.m_PrefsShowSubtitles) + CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // true, true + else + CMessages::AddToPreviousBriefArray(key, -1, -1, -1, -1, -1, -1, nil); + return 0; + } + case COMMAND_PRINT_SUBTITLE_NOW_NO_BRIEF: + { + wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CollectParameters(&m_nIp, 2); + if (FrontEndMenuManager.m_PrefsShowSubtitles) + CMessages::AddMessageJumpQ(key, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); // false, false + else + CMessages::AddToPreviousBriefArray(key, -1, -1, -1, -1, -1, -1, nil); + return 0; + } + case COMMAND_PRINT_WITH_NUMBER_NOW_NO_BRIEF: + { + wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CollectParameters(&m_nIp, 3); + CMessages::AddMessageJumpQWithNumber(key, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1); // 0 + return 0; + } + case COMMAND_GET_ANGLE_BETWEEN_POINTS: + { + CollectParameters(&m_nIp, 4); + SET_FLOAT_PARAM(0, CGeneral::GetAngleBetweenPoints(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1), GET_FLOAT_PARAM(2), GET_FLOAT_PARAM(3))); StoreParameters(&m_nIp, 1); return 0; } - case COMMAND_1646: + case COMMAND_OVERRIDE_CHAR_MOVE_ANIM: + { CollectParameters(&m_nIp, 1); - // TODO (DISABLE_PAUSE_MENU?) + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pPed); + pPed->bOverrideMoveAnim = true; return 0; - case COMMAND_1647: + } + case COMMAND_1627: + { CollectParameters(&m_nIp, 1); - // TODO (IS_CHANNEL_PLAYING?) + // something related to debug menu, not implemented + return 0; + } + case COMMAND_ENABLE_EMERGENCY_VEHICLES: + { + CollectParameters(&m_nIp, 1); + gbEmergencyVehiclesEnabled = GET_INTEGER_PARAM(0) != 0; + return 0; + } + case COMMAND_ADD_UNLOCKED_COSTUME: + CollectParameters(&m_nIp, 1); + // CStats::AddUnlockedCostume(GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_CLEAR_MULTIPLAYER_SPLASH_SCREEN: + // ClearMultiplayerSplashScreen(); + return 0; + case COMMAND_PRINT_WITH_2_NUMBERS_NOW_NO_BRIEF: + { + wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CollectParameters(&m_nIp, 3); + CMessages::AddMessageJumpQWithNumber(key, GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3), GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), -1, -1, -1, -1); // 0 + return 0; + } + case COMMAND_GET_OBJECT_ORIENTATION: + { + CollectParameters(&m_nIp, 1); + CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pObject); + SET_FLOAT_PARAM(1, LimitAngleOnCircle(RADTODEG(Asin(pObject->GetForward().z)))); + SET_FLOAT_PARAM(2, LimitAngleOnCircle(RADTODEG(CGeneral::GetATanOfXY(pObject->GetForward().x, pObject->GetForward().y)))); + SET_FLOAT_PARAM(0, LimitAngleOnCircle(RADTODEG(CGeneral::GetATanOfXY(pObject->GetUp().z, pObject->GetRight().z)))); + StoreParameters(&m_nIp, 3); + return 0; + } + case COMMAND_SET_OBJECT_ORIENTATION: + { + CollectParameters(&m_nIp, 4); + CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pObject); + pObject->SetOrientation(DEGTORAD(GET_FLOAT_PARAM(2)), DEGTORAD(GET_FLOAT_PARAM(1)), DEGTORAD(GET_FLOAT_PARAM(3))); + return 0; + } + case COMMAND_CHANGE_ONSCREEN_COUNTER_PREFIX: + { + uint16 offset = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace; + CollectParameters(&m_nIp, 1); + //CUserDisplay::OnscnTimer.ChangeCounterPrefix(offset, GET_INTEGER_PARAMS(0)); + return 0; + } + case COMMAND_STORE_PLAYER_OUTFIT: + { + char tmp[12]; // TODO + CTheScripts::ReadTextLabelFromScript(&m_nIp, tmp); + for (int i = 0; i < KEY_LENGTH_IN_SCRIPT; i++) + CGameLogic::mStoredPlayerOutfit[i] = tmp[i]; + printf("STORED PLAYOUR OUTFIT : %s\n", CGameLogic::mStoredPlayerOutfit); + m_nIp += KEY_LENGTH_IN_SCRIPT; + return 0; + } + case COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_STRING: + { + char onscreen_str1[12]; + uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, 0) - CTheScripts::ScriptSpace; + CollectParameters(&m_nIp, 2); + wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); + strncpy(onscreen_str1, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT); + m_nIp += KEY_LENGTH_IN_SCRIPT; + CUserDisplay::OnscnTimer.AddCounter(var, GET_INTEGER_PARAM(1), onscreen_str1, 0); // TODO - second set of data + return 0; + } + case COMMAND_SET_PLAYER_CURRENT_WEAPON_AMMO_IN_CLIP: + { + CollectParameters(&m_nIp, 1); + CWeapon* pWeapon = FindPlayerPed()->GetWeapon(); + if (pWeapon && GET_INTEGER_PARAM(0)) + pWeapon->m_nAmmoInClip = GET_INTEGER_PARAM(0); + return 0; + } + case COMMAND_SET_CHAR_WAIT_STATE_REPEAT: + { + CollectParameters(&m_nIp, 3); + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + if (pPed) + pPed->SetWaitState((eWaitState)GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1) >= 0 ? (void*)GET_INTEGER_PARAM(0) : nil); // + true + return 0; + } + case COMMAND_REGISTER_BEST_TIME_GOGO_FAGGIO: + CollectParameters(&m_nIp, 1); + // CStats::RegisterBestTimeGoGoFaggio(GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_LOCK_GARAGE: + CollectParameters(&m_nIp, 2); + // CGarages::LockGarage(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); + return 0; + case COMMAND_IS_FINAL_GAME: +#ifdef FINAL + UpdateCompareFlag(false); +#else + UpdateCompareFlag(true); +#endif + return 0; + case COMMAND_SET_ALLOWED_COLLISION: + { + CollectParameters(&m_nIp, 2); + CTheScripts::AllowedCollision[0] = GET_INTEGER_PARAM(0); + CTheScripts::AllowedCollision[1] = GET_INTEGER_PARAM(1); + return 0; + } + case COMMAND_REGISTER_GUARDIAN_ANGEL_LEVEL: + CollectParameters(&m_nIp, 3); + //CStats::GuardianAngelHighestLevel_Ind = Max(CStats::GuardianAngelHighestLevel_Ind, GET_INTEGER_PARAM(0)); + //CStats::GuardianAngelHighestLevel_Com = Max(CStats::GuardianAngelHighestLevel_Com, GET_INTEGER_PARAM(1)); + //CStats::GuardianAngelHighestLevel_Sub = Max(CStats::GuardianAngelHighestLevel_Sub, GET_INTEGER_PARAM(2)); + return 0; + case COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_2_STRINGS: + { + char onscreen_str1[12]; + char onscreen_str2[12]; + uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, 0) - CTheScripts::ScriptSpace; + CollectParameters(&m_nIp, 3); + wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); + strncpy(onscreen_str1, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT); + m_nIp += KEY_LENGTH_IN_SCRIPT; + wchar* text2 = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); + strncpy(onscreen_str2, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT); + m_nIp += KEY_LENGTH_IN_SCRIPT; + CUserDisplay::OnscnTimer.AddCounter(var, GET_INTEGER_PARAM(1), onscreen_str1, 0); // TODO - second set of data + } + case COMMAND_GET_PLAYER_STORED_WEAPON: + { + CollectParameters(&m_nIp, 1); + CPed* pPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed; + script_assert(pPed); + SET_INTEGER_PARAM(0, pPed->m_storedWeapon); + StoreParameters(&m_nIp, 1); + return 0; + } + case COMMAND_DISABLE_PAUSE_MENU: + CollectParameters(&m_nIp, 1); + // FrontEndMenuManager.mDisablePauseMenu = GET_INTEGER_PARAM(0) != 0; // TODO: static + member + return 0; + case COMMAND_IS_CHANNEL_PLAYING: + CollectParameters(&m_nIp, 1); + //UpdateCompareFlag(DMAudio.IsChannelPlaying(GET_INTEGER_PARAM(0)); UpdateCompareFlag(false); return 0; - case COMMAND_1648: + case COMMAND_SET_CLOCK_EVENT_WARNING: CollectParameters(&m_nIp, 3); - // TODO (SET_CLOCK_EVENT_WARNING); + /* + if (CHud::m_ClockEventWarningMinutes || GET_INTEGER_PARAMS(2)){ + CHud::m_ClockEventWarningMinutes = GET_INTEGER_PARAMS(2); + CHud::m_ClockEventMinutes = GET_INTEGER_PARAMS(1); + CHud::m_ClockEventHours = GET_INTEGER_PARAMS(0); + CHud::m_ClockEventFlashTimer = 0; + } + */ return 0; - case COMMAND_1649: + case COMMAND_SET_EXTRA_COLOUR_LIGHT_DIRECTION: CollectParameters(&m_nIp, 3); - // TODO (SET_EXTRA_COLOUR_DIRECTION) + // CWeather::ExtraColourLightDir = GET_VECTOR_PARAM(0); + // CWeather::ExtraColourLightDir.Normalise(); return 0; - case COMMAND_1650: - script_assert(false); - return 0; - case COMMAND_1651: - script_assert(false); - return 0; - case COMMAND_1652: - script_assert(false); - return 0; - case COMMAND_1653: - script_assert(false); - return 0; - case COMMAND_1654: - script_assert(false); - return 0; - case COMMAND_1655: - script_assert(false); - return 0; - case COMMAND_1656: + case COMMAND_SET_CHAR_CAN_BE_TARGETTED_BY_LEADER: + { CollectParameters(&m_nIp, 2); - // TODO (?) + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pPed); + pPed->bCanBeTargettedByLeader = GET_INTEGER_PARAM(1) != 0; return 0; + } + case COMMAND_PRINT_HELP_NO_BRIEF: + { + wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CHud::SetHelpMessage(text, false); // + false, false + return 0; + } + case COMMAND_PRINT_HELP_FOREVER_NO_BRIEF: + { + wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CHud::SetHelpMessage(text, false, true); // + false + return 0; + } + case COMMAND_PRINT_HELP_ALWAYS_NO_BRIEF: + { + // CHud::mAlwaysAllowHelpText = true; + wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CHud::SetHelpMessage(text, false); // + false, false + return 0; + } + case COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF: + { + // CHud::mAlwaysAllowHelpText = true; + wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CHud::SetHelpMessage(text, false, true); // + false + return 0; + } + case COMMAND_SET_MISSION_CAR_CAN_BE_STORED_IN_GARAGE: + { + CollectParameters(&m_nIp, 2); + CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pVehicle); + pVehicle->bAllowGarageToStore = (GET_INTEGER_PARAM(1) != 0); + return 0; + } + case COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS: + { + CollectParameters(&m_nIp, 2); + CPlayerPed* pPlayerPed = CWorld::Players[GET_INTEGER_PARAM(0)].m_pPed; + script_assert(pPlayerPed); + for (int i = 0; i < CPools::GetVehiclePool()->GetSize(); i++) { + CPed* pPed = CPools::GetPedPool()->GetSlot(i); + if (pPed && IsPedPointerValid(pPed)) { + if (pPed->m_leader == pPlayerPed || (pPed->m_objective == OBJECTIVE_FOLLOW_CHAR_IN_FORMATION && pPed->m_pedInObjective == pPlayerPed)) + pPed->bIsFrozen = (GET_INTEGER_PARAM(1) != 0); + } + } + return 0; + } default: script_assert(0); } diff --git a/src/control/Script2.cpp b/src/control/Script2.cpp index 9ef24751..b31484ab 100644 --- a/src/control/Script2.cpp +++ b/src/control/Script2.cpp @@ -175,27 +175,27 @@ int8 CRunningScript::ProcessCommands300To399(int32 command) */ case COMMAND_DISPLAY_ONSCREEN_TIMER: { - uint16 offset = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - (int32*)CTheScripts::ScriptSpace; + uint16 offset = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace; CollectParameters(&m_nIp, 1); CUserDisplay::OnscnTimer.AddClock(offset, nil, GET_INTEGER_PARAM(0) != 0); return 0; } case COMMAND_CLEAR_ONSCREEN_TIMER: { - uint16 offset = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - (int32*)CTheScripts::ScriptSpace; + uint16 offset = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace; CUserDisplay::OnscnTimer.ClearClock(offset); return 0; } case COMMAND_DISPLAY_ONSCREEN_COUNTER: { - uint16 counter = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - (int32*)CTheScripts::ScriptSpace; + uint16 counter = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace; CollectParameters(&m_nIp, 1); CUserDisplay::OnscnTimer.AddCounter(counter, GET_INTEGER_PARAM(0), nil, 0); return 0; } case COMMAND_CLEAR_ONSCREEN_COUNTER: { - uint16 counter = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - (int32*)CTheScripts::ScriptSpace; + uint16 counter = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace; CUserDisplay::OnscnTimer.ClearCounter(counter); return 0; } @@ -624,7 +624,7 @@ int8 CRunningScript::ProcessCommands300To399(int32 command) //case COMMAND_MOVE_CAMERA_ALONG_SPLINE: //case COMMAND_GET_CAMERA_POSITION_ALONG_SPLINE: case COMMAND_DECLARE_MISSION_FLAG: - CTheScripts::OnAMissionFlag = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - (int32*)CTheScripts::ScriptSpace; + CTheScripts::OnAMissionFlag = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace; return 0; case COMMAND_DECLARE_MISSION_FLAG_FOR_CONTACT: return 0; @@ -1452,7 +1452,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command) { wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp); CollectParameters(&m_nIp, 3); - CMessages::AddMessageJumpQWithNumber(text, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1); + CMessages::AddMessageJumpQWithNumber(text, GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(0), -1, -1, -1, -1, -1); // 1 return 0; } case COMMAND_PRINT_WITH_NUMBER_SOON: diff --git a/src/control/Script3.cpp b/src/control/Script3.cpp index 1bb4f12c..1e4d5b6f 100644 --- a/src/control/Script3.cpp +++ b/src/control/Script3.cpp @@ -733,7 +733,7 @@ int8 CRunningScript::ProcessCommands500To599(int32 command) CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); script_assert(pPed); pPed->m_animGroup = (AssocGroupId)GET_INTEGER_PARAM(1); - pPed->b1A1_20 = false; + pPed->bOverrideMoveAnim = false; return 0; } /* diff --git a/src/control/Script4.cpp b/src/control/Script4.cpp index ba845ad8..2fbe527c 100644 --- a/src/control/Script4.cpp +++ b/src/control/Script4.cpp @@ -1754,7 +1754,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command) */ case COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_STRING: { - uint16 var = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - (int32*)CTheScripts::ScriptSpace; + uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace; CollectParameters(&m_nIp, 1); wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); // ??? strncpy(onscreen_str, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT); @@ -1764,7 +1764,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command) } case COMMAND_DISPLAY_ONSCREEN_COUNTER_WITH_STRING: { - uint16 var = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - (int32*)CTheScripts::ScriptSpace; + uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace; CollectParameters(&m_nIp, 1); wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); // ??? strncpy(onscreen_str, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT); diff --git a/src/control/Script7.cpp b/src/control/Script7.cpp index cddda5e9..601a979d 100644 --- a/src/control/Script7.cpp +++ b/src/control/Script7.cpp @@ -565,7 +565,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command) { char onscreen_str[12]; //script_assert(CTheScripts::ScriptSpace[m_nIp++] == ARGUMENT_GLOBALVAR); - uint16 var = CTheScripts::Read2BytesFromScript(&m_nIp); + uint16 var = (uint8*)GetPointerToScriptVariable(&m_nIp, 0) - CTheScripts::ScriptSpace; CollectParameters(&m_nIp, 2); wchar* text = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); // ??? strncpy(onscreen_str, (char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT); diff --git a/src/control/Script8.cpp b/src/control/Script8.cpp index 6de73b82..35cf6fa8 100644 --- a/src/control/Script8.cpp +++ b/src/control/Script8.cpp @@ -26,6 +26,8 @@ #include "World.h" #include "Zones.h" +// LCS: file done except TODOs (also check commented out strings) + int8 CRunningScript::ProcessCommands1400To1499(int32 command) { switch (command) { @@ -37,7 +39,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command) { CollectParameters(&m_nIp, 1); CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); - if (pPed && pPed->GetPedState() != PED_DRIVING && !pPed->GetPedState() != PED_AIM_GUN) { + if (pPed && pPed->GetPedState() != PED_DRIVING && pPed->GetPedState() != PED_AIM_GUN) { pPed->m_pVehicleAnim = nil; pPed->RestartNonPartialAnims(); RpAnimBlendClumpRemoveAllAssociations(pPed->GetClump()); @@ -606,6 +608,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command) } SET_INTEGER_PARAM(0, -1); StoreParameters(&m_nIp, 1); + return 0; } case COMMAND_REMOVE_SCRIPT_CORONA: CollectParameters(&m_nIp, 1); diff --git a/src/control/Script9.cpp b/src/control/Script9.cpp index 1bd4f99d..e03c60ba 100644 --- a/src/control/Script9.cpp +++ b/src/control/Script9.cpp @@ -3,333 +3,766 @@ #include "Script.h" #include "ScriptCommands.h" +#include "Bridge.h" +#include "CarCtrl.h" +#include "Camera.h" +#include "CutsceneMgr.h" +#include "Garages.h" +#include "GameLogic.h" +#include "Hud.h" +#include "Messages.h" +#include "Object.h" +#include "Pad.h" +#include "Ped.h" +#include "Pools.h" +#include "Remote.h" +#include "SpecialFX.h" +#include "Stats.h" +#include "Vehicle.h" +#include "World.h" + +// LCS: file done except TODOs (also check commented out strings) + int8 CRunningScript::ProcessCommands1500To1599(int32 command) { switch (command) { - case COMMAND_1497: - script_assert(false); - return 0; - case COMMAND_1498: - script_assert(false); - return 0; - case COMMAND_1499: - script_assert(false); - return 0; - case COMMAND_1500: - script_assert(false); - return 0; - case COMMAND_1501: - script_assert(false); - return 0; - case COMMAND_1502: - script_assert(false); - return 0; - case COMMAND_1503: - script_assert(false); - return 0; - case COMMAND_1504: - script_assert(false); - return 0; - case COMMAND_1505: - script_assert(false); - return 0; - case COMMAND_1506: - script_assert(false); - return 0; - case COMMAND_1507: - script_assert(false); - return 0; - case COMMAND_1508: - script_assert(false); - return 0; - case COMMAND_1509: - script_assert(false); - return 0; - case COMMAND_1510: - script_assert(false); - return 0; - case COMMAND_1511: - script_assert(false); - return 0; - case COMMAND_1512: - script_assert(false); - return 0; - case COMMAND_1513: - script_assert(false); - return 0; - case COMMAND_1514: - script_assert(false); - return 0; - case COMMAND_1515: - script_assert(false); - return 0; - case COMMAND_1516: - script_assert(false); - return 0; - case COMMAND_1517: - script_assert(false); - return 0; - case COMMAND_1518: - // TODO (?) - UpdateCompareFlag(true); - return 0; - case COMMAND_1519: - CollectParameters(&m_nIp, 1); - // TODO (SET_NUMBER_USJ_FOUND?) - return 0; - case COMMAND_1520: - CollectParameters(&m_nIp, 1); - // TODO (SET_TOTAL_HIDDEN_PACKAGES?) - return 0; - case COMMAND_1521: - script_assert(false); - return 0; - case COMMAND_1522: - script_assert(false); - return 0; - case COMMAND_1523: - script_assert(false); - return 0; - case COMMAND_1524: - script_assert(false); - return 0; - case COMMAND_1525: - script_assert(false); - return 0; - case COMMAND_1526: - script_assert(false); - return 0; - case COMMAND_1527: - script_assert(false); - return 0; - case COMMAND_1528: - script_assert(false); - return 0; - case COMMAND_1529: - script_assert(false); - return 0; - case COMMAND_1530: - script_assert(false); - return 0; - case COMMAND_1531: - script_assert(false); - return 0; - case COMMAND_1532: - script_assert(false); - return 0; - case COMMAND_1533: - script_assert(false); - return 0; - case COMMAND_1534: - script_assert(false); - return 0; - case COMMAND_1535: - script_assert(false); - return 0; - case COMMAND_1536: - script_assert(false); - return 0; - case COMMAND_1537: - script_assert(false); - return 0; - case COMMAND_1538: - script_assert(false); - return 0; - case COMMAND_1539: - //TODO (REGISTER_OUTFIT_CHANGE) - return 0; - case COMMAND_1540: - script_assert(false); - return 0; - case COMMAND_1541: - script_assert(false); - return 0; - case COMMAND_1542: - script_assert(false); - return 0; - case COMMAND_1543: - script_assert(false); - return 0; - case COMMAND_1544: - script_assert(false); - return 0; - case COMMAND_1545: - script_assert(false); - return 0; - case COMMAND_1546: - script_assert(false); - return 0; - case COMMAND_1547: - script_assert(false); - return 0; - case COMMAND_1548: - // TODO (GET_ONFOOT_CAMERA_MODE) - ScriptParams[0] = 0; - StoreParameters(&m_nIp, 1); - return 0; - case COMMAND_1549: - CollectParameters(&m_nIp, 1); - // TODO (SET_ONFOOT_CAMERA_MODE?) - return 0; - case COMMAND_1550: - script_assert(false); - return 0; - case COMMAND_1551: - script_assert(false); - return 0; - case COMMAND_1552: - script_assert(false); - return 0; - case COMMAND_1553: - script_assert(false); - return 0; - case COMMAND_1554: - script_assert(false); - return 0; - case COMMAND_1555: - CollectParameters(&m_nIp, 1); - // TODO (FREEZE_ONFOOT_CAMERA_MODE?) - return 0; - case COMMAND_1556: - script_assert(false); - return 0; - case COMMAND_1557: - script_assert(false); - return 0; - case COMMAND_1558: - UpdateCompareFlag(false); - // TODO - return 0; - case COMMAND_1559: - script_assert(false); - return 0; - case COMMAND_1560: - // TODO (IS_E3_BUILD?) - UpdateCompareFlag(false); - return 0; - case COMMAND_1561: - // TODO (check, SET_FS_DESTROYED_FLAG) - CTheScripts::FSDestroyedFlag = GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - (int32*)CTheScripts::ScriptSpace; - return 0; - case COMMAND_1562: - script_assert(false); - return 0; - case COMMAND_1563: - script_assert(false); - return 0; - case COMMAND_1564: - script_assert(false); - return 0; - case COMMAND_1565: - script_assert(false); - return 0; - case COMMAND_1566: - script_assert(false); - return 0; - case COMMAND_1567: - CollectParameters(&m_nIp, 1); - // TODO (BUILD_WORLD_GEOMETRY) - return 0; - case COMMAND_1568: - script_assert(false); - return 0; - case COMMAND_1569: - // TODO (IS_MULTIPLAYER_ACTIVE?) - UpdateCompareFlag(false); - return 0; - case COMMAND_1570: - script_assert(false); - return 0; - case COMMAND_1571: - script_assert(false); - return 0; - case COMMAND_1572: - script_assert(false); - return 0; - case COMMAND_1573: - script_assert(false); - return 0; - case COMMAND_1574: - script_assert(false); - return 0; - case COMMAND_1575: - script_assert(false); - return 0; - case COMMAND_1576: - script_assert(false); - return 0; - case COMMAND_1577: - script_assert(false); - return 0; - case COMMAND_1578: - script_assert(false); - return 0; - case COMMAND_1579: - script_assert(false); - return 0; - case COMMAND_1580: - script_assert(false); - return 0; - case COMMAND_1581: + case COMMAND_DISABLE_FERRY_PATH: { - // TODO (SET_HELP_MESSAGE?) - wchar* key = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CollectParameters(&m_nIp, 1); + // CFerry:DissableFerryPath(GET_INTEGER_PARAM(0)); TODO return 0; } - case COMMAND_1582: - script_assert(false); + case COMMAND_ENABLE_FERRY_PATH: + { + CollectParameters(&m_nIp, 1); + // CFerry::EnableFerryPath(GET_INTEGER_PARAM(0)); return 0; - case COMMAND_1583: - script_assert(false); - return 0; - case COMMAND_1584: - script_assert(false); - return 0; - case COMMAND_1585: - script_assert(false); - return 0; - case COMMAND_1586: - script_assert(false); - return 0; - case COMMAND_1587: - script_assert(false); - return 0; - case COMMAND_1588: - script_assert(false); - return 0; - case COMMAND_1589: + } + case COMMAND_GET_CLOSEST_DOCKED_FERRY: + { CollectParameters(&m_nIp, 2); - // TODO (SWAP_BUILDING?) + // CFerry* pFerry = CFerry::GetClosestFerry(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1)); + int id = -1; + // if (pFerry && pFerry->IsDocked() + // id = pFerry->GetId(); + SET_INTEGER_PARAM(0, id); + StoreParameters(&m_nIp, 1); return 0; - case COMMAND_1590: - script_assert(false); + } + case COMMAND_OPEN_FERRY_DOOR: + { + CollectParameters(&m_nIp, 1); + // CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); + // script_assert(pFerry); + // pFerry->OpenDoor(); return 0; - case COMMAND_1591: - script_assert(false); + } + case COMMAND_CLOSE_FERRY_DOOR: + { + CollectParameters(&m_nIp, 1); + // CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); + // script_assert(pFerry); + // pFerry->CloseDoor(); return 0; - case COMMAND_1592: - script_assert(false); + } + case COMMAND_IS_FERRY_DOOR_OPEN: + { + CollectParameters(&m_nIp, 1); + // CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); + // script_assert(pFerry); + // UpdateCompareFlag(pFerry->IsDoorOpen()); + UpdateCompareFlag(false); return 0; - case COMMAND_1593: - script_assert(false); + } + case COMMAND_IS_FERRY_DOOR_CLOSED: + { + CollectParameters(&m_nIp, 1); + // CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); + // script_assert(pFerry); + // UpdateCompareFlag(pFerry->IsDoorClosed()); + UpdateCompareFlag(true); return 0; - case COMMAND_1594: - script_assert(false); + } + case COMMAND_SKIP_FERRY_TO_NEXT_DOCK: + { + CollectParameters(&m_nIp, 1); + // CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); + // script_assert(pFerry); + // pFerry->SkipFerryToNextDock(); return 0; - case COMMAND_1595: - script_assert(false); + } + case COMMAND_SET_CHAR_DROPS_WEAPONS_ON_DEATH: + { + CollectParameters(&m_nIp, 2); + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pPed); + pPed->bDropsWeaponsOnDeath = (GET_INTEGER_PARAM(1) != 0); return 0; - case COMMAND_1596: - script_assert(false); + } + case COMMAND_IS_CHAR_CROUCHING: + { + CollectParameters(&m_nIp, 1); + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pPed); + UpdateCompareFlag(pPed->bIsDucking); return 0; - case COMMAND_1597: - script_assert(false); + } + case COMMAND_GET_FERRY_BOARDING_SPACE: + { + CollectParameters(&m_nIp, 4); + // CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); + // script_assert(pFerry); + // ? = pFerry->GetBoardingSpace((CFerry::eSpaceUse)GET_INTEGER_PARAMS(1), (CFerry::eSpaceStyle)GET_INTEGER_PARAMS(2), GET_INTEGER_PARAMS(3)); + SET_FLOAT_PARAM(0, 0.0f); + SET_FLOAT_PARAM(1, 0.0f); // TODO + StoreParameters(&m_nIp, 2); return 0; - case COMMAND_1598: - script_assert(false); + } + case COMMAND_GET_FERRY_HEADING: + { + CollectParameters(&m_nIp, 1); + // CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); + // script_assert(pFerry); + // float fHeading = CGeneral::GetATanOfXY(pFerry->GetForward().x, pFerry->GetForward().y); + // SET_FLOAT_PARAM(0, fHeading); + SET_FLOAT_PARAM(0, 0.0f); + StoreParameters(&m_nIp, 1); return 0; - case COMMAND_1599: - script_assert(false); + } + case COMMAND_SET_FERRIES_ENABLED: + { + CollectParameters(&m_nIp, 1); + // CFerry::SetFerriesEnabled(GET_INTEGER_PARAM(0)); + return 0; + } + case COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT: + { + CollectParameters(&m_nIp, 1); + // CFerry::CompleteDorrMovement(GET_INTEGER_PARAM(0)); + return 0; + } + case COMMAND_OVERRIDE_CAR_REMOTE_CONTROL: + { + CollectParameters(&m_nIp, 2); + CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pVehicle); + pVehicle->SetStatus(STATUS_PLAYER_REMOTE); + CVehicle::bDisableRemoteDetonation = true; + CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle = pVehicle; + pVehicle->RegisterReference((CEntity**)&CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle); + if (pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI || pVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_PLANE) { + TheCamera.TakeControl(pVehicle, CCam::MODE_CAM_ON_A_STRING, GET_INTEGER_PARAM(1) ? INTERPOLATION : JUMP_CUT, CAMCONTROL_SCRIPT); + TheCamera.SetZoomValueCamStringScript(0); + } + else { + TheCamera.TakeControl(pVehicle, CCam::MODE_1STPERSON, GET_INTEGER_PARAM(1) ? INTERPOLATION : JUMP_CUT, CAMCONTROL_SCRIPT); + script_assert(pVehicle->IsCar()); + //((CAutomobile*)pVehicle)->Damage.m_bSmashedDoorDoesntClose = true; + } + if (m_bIsMissionScript) + CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CAR); + if (FindPlayerVehicle()) + FindPlayerVehicle()->bCanBeDamaged = false; + return 0; + } + case COMMAND_CANCEL_REMOTE_MODE: + { + if (FindPlayerVehicle()) + FindPlayerVehicle()->bCanBeDamaged = true; + CRemote::TakeRemoteControlledCarFromPlayer(false); + CWorld::Players[CWorld::PlayerInFocus].field_D6 = false; + CWorld::Players[CWorld::PlayerInFocus].m_pRemoteVehicle = nil; + TheCamera.Restore(); + return 0; + } + case COMMAND_REGISTER_CAR_SOLD: + // CStats::CarsSold++; + return 0; + case COMMAND_ADD_MONEY_MADE_WITH_CAR_SALES: + CollectParameters(&m_nIp, 1); + // CStats::MoneyMadeWithCarSales += GET_INTEGER_PARAM(0); + return 0; + case COMMAND_SET_BRIDGE_STATE: + { + CollectParameters(&m_nIp, 1); +#ifdef GTA_BRIDGE + /* + * 0 = locked + * 1 = unlocked + * 2 = operational + */ + switch (GET_INTEGER_PARAM(0)) { + case 0: CBridge::ForceBridgeState(STATE_BRIDGE_LOCKED); break; + case 1: CBridge::ForceBridgeState(STATE_BRIDGE_ALWAYS_UNLOCKED); break; + case 2: + if (CBridge::State == STATE_LIFT_PART_IS_DOWN || CBridge::State == STATE_BRIDGE_ALWAYS_UNLOCKED) + CBridge::ForceBridgeState(STATE_LIFT_PART_ABOUT_TO_MOVE_UP); + else + CBridge::ForceBridgeState(STATE_LIFT_PART_MOVING_DOWN); + break; + default: script_assert(false); + } +#endif + return 0; + } + case COMMAND_SET_OBJECT_TURN_SPEED: + { + CollectParameters(&m_nIp, 4); + CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pObject); + CVector vSpeed = GET_VECTOR_PARAM(1) / GAME_SPEED_TO_METERS_PER_SECOND; + pObject->SetTurnSpeed(vSpeed.x, vSpeed.y, vSpeed.z); + return 0; + } + case COMMAND_SET_OBJECT_MASS: + { + CollectParameters(&m_nIp, 4); + CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pObject); + pObject->m_fMass = GET_FLOAT_PARAM(1); + pObject->m_fTurnMass = GET_FLOAT_PARAM(2); + pObject->m_fAirResistance = GET_FLOAT_PARAM(3); + if (pObject->m_fMass < 99998.0f) { + pObject->bInfiniteMass = false; + pObject->m_phy_flagA08 = false; + pObject->bAffectedByGravity = true; + } + else { + pObject->bInfiniteMass = true; + pObject->m_phy_flagA08 = true; + pObject->bAffectedByGravity = false; + } + return 0; + } + case COMMAND_HAS_CUTSCENE_LOADED: + UpdateCompareFlag(CCutsceneMgr::ms_cutsceneLoadStatus == CUTSCENE_LOADED); + return 0; + case COMMAND_SET_UNIQUE_JUMPS_FOUND: + CollectParameters(&m_nIp, 1); + CStats::NumberOfUniqueJumpsFound = GET_INTEGER_PARAM(0); + return 0; + case COMMAND_SET_HIDDEN_PACKAGES_COLLECTED: + CollectParameters(&m_nIp, 1); + CWorld::Players[CWorld::PlayerInFocus].m_nCollectedPackages = GET_INTEGER_PARAM(0); + return 0; + case COMMAND_REGISTER_BIKE_SOLD: + // CStats::BikesSold++; + return 0; + case COMMAND_ADD_MONEY_MADE_WITH_BIKE_SALES: + CollectParameters(&m_nIp, 1); + // CStats::MoneyMadeWithBikeSales += GET_INTEGER_PARAM(0); + return 0; + case COMMAND_REGISTER_PACKAGE_SMUGGLED: + // CStats::PackagesSmuggled++; + return 0; + case COMMAND_REGISTER_SMUGGLER_WASTED: + // CStats::SmugglersWasted++; + return 0; + case COMMAND_REGISTER_FASTEST_SMUGGLING_TIME: + CollectParameters(&m_nIp, 1); + // CStats::RegisterFastestSmugglingTime(GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_SET_CHAR_DIVE_FROM_CAR: + { + CollectParameters(&m_nIp, 2); + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(1)); + script_assert(pPed); + pPed->bRespondsToThreats = true; + pPed->SetEvasiveDive(pVehicle, 1); + return 0; + } + case COMMAND_WRECK_CAR: + { + CollectParameters(&m_nIp, 1); + CAutomobile* pVehicle = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pVehicle); + script_assert(pVehicle->IsCar()); + pVehicle->m_fHealth = 0.0f; + pVehicle->SetStatus(STATUS_WRECKED); + pVehicle->bRenderScorched = true; + pVehicle->Damage.FuckCarCompletely(); + if (pVehicle->GetModelIndex() != MI_RCBANDIT) { + pVehicle->SetBumperDamage(CAR_BUMP_FRONT, VEHBUMPER_FRONT); + pVehicle->SetBumperDamage(CAR_BUMP_REAR, VEHBUMPER_REAR); + pVehicle->SetDoorDamage(CAR_BONNET, DOOR_BONNET); + pVehicle->SetDoorDamage(CAR_BOOT, DOOR_BOOT); + pVehicle->SetDoorDamage(CAR_DOOR_LF, DOOR_FRONT_LEFT); + pVehicle->SetDoorDamage(CAR_DOOR_RF, DOOR_FRONT_RIGHT); + pVehicle->SetDoorDamage(CAR_DOOR_LR, DOOR_REAR_LEFT); + pVehicle->SetDoorDamage(CAR_DOOR_RR, DOOR_REAR_RIGHT); + } + pVehicle->m_bombType = CARBOMB_NONE; + pVehicle->bEngineOn = false; + pVehicle->bLightsOn = false; + pVehicle->m_fHealth = 0.0f; + pVehicle->m_nBombTimer = 0; + pVehicle->m_bSirenOrAlarm = false; + return 0; + } + case COMMAND_ADD_MONEY_MADE_IN_COACH: + CollectParameters(&m_nIp, 1); + // CStats::MoneyMadeInCoach += GET_INTEGER_PARAM(0); + return 0; + case COMMAND_ADD_MONEY_MADE_COLLECTING_TRASH: + CollectParameters(&m_nIp, 1); + // CStats::MoneyMadeCollectingTrash += GET_INTEGER_PARAM(0); + return 0; + case COMMAND_REGISTER_HITMAN_KILLED: + // CStats::HitmenKilled++; + return 0; + case COMMAND_REGISTER_GUARDIAN_ANGEL_MISSION_PASSED: + // CStats::GaurdianAngelMissionsPassed++; + return 0; + case COMMAND_REGISTER_HIGHEST_GUARDIAN_ANGEL_JUSTICE_DISHED: + CollectParameters(&m_nIp, 1); + // CStats::RegisterHighestGaurdianAngelJusticeDished(GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_REGISTER_BEST_BANDIT_LAP_TIME: + CollectParameters(&m_nIp, 2); + // CStats::RegisterBestBanditLapTime(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); + return 0; + case COMMAND_REGISTER_BEST_BANDIT_POSITION: + CollectParameters(&m_nIp, 2); + // CStats::RegisterBestBanditPosition(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); + return 0; + case COMMAND_REGISTER_MOST_TIME_LEFT_TRAIN_RACE: + CollectParameters(&m_nIp, 1); + // CStats::RegisterMostTimeLeftTrainRace(GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_REGISTER_HIGHEST_TRAIN_CASH_EARNED: + CollectParameters(&m_nIp, 1); + // CStats::RegisterHighestTrainCashEarned(GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_REGISTER_FASTEST_HELI_RACE_TIME: + // CStats::RegisterFastestHeliRaceTime(GET_INTEGER_PARAM(0)); + CollectParameters(&m_nIp, 1); + return 0; + case COMMAND_REGISTER_BEST_HELI_RACE_POSITION: + // CStats::RegisterBestHeliRacePosition(GET_INTEGER_PARAM(0)); + CollectParameters(&m_nIp, 1); + return 0; + case COMMAND_REGISTER_OUTFIT_CHANGE: + // CStats::NumberOutfitChanges++; + return 0; + case COMMAND_REGISTER_STREET_RACE_FASTEST_TIME: + // CStats::RegisterStreetRaceFastestTime(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); + CollectParameters(&m_nIp, 2); + return 0; + case COMMAND_REGISTER_STREET_RACE_FASTEST_LAP: + CollectParameters(&m_nIp, 2); + // CStats::RegisterStreetRaceFastestLap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); + return 0; + case COMMAND_REGISTER_STREET_RACE_BEST_POSITION: + CollectParameters(&m_nIp, 2); + // CStats::RegisterStreetRaceBestPosition(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); + return 0; + case COMMAND_HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON: + { + CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); + bool result = false; + if (!pObject) { + printf("HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON - Object doesn\'t exist\n"); + } + else { + if (GET_INTEGER_PARAM(1) == WEAPONTYPE_ANYMELEE || GET_INTEGER_PARAM(1) == WEAPONTYPE_ANYWEAPON) + result = CheckDamagedWeaponType(pObject->m_nLastWeaponToDamage, GET_INTEGER_PARAM(1)); + else + result = GET_INTEGER_PARAM(1) == pObject->m_nLastWeaponToDamage; + } + UpdateCompareFlag(result); + return 0; + } + case COMMAND_CLEAR_OBJECT_LAST_WEAPON_DAMAGE: + { + CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); + if (!pObject) + printf("CLEAR_OBJECT_LAST_WEAPON_DAMAGE - pObject doesn\'t exist"); + else + pObject->m_nLastWeaponToDamage = -1; + return 0; + } + case COMMAND_SET_CAR_TURN_SPEED: + { + CollectParameters(&m_nIp, 4); + CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pVehicle); + CVector vSpeed = GET_VECTOR_PARAM(1) / GAME_SPEED_TO_METERS_PER_SECOND; + pVehicle->SetTurnSpeed(vSpeed.x, vSpeed.y, vSpeed.z); + return 0; + } + case COMMAND_SET_CAR_MOVE_SPEED: + { + CollectParameters(&m_nIp, 4); + CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pVehicle); + CVector vSpeed = GET_VECTOR_PARAM(1) / GAME_SPEED_TO_METERS_PER_SECOND; + pVehicle->SetMoveSpeed(vSpeed); + return 0; + } + case COMMAND_SET_OBJECT_PROOFS: + { + CollectParameters(&m_nIp, 6); + CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pObject); + pObject->bBulletProof = (GET_INTEGER_PARAM(1) != 0); + pObject->bFireProof = (GET_INTEGER_PARAM(2) != 0); + pObject->bExplosionProof = (GET_INTEGER_PARAM(3) != 0); + pObject->bCollisionProof = (GET_INTEGER_PARAM(4) != 0); + pObject->bMeleeProof = (GET_INTEGER_PARAM(5) != 0); + return 0; + } + case COMMAND_GET_CAMERA_PED_ZOOM_INDICATOR: + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FOLLOWPED) + SET_INTEGER_PARAM(0, TheCamera.PedZoomIndicator); + else + SET_INTEGER_PARAM(0, -1); + StoreParameters(&m_nIp, 1); + return 0; + case COMMAND_SET_CAMERA_PED_ZOOM_INDICATOR: + CollectParameters(&m_nIp, 1); + if (TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FOLLOWPED) + TheCamera.PedZoomIndicator = GET_INTEGER_PARAM(0); + return 0; + case COMMAND_GET_CAR_ORIENTATION: + { + CollectParameters(&m_nIp, 1); + CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pVehicle); + SET_FLOAT_PARAM(1, LimitAngleOnCircle(RADTODEG(Asin(pVehicle->GetForward().z)))); + SET_FLOAT_PARAM(2, LimitAngleOnCircle(RADTODEG(CGeneral::GetATanOfXY(pVehicle->GetForward().x, pVehicle->GetForward().y)))); + SET_FLOAT_PARAM(0, LimitAngleOnCircle(RADTODEG(CGeneral::GetATanOfXY(pVehicle->GetUp().z, pVehicle->GetRight().z)))); + StoreParameters(&m_nIp, 3); + return 0; + } + case COMMAND_SET_CAR_ORIENTATION: + { + CollectParameters(&m_nIp, 4); + CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pVehicle); + pVehicle->SetOrientation(DEGTORAD(GET_FLOAT_PARAM(2)), DEGTORAD(GET_FLOAT_PARAM(1)), DEGTORAD(GET_FLOAT_PARAM(3))); + return 0; + } + case COMMAND_IS_DEBUG_MENU_ON: + // on PS2 it's something actual - TODO + UpdateCompareFlag(false); + return 0; + case COMMAND_OPEN_VAN_BACK_DOORS: + { + CollectParameters(&m_nIp, 1); + CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); + assert(pVehicle); + pVehicle->ProcessOpenDoor(CAR_DOOR_RR, ANIM_VAN_OPEN, 1.0f); + pVehicle->ProcessOpenDoor(CAR_DOOR_LR, ANIM_VAN_OPEN_L, 1.0f); + return 0; + } + case COMMAND_GET_CHAR_THREAT_CHAR: + { + CollectParameters(&m_nIp, 1); + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pPed); + SET_INTEGER_PARAM(0, 0); + CEntity* pThreat = pPed->m_threatEntity; + if (pThreat && pThreat->IsPed()) + SET_INTEGER_PARAM(0, CPools::GetPedPool()->GetIndex((CPed*)pThreat)); + StoreParameters(&m_nIp, 1); + return 0; + } + case COMMAND_FREEZE_PED_ZOOM_SWITCH: + CollectParameters(&m_nIp, 1); + TheCamera.m_bFreezePedZoomSwitch = GET_INTEGER_PARAM(0); + return 0; + case COMMAND_SET_OBJECT_RENDERED_DAMAGED: + { + CollectParameters(&m_nIp, 1); + CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pObject); + pObject->bRenderDamaged = true; + return 0; + } + case COMMAND_GET_RANDOM_CAR_IN_AREA_NO_SAVE: + { + CollectParameters(&m_nIp, 5); + int handle = -1; + uint32 i = CPools::GetVehiclePool()->GetSize(); + float infX = GET_FLOAT_PARAM(0); + float infY = GET_FLOAT_PARAM(1); + float supX = GET_FLOAT_PARAM(2); + float supY = GET_FLOAT_PARAM(3); + while (i-- && handle == -1) { + CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i); + if (!pVehicle) + continue; + if (pVehicle->GetVehicleAppearance() != VEHICLE_APPEARANCE_CAR && pVehicle->GetVehicleAppearance() != VEHICLE_APPEARANCE_BIKE) + continue; +#ifdef FIX_BUGS + if (pVehicle->m_fHealth <= 0.0f) +#else + if (pVehicle->m_fHealth == 0.0f) +#endif + continue; + if (pVehicle->GetModelIndex() != GET_INTEGER_PARAM(4) && GET_INTEGER_PARAM(4) >= 0) + continue; + if (pVehicle->VehicleCreatedBy != RANDOM_VEHICLE) + continue; + if (!pVehicle->IsWithinArea(infX, infY, supX, supY)) + continue; + handle = CPools::GetVehiclePool()->GetIndex(pVehicle); + } + SET_INTEGER_PARAM(0, handle); + StoreParameters(&m_nIp, 1); + return 0; + } + case COMMAND_IS_PLAYER_MADE_SAFE: + { + UpdateCompareFlag(CPad::GetPad(0)->IsPlayerControlsDisabledBy(PLAYERCONTROL_PLAYERINFO)); + return 0; + } + case COMMAND_PRINT_IF_FREE: + { + wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CollectParameters(&m_nIp, 2); + //CMessages::AddMessageIfFree(text, GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); TODO + return 0; + } + case COMMAND_IS_E3_BUILD: + UpdateCompareFlag(false); + return 0; + case COMMAND_DECLARE_FORT_STAUNTON_DESTROYED_FLAG: + CTheScripts::FSDestroyedFlag = (uint8*)GetPointerToScriptVariable(&m_nIp, VAR_GLOBAL) - CTheScripts::ScriptSpace; + return 0; + case COMMAND_CLEAR_BIG_MESSAGES: + //CMessages::ClearBigMessagesOnly(); TODO + //CHud::ClearBigMessagesExcept(2, 2); TODO + CGarages::MessageEndTime = CGarages::MessageStartTime; + return 0; + case COMMAND_CLEAR_AREA_OF_OBJECTS: + { + CollectParameters(&m_nIp, 6); + uint32 i = CPools::GetObjectPool()->GetSize(); + float infX = GET_FLOAT_PARAM(0); + float infY = GET_FLOAT_PARAM(1); + float infZ = GET_FLOAT_PARAM(2); + float supX = GET_FLOAT_PARAM(3); + float supY = GET_FLOAT_PARAM(4); + float supZ = GET_FLOAT_PARAM(5); + while (i--) { + CObject* pObject = CPools::GetObjectPool()->GetSlot(i); + if (pObject && pObject->CanBeDeleted() && pObject->IsWithinArea(infX, infY, infZ, supX, supY, supZ)) { + pObject->DeleteRwObject(); + CWorld::Remove(pObject); + delete pObject; + } + } + i = CPools::GetDummyPool()->GetSize(); + while (i--) { + CDummy* pDummy = CPools::GetDummyPool()->GetSlot(i); + if (pDummy && pDummy->IsObject() && pDummy->IsWithinArea(infX, infY, infZ, supX, supY, supZ)) { + pDummy->DeleteRwObject(); + CWorld::Remove(pDummy); + delete pDummy; + } + } + return 0; + } + case COMMAND_LOAD_NON_STANDARD_PED_ANIM: + CollectParameters(&m_nIp, 1); + // CPed::LoadNonStandardPedAnim(GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_UNLOAD_NON_STANDARD_PED_ANIM: + CollectParameters(&m_nIp, 1); + // CPed::UnloadNonStandardPedAnim(SET_INTEGER_PARAM(0)); + return 0; + //case COMMAND_1566: + case COMMAND_BUILD_WORLD_GEOMETRY: + CollectParameters(&m_nIp, 1); + if (/*gBuildWorldGeom*/ false) { + //base::cWorldGeom::GetInstance()->Build(GET_INTEGER_PARAM(0)); + UpdateCompareFlag(true); + } + else { + UpdateCompareFlag(false); + } + return 0; + case COMMAND_STORE_BUILDING_SWAP: + CollectParameters(&m_nIp, 4); + // base::cWorldGeom::GetInstance()->StoreBuildingSwap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3) != 0); + return 0; + case COMMAND_IS_MULTIPLAYER_ACTIVE: + UpdateCompareFlag(false); // TODO? + return 0; + case COMMAND_GET_MULTIPLAYER_MODE: + SET_INTEGER_PARAM(0, 0); // TODO + StoreParameters(&m_nIp, 1); + return 0; + case COMMAND_MULTIPLAYER_SCRIPT_DONE: + //gbStartingScriptsFromLua = false; TODO? + return 0; + case COMMAND_IS_MULTIPLAYER_SERVER: + UpdateCompareFlag(false); // TODO? + return 0; + case COMMAND_IS_MULTIPLAYER_TEAM_GAME: + UpdateCompareFlag(false); // TODO? + return 0; + case COMMAND_GET_MULTIPLAYER_TEAM_ID: + SET_INTEGER_PARAM(0, 0); // TODO + StoreParameters(&m_nIp, 1); + return 0; + case COMMAND_DOES_SHORTCUT_TAXI_EXIST: + UpdateCompareFlag(CGameLogic::pShortCutTaxi != nil); + return 0; + case COMMAND_SET_ONSCREEN_TIMER_COLOUR: + CollectParameters(&m_nIp, 4); + // gbColour = CRGBA(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3)); + return 0; + case COMMAND_SET_ONSCREEN_TIMER_BACKGROUND_COLOUR: + CollectParameters(&m_nIp, 4); + // gbColour2 = CRGBA(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3)); + return 0; + case COMMAND_REMOVE_CAR_BOOT: + { + CollectParameters(&m_nIp, 1); + CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pVehicle); + script_assert(pVehicle->IsCar()); + CAutomobile* pAutomobile = (CAutomobile*)pVehicle; + pAutomobile->Damage.SetDoorStatus(DOOR_BOOT, DOOR_STATUS_MISSING); + pAutomobile->SetDoorDamage(CAR_BOOT, DOOR_BOOT, true); + return 0; + } + case COMMAND_ADD_POINT_3D_MARKER: + { + uint32 ip = m_nIp; + uint32 id = (uint32)(uintptr)GetPointerToScriptVariable(&m_nIp, 0); + static CVector vPreviousLocation; + CollectParameters(&m_nIp, 7); + CVector pos = GET_VECTOR_PARAM(0); + if (pos.z <= MAP_Z_LOW_LIMIT) + pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y); + if (vPreviousLocation != pos) { + //C3dMarkers::CopyMarker(id, id - 1, 1, 1); + } + // TODO: 5 is not a valid type + //C3dMarkers::PlaceMarker(id, 5, pos, GET_FLOAT_PARAM(3) * 0.7f, GET_INTEGER_PARAM(4), GET_INTEGER_PARAM(5), GET_INTEGER_PARAM(6), 255, 128, 0.0f, 1); // TODO: 0, 100.0f, 1, 0 + vPreviousLocation = pos; + return 0; + } + case COMMAND_GET_VECTOR_FROM_MULTIPLAYER: + // SET_VECTOR_PARAM(0, gVectorSetInLua); + StoreParameters(&m_nIp, 3); + return 0; + case COMMAND_PRINT_HELP_ALWAYS: + { + // CHud::mAlwaysAllowHelpText = true; // TODO + wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CHud::SetHelpMessage(text, false); // + false, true + return 0; + } + case COMMAND_PRINT_HELP_FOREVER_ALWAYS: + { + // CHud::mAlwaysAllowHelpText = true; // TODO + wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp); + CHud::SetHelpMessage(text, false, true); // + true + return 0; + } + case COMMAND_SWITCH_FERRY_COLLISION: + CollectParameters(&m_nIp, 1); + // CFerry::SwitchFerryCollision(GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_SET_CHAR_MAX_HEALTH: + { + CollectParameters(&m_nIp, 2); + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pPed); + pPed->m_fHealth = GET_INTEGER_PARAM(1); + pPed->m_fMaxHealth = GET_INTEGER_PARAM(1); + return 0; + } + case COMMAND_SET_CHAR_SHOOT_TIMER: + { + CollectParameters(&m_nIp, 2); + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pPed); + pPed->m_nScriptShootTimer = GET_INTEGER_PARAM(1); + return 0; + } + case COMMAND_SET_CHAR_ATTACK_TIMER: + { + CollectParameters(&m_nIp, 2); + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pPed); + pPed->m_nScriptAttackTimer = GET_INTEGER_PARAM(1); + return 0; + } + case COMMAND_SET_HELI_ROTOR_BLADES_FULLSPEED: + { + CollectParameters(&m_nIp, 1); + CAutomobile* pHeli = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pHeli); + if (pHeli->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI) + pHeli->m_aWheelSpeed[1] = 0.22f; + return 0; + } + case COMMAND_SET_CRUSHER_REWARD_MULTIPLIER: + { + CollectParameters(&m_nIp, 1); + // CGarages::CrusherRewardMultiplier = GET_INTEGER_PARAM(0); + return 0; + } + case COMMAND_SWAP_BUILDINGS: + { + CollectParameters(&m_nIp, 2); + // base::cWorldStream::Instance()->SwapBuilding(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1)); + return 0; + } + case COMMAND_STREAM_BUILDING_SWAPS: + { + // UpdateCompareFlag(base::cWorldStream::Instance()->StreamBuildingSwaps()); + UpdateCompareFlag(true); + return 0; + } + case COMMAND_IS_WORLD_STREAMING_COMPLETE: + { + // UpdateCompareFlag(base::cWorldStream::Instance()->IsStreamingComplet()); + UpdateCompareFlag(true); + return 0; + } + case COMMAND_SWAP_TO_STREAMED_SECTOR: + { + // base::cWorldStream::Instance()->SwapToStreamedSector(); + return 0; + } + case COMMAND_SET_CHAR_ATTACKS_PLAYER_WITH_COPS: + { + CollectParameters(&m_nIp, 1); + CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0)); + script_assert(pPed); + pPed->bAttacksPlayerWithCops = (GET_INTEGER_PARAM(0) != 0); + return 0; + } + case COMMAND_REGISTER_FACE_PLANT_DISTANCE: + CollectParameters(&m_nIp, 1); + //CStats::LongestFacePlantDist = Max(CStats::LongestFacePlantDist, GET_FLOAT_PARAM(0)); + return 0; + case COMMAND_REGISTER_MAX_SECONDS_ON_CARNAGE_LEFT: + CollectParameters(&m_nIp, 1); + //CStats::MaxSecondsOnCarnageLeft = Max(CStats::MaxSecondsOnCarnageLeft, GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_REGISTER_MAX_KILLS_ON_RC_TRIAD: + CollectParameters(&m_nIp, 1); + //CStats::MaxKillsOnRcTriad = Max(CStats::MaxKillsOnRcTriad, GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_REGISTER_HIGHEST_LEVEL_SLASH_TV: + CollectParameters(&m_nIp, 1); + //CStats::HighestLevelSlashTv = Max(CStats::HighestLevelSlashTv, GET_INTEGER_PARAM(0)); + return 0; + case COMMAND_ADD_MONEY_MADE_WITH_SLASH_TV: + CollectParameters(&m_nIp, 1); + //CStats::MoneyMadeWithSlashTv += GET_INTEGER_PARAM(0); + return 0; + case COMMAND_ADD_TOTAL_KILLS_ON_SLASH_TV: + CollectParameters(&m_nIp, 1); + //CStats::TotalKillsOnSlashTV += GET_INTEGER_PARAM(0); return 0; default: script_assert(0); diff --git a/src/control/ScriptCommands.h b/src/control/ScriptCommands.h index e6bea785..f0d9743b 100644 --- a/src/control/ScriptCommands.h +++ b/src/control/ScriptCommands.h @@ -1498,166 +1498,166 @@ enum { COMMAND_GET_RANDOM_CHAR_IN_AREA_NO_CHECKS, COMMAND_GET_RANDOM_CAR_IN_AREA_NO_CHECKS_NO_SAVE, COMMAND_STORE_CAR_COLLIDED_WITH_NO_SAVE, - COMMAND_1497, - COMMAND_1498, - COMMAND_1499, - COMMAND_1500, - COMMAND_1501, - COMMAND_1502, - COMMAND_1503, - COMMAND_1504, - COMMAND_1505, - COMMAND_1506, - COMMAND_1507, - COMMAND_1508, - COMMAND_1509, - COMMAND_1510, - COMMAND_1511, - COMMAND_1512, - COMMAND_1513, - COMMAND_1514, - COMMAND_1515, - COMMAND_1516, - COMMAND_1517, - COMMAND_1518, - COMMAND_1519, - COMMAND_1520, - COMMAND_1521, - COMMAND_1522, - COMMAND_1523, - COMMAND_1524, - COMMAND_1525, - COMMAND_1526, - COMMAND_1527, - COMMAND_1528, - COMMAND_1529, - COMMAND_1530, - COMMAND_1531, - COMMAND_1532, - COMMAND_1533, - COMMAND_1534, - COMMAND_1535, - COMMAND_1536, - COMMAND_1537, - COMMAND_1538, - COMMAND_1539, - COMMAND_1540, - COMMAND_1541, - COMMAND_1542, - COMMAND_1543, - COMMAND_1544, - COMMAND_1545, - COMMAND_1546, - COMMAND_1547, - COMMAND_1548, - COMMAND_1549, - COMMAND_1550, - COMMAND_1551, - COMMAND_1552, - COMMAND_1553, - COMMAND_1554, - COMMAND_1555, - COMMAND_1556, - COMMAND_1557, - COMMAND_1558, - COMMAND_1559, - COMMAND_1560, - COMMAND_1561, - COMMAND_1562, - COMMAND_1563, - COMMAND_1564, - COMMAND_1565, + COMMAND_DISABLE_FERRY_PATH, + COMMAND_ENABLE_FERRY_PATH, + COMMAND_GET_CLOSEST_DOCKED_FERRY, + COMMAND_OPEN_FERRY_DOOR, + COMMAND_CLOSE_FERRY_DOOR, + COMMAND_IS_FERRY_DOOR_OPEN, + COMMAND_IS_FERRY_DOOR_CLOSED, + COMMAND_SKIP_FERRY_TO_NEXT_DOCK, + COMMAND_SET_CHAR_DROPS_WEAPONS_ON_DEATH, + COMMAND_IS_CHAR_CROUCHING, + COMMAND_GET_FERRY_BOARDING_SPACE, + COMMAND_GET_FERRY_HEADING, + COMMAND_SET_FERRIES_ENABLED, + COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT, + COMMAND_OVERRIDE_CAR_REMOTE_CONTROL, + COMMAND_CANCEL_REMOTE_MODE, + COMMAND_REGISTER_CAR_SOLD, + COMMAND_ADD_MONEY_MADE_WITH_CAR_SALES, + COMMAND_SET_BRIDGE_STATE, + COMMAND_SET_OBJECT_TURN_SPEED, + COMMAND_SET_OBJECT_MASS, + COMMAND_HAS_CUTSCENE_LOADED, + COMMAND_SET_UNIQUE_JUMPS_FOUND, + COMMAND_SET_HIDDEN_PACKAGES_COLLECTED, + COMMAND_REGISTER_BIKE_SOLD, + COMMAND_ADD_MONEY_MADE_WITH_BIKE_SALES, + COMMAND_REGISTER_PACKAGE_SMUGGLED, + COMMAND_REGISTER_SMUGGLER_WASTED, + COMMAND_REGISTER_FASTEST_SMUGGLING_TIME, + COMMAND_SET_CHAR_DIVE_FROM_CAR, + COMMAND_WRECK_CAR, + COMMAND_ADD_MONEY_MADE_IN_COACH, + COMMAND_ADD_MONEY_MADE_COLLECTING_TRASH, + COMMAND_REGISTER_HITMAN_KILLED, + COMMAND_REGISTER_GUARDIAN_ANGEL_MISSION_PASSED, + COMMAND_REGISTER_HIGHEST_GUARDIAN_ANGEL_JUSTICE_DISHED, + COMMAND_REGISTER_BEST_BANDIT_LAP_TIME, + COMMAND_REGISTER_BEST_BANDIT_POSITION, + COMMAND_REGISTER_MOST_TIME_LEFT_TRAIN_RACE, + COMMAND_REGISTER_HIGHEST_TRAIN_CASH_EARNED, + COMMAND_REGISTER_FASTEST_HELI_RACE_TIME, + COMMAND_REGISTER_BEST_HELI_RACE_POSITION, + COMMAND_REGISTER_OUTFIT_CHANGE, + COMMAND_REGISTER_STREET_RACE_FASTEST_TIME, + COMMAND_REGISTER_STREET_RACE_FASTEST_LAP, + COMMAND_REGISTER_STREET_RACE_BEST_POSITION, + COMMAND_HAS_OBJECT_BEEN_DAMAGED_BY_WEAPON, + COMMAND_CLEAR_OBJECT_LAST_WEAPON_DAMAGE, + COMMAND_SET_CAR_TURN_SPEED, + COMMAND_SET_CAR_MOVE_SPEED, + COMMAND_SET_OBJECT_PROOFS, + COMMAND_GET_CAMERA_PED_ZOOM_INDICATOR, + COMMAND_SET_CAMERA_PED_ZOOM_INDICATOR, + COMMAND_GET_CAR_ORIENTATION, + COMMAND_SET_CAR_ORIENTATION, + COMMAND_IS_DEBUG_MENU_ON, + COMMAND_OPEN_VAN_BACK_DOORS, + COMMAND_GET_CHAR_THREAT_CHAR, + COMMAND_FREEZE_PED_ZOOM_SWITCH, + COMMAND_SET_OBJECT_RENDERED_DAMAGED, + COMMAND_GET_RANDOM_CAR_IN_AREA_NO_SAVE, + COMMAND_IS_PLAYER_MADE_SAFE, + COMMAND_PRINT_IF_FREE, + COMMAND_IS_E3_BUILD, + COMMAND_DECLARE_FORT_STAUNTON_DESTROYED_FLAG, + COMMAND_CLEAR_BIG_MESSAGES, + COMMAND_CLEAR_AREA_OF_OBJECTS, + COMMAND_LOAD_NON_STANDARD_PED_ANIM, + COMMAND_UNLOAD_NON_STANDARD_PED_ANIM, COMMAND_1566, - COMMAND_1567, - COMMAND_1568, - COMMAND_1569, - COMMAND_1570, - COMMAND_1571, - COMMAND_1572, - COMMAND_1573, - COMMAND_1574, - COMMAND_1575, - COMMAND_1576, - COMMAND_1577, - COMMAND_1578, - COMMAND_1579, - COMMAND_1580, - COMMAND_1581, - COMMAND_1582, - COMMAND_1583, - COMMAND_1584, - COMMAND_1585, - COMMAND_1586, - COMMAND_1587, - COMMAND_1588, - COMMAND_1589, - COMMAND_1590, - COMMAND_1591, - COMMAND_1592, - COMMAND_1593, - COMMAND_1594, - COMMAND_1595, - COMMAND_1596, - COMMAND_1597, - COMMAND_1598, - COMMAND_1599, - COMMAND_1600, - COMMAND_1601, - COMMAND_1602, - COMMAND_1603, - COMMAND_1604, - COMMAND_1605, - COMMAND_1606, - COMMAND_1607, - COMMAND_1608, - COMMAND_1609, - COMMAND_1610, - COMMAND_1611, - COMMAND_1612, - COMMAND_1613, - COMMAND_1614, - COMMAND_1615, - COMMAND_1616, - COMMAND_1617, - COMMAND_1618, - COMMAND_1619, - COMMAND_1620, - COMMAND_1621, - COMMAND_1622, - COMMAND_1623, - COMMAND_1624, - COMMAND_1625, - COMMAND_1626, + COMMAND_BUILD_WORLD_GEOMETRY, + COMMAND_STORE_BUILDING_SWAP, + COMMAND_IS_MULTIPLAYER_ACTIVE, + COMMAND_GET_MULTIPLAYER_MODE, + COMMAND_MULTIPLAYER_SCRIPT_DONE, + COMMAND_IS_MULTIPLAYER_SERVER, + COMMAND_IS_MULTIPLAYER_TEAM_GAME, + COMMAND_GET_MULTIPLAYER_TEAM_ID, + COMMAND_DOES_SHORTCUT_TAXI_EXIST, + COMMAND_SET_ONSCREEN_TIMER_COLOUR, + COMMAND_SET_ONSCREEN_TIMER_BACKGROUND_COLOUR, + COMMAND_REMOVE_CAR_BOOT, + COMMAND_ADD_POINT_3D_MARKER, + COMMAND_GET_VECTOR_FROM_MULTIPLAYER, + COMMAND_PRINT_HELP_ALWAYS, + COMMAND_PRINT_HELP_FOREVER_ALWAYS, + COMMAND_SWITCH_FERRY_COLLISION, + COMMAND_SET_CHAR_MAX_HEALTH, + COMMAND_SET_CHAR_SHOOT_TIMER, + COMMAND_SET_CHAR_ATTACK_TIMER, + COMMAND_SET_HELI_ROTOR_BLADES_FULLSPEED, + COMMAND_SET_CRUSHER_REWARD_MULTIPLIER, + COMMAND_SWAP_BUILDINGS, + COMMAND_STREAM_BUILDING_SWAPS, + COMMAND_IS_WORLD_STREAMING_COMPLETE, + COMMAND_SWAP_TO_STREAMED_SECTOR, + COMMAND_SET_CHAR_ATTACKS_PLAYER_WITH_COPS, + COMMAND_REGISTER_FACE_PLANT_DISTANCE, + COMMAND_REGISTER_MAX_SECONDS_ON_CARNAGE_LEFT, + COMMAND_REGISTER_MAX_KILLS_ON_RC_TRIAD, + COMMAND_REGISTER_HIGHEST_LEVEL_SLASH_TV, + COMMAND_ADD_MONEY_MADE_WITH_SLASH_TV, + COMMAND_ADD_TOTAL_KILLS_ON_SLASH_TV, + COMMAND_ADD_NOODLES_DELIEVERED, + COMMAND_REGISTER_SCRAPYARD_CHALLENGE_SCORE, + COMMAND_REGISTER_9MM_MAYHEM_SCORE, + COMMAND_REGISTER_SCOOTER_SHOOTER_SCORE, + COMMAND_ADD_MONEY_MADE_FROM_TOURIST, + COMMAND_ADD_TOURISTS_TAKEN_TO_SPOTS, + COMMAND_ADD_EXPORTED_CARS, + COMMAND_SET_TOTAL_EXPORT_CARS, + COMMAND_REGISTER_DIRT_BIKE_FASTEST_LAP, + COMMAND_REGISTER_DIRT_BIKE_FASTEST_TIME, + COMMAND_REGISTER_DIRT_BIKE_AIR_TIME, + COMMAND_ADD_ARROW_3D_MARKER, + COMMAND_PRINT_NOW_OVERRIDE_FADE, + COMMAND_GET_PICKUP_VALUE, + COMMAND_SET_PICKUP_VALUE, + COMMAND_IS_DEVELOPER, + COMMAND_SET_DEVELOPER_FLAG, + COMMAND_REGISTER_WICHITA_WIPEOUT_SCORE, + COMMAND_ATTACH_OBJECT_TO_CAR, + COMMAND_DETACH_OBJECT_FROM_CAR, + COMMAND_SET_PAD_STICKS_MULTIPLIER, + COMMAND_PRINT_SUBTITLE_NOW, + COMMAND_PRINT_SUBTITLE_NOW_OVERRIDE_FADE, + COMMAND_PRINT_SUBTITLE_NOW_NO_BRIEF, + COMMAND_PRINT_WITH_NUMBER_NOW_NO_BRIEF, + COMMAND_GET_ANGLE_BETWEEN_POINTS, + COMMAND_OVERRIDE_CHAR_MOVE_ANIM, COMMAND_1627, - COMMAND_1628, - COMMAND_1629, - COMMAND_1630, - COMMAND_1631, - COMMAND_1632, - COMMAND_1633, - COMMAND_1634, - COMMAND_1635, - COMMAND_1636, - COMMAND_1637, - COMMAND_1638, - COMMAND_1639, - COMMAND_1640, - COMMAND_1641, - COMMAND_1642, - COMMAND_1643, - COMMAND_1644, - COMMAND_1645, - COMMAND_1646, - COMMAND_1647, - COMMAND_1648, - COMMAND_1649, - COMMAND_1650, - COMMAND_1651, - COMMAND_1652, - COMMAND_1653, - COMMAND_1654, - COMMAND_1655, - COMMAND_1656, + COMMAND_ENABLE_EMERGENCY_VEHICLES, + COMMAND_ADD_UNLOCKED_COSTUME, + COMMAND_CLEAR_MULTIPLAYER_SPLASH_SCREEN, + COMMAND_PRINT_WITH_2_NUMBERS_NOW_NO_BRIEF, + COMMAND_GET_OBJECT_ORIENTATION, + COMMAND_SET_OBJECT_ORIENTATION, + COMMAND_CHANGE_ONSCREEN_COUNTER_PREFIX, + COMMAND_STORE_PLAYER_OUTFIT, + COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_STRING, + COMMAND_SET_PLAYER_CURRENT_WEAPON_AMMO_IN_CLIP, + COMMAND_SET_CHAR_WAIT_STATE_REPEAT, + COMMAND_REGISTER_BEST_TIME_GOGO_FAGGIO, + COMMAND_LOCK_GARAGE, + COMMAND_IS_FINAL_GAME, + COMMAND_SET_ALLOWED_COLLISION, + COMMAND_REGISTER_GUARDIAN_ANGEL_LEVEL, + COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_NUMBER_AND_2_STRINGS, + COMMAND_GET_PLAYER_STORED_WEAPON, + COMMAND_DISABLE_PAUSE_MENU, + COMMAND_IS_CHANNEL_PLAYING, + COMMAND_SET_CLOCK_EVENT_WARNING, + COMMAND_SET_EXTRA_COLOUR_LIGHT_DIRECTION, + COMMAND_SET_CHAR_CAN_BE_TARGETTED_BY_LEADER, + COMMAND_PRINT_HELP_NO_BRIEF, + COMMAND_PRINT_HELP_FOREVER_NO_BRIEF, + COMMAND_PRINT_HELP_ALWAYS_NO_BRIEF, + COMMAND_PRINT_HELP_FOREVER_ALWAYS_NO_BRIEF, + COMMAND_SET_MISSION_CAR_CAN_BE_STORED_IN_GARAGE, + COMMAND_FREEZE_ALL_PLAYER_FOLLOWERS, #ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT LAST_SCRIPT_COMMAND #endif diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 992c7d74..32aa7850 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -114,6 +114,7 @@ CCamera::Init(void) m_1rstPersonRunCloseToAWall = false; m_fPositionAlongSpline = 0.0f; m_bCameraJustRestored = false; + m_bFreezePedZoomSwitch = false; Cams[0].Init(); Cams[1].Init(); Cams[2].Init(); @@ -985,7 +986,7 @@ CCamera::CamControl(void) // Change user selected mode if(CPad::GetPad(0)->CycleCameraModeUpJustDown() && !CReplay::IsPlayingBack() && (m_bLookingAtPlayer || WhoIsInControlOfTheCamera == CAMCONTROL_OBBE) && - !m_WideScreenOn && !m_bFailedCullZoneTestPreviously && !m_bFirstPersonBeingUsed){ + !m_WideScreenOn && !m_bFailedCullZoneTestPreviously && !m_bFirstPersonBeingUsed && !m_bFreezePedZoomSwitch){ if(FrontEndMenuManager.m_ControlMethod == CONTROL_STANDARD){ if(PedZoomIndicator == CAM_ZOOM_3) PedZoomIndicator = CAM_ZOOM_1; diff --git a/src/core/Camera.h b/src/core/Camera.h index 4da7b499..29f36c24 100644 --- a/src/core/Camera.h +++ b/src/core/Camera.h @@ -368,6 +368,7 @@ public: bool m_bVehicleSuspenHigh; bool m_bEnable1rstPersonCamCntrlsScript; bool m_bAllow1rstPersonWeaponsCamera; + bool m_bFreezePedZoomSwitch; bool m_bFailedCullZoneTestPreviously; bool m_FadeTargetIsSplashScreen; diff --git a/src/core/Pad.h b/src/core/Pad.h index a3634134..d913c16f 100644 --- a/src/core/Pad.h +++ b/src/core/Pad.h @@ -283,8 +283,8 @@ public: int16 GuiRight() { return GetAnaloguePadRight() || GetDPadRightJustDown(); } int16 GuiUp() { return GetAnaloguePadUp() || GetDPadUpJustDown(); } int16 GuiDown() { return GetAnaloguePadDown() || GetDPadDownJustDown(); } - int16 GuiSelect() { return GetSelect(); } - int16 GuiBack() { return GetStart(); } + int16 GuiSelect() { return GetCrossJustDown(); } + int16 GuiBack() { return GetTriangleJustDown(); } int16 GetSkipCutscene() { return GetCrossJustDown(); } #ifdef XINPUT diff --git a/src/core/config.h b/src/core/config.h index 58bc9ffd..3e5b1cfe 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -198,6 +198,7 @@ enum Config { //#define ANIM_COMPRESSION // only keep most recently used anims uncompressed #define GTA_TRAIN +//#define GTA_BRIDGE #if defined GTA_PS2 # define GTA_PS2_STUFF @@ -211,7 +212,7 @@ enum Config { # define PS2_MATFX # endif # define PC_PLAYER_CONTROLS // mouse player/cam mode -# define GTA_REPLAY +# //define GTA_REPLAY # define GTA_SCENE_EDIT #elif defined GTA_XBOX #endif @@ -343,7 +344,7 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually #endif //#define SIMPLIER_MISSIONS // apply simplifications from mobile #define USE_ADVANCED_SCRIPT_DEBUG_OUTPUT -#define SCRIPT_LOG_FILE_LEVEL 0 // 0 == no log, 1 == overwrite every frame, 2 == full log +#define SCRIPT_LOG_FILE_LEVEL 2 // 0 == no log, 1 == overwrite every frame, 2 == full log #ifndef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT #define USE_BASIC_SCRIPT_DEBUG_OUTPUT diff --git a/src/modelinfo/ModelIndices.h b/src/modelinfo/ModelIndices.h index 792904fc..b155d293 100644 --- a/src/modelinfo/ModelIndices.h +++ b/src/modelinfo/ModelIndices.h @@ -138,7 +138,50 @@ X("blimp_night", MI_BLIMP_NIGHT) \ X("blimp_day", MI_BLIMP_DAY) \ X("yt_main_body", MI_YT_MAIN_BODY) \ - X("yt_main_body2", MI_YT_MAIN_BODY2) + X("yt_main_body2", MI_YT_MAIN_BODY2) \ + X("oddjgaragdoor", MI_LCS_GARAGEDOOR01) \ + X("bombdoor", MI_LCS_GARAGEDOOR02) \ + X("door_bombshop", MI_LCS_GARAGEDOOR03) \ + X("vheistlocdoor", MI_LCS_GARAGEDOOR04) \ + X("door2_garage", MI_LCS_GARAGEDOOR05) \ + X("ind_slidedoor", MI_LCS_GARAGEDOOR06) \ + X("bankjobdoor", MI_LCS_GARAGEDOOR07) \ + X("door_jmsgrage", MI_LCS_GARAGEDOOR08) \ + X("ind_safeh_gdoor", MI_LCS_GARAGEDOOR09) \ + X("door_sfehousegrge", MI_LCS_GARAGEDOOR10) \ + X("shedgaragedoor", MI_LCS_GARAGEDOOR11) \ + X("door4_garage", MI_LCS_GARAGEDOOR12) \ + X("door_col_compnd_01", MI_LCS_GARAGEDOOR13) \ + X("door_col_compnd_02", MI_LCS_GARAGEDOOR14) \ + X("door_col_compnd_03", MI_LCS_GARAGEDOOR15) \ + X("door_col_compnd_04", MI_LCS_GARAGEDOOR16) \ + X("door_col_compnd_05", MI_LCS_GARAGEDOOR17) \ + X("impex_door", MI_LCS_GARAGEDOOR18) \ + X("SalvGarage", MI_LCS_GARAGEDOOR19) \ + X("door3_garage", MI_LCS_GARAGEDOOR20) \ + X("leveldoor2", MI_LCS_GARAGEDOOR21) \ + X("double_garage_dr", MI_LCS_GARAGEDOOR22) \ + X("amcogaragedoor", MI_LCS_GARAGEDOOR23) \ + X("towergaragedoor1", MI_LCS_GARAGEDOOR24) \ + X("towergaragedoor2", MI_LCS_GARAGEDOOR25) \ + X("towergaragedoor3", MI_LCS_GARAGEDOOR26) \ + X("plysve_gragedoor", MI_LCS_GARAGEDOOR27) \ + X("impexpsubgrgdoor", MI_LCS_GARAGEDOOR28) \ + X("Sub_sprayshopdoor", MI_LCS_GARAGEDOOR29) \ + X("ind_plyrwoor", MI_LCS_GARAGEDOOR30) \ + X("8ballsuburbandoor", MI_LCS_GARAGEDOOR31) \ + X("door_nthgrage", MI_LCS_GARAGEDOOR32) \ + X("hangardoor1", MI_LCS_GARAGEDOOR33) \ + X("hangardoor2", MI_LCS_GARAGEDOOR34) \ + X("neds_door", MI_LCS_GARAGEDOOR35) \ + X("fs_wrhsedoor", MI_LCS_GARAGEDOOR36) \ + X("jm_ContraGarage", MI_LCS_GARAGEDOOR37) \ + X("jm_imp_SalvGarage", MI_LCS_GARAGEDOOR38) \ + X("crushercrush", MI_LCS_GARAGEDOOR39) \ + X("crushertop", MI_LCS_GARAGEDOOR40) \ + X("crusher_crane", MI_LCS_CRANE01) \ + +// NB: MI_LCS_ <- temporary stuff so that garages started somewhat working #define X(name, var) extern int16 var; MODELINDICES diff --git a/src/objects/Object.h b/src/objects/Object.h index e34043a8..a8205ba9 100644 --- a/src/objects/Object.h +++ b/src/objects/Object.h @@ -71,6 +71,7 @@ public: uint8 bIsWeapon : 1; uint8 bIsStreetLight : 1; int8 m_nBonusValue; + int8 m_nLastWeaponToDamage; uint16 m_nCostValue; float m_fCollisionDamageMultiplier; uint8 m_nCollisionDamageEffect; diff --git a/src/peds/Ped.h b/src/peds/Ped.h index 9c77b596..1acd571b 100644 --- a/src/peds/Ped.h +++ b/src/peds/Ped.h @@ -527,7 +527,7 @@ public: uint32 bOnlyAllowedToSitInFront : 1; uint32 b1A1_8 : 1; uint32 b1A1_10 : 1; - uint32 b1A1_20 : 1; + uint32 bOverrideMoveAnim : 1; #ifdef KANGAROO_CHEAT // our own flags @@ -536,16 +536,16 @@ public: uint16 m_gangFlags; // <- this one is uint16 - uint8 b1A4_1 : 1; + uint8 bDropsWeaponsOnDeath : 1; uint8 b1A4_2 : 1; - uint8 b1A4_4 : 1; + uint8 bAttacksPlayerWithCops : 1; uint8 b1A4_8 : 1; uint8 b1A4_10 : 1; uint8 b1A4_20 : 1; uint8 b1A4_40 : 1; uint8 b1A4_80 : 1; - uint8 b1A5_1 : 1; + uint8 bCanBeTargettedByLeader : 1; uint8 b1A5_2 : 1; uint8 b1A5_4 : 1; uint8 b1A5_8 : 1; @@ -605,6 +605,8 @@ public: float m_fHealth; float m_fArmour; uint32 m_nExtendedRangeTimer; + uint32 m_nScriptShootTimer; + uint32 m_nScriptAttackTimer; int16 m_routeLastPoint; uint16 m_routeStartPoint; int16 m_routePointsPassed; @@ -704,6 +706,7 @@ public: uint32 m_lastComment; CVector m_vecSpotToGuard; float m_radiusToGuard; + float m_fMaxHealth; static void *operator new(size_t); static void *operator new(size_t, int); diff --git a/src/peds/PedAI.cpp b/src/peds/PedAI.cpp index a28ded8c..b945cf9b 100644 --- a/src/peds/PedAI.cpp +++ b/src/peds/PedAI.cpp @@ -6488,7 +6488,7 @@ CPed::KillCharOnFootArmed(CVector &ourPos, CVector &targetPos, CVector &distWith } } if (m_pedInObjective->IsPlayer() && m_nPedType != PEDTYPE_COP - && CharCreatedBy != MISSION_CHAR && FindPlayerPed()->m_pWanted->m_CurrentCops != 0) { + && CharCreatedBy != MISSION_CHAR && FindPlayerPed()->m_pWanted->m_CurrentCops != 0/* TODO: && !bAttacksPlayerWithCops*/) { SetObjective(OBJECTIVE_FLEE_ON_FOOT_TILL_SAFE); return CANT_ATTACK; diff --git a/src/vehicles/Cranes.cpp b/src/vehicles/Cranes.cpp index ce254100..8f23836d 100644 --- a/src/vehicles/Cranes.cpp +++ b/src/vehicles/Cranes.cpp @@ -14,7 +14,7 @@ // --MIAMI: file done -#define MAX_DISTANCE_TO_FIND_CRANE (10.0f) +#define MAX_DISTANCE_TO_FIND_CRANE (100.0f) #define CRANE_UPDATE_RADIUS (300.0f) #define CRANE_MOVEMENT_PROCESSING_RADIUS (150.0f) #define CRUSHER_Z (-0.951f) @@ -52,28 +52,18 @@ void CCranes::InitCranes(void) for (int j = 0; j < NUMSECTORS_Y; j++) { for (CPtrNode* pNode = CWorld::GetSector(i, j)->m_lists[ENTITYLIST_BUILDINGS].first; pNode; pNode = pNode->next) { CEntity* pEntity = (CEntity*)pNode->item; - if (MODELID_CRANE_1 == pEntity->GetModelIndex() || - MODELID_CRANE_2 == pEntity->GetModelIndex() || - MODELID_CRANE_3 == pEntity->GetModelIndex() || - MODELID_CRANE_4 == pEntity->GetModelIndex() || - MODELID_CRANE_5 == pEntity->GetModelIndex() || - MODELID_CRANE_6 == pEntity->GetModelIndex()) + if (MI_LCS_CRANE01 == pEntity->GetModelIndex()) AddThisOneCrane(pEntity); } } } -/* // TODO(LCS) - for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_MAINLAND).first; pNode; pNode = pNode->next) { + // TODO(LCS) + for (CPtrNode* pNode = CWorld::GetBigBuildingList(LEVEL_INDUSTRIAL).first; pNode; pNode = pNode->next) { CEntity* pEntity = (CEntity*)pNode->item; - if (MODELID_CRANE_1 == pEntity->GetModelIndex() || - MODELID_CRANE_2 == pEntity->GetModelIndex() || - MODELID_CRANE_3 == pEntity->GetModelIndex() || - MODELID_CRANE_4 == pEntity->GetModelIndex() || - MODELID_CRANE_5 == pEntity->GetModelIndex() || - MODELID_CRANE_6 == pEntity->GetModelIndex()) + if (MI_LCS_CRANE01 == pEntity->GetModelIndex()) AddThisOneCrane(pEntity); } -*/ + } void CCranes::AddThisOneCrane(CEntity* pEntity) diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index 795161bf..2d0e8fc9 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -245,6 +245,8 @@ public: #endif uint8 bDriverLastFrame : 1; + uint8 bAllowGarageToStore : 1; // <- many LCS flags before + int8 m_numPedsUseItAsCover; uint8 m_nAmmoInClip; // Used to make the guns on boat do a reload (20 by default) int8 m_nPacManPickupsCarried;