mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-11-01 02:25:55 +00:00
script 600-699
This commit is contained in:
parent
dcd2a94367
commit
5e77e9d0ea
|
@ -78,6 +78,15 @@ WRAPPER void CGarages::PlayerArrestedOrDied() { EAXJMP(0x427F60); }
|
||||||
WRAPPER int16 CGarages::AddOne(float, float, float, float, float, float, uint8, uint32) { EAXJMP(0x421FA0); }
|
WRAPPER int16 CGarages::AddOne(float, float, float, float, float, float, uint8, uint32) { EAXJMP(0x421FA0); }
|
||||||
WRAPPER void CGarages::SetTargetCarForMissonGarage(int16, CVehicle*) { EAXJMP(0x426BD0); }
|
WRAPPER void CGarages::SetTargetCarForMissonGarage(int16, CVehicle*) { EAXJMP(0x426BD0); }
|
||||||
WRAPPER bool CGarages::HasCarBeenDroppedOffYet(int16) { EAXJMP(0x426C20); }
|
WRAPPER bool CGarages::HasCarBeenDroppedOffYet(int16) { EAXJMP(0x426C20); }
|
||||||
|
WRAPPER void CGarages::DeActivateGarage(int16) { EAXJMP(0x426C40); }
|
||||||
|
WRAPPER void CGarages::ActivateGarage(int16) { EAXJMP(0x426C60); }
|
||||||
|
|
||||||
|
int32 CGarages::QueryCarsCollected(int16 garage)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
WRAPPER bool CGarages::HasThisCarBeenCollected(int16 garage, uint8 id) { EAXJMP(0x426D50); }
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
WRAPPER void CGarages::PrintMessages(void) { EAXJMP(0x426310); }
|
WRAPPER void CGarages::PrintMessages(void) { EAXJMP(0x426310); }
|
||||||
|
|
|
@ -35,4 +35,8 @@ public:
|
||||||
static int16 AddOne(float, float, float, float, float, float, uint8, uint32);
|
static int16 AddOne(float, float, float, float, float, float, uint8, uint32);
|
||||||
static void SetTargetCarForMissonGarage(int16, CVehicle*);
|
static void SetTargetCarForMissonGarage(int16, CVehicle*);
|
||||||
static bool HasCarBeenDroppedOffYet(int16);
|
static bool HasCarBeenDroppedOffYet(int16);
|
||||||
|
static void ActivateGarage(int16);
|
||||||
|
static void DeActivateGarage(int16);
|
||||||
|
static int32 QueryCarsCollected(int16);
|
||||||
|
static bool HasThisCarBeenCollected(int16, uint8);
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "Messages.h"
|
#include "Messages.h"
|
||||||
#include "ModelIndices.h"
|
#include "ModelIndices.h"
|
||||||
#include "Pad.h"
|
#include "Pad.h"
|
||||||
|
#include "ParticleObject.h"
|
||||||
#include "PedRoutes.h"
|
#include "PedRoutes.h"
|
||||||
#include "Phones.h"
|
#include "Phones.h"
|
||||||
#include "Pickups.h"
|
#include "Pickups.h"
|
||||||
|
@ -5141,6 +5142,364 @@ int8 CRunningScript::ProcessCommandsFrom500To599(int32 command)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
WRAPPER int8 CRunningScript::ProcessCommandsFrom600To699(int32 command) { EAXJMP(0x444B20); }
|
||||||
|
#else
|
||||||
|
int8 CRunningScript::ProcessCommandsFrom600To699(int32 command)
|
||||||
|
{
|
||||||
|
switch (command){
|
||||||
|
/* Collective commands are not implemented until LCS.
|
||||||
|
case COMMAND_SET_COLL_OBJ_WAIT_ON_FOOT:
|
||||||
|
case COMMAND_SET_COLL_OBJ_FLEE_ON_FOOT_TILL_SAFE:
|
||||||
|
case COMMAND_SET_COLL_OBJ_GUARD_SPOT:
|
||||||
|
case COMMAND_SET_COLL_OBJ_GUARD_AREA:
|
||||||
|
case COMMAND_SET_COLL_OBJ_WAIT_IN_CAR:
|
||||||
|
case COMMAND_SET_COLL_OBJ_KILL_CHAR_ON_FOOT:
|
||||||
|
case COMMAND_SET_COLL_OBJ_KILL_PLAYER_ON_FOOT:
|
||||||
|
case COMMAND_SET_COLL_OBJ_KILL_CHAR_ANY_MEANS:
|
||||||
|
case COMMAND_SET_COLL_OBJ_KILL_PLAYER_ANY_MEANS:
|
||||||
|
case COMMAND_SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE:
|
||||||
|
case COMMAND_SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE:
|
||||||
|
case COMMAND_SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS:
|
||||||
|
case COMMAND_SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS:
|
||||||
|
case COMMAND_SET_COLL_OBJ_GOTO_CHAR_ON_FOOT:
|
||||||
|
case COMMAND_SET_COLL_OBJ_GOTO_PLAYER_ON_FOOT:
|
||||||
|
case COMMAND_SET_COLL_OBJ_LEAVE_CAR:
|
||||||
|
case COMMAND_SET_COLL_OBJ_ENTER_CAR_AS_PASSENGER:
|
||||||
|
case COMMAND_SET_COLL_OBJ_ENTER_CAR_AS_DRIVER:
|
||||||
|
case COMMAND_SET_COLL_OBJ_FOLLOW_CAR_IN_CAR:
|
||||||
|
case COMMAND_SET_COLL_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE:
|
||||||
|
case COMMAND_SET_COLL_OBJ_DESTROY_OBJECT:
|
||||||
|
case COMMAND_SET_COLL_OBJ_DESTROY_CAR:
|
||||||
|
case COMMAND_SET_COLL_OBJ_GOTO_AREA_ON_FOOT:
|
||||||
|
case COMMAND_SET_COLL_OBJ_GOTO_AREA_IN_CAR:
|
||||||
|
case COMMAND_SET_COLL_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET:
|
||||||
|
case COMMAND_SET_COLL_OBJ_GUARD_ATTACK:
|
||||||
|
case COMMAND_SET_COLL_OBJ_FOLLOW_ROUTE:
|
||||||
|
case COMMAND_SET_COLL_OBJ_GOTO_COORD_ON_FOOT:
|
||||||
|
case COMMAND_SET_COLL_OBJ_GOTO_COORD_IN_CAR:
|
||||||
|
case COMMAND_SET_COLL_OBJ_RUN_TO_AREA:
|
||||||
|
case COMMAND_SET_COLL_OBJ_RUN_TO_COORD:
|
||||||
|
case COMMAND_ADD_PEDS_IN_AREA_TO_COLL:
|
||||||
|
case COMMAND_ADD_PEDS_IN_VEHICLE_TO_COLL:
|
||||||
|
case COMMAND_CLEAR_COLL:
|
||||||
|
case COMMAND_IS_COLL_IN_CARS:
|
||||||
|
case COMMAND_LOCATE_COLL_ANY_MEANS_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_ON_FOOT_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_IN_CAR_2D:
|
||||||
|
case COMMAND_LOCATE_STOPPED_COLL_ANY_MEANS_2D:
|
||||||
|
case COMMAND_LOCATE_STOPPED_COLL_ON_FOOT_2D:
|
||||||
|
case COMMAND_LOCATE_STOPPED_COLL_IN_CAR_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_ANY_MEANS_CHAR_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_ON_FOOT_CHAR_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_IN_CAR_CHAR_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_ANY_MEANS_CAR_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_ON_FOOT_CAR_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_IN_CAR_CAR_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_ANY_MEANS_PLAYER_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_ON_FOOT_PLAYER_2D:
|
||||||
|
case COMMAND_LOCATE_COLL_IN_CAR_PLAYER_2D:
|
||||||
|
case COMMAND_IS_COLL_IN_AREA_2D:
|
||||||
|
case COMMAND_IS_COLL_IN_AREA_ON_FOOT_2D:
|
||||||
|
case COMMAND_IS_COLL_IN_AREA_IN_CAR_2D:
|
||||||
|
case COMMAND_IS_COLL_STOPPED_IN_AREA_2D:
|
||||||
|
case COMMAND_IS_COLL_STOPPED_IN_AREA_ON_FOOT_2D:
|
||||||
|
case COMMAND_IS_COLL_STOPPED_IN_AREA_IN_CAR_2D:
|
||||||
|
case COMMAND_GET_NUMBER_OF_PEDS_IN_COLL:
|
||||||
|
*/
|
||||||
|
case COMMAND_SET_CHAR_HEED_THREATS:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 2);
|
||||||
|
CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pPed);
|
||||||
|
pPed->bRespondsToThreats = (ScriptParams[1] != 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_SET_PLAYER_HEED_THREATS:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 2);
|
||||||
|
CPed* pPed = CWorld::Players[ScriptParams[0]].m_pPed;
|
||||||
|
assert(pPed);
|
||||||
|
pPed->bRespondsToThreats = (ScriptParams[1] != 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_GET_CONTROLLER_MODE:
|
||||||
|
ScriptParams[0] = 0;
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
case COMMAND_SET_CAN_RESPRAY_CAR:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 2);
|
||||||
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pVehicle);
|
||||||
|
assert(pVehicle->m_vehType == VEHICLE_TYPE_CAR);
|
||||||
|
((CAutomobile*)pVehicle)->bFixedColour = (ScriptParams[1] == 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_IS_TAXI:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pVehicle);
|
||||||
|
int mi = pVehicle->GetModelIndex();
|
||||||
|
UpdateCompareFlag(mi == MI_TAXI || mi == MI_CABBIE || mi == MI_BORGNINE);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_UNLOAD_SPECIAL_CHARACTER:
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CStreaming::SetMissionDoesntRequireSpecialChar(ScriptParams[0] - 1);
|
||||||
|
return 0;
|
||||||
|
case COMMAND_RESET_NUM_OF_MODELS_KILLED_BY_PLAYER:
|
||||||
|
CDarkel::ResetModelsKilledByPlayer();
|
||||||
|
return 0;
|
||||||
|
case COMMAND_GET_NUM_OF_MODELS_KILLED_BY_PLAYER:
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
ScriptParams[0] = CDarkel::QueryModelsKilledByPlayer(ScriptParams[0]);
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
case COMMAND_ACTIVATE_GARAGE:
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CGarages::ActivateGarage(ScriptParams[0]);
|
||||||
|
return 0;
|
||||||
|
case COMMAND_SWITCH_TAXI_TIMER:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
if (ScriptParams[0] != 0){
|
||||||
|
CWorld::Players[CWorld::PlayerInFocus].m_nSwitchTaxiTime = CTimer::GetTimeInMilliseconds();
|
||||||
|
CWorld::Players[CWorld::PlayerInFocus].m_bSwitchTaxi = true;
|
||||||
|
}else{
|
||||||
|
CWorld::Players[CWorld::PlayerInFocus].m_bSwitchTaxi = false;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_CREATE_OBJECT_NO_OFFSET:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 4);
|
||||||
|
int mi = ScriptParams[0] >= 0 ? ScriptParams[0] : CTheScripts::UsedObjectArray[-ScriptParams[0]].index;
|
||||||
|
CObject* pObj = new CObject(mi, 0);
|
||||||
|
pObj->ObjectCreatedBy = MISSION_OBJECT;
|
||||||
|
CVector pos = *(CVector*)&ScriptParams[1];
|
||||||
|
if (pos.z <= -100.0f)
|
||||||
|
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
|
||||||
|
pObj->GetPosition() = pos;
|
||||||
|
pObj->SetOrientation(0.0f, 0.0f, 0.0f);
|
||||||
|
pObj->GetMatrix().UpdateRW();
|
||||||
|
pObj->UpdateRwFrame();
|
||||||
|
CTheScripts::ClearSpaceForMissionEntity(pos, pObj);
|
||||||
|
CWorld::Add(pObj);
|
||||||
|
ScriptParams[0] = CPools::GetObjectPool()->GetIndex(pObj);
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
if (m_bIsMissionScript)
|
||||||
|
CTheScripts::MissionCleanup.AddEntityToList(ScriptParams[0], CLEANUP_OBJECT);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_IS_BOAT:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pVehicle);
|
||||||
|
UpdateCompareFlag(pVehicle->m_vehType == VEHICLE_TYPE_BOAT);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_SET_CHAR_OBJ_GOTO_AREA_ANY_MEANS:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 5);
|
||||||
|
CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pPed);
|
||||||
|
float infX = *(float*)&ScriptParams[1];
|
||||||
|
float infY = *(float*)&ScriptParams[2];
|
||||||
|
float supX = *(float*)&ScriptParams[3];
|
||||||
|
float supY = *(float*)&ScriptParams[4];
|
||||||
|
if (infX > supX) {
|
||||||
|
infX = *(float*)&ScriptParams[3];
|
||||||
|
supX = *(float*)&ScriptParams[1];
|
||||||
|
}
|
||||||
|
if (infY > supY) {
|
||||||
|
infY = *(float*)&ScriptParams[4];
|
||||||
|
supY = *(float*)&ScriptParams[2];
|
||||||
|
}
|
||||||
|
CVector pos;
|
||||||
|
pos.x = (infX + supX) / 2;
|
||||||
|
pos.y = (infY + supY) / 2;
|
||||||
|
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
|
||||||
|
float radius = max(pos.x - infX, pos.y - infY);
|
||||||
|
pPed->bScriptObjectiveCompleted = false;
|
||||||
|
pPed->SetObjective(OBJECTIVE_GOTO_AREA_ANY_MEANS, pos, radius);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//case COMMAND_SET_COLL_OBJ_GOTO_AREA_ANY_MEANS:
|
||||||
|
case COMMAND_IS_PLAYER_STOPPED:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CPlayerInfo* pPlayer = &CWorld::Players[ScriptParams[0]];
|
||||||
|
UpdateCompareFlag(CTheScripts::IsPlayerStopped(pPlayer));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_IS_CHAR_STOPPED:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
|
||||||
|
UpdateCompareFlag(CTheScripts::IsPedStopped(pPed));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_MESSAGE_WAIT:
|
||||||
|
CollectParameters(&m_nIp, 2);
|
||||||
|
m_nWakeTime = CTimer::GetTimeInMilliseconds() + ScriptParams[0];
|
||||||
|
if (ScriptParams[1] != 0)
|
||||||
|
m_bSkipWakeTime = true;
|
||||||
|
return 1;
|
||||||
|
case COMMAND_ADD_PARTICLE_EFFECT:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 5);
|
||||||
|
CVector pos = *(CVector*)&ScriptParams[0];
|
||||||
|
if (pos.z <= 100.0f)
|
||||||
|
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
|
||||||
|
CParticleObject::AddObject(ScriptParams[0], pos, ScriptParams[4] != 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_SWITCH_WIDESCREEN:
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
if (ScriptParams[0] != 0)
|
||||||
|
TheCamera.SetWideScreenOn();
|
||||||
|
else
|
||||||
|
TheCamera.SetWideScreenOff();
|
||||||
|
return 0;
|
||||||
|
case COMMAND_ADD_SPRITE_BLIP_FOR_CAR:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 2);
|
||||||
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pVehicle);
|
||||||
|
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
||||||
|
int id = CRadar::SetEntityBlip(BLIP_CAR, ScriptParams[0], 0, BLIP_DISPLAY_BOTH);
|
||||||
|
CRadar::SetBlipSprite(id, ScriptParams[1]);
|
||||||
|
ScriptParams[0] = id;
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_ADD_SPRITE_BLIP_FOR_CHAR:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 2);
|
||||||
|
CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pPed);
|
||||||
|
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
||||||
|
int id = CRadar::SetEntityBlip(BLIP_CHAR, ScriptParams[0], 1, BLIP_DISPLAY_BOTH);
|
||||||
|
CRadar::SetBlipSprite(id, ScriptParams[1]);
|
||||||
|
ScriptParams[0] = id;
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_ADD_SPRITE_BLIP_FOR_OBJECT:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 2);
|
||||||
|
CObject* pObject = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pObject);
|
||||||
|
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
||||||
|
int id = CRadar::SetEntityBlip(BLIP_OBJECT, ScriptParams[0], 6, BLIP_DISPLAY_BOTH);
|
||||||
|
CRadar::SetBlipSprite(id, ScriptParams[1]);
|
||||||
|
ScriptParams[0] = id;
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_ADD_SPRITE_BLIP_FOR_CONTACT_POINT:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 4);
|
||||||
|
CVector pos = *(CVector*)&ScriptParams[0];
|
||||||
|
if (pos.z <= -100.0f)
|
||||||
|
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
|
||||||
|
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
||||||
|
int id = CRadar::SetCoordBlip(BLIP_CONTACT_POINT, pos, 2, BLIP_DISPLAY_BOTH);
|
||||||
|
CRadar::SetBlipSprite(id, ScriptParams[3]);
|
||||||
|
ScriptParams[0] = id;
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_ADD_SPRITE_BLIP_FOR_COORD:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 4);
|
||||||
|
CVector pos = *(CVector*)&ScriptParams[0];
|
||||||
|
if (pos.z <= -100.0f)
|
||||||
|
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y);
|
||||||
|
CRadar::GetActualBlipArrayIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
|
||||||
|
int id = CRadar::SetCoordBlip(BLIP_COORD, pos, 5, BLIP_DISPLAY_BOTH);
|
||||||
|
CRadar::SetBlipSprite(id, ScriptParams[3]);
|
||||||
|
ScriptParams[0] = id;
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_SET_CHAR_ONLY_DAMAGED_BY_PLAYER:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 2);
|
||||||
|
CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pPed);
|
||||||
|
pPed->bOnlyDamagedByPlayer = (ScriptParams[1] != 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_SET_CAR_ONLY_DAMAGED_BY_PLAYER:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 2);
|
||||||
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pVehicle);
|
||||||
|
pVehicle->bOnlyDamagedByPlayer = (ScriptParams[1] != 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_SET_CHAR_PROOFS:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 6);
|
||||||
|
CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pPed);
|
||||||
|
pPed->bBulletProof = (ScriptParams[1] != 0);
|
||||||
|
pPed->bFireProof = (ScriptParams[2] != 0);
|
||||||
|
pPed->bExplosionProof = (ScriptParams[3] != 0);
|
||||||
|
pPed->bCollisionProof = (ScriptParams[4] != 0);
|
||||||
|
pPed->bMeleeProof = (ScriptParams[5] != 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_SET_CAR_PROOFS:
|
||||||
|
{
|
||||||
|
CollectParameters(&m_nIp, 6);
|
||||||
|
CVehicle* pVehicle = CPools::GetVehiclePool()->GetAt(ScriptParams[0]);
|
||||||
|
assert(pVehicle);
|
||||||
|
pVehicle->bBulletProof = (ScriptParams[1] != 0);
|
||||||
|
pVehicle->bFireProof = (ScriptParams[2] != 0);
|
||||||
|
pVehicle->bExplosionProof = (ScriptParams[3] != 0);
|
||||||
|
pVehicle->bCollisionProof = (ScriptParams[4] != 0);
|
||||||
|
pVehicle->bMeleeProof = (ScriptParams[5] != 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case COMMAND_IS_PLAYER_IN_ANGLED_AREA_2D:
|
||||||
|
case COMMAND_IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_2D:
|
||||||
|
case COMMAND_IS_PLAYER_IN_ANGLED_AREA_IN_CAR_2D:
|
||||||
|
case COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_2D:
|
||||||
|
case COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_2D:
|
||||||
|
case COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_2D:
|
||||||
|
case COMMAND_IS_PLAYER_IN_ANGLED_AREA_3D:
|
||||||
|
case COMMAND_IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_3D:
|
||||||
|
case COMMAND_IS_PLAYER_IN_ANGLED_AREA_IN_CAR_3D:
|
||||||
|
case COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_3D:
|
||||||
|
case COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_3D:
|
||||||
|
case COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_3D:
|
||||||
|
PlayerInAngledAreaCheckCommand(command, &m_nIp);
|
||||||
|
return 0;
|
||||||
|
case COMMAND_DEACTIVATE_GARAGE:
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
CGarages::DeActivateGarage(ScriptParams[0]);
|
||||||
|
return 0;
|
||||||
|
case COMMAND_GET_NUMBER_OF_CARS_COLLECTED_BY_GARAGE:
|
||||||
|
CollectParameters(&m_nIp, 1);
|
||||||
|
ScriptParams[0] = CGarages::QueryCarsCollected(ScriptParams[0]);
|
||||||
|
StoreParameters(&m_nIp, 1);
|
||||||
|
return 0;
|
||||||
|
case COMMAND_HAS_CAR_BEEN_TAKEN_TO_GARAGE:
|
||||||
|
CollectParameters(&m_nIp, 2);
|
||||||
|
UpdateCompareFlag(CGarages::HasThisCarBeenCollected(ScriptParams[0], ScriptParams[1] - 1));
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
assert(0);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int16 CRunningScript::GetPadState(uint16 pad, uint16 button)
|
int16 CRunningScript::GetPadState(uint16 pad, uint16 button)
|
||||||
{
|
{
|
||||||
CPad* pPad = CPad::GetPad(pad);
|
CPad* pPad = CPad::GetPad(pad);
|
||||||
|
@ -5175,7 +5534,6 @@ bool CTheScripts::IsVehicleStopped(CVehicle* pVehicle)
|
||||||
return 0.01f * CTimer::GetTimeStep() >= pVehicle->m_fDistanceTravelled;
|
return 0.01f * CTimer::GetTimeStep() >= pVehicle->m_fDistanceTravelled;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRAPPER int8 CRunningScript::ProcessCommandsFrom600To699(int32 command) { EAXJMP(0x444B20); }
|
|
||||||
WRAPPER int8 CRunningScript::ProcessCommandsFrom700To799(int32 command) { EAXJMP(0x4458A0); }
|
WRAPPER int8 CRunningScript::ProcessCommandsFrom700To799(int32 command) { EAXJMP(0x4458A0); }
|
||||||
WRAPPER int8 CRunningScript::ProcessCommandsFrom800To899(int32 command) { EAXJMP(0x448240); }
|
WRAPPER int8 CRunningScript::ProcessCommandsFrom800To899(int32 command) { EAXJMP(0x448240); }
|
||||||
WRAPPER int8 CRunningScript::ProcessCommandsFrom900To999(int32 command) { EAXJMP(0x44CB80); }
|
WRAPPER int8 CRunningScript::ProcessCommandsFrom900To999(int32 command) { EAXJMP(0x44CB80); }
|
||||||
|
@ -5209,6 +5567,8 @@ WRAPPER void CTheScripts::CleanUpThisObject(CObject*) { EAXJMP(0x454910); }
|
||||||
WRAPPER void CTheScripts::ReadObjectNamesFromScript() { EAXJMP(0x454960); }
|
WRAPPER void CTheScripts::ReadObjectNamesFromScript() { EAXJMP(0x454960); }
|
||||||
WRAPPER void CTheScripts::UpdateObjectIndices() { EAXJMP(0x454AD0); }
|
WRAPPER void CTheScripts::UpdateObjectIndices() { EAXJMP(0x454AD0); }
|
||||||
WRAPPER void CTheScripts::ReadMultiScriptFileOffsetsFromScript() { EAXJMP(0x454BC0); }
|
WRAPPER void CTheScripts::ReadMultiScriptFileOffsetsFromScript() { EAXJMP(0x454BC0); }
|
||||||
|
WRAPPER bool CTheScripts::IsPedStopped(CPed*) { EAXJMP(0x454670); }
|
||||||
|
WRAPPER bool CTheScripts::IsPlayerStopped(CPlayerInfo*) { EAXJMP(0x4546C0); }
|
||||||
|
|
||||||
STARTPATCHES
|
STARTPATCHES
|
||||||
InjectHook(0x437AE0, &CMissionCleanup::Init, PATCH_JUMP);
|
InjectHook(0x437AE0, &CMissionCleanup::Init, PATCH_JUMP);
|
||||||
|
|
|
@ -8,6 +8,7 @@ class CBuilding;
|
||||||
class CVehicle;
|
class CVehicle;
|
||||||
class CPed;
|
class CPed;
|
||||||
class CObject;
|
class CObject;
|
||||||
|
class CPlayerInfo;
|
||||||
|
|
||||||
struct CScriptRectangle
|
struct CScriptRectangle
|
||||||
{
|
{
|
||||||
|
@ -339,6 +340,9 @@ public:
|
||||||
static void Process();
|
static void Process();
|
||||||
static CRunningScript* StartTestScript();
|
static CRunningScript* StartTestScript();
|
||||||
static bool IsPlayerOnAMission();
|
static bool IsPlayerOnAMission();
|
||||||
|
static bool IsPedStopped(CPed*);
|
||||||
|
static bool IsPlayerStopped(CPlayerInfo*);
|
||||||
|
static bool IsVehicleStopped(CVehicle*);
|
||||||
|
|
||||||
static void ReadObjectNamesFromScript();
|
static void ReadObjectNamesFromScript();
|
||||||
static void UpdateObjectIndices();
|
static void UpdateObjectIndices();
|
||||||
|
@ -348,7 +352,6 @@ public:
|
||||||
static void HighlightImportantArea(uint32, float, float, float, float, float);
|
static void HighlightImportantArea(uint32, float, float, float, float, float);
|
||||||
static void DrawDebugSquare(float, float, float, float);
|
static void DrawDebugSquare(float, float, float, float);
|
||||||
static void DrawDebugCube(float, float, float, float, float, float);
|
static void DrawDebugCube(float, float, float, float, float, float);
|
||||||
static bool IsVehicleStopped(CVehicle*);
|
|
||||||
|
|
||||||
static int32 Read4BytesFromScript(uint32* pIp){
|
static int32 Read4BytesFromScript(uint32* pIp){
|
||||||
int32 retval = 0;
|
int32 retval = 0;
|
||||||
|
|
|
@ -162,6 +162,6 @@ enum Config {
|
||||||
|
|
||||||
// Peds
|
// Peds
|
||||||
#define ANIMATE_PED_COL_MODEL
|
#define ANIMATE_PED_COL_MODEL
|
||||||
#define VC_PED_PORTS
|
//#define VC_PED_PORTS
|
||||||
#define NEW_WALK_AROUND_ALGORITHM
|
#define NEW_WALK_AROUND_ALGORITHM
|
||||||
#define CANCELLABLE_CAR_ENTER
|
#define CANCELLABLE_CAR_ENTER
|
||||||
|
|
|
@ -61,8 +61,8 @@ CAutomobile::CAutomobile(int32 id, uint8 CreatedBy)
|
||||||
m_fFireBlowUpTimer = 0.0f;
|
m_fFireBlowUpTimer = 0.0f;
|
||||||
field_4E0 = 0;
|
field_4E0 = 0;
|
||||||
bTaxiLight = m_sAllTaxiLights;
|
bTaxiLight = m_sAllTaxiLights;
|
||||||
m_auto_flagA20 = false;
|
bFixedColour = false;
|
||||||
m_auto_flagA40 = false;
|
bBigWheels = false;
|
||||||
bWaterTight = false;
|
bWaterTight = false;
|
||||||
|
|
||||||
SetModelIndex(id);
|
SetModelIndex(id);
|
||||||
|
|
|
@ -87,8 +87,8 @@ public:
|
||||||
uint8 m_bombType : 3;
|
uint8 m_bombType : 3;
|
||||||
uint8 bTaxiLight : 1;
|
uint8 bTaxiLight : 1;
|
||||||
uint8 bHadDriver : 1; // for bombs
|
uint8 bHadDriver : 1; // for bombs
|
||||||
uint8 m_auto_flagA20 : 1;
|
uint8 bFixedColour : 1;
|
||||||
uint8 m_auto_flagA40 : 1;
|
uint8 bBigWheels : 1;
|
||||||
uint8 bWaterTight : 1; // no damage for non-player peds
|
uint8 bWaterTight : 1; // no damage for non-player peds
|
||||||
uint8 bNotDamagedUpsideDown : 1;
|
uint8 bNotDamagedUpsideDown : 1;
|
||||||
uint8 bMoreResistantToDamage : 1;
|
uint8 bMoreResistantToDamage : 1;
|
||||||
|
|
Loading…
Reference in a new issue