Merge pull request #285 from Nick007J/script_dev

600-799 script commands; bug fixes
This commit is contained in:
erorcun
2020-01-07 17:08:51 +03:00
committed by GitHub
37 changed files with 3101 additions and 133 deletions

View File

@ -497,7 +497,7 @@ CPed::CPed(uint32 pedType) : m_pedIK(this)
bChangedSeat = false;
bUpdateAnimHeading = false;
bBodyPartJustCameOff = false;
m_ped_flagC40 = false;
bIsShooting = false;
bFindNewNodeAfterStateRestore = false;
bHasACamera = false;
@ -519,8 +519,8 @@ CPed::CPed(uint32 pedType) : m_pedIK(this)
bFleeAfterExitingCar = false;
bWanderPathAfterExitingCar = false;
m_ped_flagF2 = false;
m_ped_flagF4 = false;
bIsLeader = false;
bDontDragMeOutCar = false;
m_ped_flagF8 = false;
bWillBeQuickJacked = false;
bCancelEnteringCar = false;
@ -528,7 +528,7 @@ CPed::CPed(uint32 pedType) : m_pedIK(this)
bDuckAndCover = false;
bStillOnValidPoly = false;
m_ped_flagG2 = true;
bAllowMedicsToReviveMe = true;
bResetWalkAnims = false;
bStartWanderPathOnFoot = false;
bOnBoat = false;
@ -538,12 +538,12 @@ CPed::CPed(uint32 pedType) : m_pedIK(this)
m_ped_flagH1 = false;
bHitSteepSlope = false;
m_ped_flagH4 = false;
bCullExtraFarAway = false;
bClearObjective = false;
bTryingToReachDryLand = false;
bCollidedWithMyVehicle = false;
bRichFromMugging = false;
m_ped_flagH80 = false;
bChrisCriminal = false;
bShakeFist = false;
bNoCriticalHits = false;
@ -7731,7 +7731,7 @@ CPed::GetNearestDoor(CVehicle *veh, CVector &posToOpen)
CPed *rfPassenger = veh->pPassengers[0];
if (!rfPassenger
|| rfPassenger->m_leader != this && !rfPassenger->m_ped_flagF4 && (veh->VehicleCreatedBy != MISSION_VEHICLE || m_objective != OBJECTIVE_ENTER_CAR_AS_DRIVER)
|| rfPassenger->m_leader != this && !rfPassenger->bDontDragMeOutCar && (veh->VehicleCreatedBy != MISSION_VEHICLE || m_objective != OBJECTIVE_ENTER_CAR_AS_DRIVER)
|| veh->IsRoomForPedToLeaveCar(CAR_DOOR_LF, enterOffset) == 0) {
if ((veh->m_nGettingInFlags & CAR_DOOR_FLAG_RF) == 0
@ -9223,7 +9223,7 @@ CPed::ProcessControl(void)
}
CVisibilityPlugins::SetClumpAlpha(GetClump(), alpha);
m_ped_flagC40 = false;
bIsShooting = false;
BuildPedLists();
bIsInWater = false;
ProcessBuoyancy();
@ -10776,7 +10776,7 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg)
}
if (ped->m_vehEnterType != CAR_DOOR_LF && ped->m_vehEnterType != CAR_DOOR_LR) {
if (pedToDragOut && !pedToDragOut->m_ped_flagF4) {
if (pedToDragOut && !pedToDragOut->bDontDragMeOutCar) {
if (pedToDragOut->m_nPedState != PED_DRIVING) {
ped->QuitEnteringCar();
pedToDragOut = nil;
@ -10807,9 +10807,9 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg)
}
} else {
if (pedToDragOut) {
if (pedToDragOut->m_nPedState != PED_DRIVING || pedToDragOut->m_ped_flagF4) {
if (pedToDragOut->m_nPedState != PED_DRIVING || pedToDragOut->bDontDragMeOutCar) {
// BUG: Player freezes in that condition due to it's objective isn't restored. It's an unfinished feature, used in VC.
// BUG: Player freezes in that condition due to its objective isn't restored. It's an unfinished feature, used in VC.
ped->QuitEnteringCar();
pedToDragOut = nil;
} else {
@ -15860,7 +15860,7 @@ CPed::SeekCar(void)
break;
case STATUS_ABANDONED:
if (m_vehEnterType == CAR_DOOR_RF && vehToSeek->pPassengers[0]) {
if (vehToSeek->pPassengers[0]->m_ped_flagF4) {
if (vehToSeek->pPassengers[0]->bDontDragMeOutCar) {
if (IsPlayer())
CPed::SetEnterCar(vehToSeek, m_vehEnterType);
} else {

View File

@ -317,7 +317,7 @@ public:
uint8 bChangedSeat : 1;
uint8 bUpdateAnimHeading : 1;
uint8 bBodyPartJustCameOff : 1;
uint8 m_ped_flagC40 : 1;
uint8 bIsShooting : 1;
uint8 bFindNewNodeAfterStateRestore : 1;
uint8 bHasACamera : 1; // does ped possess a camera to document accidents involves fire/explosion
@ -339,16 +339,16 @@ public:
uint8 bFleeAfterExitingCar : 1;
uint8 bWanderPathAfterExitingCar : 1;
uint8 m_ped_flagF2 : 1;
uint8 m_ped_flagF4 : 1; // Unfinished feature from VC, probably bDontDragMeOutCar
uint8 bIsLeader : 1;
uint8 bDontDragMeOutCar : 1; // unfinished feature
uint8 m_ped_flagF8 : 1;
uint8 bWillBeQuickJacked : 1;
uint8 bCancelEnteringCar : 1; // after door is opened or couldn't be opened due to it's locked
uint8 bObstacleShowedUpDuringKillObjective : 1;
uint8 bDuckAndCover : 1;
uint8 bStillOnValidPoly : 1;
uint8 m_ped_flagG2 : 1;
uint8 bStillOnValidPoly : 1; // set if the polygon the ped is on is still valid for collision
uint8 bAllowMedicsToReviveMe : 1;
uint8 bResetWalkAnims : 1;
uint8 bStartWanderPathOnFoot : 1; // exits the car if he's in it, reset after path found
uint8 bOnBoat : 1; // not just driver, may be just standing
@ -358,12 +358,12 @@ public:
uint8 m_ped_flagH1 : 1;
uint8 bHitSteepSlope : 1; // has ped collided/is standing on a steep slope (surface type)
uint8 m_ped_flagH4 : 1;
uint8 bCullExtraFarAway : 1; // special ped only gets culled if it's extra far away (for roadblocks)
uint8 bClearObjective : 1;
uint8 bTryingToReachDryLand : 1;
uint8 bTryingToReachDryLand : 1; // has ped just exited boat and trying to get to dry land
uint8 bCollidedWithMyVehicle : 1;
uint8 bRichFromMugging : 1; // ped has lots of cash from mugging people - will drop money if someone points gun to him
uint8 m_ped_flagH80 : 1;
uint8 bRichFromMugging : 1; // ped has lots of cash cause they've been mugging people
uint8 bChrisCriminal : 1; // Is a criminal as killed during Chris' police mission (should be counted as such)
uint8 bShakeFist : 1; // test shake hand at look entity
uint8 bNoCriticalHits : 1; // if set, limbs won't came off

View File

@ -7,6 +7,7 @@
#include "World.h"
#include "RpAnimBlend.h"
#include "General.h"
#include "Pools.h"
CPlayerPed::~CPlayerPed()
{
@ -73,6 +74,17 @@ CPlayerPed::SetWantedLevelNoDrop(int32 level)
m_pWanted->SetWantedLevelNoDrop(level);
}
void
CPlayerPed::MakeObjectTargettable(int32 handle)
{
for (int i = 0; i < ARRAY_SIZE(m_nTargettableObjects); i++) {
if (CPools::GetObjectPool()->GetAt(m_nTargettableObjects[i]) == nil) {
m_nTargettableObjects[i] = handle;
return;
}
}
}
// I don't know the actual purpose of parameter
void
CPlayerPed::AnnoyPlayerPed(bool annoyedByPassingEntity)

View File

@ -56,6 +56,7 @@ public:
void UseSprintEnergy(void);
class CPlayerInfo *GetPlayerInfoForThisPlayerPed();
void SetRealMoveAnim(void);
void MakeObjectTargettable(int32);
static void SetupPlayerPed(int32);
static void DeactivatePlayerPed(int32);