Add compact exe support, fix VC & 3 build errors

This commit is contained in:
Grinch_ 2022-02-03 00:57:07 +06:00
parent 42677147f1
commit 34c50c0f6e
4 changed files with 64 additions and 54 deletions

View File

@ -41,7 +41,7 @@ Let me know if you mind more.
## Things to do on crash ## Things to do on crash
1. Delete the `CheatMenu/json/config.json` file and try again. 1. Delete the `CheatMenu/json/config.json` file and try again.
2. If it's happening after installing a recent mod try removing it. A list of incompatibile mods are [here](https://github.com/user-grinch/Cheat-Menu/issues/48). 2. If it's happening after installing a recent mod try removing it.
3. Try on a fresh installation of the game. 3. Try on a fresh installation of the game.
4. If still doesn't fix your issue, go ahead and report it. 4. If still doesn't fix your issue, go ahead and report it.

View File

@ -82,7 +82,13 @@ BOOL WINAPI DllMain(HINSTANCE hDllHandle, DWORD nReason, LPVOID Reserved)
{ {
if (nReason == DLL_PROCESS_ATTACH) if (nReason == DLL_PROCESS_ATTACH)
{ {
if (GetGameVersion() == BY_GAME(GAME_10US_HOODLUM, GAME_10EN, GAME_10EN)) uint gameVer = GetGameVersion();
#ifdef GTASA
if (gameVer == GAME_10US_HOODLUM || gameVer == GAME_10US_COMPACT)
#else
if (gameVer == BY_GAME(NULL, GAME_10EN, GAME_10EN))
#endif
{ {
CreateThread(nullptr, NULL, (LPTHREAD_START_ROUTINE)&MenuThread, nullptr, NULL, nullptr); CreateThread(nullptr, NULL, (LPTHREAD_START_ROUTINE)&MenuThread, nullptr, NULL, nullptr);
} }

View File

@ -1,7 +1,7 @@
#include "pch.h" #include "pch.h"
#include "filehandler.h" #include "filehandler.h"
// TODO: Clean up this mess, use structures instead? #ifdef GTASA
void FileHandler::GenerateHandlingFile(tHandlingData *pHandling, std::map<int, std::string>& storeMap) void FileHandler::GenerateHandlingFile(tHandlingData *pHandling, std::map<int, std::string>& storeMap)
{ {
FILE* fp = fopen("handling.txt", "w"); FILE* fp = fopen("handling.txt", "w");
@ -57,6 +57,58 @@ void FileHandler::GenerateHandlingFile(tHandlingData *pHandling, std::map<int, s
fclose(fp); fclose(fp);
} }
void FileHandler::FetchHandlingID(std::map<int, std::string>& storeMap)
{
std::string m_FilePath = GAME_PATH((char*)"/data/vehicles.ide");
if (!std::filesystem::exists(m_FilePath))
{
gLog << "Vehicle.ide not found";
return;
}
std::ifstream file(m_FilePath);
std::string line;
while (getline(file, line))
{
/*
Format: model, modelname, txdname, type, handlingId, ...
Skip if first thing isn't model id
*/
if (line[0] <= '0' || line[0] >= '9')
{
continue;
}
// running inside try block to handle user errors, mostly commas
try
{
std::string temp;
std::stringstream ss(line);
// get model
getline(ss, temp, ',');
int model = std::stoi(temp);
// get modelname, txd, type, handlingId
getline(ss, temp, ',');
getline(ss, temp, ',');
getline(ss, temp, ',');
getline(ss, temp, ',');
temp.erase(std::remove_if(temp.begin(), temp.end(), isspace), temp.end());
storeMap[model] = temp;
}
catch (...)
{
gLog << "Error parsing vehicles.ide, " << line << std::endl;
}
}
file.close();
}
#endif
void FileHandler::FetchColorData(std::vector<std::vector<float>>& storeVec) void FileHandler::FetchColorData(std::vector<std::vector<float>>& storeVec)
{ {
std::string m_FilePath = GAME_PATH((char*)"/data/carcols.dat"); std::string m_FilePath = GAME_PATH((char*)"/data/carcols.dat");
@ -130,54 +182,3 @@ void FileHandler::FetchColorData(std::vector<std::vector<float>>& storeVec)
file.close(); file.close();
} }
void FileHandler::FetchHandlingID(std::map<int, std::string>& storeMap)
{
std::string m_FilePath = GAME_PATH((char*)"/data/vehicles.ide");
if (!std::filesystem::exists(m_FilePath))
{
gLog << "Vehicle.ide not found";
return;
}
std::ifstream file(m_FilePath);
std::string line;
while (getline(file, line))
{
/*
Format: model, modelname, txdname, type, handlingId, ...
Skip if first thing isn't model id
*/
if (line[0] <= '0' || line[0] >= '9')
{
continue;
}
// running inside try block to handle user errors, mostly commas
try
{
std::string temp;
std::stringstream ss(line);
// get model
getline(ss, temp, ',');
int model = std::stoi(temp);
// get modelname, txd, type, handlingId
getline(ss, temp, ',');
getline(ss, temp, ',');
getline(ss, temp, ',');
getline(ss, temp, ',');
temp.erase(std::remove_if(temp.begin(), temp.end(), isspace), temp.end());
storeMap[model] = temp;
}
catch (...)
{
gLog << "Error parsing vehicles.ide, " << line << std::endl;
}
}
file.close();
}

View File

@ -17,11 +17,14 @@ public:
TODO: Implement something that also parses modloader data TODO: Implement something that also parses modloader data
*/ */
static void FetchColorData(std::vector<std::vector<float>>& storeVec); static void FetchColorData(std::vector<std::vector<float>>& storeVec);
#ifdef GTASA
/* /*
Parses data/vehicles.ide file and stores handingId in a map Parses data/vehicles.ide file and stores handingId in a map
TODO: Implement something that also parses modloader data TODO: Implement something that also parses modloader data
*/ */
static void FetchHandlingID(std::map<int, std::string>& storeMap); static void FetchHandlingID(std::map<int, std::string>& storeMap);
static void GenerateHandlingFile(tHandlingData *pHandling, std::map<int, std::string>& storeMap); static void GenerateHandlingFile(tHandlingData *pHandling, std::map<int, std::string>& storeMap);
#endif
}; };