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::LoadPathDataTailHook;
Utils::Hook Zones::LoadWeaponAttachHook;
Utils::Hook Zones::LoadWeaponCompleteDefHook;
bool Zones::LoadFxEffectDef(bool atStreamStart, char* buffer, int size)
{
@ -41,7 +42,7 @@ namespace Components
{
AssetHandler::Relocate(buffer + (260 * i), buffer + (252 * 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);
@ -67,7 +68,7 @@ namespace Components
{
Game::Load_FxElemDef(atStreamStart);
*Game::varXString = &Zones::FxEffectStrings[Zones::FxEffectIndex++];
Game::Load_XString(0);
Game::Load_XString(false);
}
bool Zones::LoadXModel(bool atStreamStart, char* xmodel, int size)
@ -152,43 +153,41 @@ namespace Components
return result;
}
Utils::Hook loadWeaponDefHook;
void Load_WeaponDef_CodC(int /*doLoad*/)
void Zones::LoadWeaponCompleteDef()
{
// setup structures we use
DWORD varWeaponDef = *(DWORD*)0x112A9F4;//*(DWORD*)0x112AE14;
char* varWeaponCompleteDef = *reinterpret_cast<char**>(0x112A9F4);
// 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::varXString = (char**)(varWeaponDef + 0);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 0);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 4);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 4);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 8);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 8);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 12);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 12);
Game::Load_XString(false);
*Game::varXModelPtr = (Game::XModel*)(varWeaponDef + 16);
*Game::varXModelPtr = reinterpret_cast<Game::XModel**>(varWeaponCompleteDef + 16);
Game::Load_XModelPtr(false);
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);
}
// 148
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);
}
@ -196,32 +195,32 @@ namespace Components
// 32 scriptstrings, should not need to be loaded
// 236
*Game::varXString = (char**)(varWeaponDef + 236);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 236);
Game::Load_XStringArray(false, 48);
// 428
*Game::varXString = (char**)(varWeaponDef + 428);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 428);
Game::Load_XStringArray(false, 48);
// 620
*Game::varXString = (char**)(varWeaponDef + 620);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 620);
Game::Load_XStringArray(false, 48);
// 812
// 16 * 4 scriptstrings
// 972
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 972);;
*Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 972);
Game::Load_FxEffectDefHandle(false);
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 976);
*Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 976);
Game::Load_FxEffectDefHandle(false);
// 980
// 50 soundalias name references; up to and including 1180
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);
}
@ -229,19 +228,19 @@ namespace Components
{
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);
}
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);
*Game::varsnd_alias_list_name = *(Game::snd_alias_list_t***)(varWeaponDef + 1184);
*reinterpret_cast<void**>(varWeaponCompleteDef + 1184) = Game::DB_AllocStreamPos(3);
*Game::varsnd_alias_list_name = *reinterpret_cast<Game::snd_alias_list_t***>(varWeaponCompleteDef + 1184);
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);
*Game::varsnd_alias_list_name = *(Game::snd_alias_list_t***)(varWeaponDef + 1188);
*reinterpret_cast<void**>(varWeaponCompleteDef + 1188) = Game::DB_AllocStreamPos(3);
*Game::varsnd_alias_list_name = *reinterpret_cast<Game::snd_alias_list_t***>(varWeaponCompleteDef + 1188);
Game::Load_snd_alias_list_nameArray(true, 31);
}
@ -269,179 +268,178 @@ namespace Components
// 1192
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);
}
// 1208
static int matOffsets1[] = { 1208, 1212, 1428, 1432, 1436, 1440, 1444, 1448, 1456, 1464 };
for (int i = 0; i < sizeof(matOffsets1) / sizeof(int); ++i)
for (int i = 0; i < ARRAYSIZE(matOffsets1); ++i)
{
*Game::varMaterialHandle = (Game::Material*)(varWeaponDef + matOffsets1[i]);
*Game::varMaterialHandle = reinterpret_cast<Game::Material**>(varWeaponCompleteDef + matOffsets1[i]);
Game::Load_MaterialHandle(false);
}
*Game::varXString = (char**)(varWeaponDef + 1484);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 1484);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 1492);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 1492);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 1508);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 1508);
Game::Load_XString(false);
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::varPhysCollmapPtr = (Game::PhysCollmap*)(varWeaponDef + 1964);
Game::Load_PhysCollmapPtr(0);
*Game::varPhysCollmapPtr = reinterpret_cast<Game::PhysCollmap**>(varWeaponCompleteDef + 1964);
Game::Load_PhysCollmapPtr(false);
*Game::varXModelPtr = (Game::XModel*)(varWeaponDef + 2052);
Game::Load_XModelPtr(0);
*Game::varXModelPtr = reinterpret_cast<Game::XModel**>(varWeaponCompleteDef + 2052);
Game::Load_XModelPtr(false);
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2060);
*Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2060);
Game::Load_FxEffectDefHandle(false);
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2064);
*Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2064);
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::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::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2336);
*Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2336);
Game::Load_FxEffectDefHandle(false);
*Game::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2340);
*Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2340);
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::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::varXString = (char**)(varWeaponDef + 2548); // 2556
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2548); // 2556
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);
*(DWORD*)(varWeaponDef + 2556) = vec2;
void* vec2 = Game::DB_AllocStreamPos(3);
*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);
if (*(DWORD*)(varWeaponDef + 2560) == -1)
if (*reinterpret_cast<DWORD*>(varWeaponCompleteDef + 2560) == -1)
{
DWORD vec2 = (DWORD)Game::DB_AllocStreamPos(3);
*(DWORD*)(varWeaponDef + 2560) = vec2;
void* vec2 = Game::DB_AllocStreamPos(3);
*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::varXString = (char**)(varWeaponDef + 2644);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2644);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2676);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2676);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2680);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2680);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2804);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2804);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2808);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2808);
Game::Load_XString(false);
*Game::varTracerDefPtr = (Game::TracerDef*)(varWeaponDef + 2812);
*Game::varTracerDefPtr = reinterpret_cast<Game::TracerDef**>(varWeaponCompleteDef + 2812);
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::varFxEffectDefHandle = (Game::FxEffectDef*)(varWeaponDef + 2844);
*Game::varFxEffectDefHandle = reinterpret_cast<Game::FxEffectDef**>(varWeaponCompleteDef + 2844);
Game::Load_FxEffectDefHandle(false);
*Game::varXString = (char**)(varWeaponDef + 2848);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2848);
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::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::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::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::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);
if (Zones::ZoneVersion >= 318)
{
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);
}
varWeaponDef += (6 * 4);
varWeaponDef += 12;
varWeaponCompleteDef += (6 * 4);
varWeaponCompleteDef += 12;
}
else
{
}
*Game::varXString = (char**)(varWeaponDef + 2984);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2984);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 2996);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 2996);
Game::Load_XString(false);
*Game::varXString = (char**)(varWeaponDef + 3000);
*Game::varXString = reinterpret_cast<char**>(varWeaponCompleteDef + 3000);
Game::Load_XString(false);
*Game::varMaterialHandle = (Game::Material*)(varWeaponDef + 3008);
*Game::varMaterialHandle = reinterpret_cast<Game::Material**>(varWeaponCompleteDef + 3008);
Game::Load_MaterialHandle(false);
*Game::varMaterialHandle = (Game::Material*)(varWeaponDef + 3012);
*Game::varMaterialHandle = reinterpret_cast<Game::Material**>(varWeaponCompleteDef + 3012);
Game::Load_MaterialHandle(false);
*Game::varMaterialHandle = (Game::Material*)(varWeaponDef + 3016);
*Game::varMaterialHandle = reinterpret_cast<Game::Material**>(varWeaponCompleteDef + 3016);
Game::Load_MaterialHandle(false);
if (*(DWORD*)(varWeaponDef + 3044) == -1)
if (*reinterpret_cast<DWORD*>(varWeaponCompleteDef + 3044) == -1)
{
DWORD vec2 = (DWORD)Game::DB_AllocStreamPos(3);
*(DWORD*)(varWeaponDef + 3044) = vec2;
void* vec2 = Game::DB_AllocStreamPos(3);
*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);
*(DWORD*)(varWeaponDef + 3048) = vec2;
void* vec2 = Game::DB_AllocStreamPos(3);
*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();
@ -468,19 +466,19 @@ namespace Components
if (*reinterpret_cast<char**>(varPathData + 56))
{
*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))
{
*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))
{
*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)
{
Game::Load_Stream(1, varWeaponAttachStuff, 12 * count);
Game::Load_Stream(true, varWeaponAttachStuff, 12 * count);
for (int i = 0; i < count; ++i)
{
@ -548,7 +546,7 @@ namespace Components
{
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::Load_XStringCustom(Game::varConstChar);
}
@ -572,7 +570,7 @@ namespace Components
char* varWeaponAttach = *reinterpret_cast<char**>(0x112ADE0); // varAddonMapEnts
// and do the stuff
Game::Load_Stream(1, varWeaponAttach, 12);
Game::Load_Stream(true, varWeaponAttach, 12);
Game::DB_PushStreamPos(3);
@ -580,7 +578,6 @@ namespace Components
Game::Load_XString(false);
*reinterpret_cast<void**>(varWeaponAttach + 8) = Game::DB_AllocStreamPos(3);
Zones::LoadWeaponAttachStuff(*reinterpret_cast<DWORD**>(varWeaponAttach + 8), *reinterpret_cast<int*>(varWeaponAttach + 4));
Game::DB_PopStreamPos();
@ -692,7 +689,7 @@ namespace Components
Zones::LoadGameWorldSpHook.Install();
Zones::LoadPathDataTailHook.Install();
loadWeaponDefHook.Install();
Zones::LoadWeaponCompleteDefHook.Install();
Zones::LoadVehicleDefHook.Install();
Zones::Loadsnd_alias_tArrayHook.Install();
@ -722,7 +719,7 @@ namespace Components
Zones::LoadGameWorldSpHook.Uninstall();
Zones::LoadPathDataTailHook.Uninstall();
loadWeaponDefHook.Uninstall();
Zones::LoadWeaponCompleteDefHook.Uninstall();
Zones::LoadVehicleDefHook.Uninstall();
Zones::Loadsnd_alias_tArrayHook.Uninstall();
@ -758,7 +755,7 @@ namespace Components
Zones::LoadXModelHook.Initialize(0x410D90, Zones::LoadXModel, HOOK_CALL);
Zones::LoadXSurfaceArrayHook.Initialize(0x4925C8, Zones::LoadXSurfaceArray, 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::Loadsnd_alias_tArrayHook.Initialize(0x4F0AC8, Zones::Loadsnd_alias_tArray, HOOK_CALL);
Zones::LoadLoadedSoundHook.Initialize(0x403A5D, Zones::LoadLoadedSound, HOOK_CALL);

View File

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

View File

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