Finish codo maps (step 1)

This commit is contained in:
momo5502 2016-09-24 16:37:13 +02:00
parent 4954303ca3
commit 9c24ad1f57
6 changed files with 114 additions and 115 deletions

2
deps/mongoose vendored

@ -1 +1 @@
Subproject commit abbd44e27697f36f3f02f0d3e827ff496af4f461 Subproject commit 2e748fdbf129de08255ae07671d235efc466b58c

2
deps/protobuf vendored

@ -1 +1 @@
Subproject commit 1bf97d87f53d04eafaf7bbe8fceb9014e227e16b Subproject commit a289d43608cbfdd27a04807882580afd83d5b048

View File

@ -23,6 +23,7 @@ namespace Components
Utils::Hook Zones::LoadStructuredDataStructPropertyArrayHook; Utils::Hook Zones::LoadStructuredDataStructPropertyArrayHook;
Utils::Hook Zones::LoadPathDataTailHook; Utils::Hook Zones::LoadPathDataTailHook;
Utils::Hook Zones::LoadWeaponAttachHook; Utils::Hook Zones::LoadWeaponAttachHook;
Utils::Hook Zones::LoadWeaponCompleteDefHook;
bool Zones::LoadFxEffectDef(bool atStreamStart, char* buffer, int size) bool Zones::LoadFxEffectDef(bool atStreamStart, char* buffer, int size)
{ {
@ -41,7 +42,7 @@ namespace Components
{ {
AssetHandler::Relocate(buffer + (260 * i), buffer + (252 * i), 252); AssetHandler::Relocate(buffer + (260 * i), buffer + (252 * i), 252);
std::memcpy(&elems[i], buffer + (260 * i), 252); std::memcpy(&elems[i], buffer + (260 * i), 252);
Zones::FxEffectStrings[i] = *(char**)(buffer + (260 * i) + 256); Zones::FxEffectStrings[i] = *reinterpret_cast<char**>(buffer + (260 * i) + 256);
} }
std::memcpy(buffer, elems,sizeof(Game::FxElemDef) * count); std::memcpy(buffer, elems,sizeof(Game::FxElemDef) * count);
@ -67,7 +68,7 @@ namespace Components
{ {
Game::Load_FxElemDef(atStreamStart); Game::Load_FxElemDef(atStreamStart);
*Game::varXString = &Zones::FxEffectStrings[Zones::FxEffectIndex++]; *Game::varXString = &Zones::FxEffectStrings[Zones::FxEffectIndex++];
Game::Load_XString(0); Game::Load_XString(false);
} }
bool Zones::LoadXModel(bool atStreamStart, char* xmodel, int size) bool Zones::LoadXModel(bool atStreamStart, char* xmodel, int size)
@ -152,43 +153,41 @@ namespace Components
return result; return result;
} }
Utils::Hook loadWeaponDefHook; void Zones::LoadWeaponCompleteDef()
void Load_WeaponDef_CodC(int /*doLoad*/)
{ {
// setup structures we use // setup structures we use
DWORD varWeaponDef = *(DWORD*)0x112A9F4;//*(DWORD*)0x112AE14; char* varWeaponCompleteDef = *reinterpret_cast<char**>(0x112A9F4);
// and do the stuff // and do the stuff
Game::Load_Stream(1, (void*)varWeaponDef, (Zones::ZoneVersion >= 318) ? 3156 : 3112); Game::Load_Stream(true, varWeaponCompleteDef, (Zones::ZoneVersion >= 318) ? 3156 : 3112);
Game::DB_PushStreamPos(3); Game::DB_PushStreamPos(3);
*Game::varXString = (char**)(varWeaponDef + 0); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 0);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 4); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 4);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 8); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 8);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 12); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 12);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXModelPtr = (Game::XModel*)(varWeaponDef + 16); *Game::varXModelPtr = reinterpret_cast<Game::XModel**>(varWeaponCompleteDef + 16);
Game::Load_XModelPtr(false); Game::Load_XModelPtr(false);
for (int i = 0, offset = 20; i < 32; ++i, offset += 4) for (int i = 0, offset = 20; i < 32; ++i, offset += 4)
{ {
*Game::varXModelPtr = (Game::XModel*)(varWeaponDef + offset); *Game::varXModelPtr = reinterpret_cast<Game::XModel**>(varWeaponCompleteDef + offset);
Game::Load_XModelPtr(false); Game::Load_XModelPtr(false);
} }
// 148 // 148
for (int offset = 148; offset <= 168; offset += 4) for (int offset = 148; offset <= 168; offset += 4)
{ {
*Game::varXModelPtr = (Game::XModel*)(varWeaponDef + offset); *Game::varXModelPtr = reinterpret_cast<Game::XModel**>(varWeaponCompleteDef + offset);
Game::Load_XModelPtr(false); Game::Load_XModelPtr(false);
} }
@ -196,32 +195,32 @@ namespace Components
// 32 scriptstrings, should not need to be loaded // 32 scriptstrings, should not need to be loaded
// 236 // 236
*Game::varXString = (char**)(varWeaponDef + 236); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 236);
Game::Load_XStringArray(false, 48); Game::Load_XStringArray(false, 48);
// 428 // 428
*Game::varXString = (char**)(varWeaponDef + 428); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 428);
Game::Load_XStringArray(false, 48); Game::Load_XStringArray(false, 48);
// 620 // 620
*Game::varXString = (char**)(varWeaponDef + 620); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 620);
Game::Load_XStringArray(false, 48); Game::Load_XStringArray(false, 48);
// 812 // 812
// 16 * 4 scriptstrings // 16 * 4 scriptstrings
// 972 // 972
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 972);; *Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 972);
Game::Load_FxEffectDefHandle(false); Game::Load_FxEffectDefHandle(false);
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 976); *Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 976);
Game::Load_FxEffectDefHandle(false); Game::Load_FxEffectDefHandle(false);
// 980 // 980
// 50 soundalias name references; up to and including 1180 // 50 soundalias name references; up to and including 1180
for (int i = 0, offset = 980; i < 50; ++i, offset += 4) for (int i = 0, offset = 980; i < 50; ++i, offset += 4)
{ {
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + offset); *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + offset);
Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name);
} }
@ -229,19 +228,19 @@ namespace Components
{ {
for (int i = 0, offset = 1184; i < 2; ++i, offset += 4) for (int i = 0, offset = 1184; i < 2; ++i, offset += 4)
{ {
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + offset); *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + offset);
Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name);
} }
varWeaponDef += 8; // to compensate for the 2 in between here varWeaponCompleteDef += 8; // to compensate for the 2 in between here
} }
if (*(DWORD*)(varWeaponDef + 1184)) if (*reinterpret_cast<void**>(varWeaponCompleteDef + 1184))
{ {
if (*(DWORD*)(varWeaponDef + 1184) == -1) if (*reinterpret_cast<DWORD*>(varWeaponCompleteDef + 1184) == -1)
{ {
*(DWORD*)(varWeaponDef + 1184) = (DWORD)Game::DB_AllocStreamPos(3); *reinterpret_cast<void**>(varWeaponCompleteDef + 1184) = Game::DB_AllocStreamPos(3);
*Game::varsnd_alias_list_name = *(Game::snd_alias_list_t***)(varWeaponDef + 1184); *Game::varsnd_alias_list_name = *reinterpret_cast<Game::snd_alias_list_t***>(varWeaponCompleteDef + 1184);
Game::Load_snd_alias_list_nameArray(true, 31); Game::Load_snd_alias_list_nameArray(true, 31);
} }
@ -251,12 +250,12 @@ namespace Components
} }
} }
if (*(DWORD*)(varWeaponDef + 1188)) if (*reinterpret_cast<void**>(varWeaponCompleteDef + 1188))
{ {
if (*(DWORD*)(varWeaponDef + 1188) == -1) if (*reinterpret_cast<DWORD*>(varWeaponCompleteDef + 1188) == -1)
{ {
*(DWORD*)(varWeaponDef + 1188) = (DWORD)Game::DB_AllocStreamPos(3); *reinterpret_cast<void**>(varWeaponCompleteDef + 1188) = Game::DB_AllocStreamPos(3);
*Game::varsnd_alias_list_name = *(Game::snd_alias_list_t***)(varWeaponDef + 1188); *Game::varsnd_alias_list_name = *reinterpret_cast<Game::snd_alias_list_t***>(varWeaponCompleteDef + 1188);
Game::Load_snd_alias_list_nameArray(true, 31); Game::Load_snd_alias_list_nameArray(true, 31);
} }
@ -269,179 +268,178 @@ namespace Components
// 1192 // 1192
for (int offset = 1192; offset <= 1204; offset += 4) for (int offset = 1192; offset <= 1204; offset += 4)
{ {
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + offset); *Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + offset);
Game::Load_FxEffectDefHandle(false); Game::Load_FxEffectDefHandle(false);
} }
// 1208 // 1208
static int matOffsets1[] = { 1208, 1212, 1428, 1432, 1436, 1440, 1444, 1448, 1456, 1464 }; static int matOffsets1[] = { 1208, 1212, 1428, 1432, 1436, 1440, 1444, 1448, 1456, 1464 };
for (int i = 0; i < ARRAYSIZE(matOffsets1); ++i)
for (int i = 0; i < sizeof(matOffsets1) / sizeof(int); ++i)
{ {
*Game::varMaterialHandle = (Game::Material*)(varWeaponDef + matOffsets1[i]); *Game::varMaterialHandle = reinterpret_cast<Game::Material**>(varWeaponCompleteDef + matOffsets1[i]);
Game::Load_MaterialHandle(false); Game::Load_MaterialHandle(false);
} }
*Game::varXString = (char**)(varWeaponDef + 1484); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 1484);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 1492); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 1492);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 1508); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 1508);
Game::Load_XString(false); Game::Load_XString(false);
for (int offset = 1764; offset <= 1776; offset += 4) for (int offset = 1764; offset <= 1776; offset += 4)
{ {
*Game::varMaterialHandle = (Game::Material*)(varWeaponDef + offset); *Game::varMaterialHandle = reinterpret_cast<Game::Material**>(varWeaponCompleteDef + offset);
Game::Load_MaterialHandle(false); Game::Load_MaterialHandle(false);
} }
*Game::varPhysCollmapPtr = (Game::PhysCollmap*)(varWeaponDef + 1964); *Game::varPhysCollmapPtr = reinterpret_cast<Game::PhysCollmap**>(varWeaponCompleteDef + 1964);
Game::Load_PhysCollmapPtr(0); Game::Load_PhysCollmapPtr(false);
*Game::varXModelPtr = (Game::XModel*)(varWeaponDef + 2052); *Game::varXModelPtr = reinterpret_cast<Game::XModel**>(varWeaponCompleteDef + 2052);
Game::Load_XModelPtr(0); Game::Load_XModelPtr(false);
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2060); *Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2060);
Game::Load_FxEffectDefHandle(false); Game::Load_FxEffectDefHandle(false);
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2064); *Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2064);
Game::Load_FxEffectDefHandle(false); Game::Load_FxEffectDefHandle(false);
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + 2068); *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + 2068);
Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name);
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + 2072); *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + 2072);
Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name);
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2336); *Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2336);
Game::Load_FxEffectDefHandle(false); Game::Load_FxEffectDefHandle(false);
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2340); *Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2340);
Game::Load_FxEffectDefHandle(false); Game::Load_FxEffectDefHandle(false);
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2368); // 2376 *Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2368); // 2376
Game::Load_FxEffectDefHandle(false); Game::Load_FxEffectDefHandle(false);
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + 2372); // 2380 *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + 2372); // 2380
Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name);
*Game::varXString = (char**)(varWeaponDef + 2548); // 2556 *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2548); // 2556
Game::Load_XString(false); Game::Load_XString(false);
if (*(DWORD*)(varWeaponDef + 2556) == -1) // 2564 if (*reinterpret_cast<DWORD*>(varWeaponCompleteDef + 2556) == -1) // 2564
{ {
DWORD vec2 = (DWORD)Game::DB_AllocStreamPos(3); void* vec2 = Game::DB_AllocStreamPos(3);
*(DWORD*)(varWeaponDef + 2556) = vec2; *reinterpret_cast<void**>(varWeaponCompleteDef + 2556) = vec2;
Game::Load_Stream(1, (void*)vec2, 8 * *(short*)(varWeaponDef + ((Zones::ZoneVersion >= 318) ? 3076 : 3040))); Game::Load_Stream(true, (void*)vec2, 8 * *reinterpret_cast<short*>(varWeaponCompleteDef + ((Zones::ZoneVersion >= 318) ? 3076 : 3040)));
} }
*Game::varXString = (char**)(varWeaponDef + 2552); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2552);
Game::Load_XString(false); Game::Load_XString(false);
if (*(DWORD*)(varWeaponDef + 2560) == -1) if (*reinterpret_cast<DWORD*>(varWeaponCompleteDef + 2560) == -1)
{ {
DWORD vec2 = (DWORD)Game::DB_AllocStreamPos(3); void* vec2 = Game::DB_AllocStreamPos(3);
*(DWORD*)(varWeaponDef + 2560) = vec2; *reinterpret_cast<void**>(varWeaponCompleteDef + 2560) = vec2;
Game::Load_Stream(1, (void*)vec2, 8 * *(short*)(varWeaponDef + ((Zones::ZoneVersion >= 318) ? 3078 : 3042))); Game::Load_Stream(true, (void*)vec2, 8 * *reinterpret_cast<short*>(varWeaponCompleteDef + ((Zones::ZoneVersion >= 318) ? 3078 : 3042)));
} }
*Game::varXString = (char**)(varWeaponDef + 2640); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2640);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2644); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2644);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2676); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2676);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2680); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2680);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2804); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2804);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2808); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2808);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varTracerDefPtr = (Game::TracerDef*)(varWeaponDef + 2812); *Game::varTracerDefPtr = reinterpret_cast<Game::TracerDef**>(varWeaponCompleteDef + 2812);
Game::Load_TracerDefPtr(false); Game::Load_TracerDefPtr(false);
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + 2840); *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + 2840);
Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); // 2848 Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); // 2848
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2844); *Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2844);
Game::Load_FxEffectDefHandle(false); Game::Load_FxEffectDefHandle(false);
*Game::varXString = (char**)(varWeaponDef + 2848); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2848);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + 2864); *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + 2864);
Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name);
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + 2868); *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + 2868);
Game::Load_snd_alias_list_nameArray(false, 4); Game::Load_snd_alias_list_nameArray(false, 4);
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + 2884); *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + 2884);
Game::Load_snd_alias_list_nameArray(false, 4); Game::Load_snd_alias_list_nameArray(false, 4);
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + 2900); *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + 2900);
Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name);
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + 2904); // 2912 *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + 2904); // 2912
Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name);
if (Zones::ZoneVersion >= 318) if (Zones::ZoneVersion >= 318)
{ {
for (int i = 0, offset = 2972; i < 6; ++i, offset += 4) for (int i = 0, offset = 2972; i < 6; ++i, offset += 4)
{ {
*Game::varsnd_alias_list_name = (Game::snd_alias_list_t**)(varWeaponDef + offset); *Game::varsnd_alias_list_name = reinterpret_cast<Game::snd_alias_list_t**>(varWeaponCompleteDef + offset);
Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name); Game::Load_SndAliasCustom(*Game::varsnd_alias_list_name);
} }
varWeaponDef += (6 * 4); varWeaponCompleteDef += (6 * 4);
varWeaponDef += 12; varWeaponCompleteDef += 12;
} }
else else
{ {
} }
*Game::varXString = (char**)(varWeaponDef + 2984); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2984);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2996); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2996);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 3000); *Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 3000);
Game::Load_XString(false); Game::Load_XString(false);
*Game::varMaterialHandle = (Game::Material*)(varWeaponDef + 3008); *Game::varMaterialHandle = reinterpret_cast<Game::Material**>(varWeaponCompleteDef + 3008);
Game::Load_MaterialHandle(false); Game::Load_MaterialHandle(false);
*Game::varMaterialHandle = (Game::Material*)(varWeaponDef + 3012); *Game::varMaterialHandle = reinterpret_cast<Game::Material**>(varWeaponCompleteDef + 3012);
Game::Load_MaterialHandle(false); Game::Load_MaterialHandle(false);
*Game::varMaterialHandle = (Game::Material*)(varWeaponDef + 3016); *Game::varMaterialHandle = reinterpret_cast<Game::Material**>(varWeaponCompleteDef + 3016);
Game::Load_MaterialHandle(false); Game::Load_MaterialHandle(false);
if (*(DWORD*)(varWeaponDef + 3044) == -1) if (*reinterpret_cast<DWORD*>(varWeaponCompleteDef + 3044) == -1)
{ {
DWORD vec2 = (DWORD)Game::DB_AllocStreamPos(3); void* vec2 = Game::DB_AllocStreamPos(3);
*(DWORD*)(varWeaponDef + 3044) = vec2; *reinterpret_cast<void**>(varWeaponCompleteDef + 3044) = vec2;
Game::Load_Stream(1, (void*)vec2, 8 * *(short*)(varWeaponDef + 3040)); Game::Load_Stream(true, (void*)vec2, 8 * *reinterpret_cast<short*>(varWeaponCompleteDef + 3040));
} }
if (*(DWORD*)(varWeaponDef + 3048) == -1) if (*reinterpret_cast<DWORD*>(varWeaponCompleteDef + 3048) == -1)
{ {
DWORD vec2 = (DWORD)Game::DB_AllocStreamPos(3); void* vec2 = Game::DB_AllocStreamPos(3);
*(DWORD*)(varWeaponDef + 3048) = vec2; *reinterpret_cast<void**>(varWeaponCompleteDef + 3048) = vec2;
Game::Load_Stream(1, (void*)vec2, 8 * *(short*)(varWeaponDef + 3042)); Game::Load_Stream(true, (void*)vec2, 8 * *reinterpret_cast<short*>(varWeaponCompleteDef + 3042));
} }
Game::DB_PopStreamPos(); Game::DB_PopStreamPos();
@ -468,19 +466,19 @@ namespace Components
if (*reinterpret_cast<char**>(varPathData + 56)) if (*reinterpret_cast<char**>(varPathData + 56))
{ {
*reinterpret_cast<char**>(varPathData + 56) = Game::DB_AllocStreamPos(0); *reinterpret_cast<char**>(varPathData + 56) = Game::DB_AllocStreamPos(0);
Game::Load_Stream(1, *reinterpret_cast<char**>(varPathData + 56), *reinterpret_cast<int*>(varPathData + 52)); Game::Load_Stream(true, *reinterpret_cast<char**>(varPathData + 56), *reinterpret_cast<int*>(varPathData + 52));
} }
if (*reinterpret_cast<char**>(varPathData + 64)) if (*reinterpret_cast<char**>(varPathData + 64))
{ {
*reinterpret_cast<char**>(varPathData + 64) = Game::DB_AllocStreamPos(0); *reinterpret_cast<char**>(varPathData + 64) = Game::DB_AllocStreamPos(0);
Game::Load_Stream(1, *reinterpret_cast<char**>(varPathData + 64), *reinterpret_cast<int*>(varPathData + 60)); Game::Load_Stream(true, *reinterpret_cast<char**>(varPathData + 64), *reinterpret_cast<int*>(varPathData + 60));
} }
if (*reinterpret_cast<char**>(varPathData + 76)) if (*reinterpret_cast<char**>(varPathData + 76))
{ {
*reinterpret_cast<char**>(varPathData + 76) = Game::DB_AllocStreamPos(0); *reinterpret_cast<char**>(varPathData + 76) = Game::DB_AllocStreamPos(0);
Game::Load_Stream(1, *reinterpret_cast<char**>(varPathData + 76), *reinterpret_cast<int*>(varPathData + 72)); Game::Load_Stream(true, *reinterpret_cast<char**>(varPathData + 76), *reinterpret_cast<int*>(varPathData + 72));
} }
} }
@ -540,7 +538,7 @@ namespace Components
void Zones::LoadWeaponAttachStuff(DWORD* varWeaponAttachStuff, int count) void Zones::LoadWeaponAttachStuff(DWORD* varWeaponAttachStuff, int count)
{ {
Game::Load_Stream(1, varWeaponAttachStuff, 12 * count); Game::Load_Stream(true, varWeaponAttachStuff, 12 * count);
for (int i = 0; i < count; ++i) for (int i = 0; i < count; ++i)
{ {
@ -548,7 +546,7 @@ namespace Components
{ {
if (varWeaponAttachStuff[2] == -1) if (varWeaponAttachStuff[2] == -1)
{ {
varWeaponAttachStuff[2] = (DWORD)Game::DB_AllocStreamPos(0); varWeaponAttachStuff[2] = reinterpret_cast<DWORD>(Game::DB_AllocStreamPos(0));
*Game::varConstChar = reinterpret_cast<const char*>(varWeaponAttachStuff[2]); *Game::varConstChar = reinterpret_cast<const char*>(varWeaponAttachStuff[2]);
Game::Load_XStringCustom(Game::varConstChar); Game::Load_XStringCustom(Game::varConstChar);
} }
@ -572,7 +570,7 @@ namespace Components
char* varWeaponAttach = *reinterpret_cast<char**>(0x112ADE0); // varAddonMapEnts char* varWeaponAttach = *reinterpret_cast<char**>(0x112ADE0); // varAddonMapEnts
// and do the stuff // and do the stuff
Game::Load_Stream(1, varWeaponAttach, 12); Game::Load_Stream(true, varWeaponAttach, 12);
Game::DB_PushStreamPos(3); Game::DB_PushStreamPos(3);
@ -580,7 +578,6 @@ namespace Components
Game::Load_XString(false); Game::Load_XString(false);
*reinterpret_cast<void**>(varWeaponAttach + 8) = Game::DB_AllocStreamPos(3); *reinterpret_cast<void**>(varWeaponAttach + 8) = Game::DB_AllocStreamPos(3);
Zones::LoadWeaponAttachStuff(*reinterpret_cast<DWORD**>(varWeaponAttach + 8), *reinterpret_cast<int*>(varWeaponAttach + 4)); Zones::LoadWeaponAttachStuff(*reinterpret_cast<DWORD**>(varWeaponAttach + 8), *reinterpret_cast<int*>(varWeaponAttach + 4));
Game::DB_PopStreamPos(); Game::DB_PopStreamPos();
@ -692,7 +689,7 @@ namespace Components
Zones::LoadGameWorldSpHook.Install(); Zones::LoadGameWorldSpHook.Install();
Zones::LoadPathDataTailHook.Install(); Zones::LoadPathDataTailHook.Install();
loadWeaponDefHook.Install(); Zones::LoadWeaponCompleteDefHook.Install();
Zones::LoadVehicleDefHook.Install(); Zones::LoadVehicleDefHook.Install();
Zones::Loadsnd_alias_tArrayHook.Install(); Zones::Loadsnd_alias_tArrayHook.Install();
@ -722,7 +719,7 @@ namespace Components
Zones::LoadGameWorldSpHook.Uninstall(); Zones::LoadGameWorldSpHook.Uninstall();
Zones::LoadPathDataTailHook.Uninstall(); Zones::LoadPathDataTailHook.Uninstall();
loadWeaponDefHook.Uninstall(); Zones::LoadWeaponCompleteDefHook.Uninstall();
Zones::LoadVehicleDefHook.Uninstall(); Zones::LoadVehicleDefHook.Uninstall();
Zones::Loadsnd_alias_tArrayHook.Uninstall(); Zones::Loadsnd_alias_tArrayHook.Uninstall();
@ -758,7 +755,7 @@ namespace Components
Zones::LoadXModelHook.Initialize(0x410D90, Zones::LoadXModel, HOOK_CALL); Zones::LoadXModelHook.Initialize(0x410D90, Zones::LoadXModel, HOOK_CALL);
Zones::LoadXSurfaceArrayHook.Initialize(0x4925C8, Zones::LoadXSurfaceArray, HOOK_CALL); Zones::LoadXSurfaceArrayHook.Initialize(0x4925C8, Zones::LoadXSurfaceArray, HOOK_CALL);
Zones::LoadGameWorldSpHook.Initialize(0x4F4D0D, Zones::LoadGameWorldSp, HOOK_CALL); Zones::LoadGameWorldSpHook.Initialize(0x4F4D0D, Zones::LoadGameWorldSp, HOOK_CALL);
loadWeaponDefHook.Initialize(0x47CCD2, Load_WeaponDef_CodC, HOOK_CALL); Zones::LoadWeaponCompleteDefHook.Initialize(0x47CCD2, Zones::LoadWeaponCompleteDef, HOOK_CALL);
Zones::LoadVehicleDefHook.Initialize(0x483DA0, Zones::LoadVehicleDef, HOOK_CALL); Zones::LoadVehicleDefHook.Initialize(0x483DA0, Zones::LoadVehicleDef, HOOK_CALL);
Zones::Loadsnd_alias_tArrayHook.Initialize(0x4F0AC8, Zones::Loadsnd_alias_tArray, HOOK_CALL); Zones::Loadsnd_alias_tArrayHook.Initialize(0x4F0AC8, Zones::Loadsnd_alias_tArray, HOOK_CALL);
Zones::LoadLoadedSoundHook.Initialize(0x403A5D, Zones::LoadLoadedSound, HOOK_CALL); Zones::LoadLoadedSoundHook.Initialize(0x403A5D, Zones::LoadLoadedSound, HOOK_CALL);

View File

@ -15,7 +15,7 @@ namespace Components
static void InstallPatches(int version); static void InstallPatches(int version);
//private: private:
static int ZoneVersion; static int ZoneVersion;
static int FxEffectIndex; static int FxEffectIndex;
@ -37,6 +37,7 @@ namespace Components
static Utils::Hook LoadStructuredDataStructPropertyArrayHook; static Utils::Hook LoadStructuredDataStructPropertyArrayHook;
static Utils::Hook LoadPathDataTailHook; static Utils::Hook LoadPathDataTailHook;
static Utils::Hook LoadWeaponAttachHook; static Utils::Hook LoadWeaponAttachHook;
static Utils::Hook LoadWeaponCompleteDefHook;
static void LoadFxElemDefArrayStub(bool atStreamStart); static void LoadFxElemDefArrayStub(bool atStreamStart);
static bool LoadFxElemDefStub(bool atStreamStart, Game::FxElemDef* fxElem, int size); static bool LoadFxElemDefStub(bool atStreamStart, Game::FxElemDef* fxElem, int size);
@ -56,5 +57,6 @@ namespace Components
static void LoadPathDataTail(); static void LoadPathDataTail();
static void LoadWeaponAttach(); static void LoadWeaponAttach();
static void LoadWeaponAttachStuff(DWORD* varWeaponAttachStuff, int count); static void LoadWeaponAttachStuff(DWORD* varWeaponAttachStuff, int count);
static void LoadWeaponCompleteDef();
}; };
} }

View File

@ -276,14 +276,14 @@ namespace Game
mapname_t* mapnames = (mapname_t*)0x7471D0; mapname_t* mapnames = (mapname_t*)0x7471D0;
char*** varXString = (char***)0x112B340; char*** varXString = (char***)0x112B340;
TracerDef** varTracerDefPtr = (TracerDef**)0x112B3BC; TracerDef*** varTracerDefPtr = (TracerDef***)0x112B3BC;
XModel** varXModelPtr = (XModel**)0x112A934; XModel*** varXModelPtr = (XModel***)0x112A934;
XModel** varXModel = (XModel**)0x112AE14; XModel** varXModel = (XModel**)0x112AE14;
PathData** varPathData = (PathData**)0x112AD7C; PathData** varPathData = (PathData**)0x112AD7C;
const char** varConstChar = (const char**)0x112A774; const char** varConstChar = (const char**)0x112A774;
Material** varMaterialHandle = (Material**)0x112A878; Material*** varMaterialHandle = (Material***)0x112A878;
FxEffectDef** varFxEffectDefHandle = (FxEffectDef**)0x112ACC0; FxEffectDef*** varFxEffectDefHandle = (FxEffectDef***)0x112ACC0;
PhysCollmap** varPhysCollmapPtr = (PhysCollmap **)0x112B440; PhysCollmap*** varPhysCollmapPtr = (PhysCollmap***)0x112B440;
Game::MaterialPass** varMaterialPass = (Game::MaterialPass**)0x112A960; Game::MaterialPass** varMaterialPass = (Game::MaterialPass**)0x112A960;
snd_alias_list_t*** varsnd_alias_list_name = (snd_alias_list_t***)0x112AF38; snd_alias_list_t*** varsnd_alias_list_name = (snd_alias_list_t***)0x112AF38;

View File

@ -566,14 +566,14 @@ namespace Game
extern mapname_t* mapnames; extern mapname_t* mapnames;
extern char*** varXString; extern char*** varXString;
extern TracerDef** varTracerDefPtr; extern TracerDef*** varTracerDefPtr;
extern XModel** varXModelPtr; extern XModel*** varXModelPtr;
extern XModel** varXModel; extern XModel** varXModel;
extern PathData** varPathData; extern PathData** varPathData;
extern const char** varConstChar; extern const char** varConstChar;
extern Material** varMaterialHandle; extern Material*** varMaterialHandle;
extern FxEffectDef** varFxEffectDefHandle; extern FxEffectDef*** varFxEffectDefHandle;
extern PhysCollmap** varPhysCollmapPtr; extern PhysCollmap*** varPhysCollmapPtr;
extern Game::MaterialPass** varMaterialPass; extern Game::MaterialPass** varMaterialPass;
extern snd_alias_list_t*** varsnd_alias_list_name; extern snd_alias_list_t*** varsnd_alias_list_name;