Merge pull request #626 from majesticCoding/miami

more original cheats
This commit is contained in:
aap 2020-06-11 10:50:18 +02:00 committed by GitHub
commit 9ab3683148
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 335 additions and 65 deletions

View File

@ -37,6 +37,7 @@
#include "Wanted.h" #include "Wanted.h"
#include "WaterLevel.h" #include "WaterLevel.h"
#include "General.h" #include "General.h"
#include "Fluff.h"
CPad Pads[MAX_PADS]; CPad Pads[MAX_PADS];
CMousePointerStateHelper MousePointerStateHelper; CMousePointerStateHelper MousePointerStateHelper;
@ -249,6 +250,14 @@ void ChangePlayerCheat()
} }
} }
void ChangePlayerModel(const char* name) {
if (!FindPlayerVehicle()) {
FindPlayerPed()->Undress(name);
CStreaming::LoadAllRequestedModels(0);
FindPlayerPed()->Dress();
}
}
void MayhemCheat() void MayhemCheat()
{ {
CHud::SetHelpMessage(TheText.Get("CHEAT1"), true); CHud::SetHelpMessage(TheText.Get("CHEAT1"), true);
@ -404,6 +413,10 @@ void BackToTheFuture(void)
CVehicle::bHoverCheat = !CVehicle::bHoverCheat; CVehicle::bHoverCheat = !CVehicle::bHoverCheat;
} }
void SuicideCheat(void) {
CHud::SetHelpMessage(TheText.Get("CHEAT1"), true);
FindPlayerPed()->InflictDamage(nil, WEAPONTYPE_UNARMED, 1000.0f, PEDPIECE_TORSO, 0);
}
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
@ -1089,50 +1102,169 @@ void CPad::AddToPCCheatString(char c)
KeyBoardCheatString[0] = ' '; KeyBoardCheatString[0] = ' ';
WeaponsForAllCheat(); WeaponsForAllCheat();
} }
// "TRAVELINSTYLE" // "ONSPEED"
if (!_CHEATCMP("ELYTSNILEVART")) else if (!Cheat_strncmp(KeyBoardCheatString, "GJLQ`iR")) {
VehicleCheat(true, MI_BLOODRA); KeyBoardCheatString[0] = ' ';
// "GETTHEREQUICKLY"
if (!_CHEATCMP("YLKCIUQEREHTTEG"))
VehicleCheat(true, MI_BLOODRB);
// "GETTHEREFAST"
if (!_CHEATCMP("TSAFEREHTTEG"))
VehicleCheat(true, MI_SABRETUR);
// "GETTHEREVERYFASTINDEED"
if (!_CHEATCMP("DEEDNITSAFYREVEREHTTEG"))
VehicleCheat(true, MI_HOTRINA);
// "GETTHEREAMAZINGLYFAST"
if (!_CHEATCMP("TSAFYLGNIZAMAEREHTTEG"))
VehicleCheat(true, MI_HOTRINB);
// "THELASTRIDE"
if (!_CHEATCMP("EDIRTSALEHT"))
VehicleCheat(true, MI_ROMERO);
// "ROCKANDROLLCAR"
if (!_CHEATCMP("RACLLORDNAKCOR"))
VehicleCheat(true, MI_LOVEFIST);
// "RUBBISHCAR"
if (!_CHEATCMP("RACHSIBBUR"))
VehicleCheat(true, MI_TRASH);
// "BETTERTHANWALKING"
if (!_CHEATCMP("GNIKLAWNAHTRETTEB"))
VehicleCheat(true, MI_CADDY);
// "TIMEFLIESWHENYOU"
if (!_CHEATCMP("UOYNEHWSEILFEMIT"))
FastTimeCheat(); FastTimeCheat();
}
// "BOOOOORING" // "BOOOOOORING"
if (!_CHEATCMP("GNIROOOOOB")) else if (!Cheat_strncmp(KeyBoardCheatString, "JSPS\\jRVPZO")) {
KeyBoardCheatString[0] = ' ';
SlowTimeCheat(); SlowTimeCheat();
}
// "WHEELSAREALLINEED"
else if (!Cheat_strncmp(KeyBoardCheatString, "GJLOVgOHF]N[SeRNs")) {
KeyBoardCheatString[0] = ' ';
OnlyRenderWheelsCheat();
}
//COMEFLYWITHME
else if (!Cheat_strncmp(KeyBoardCheatString, "HROUVr\\SGPZWJ")) {
KeyBoardCheatString[0] = ' ';
}
// "GRIPISEVERYTHING"
else if (!Cheat_strncmp(KeyBoardCheatString, "JSPIatULWP`QWi_M")) {
KeyBoardCheatString[0] = ' ';
StrongGripCheat();
}
// "CHASESTAT"
else if (!Cheat_strncmp(KeyBoardCheatString, "WF[TRnDOD")) {
KeyBoardCheatString[0] = ' ';
}
// "CHICKSWITHGUNS"
else if (!Cheat_strncmp(KeyBoardCheatString, "VS\\HUoL^TVPQOc")) {
KeyBoardCheatString[0] = ' ';
}
// "ICANTTAKEITANYMORE"
else if (!Cheat_strncmp(KeyBoardCheatString, "HWVNfiD[JPXI[t[G_\\")) {
KeyBoardCheatString[0] = ' ';
SuicideCheat();
}
// "GREENLIGHT"
else if (!Cheat_strncmp(KeyBoardCheatString, "WMNJYiHLSR")) {
KeyBoardCheatString[0] = ' ';
}
// "MIAMITRAFFIC"
else if (!Cheat_strncmp(KeyBoardCheatString, "FNMGNmWPNLVU")) {
KeyBoardCheatString[0] = ' ';
}
// "AHAIRDRESSERSCAR"
else if (!Cheat_strncmp(KeyBoardCheatString, "UFJT_`VZF]QZPaUG")) {
KeyBoardCheatString[0] = ' ';
PinkCarsCheat();
}
// "IWANTITPAINTEDBLACK"
else if (!Cheat_strncmp(KeyBoardCheatString, "NHHMO_H[OTNX[iaT]jS")) {
KeyBoardCheatString[0] = ' ';
BlackCarsCheat();
}
// "TRAVELINSTYLE"
else if (!Cheat_strncmp(KeyBoardCheatString, "HQ`U`iLSFaNZ[")) {
KeyBoardCheatString[0] = ' ';
VehicleCheat(true, MI_BLOODRA);
}
// "THELASTRIDE"
else if (!Cheat_strncmp(KeyBoardCheatString, "HIPSanDSFSa")) {
KeyBoardCheatString[0] = ' ';
VehicleCheat(true, MI_ROMERO);
}
// "ROCKANDROLLCAR"
else if (!Cheat_strncmp(KeyBoardCheatString, "UFJMYjUKOLXKVr")) {
KeyBoardCheatString[0] = ' ';
VehicleCheat(true, MI_LOVEFIST);
}
// "RUBBISHCAR"
else if (!Cheat_strncmp(KeyBoardCheatString, "UFJI`dEIV]")) {
KeyBoardCheatString[0] = ' ';
VehicleCheat(true, MI_TRASH);
}
// "GETTHEREQUICKLY"
else if (!Cheat_strncmp(KeyBoardCheatString, "\\QRDVpTLSPU\\[eT")) {
KeyBoardCheatString[0] = ' ';
VehicleCheat(true, MI_BLOODRB);
}
// "GETTHEREFAST"
else if (!Cheat_strncmp(KeyBoardCheatString, "WXHGRmHOU_RO")) {
KeyBoardCheatString[0] = ' ';
VehicleCheat(true, MI_SABRETUR);
}
// "BETTERTHANWALKING"
else if (!Cheat_strncmp(KeyBoardCheatString, "JSPLY\\ZUBSaZLtaK^")) {
KeyBoardCheatString[0] = ' ';
VehicleCheat(true, MI_CADDY);
}
// "GETTHEREFASTINDEED"
else if (!Cheat_strncmp(KeyBoardCheatString, "GJLE[dWZBQfZLvRXa[^WHL")) {
KeyBoardCheatString[0] = ' ';
VehicleCheat(true, MI_HOTRINA);
}
// "GETTHEREAMAZINGLYFAST"
else if (!Cheat_strncmp(KeyBoardCheatString, "WXHGfgJUJeNUHe_Kdg^HJ")) {
KeyBoardCheatString[0] = ' ';
VehicleCheat(true, MI_HOTRINB);
}
// LOOKLIKELANCE
else if (!Cheat_strncmp(KeyBoardCheatString, "HHUBY`NPMV\\WS")) {
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igbuddy");
}
// IWANTBIGTITS
else if (!Cheat_strncmp(KeyBoardCheatString, "VYPUTdE[OLdQ")) {
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igcandy");
}
// MYSONISALAWYER
else if (!Cheat_strncmp(KeyBoardCheatString, "UJ`XNgDZJY\\[`m")) {
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igken");
}
// ILOOKLIKEHILARY
else if (!Cheat_strncmp(KeyBoardCheatString, "\\WHMVcHRJWXWVlV")) {
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("ighlary");
}
// ROCKANDROLLMAN
else if (!Cheat_strncmp(KeyBoardCheatString, "QFTMYjUKOLXKVr")) {
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igjezz");
}
// ONEARMEDBANDIT
else if (!Cheat_strncmp(KeyBoardCheatString, "WNKON]GLN]NMUo")) {
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igphil");
}
// IDONTHAVETHEMONEYSONNY
else if (!Cheat_strncmp(KeyBoardCheatString, "\\SUP`tHUPXRP[ecGdgXRGN")) {
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igsonny");
}
// FOXYLITTLETHING
else if (!Cheat_strncmp(KeyBoardCheatString, "JSPIa`O[UTYa_oS")) {
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igmerc");
}
// WELOVEOURDICK
else if (!Cheat_strncmp(KeyBoardCheatString, "NHPE_pRLWZYM^")) {
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igdick");
}
// CHEATSHAVEBEENCRACKED
else if (!Cheat_strncmp(KeyBoardCheatString, "GJRDNmFUFPOM]aUYpTOKF")) {
KeyBoardCheatString[0] = ' ';
ChangePlayerModel("igdiaz");
}
// SEAWAYS
else if (!Cheat_strncmp(KeyBoardCheatString, "V^HXN`V")) {
KeyBoardCheatString[0] = ' ';
BackToTheFuture();
}
//CERTAINDEATH
else if (!Cheat_strncmp(KeyBoardCheatString, "KYHFQiLHU]RK")) {
KeyBoardCheatString[0] = ' ';
if (!CSmokeTrails::CigOn)
CSmokeTrails::CigOn = true;
else
CSmokeTrails::CigOn = false;
}
// "ILOVESCOTLAND" // "ILOVESCOTLAND"
if (!_CHEATCMP("DNALTOCSEVOLI")) if (!_CHEATCMP("DNALTOCSEVOLI"))
RainyWeatherCheat(); RainyWeatherCheat();
@ -1141,30 +1273,14 @@ void CPad::AddToPCCheatString(char c)
if (!_CHEATCMP("REHTAEWDAM")) if (!_CHEATCMP("REHTAEWDAM"))
FastWeatherCheat(); FastWeatherCheat();
// "ANICESETOFWHEELS"
if (!_CHEATCMP("SLEEHWFOTESECINA"))
OnlyRenderWheelsCheat();
// "CHITTYCHITTYBB" // "CHITTYCHITTYBB"
if (!_CHEATCMP("BBYTTIHCYTTIHC")) if (!_CHEATCMP("BBYTTIHCYTTIHC"))
ChittyChittyBangBangCheat(); ChittyChittyBangBangCheat();
// "CORNERSLIKEMAD"
if (!_CHEATCMP("DAMEKILSRENROC"))
StrongGripCheat();
// "NASTYLIMBSCHEAT" // "NASTYLIMBSCHEAT"
if (!_CHEATCMP("TAEHCSBMILYTSAN")) if (!_CHEATCMP("TAEHCSBMILYTSAN"))
NastyLimbsCheat(); NastyLimbsCheat();
// "IWANTITPAINTEDBLACK"
if (!_CHEATCMP("KCALBDETNIAPTITNAWI"))
BlackCarsCheat();
// "AHAIRDRESSERSCAR"
if (!_CHEATCMP("RACSRESSERDRIAHA"))
PinkCarsCheat();
#ifdef KANGAROO_CHEAT #ifdef KANGAROO_CHEAT
// "KANGAROO" // "KANGAROO"
if (!_CHEATCMP("OORAGNAK")) if (!_CHEATCMP("OORAGNAK"))
@ -1199,10 +1315,6 @@ void CPad::AddToPCCheatString(char c)
RenderWaterLayersCheat(); RenderWaterLayersCheat();
#endif #endif
// SEAWAYS
if (!_CHEATCMP("SYAWAES"))
BackToTheFuture();
#undef _CHEATCMP #undef _CHEATCMP
} }

View File

@ -13389,6 +13389,8 @@ CPed::PossiblyFindBetterPosToSeekCar(CVector *pos, CVehicle *veh)
return true; return true;
} }
extern CVector vecTestTemp(-1.0f, -1.0f, -1.0f);
// --MIAMI: Done except comment // --MIAMI: Done except comment
void void
CPed::Render(void) CPed::Render(void)
@ -13420,9 +13422,7 @@ CPed::Render(void)
CMatrix mgTopMat, localAdjMat; CMatrix mgTopMat, localAdjMat;
mgTopMat.Attach(RwFrameGetMatrix(frame)); mgTopMat.Attach(RwFrameGetMatrix(frame));
localAdjMat.SetRotateX(player->m_fGunSpinAngle); localAdjMat.SetRotateX(player->m_fGunSpinAngle);
localAdjMat.Rotate(DEGTORAD(-4.477f)* vecTestTemp.x, DEGTORAD(29.731f) * vecTestTemp.y, DEGTORAD(1.064f) * vecTestTemp.z);
// TODO(Miami): What are those numbers?!
// localAdjMat.Rotate(flt_691FFC * flt_97F878, flt_691FF8 * flt_97F87C, flt_691FF4 * flt_97F880);
localAdjMat.GetPosition() += CVector(0.829f, -0.001f, 0.226f); localAdjMat.GetPosition() += CVector(0.829f, -0.001f, 0.226f);
mgTopMat = mgTopMat * localAdjMat; mgTopMat = mgTopMat * localAdjMat;
mgTopMat.UpdateRW(); mgTopMat.UpdateRW();

View File

@ -13,6 +13,20 @@
#include "Stats.h" #include "Stats.h"
#include "maths.h" #include "maths.h"
#include "Frontend.h" #include "Frontend.h"
#include "CutsceneMgr.h"
#include "PlayerPed.h"
#include "Bones.h"
#include "World.h"
bool CSmokeTrails::CigOn = false;
CSmokeTrail CSmokeTrails::aSmoke[3];
RwImVertexIndex SmokeTrailIndices[32] = { 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16 };
float RandomSmoke[16] = { 10.0f, 5.0f, -1.0f, -9.0f, -7.0f, -1.0f, 0.0f, 3.0f, 6.0f, 7.0f, 4.0f, 2.0f,
5.0f, 7.0f };
uint8 ScrollCharSet[59][5] = { uint8 ScrollCharSet[59][5] = {
{ 0x00, 0x00, 0x00, 0x00, 0x00 }, // ' ' { 0x00, 0x00, 0x00, 0x00, 0x00 }, // ' '
@ -99,6 +113,8 @@ CMovingThing CMovingThings::aMovingThings[NUMMOVINGTHINGS];
void CMovingThings::Init() void CMovingThings::Init()
{ {
CSmokeTrails::Init();
StartCloseList.m_pNext = &CMovingThings::EndCloseList; StartCloseList.m_pNext = &CMovingThings::EndCloseList;
StartCloseList.m_pPrev = nil; StartCloseList.m_pPrev = nil;
EndCloseList.m_pNext = nil; EndCloseList.m_pNext = nil;
@ -189,6 +205,8 @@ void CMovingThings::Update()
void CMovingThings::Render() void CMovingThings::Render()
{ {
CSmokeTrails::Update();
int i; int i;
for (i = 0; i < 11; ++i) for (i = 0; i < 11; ++i)
{ {
@ -205,6 +223,8 @@ void CMovingThings::Render()
if (aDigitalClocks[i].IsVisible()) if (aDigitalClocks[i].IsVisible())
aDigitalClocks[i].Render(); aDigitalClocks[i].Render();
} }
CSmokeTrails::Render();
} }
// ---------- CMovingThing ---------- // ---------- CMovingThing ----------
@ -866,3 +886,120 @@ void CDigitalClock::Render()
CSprite::FlushSpriteBuffer(); CSprite::FlushSpriteBuffer();
} }
} }
void
CSmokeTrail::RegisterPoint(CVector regPosition, float opacity) {
bool bAddedNewPoint = false;
if (m_time[0] && CTimer::GetTimeInMilliseconds() - m_time[0] > 150) {
bAddedNewPoint = true;
for (int32 i = 15; i > 0; i--) {
m_pos[i] = m_pos[i - 1];
m_time[i] = m_time[i - 1];
m_opacity[i] = m_opacity[i - 1];
}
++m_seed;
}
m_pos[0] = regPosition;
if (bAddedNewPoint || !m_time[0]) {
m_time[0] = CTimer::GetTimeInMilliseconds();
float density = 0.1f / (m_pos[1] - m_pos[2]).Magnitude();
m_opacity[1] = opacity * Min(density, 1.0f);
}
m_opacity[0] = 0.0f;
}
void
CSmokeTrail::Init(int num) {
for (int32 i = 0; i < 16; i++)
m_time[i] = 0;
m_seed = num * 2;
}
void
CSmokeTrails::Init(void) {
for (int32 i = 0; i < 3; i++)
aSmoke[i].Init(i);
}
void
CSmokeTrails::Render(void) {
for (int32 i = 0; i < 3; i++)
aSmoke[i].Render();
}
void
CSmokeTrail::Render(void) {
int numVerts = 0;
RwIm3DVertex TempVertexBuffer[16];
if (TheCamera.IsSphereVisible(m_pos[0], 10.0f)) {
for (int32 i = 0; i < 16; i++) {
int timeSinceSpawned = CTimer::GetTimeInMilliseconds() - m_time[i];
if (timeSinceSpawned > 2250)
m_time[i] = 0;
if (m_time[i]) {
int alpha = (1.0f - timeSinceSpawned / 2250.0f) * 110.0f * m_opacity[i];
float offset = timeSinceSpawned * CWeather::Wind * 0.0001f;
float posX = (m_pos[i].x + timeSinceSpawned * RandomSmoke[(i - m_seed) & 0xF] * 0.00001f) - offset;
float posY = (m_pos[i].y + timeSinceSpawned * RandomSmoke[(i - m_seed + 5) & 0xF] * 0.00001f) - offset;
float posZ = m_pos[i].z + timeSinceSpawned * 0.0004f;
RwIm3DVertexSetRGBA(&TempVertexBuffer[i], 200, 200, 200, alpha);
RwIm3DVertexSetPos(&TempVertexBuffer[i], posX, posY, posZ);
numVerts++;
}
}
}
if (numVerts > 1) {
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, nil);
if (RwIm3DTransform(TempVertexBuffer, numVerts, nil, rwIM3D_VERTEXXYZ | rwIM3D_VERTEXRGBA)) {
RwIm3DRenderIndexedPrimitive(rwPRIMTYPEPOLYLINE, SmokeTrailIndices, 2 * (numVerts - 1));
RwIm3DEnd();
}
}
}
void
CSmokeTrails::Update(void) {
if (!CSmokeTrails::CigOn || TheCamera.Using1stPersonWeaponMode() || !FindPlayerPed() ||
FindPlayerVehicle() || CCutsceneMgr::IsRunning() || !FindPlayerPed()->GetClump())
return;
RwV3d startPos = { 0.026f, 0.15f, 0.02f };
RwV3d endPos = { 0.026f, 0.05f, 0.02f };
RpHAnimHierarchy *hier = GetAnimHierarchyFromSkinClump(FindPlayerPed()->GetClump());
int32 idx = RpHAnimIDGetIndex(hier, ConvertPedNode2BoneTag(PED_HEAD));
RwMatrix *head = &RpHAnimHierarchyGetMatrixArray(hier)[idx];
RwV3dTransformPoints(&startPos, &startPos, 1, head);
RwV3dTransformPoints(&endPos, &endPos, 1, head);
aSmoke[0].RegisterPoint(startPos, 1.0f);
aSmoke[1].RegisterPoint(startPos, 0.75f);
aSmoke[2].RegisterPoint(startPos, 0.5f);
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, nil);
RwIm3DVertex TempVertexBuffer[2];
RwIm3DVertexSetRGBA(&TempVertexBuffer[0], 255, 255, 255, 255);
RwIm3DVertexSetPos(&TempVertexBuffer[0], startPos.x, startPos.y, startPos.z);
RwIm3DVertexSetRGBA(&TempVertexBuffer[1], 255, 255, 255, 255);
RwIm3DVertexSetPos(&TempVertexBuffer[1], endPos.x, endPos.y, endPos.z);
if (RwIm3DTransform(TempVertexBuffer, 2, nil, rwIM3D_VERTEXXYZ | rwIM3D_VERTEXRGBA)) {
RwIm3DRenderIndexedPrimitive(rwPRIMTYPEPOLYLINE, SmokeTrailIndices, 2);
RwIm3DEnd();
}
}

View File

@ -104,3 +104,24 @@ public:
void Update(); void Update();
void Render(); void Render();
}; };
class CSmokeTrail {
CVector m_pos[16];
float m_opacity[16];
int m_time[16];
char m_unused[536];
int m_seed;
public:
void Render(void);
void RegisterPoint(CVector position, float a);
void Init(int num);
};
class CSmokeTrails {
static CSmokeTrail aSmoke[3];
public:
static bool CigOn;
static void Update(void);
static void Render(void);
static void Init(void);
};