Unlockstats command
This commit is contained in:
parent
85d47594d7
commit
a568e253eb
@ -9,6 +9,41 @@ namespace Components
|
|||||||
return &id;
|
return &id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuickPatch::UnlockStats()
|
||||||
|
{
|
||||||
|
Command::Execute("setPlayerData prestige 10");
|
||||||
|
Command::Execute("setPlayerData experience 2516000");
|
||||||
|
Command::Execute("setPlayerData iconUnlocked cardicon_prestige10_02 1");
|
||||||
|
|
||||||
|
// Unlock challenges
|
||||||
|
Game::StringTable* challengeTable = Game::DB_FindXAssetHeader(Game::XAssetType::ASSET_TYPE_STRINGTABLE, "mp/allchallengestable.csv").stringTable;
|
||||||
|
|
||||||
|
if (challengeTable)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < challengeTable->rowCount; i++)
|
||||||
|
{
|
||||||
|
// Find challenge
|
||||||
|
const char* challenge = Game::TabeLookup(challengeTable, i, 0);
|
||||||
|
|
||||||
|
int maxState = 0;
|
||||||
|
int maxProgress = 0;
|
||||||
|
|
||||||
|
// Find correct tier and progress
|
||||||
|
for (int j = 0; j < 10; j++)
|
||||||
|
{
|
||||||
|
int progress = atoi(Game::TabeLookup(challengeTable, i, 6 + j * 2));
|
||||||
|
if (!progress )break;
|
||||||
|
|
||||||
|
maxState = j + 2;
|
||||||
|
maxProgress = progress;
|
||||||
|
}
|
||||||
|
|
||||||
|
Command::Execute(Utils::VA("setPlayerData challengeState %s %d", challenge, maxState));
|
||||||
|
Command::Execute(Utils::VA("setPlayerData challengeProgress %s %d", challenge, maxProgress));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QuickPatch::QuickPatch()
|
QuickPatch::QuickPatch()
|
||||||
{
|
{
|
||||||
// protocol version (workaround for hacks)
|
// protocol version (workaround for hacks)
|
||||||
@ -112,5 +147,10 @@ namespace Components
|
|||||||
Utils::Hook::Nop(0x6830B1, 20);
|
Utils::Hook::Nop(0x6830B1, 20);
|
||||||
Utils::Hook(0x682EBF, QuickPatch::GetStatsID, HOOK_CALL).Install()->Quick();
|
Utils::Hook(0x682EBF, QuickPatch::GetStatsID, HOOK_CALL).Install()->Quick();
|
||||||
Utils::Hook(0x6830B1, QuickPatch::GetStatsID, HOOK_CALL).Install()->Quick();
|
Utils::Hook(0x6830B1, QuickPatch::GetStatsID, HOOK_CALL).Install()->Quick();
|
||||||
|
|
||||||
|
Command::Add("unlockstats", [] (Command::Params params)
|
||||||
|
{
|
||||||
|
QuickPatch::UnlockStats();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@ namespace Components
|
|||||||
QuickPatch();
|
QuickPatch();
|
||||||
const char* GetName() { return "QuickPatch"; };
|
const char* GetName() { return "QuickPatch"; };
|
||||||
|
|
||||||
|
static void UnlockStats();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static _int64* GetStatsID();
|
static _int64* GetStatsID();
|
||||||
};
|
};
|
||||||
|
@ -151,6 +151,16 @@ namespace Game
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* TabeLookup(StringTable* stringtable, int row, int column)
|
||||||
|
{
|
||||||
|
if (!stringtable || !stringtable->values || row >= stringtable->rowCount || column >= stringtable->columnCount) return "";
|
||||||
|
|
||||||
|
const char* value = stringtable->values[row * stringtable->columnCount + column].string;
|
||||||
|
if (!value) value = "";
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
void OOBPrintT(int type, netadr_t netadr, const char* message)
|
void OOBPrintT(int type, netadr_t netadr, const char* message)
|
||||||
{
|
{
|
||||||
int* adr = (int*)&netadr;
|
int* adr = (int*)&netadr;
|
||||||
|
@ -257,6 +257,7 @@ namespace Game
|
|||||||
void Menu_FreeItemMemory(Game::itemDef_t* item);
|
void Menu_FreeItemMemory(Game::itemDef_t* item);
|
||||||
void OOBPrintT(int type, netadr_t netadr, const char* message);
|
void OOBPrintT(int type, netadr_t netadr, const char* message);
|
||||||
void OOBPrintRaw(int type, netadr_t netadr, const char* message, size_t length);
|
void OOBPrintRaw(int type, netadr_t netadr, const char* message, size_t length);
|
||||||
|
const char* TabeLookup(StringTable* stringtable, int row, int column);
|
||||||
const char* UI_LocalizeMapName(const char* mapName);
|
const char* UI_LocalizeMapName(const char* mapName);
|
||||||
const char* UI_LocalizeGameType(const char* gameType);
|
const char* UI_LocalizeGameType(const char* gameType);
|
||||||
}
|
}
|
||||||
|
@ -878,6 +878,20 @@ namespace Game
|
|||||||
const char* entitystring;
|
const char* entitystring;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct StringTableCell
|
||||||
|
{
|
||||||
|
const char *string;
|
||||||
|
int hash;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct StringTable
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
int columnCount;
|
||||||
|
int rowCount;
|
||||||
|
StringTableCell *values;
|
||||||
|
};
|
||||||
|
|
||||||
union XAssetHeader
|
union XAssetHeader
|
||||||
{
|
{
|
||||||
void *data;
|
void *data;
|
||||||
@ -886,6 +900,7 @@ namespace Game
|
|||||||
Material *material;
|
Material *material;
|
||||||
snd_alias_list_t *aliasList;
|
snd_alias_list_t *aliasList;
|
||||||
localizedEntry_s *localize;
|
localizedEntry_s *localize;
|
||||||
|
StringTable *stringTable;
|
||||||
MapEnts* mapEnts;
|
MapEnts* mapEnts;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user