Peds, ProcessObjective and fixes

This commit is contained in:
eray orçunus 2019-09-27 00:01:50 +03:00
parent 3cb0a62ee6
commit 0c385195d8
7 changed files with 1593 additions and 70 deletions

View File

@ -14,6 +14,7 @@ WRAPPER void CCarAI::AddPoliceOccupants(CVehicle*) { EAXJMP(0x415C60); }
WRAPPER void CCarAI::AddAmbulanceOccupants(CVehicle*) { EAXJMP(0x415CE0); } WRAPPER void CCarAI::AddAmbulanceOccupants(CVehicle*) { EAXJMP(0x415CE0); }
WRAPPER void CCarAI::AddFiretruckOccupants(CVehicle*) { EAXJMP(0x415D00); } WRAPPER void CCarAI::AddFiretruckOccupants(CVehicle*) { EAXJMP(0x415D00); }
WRAPPER void CCarAI::TellOccupantsToLeaveCar(CVehicle*) { EAXJMP(0x415D20); } WRAPPER void CCarAI::TellOccupantsToLeaveCar(CVehicle*) { EAXJMP(0x415D20); }
WRAPPER float CCarAI::GetCarToGoToCoors(CVehicle*, CVector*) { EAXJMP(0x415B10); }
void CCarAI::CarHasReasonToStop(CVehicle* pVehicle) void CCarAI::CarHasReasonToStop(CVehicle* pVehicle)
{ {

View File

@ -16,4 +16,5 @@ public:
static void AddFiretruckOccupants(CVehicle*); static void AddFiretruckOccupants(CVehicle*);
static void CarHasReasonToStop(CVehicle*); static void CarHasReasonToStop(CVehicle*);
static void TellOccupantsToLeaveCar(CVehicle*); static void TellOccupantsToLeaveCar(CVehicle*);
static float GetCarToGoToCoors(CVehicle*, CVector*);
}; };

View File

@ -137,5 +137,6 @@ enum Config {
#define USE_DEBUG_SCRIPT_LOADER #define USE_DEBUG_SCRIPT_LOADER
#define EXPLODING_AIRTRAIN // can blow up jumbo jet with rocket launcher #define EXPLODING_AIRTRAIN // can blow up jumbo jet with rocket launcher
#define ANIMATE_PED_COL_MODEL #define ANIMATE_PED_COL_MODEL
#define CANCELLABLE_CAR_ENTER
//#define REMOVE_TREADABLE_PATHFIND //#define REMOVE_TREADABLE_PATHFIND
#define CANCELLABLE_CAR_ENTER
#define VC_PED_PORTS

File diff suppressed because it is too large Load Diff

View File

@ -129,7 +129,7 @@ enum eObjective : uint32 {
OBJECTIVE_IDLE, OBJECTIVE_IDLE,
OBJECTIVE_FLEE_TILL_SAFE, OBJECTIVE_FLEE_TILL_SAFE,
OBJECTIVE_GUARD_SPOT, OBJECTIVE_GUARD_SPOT,
OBJECTIVE_GUARD_AREA, OBJECTIVE_GUARD_AREA, // not implemented
OBJECTIVE_WAIT_IN_CAR, OBJECTIVE_WAIT_IN_CAR,
OBJECTIVE_WAIT_IN_CAR_THEN_GETOUT, OBJECTIVE_WAIT_IN_CAR_THEN_GETOUT,
OBJECTIVE_KILL_CHAR_ON_FOOT, OBJECTIVE_KILL_CHAR_ON_FOOT,
@ -141,15 +141,15 @@ enum eObjective : uint32 {
OBJECTIVE_LEAVE_VEHICLE, OBJECTIVE_LEAVE_VEHICLE,
OBJECTIVE_ENTER_CAR_AS_PASSENGER, OBJECTIVE_ENTER_CAR_AS_PASSENGER,
OBJECTIVE_ENTER_CAR_AS_DRIVER, OBJECTIVE_ENTER_CAR_AS_DRIVER,
OBJECTIVE_FOLLOW_CAR_IN_CAR, OBJECTIVE_FOLLOW_CAR_IN_CAR, // seems not implemented so far
OBJECTIVE_FIRE_AT_OBJ_FROM_VEHICLE, OBJECTIVE_FIRE_AT_OBJ_FROM_VEHICLE, // not implemented
OBJECTIVE_DESTROY_OBJ, OBJECTIVE_DESTROY_OBJ, // not implemented
OBJECTIVE_DESTROY_CAR, OBJECTIVE_DESTROY_CAR,
OBJECTIVE_GOTO_AREA_ANY_MEANS, OBJECTIVE_GOTO_AREA_ANY_MEANS,
OBJECTIVE_GOTO_AREA_ON_FOOT, OBJECTIVE_GOTO_AREA_ON_FOOT,
OBJECTIVE_RUN_TO_AREA, OBJECTIVE_RUN_TO_AREA,
OBJECTIVE_23, OBJECTIVE_23, // not implemented
OBJECTIVE_24, OBJECTIVE_24, // not implemented
OBJECTIVE_FIGHT_CHAR, OBJECTIVE_FIGHT_CHAR,
OBJECTIVE_SET_LEADER, OBJECTIVE_SET_LEADER,
OBJECTIVE_FOLLOW_ROUTE, OBJECTIVE_FOLLOW_ROUTE,
@ -160,7 +160,9 @@ enum eObjective : uint32 {
OBJECTIVE_STEAL_ANY_CAR, OBJECTIVE_STEAL_ANY_CAR,
OBJECTIVE_MUG_CHAR, OBJECTIVE_MUG_CHAR,
OBJECTIVE_FLEE_CAR, OBJECTIVE_FLEE_CAR,
OBJECTIVE_35 #ifdef VC_PED_PORTS
OBJECTIVE_LEAVE_CAR_AND_DIE
#endif
}; };
enum { enum {
@ -469,8 +471,8 @@ public:
uint32 m_soundStart; uint32 m_soundStart;
uint16 m_lastQueuedSound; uint16 m_lastQueuedSound;
uint16 m_queuedSound; uint16 m_queuedSound;
CVector m_vecSeekPosEx; CVector m_vecSeekPosEx; // used in objectives
float m_seekExAngle; float m_distanceToCountSeekDoneEx; // used in objectives
static void *operator new(size_t); static void *operator new(size_t);
static void *operator new(size_t, int); static void *operator new(size_t, int);
@ -651,6 +653,11 @@ public:
bool RunToReportCrime(eCrimeType); bool RunToReportCrime(eCrimeType);
bool PlacePedOnDryLand(void); bool PlacePedOnDryLand(void);
bool PossiblyFindBetterPosToSeekCar(CVector*, CVehicle*); bool PossiblyFindBetterPosToSeekCar(CVector*, CVehicle*);
void UpdateFromLeader(void);
int ScanForThreats(void);
void SetEnterCar(CVehicle*, uint32);
bool WarpPedToNearEntityOffScreen(CEntity*);
void SetExitCar(CVehicle*, uint32);
// Static methods // Static methods
static CVector GetLocalPositionToOpenCarDoor(CVehicle *veh, uint32 component, float offset); static CVector GetLocalPositionToOpenCarDoor(CVehicle *veh, uint32 component, float offset);
@ -721,6 +728,10 @@ public:
void PointGunAt(void); void PointGunAt(void);
bool ServiceTalkingWhenDead(void); bool ServiceTalkingWhenDead(void);
void SetPedPositionInTrain(void); void SetPedPositionInTrain(void);
void SetShootTimer(uint32);
void SetSeekCar(CVehicle*, uint32);
void SetSeekBoatPosition(CVehicle*);
void SetExitTrain(CVehicle*);
bool HasWeapon(uint8 weaponType) { return m_weapons[weaponType].m_eWeaponType == weaponType; } bool HasWeapon(uint8 weaponType) { return m_weapons[weaponType].m_eWeaponType == weaponType; }
CWeapon &GetWeapon(uint8 weaponType) { return m_weapons[weaponType]; } CWeapon &GetWeapon(uint8 weaponType) { return m_weapons[weaponType]; }
@ -734,6 +745,9 @@ public:
// set by 0482:set_threat_reaction_range_multiplier opcode // set by 0482:set_threat_reaction_range_multiplier opcode
static uint16 &nThreatReactionRangeMultiplier; static uint16 &nThreatReactionRangeMultiplier;
// set by 0481:set_enter_car_range_multiplier opcode
static uint16 &nEnterCarRangeMultiplier;
static bool &bNastyLimbsCheat; static bool &bNastyLimbsCheat;
static bool &bPedCheat2; static bool &bPedCheat2;
static bool &bPedCheat3; static bool &bPedCheat3;

View File

@ -3,4 +3,5 @@
#include "main.h" #include "main.h"
#include "PedRoutes.h" #include "PedRoutes.h"
WRAPPER int16 CRouteNode::GetRouteThisPointIsOn(int16) { EAXJMP(0x4EE7A0); } WRAPPER int16 CRouteNode::GetRouteThisPointIsOn(int16) { EAXJMP(0x4EE7A0); }
WRAPPER CVector CRouteNode::GetPointPosition(int16) { EAXJMP(0x4EE780); }

View File

@ -3,5 +3,6 @@
class CRouteNode class CRouteNode
{ {
public: public:
static int16 GetRouteThisPointIsOn(int16 point); static int16 GetRouteThisPointIsOn(int16);
static CVector GetPointPosition(int16);
}; };