mirror of
https://github.com/halpz/re3.git
synced 2025-04-20 09:37:04 +00:00
commit
9bd80324d1
@ -3094,10 +3094,10 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params)
|
|||||||
if (params.m_pVehicle->bEngineOn) {
|
if (params.m_pVehicle->bEngineOn) {
|
||||||
switch (params.m_VehicleType) {
|
switch (params.m_VehicleType) {
|
||||||
case VEHICLE_TYPE_CAR:
|
case VEHICLE_TYPE_CAR:
|
||||||
bombType = params.m_pVehicle->m_bombType;
|
bombType = ((CAutomobile*)params.m_pVehicle)->m_bombType;
|
||||||
break;
|
break;
|
||||||
case VEHICLE_TYPE_BIKE:
|
case VEHICLE_TYPE_BIKE:
|
||||||
bombType = params.m_pVehicle->m_bombType;
|
bombType = ((CBike*)params.m_pVehicle)->m_bombType;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
debug("\n * AUDIOLOG: ProcessCarBombTick() Unsupported vehicle type %d * \n", params.m_VehicleType);
|
debug("\n * AUDIOLOG: ProcessCarBombTick() Unsupported vehicle type %d * \n", params.m_VehicleType);
|
||||||
|
@ -600,7 +600,7 @@ cAudioManager::SetupSuspectLastSeenReport()
|
|||||||
case MI_COACH:
|
case MI_COACH:
|
||||||
sample = SFX_SFX_POLICE_RADIO_COACH;
|
sample = SFX_SFX_POLICE_RADIO_COACH;
|
||||||
break;
|
break;
|
||||||
case MI_ROMERO:
|
case MI_HEARSE:
|
||||||
sample = SFX_SFX_POLICE_RADIO_HEARSE;
|
sample = SFX_SFX_POLICE_RADIO_HEARSE;
|
||||||
break;
|
break;
|
||||||
case MI_PIZZABOY:
|
case MI_PIZZABOY:
|
||||||
|
@ -627,13 +627,24 @@ void CGarage::Update()
|
|||||||
case GS_OPENED:
|
case GS_OPENED:
|
||||||
UpdateDoorsHeight();
|
UpdateDoorsHeight();
|
||||||
if (IsStaticPlayerCarEntirelyInside()) {
|
if (IsStaticPlayerCarEntirelyInside()) {
|
||||||
|
#ifndef BOMBS_ON_BIKES
|
||||||
if (FindPlayerVehicle()->GetVehicleAppearance() == VEHICLE_APPEARANCE_BIKE) {
|
if (FindPlayerVehicle()->GetVehicleAppearance() == VEHICLE_APPEARANCE_BIKE) {
|
||||||
CGarages::TriggerMessage("GA_22", -1, 4000, -1);
|
CGarages::TriggerMessage("GA_22", -1, 4000, -1);
|
||||||
m_eGarageState = GS_OPENEDCONTAINSCAR;
|
m_eGarageState = GS_OPENEDCONTAINSCAR;
|
||||||
DMAudio.PlayFrontEndSound(SOUND_GARAGE_BOMB_ALREADY_SET, 1);
|
DMAudio.PlayFrontEndSound(SOUND_GARAGE_BOMB_ALREADY_SET, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!FindPlayerVehicle() || FindPlayerVehicle()->m_bombType) {
|
#endif
|
||||||
|
if (!FindPlayerVehicle()
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
|| (FindPlayerVehicle()->IsCar() && ((CAutomobile*)FindPlayerVehicle())->m_bombType)
|
||||||
|
#else
|
||||||
|
|| ((CAutomobile*)FindPlayerVehicle())->m_bombType
|
||||||
|
#endif
|
||||||
|
#ifdef BOMBS_ON_BIKES
|
||||||
|
|| (FindPlayerVehicle()->IsBike() && ((CBike*)FindPlayerVehicle())->m_bombType)
|
||||||
|
#endif
|
||||||
|
) {
|
||||||
CGarages::TriggerMessage("GA_5", -1, 4000, -1); //"Your car is already fitted with a bomb"
|
CGarages::TriggerMessage("GA_5", -1, 4000, -1); //"Your car is already fitted with a bomb"
|
||||||
m_eGarageState = GS_OPENEDCONTAINSCAR;
|
m_eGarageState = GS_OPENEDCONTAINSCAR;
|
||||||
DMAudio.PlayFrontEndSound(SOUND_GARAGE_BOMB_ALREADY_SET, 1);
|
DMAudio.PlayFrontEndSound(SOUND_GARAGE_BOMB_ALREADY_SET, 1);
|
||||||
@ -677,10 +688,16 @@ void CGarage::Update()
|
|||||||
if (!CGarages::BombsAreFree)
|
if (!CGarages::BombsAreFree)
|
||||||
CWorld::Players[CWorld::PlayerInFocus].m_nMoney = Max(0, CWorld::Players[CWorld::PlayerInFocus].m_nMoney - BOMB_PRICE);
|
CWorld::Players[CWorld::PlayerInFocus].m_nMoney = Max(0, CWorld::Players[CWorld::PlayerInFocus].m_nMoney - BOMB_PRICE);
|
||||||
if (FindPlayerVehicle() && (FindPlayerVehicle()->IsCar() || FindPlayerVehicle()->IsBike())) {
|
if (FindPlayerVehicle() && (FindPlayerVehicle()->IsCar() || FindPlayerVehicle()->IsBike())) {
|
||||||
#if (!defined GTA_PS2 || defined FIX_BUGS) // <- this remained in CAutomobile in LCS
|
#ifdef BOMBS_ON_BIKES
|
||||||
FindPlayerVehicle()->m_bombType = CGarages::GetBombTypeForGarageType(m_eGarageType);
|
if (FindPlayerVehicle()->IsCar()) {
|
||||||
FindPlayerVehicle()->m_pBombRigger = FindPlayerPed();
|
((CAutomobile*)(FindPlayerVehicle()))->m_bombType = CGarages::GetBombTypeForGarageType(m_eGarageType);
|
||||||
#else // PS2 version contained a bug: CBike was casted to CAutomobile, but due to coincidence it didn't corrupt memory
|
((CAutomobile*)(FindPlayerVehicle()))->m_pBombRigger = FindPlayerPed();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
((CBike*)(FindPlayerVehicle()))->m_bombType = CGarages::GetBombTypeForGarageType(m_eGarageType);
|
||||||
|
((CBike*)(FindPlayerVehicle()))->m_pBombRigger = FindPlayerPed();
|
||||||
|
}
|
||||||
|
#else
|
||||||
((CAutomobile*)(FindPlayerVehicle()))->m_bombType = CGarages::GetBombTypeForGarageType(m_eGarageType);
|
((CAutomobile*)(FindPlayerVehicle()))->m_bombType = CGarages::GetBombTypeForGarageType(m_eGarageType);
|
||||||
((CAutomobile*)(FindPlayerVehicle()))->m_pBombRigger = FindPlayerPed();
|
((CAutomobile*)(FindPlayerVehicle()))->m_pBombRigger = FindPlayerPed();
|
||||||
#endif
|
#endif
|
||||||
@ -694,6 +711,13 @@ void CGarage::Update()
|
|||||||
pCar->m_pBombRigger = nil;
|
pCar->m_pBombRigger = nil;
|
||||||
pCar->m_pBlowUpEntity = nil;
|
pCar->m_pBlowUpEntity = nil;
|
||||||
}
|
}
|
||||||
|
#ifdef BOMBS_ON_BIKES
|
||||||
|
if (pVehicle->IsBike() && pVehicle->GetStatus() == STATUS_WRECKED) {
|
||||||
|
CBike* pBike = (CBike*)pVehicle;
|
||||||
|
pBike->m_pBombRigger = nil;
|
||||||
|
pBike->m_pBlowUpEntity = nil;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_eGarageType == GARAGE_BOMBSHOP3)
|
if (m_eGarageType == GARAGE_BOMBSHOP3)
|
||||||
|
@ -709,9 +709,11 @@ bool
|
|||||||
CPickups::TestForPickupsInBubble(CVector pos, float range)
|
CPickups::TestForPickupsInBubble(CVector pos, float range)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < NUMPICKUPS; i++) {
|
for (int i = 0; i < NUMPICKUPS; i++) {
|
||||||
|
if (aPickUps[i].m_eType != PICKUP_NONE) {
|
||||||
if ((aPickUps[i].m_vecPos - pos).Magnitude() < range)
|
if ((aPickUps[i].m_vecPos - pos).Magnitude() < range)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,65 +179,6 @@ static const char* MissionScripts[] = {
|
|||||||
"TOSH4"
|
"TOSH4"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char* MissionScripts[] = {
|
|
||||||
"LAWYER1",
|
|
||||||
"LAWYER2",
|
|
||||||
"LAWYER3",
|
|
||||||
"LAWYER4",
|
|
||||||
"GENERL1",
|
|
||||||
"COL2",
|
|
||||||
"GENERL3",
|
|
||||||
"COL_4",
|
|
||||||
"COL_5",
|
|
||||||
"baron1",
|
|
||||||
"baron2",
|
|
||||||
"baron3",
|
|
||||||
"baron4",
|
|
||||||
"kent1",
|
|
||||||
"baron5",
|
|
||||||
"serg1",
|
|
||||||
"serg2",
|
|
||||||
"serg3",
|
|
||||||
"bankjo1",
|
|
||||||
"bankjo2",
|
|
||||||
"bankjo3",
|
|
||||||
"bankjo4",
|
|
||||||
"phil1",
|
|
||||||
"phil2",
|
|
||||||
"porno1",
|
|
||||||
"porno2",
|
|
||||||
"porno3",
|
|
||||||
"porno4",
|
|
||||||
"protec1",
|
|
||||||
"protec2",
|
|
||||||
"protec3",
|
|
||||||
"count1",
|
|
||||||
"count2",
|
|
||||||
"CAP_1",
|
|
||||||
"FIN_1",
|
|
||||||
"bike1",
|
|
||||||
"bike2",
|
|
||||||
"bike3",
|
|
||||||
"rockb1",
|
|
||||||
"rockb2",
|
|
||||||
"rockb3",
|
|
||||||
"cuban1",
|
|
||||||
"cuban2",
|
|
||||||
"cuban3",
|
|
||||||
"cuban4",
|
|
||||||
"hait1",
|
|
||||||
"hait2",
|
|
||||||
"hait3",
|
|
||||||
"assin1",
|
|
||||||
"assin2",
|
|
||||||
"assin3",
|
|
||||||
"assin4",
|
|
||||||
"assin5",
|
|
||||||
"taxwar1",
|
|
||||||
"taxwar2",
|
|
||||||
"taxwar3"
|
|
||||||
};
|
|
||||||
|
|
||||||
int AllowMissionReplay;
|
int AllowMissionReplay;
|
||||||
uint32 NextMissionDelay;
|
uint32 NextMissionDelay;
|
||||||
uint32 MissionStartTime;
|
uint32 MissionStartTime;
|
||||||
@ -501,7 +442,7 @@ void CMissionCleanup::Process()
|
|||||||
#endif
|
#endif
|
||||||
CStreaming::ms_disableStreaming = false;
|
CStreaming::ms_disableStreaming = false;
|
||||||
if (CHud::m_ItemToFlash != ITEM_ARMOUR && CHud::m_ItemToFlash != ITEM_HEALTH)
|
if (CHud::m_ItemToFlash != ITEM_ARMOUR && CHud::m_ItemToFlash != ITEM_HEALTH)
|
||||||
CHud::m_ItemToFlash = -1;
|
CHud::m_ItemToFlash = ITEM_NONE;
|
||||||
CHud::SetHelpMessage(nil, false); // nil, false, false, true TODO(LCS)
|
CHud::SetHelpMessage(nil, false); // nil, false, false, true TODO(LCS)
|
||||||
CUserDisplay::OnscnTimer.m_bDisabled = false;
|
CUserDisplay::OnscnTimer.m_bDisabled = false;
|
||||||
CWorld::Players[0].m_pPed->m_pWanted->m_bIgnoredByCops = false;
|
CWorld::Players[0].m_pPed->m_pWanted->m_bIgnoredByCops = false;
|
||||||
@ -1851,7 +1792,7 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
|
|||||||
if (ped) { // great time to check
|
if (ped) { // great time to check
|
||||||
for (int i = 0; i < ped->m_numNearPeds; i++) {
|
for (int i = 0; i < ped->m_numNearPeds; i++) {
|
||||||
CPed* pTestedPed = ped->m_nearPeds[i];
|
CPed* pTestedPed = ped->m_nearPeds[i];
|
||||||
if (!pTestedPed || !IsPedPointerValid(pTestedPed))
|
if (!pTestedPed || !IsPedPointerValid(pTestedPed) || pTestedPed->bIsFrozen)
|
||||||
continue;
|
continue;
|
||||||
if (pTestedPed->m_pedInObjective == ped && pTestedPed->m_objective == OBJECTIVE_FOLLOW_CHAR_IN_FORMATION) {
|
if (pTestedPed->m_pedInObjective == ped && pTestedPed->m_objective == OBJECTIVE_FOLLOW_CHAR_IN_FORMATION) {
|
||||||
CVector vFollowerPos = pTestedPed->GetFormationPosition();
|
CVector vFollowerPos = pTestedPed->GetFormationPosition();
|
||||||
@ -1864,7 +1805,7 @@ int8 CRunningScript::ProcessCommands0To99(int32 command)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pTestedPed->m_leader == ped) {
|
else if (pTestedPed->m_leader == ped && !pTestedPed->bIsFrozen) {
|
||||||
CVector vFollowerPos;
|
CVector vFollowerPos;
|
||||||
if (pTestedPed->m_pedFormation)
|
if (pTestedPed->m_pedFormation)
|
||||||
vFollowerPos = pTestedPed->GetFormationPosition();
|
vFollowerPos = pTestedPed->GetFormationPosition();
|
||||||
@ -2551,6 +2492,9 @@ int8 CRunningScript::ProcessCommands100To199(int32 command)
|
|||||||
}
|
}
|
||||||
SET_INTEGER_PARAM(0, handle);
|
SET_INTEGER_PARAM(0, handle);
|
||||||
StoreParameters(&m_nIp, 1);
|
StoreParameters(&m_nIp, 1);
|
||||||
|
#ifdef GTA_NETWORK
|
||||||
|
// TODO(LCS): register car
|
||||||
|
#endif
|
||||||
if (m_bIsMissionScript)
|
if (m_bIsMissionScript)
|
||||||
CTheScripts::MissionCleanUp.AddEntityToList(handle, CLEANUP_CAR);
|
CTheScripts::MissionCleanUp.AddEntityToList(handle, CLEANUP_CAR);
|
||||||
return 0;
|
return 0;
|
||||||
@ -3128,6 +3072,8 @@ int8 CRunningScript::ProcessCommands200To299(int32 command)
|
|||||||
case COMMAND_DELETE_OBJECT:
|
case COMMAND_DELETE_OBJECT:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
|
if (GET_INTEGER_PARAM(0) > (NUMOBJECTS + 2) << 8)
|
||||||
|
return 0;
|
||||||
CObject* pObj = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
CObject* pObj = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0));
|
||||||
if (pObj){
|
if (pObj){
|
||||||
CWorld::Remove(pObj);
|
CWorld::Remove(pObj);
|
||||||
|
@ -104,7 +104,11 @@ int8 CRunningScript::ProcessCommands1600To1699(int32 command)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_IS_DEVELOPER:
|
case COMMAND_IS_DEVELOPER:
|
||||||
|
#ifdef GTA_NETWORK
|
||||||
|
UpdateCompareFlag(gDeveloperFlag || gIsMultiplayerGame);
|
||||||
|
#else
|
||||||
UpdateCompareFlag(gDeveloperFlag);
|
UpdateCompareFlag(gDeveloperFlag);
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_SET_DEVELOPER_FLAG:
|
case COMMAND_SET_DEVELOPER_FLAG:
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
|
@ -373,10 +373,19 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
|
|||||||
case COMMAND_IS_CAR_ARMED_WITH_ANY_BOMB:
|
case COMMAND_IS_CAR_ARMED_WITH_ANY_BOMB:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
||||||
script_assert(pCar);
|
script_assert(pVehicle);
|
||||||
script_assert(pCar->m_vehType == VEHICLE_TYPE_CAR);
|
#ifdef FIX_BUGS
|
||||||
|
if (pVehicle->IsCar())
|
||||||
|
UpdateCompareFlag(((CAutomobile*)pVehicle)->m_bombType != 0);
|
||||||
|
else if (pVehicle->IsBike())
|
||||||
|
UpdateCompareFlag(((CBike*)pVehicle)->m_bombType != 0);
|
||||||
|
else
|
||||||
|
UpdateCompareFlag(false);
|
||||||
|
#else
|
||||||
|
CAutomobile* pCar = (CVehicle*)pVehicle;
|
||||||
UpdateCompareFlag(pCar->m_bombType != 0); //TODO: enum
|
UpdateCompareFlag(pCar->m_bombType != 0); //TODO: enum
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_APPLY_BRAKES_TO_PLAYERS_CAR:
|
case COMMAND_APPLY_BRAKES_TO_PLAYERS_CAR:
|
||||||
@ -447,10 +456,19 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
|
|||||||
case COMMAND_IS_CAR_ARMED_WITH_BOMB:
|
case COMMAND_IS_CAR_ARMED_WITH_BOMB:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 2);
|
CollectParameters(&m_nIp, 2);
|
||||||
CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
CAutomobile* pVehicle = (CAutomobile*)CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
||||||
script_assert(pCar);
|
script_assert(pVehicle);
|
||||||
//script_assert(pCar->m_vehType == VEHICLE_TYPE_CAR);
|
#ifdef FIX_BUGS
|
||||||
UpdateCompareFlag(pCar->m_bombType == GET_INTEGER_PARAM(1));
|
if (pVehicle->IsCar())
|
||||||
|
UpdateCompareFlag(((CAutomobile*)pVehicle)->m_bombType == GET_INTEGER_PARAM(1));
|
||||||
|
else if (pVehicle->IsBike())
|
||||||
|
UpdateCompareFlag(((CBike*)pVehicle)->m_bombType == GET_INTEGER_PARAM(1));
|
||||||
|
else
|
||||||
|
UpdateCompareFlag(false);
|
||||||
|
#else
|
||||||
|
CAutomobile* pCar = (CVehicle*)pVehicle;
|
||||||
|
UpdateCompareFlag(pCar->m_bombType != 0); //TODO: enum
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_CHANGE_CAR_COLOUR:
|
case COMMAND_CHANGE_CAR_COLOUR:
|
||||||
@ -710,9 +728,19 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
|
|||||||
CollectParameters(&m_nIp, 2);
|
CollectParameters(&m_nIp, 2);
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
||||||
script_assert(pVehicle);
|
script_assert(pVehicle);
|
||||||
script_assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
|
#ifdef FIX_BUGS
|
||||||
|
if (pVehicle->IsCar()) {
|
||||||
((CAutomobile*)pVehicle)->m_bombType = GET_INTEGER_PARAM(1);
|
((CAutomobile*)pVehicle)->m_bombType = GET_INTEGER_PARAM(1);
|
||||||
((CAutomobile*)pVehicle)->m_pBombRigger = FindPlayerPed();
|
((CAutomobile*)pVehicle)->m_pBombRigger = FindPlayerPed();
|
||||||
|
}
|
||||||
|
else if (pVehicle->IsBike()) {
|
||||||
|
((CBike*)pVehicle)->m_bombType = GET_INTEGER_PARAM(1);
|
||||||
|
((CBike*)pVehicle)->m_pBombRigger = FindPlayerPed();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
((CAutomobile*)pVehicle)->m_bombType = GET_INTEGER_PARAM(1);
|
||||||
|
((CAutomobile*)pVehicle)->m_pBombRigger = FindPlayerPed();
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_SET_CHAR_PERSONALITY:
|
case COMMAND_SET_CHAR_PERSONALITY:
|
||||||
@ -776,7 +804,10 @@ int8 CRunningScript::ProcessCommands500To599(int32 command)
|
|||||||
int model = GET_INTEGER_PARAM(0);
|
int model = GET_INTEGER_PARAM(0);
|
||||||
if (model < 0)
|
if (model < 0)
|
||||||
model = CTheScripts::UsedObjectArray[-model].index;
|
model = CTheScripts::UsedObjectArray[-model].index;
|
||||||
|
if (m_bIsMissionScript)
|
||||||
CStreaming::SetMissionDoesntRequireModel(model);
|
CStreaming::SetMissionDoesntRequireModel(model);
|
||||||
|
else
|
||||||
|
CStreaming::SetAmbientMissionDoesntRequireModel(model);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_GRAB_PHONE:
|
case COMMAND_GRAB_PHONE:
|
||||||
@ -1243,8 +1274,8 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
|
|||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
if (m_bIsMissionScript)
|
if (m_bIsMissionScript)
|
||||||
CStreaming::SetMissionDoesntRequireSpecialChar(GET_INTEGER_PARAM(0) - 1);
|
CStreaming::SetMissionDoesntRequireSpecialChar(GET_INTEGER_PARAM(0) - 1);
|
||||||
//else
|
else
|
||||||
// CStreaming::SetAmbientMissionDoesntRequireSpecialChar(GET_INTEGER_PARAM(0) - 1); // TODO
|
CStreaming::SetAmbientMissionDoesntRequireSpecialChar(GET_INTEGER_PARAM(0) - 1);
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_RESET_NUM_OF_MODELS_KILLED_BY_PLAYER:
|
case COMMAND_RESET_NUM_OF_MODELS_KILLED_BY_PLAYER:
|
||||||
CDarkel::ResetModelsKilledByPlayer();
|
CDarkel::ResetModelsKilledByPlayer();
|
||||||
@ -1393,7 +1424,7 @@ int8 CRunningScript::ProcessCommands600To699(int32 command)
|
|||||||
if (GET_INTEGER_PARAM(0) != 0)
|
if (GET_INTEGER_PARAM(0) != 0)
|
||||||
TheCamera.SetWideScreenOn();
|
TheCamera.SetWideScreenOn();
|
||||||
else {
|
else {
|
||||||
// TODO: unknown field
|
// TODO(LCS): unknown field
|
||||||
TheCamera.SetWideScreenOff();
|
TheCamera.SetWideScreenOff();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -1944,7 +1975,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
|
|||||||
if (pos.z <= MAP_Z_LOW_LIMIT)
|
if (pos.z <= MAP_Z_LOW_LIMIT)
|
||||||
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
|
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
|
||||||
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
||||||
SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_MONEY, PICKUP_MONEY, GET_INTEGER_PARAM(3))); // MI_MONEY -> gpModelIndices[...]
|
SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_MONEY, PICKUP_MONEY, GET_INTEGER_PARAM(3)));
|
||||||
StoreParameters(&m_nIp, 1);
|
StoreParameters(&m_nIp, 1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1953,7 +1984,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
|
|||||||
CollectParameters(&m_nIp, 2);
|
CollectParameters(&m_nIp, 2);
|
||||||
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
CPed* pPed = CPools::GetPedPool()->GetAt(GET_INTEGER_PARAM(0));
|
||||||
script_assert(pPed);
|
script_assert(pPed);
|
||||||
pPed->m_wepAccuracy = GET_INTEGER_PARAM(1) * 1.25f;
|
pPed->m_wepAccuracy = Min(100, GET_INTEGER_PARAM(1) * 1.25f);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_GET_CAR_SPEED:
|
case COMMAND_GET_CAR_SPEED:
|
||||||
@ -1969,7 +2000,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
|
|||||||
{
|
{
|
||||||
char name[KEY_LENGTH_IN_SCRIPT];
|
char name[KEY_LENGTH_IN_SCRIPT];
|
||||||
strncpy(name, (const char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
|
strncpy(name, (const char*)&CTheScripts::ScriptSpace[m_nIp], KEY_LENGTH_IN_SCRIPT);
|
||||||
// unknown call FUN_29df68(name) on PS2
|
// unknown call FUN_29df68(name) on PS2 - not on PSP
|
||||||
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
||||||
CColStore::RemoveAllCollision();
|
CColStore::RemoveAllCollision();
|
||||||
CCutsceneMgr::LoadCutsceneData(name);
|
CCutsceneMgr::LoadCutsceneData(name);
|
||||||
@ -2010,7 +2041,7 @@ int8 CRunningScript::ProcessCommands700To799(int32 command)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_CLEAR_CUTSCENE:
|
case COMMAND_CLEAR_CUTSCENE:
|
||||||
// unknown call on PS2 FUN_29DFA0();
|
// unknown call on PS2 FUN_29DFA0() - not on PSP
|
||||||
printf("clear cutscene\n");
|
printf("clear cutscene\n");
|
||||||
CCutsceneMgr::DeleteCutsceneData();
|
CCutsceneMgr::DeleteCutsceneData();
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -789,7 +789,22 @@ int8 CRunningScript::ProcessCommands800To899(int32 command)
|
|||||||
pPed->m_pMyVehicle->RemovePassenger(pPed);
|
pPed->m_pMyVehicle->RemovePassenger(pPed);
|
||||||
}
|
}
|
||||||
if (pPed->m_vehDoor) {
|
if (pPed->m_vehDoor) {
|
||||||
if (pPed->GetPedState() == PED_EXIT_CAR || pPed->GetPedState() == PED_DRAG_FROM_CAR) {
|
eDoors door;
|
||||||
|
switch (pPed->m_vehDoor) {
|
||||||
|
case CAR_DOOR_LF:
|
||||||
|
door = DOOR_FRONT_LEFT;
|
||||||
|
break;
|
||||||
|
case CAR_DOOR_RF:
|
||||||
|
door = DOOR_FRONT_RIGHT;
|
||||||
|
break;
|
||||||
|
case CAR_DOOR_LR:
|
||||||
|
door = DOOR_REAR_LEFT;
|
||||||
|
break;
|
||||||
|
case CAR_DOOR_RR:
|
||||||
|
door = DOOR_REAR_RIGHT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (pPed->GetPedState() == PED_EXIT_CAR || pPed->GetPedState() == PED_DRAG_FROM_CAR || !pPed->m_pMyVehicle->IsDoorClosed(door)) {
|
||||||
uint8 flags = 0;
|
uint8 flags = 0;
|
||||||
if (pPed->m_pMyVehicle->IsBike()) {
|
if (pPed->m_pMyVehicle->IsBike()) {
|
||||||
if (pPed->m_vehDoor == CAR_DOOR_LF ||
|
if (pPed->m_vehDoor == CAR_DOOR_LF ||
|
||||||
@ -1397,7 +1412,9 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
|
|||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND);
|
DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND);
|
||||||
DMAudio.PlayFrontEndTrack(GET_INTEGER_PARAM(0) + STREAMED_SOUND_MISSION_COMPLETED - 1, FALSE);
|
DMAudio.PlayFrontEndTrack(GET_INTEGER_PARAM(0) + STREAMED_SOUND_MISSION_COMPLETED - 1, FALSE);
|
||||||
|
#ifndef GTA_PSP
|
||||||
//DMAudio.SaveAnnouncementsWhenMissionPassedPlayed(); // TODO!
|
//DMAudio.SaveAnnouncementsWhenMissionPassedPlayed(); // TODO!
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_CLEAR_AREA:
|
case COMMAND_CLEAR_AREA:
|
||||||
@ -1407,6 +1424,9 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
|
|||||||
if (pos.z <= MAP_Z_LOW_LIMIT)
|
if (pos.z <= MAP_Z_LOW_LIMIT)
|
||||||
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
|
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
|
||||||
CWorld::ClearExcitingStuffFromArea(pos, GET_FLOAT_PARAM(3), GET_INTEGER_PARAM(4));
|
CWorld::ClearExcitingStuffFromArea(pos, GET_FLOAT_PARAM(3), GET_INTEGER_PARAM(4));
|
||||||
|
#ifdef GTA_MOBILE
|
||||||
|
// CPopulation::ms_blockPedCreationForAFrame = true;
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_FREEZE_ONSCREEN_TIMER:
|
case COMMAND_FREEZE_ONSCREEN_TIMER:
|
||||||
@ -1471,7 +1491,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
|
|||||||
float size = Max(0.0f, GET_FLOAT_PARAM(7));
|
float size = Max(0.0f, GET_FLOAT_PARAM(7));
|
||||||
eParticleObjectType type = (eParticleObjectType)GET_INTEGER_PARAM(0);
|
eParticleObjectType type = (eParticleObjectType)GET_INTEGER_PARAM(0);
|
||||||
RwRGBA color;
|
RwRGBA color;
|
||||||
if (type == POBJECT_SMOKE_TRAIL){ // 17 in LCS -- assuming enum is the same
|
if (type == POBJECT_SMOKE_TRAIL){
|
||||||
color.alpha = -1;
|
color.alpha = -1;
|
||||||
color.red = GET_INTEGER_PARAM(8);
|
color.red = GET_INTEGER_PARAM(8);
|
||||||
color.green = GET_INTEGER_PARAM(9);
|
color.green = GET_INTEGER_PARAM(9);
|
||||||
@ -1790,8 +1810,6 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
|
|||||||
continue;
|
continue;
|
||||||
if (CModelInfo::IsCarModel(model) || CModelInfo::IsBikeModel(model)) {
|
if (CModelInfo::IsCarModel(model) || CModelInfo::IsBikeModel(model)) {
|
||||||
switch (model) {
|
switch (model) {
|
||||||
// TODO(LCS): do it right
|
|
||||||
// apparently leeds didn't :lmao:
|
|
||||||
case MI_LANDSTAL:
|
case MI_LANDSTAL:
|
||||||
case MI_LINERUN:
|
case MI_LINERUN:
|
||||||
case MI_RIO:
|
case MI_RIO:
|
||||||
@ -1804,6 +1822,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
|
|||||||
case MI_FBICAR:
|
case MI_FBICAR:
|
||||||
case MI_MRWHOOP:
|
case MI_MRWHOOP:
|
||||||
case MI_BFINJECT:
|
case MI_BFINJECT:
|
||||||
|
case MI_HEARSE:
|
||||||
case MI_HUNTER:
|
case MI_HUNTER:
|
||||||
case MI_POLICE:
|
case MI_POLICE:
|
||||||
case MI_ENFORCER:
|
case MI_ENFORCER:
|
||||||
@ -1817,13 +1836,15 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
|
|||||||
case MI_ANGEL:
|
case MI_ANGEL:
|
||||||
case MI_COACH:
|
case MI_COACH:
|
||||||
case MI_RCBANDIT:
|
case MI_RCBANDIT:
|
||||||
//case MI_ROMERO:
|
case MI_PACKER:
|
||||||
//case MI_PACKER:
|
case MI_SENTXS:
|
||||||
//case MI_SENTXS:
|
|
||||||
case MI_SQUALO:
|
case MI_SQUALO:
|
||||||
case MI_SEASPAR:
|
case MI_SEASPAR:
|
||||||
case MI_PIZZABOY:
|
case MI_PIZZABOY:
|
||||||
//case MI_GANGBUR:
|
case MI_NOODLEBOY:
|
||||||
|
case MI_ANGEL2:
|
||||||
|
case MI_SANCHEZ2:
|
||||||
|
case MI_GANGBUR:
|
||||||
case MI_AIRTRAIN:
|
case MI_AIRTRAIN:
|
||||||
case MI_DEADDODO:
|
case MI_DEADDODO:
|
||||||
case MI_SPEEDER:
|
case MI_SPEEDER:
|
||||||
@ -1832,45 +1853,49 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
|
|||||||
case MI_FLATBED:
|
case MI_FLATBED:
|
||||||
case MI_YANKEE:
|
case MI_YANKEE:
|
||||||
case MI_CADDY:
|
case MI_CADDY:
|
||||||
//case MI_ZEBRA:
|
case MI_BORGNINE:
|
||||||
case MI_TOPFUN:
|
case MI_TOPFUN:
|
||||||
|
case MI_CAMPVAN:
|
||||||
|
case MI_BALLOT:
|
||||||
case MI_SKIMMER:
|
case MI_SKIMMER:
|
||||||
case MI_RCBARON:
|
case MI_RCBARON:
|
||||||
case MI_RCRAIDER:
|
case MI_RCRAIDER:
|
||||||
case MI_SPARROW:
|
case MI_SPARROW:
|
||||||
case MI_PATRIOT:
|
case MI_PATRIOT:
|
||||||
//case MI_LOVEFIST:
|
case MI_LOVEFIST:
|
||||||
case MI_COASTG:
|
case MI_COASTG:
|
||||||
case MI_DINGHY:
|
case MI_DINGHY:
|
||||||
//case MI_HERMES:
|
case MI_HERMES:
|
||||||
//case MI_SABRETUR:
|
case MI_SABRETUR:
|
||||||
case MI_PHEONIX:
|
case MI_PHEONIX:
|
||||||
//case MI_WALTON:
|
case MI_WALTON:
|
||||||
case MI_COMET:
|
case MI_COMET:
|
||||||
//case MI_DELUXO:
|
case MI_DELUXO:
|
||||||
//case MI_BURRITO:
|
case MI_BURRITO:
|
||||||
//case MI_SPAND:
|
case MI_SPAND:
|
||||||
case MI_MARQUIS:
|
case MI_MARQUIS:
|
||||||
case MI_BAGGAGE:
|
case MI_BAGGAGE:
|
||||||
//case MI_KAUFMAN:
|
case MI_KAUFMAN:
|
||||||
case MI_MAVERICK:
|
case MI_MAVERICK:
|
||||||
case MI_VCNMAV:
|
case MI_VCNMAV:
|
||||||
//case MI_RANCHER:
|
case MI_RANCHER:
|
||||||
case MI_FBIRANCH:
|
case MI_FBIRANCH:
|
||||||
case MI_JETMAX:
|
case MI_JETMAX:
|
||||||
//case MI_HOTRING:
|
case MI_HOTRING:
|
||||||
case MI_SANDKING:
|
case MI_SANDKING:
|
||||||
//case MI_BLISTAC:
|
case MI_BLISTAC:
|
||||||
case MI_POLMAV:
|
case MI_POLMAV:
|
||||||
//case MI_BOXVILLE:
|
case MI_BOXVILLE:
|
||||||
//case MI_BENSON:
|
case MI_BENSON:
|
||||||
//case MI_MESA:
|
case MI_MESA:
|
||||||
case MI_RCGOBLIN:
|
case MI_RCGOBLIN:
|
||||||
//case MI_HOTRINA:
|
case MI_HOTRINA:
|
||||||
//case MI_HOTRINB:
|
case MI_HOTRINB:
|
||||||
//case MI_BLOODRA:
|
case MI_BLOODRA:
|
||||||
//case MI_BLOODRB:
|
case MI_BLOODRB:
|
||||||
case MI_VICECHEE:
|
case MI_VICECHEE:
|
||||||
|
case MI_CABBIE:
|
||||||
|
case MI_MAFIA:
|
||||||
model = -1;
|
model = -1;
|
||||||
break;
|
break;
|
||||||
case MI_IDAHO:
|
case MI_IDAHO:
|
||||||
@ -1884,23 +1909,22 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
|
|||||||
case MI_MOONBEAM:
|
case MI_MOONBEAM:
|
||||||
case MI_ESPERANT:
|
case MI_ESPERANT:
|
||||||
case MI_TAXI:
|
case MI_TAXI:
|
||||||
//case MI_WASHING:
|
case MI_WASHING:
|
||||||
case MI_BOBCAT:
|
case MI_BOBCAT:
|
||||||
case MI_BANSHEE:
|
case MI_BANSHEE:
|
||||||
//case MI_CABBIE:
|
|
||||||
case MI_STALLION:
|
case MI_STALLION:
|
||||||
case MI_RUMPO:
|
case MI_RUMPO:
|
||||||
//case MI_ADMIRAL:
|
case MI_ADMIRAL:
|
||||||
case MI_PCJ600:
|
case MI_PCJ600:
|
||||||
case MI_FAGGIO:
|
case MI_FAGGIO:
|
||||||
case MI_FREEWAY:
|
case MI_FREEWAY:
|
||||||
//case MI_GLENDALE:
|
case MI_GLENDALE:
|
||||||
//case MI_OCEANIC:
|
case MI_OCEANIC:
|
||||||
case MI_SANCHEZ:
|
case MI_SANCHEZ:
|
||||||
//case MI_SABRE:
|
case MI_SABRE:
|
||||||
//case MI_REGINA:
|
case MI_REGINA:
|
||||||
//case MI_VIRGO:
|
case MI_VIRGO:
|
||||||
//case MI_GREENWOO:
|
case MI_GREENWOO:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printf("CREATE_RANDOM_CAR_FOR_CAR_PARK - Unknown car model %d\n", CStreaming::ms_vehiclesLoaded[index]);
|
printf("CREATE_RANDOM_CAR_FOR_CAR_PARK - Unknown car model %d\n", CStreaming::ms_vehiclesLoaded[index]);
|
||||||
@ -1973,7 +1997,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
|
|||||||
#else
|
#else
|
||||||
CTimer::Stop();
|
CTimer::Stop();
|
||||||
#endif
|
#endif
|
||||||
CStreaming::LoadScene(pos);
|
CStreaming::LoadSceneCollision(pos);
|
||||||
#ifdef FIX_BUGS
|
#ifdef FIX_BUGS
|
||||||
CTimer::Suspend();
|
CTimer::Suspend();
|
||||||
#else
|
#else
|
||||||
|
@ -2476,7 +2476,7 @@ void CTheScripts::HighlightImportantArea(uint32 id, float x1, float y1, float x2
|
|||||||
center.x = (infX + supX) / 2;
|
center.x = (infX + supX) / 2;
|
||||||
center.y = (infY + supY) / 2;
|
center.y = (infY + supY) / 2;
|
||||||
center.z = (z <= MAP_Z_LOW_LIMIT) ? CWorld::FindGroundZForCoord(center.x, center.y) : z;
|
center.z = (z <= MAP_Z_LOW_LIMIT) ? CWorld::FindGroundZForCoord(center.x, center.y) : z;
|
||||||
CShadows::RenderIndicatorShadow(id, 2, gpGoalTex, ¢er, supX - center.x, 0.0f, 0.0f, center.y - supY, 0);
|
CShadows::RenderIndicatorShadow(id, 2, nil, ¢er, supX - center.x, 0.0f, 0.0f, center.y - supY, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTheScripts::HighlightImportantAngledArea(uint32 id, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, float z)
|
void CTheScripts::HighlightImportantAngledArea(uint32 id, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, float z)
|
||||||
@ -2670,7 +2670,10 @@ void CTheScripts::SetObjectiveForAllPedsInCollective(int colIndex, eObjective ob
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
pPed->bScriptObjectiveCompleted = false;
|
pPed->bScriptObjectiveCompleted = false;
|
||||||
|
if (objective == OBJECTIVE_LEAVE_CAR)
|
||||||
pPed->SetObjective(objective);
|
pPed->SetObjective(objective);
|
||||||
|
else
|
||||||
|
pPed->SetObjective(objective, pPed->m_pMyVehicle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2766,7 +2769,7 @@ void CTheScripts::CleanUpThisPed(CPed* pPed)
|
|||||||
flees = true;
|
flees = true;
|
||||||
}
|
}
|
||||||
pPed->ClearObjective();
|
pPed->ClearObjective();
|
||||||
pPed->SetWaitState(WAITSTATE_FALSE, nil); // third parameter is 0 TODO?
|
pPed->SetWaitState(WAITSTATE_FALSE, nil);
|
||||||
pPed->bRespondsToThreats = true;
|
pPed->bRespondsToThreats = true;
|
||||||
pPed->bScriptObjectiveCompleted = false;
|
pPed->bScriptObjectiveCompleted = false;
|
||||||
pPed->bKindaStayInSamePlace = false;
|
pPed->bKindaStayInSamePlace = false;
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include "CarAI.h"
|
#include "CarAI.h"
|
||||||
#include "Pickups.h"
|
#include "Pickups.h"
|
||||||
#include "Fluff.h"
|
#include "Fluff.h"
|
||||||
|
#include "CustomSoundTrack.h"
|
||||||
|
|
||||||
// LCS: file done except TODOs
|
// LCS: file done except TODOs
|
||||||
|
|
||||||
@ -109,9 +110,12 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
|
|||||||
CollectParameters(&m_nIp, 2);
|
CollectParameters(&m_nIp, 2);
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
||||||
script_assert(pVehicle);
|
script_assert(pVehicle);
|
||||||
script_assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
|
//assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
|
||||||
CAutomobile* pCar = (CAutomobile*)pVehicle;
|
// they call this for bikes again, we don't really want to destroy the structure...
|
||||||
pCar->bNotDamagedUpsideDown = (GET_INTEGER_PARAM(1) != 0);
|
#ifdef FIX_BUGS
|
||||||
|
if (pVehicle->m_vehType == VEHICLE_TYPE_CAR)
|
||||||
|
#endif
|
||||||
|
((CAutomobile*)pVehicle)->bNotDamagedUpsideDown = (GET_INTEGER_PARAM(1) != 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_CAN_PLAYER_START_MISSION:
|
case COMMAND_CAN_PLAYER_START_MISSION:
|
||||||
@ -400,7 +404,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
|
|||||||
if (size <= 0)
|
if (size <= 0)
|
||||||
size = CTheScripts::LargestMissionScriptSize;
|
size = CTheScripts::LargestMissionScriptSize;
|
||||||
CFileMgr::Seek(gScriptsFile, offset, 0);
|
CFileMgr::Seek(gScriptsFile, offset, 0);
|
||||||
CFileMgr::Read(gScriptsFile, (const char*)&CTheScripts::ScriptSpace[CTheScripts::MainScriptSize], size); // TODO
|
CFileMgr::Read(gScriptsFile, (const char*)&CTheScripts::ScriptSpace[CTheScripts::MainScriptSize], size);
|
||||||
CRunningScript* pMissionScript = CTheScripts::StartNewScript(CTheScripts::MainScriptSize);
|
CRunningScript* pMissionScript = CTheScripts::StartNewScript(CTheScripts::MainScriptSize);
|
||||||
CTimer::Resume();
|
CTimer::Resume();
|
||||||
pMissionScript->m_bIsMissionScript = true;
|
pMissionScript->m_bIsMissionScript = true;
|
||||||
@ -468,7 +472,7 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command)
|
|||||||
return 0;
|
return 0;
|
||||||
case COMMAND_SET_RADIO_CHANNEL:
|
case COMMAND_SET_RADIO_CHANNEL:
|
||||||
CollectParameters(&m_nIp, 2);
|
CollectParameters(&m_nIp, 2);
|
||||||
// if (base::cSingleton<cCustomSoundTrack>::Instance()->unk()) - TODO on PS2, but it's not on mobile
|
if (!cCustomSoundTrack::Instance()->IsPlaying())
|
||||||
DMAudio.SetRadioChannel(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
DMAudio.SetRadioChannel(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1));
|
||||||
return 0;
|
return 0;
|
||||||
/*
|
/*
|
||||||
@ -1781,6 +1785,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
|
|||||||
StoreParameters(&m_nIp, 1);
|
StoreParameters(&m_nIp, 1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
case COMMAND_IS_CHAR_IN_ANY_BOAT:
|
case COMMAND_IS_CHAR_IN_ANY_BOAT:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
@ -1789,6 +1794,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
|
|||||||
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_BOAT);
|
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_BOAT);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
case COMMAND_IS_PLAYER_IN_ANY_BOAT:
|
case COMMAND_IS_PLAYER_IN_ANY_BOAT:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
@ -1797,6 +1803,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
|
|||||||
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_BOAT);
|
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_BOAT);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
case COMMAND_IS_CHAR_IN_ANY_HELI:
|
case COMMAND_IS_CHAR_IN_ANY_HELI:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
@ -1805,6 +1812,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
|
|||||||
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI);
|
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
case COMMAND_IS_PLAYER_IN_ANY_HELI:
|
case COMMAND_IS_PLAYER_IN_ANY_HELI:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
@ -1813,6 +1821,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
|
|||||||
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI);
|
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_HELI);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
case COMMAND_IS_CHAR_IN_ANY_PLANE:
|
case COMMAND_IS_CHAR_IN_ANY_PLANE:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
@ -1821,6 +1830,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
|
|||||||
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_PLANE);
|
UpdateCompareFlag(pPed->bInVehicle && pPed->m_pMyVehicle->GetVehicleAppearance() == VEHICLE_APPEARANCE_PLANE);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
case COMMAND_IS_PLAYER_IN_ANY_PLANE:
|
case COMMAND_IS_PLAYER_IN_ANY_PLANE:
|
||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
|
@ -373,6 +373,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
|
|||||||
}
|
}
|
||||||
case COMMAND_HAS_PHOTOGRAPH_BEEN_TAKEN:
|
case COMMAND_HAS_PHOTOGRAPH_BEEN_TAKEN:
|
||||||
UpdateCompareFlag(CWeapon::bPhotographHasBeenTaken);
|
UpdateCompareFlag(CWeapon::bPhotographHasBeenTaken);
|
||||||
|
CWeapon::bPhotographHasBeenTaken = false;
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_GET_CHAR_ARMOUR:
|
case COMMAND_GET_CHAR_ARMOUR:
|
||||||
{
|
{
|
||||||
@ -508,7 +509,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
|
|||||||
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
|
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
|
||||||
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
||||||
CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex(key));
|
CStreaming::RemoveAnim(CAnimManager::GetAnimationBlockIndex(key));
|
||||||
// + empty function on PS2
|
// + empty function on PS2 (not PSP)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_IS_CHAR_WAITING_FOR_WORLD_COLLISION:
|
case COMMAND_IS_CHAR_WAITING_FOR_WORLD_COLLISION:
|
||||||
@ -636,11 +637,8 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
|
|||||||
SET_INTEGER_PARAM(1, 0);
|
SET_INTEGER_PARAM(1, 0);
|
||||||
else if (GET_INTEGER_PARAM(1) == 3)
|
else if (GET_INTEGER_PARAM(1) == 3)
|
||||||
SET_INTEGER_PARAM(1, 1);
|
SET_INTEGER_PARAM(1, 1);
|
||||||
pVehicle->BurstTyre(GET_INTEGER_PARAM(1), true);
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
pVehicle->BurstTyre(GET_INTEGER_PARAM(1), true);
|
pVehicle->BurstTyre(GET_INTEGER_PARAM(1), true);
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_IS_CHAR_OBJ_NO_OBJ:
|
case COMMAND_IS_CHAR_OBJ_NO_OBJ:
|
||||||
@ -812,7 +810,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
|
|||||||
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
||||||
// TheText.Get(key);
|
// TheText.Get(key);
|
||||||
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
||||||
SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY, PICKUP_PROPERTY_LOCKED, 0, 0, false, key)); // TODO: gpModelIndices
|
SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY, PICKUP_PROPERTY_LOCKED, 0, 0, false, key));
|
||||||
StoreParameters(&m_nIp, 1);
|
StoreParameters(&m_nIp, 1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -825,9 +823,9 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
|
|||||||
char key[KEY_LENGTH_IN_SCRIPT];
|
char key[KEY_LENGTH_IN_SCRIPT];
|
||||||
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
|
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
|
||||||
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
m_nIp += KEY_LENGTH_IN_SCRIPT;
|
||||||
// TheText.Get(key);
|
TheText.Get(key);
|
||||||
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
||||||
SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY_FORSALE, PICKUP_PROPERTY_FORSALE, GET_INTEGER_PARAM(3), 0, false, key)); // TODO: gpModelIndices
|
SET_INTEGER_PARAM(0, CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY_FORSALE, PICKUP_PROPERTY_FORSALE, GET_INTEGER_PARAM(3), 0, false, key));
|
||||||
StoreParameters(&m_nIp, 1);
|
StoreParameters(&m_nIp, 1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include "Script.h"
|
#include "Script.h"
|
||||||
#include "ScriptCommands.h"
|
#include "ScriptCommands.h"
|
||||||
|
|
||||||
|
#include "Bike.h"
|
||||||
#include "DMAudio.h"
|
#include "DMAudio.h"
|
||||||
#ifdef MORE_LANGUAGES
|
#ifdef MORE_LANGUAGES
|
||||||
#include "Frontend.h"
|
#include "Frontend.h"
|
||||||
@ -378,10 +379,20 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
|
|||||||
{
|
{
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(GET_INTEGER_PARAM(0));
|
||||||
if (pVehicle->m_bombType != CARBOMB_NONE) {
|
if (pVehicle->IsCar()) {
|
||||||
pVehicle->m_bombType = CARBOMB_NONE;
|
if (((CAutomobile*)pVehicle)->m_bombType != CARBOMB_NONE) {
|
||||||
pVehicle->m_pBombRigger = nil;
|
((CAutomobile*)pVehicle)->m_bombType = CARBOMB_NONE;
|
||||||
|
((CAutomobile*)pVehicle)->m_pBombRigger = nil;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
#ifdef FIX_BUGS
|
||||||
|
else if (pVehicle->IsBike()) {
|
||||||
|
if (((CBike*)pVehicle)->m_bombType != CARBOMB_NONE) {
|
||||||
|
((CBike*)pVehicle)->m_bombType = CARBOMB_NONE;
|
||||||
|
((CBike*)pVehicle)->m_pBombRigger = nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case COMMAND_IS_JAPANESE_GAME:
|
case COMMAND_IS_JAPANESE_GAME:
|
||||||
@ -596,7 +607,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
|
|||||||
}
|
}
|
||||||
case COMMAND_SET_RC_HELI_HEIGHT_LIMIT:
|
case COMMAND_SET_RC_HELI_HEIGHT_LIMIT:
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
// CVehicle::rcHeliHeightLimit = GET_FLOAT_PARAM(0); // TODO
|
CVehicle::rcHeliHeightLimit = GET_FLOAT_PARAM(0);
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_CREATE_SCRIPT_CORONA:
|
case COMMAND_CREATE_SCRIPT_CORONA:
|
||||||
{
|
{
|
||||||
@ -700,7 +711,7 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
|
|||||||
//case COMMAND_1491:
|
//case COMMAND_1491:
|
||||||
case COMMAND_SET_DEBUG_MENU_ACTIVE:
|
case COMMAND_SET_DEBUG_MENU_ACTIVE:
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
// this sets two values on PS2, but not on mobile - TODO?
|
// this sets two values on PS2 and PSP, but not on mobile - TODO?
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_SET_DRAW_HUD:
|
case COMMAND_SET_DRAW_HUD:
|
||||||
CollectParameters(&m_nIp, 1);
|
CollectParameters(&m_nIp, 1);
|
||||||
|
@ -594,13 +594,18 @@ int8 CRunningScript::ProcessCommands1500To1599(int32 command)
|
|||||||
// base::cWorldGeom::GetInstance()->StoreBuildingSwap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3) != 0);
|
// base::cWorldGeom::GetInstance()->StoreBuildingSwap(GET_INTEGER_PARAM(0), GET_INTEGER_PARAM(1), GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3) != 0);
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_IS_MULTIPLAYER_ACTIVE:
|
case COMMAND_IS_MULTIPLAYER_ACTIVE:
|
||||||
UpdateCompareFlag(false); // TODO?
|
#ifdef GTA_NETWORK
|
||||||
|
UpdateCompareFlag(gIsMultiplayerGame);
|
||||||
|
#else
|
||||||
|
UpdateCompareFlag(false);
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_GET_MULTIPLAYER_MODE:
|
case COMMAND_GET_MULTIPLAYER_MODE:
|
||||||
SET_INTEGER_PARAM(0, 0); // TODO
|
SET_INTEGER_PARAM(0, 0); // TODO
|
||||||
StoreParameters(&m_nIp, 1);
|
StoreParameters(&m_nIp, 1);
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_MULTIPLAYER_SCRIPT_DONE:
|
case COMMAND_MULTIPLAYER_SCRIPT_DONE:
|
||||||
|
printf("COMMAND_MULTIPLAYER_SCRIPT_DONE\n");
|
||||||
//gbStartingScriptsFromLua = false; TODO?
|
//gbStartingScriptsFromLua = false; TODO?
|
||||||
return 0;
|
return 0;
|
||||||
case COMMAND_IS_MULTIPLAYER_SERVER:
|
case COMMAND_IS_MULTIPLAYER_SERVER:
|
||||||
|
@ -1083,6 +1083,12 @@ CStreaming::SetMissionDoesntRequireSpecialChar(int32 id)
|
|||||||
return SetMissionDoesntRequireModel(id + MI_SPECIAL01);
|
return SetMissionDoesntRequireModel(id + MI_SPECIAL01);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CStreaming::SetAmbientMissionDoesntRequireSpecialChar(int32 id)
|
||||||
|
{
|
||||||
|
return SetAmbientMissionDoesntRequireModel(id + MI_SPECIAL01);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CStreaming::DecrementRef(int32 id)
|
CStreaming::DecrementRef(int32 id)
|
||||||
{
|
{
|
||||||
@ -1625,9 +1631,26 @@ CStreaming::SetModelTxdIsDeletable(int32 id)
|
|||||||
void
|
void
|
||||||
CStreaming::SetMissionDoesntRequireModel(int32 id)
|
CStreaming::SetMissionDoesntRequireModel(int32 id)
|
||||||
{
|
{
|
||||||
|
if (ms_aInfoForModel[id].m_flags & STREAMFLAGS_SCRIPTOWNED)
|
||||||
|
printf("SETTING MISSION DOESN'T REQUIRE MODEL %i\n", id);
|
||||||
ms_aInfoForModel[id].m_flags &= ~STREAMFLAGS_SCRIPTOWNED;
|
ms_aInfoForModel[id].m_flags &= ~STREAMFLAGS_SCRIPTOWNED;
|
||||||
if ((id >= STREAM_OFFSET_TXD || CModelInfo::GetModelInfo(id)->GetModelType() != MITYPE_VEHICLE) &&
|
if ((id >= STREAM_OFFSET_TXD || CModelInfo::GetModelInfo(id)->GetModelType() != MITYPE_VEHICLE) &&
|
||||||
(ms_aInfoForModel[id].m_flags & STREAMFLAGS_DONT_REMOVE) == 0){
|
(ms_aInfoForModel[id].m_flags & (STREAMFLAGS_DONT_REMOVE|STREAMFLAGS_AMBIENT_SCRIPT_OWNED)) == 0){
|
||||||
|
if(ms_aInfoForModel[id].m_loadState != STREAMSTATE_LOADED)
|
||||||
|
RemoveModel(id);
|
||||||
|
else if(ms_aInfoForModel[id].m_next == nil)
|
||||||
|
ms_aInfoForModel[id].AddToList(&ms_startLoadedList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CStreaming::SetAmbientMissionDoesntRequireModel(int32 id)
|
||||||
|
{
|
||||||
|
if (ms_aInfoForModel[id].m_flags & STREAMFLAGS_AMBIENT_SCRIPT_OWNED)
|
||||||
|
printf("SETTING AMBIENT MISSION DOESN'T REQUIRE MODEL %i\n", id);
|
||||||
|
ms_aInfoForModel[id].m_flags &= ~STREAMFLAGS_AMBIENT_SCRIPT_OWNED;
|
||||||
|
if ((id >= STREAM_OFFSET_TXD || CModelInfo::GetModelInfo(id)->GetModelType() != MITYPE_VEHICLE) &&
|
||||||
|
(ms_aInfoForModel[id].m_flags & (STREAMFLAGS_DONT_REMOVE|STREAMFLAGS_SCRIPTOWNED)) == 0) {
|
||||||
if (ms_aInfoForModel[id].m_loadState != STREAMSTATE_LOADED)
|
if (ms_aInfoForModel[id].m_loadState != STREAMSTATE_LOADED)
|
||||||
RemoveModel(id);
|
RemoveModel(id);
|
||||||
else if (ms_aInfoForModel[id].m_next == nil)
|
else if (ms_aInfoForModel[id].m_next == nil)
|
||||||
|
@ -151,6 +151,7 @@ public:
|
|||||||
static void RequestSpecialChar(int32 charId, const char *modelName, int32 flags);
|
static void RequestSpecialChar(int32 charId, const char *modelName, int32 flags);
|
||||||
static bool HasSpecialCharLoaded(int32 id);
|
static bool HasSpecialCharLoaded(int32 id);
|
||||||
static void SetMissionDoesntRequireSpecialChar(int32 id);
|
static void SetMissionDoesntRequireSpecialChar(int32 id);
|
||||||
|
static void SetAmbientMissionDoesntRequireSpecialChar(int32 id);
|
||||||
static void DecrementRef(int32 id);
|
static void DecrementRef(int32 id);
|
||||||
static void RemoveModel(int32 id);
|
static void RemoveModel(int32 id);
|
||||||
static void RemoveTxd(int32 id) { RemoveModel(id + STREAM_OFFSET_TXD); }
|
static void RemoveTxd(int32 id) { RemoveModel(id + STREAM_OFFSET_TXD); }
|
||||||
@ -175,6 +176,7 @@ public:
|
|||||||
static void SetModelIsDeletable(int32 id);
|
static void SetModelIsDeletable(int32 id);
|
||||||
static void SetModelTxdIsDeletable(int32 id);
|
static void SetModelTxdIsDeletable(int32 id);
|
||||||
static void SetMissionDoesntRequireModel(int32 id);
|
static void SetMissionDoesntRequireModel(int32 id);
|
||||||
|
static void SetAmbientMissionDoesntRequireModel(int32 id);
|
||||||
static void LoadInitialPeds(void);
|
static void LoadInitialPeds(void);
|
||||||
static void LoadInitialWeapons(void);
|
static void LoadInitialWeapons(void);
|
||||||
static void LoadInitialVehicles(void);
|
static void LoadInitialVehicles(void);
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
#include "Bike.h"
|
||||||
#include "Camera.h"
|
#include "Camera.h"
|
||||||
#include "CarCtrl.h"
|
#include "CarCtrl.h"
|
||||||
#include "CopPed.h"
|
#include "CopPed.h"
|
||||||
@ -2225,20 +2226,37 @@ CWorld::UseDetonator(CEntity *pEntity)
|
|||||||
{
|
{
|
||||||
int32 i = CPools::GetVehiclePool()->GetSize();
|
int32 i = CPools::GetVehiclePool()->GetSize();
|
||||||
while(--i >= 0) {
|
while(--i >= 0) {
|
||||||
#ifdef FIX_BUGS
|
|
||||||
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetSlot(i);
|
||||||
#else
|
#if defined FIX_BUGS || defined BOMBS_ON_BIKES
|
||||||
CAutomobile *pVehicle = (CAutomobile *)CPools::GetVehiclePool()->GetSlot(i);
|
if (pVehicle && pVehicle->IsCar())
|
||||||
#endif
|
#endif
|
||||||
if(pVehicle && pVehicle->m_bombType == CARBOMB_REMOTE &&
|
{
|
||||||
pVehicle->m_pBombRigger == pEntity) {
|
CAutomobile* pCar = (CAutomobile*)CPools::GetVehiclePool()->GetSlot(i);
|
||||||
pVehicle->m_bombType = CARBOMB_NONE;
|
if (pCar && pCar->m_bombType == CARBOMB_REMOTE &&
|
||||||
pVehicle->m_nBombTimer = 500;
|
pCar->m_pBombRigger == pEntity) {
|
||||||
pVehicle->m_pBlowUpEntity = pVehicle->m_pBombRigger;
|
pCar->m_bombType = CARBOMB_NONE;
|
||||||
if(pVehicle->m_pBlowUpEntity)
|
pCar->m_nBombTimer = 500;
|
||||||
pVehicle->m_pBlowUpEntity->RegisterReference(&pVehicle->m_pBlowUpEntity);
|
pCar->m_pBlowUpEntity = pCar->m_pBombRigger;
|
||||||
|
if (pCar->m_pBlowUpEntity)
|
||||||
|
pCar->m_pBlowUpEntity->RegisterReference(&pCar->m_pBlowUpEntity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef BOMBS_ON_BIKES
|
||||||
|
if (pVehicle && pVehicle->IsBike()) {
|
||||||
|
{
|
||||||
|
CBike* pBike = (CBike*)CPools::GetVehiclePool()->GetSlot(i);
|
||||||
|
if (pBike && pBike->m_bombType == CARBOMB_REMOTE &&
|
||||||
|
pBike->m_pBombRigger == pEntity) {
|
||||||
|
pBike->m_bombType = CARBOMB_NONE;
|
||||||
|
pBike->m_nBombTimer = 500;
|
||||||
|
pBike->m_pBlowUpEntity = pBike->m_pBombRigger;
|
||||||
|
if (pBike->m_pBlowUpEntity)
|
||||||
|
pBike->m_pBlowUpEntity->RegisterReference(&pBike->m_pBlowUpEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
CProjectileInfo::RemoveDetonatorProjectiles();
|
CProjectileInfo::RemoveDetonatorProjectiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,6 +435,7 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
|
|||||||
// Vehicles
|
// Vehicles
|
||||||
#define EXPLODING_AIRTRAIN // can blow up jumbo jet with rocket launcher
|
#define EXPLODING_AIRTRAIN // can blow up jumbo jet with rocket launcher
|
||||||
#define CPLANE_ROTORS // make the rotors of the NPC police heli rotate
|
#define CPLANE_ROTORS // make the rotors of the NPC police heli rotate
|
||||||
|
#define BOMBS_ON_BIKES // allow player to set bombs on bikes
|
||||||
|
|
||||||
// Pickups
|
// Pickups
|
||||||
//#define MONEY_MESSAGES
|
//#define MONEY_MESSAGES
|
||||||
@ -462,6 +463,7 @@ static_assert(false, "SUPPORT_XBOX_SCRIPT and SUPPORT_MOBILE_SCRIPT are mutually
|
|||||||
#define ATTACH_RELEASING_SOUNDS_TO_ENTITIES // sounds would follow ped and vehicles coordinates if not being queued otherwise
|
#define ATTACH_RELEASING_SOUNDS_TO_ENTITIES // sounds would follow ped and vehicles coordinates if not being queued otherwise
|
||||||
#define USE_TIME_SCALE_FOR_AUDIO // slow down/speed up sounds according to the speed of the game
|
#define USE_TIME_SCALE_FOR_AUDIO // slow down/speed up sounds according to the speed of the game
|
||||||
#define MULTITHREADED_AUDIO // for streams. requires C++11 or later
|
#define MULTITHREADED_AUDIO // for streams. requires C++11 or later
|
||||||
|
#define CUSTOM_SOUND_TRACK // LCS PSP feature - TODO
|
||||||
|
|
||||||
#ifdef AUDIO_OPUS
|
#ifdef AUDIO_OPUS
|
||||||
#define AUDIO_OAL_USE_OPUS // enable support of opus files
|
#define AUDIO_OAL_USE_OPUS // enable support of opus files
|
||||||
|
12
src/leeds/CustomSoundTrack.cpp
Normal file
12
src/leeds/CustomSoundTrack.cpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include "CustomSoundTrack.h"
|
||||||
|
|
||||||
|
// TODO - implement
|
||||||
|
|
||||||
|
template<>
|
||||||
|
cCustomSoundTrack* base::cSingleton<cCustomSoundTrack>::mspInstance = nil;
|
||||||
|
|
||||||
|
cCustomSoundTrack::cCustomSoundTrack() :
|
||||||
|
m_bIsPlaying(false)
|
||||||
|
{}
|
20
src/leeds/CustomSoundTrack.h
Normal file
20
src/leeds/CustomSoundTrack.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
#include "singletonManager.h"
|
||||||
|
|
||||||
|
class cCustomSoundTrack : public base::cSingleton<cCustomSoundTrack>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
bool m_bIsPlaying;
|
||||||
|
|
||||||
|
cCustomSoundTrack();
|
||||||
|
bool IsPlaying()
|
||||||
|
{
|
||||||
|
#ifdef CUSTOM_SOUND_TRACK
|
||||||
|
return m_bIsPlaying;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
};
|
36
src/leeds/base/singletonManager.cpp
Normal file
36
src/leeds/base/singletonManager.cpp
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
#include "singletonManager.h"
|
||||||
|
|
||||||
|
namespace base
|
||||||
|
{
|
||||||
|
|
||||||
|
cSingletonManager& SingletonManager()
|
||||||
|
{
|
||||||
|
static cSingletonManager manager;
|
||||||
|
return manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
cSingletonManager::~cSingletonManager()
|
||||||
|
{
|
||||||
|
Purge();
|
||||||
|
}
|
||||||
|
|
||||||
|
void cSingletonManager::Add(cSingletonBase* node)
|
||||||
|
{
|
||||||
|
node->next = head;
|
||||||
|
if (!head)
|
||||||
|
tail = node;
|
||||||
|
head = node;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cSingletonManager::Purge()
|
||||||
|
{
|
||||||
|
for (cSingletonBase* node = tail; node; node = tail) {
|
||||||
|
tail = node->next;
|
||||||
|
delete node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
62
src/leeds/base/singletonManager.h
Normal file
62
src/leeds/base/singletonManager.h
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
namespace base
|
||||||
|
{
|
||||||
|
|
||||||
|
class cSingletonBase;
|
||||||
|
|
||||||
|
class cSingletonManager
|
||||||
|
{
|
||||||
|
cSingletonBase* head;
|
||||||
|
cSingletonBase* tail;
|
||||||
|
|
||||||
|
public:
|
||||||
|
cSingletonManager() :
|
||||||
|
head(nil),
|
||||||
|
tail(nil)
|
||||||
|
{}
|
||||||
|
|
||||||
|
void Add(cSingletonBase*);
|
||||||
|
void Purge();
|
||||||
|
~cSingletonManager();
|
||||||
|
};
|
||||||
|
|
||||||
|
cSingletonManager& SingletonManager();
|
||||||
|
|
||||||
|
class cSingletonBase
|
||||||
|
{
|
||||||
|
friend class cSingletonManager;
|
||||||
|
|
||||||
|
cSingletonBase* next;
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual ~cSingletonBase() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
class cSingleton : public cSingletonBase
|
||||||
|
{
|
||||||
|
static T* mspInstance;
|
||||||
|
static void CreateInstance()
|
||||||
|
{
|
||||||
|
mspInstance = new T();
|
||||||
|
SingletonManager().Add(mspInstance);
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
static T* Instance()
|
||||||
|
{
|
||||||
|
if (!mspInstance)
|
||||||
|
CreateInstance();
|
||||||
|
return mspInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
~cSingleton<T>()
|
||||||
|
{
|
||||||
|
mspInstance = nil;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -1111,31 +1111,40 @@ enum
|
|||||||
MI_RCBARON = -955,
|
MI_RCBARON = -955,
|
||||||
MI_VICECHEE = -954,
|
MI_VICECHEE = -954,
|
||||||
|
|
||||||
// HACK HACK, hopefully temporary
|
// 7 of the following MIs originally are in this set: {-998, -996, -979, -978, -977, -975, -969}
|
||||||
MI_JETMAX = -2000,
|
MI_WASHING = -3000,
|
||||||
MI_CUBAN,
|
MI_ADMIRAL,
|
||||||
|
MI_GLENDALE,
|
||||||
|
MI_OCEANIC,
|
||||||
|
MI_REGINA,
|
||||||
MI_SABRE,
|
MI_SABRE,
|
||||||
MI_VIRGO,
|
MI_VIRGO,
|
||||||
|
MI_GREENWOO,
|
||||||
|
|
||||||
|
// 22 of the following MIs originally are in this set:
|
||||||
|
// {-997, -995, -994, -993, -989, -983, -980, -976, -971, -970, -968, -966, -965, -964, -963, -962, -961, -960, -959, -958, -957, -956}
|
||||||
|
MI_JETMAX = -2000,
|
||||||
|
MI_CUBAN,
|
||||||
MI_RANCHER,
|
MI_RANCHER,
|
||||||
MI_BLISTAC,
|
MI_BLISTAC,
|
||||||
MI_WASHING,
|
|
||||||
MI_ADMIRAL,
|
|
||||||
MI_SABRETUR,
|
MI_SABRETUR,
|
||||||
MI_DELUXO,
|
MI_DELUXO,
|
||||||
MI_HOTRING,
|
MI_HOTRING,
|
||||||
MI_REGINA,
|
|
||||||
MI_SENTXS,
|
MI_SENTXS,
|
||||||
MI_GLENDALE,
|
|
||||||
MI_OCEANIC,
|
|
||||||
MI_HERMES,
|
MI_HERMES,
|
||||||
MI_GREENWOO,
|
|
||||||
MI_LOVEFIST,
|
MI_LOVEFIST,
|
||||||
MI_GANGBUR,
|
MI_GANGBUR,
|
||||||
MI_BURRITO,
|
MI_BURRITO,
|
||||||
MI_SPAND,
|
MI_SPAND,
|
||||||
MI_PACKER,
|
MI_PACKER,
|
||||||
MI_WALTON,
|
MI_WALTON,
|
||||||
MI_ROMERO,
|
MI_BOXVILLE,
|
||||||
|
MI_BENSON,
|
||||||
|
MI_MESA,
|
||||||
|
MI_HOTRINA,
|
||||||
|
MI_HOTRINB,
|
||||||
|
MI_BLOODRA,
|
||||||
|
MI_BLOODRB,
|
||||||
|
|
||||||
MI_WHEEL_RIM = 237,
|
MI_WHEEL_RIM = 237,
|
||||||
MI_WHEEL_OFFROAD,
|
MI_WHEEL_OFFROAD,
|
||||||
|
@ -550,12 +550,13 @@ public:
|
|||||||
uint32 bIsDrowning : 1;
|
uint32 bIsDrowning : 1;
|
||||||
uint32 bDrownsInWater : 1;
|
uint32 bDrownsInWater : 1;
|
||||||
uint32 bWaitForLeaderToComeCloser : 1;
|
uint32 bWaitForLeaderToComeCloser : 1;
|
||||||
uint32 bHeldHostageInCar : 1; // one flag was added somewhere after this one (TODO: figure out where and which)
|
uint32 bHeldHostageInCar : 1;
|
||||||
|
uint32 b19C_10 : 1;
|
||||||
uint32 bIsPlayerFriend : 1;
|
uint32 bIsPlayerFriend : 1;
|
||||||
uint32 bHeadStuckInCollision : 1;
|
uint32 bHeadStuckInCollision : 1;
|
||||||
uint32 bDeadPedInFrontOfCar : 1;
|
uint32 bDeadPedInFrontOfCar : 1;
|
||||||
uint32 bStayInCarOnJack : 1;
|
|
||||||
|
|
||||||
|
uint32 bStayInCarOnJack : 1;
|
||||||
uint32 bDontFight : 1;
|
uint32 bDontFight : 1;
|
||||||
uint32 bDoomAim : 1;
|
uint32 bDoomAim : 1;
|
||||||
uint32 bCanBeShotInVehicle : 1;
|
uint32 bCanBeShotInVehicle : 1;
|
||||||
@ -563,8 +564,8 @@ public:
|
|||||||
uint32 bMakeFleeScream : 1;
|
uint32 bMakeFleeScream : 1;
|
||||||
uint32 bPushedAlongByCar : 1;
|
uint32 bPushedAlongByCar : 1;
|
||||||
uint32 bRemoveMeWhenIGotIntoCar : 1;
|
uint32 bRemoveMeWhenIGotIntoCar : 1;
|
||||||
uint32 bIgnoreThreatsBehindObjects : 1; // one flag was added somewhere before this one (TODO: figure out where and which)
|
|
||||||
|
|
||||||
|
uint32 bIgnoreThreatsBehindObjects : 1;
|
||||||
uint32 bNeverEverTargetThisPed : 1;
|
uint32 bNeverEverTargetThisPed : 1;
|
||||||
uint32 bCrouchWhenScared : 1;
|
uint32 bCrouchWhenScared : 1;
|
||||||
uint32 bKnockedOffBike : 1;
|
uint32 bKnockedOffBike : 1;
|
||||||
@ -704,7 +705,7 @@ public:
|
|||||||
uint32 m_delayedWeaponAmmo;
|
uint32 m_delayedWeaponAmmo;
|
||||||
uint8 m_currentWeapon; // eWeaponType
|
uint8 m_currentWeapon; // eWeaponType
|
||||||
uint8 m_maxWeaponTypeAllowed; // eWeaponType
|
uint8 m_maxWeaponTypeAllowed; // eWeaponType
|
||||||
uint8 m_wepSkills;
|
uint8 m_wepSkills; // TODO - missing?
|
||||||
uint8 m_wepAccuracy;
|
uint8 m_wepAccuracy;
|
||||||
CEntity *m_pPointGunAt;
|
CEntity *m_pPointGunAt;
|
||||||
CVector m_vecHitLastPos;
|
CVector m_vecHitLastPos;
|
||||||
@ -1091,8 +1092,13 @@ public:
|
|||||||
PedState GetPedState(void) { return m_nPedState; }
|
PedState GetPedState(void) { return m_nPedState; }
|
||||||
void SetPedState(PedState state)
|
void SetPedState(PedState state)
|
||||||
{
|
{
|
||||||
if (GetPedState() == PED_FOLLOW_PATH && state != PED_FOLLOW_PATH)
|
if (GetPedState() == PED_FOLLOW_PATH && state != PED_FOLLOW_PATH) {
|
||||||
|
if (m_followPathTargetEnt) {
|
||||||
|
m_followPathTargetEnt->CleanUpOldReference(&m_followPathTargetEnt);
|
||||||
|
m_followPathTargetEnt = nil;
|
||||||
|
}
|
||||||
ClearFollowPath();
|
ClearFollowPath();
|
||||||
|
}
|
||||||
m_nPedState = state;
|
m_nPedState = state;
|
||||||
}
|
}
|
||||||
bool Dead(void) { return m_nPedState == PED_DEAD; }
|
bool Dead(void) { return m_nPedState == PED_DEAD; }
|
||||||
|
@ -206,7 +206,7 @@ CAutomobile::CAutomobile(int32 id, uint8 CreatedBy)
|
|||||||
|
|
||||||
m_pBombRigger = nil;
|
m_pBombRigger = nil;
|
||||||
m_bombType = CARBOMB_NONE;
|
m_bombType = CARBOMB_NONE;
|
||||||
bUnknownFlag = false;
|
bDriverLastFrame = false;
|
||||||
|
|
||||||
if(m_nDoorLock == CARLOCK_UNLOCKED &&
|
if(m_nDoorLock == CARLOCK_UNLOCKED &&
|
||||||
(id == MI_POLICE || id == MI_ENFORCER || id == MI_RHINO))
|
(id == MI_POLICE || id == MI_ENFORCER || id == MI_RHINO))
|
||||||
@ -344,8 +344,19 @@ CAutomobile::ProcessControl(void)
|
|||||||
ScanForCrimes();
|
ScanForCrimes();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(LCS)? re-inline this and change where bDriverLastFrame is set
|
if (pDriver) {
|
||||||
ActivateBombWhenEntered();
|
if (!bDriverLastFrame && m_bombType == CARBOMB_ONIGNITIONACTIVE) {
|
||||||
|
// If someone enters the car and there is a bomb, detonate
|
||||||
|
m_nBombTimer = 1000;
|
||||||
|
m_pBlowUpEntity = m_pBombRigger;
|
||||||
|
if (m_pBlowUpEntity)
|
||||||
|
m_pBlowUpEntity->RegisterReference((CEntity**)&m_pBlowUpEntity);
|
||||||
|
DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TICK, 1.0f);
|
||||||
|
}
|
||||||
|
bDriverLastFrame = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
bDriverLastFrame = false;
|
||||||
|
|
||||||
// Process driver
|
// Process driver
|
||||||
if(pDriver){
|
if(pDriver){
|
||||||
@ -939,9 +950,20 @@ CAutomobile::ProcessControl(void)
|
|||||||
traction *= 4.0f;
|
traction *= 4.0f;
|
||||||
|
|
||||||
if(FindPlayerVehicle() && FindPlayerVehicle() == this)
|
if(FindPlayerVehicle() && FindPlayerVehicle() == this)
|
||||||
if(CPad::GetPad(0)->CarGunJustDown())
|
if (CPad::GetPad(0)->CarGunJustDown()) {
|
||||||
// TODO(LCS)? re-inline this from CVehicle
|
if (m_bombType == CARBOMB_TIMED) {
|
||||||
ActivateBomb();
|
m_bombType = CARBOMB_TIMEDACTIVE;
|
||||||
|
m_nBombTimer = 7000;
|
||||||
|
m_pBlowUpEntity = FindPlayerPed();
|
||||||
|
CGarages::TriggerMessage("GA_12", -1, 3000, -1);
|
||||||
|
DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TIMED_ACTIVATED, 1.0f);
|
||||||
|
}
|
||||||
|
else if (m_bombType == CARBOMB_ONIGNITION) {
|
||||||
|
m_bombType = CARBOMB_ONIGNITIONACTIVE;
|
||||||
|
CGarages::TriggerMessage("GA_12", -1, 3000, -1);
|
||||||
|
DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_ONIGNITION_ACTIVATED, 1.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(FindPlayerVehicle() != this && (strongGrip1 || CVehicle::bCheat3)){
|
if(FindPlayerVehicle() != this && (strongGrip1 || CVehicle::bCheat3)){
|
||||||
traction *= 1.2f;
|
traction *= 1.2f;
|
||||||
|
@ -35,11 +35,9 @@ public:
|
|||||||
float m_aWheelPosition[4];
|
float m_aWheelPosition[4];
|
||||||
float m_aWheelSpeed[4];
|
float m_aWheelSpeed[4];
|
||||||
uint8 m_auto_unused2;
|
uint8 m_auto_unused2;
|
||||||
#if (defined GTA_PS2 && !defined FIX_BUGS)
|
|
||||||
uint8 m_bombType : 3;
|
uint8 m_bombType : 3;
|
||||||
#endif
|
|
||||||
uint8 bTaxiLight : 1;
|
uint8 bTaxiLight : 1;
|
||||||
uint8 bUnknownFlag : 1; // new in LCS
|
uint8 bDriverLastFrame : 1;
|
||||||
uint8 bFixedColour : 1;
|
uint8 bFixedColour : 1;
|
||||||
uint8 bBigWheels : 1;
|
uint8 bBigWheels : 1;
|
||||||
uint8 bWaterTight : 1; // no damage for non-player peds
|
uint8 bWaterTight : 1; // no damage for non-player peds
|
||||||
@ -48,9 +46,7 @@ public:
|
|||||||
uint8 bTankDetonateCars : 1;
|
uint8 bTankDetonateCars : 1;
|
||||||
uint8 bStuckInSand : 1;
|
uint8 bStuckInSand : 1;
|
||||||
uint8 bHeliDestroyed : 1;
|
uint8 bHeliDestroyed : 1;
|
||||||
#if (defined GTA_PS2 && !defined FIX_BUGS)
|
|
||||||
CEntity* m_pBombRigger;
|
CEntity* m_pBombRigger;
|
||||||
#endif
|
|
||||||
int16 m_doingBurnout;
|
int16 m_doingBurnout;
|
||||||
uint16 m_hydraulicState;
|
uint16 m_hydraulicState;
|
||||||
uint32 m_nBusDoorTimerEnd;
|
uint32 m_nBusDoorTimerEnd;
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include "Bike.h"
|
#include "Bike.h"
|
||||||
#include "Debug.h"
|
#include "Debug.h"
|
||||||
#include "SaveBuf.h"
|
#include "SaveBuf.h"
|
||||||
|
#include "Garages.h"
|
||||||
|
|
||||||
const uint32 CBike::nSaveStructSize =
|
const uint32 CBike::nSaveStructSize =
|
||||||
#ifdef COMPATIBLE_SAVES
|
#ifdef COMPATIBLE_SAVES
|
||||||
@ -232,7 +233,19 @@ CBike::ProcessControl(void)
|
|||||||
|
|
||||||
ProcessCarAlarm();
|
ProcessCarAlarm();
|
||||||
|
|
||||||
ActivateBombWhenEntered();
|
if (pDriver) {
|
||||||
|
if (!bDriverLastFrame && m_bombType == CARBOMB_ONIGNITIONACTIVE) {
|
||||||
|
// If someone enters the car and there is a bomb, detonate
|
||||||
|
m_nBombTimer = 1000;
|
||||||
|
m_pBlowUpEntity = m_pBombRigger;
|
||||||
|
if (m_pBlowUpEntity)
|
||||||
|
m_pBlowUpEntity->RegisterReference((CEntity**)&m_pBlowUpEntity);
|
||||||
|
DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TICK, 1.0f);
|
||||||
|
}
|
||||||
|
bDriverLastFrame = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
bDriverLastFrame = false;
|
||||||
|
|
||||||
CRubbish::StirUp(this);
|
CRubbish::StirUp(this);
|
||||||
|
|
||||||
@ -300,8 +313,23 @@ CBike::ProcessControl(void)
|
|||||||
ApplyMoveForce(parallelSpeed * -CTimer::GetTimeStep()*SAND_SLOWDOWN*m_fMass);
|
ApplyMoveForce(parallelSpeed * -CTimer::GetTimeStep()*SAND_SLOWDOWN*m_fMass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(CPad::GetPad(0)->WeaponJustDown())
|
|
||||||
ActivateBomb();
|
#ifdef BOMBS_ON_BIKES
|
||||||
|
if(CPad::GetPad(0)->WeaponJustDown()) {
|
||||||
|
if (m_bombType == CARBOMB_TIMED) {
|
||||||
|
m_bombType = CARBOMB_TIMEDACTIVE;
|
||||||
|
m_nBombTimer = 7000;
|
||||||
|
m_pBlowUpEntity = FindPlayerPed();
|
||||||
|
CGarages::TriggerMessage("GA_12", -1, 3000, -1);
|
||||||
|
DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TIMED_ACTIVATED, 1.0f);
|
||||||
|
}
|
||||||
|
else if (m_bombType == CARBOMB_ONIGNITION) {
|
||||||
|
m_bombType = CARBOMB_ONIGNITIONACTIVE;
|
||||||
|
CGarages::TriggerMessage("GA_12", -1, 3000, -1);
|
||||||
|
DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_ONIGNITION_ACTIVATED, 1.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATUS_PLAYER_PLAYBACKFROMBUFFER:
|
case STATUS_PLAYER_PLAYBACKFROMBUFFER:
|
||||||
|
@ -67,15 +67,18 @@ public:
|
|||||||
float m_fPedLeanAmountUD;
|
float m_fPedLeanAmountUD;
|
||||||
uint8 m_bike_unused2;
|
uint8 m_bike_unused2;
|
||||||
uint8 unused[3]; // looks like padding..but for what?
|
uint8 unused[3]; // looks like padding..but for what?
|
||||||
|
uint8 m_bombType : 3;
|
||||||
|
uint8 bDriverLastFrame : 1;
|
||||||
uint8 m_bike_flag01 : 1;
|
uint8 m_bike_flag01 : 1;
|
||||||
uint8 m_bike_flag02 : 1;
|
uint8 m_bike_flag02 : 1;
|
||||||
uint8 bWaterTight : 1;
|
uint8 bWaterTight : 1; // 535_40
|
||||||
uint8 bIsBeingPickedUp : 1;
|
uint8 bIsBeingPickedUp : 1;
|
||||||
uint8 bIsStanding : 1;
|
uint8 bIsStanding : 1;
|
||||||
uint8 bExtraSpeed : 1; // leaning forward
|
uint8 bExtraSpeed : 1; // leaning forward
|
||||||
uint8 bIsOnFire : 1;
|
uint8 bIsOnFire : 1;
|
||||||
uint8 bWheelieCam : 1;
|
uint8 bWheelieCam : 1;
|
||||||
uint8 bFixedColour : 1; // <- figure out its actual place (TODO)
|
uint8 bFixedColour : 1; // <- figure out its actual place (TODO)
|
||||||
|
CEntity* m_pBombRigger;
|
||||||
int16 m_doingBurnout;
|
int16 m_doingBurnout;
|
||||||
float m_fTireTemperature;
|
float m_fTireTemperature;
|
||||||
float m_fBrakeDestabilization;
|
float m_fBrakeDestabilization;
|
||||||
|
@ -159,10 +159,6 @@ CVehicle::CVehicle(uint8 CreatedBy)
|
|||||||
bIsBig = false;
|
bIsBig = false;
|
||||||
bLowVehicle = false;
|
bLowVehicle = false;
|
||||||
|
|
||||||
m_bombType = CARBOMB_NONE;
|
|
||||||
m_pBombRigger = nil;
|
|
||||||
bDriverLastFrame = false;
|
|
||||||
|
|
||||||
m_nSetPieceExtendedRangeTime = 0;
|
m_nSetPieceExtendedRangeTime = 0;
|
||||||
m_nAlarmState = 0;
|
m_nAlarmState = 0;
|
||||||
m_nDoorLock = CARLOCK_UNLOCKED;
|
m_nDoorLock = CARLOCK_UNLOCKED;
|
||||||
@ -1465,41 +1461,6 @@ CVehicle::FireFixedMachineGuns(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//LCS: in CAutomobile
|
|
||||||
void
|
|
||||||
CVehicle::ActivateBomb(void)
|
|
||||||
{
|
|
||||||
if(m_bombType == CARBOMB_TIMED){
|
|
||||||
m_bombType = CARBOMB_TIMEDACTIVE;
|
|
||||||
m_nBombTimer = 7000;
|
|
||||||
m_pBlowUpEntity = FindPlayerPed();
|
|
||||||
CGarages::TriggerMessage("GA_12", -1, 3000, -1);
|
|
||||||
DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TIMED_ACTIVATED, 1.0f);
|
|
||||||
}else if(m_bombType == CARBOMB_ONIGNITION){
|
|
||||||
m_bombType = CARBOMB_ONIGNITIONACTIVE;
|
|
||||||
CGarages::TriggerMessage("GA_12", -1, 3000, -1);
|
|
||||||
DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_ONIGNITION_ACTIVATED, 1.0f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//LCS: in CAutomobile and CBike
|
|
||||||
void
|
|
||||||
CVehicle::ActivateBombWhenEntered(void)
|
|
||||||
{
|
|
||||||
if(pDriver){
|
|
||||||
if(!bDriverLastFrame && m_bombType == CARBOMB_ONIGNITIONACTIVE){
|
|
||||||
// If someone enters the car and there is a bomb, detonate
|
|
||||||
m_nBombTimer = 1000;
|
|
||||||
m_pBlowUpEntity = m_pBombRigger;
|
|
||||||
if(m_pBlowUpEntity)
|
|
||||||
m_pBlowUpEntity->RegisterReference((CEntity**)&m_pBlowUpEntity);
|
|
||||||
DMAudio.PlayOneShot(m_audioEntityId, SOUND_BOMB_TICK, 1.0f);
|
|
||||||
}
|
|
||||||
bDriverLastFrame = true;
|
|
||||||
}else
|
|
||||||
bDriverLastFrame = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
CVehicle::ExtinguishCarFire(void)
|
CVehicle::ExtinguishCarFire(void)
|
||||||
{
|
{
|
||||||
|
@ -245,10 +245,6 @@ public:
|
|||||||
uint8 bRestingOnPhysical : 1; // Dont go static cause car is sitting on a physical object that might get removed
|
uint8 bRestingOnPhysical : 1; // Dont go static cause car is sitting on a physical object that might get removed
|
||||||
uint8 bParking : 1;
|
uint8 bParking : 1;
|
||||||
uint8 bCanPark : 1;
|
uint8 bCanPark : 1;
|
||||||
#if (!defined GTA_PS2 || defined FIX_BUGS) // <- I think this can be moved back to CAutomobile?
|
|
||||||
uint8 m_bombType : 3;
|
|
||||||
#endif
|
|
||||||
uint8 bDriverLastFrame : 1; // originally not in CVehicle (TODO - carbomb stuff)
|
|
||||||
uint8 bRewardVehicle : 1; // 25B_40
|
uint8 bRewardVehicle : 1; // 25B_40
|
||||||
|
|
||||||
int8 m_numPedsUseItAsCover;
|
int8 m_numPedsUseItAsCover;
|
||||||
@ -261,9 +257,6 @@ public:
|
|||||||
float m_fEngineEnergy; // TODO(LCS): better name. it adds up acceleration force, so possibly kinetic energy??
|
float m_fEngineEnergy; // TODO(LCS): better name. it adds up acceleration force, so possibly kinetic energy??
|
||||||
uint8 m_nCurrentGear;
|
uint8 m_nCurrentGear;
|
||||||
float m_fChangeGearTime;
|
float m_fChangeGearTime;
|
||||||
#if (!defined GTA_PS2 || defined FIX_BUGS)
|
|
||||||
CEntity* m_pBombRigger;
|
|
||||||
#endif
|
|
||||||
uint32 m_nSetPieceExtendedRangeTime;
|
uint32 m_nSetPieceExtendedRangeTime;
|
||||||
uint32 m_nGunFiringTime; // last time when gun on vehicle was fired (used on boats)
|
uint32 m_nGunFiringTime; // last time when gun on vehicle was fired (used on boats)
|
||||||
uint32 m_nTimeOfDeath;
|
uint32 m_nTimeOfDeath;
|
||||||
@ -395,8 +388,6 @@ public:
|
|||||||
void InflictDamage(CEntity *damagedBy, eWeaponType weaponType, float damage, CVector pos = CVector(0.0f, 0.0f, 0.0f));
|
void InflictDamage(CEntity *damagedBy, eWeaponType weaponType, float damage, CVector pos = CVector(0.0f, 0.0f, 0.0f));
|
||||||
void DoFixedMachineGuns(void);
|
void DoFixedMachineGuns(void);
|
||||||
void FireFixedMachineGuns(void);
|
void FireFixedMachineGuns(void);
|
||||||
void ActivateBomb(void);
|
|
||||||
void ActivateBombWhenEntered(void);
|
|
||||||
void KillPedsInVehicle(void);
|
void KillPedsInVehicle(void);
|
||||||
|
|
||||||
void SetComponentAtomicAlpha(RpAtomic *atomic, int32 alpha);
|
void SetComponentAtomicAlpha(RpAtomic *atomic, int32 alpha);
|
||||||
@ -407,7 +398,7 @@ public:
|
|||||||
|
|
||||||
bool IsAlarmOn(void) { return m_nAlarmState != 0 && m_nAlarmState != -1 && GetStatus() != STATUS_WRECKED; }
|
bool IsAlarmOn(void) { return m_nAlarmState != 0 && m_nAlarmState != -1 && GetStatus() != STATUS_WRECKED; }
|
||||||
CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); }
|
CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); }
|
||||||
bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE; }
|
bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE || GetModelIndex() == MI_KAUFMAN; }
|
||||||
bool IsLimo(void) { return GetModelIndex() == MI_STRETCH; }
|
bool IsLimo(void) { return GetModelIndex() == MI_STRETCH; }
|
||||||
bool IsRealHeli(void) { return !!(pHandling->Flags & HANDLING_IS_HELI); }
|
bool IsRealHeli(void) { return !!(pHandling->Flags & HANDLING_IS_HELI); }
|
||||||
bool IsRealPlane(void) { return !!(pHandling->Flags & HANDLING_IS_PLANE); }
|
bool IsRealPlane(void) { return !!(pHandling->Flags & HANDLING_IS_PLANE); }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user