Merge branch 'master' into miami

# Conflicts:
#	src/modelinfo/ClumpModelInfo.cpp
This commit is contained in:
Sergeanur
2020-05-14 17:05:42 +03:00
18 changed files with 211 additions and 153 deletions

View File

@ -16049,7 +16049,11 @@ CPed::SeekCar(void)
}
if (dest.x == 0.0f && dest.y == 0.0f) {
#ifdef FIX_BUGS
if ((!IsPlayer() && CharCreatedBy != MISSION_CHAR) || vehToSeek->VehicleCreatedBy != MISSION_VEHICLE || vehToSeek->pDriver || !vehToSeek->CanPedOpenLocks(this)) {
#else
if ((!IsPlayer() && CharCreatedBy != MISSION_CHAR) || vehToSeek->VehicleCreatedBy != MISSION_VEHICLE || vehToSeek->pDriver) {
#endif
RestorePreviousState();
if (IsPlayer()) {
ClearObjective();
@ -17621,23 +17625,25 @@ CPed::SetExitBoat(CVehicle *boat)
}
#ifdef COMPATIBLE_SAVES
#define CopyFromBuf(buf, data) memcpy(&data, buf, sizeof(data)); SkipSaveBuf(buf, sizeof(data));
#define CopyToBuf(buf, data) memcpy(buf, &data, sizeof(data)); SkipSaveBuf(buf, sizeof(data));
void
CPed::Save(uint8*& buf)
{
SkipSaveBuf(buf, 52);
WriteSaveBuf<float>(buf, GetPosition().x);
WriteSaveBuf<float>(buf, GetPosition().y);
WriteSaveBuf<float>(buf, GetPosition().z);
CopyToBuf(buf, GetPosition().x);
CopyToBuf(buf, GetPosition().y);
CopyToBuf(buf, GetPosition().z);
SkipSaveBuf(buf, 288);
WriteSaveBuf<uint8>(buf, CharCreatedBy);
CopyToBuf(buf, CharCreatedBy);
SkipSaveBuf(buf, 351);
WriteSaveBuf<float>(buf, m_fHealth);
WriteSaveBuf<float>(buf, m_fArmour);
CopyToBuf(buf, m_fHealth);
CopyToBuf(buf, m_fArmour);
SkipSaveBuf(buf, 148);
for (int i = 0; i < 13; i++) // has to be hardcoded
m_weapons[i].Save(buf);
SkipSaveBuf(buf, 5);
WriteSaveBuf<uint8>(buf, m_maxWeaponTypeAllowed);
CopyToBuf(buf, m_maxWeaponTypeAllowed);
SkipSaveBuf(buf, 162);
}
@ -17645,19 +17651,21 @@ void
CPed::Load(uint8*& buf)
{
SkipSaveBuf(buf, 52);
GetMatrix().GetPosition().x = ReadSaveBuf<float>(buf);
GetMatrix().GetPosition().y = ReadSaveBuf<float>(buf);
GetMatrix().GetPosition().z = ReadSaveBuf<float>(buf);
CopyFromBuf(buf, GetMatrix().GetPosition().x);
CopyFromBuf(buf, GetMatrix().GetPosition().y);
CopyFromBuf(buf, GetMatrix().GetPosition().z);
SkipSaveBuf(buf, 288);
CharCreatedBy = ReadSaveBuf<uint8>(buf);
CopyFromBuf(buf, CharCreatedBy);
SkipSaveBuf(buf, 351);
m_fHealth = ReadSaveBuf<float>(buf);
m_fArmour = ReadSaveBuf<float>(buf);
CopyFromBuf(buf, m_fHealth);
CopyFromBuf(buf, m_fArmour);
SkipSaveBuf(buf, 148);
for (int i = 0; i < 13; i++) // has to be hardcoded
m_weapons[i].Load(buf);
SkipSaveBuf(buf, 5);
m_maxWeaponTypeAllowed = ReadSaveBuf<uint8>(buf);
CopyFromBuf(buf, m_maxWeaponTypeAllowed);
SkipSaveBuf(buf, 162);
}
#undef CopyFromBuf
#undef CopyToBuf
#endif

View File

@ -64,8 +64,8 @@ CPedIK::RotateTorso(AnimBlendFrameData *node, LimbOrientation *limb, bool change
// We can't get the parent matrix of an hanim frame but
// this function is always called with PED_MID, so we know the parent frame.
// Trouble is that PED_MID is "Smid" on PS2/PC but BONE_torso on mobile/xbox...
// so this doesn't exactly do what we'd like anyway
RwMatrix *mat = GetComponentMatrix(m_ped, PED_MID);
// Assuming BONE_torso, the parent is BONE_mid, so let's use that:
RwMatrix *mat = GetBoneMatrix(m_ped, BONE_mid);
RwV3d vec1, vec2;
vec1.x = mat->right.z;

View File

@ -1513,17 +1513,19 @@ CPlayerPed::ProcessControl(void)
}
#ifdef COMPATIBLE_SAVES
#define CopyFromBuf(buf, data) memcpy(&data, buf, sizeof(data)); SkipSaveBuf(buf, sizeof(data));
#define CopyToBuf(buf, data) memcpy(buf, &data, sizeof(data)); SkipSaveBuf(buf, sizeof(data));
void
CPlayerPed::Save(uint8*& buf)
{
CPed::Save(buf);
SkipSaveBuf(buf, 16);
WriteSaveBuf<float>(buf, m_fMaxStamina);
CopyToBuf(buf, m_fMaxStamina);
SkipSaveBuf(buf, 28);
WriteSaveBuf<int32>(buf, m_nTargettableObjects[0]);
WriteSaveBuf<int32>(buf, m_nTargettableObjects[1]);
WriteSaveBuf<int32>(buf, m_nTargettableObjects[2]);
WriteSaveBuf<int32>(buf, m_nTargettableObjects[3]);
CopyToBuf(buf, m_nTargettableObjects[0]);
CopyToBuf(buf, m_nTargettableObjects[1]);
CopyToBuf(buf, m_nTargettableObjects[2]);
CopyToBuf(buf, m_nTargettableObjects[3]);
SkipSaveBuf(buf, 116);
}
@ -1532,12 +1534,14 @@ CPlayerPed::Load(uint8*& buf)
{
CPed::Load(buf);
SkipSaveBuf(buf, 16);
m_fMaxStamina = ReadSaveBuf<float>(buf);
CopyFromBuf(buf, m_fMaxStamina);
SkipSaveBuf(buf, 28);
m_nTargettableObjects[0] = ReadSaveBuf<int32>(buf);
m_nTargettableObjects[1] = ReadSaveBuf<int32>(buf);
m_nTargettableObjects[2] = ReadSaveBuf<int32>(buf);
m_nTargettableObjects[3] = ReadSaveBuf<int32>(buf);
CopyFromBuf(buf, m_nTargettableObjects[0]);
CopyFromBuf(buf, m_nTargettableObjects[1]);
CopyFromBuf(buf, m_nTargettableObjects[2]);
CopyFromBuf(buf, m_nTargettableObjects[3]);
SkipSaveBuf(buf, 116);
}
#undef CopyFromBuf
#undef CopyToBuf
#endif