From 11ae3d0e42293d01b4d729ed5b6fceb8f0ec3fa5 Mon Sep 17 00:00:00 2001 From: fusion32 Date: Tue, 1 Jul 2025 15:39:01 -0300 Subject: merged `dbfuncs.cc` into `crplayer.cc` --- reference/enums.hh | 10 - reference/game.c | 735 ----------------------------------------------------- 2 files changed, 745 deletions(-) delete mode 100644 reference/enums.hh (limited to 'reference') diff --git a/reference/enums.hh b/reference/enums.hh deleted file mode 100644 index 47d5196..0000000 --- a/reference/enums.hh +++ /dev/null @@ -1,10 +0,0 @@ -enum CHANNEL: int { - GUILD_CHANNEL=0, - GAMEMASTER_CHANNEL=1, - TUTOR_CHANNEL=2, - REQUEST_QUEUE=3, - GAME_CHANNEL=4, - TRADE_CHANNEL=5, - REALLIFE_CHANNEL=6, - HELP_CHANNEL=7 -}; diff --git a/reference/game.c b/reference/game.c index 955fb2a..db75c28 100644 --- a/reference/game.c +++ b/reference/game.c @@ -1,738 +1,3 @@ -// DBFUNCS.CC -> PLAYERLOADER.CC ? -//============================================================================== - -// WARNING: Unknown calling convention -- yet parameter storage is locked - -void PlayerDataPath(void) - -{ - uint in_stack_00000004; - char *in_stack_0000000c; - - sprintf(in_stack_0000000c,"%s/%02ld/%ld.%s",USERPATH,in_stack_00000004 % 100); - return; -} - - - -bool PlayerDataExists(ulong CharacterID) - -{ - bool bVar1; - char local_100c [4]; - char FileName [4096]; - - sprintf(local_100c,"%s/%02ld/%ld.%s",USERPATH,CharacterID % 100,CharacterID,&DAT_080f6560); - bVar1 = FileExists(local_100c); - return bVar1; -} - - - -// WARNING: Removing unreachable block (ram,0x0806d081) -// WARNING: Removing unreachable block (ram,0x0806d0da) -// WARNING: Removing unreachable block (ram,0x0806d08b) -// WARNING: Removing unreachable block (ram,0x0806d095) -// WARNING: Removing unreachable block (ram,0x0806d0c7) -// WARNING: Removing unreachable block (ram,0x0806d0a0) - -bool LoadPlayerData(TPlayerData *Slot) - -{ - bool bVar1; - char cVar2; - int SkillNr; - int iVar3; - uint uVar4; - int iVar5; - uchar *puVar6; - anon_union_4_2_730cd3ca_for_TOutfit_2 *paVar7; - int DepotNr; - int SkillNr_2; - int *piVar8; - char *pcVar9; - undefined1 uVar10; - char *pcVar11; - undefined1 auStack_500c [3]; - bool FileOk; - TReadScriptFile Script; - undefined1 local_102c [4]; - TDynamicWriteBuffer HelpBuffer; - char FileName [4096]; - - if (Slot == (TPlayerData *)0x0) { - pcVar11 = "LoadPlayerData: Slot ist NULL.\n"; - } - else { - uVar4 = Slot->CharacterID; - if (uVar4 != 0) { - piVar8 = &HelpBuffer.super_TWriteBuffer.Position; - pcVar11 = USERPATH; - sprintf((char *)piVar8,"%s/%02ld/%ld.%s",USERPATH,uVar4 % 100,uVar4,&DAT_080f6560); - bVar1 = FileExists((char *)piVar8); - if (!bVar1) { - Slot->Race = 1; - iVar3 = 0; - Slot->Profession = 0; - (Slot->OriginalOutfit).OutfitID = 0; - (Slot->OriginalOutfit).field_1 = (anon_union_4_2_730cd3ca_for_TOutfit_2)0x0; - (Slot->CurrentOutfit).OutfitID = 0; - (Slot->CurrentOutfit).field_1 = (anon_union_4_2_730cd3ca_for_TOutfit_2)0x0; - Slot->LastLoginTime = 0; - Slot->LastLogoutTime = 0; - Slot->startx = 0; - Slot->starty = 0; - Slot->startz = 0; - Slot->posx = 0; - Slot->posy = 0; - Slot->posz = 0; - Slot->PlayerkillerEnd = 0; - do { - Slot->Minimum[iVar3] = -0x80000000; - iVar3 = iVar3 + 1; - } while (iVar3 < 0x19); - puVar6 = Slot->SpellList; - for (iVar3 = 0x40; iVar3 != 0; iVar3 = iVar3 + -1) { - puVar6[0] = '\0'; - puVar6[1] = '\0'; - puVar6[2] = '\0'; - puVar6[3] = '\0'; - puVar6 = puVar6 + 4; - } - uVar4 = 2000; - piVar8 = Slot->QuestValues; - if (((uint)piVar8 & 4) != 0) { - piVar8 = Slot->QuestValues + 1; - uVar4 = 0x7cc; - Slot->QuestValues[0] = 0; - } - for (uVar4 = uVar4 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { - *piVar8 = 0; - piVar8 = piVar8 + 1; - } - Slot->MurderTimestamps[0] = 0; - Slot->MurderTimestamps[1] = 0; - Slot->MurderTimestamps[2] = 0; - Slot->MurderTimestamps[3] = 0; - Slot->MurderTimestamps[4] = 0; - Slot->MurderTimestamps[5] = 0; - Slot->MurderTimestamps[6] = 0; - Slot->MurderTimestamps[8] = 0; - Slot->MurderTimestamps[9] = 0; - Slot->MurderTimestamps[10] = 0; - Slot->MurderTimestamps[0xb] = 0; - Slot->MurderTimestamps[0xc] = 0; - Slot->MurderTimestamps[7] = 0; - Slot->MurderTimestamps[0xd] = 0; - Slot->MurderTimestamps[0xe] = 0; - Slot->MurderTimestamps[0xf] = 0; - Slot->MurderTimestamps[0x10] = 0; - Slot->InventorySize = 0; - iVar3 = 0; - Slot->MurderTimestamps[0x11] = 0; - Slot->MurderTimestamps[0x12] = 0; - Slot->MurderTimestamps[0x13] = 0; - Slot->Inventory = (uchar *)0x0; - do { - Slot->Depot[iVar3] = (uchar *)0x0; - Slot->DepotSize[iVar3] = 0; - iVar3 = iVar3 + 1; - } while (iVar3 < 9); - return true; - } - TDynamicWriteBuffer::TDynamicWriteBuffer((TDynamicWriteBuffer *)local_102c,0x4000); - // try { // try from 0806c499 to 0806c49d has its CatchHandler @ 0806d1cf - TReadScriptFile::TReadScriptFile((TReadScriptFile *)auStack_500c); - // try { // try from 0806c4ab to 0806c5b3 has its CatchHandler @ 0806d1c6 - TReadScriptFile::open((TReadScriptFile *)auStack_500c,(char *)piVar8,(int)pcVar11); - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - pcVar11 = TReadScriptFile::readString((TReadScriptFile *)auStack_500c); - strcpy(Slot->Name,pcVar11); - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->Race = iVar3; - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->Profession = iVar3; - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - // try { // try from 0806c5c8 to 0806c626 has its CatchHandler @ 0806d12c - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'('); - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - (Slot->OriginalOutfit).OutfitID = iVar3; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - if ((Slot->OriginalOutfit).OutfitID == 0) { - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - (Slot->OriginalOutfit).field_1.ObjectType = (ushort)iVar3; - } - else { - // try { // try from 0806d10d to 0806d111 has its CatchHandler @ 0806d12c - paVar7 = (anon_union_4_2_730cd3ca_for_TOutfit_2 *) - TReadScriptFile::readBytesequence((TReadScriptFile *)auStack_500c); - (Slot->OriginalOutfit).field_1 = *paVar7; - } - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,')'); - // try { // try from 0806c630 to 0806c64a has its CatchHandler @ 0806d1c6 - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - // try { // try from 0806c65f to 0806c6bd has its CatchHandler @ 0806d12c - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'('); - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - (Slot->CurrentOutfit).OutfitID = iVar3; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - if ((Slot->CurrentOutfit).OutfitID == 0) { - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - (Slot->CurrentOutfit).field_1.ObjectType = (ushort)iVar3; - } - else { - // try { // try from 0806d0f5 to 0806d0f9 has its CatchHandler @ 0806d12c - paVar7 = (anon_union_4_2_730cd3ca_for_TOutfit_2 *) - TReadScriptFile::readBytesequence((TReadScriptFile *)auStack_500c); - (Slot->CurrentOutfit).field_1 = *paVar7; - } - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,')'); - // try { // try from 0806c6c7 to 0806d062 has its CatchHandler @ 0806d1c6 - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->LastLoginTime = iVar3; - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->LastLogoutTime = iVar3; - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - TReadScriptFile::readCoordinate((TReadScriptFile *)auStack_500c); - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - TReadScriptFile::readCoordinate((TReadScriptFile *)auStack_500c); - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->PlayerkillerEnd = iVar3; - iVar3 = 0; - do { - Slot->Minimum[iVar3] = -0x80000000; - iVar3 = iVar3 + 1; - uVar10 = iVar3 == 0x18; - } while (iVar3 < 0x19); - do { - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - pcVar11 = TReadScriptFile::getIdentifier((TReadScriptFile *)auStack_500c); - iVar3 = 6; - pcVar9 = "skill"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - uVar10 = *pcVar11 == *pcVar9; - pcVar11 = pcVar11 + 1; - pcVar9 = pcVar9 + 1; - } while ((bool)uVar10); - if (!(bool)uVar10) goto LAB_0806cb0a; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'('); - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - bVar1 = false; - if ((-1 < iVar3) && (iVar3 < 0x19)) { - bVar1 = true; - } - uVar10 = !bVar1; - if ((bool)uVar10) { - TReadScriptFile::error((TReadScriptFile *)auStack_500c,"illegal skill number"); - } - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->Actual[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->Maximum[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->Minimum[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->DeltaAct[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->MagicDeltaAct[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->Cycle[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->MaxCycle[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->Count[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->MaxCount[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->AddLevel[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->Experience[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->FactorPercent[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->NextLevel[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->Delta[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,')'); - } while( true ); - } - pcVar11 = &DAT_080f6720; - } - error(pcVar11); - return false; -LAB_0806cb0a: - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'{'); -LAB_0806cb3b: - TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); - if (_auStack_500c != SPECIAL) goto LAB_0806cb7f; - cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); - if (cVar2 != '}') goto code_r0x0806cb64; - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'{'); - while( true ) { - TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); - if (_auStack_500c != SPECIAL) goto LAB_0806cc5a; - cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); - if (cVar2 == '}') break; - if (_auStack_500c != SPECIAL) goto LAB_0806cc5a; - cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); - if (cVar2 != ',') { - if ((_auStack_500c != SPECIAL) || - (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c), cVar2 != '(')) - { -LAB_0806cc5a: - TReadScriptFile::error((TReadScriptFile *)auStack_500c,"\'(\' expected"); - } - iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - bVar1 = false; - if ((-1 < iVar3) && (iVar3 < 500)) { - bVar1 = true; - } - if (!bVar1) { - TReadScriptFile::error((TReadScriptFile *)auStack_500c,"illegal quest number"); - } - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); - iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); - Slot->QuestValues[iVar3] = iVar5; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,')'); - } - } - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'{'); -LAB_0806cd45: - TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); - if (_auStack_500c != SPECIAL) goto LAB_0806cd89; - cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); - if (cVar2 != '}') goto code_r0x0806cd6e; - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'{'); - HelpBuffer.super_TWriteBuffer.Size = 0; -LAB_0806cdfa: - TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); - if (_auStack_500c != SPECIAL) goto LAB_0806ce42; - cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); - if (cVar2 != '}') goto code_r0x0806ce27; - TDynamicWriteBuffer::writeByte((TDynamicWriteBuffer *)local_102c,0xff); - Slot->InventorySize = HelpBuffer.super_TWriteBuffer.Size; - puVar6 = (uchar *)operator_new__(HelpBuffer.super_TWriteBuffer.Size); - Slot->Inventory = puVar6; - memcpy(puVar6,HelpBuffer.super_TWriteBuffer.super_TWriteStream._vptr_TWriteStream, - Slot->InventorySize); - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - pcVar11 = (char *)0x7b; - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'{'); - iVar3 = 0; - do { - Slot->Depot[iVar3] = (uchar *)0x0; - iVar3 = iVar3 + 1; - } while (iVar3 < 9); -LAB_0806cf45: - TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); - if (_auStack_500c == SPECIAL) goto code_r0x0806cf5c; - goto LAB_0806cf8d; -code_r0x0806cb64: - if ((_auStack_500c != SPECIAL) || - (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c), cVar2 != ',')) { -LAB_0806cb7f: - iVar3 = TReadScriptFile::getNumber((TReadScriptFile *)auStack_500c); - bVar1 = false; - if ((-1 < iVar3) && (iVar3 < 0x100)) { - bVar1 = true; - } - if (!bVar1) { - TReadScriptFile::error((TReadScriptFile *)auStack_500c,"illegal spell number"); - } - Slot->SpellList[iVar3] = '\x01'; - } - goto LAB_0806cb3b; -code_r0x0806cd6e: - if ((_auStack_500c != SPECIAL) || - (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c), cVar2 != ',')) { -LAB_0806cd89: - iVar3 = 1; - do { - Slot->MurderTimestamps[iVar3 + -1] = Slot->MurderTimestamps[iVar3]; - iVar3 = iVar3 + 1; - } while (iVar3 < 0x14); - iVar3 = TReadScriptFile::getNumber((TReadScriptFile *)auStack_500c); - Slot->MurderTimestamps[0x13] = iVar3; - } - goto LAB_0806cd45; -code_r0x0806ce27: - if ((_auStack_500c != SPECIAL) || - (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c), cVar2 != ',')) { -LAB_0806ce42: - iVar3 = TReadScriptFile::getNumber((TReadScriptFile *)auStack_500c); - TDynamicWriteBuffer::writeByte((TDynamicWriteBuffer *)local_102c,(uchar)iVar3); - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - LoadObjects((TReadScriptFile *)auStack_500c,(TWriteStream *)local_102c,false); - } - goto LAB_0806cdfa; -code_r0x0806cf5c: - cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); - if (cVar2 == '}') { - TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); - if (_auStack_500c != ENDOFFILE) { - pcVar11 = "end of file expected"; - TReadScriptFile::error((TReadScriptFile *)auStack_500c,"end of file expected"); - } - TReadScriptFile::close((TReadScriptFile *)auStack_500c,(int)pcVar11); - // try { // try from 0806d073 to 0806d077 has its CatchHandler @ 0806d1cf - TReadScriptFile::~TReadScriptFile((TReadScriptFile *)auStack_500c,(int)pcVar11); - TDynamicWriteBuffer::~TDynamicWriteBuffer((TDynamicWriteBuffer *)local_102c,(int)pcVar11); - return true; - } - if ((_auStack_500c != SPECIAL) || - (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c), cVar2 != ',')) { -LAB_0806cf8d: - iVar3 = TReadScriptFile::getNumber((TReadScriptFile *)auStack_500c); - TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); - TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); - HelpBuffer.super_TWriteBuffer.Size = 0; - LoadObjects((TReadScriptFile *)auStack_500c,(TWriteStream *)local_102c,false); - Slot->DepotSize[iVar3] = HelpBuffer.super_TWriteBuffer.Size; - puVar6 = (uchar *)operator_new__(HelpBuffer.super_TWriteBuffer.Size); - Slot->Depot[iVar3] = puVar6; - pcVar11 = (char *)HelpBuffer.super_TWriteBuffer.super_TWriteStream; - memcpy(puVar6,HelpBuffer.super_TWriteBuffer.super_TWriteStream._vptr_TWriteStream, - Slot->DepotSize[iVar3]); - } - goto LAB_0806cf45; -} - - - -void SavePlayerData(TPlayerData *Slot) - -{ - uint uVar1; - bool bVar2; - bool FirstSpell; - byte bVar3; - time_t tVar4; - int Number; - int SpellNr; - int *piVar5; - int Limitation; - int iVar6; - char *pcVar7; - undefined *__fd; - undefined1 local_203c; - bool FirstDepot; - bool FirstPosition; - bool FirstMurder; - TReadBuffer Buffer; - TWriteScriptFile Script; - char local_101c [4]; - char FileName [4096]; - - if (Slot == (TPlayerData *)0x0) { - pcVar7 = "SavePlayerData: Slot ist NULL.\n"; - } - else { - uVar1 = Slot->CharacterID; - if (uVar1 != 0) { - pcVar7 = USERPATH; - sprintf(local_101c,"%s/%02ld/%ld.%s",USERPATH,uVar1 % 100,uVar1,&DAT_080f6560); - // try { // try from 0806d29e to 0806d2a2 has its CatchHandler @ 0806de36 - TWriteScriptFile::TWriteScriptFile((TWriteScriptFile *)&Buffer.Position); - // try { // try from 0806d2b6 to 0806d3b6 has its CatchHandler @ 0806de30 - TWriteScriptFile::open((TWriteScriptFile *)&Buffer.Position,local_101c,(int)pcVar7); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"ID = "); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Slot->CharacterID); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Name = "); - TWriteScriptFile::writeString((TWriteScriptFile *)&Buffer.Position,Slot->Name); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Race = "); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Slot->Race); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Profession = "); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Slot->Profession); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"OriginalOutfit = "); - // try { // try from 0806d3cb to 0806d431 has its CatchHandler @ 0806ddc3 - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"("); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,(Slot->OriginalOutfit).OutfitID); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - if ((Slot->OriginalOutfit).OutfitID == 0) { - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position, - (uint)(Slot->OriginalOutfit).field_1.ObjectType); - } - else { - // try { // try from 0806ddad to 0806ddb1 has its CatchHandler @ 0806ddc3 - TWriteScriptFile::writeBytesequence - ((TWriteScriptFile *)&Buffer.Position, - (Slot->OriginalOutfit).field_1.Colors,4); - } - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,")"); - // try { // try from 0806d43b to 0806d455 has its CatchHandler @ 0806de30 - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"CurrentOutfit = "); - // try { // try from 0806d46a to 0806d4d0 has its CatchHandler @ 0806ddc3 - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"("); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,(Slot->CurrentOutfit).OutfitID); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - if ((Slot->CurrentOutfit).OutfitID == 0) { - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position, - (uint)(Slot->CurrentOutfit).field_1.ObjectType); - } - else { - // try { // try from 0806dd8b to 0806dd8f has its CatchHandler @ 0806ddc3 - TWriteScriptFile::writeBytesequence - ((TWriteScriptFile *)&Buffer.Position,(Slot->CurrentOutfit).field_1.Colors - ,4); - } - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,")"); - // try { // try from 0806d4da to 0806dd20 has its CatchHandler @ 0806de30 - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"LastLogin = "); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Slot->LastLoginTime); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"LastLogout = "); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Slot->LastLogoutTime) - ; - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"StartPosition = "); - TWriteScriptFile::writeCoordinate - ((TWriteScriptFile *)&Buffer.Position,Slot->startx,Slot->starty,Slot->startz); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"CurrentPosition = "); - TWriteScriptFile::writeCoordinate - ((TWriteScriptFile *)&Buffer.Position,Slot->posx,Slot->posy,Slot->posz); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"PlayerkillerEnd = "); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,Slot->PlayerkillerEnd); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - iVar6 = 0; - piVar5 = Slot->Delta; - do { - if (piVar5[-0x113] != -0x80000000) { - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Skill = ("); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,iVar6); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x145]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,piVar5[-300]) - ; - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x113]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,piVar5[-0xfa]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,piVar5[-0xe1]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,piVar5[-200]) - ; - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,piVar5[-0xaf]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x96]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x7d]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,piVar5[-100]) - ; - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x4b]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x32]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x19]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,*piVar5); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,")"); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - } - iVar6 = iVar6 + 1; - piVar5 = piVar5 + 1; - } while (iVar6 < 0x19); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Spells = {"); - bVar2 = true; - iVar6 = 0; - do { - if (Slot->SpellList[iVar6] != '\0') { - if (!bVar2) { - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - } - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,iVar6); - bVar2 = false; - } - iVar6 = iVar6 + 1; - } while (iVar6 < 0x100); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"}"); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"QuestValues = {"); - bVar2 = true; - iVar6 = 0; - do { - if (Slot->QuestValues[iVar6] != 0) { - if (!bVar2) { - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - } - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"("); - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,iVar6); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeNumber - ((TWriteScriptFile *)&Buffer.Position,Slot->QuestValues[iVar6]); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,")"); - bVar2 = false; - } - iVar6 = iVar6 + 1; - } while (iVar6 < 500); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"}"); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Murders = {"); - bVar2 = true; - iVar6 = 0; - tVar4 = time((time_t *)0x0); - do { - Number = Slot->MurderTimestamps[iVar6]; - if (tVar4 + -0x278d00 < Number) { - if (!bVar2) { - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - Number = Slot->MurderTimestamps[iVar6]; - } - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Number); - bVar2 = false; - } - iVar6 = iVar6 + 1; - } while (iVar6 < 0x14); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"}"); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Inventory = {"); - if (Slot->Inventory != (uchar *)0x0) { - TReadBuffer::TReadBuffer - ((TReadBuffer *)&local_203c,Slot->Inventory,Slot->InventorySize); - bVar2 = true; - while (bVar3 = TReadBuffer::readByte((TReadBuffer *)&local_203c), bVar3 != 0xff) { - if (bVar2) { - bVar2 = false; - } - else { - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText - ((TWriteScriptFile *)&Buffer.Position," "); - } - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,(uint)bVar3); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position," Content="); - SaveObjects((TReadStream *)&local_203c,(TWriteScriptFile *)&Buffer.Position); - } - } - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"}"); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Depots = {"); - bVar2 = true; - iVar6 = 0; - do { - if (Slot->Depot[iVar6] != (uchar *)0x0) { - if (bVar2) { - bVar2 = false; - } - else { - // try { // try from 0806dd45 to 0806dd6d has its CatchHandler @ 0806de30 - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,", "); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::writeText - ((TWriteScriptFile *)&Buffer.Position," "); - } - TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,iVar6); - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position," Content="); - TReadBuffer::TReadBuffer - ((TReadBuffer *)&local_203c,Slot->Depot[iVar6],Slot->DepotSize[iVar6]) - ; - SaveObjects((TReadStream *)&local_203c,(TWriteScriptFile *)&Buffer.Position); - } - iVar6 = iVar6 + 1; - } while (iVar6 < 9); - __fd = &DAT_080f2aa0; - TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"}"); - TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); - TWriteScriptFile::close((TWriteScriptFile *)&Buffer.Position,(int)__fd); - // try { // try from 0806dd2a to 0806dd2e has its CatchHandler @ 0806de36 - TWriteScriptFile::~TWriteScriptFile((TWriteScriptFile *)&Buffer.Position,(int)__fd); - return; - } - pcVar7 = &DAT_080f6800; - } - error(pcVar7); - return; -} - - - -void UnlinkPlayerData(ulong CharacterID) - -{ - char local_100c [4]; - char FileName [4096]; - - sprintf(local_100c,"%s/%02ld/%ld.%s",USERPATH,CharacterID % 100,CharacterID,&DAT_080f6560); - unlink(local_100c); - return; -} - // QUERY.CC //============================================================================== -- cgit v1.2.3