From e782274ade8d7307e157a997d6ac3bcaa4130024 Mon Sep 17 00:00:00 2001 From: fusion32 Date: Wed, 2 Jul 2025 13:28:45 -0300 Subject: `query.cc` --- Makefile | 2 +- TODO.md | 27 +- reference/game.c | 4633 -------------------------------------------------- src/communication.cc | 2 +- src/houses.cc | 20 +- src/map.hh | 4 +- src/query.cc | 1352 +++++++++++++++ src/query.hh | 117 +- 8 files changed, 1450 insertions(+), 4707 deletions(-) diff --git a/Makefile b/Makefile index c522f85..bd27adc 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ endif HEADERS = $(SRCDIR)/common.hh $(SRCDIR)/communication.hh $(SRCDIR)/config.hh $(SRCDIR)/connections.hh $(SRCDIR)/containers.hh $(SRCDIR)/cr.hh $(SRCDIR)/crypto.hh $(SRCDIR)/enums.hh $(SRCDIR)/houses.hh $(SRCDIR)/info.hh $(SRCDIR)/magic.hh $(SRCDIR)/map.hh $(SRCDIR)/moveuse.hh $(SRCDIR)/objects.hh $(SRCDIR)/operate.hh $(SRCDIR)/query.hh $(SRCDIR)/reader.hh $(SRCDIR)/script.hh $(SRCDIR)/threads.hh $(SRCDIR)/writer.hh $(BUILDDIR)/$(OUTPUTEXE): $(BUILDDIR)/communication.obj $(BUILDDIR)/config.obj $(BUILDDIR)/connections.obj $(BUILDDIR)/cract.obj $(BUILDDIR)/crcombat.obj $(BUILDDIR)/crmain.obj $(BUILDDIR)/crnonpl.obj $(BUILDDIR)/crplayer.obj $(BUILDDIR)/crskill.obj $(BUILDDIR)/crypto.obj $(BUILDDIR)/houses.obj $(BUILDDIR)/info.obj $(BUILDDIR)/magic.obj $(BUILDDIR)/main.obj $(BUILDDIR)/map.obj $(BUILDDIR)/moveuse.obj $(BUILDDIR)/objects.obj $(BUILDDIR)/operate.obj $(BUILDDIR)/query.obj $(BUILDDIR)/reader.obj $(BUILDDIR)/receiving.obj $(BUILDDIR)/script.obj $(BUILDDIR)/sending.obj $(BUILDDIR)/shm.obj $(BUILDDIR)/strings.obj $(BUILDDIR)/threads.obj $(BUILDDIR)/time.obj $(BUILDDIR)/utils.obj $(BUILDDIR)/writer.obj - @echo $(CC) $(CFLAGS) $(LFLAGS) -o $@ $^ + $(CC) $(CFLAGS) $(LFLAGS) -o $@ $^ $(BUILDDIR)/communication.obj: $(SRCDIR)/communication.cc $(HEADERS) @mkdir -p $(@D) diff --git a/TODO.md b/TODO.md index ab216b8..165acd0 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,12 @@ -## TODO NEXT -- QUERY.CC +## Synchronization +I'm not sure whether synchronization is done properly. The implementation of the first few `crplayer.cc` functions left me with a taste of race conditions although integer loads on x86 are generally atomic. + +## Threading +After some initial dive into `communication.cc`, it has become clear that the original codebase relied on `LinuxThreads` which, among its quirks, assigns different PIDs to different threads, explaining the usage of `getpid()`. It also seems it could lack automatically managed thread stacks which explains `CommunicationThreadStacks`. +We'll have to address this BEFORE trying to run the server. + +## TODO (LEFTOVER) - Include `x == 0xFFFF` inside `CheckVisibility`? - The map container uses type id zero but it seems to also be used as a "no type" id which makes me want to add some `isNone()`, `isNull()`, `isVoid()` check to @@ -17,23 +23,6 @@ - Define a few constants like `MAX_NAME_LENGTH`, `MAX_SKILLS`, and `MAX_OPEN_CONTAINERS` instead of relying on `NARRAY`. -## Stack allocations -Any functions that use `alloca` or some other form of dynamic stack allocations will cause it to be an absolute mess. It usually shows up in the decompiled code as both a size computation like `-(VAR + CONST & 0xfffffff0)`, followed by some assignment. It doesn't make total sense without looking at the disassembly. I've encountered ~30 such computations and expect the functions containing them to be amongt the most challenging/annoying to be properly decompiled. - -## Exceptions -It's absolute hell. - -## Synchronization -I'm not sure whether synchronization is done properly. The implementation of the first few `crplayer.cc` functions left me with a taste of race conditions although integer loads on x86 are generally atomic. - -## Threading -After some initial dive into `communication.cc`, it has become clear that the original codebase relied on `LinuxThreads` which, among its quirks, assigns different PIDs to different threads, explaining the usage of `getpid()`. It also seems it could lack automatically managed thread stacks which explains `CommunicationThreadStacks`. - -We'll have to address this BEFORE trying to run the server. - -## Estimate -The decompiled file has ~115K lines of C. If we take ~15K lines to be rubbish, this can be round to ~100K. Considering a low estimate of 200 lines per day, the whole process could take up to 500 days which is quite a bit but not impossible. Now considering a high estimate of 1K lines per day, it could take 100 days which is also quite a bit. - ## TODO AFTER FIRST PASS - Remove VTABLE comments. - Split NPC, Monster, and Player into separate header files. diff --git a/reference/game.c b/reference/game.c index 9d2bd20..6a35c61 100644 --- a/reference/game.c +++ b/reference/game.c @@ -1,4636 +1,3 @@ -// QUERY.CC -//============================================================================== - -// DWARF original prototype: int checkAccountPassword(TQueryManagerConnection * this, ulong -// AccountID, char * Password, char * IPAddress) - -int __thiscall TQueryManagerConnection::checkAccountPassword(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - bool bVar1; - byte bVar2; - int iVar3; - int FailureCode; - int iVar4; - uint uVar5; - ulong in_stack_00000008; - char *in_stack_0000000c; - char *in_stack_00000010; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e1465 to 080e1479 has its CatchHandler @ 080e1510 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\n'); - // try { // try from 080e1484 to 080e1488 has its CatchHandler @ 080e1550 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e1493 to 080e1497 has its CatchHandler @ 080e1582 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); - // try { // try from 080e14a2 to 080e14a6 has its CatchHandler @ 080e15b2 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); - iVar3 = executeQuery(this,0x1e,true); - iVar4 = 0; - if (iVar3 != 0) { - if (iVar3 == 1) { - // try { // try from 080e14dd to 080e14e1 has its CatchHandler @ 080e15e2 - bVar2 = TReadBuffer::readByte(&this->ReadBuffer); - uVar5 = (uint)bVar2; - bVar1 = false; - if ((uVar5 != 0) && (uVar5 < 5)) { - bVar1 = true; - } - if (bVar1) { - return uVar5; - } - error(&DAT_0810e2e0,uVar5); - } - iVar4 = -1; - } - return iVar4; -} - - - -// WARNING: Variable defined which should be unmapped: PrivateWorld_local -// DWARF original prototype: int loginAdmin(TQueryManagerConnection * this, ulong AccountID, bool -// PrivateWorld, int * NumberOfCharacters, char[30] * Characters, char[30] * Worlds, uchar[4] * -// IPAddresses, ushort * Ports, ushort * PremiumDaysLeft) - -int __thiscall -TQueryManagerConnection::loginAdmin - (TQueryManagerConnection *this,ulong AccountID,bool PrivateWorld,int *NumberOfCharacters, - char (*Characters) [30],char (*Worlds) [30],uchar (*IPAddresses) [4],ushort *Ports, - ushort *PremiumDaysLeft) - -{ - TWriteBuffer *this_00; - TReadBuffer *this_01; - byte bVar1; - ushort uVar2; - int iVar3; - bool PrivateWorld_local; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e163c to 080e1650 has its CatchHandler @ 080e1782 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\f'); - // try { // try from 080e165b to 080e165f has its CatchHandler @ 080e17c0 - TWriteBuffer::writeQuad(this_00,AccountID); - TWriteBuffer::writeByte(this_00,PrivateWorld); - iVar3 = executeQuery(this,0x1e,true); - if (iVar3 == 0) { - this_01 = &this->ReadBuffer; - // try { // try from 080e16d6 to 080e16da has its CatchHandler @ 080e17f2 - bVar1 = TReadBuffer::readByte(this_01); - iVar3 = 0; - *NumberOfCharacters = (uint)bVar1; - if (bVar1 != 0) { - do { - // try { // try from 080e1720 to 080e1724 has its CatchHandler @ 080e181d - TReadStream::readString(&this_01->super_TReadStream,Characters[iVar3],0x1e); - // try { // try from 080e1744 to 080e1748 has its CatchHandler @ 080e184f - TReadStream::readString(&this_01->super_TReadStream,Worlds[iVar3],0x1e); - // try { // try from 080e175e to 080e1762 has its CatchHandler @ 080e1885 - TReadBuffer::readBytes(this_01,IPAddresses[iVar3],4); - // try { // try from 080e1766 to 080e176a has its CatchHandler @ 080e18b5 - uVar2 = TReadBuffer::readWord(this_01); - Ports[iVar3] = uVar2; - iVar3 = iVar3 + 1; - } while (iVar3 < *NumberOfCharacters); - } - // try { // try from 080e16ef to 080e16f3 has its CatchHandler @ 080e18e7 - uVar2 = TReadBuffer::readWord(this_01); - *PremiumDaysLeft = uVar2; - iVar3 = 0; - } - else { - if (iVar3 == 1) { - // try { // try from 080e16a7 to 080e16ab has its CatchHandler @ 080e1919 - bVar1 = TReadBuffer::readByte(&this->ReadBuffer); - if (bVar1 == 1) { - return 1; - } - error(&DAT_0810e340,(uint)bVar1); - } - iVar3 = -1; - } - return iVar3; -} - - - -// DWARF original prototype: int loadWorldConfig(TQueryManagerConnection * this, int * WorldType, -// int * RebootTime, int * IPAddress, int * Port, int * MaxPlayers, int * PremiumPlayerBuffer, int * -// MaxNewbies, int * PremiumNewbieBuffer) - -int __thiscall TQueryManagerConnection::loadWorldConfig(TQueryManagerConnection *this) - -{ - TReadBuffer *this_00; - byte bVar1; - ushort uVar2; - int iVar3; - uint *in_stack_00000008; - int *in_stack_0000000c; - int in_stack_00000010; - uint *in_stack_00000014; - uint *in_stack_00000018; - uint *in_stack_0000001c; - uint *in_stack_00000020; - uint *in_stack_00000024; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e1975 to 080e1989 has its CatchHandler @ 080e1a56 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,'5'); - iVar3 = executeQuery(this,0x1e,true); - if (iVar3 == 0) { - this_00 = &this->ReadBuffer; - // try { // try from 080e19b9 to 080e19bd has its CatchHandler @ 080e1a90 - bVar1 = TReadBuffer::readByte(this_00); - *in_stack_00000008 = (uint)bVar1; - // try { // try from 080e19cc to 080e19d0 has its CatchHandler @ 080e1abb - bVar1 = TReadBuffer::readByte(this_00); - iVar3 = 0; - *in_stack_0000000c = (uint)bVar1 * 0x3c; - do { - // try { // try from 080e19e8 to 080e19ec has its CatchHandler @ 080e1ae6 - bVar1 = TReadBuffer::readByte(this_00); - *(uint *)(in_stack_00000010 + iVar3 * 4) = (uint)bVar1; - iVar3 = iVar3 + 1; - } while (iVar3 < 4); - // try { // try from 080e1a02 to 080e1a06 has its CatchHandler @ 080e1b14 - uVar2 = TReadBuffer::readWord(this_00); - *in_stack_00000014 = (uint)uVar2; - // try { // try from 080e1a12 to 080e1a16 has its CatchHandler @ 080e1b46 - uVar2 = TReadBuffer::readWord(this_00); - *in_stack_00000018 = (uint)uVar2; - // try { // try from 080e1a22 to 080e1a26 has its CatchHandler @ 080e1b78 - uVar2 = TReadBuffer::readWord(this_00); - *in_stack_0000001c = (uint)uVar2; - // try { // try from 080e1a32 to 080e1a36 has its CatchHandler @ 080e1baa - uVar2 = TReadBuffer::readWord(this_00); - *in_stack_00000020 = (uint)uVar2; - // try { // try from 080e1a42 to 080e1a46 has its CatchHandler @ 080e1bdc - uVar2 = TReadBuffer::readWord(this_00); - *in_stack_00000024 = (uint)uVar2; - iVar3 = 0; - } - else { - iVar3 = -1; - } - return iVar3; -} - - - -// DWARF original prototype: int loginGame(TQueryManagerConnection * this, ulong AccountID, char * -// PlayerName, char * Password, char * IPAddress, bool PrivateWorld, bool PremiumAccountRequired, -// bool GamemasterRequired, ulong * CharacterID, int * Sex, char * Guild, char * Rank, char * Title, -// int * NumberOfBuddies, ulong * BuddyIDs, char[30] * BuddyNames, uchar * Rights, bool * -// PremiumAccountActivated) - -int __thiscall -TQueryManagerConnection::loginGame - (TQueryManagerConnection *this,ulong AccountID,char *PlayerName,char *Password, - char *IPAddress,bool PrivateWorld,bool PremiumAccountRequired,bool GamemasterRequired, - ulong *CharacterID,int *Sex,char *Guild,char *Rank,char *Title,int *NumberOfBuddies, - ulong *BuddyIDs,char (*BuddyNames) [30],uchar *Rights,bool *PremiumAccountActivated) - -{ - TWriteBuffer *this_00; - byte bVar1; - uchar uVar2; - int iVar3; - ulong uVar4; - int iVar5; - int iVar6; - int FailureCode; - uint uVar7; - int *piVar8; - int i_1; - byte *pbVar9; - TReadBuffer *this_01; - byte *pbVar10; - undefined1 uVar11; - bool bVar12; - undefined1 uVar13; - bool bVar14; - byte local_60; - int Right; - uint local_50; - int i_2; - int NumberOfRights; - bool GamemasterRequired_local; - bool PremiumAccountRequired_local; - int iStack_40; - bool PrivateWorld_local; - byte local_3c [4]; - char RightName [30]; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e1c4a to 080e1c5e has its CatchHandler @ 080e2c00 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\x14'); - // try { // try from 080e1c69 to 080e1c6d has its CatchHandler @ 080e2c40 - TWriteBuffer::writeQuad(this_00,AccountID); - // try { // try from 080e1c78 to 080e1c7c has its CatchHandler @ 080e2c72 - TWriteStream::writeString(&this_00->super_TWriteStream,PlayerName); - // try { // try from 080e1c87 to 080e1c8b has its CatchHandler @ 080e2ca2 - TWriteStream::writeString(&this_00->super_TWriteStream,Password); - // try { // try from 080e1c96 to 080e1c9a has its CatchHandler @ 080e2cd2 - TWriteStream::writeString(&this_00->super_TWriteStream,IPAddress); - TWriteBuffer::writeByte(this_00,PrivateWorld); - TWriteBuffer::writeByte(this_00,PremiumAccountRequired); - TWriteBuffer::writeByte(this_00,GamemasterRequired); - iVar3 = executeQuery(this,0x78,true); - if (iVar3 == 0) { - this_01 = &this->ReadBuffer; - // try { // try from 080e1d4c to 080e1d50 has its CatchHandler @ 080e2d06 - uVar4 = TReadBuffer::readQuad(this_01); - *CharacterID = uVar4; - // try { // try from 080e1d6d to 080e1d71 has its CatchHandler @ 080e2d38 - TReadStream::readString(&this_01->super_TReadStream,PlayerName,0x1e); - // try { // try from 080e1d78 to 080e1d7c has its CatchHandler @ 080e2d6e - bVar1 = TReadBuffer::readByte(this_01); - *Sex = (uint)bVar1; - // try { // try from 080e1d9d to 080e1da1 has its CatchHandler @ 080e2da0 - TReadStream::readString(&this_01->super_TReadStream,Guild,0x1e); - // try { // try from 080e1db7 to 080e1dbb has its CatchHandler @ 080e2dd6 - TReadStream::readString(&this_01->super_TReadStream,Rank,0x1e); - // try { // try from 080e1dd1 to 080e1dd5 has its CatchHandler @ 080e2e0c - TReadStream::readString(&this_01->super_TReadStream,Title,0x1e); - // try { // try from 080e1ddc to 080e1de0 has its CatchHandler @ 080e2e42 - bVar1 = TReadBuffer::readByte(this_01); - *NumberOfBuddies = (uint)bVar1; - if (100 < bVar1) { - error(&DAT_0810e400,*NumberOfBuddies,PlayerName); - } - iVar3 = 0; - while( true ) { - iStack_40 = 100; - piVar8 = &stack0xffffffc0; - if (*NumberOfBuddies < 0x65) { - piVar8 = NumberOfBuddies; - } - if (*piVar8 <= iVar3) break; - // try { // try from 080e1e16 to 080e1e1a has its CatchHandler @ 080e2e74 - uVar4 = TReadBuffer::readQuad(this_01); - BuddyIDs[iVar3] = uVar4; - // try { // try from 080e1e42 to 080e1e46 has its CatchHandler @ 080e2ea6 - TReadStream::readString(&this_01->super_TReadStream,BuddyNames[iVar3],0x1e); - iVar3 = iVar3 + 1; - } - iVar3 = 100; - if (100 < *NumberOfBuddies) { - do { - // try { // try from 080e2bad to 080e2bb1 has its CatchHandler @ 080e2ed9 - TReadBuffer::readQuad(this_01); - // try { // try from 080e2bc7 to 080e2bcb has its CatchHandler @ 080e2f09 - TReadStream::readString(&this_01->super_TReadStream,(char *)local_3c,0x1e); - iVar3 = iVar3 + 1; - } while (iVar3 < *NumberOfBuddies); - } - // try { // try from 080e1e5d to 080e1e61 has its CatchHandler @ 080e2f3c - bVar1 = TReadBuffer::readByte(this_01); - uVar7 = (uint)bVar1; - local_50 = 0; - uVar11 = uVar7 != 0; - uVar13 = uVar7 == 0; - if (uVar7 != 0) { - do { - // try { // try from 080e1e97 to 080e1e9b has its CatchHandler @ 080e2f6e - TReadStream::readString(&this_01->super_TReadStream,(char *)local_3c,0x1e); - iVar3 = 0x10; - pbVar9 = local_3c; - pbVar10 = (byte *)"PREMIUM_ACCOUNT"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - uVar11 = *pbVar9 < *pbVar10; - uVar13 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while ((bool)uVar13); - iVar3 = 0; - if (!(bool)uVar13) { - iVar3 = -1; - } - iVar5 = 9; - pbVar9 = local_3c; - pbVar10 = (byte *)"NOTATION"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - uVar11 = *pbVar9 < *pbVar10; - uVar13 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while ((bool)uVar13); - iVar6 = 9; - iVar5 = 1; - if (!(bool)uVar13) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NAMELOCK"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - uVar11 = *pbVar9 < *pbVar10; - uVar13 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while ((bool)uVar13); - iVar6 = 0x11; - iVar3 = 2; - if (!(bool)uVar13) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"STATEMENT_REPORT"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - uVar11 = *pbVar9 < *pbVar10; - uVar13 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while ((bool)uVar13); - iVar6 = 0xb; - iVar5 = 3; - if (!(bool)uVar13) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)0x810fcf3; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - uVar11 = *pbVar9 < *pbVar10; - uVar13 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while ((bool)uVar13); - iVar6 = 0xe; - iVar3 = 4; - if (!(bool)uVar13) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"FINAL_WARNING"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - uVar11 = *pbVar9 < *pbVar10; - uVar13 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while ((bool)uVar13); - iVar6 = 0xe; - iVar5 = 5; - if (!(bool)uVar13) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"IP_BANISHMENT"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - uVar11 = *pbVar9 < *pbVar10; - uVar13 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while ((bool)uVar13); - iVar6 = 5; - iVar3 = 6; - if (!(bool)uVar13) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = &DAT_0810fb59; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - uVar11 = *pbVar9 < *pbVar10; - uVar13 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while ((bool)uVar13); - iVar6 = 0xe; - iVar5 = 7; - if (!(bool)uVar13) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"HOME_TELEPORT"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - uVar11 = *pbVar9 < *pbVar10; - uVar13 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while ((bool)uVar13); - iVar6 = 0x15; - iVar3 = 8; - if (!(bool)uVar13) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CLEAR_CHARACTER_INFO"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - uVar11 = *pbVar9 < *pbVar10; - uVar13 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while ((bool)uVar13); - bVar12 = (!(bool)uVar11 && !(bool)uVar13) < (byte)uVar11; - bVar14 = (!(bool)uVar11 && !(bool)uVar13) == (bool)uVar11; - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0xd; - pbVar9 = local_3c; - pbVar10 = (byte *)"CLEAR_GUILDS"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0xe; - pbVar9 = local_3c; - pbVar10 = (byte *)"DELETE_GUILDS"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0xd; - pbVar9 = local_3c; - pbVar10 = (byte *)"BOARD_REPORT"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0x11; - pbVar9 = local_3c; - pbVar10 = (byte *)"BOARD_MODERATION"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0x15; - pbVar9 = local_3c; - pbVar10 = (byte *)"BOARD_ANONYMOUS_EDIT"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0x13; - pbVar9 = local_3c; - pbVar10 = (byte *)"BOARD_PRECONFIRMED"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0xd; - pbVar9 = local_3c; - pbVar10 = (byte *)"KEEP_ACCOUNT"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0x15; - pbVar9 = local_3c; - pbVar10 = (byte *)"GAMEMASTER_BROADCAST"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar5 = 9; - if (!bVar14) { - iVar5 = iVar3; - } - iVar3 = 0x14; - pbVar9 = local_3c; - pbVar10 = (byte *)"ANONYMOUS_BROADCAST"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar3 = 10; - if (!bVar14) { - iVar3 = iVar5; - } - iVar5 = 8; - pbVar9 = local_3c; - pbVar10 = (byte *)"INVITED"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0xe; - pbVar9 = local_3c; - pbVar10 = (byte *)"NO_BANISHMENT"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar5 = 0xb; - if (!bVar14) { - iVar5 = iVar3; - } - iVar3 = 0x12; - pbVar9 = local_3c; - pbVar10 = (byte *)"ALLOW_MULTICLIENT"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar5 = -2; - } - iVar3 = 0xf; - pbVar9 = local_3c; - pbVar10 = (byte *)"CIPWATCH_ADMIN"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar5 = -2; - } - iVar3 = 0xe; - pbVar9 = local_3c; - pbVar10 = (byte *)"CIPWATCH_USER"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar5 = -2; - } - iVar3 = 0x16; - pbVar9 = local_3c; - pbVar10 = (byte *)"CREATECHAR_GAMEMASTER"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar5 = -2; - } - iVar3 = 0xf; - pbVar9 = local_3c; - pbVar10 = (byte *)"CREATECHAR_GOD"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar5 = -2; - } - iVar3 = 0x10; - pbVar9 = local_3c; - pbVar10 = (byte *)"CREATECHAR_TEST"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar5 = -2; - } - iVar3 = 0xd; - pbVar9 = local_3c; - pbVar10 = (byte *)"VIEW_ACCOUNT"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar5 = -2; - } - iVar3 = 0x17; - pbVar9 = local_3c; - pbVar10 = (byte *)"VIEW_GAMEMASTER_RECORD"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar5 = -2; - } - iVar3 = 0x15; - pbVar9 = local_3c; - pbVar10 = (byte *)"VIEW_CRIMINAL_RECORD"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar5 = -2; - } - iVar3 = 0xf; - pbVar9 = local_3c; - pbVar10 = (byte *)"VIEW_LOG_FILES"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar5 = -2; - } - iVar3 = 0x12; - pbVar9 = local_3c; - pbVar10 = (byte *)"LOG_COMMUNICATION"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar3 = 0xd; - if (!bVar14) { - iVar3 = iVar5; - } - iVar5 = 0x12; - pbVar9 = local_3c; - pbVar10 = (byte *)"MODIFY_BANISHMENT"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0x18; - pbVar9 = local_3c; - pbVar10 = (byte *)"READ_GAMEMASTER_CHANNEL"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar5 = 0xe; - if (!bVar14) { - iVar5 = iVar3; - } - iVar3 = 0x13; - pbVar9 = local_3c; - pbVar10 = (byte *)"READ_TUTOR_CHANNEL"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar3 = 0xf; - if (!bVar14) { - iVar3 = iVar5; - } - iVar5 = 0x17; - pbVar9 = local_3c; - pbVar10 = (byte *)"HIGHLIGHT_HELP_CHANNEL"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar5 = 0x10; - if (!bVar14) { - iVar5 = iVar3; - } - iVar3 = 0x10; - pbVar9 = local_3c; - pbVar10 = (byte *)"SEND_BUGREPORTS"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar3 = 0x11; - if (!bVar14) { - iVar3 = iVar5; - } - iVar5 = 0xc; - pbVar9 = local_3c; - pbVar10 = (byte *)"APPOINT_CIP"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0xc; - pbVar9 = local_3c; - pbVar10 = (byte *)"APPOINT_SGM"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0xc; - pbVar9 = local_3c; - pbVar10 = (byte *)"APPOINT_JGM"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0x10; - pbVar9 = local_3c; - pbVar10 = (byte *)"APPOINT_SENATOR"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0x13; - pbVar9 = local_3c; - pbVar10 = (byte *)"SET_ACCOUNT_RIGHTS"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0x15; - pbVar9 = local_3c; - pbVar10 = (byte *)"SET_CHARACTER_RIGHTS"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0x18; - pbVar9 = local_3c; - pbVar10 = (byte *)"SET_ACCOUNTGROUP_RIGHTS"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - if (bVar14) { - iVar3 = -2; - } - iVar5 = 0x1a; - pbVar9 = local_3c; - pbVar10 = (byte *)"SET_CHARACTERGROUP_RIGHTS"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xf; - iVar5 = -2; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NAME_INSULTING"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xe; - iVar3 = 0x12; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NAME_SENTENCE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x19; - iVar5 = 0x13; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NAME_NONSENSICAL_LETTERS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x15; - iVar3 = 0x14; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NAME_BADLY_FORMATTED"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xf; - iVar5 = 0x15; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NAME_NO_PERSON"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xf; - iVar3 = 0x16; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NAME_CELEBRITY"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xd; - iVar5 = 0x17; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NAME_COUNTRY"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x13; - iVar3 = 0x18; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NAME_FAKE_IDENTITY"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x13; - iVar5 = 0x19; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NAME_FAKE_POSITION"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x14; - iVar3 = 0x1a; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"STATEMENT_INSULTING"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar5 = 0x1b; - if (!bVar14) { - iVar5 = iVar3; - } - iVar3 = 0x13; - pbVar9 = local_3c; - pbVar10 = (byte *)"STATEMENT_SPAMMING"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x1a; - iVar3 = 0x1c; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"STATEMENT_ADVERT_OFFTOPIC"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x17; - iVar5 = 0x1d; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"STATEMENT_ADVERT_MONEY"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x16; - iVar3 = 0x1e; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"STATEMENT_NON_ENGLISH"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x1b; - iVar5 = 0x1f; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"STATEMENT_CHANNEL_OFFTOPIC"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x1d; - iVar3 = 0x20; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"STATEMENT_VIOLATION_INCITING"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x13; - iVar5 = 0x21; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CHEATING_BUG_ABUSE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x17; - iVar3 = 0x22; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CHEATING_GAME_WEAKNESS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x13; - iVar5 = 0x23; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CHEATING_MACRO_USE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar3 = 0x24; - if (!bVar14) { - iVar3 = iVar5; - } - iVar5 = 0x19; - pbVar9 = local_3c; - pbVar10 = (byte *)"CHEATING_MODIFIED_CLIENT"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x11; - iVar5 = 0x25; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CHEATING_HACKING"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x16; - iVar3 = 0x26; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CHEATING_MULTI_CLIENT"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x19; - iVar5 = 0x27; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CHEATING_ACCOUNT_TRADING"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x19; - iVar3 = 0x28; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CHEATING_ACCOUNT_SHARING"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x17; - iVar5 = 0x29; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"GAMEMASTER_THREATENING"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x16; - iVar3 = 0x2a; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"GAMEMASTER_PRETENDING"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x15; - iVar5 = 0x2b; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"GAMEMASTER_INFLUENCE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x19; - iVar3 = 0x2c; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"GAMEMASTER_FALSE_REPORTS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar5 = 0x2d; - if (!bVar14) { - iVar5 = iVar3; - } - iVar3 = 0x1e; - pbVar9 = local_3c; - pbVar10 = (byte *)"KILLING_EXCESSIVE_UNJUSTIFIED"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x16; - iVar3 = 0x2e; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"DESTRUCTIVE_BEHAVIOUR"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x11; - iVar5 = 0x2f; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"SPOILING_AUCTION"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x10; - iVar3 = 0x30; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"INVALID_PAYMENT"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x16; - iVar5 = 0x31; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"TELEPORT_TO_CHARACTER"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x11; - iVar3 = 0x32; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"TELEPORT_TO_MARK"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x12; - iVar5 = 0x33; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"TELEPORT_VERTICAL"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x17; - iVar3 = 0x34; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"TELEPORT_TO_COORDINATE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 9; - iVar5 = 0x35; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"LEVITATE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar3 = 0x36; - if (!bVar14) { - iVar3 = iVar5; - } - iVar5 = 0x10; - pbVar9 = local_3c; - pbVar10 = (byte *)"SPECIAL_MOVEUSE"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x12; - iVar5 = 0x37; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"MODIFY_GOSTRENGTH"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x10; - iVar3 = 0x38; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"SHOW_COORDINATE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 9; - iVar5 = 0x39; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"RETRIEVE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xd; - iVar3 = 0x3a; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"INVULNERABLE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xf; - iVar5 = 0x3d; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"UNLIMITED_MANA"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xf; - iVar3 = 0x3e; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"KEEP_INVENTORY"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xb; - iVar5 = 0x3f; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"ALL_SPELLS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x13; - iVar3 = 0x40; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"UNLIMITED_CAPACITY"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar5 = 0x41; - if (!bVar14) { - iVar5 = iVar3; - } - iVar3 = 0xe; - pbVar9 = local_3c; - pbVar10 = (byte *)"ZERO_CAPACITY"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x12; - iVar3 = 0x42; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"ATTACK_EVERYWHERE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 10; - iVar5 = 0x43; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NO_ATTACK"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 9; - iVar3 = 0x44; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NO_RUNES"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x10; - iVar5 = 0x45; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NO_LOGOUT_BLOCK"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x12; - iVar3 = 0x46; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"GAMEMASTER_OUTFIT"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xb; - iVar5 = 0x47; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"ILLUMINATE"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x12; - iVar3 = 0x48; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CHANGE_PROFESSION"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x14; - iVar5 = 0x49; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"IGNORED_BY_MONSTERS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar3 = 0x4a; - if (!bVar14) { - iVar3 = iVar5; - } - iVar5 = 0x15; - pbVar9 = local_3c; - pbVar10 = (byte *)"SHOW_KEYHOLE_NUMBERS"; - do { - if (iVar5 == 0) break; - iVar5 = iVar5 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xf; - iVar5 = 0x4b; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CREATE_OBJECTS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xd; - iVar3 = 0x4c; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CREATE_MONEY"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0x10; - iVar5 = 0x4d; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CREATE_MONSTERS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xe; - iVar3 = 0x4e; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CHANGE_SKILLS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xf; - iVar5 = 0x4f; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"CLEANUP_FIELDS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xe; - iVar3 = 0x50; - if (!bVar14) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"NO_STATISTICS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - iVar6 = 0xf; - iVar5 = 0x51; - if (!bVar14) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"KEEP_CHARACTER"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 < *pbVar10; - bVar14 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar14); - bVar12 = (!bVar12 && !bVar14) == bVar12; - if (bVar12) { - iVar5 = -2; - } - iVar3 = 0x10; - pbVar9 = local_3c; - pbVar10 = (byte *)"EXTRA_CHARACTER"; - do { - if (iVar3 == 0) break; - iVar3 = iVar3 + -1; - bVar12 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar12); - iVar6 = 0xd; - iVar3 = -2; - if (!bVar12) { - iVar3 = iVar5; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"ENTER_HOUSES"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar12); - iVar6 = 0x10; - iVar5 = 0x3b; - if (!bVar12) { - iVar5 = iVar3; - } - pbVar9 = local_3c; - pbVar10 = (byte *)"OPEN_NAMEDDOORS"; - do { - if (iVar6 == 0) break; - iVar6 = iVar6 + -1; - bVar12 = *pbVar9 == *pbVar10; - pbVar9 = pbVar9 + 1; - pbVar10 = pbVar10 + 1; - } while (bVar12); - iVar3 = 0x3c; - if (!bVar12) { - iVar3 = iVar5; - } - if (iVar3 != -2) { - if (iVar3 == -1) { - error("TQueryManagerConnection::loginGame: Unbekanntes Recht %s.\n",local_3c - ); - } - else { - iVar5 = iVar3 + 7; - if (-1 < iVar3) { - iVar5 = iVar3; - } - local_60 = (char)iVar3 + (char)(iVar5 >> 3) * -8; - Rights[iVar5 >> 3] = Rights[iVar5 >> 3] | (byte)(1 << (local_60 & 0x1f)); - } - } - local_50 = local_50 + 1; - uVar11 = local_50 < uVar7; - uVar13 = local_50 == uVar7; - } while ((int)local_50 < (int)uVar7); - } - // try { // try from 080e2b7b to 080e2b7f has its CatchHandler @ 080e2fa2 - uVar2 = TReadBuffer::readByte(this_01); - *PremiumAccountActivated = uVar2 != '\0'; - iVar3 = 0; - } - else { - if (iVar3 == 1) { - // try { // try from 080e1d0c to 080e1d10 has its CatchHandler @ 080e2fd4 - bVar1 = TReadBuffer::readByte(&this->ReadBuffer); - uVar7 = (uint)bVar1; - bVar12 = false; - if ((uVar7 != 0) && (uVar7 < 0x10)) { - bVar12 = true; - } - if (bVar12) { - return uVar7; - } - error(&DAT_0810e380,uVar7); - } - iVar3 = -1; - } - return iVar3; -} - - - -// DWARF original prototype: int logoutGame(TQueryManagerConnection * this, ulong CharacterID, int -// Level, char * Profession, char * Residence, time_t LastLoginTime, int TutorActivities) - -int __thiscall TQueryManagerConnection::logoutGame(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - int iVar1; - ulong in_stack_00000008; - ushort in_stack_0000000c; - char *in_stack_00000010; - char *in_stack_00000014; - ulong in_stack_00000018; - ushort in_stack_0000001c; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e3035 to 080e3049 has its CatchHandler @ 080e30d0 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\x15'); - // try { // try from 080e3054 to 080e3058 has its CatchHandler @ 080e3110 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e3064 to 080e3068 has its CatchHandler @ 080e3142 - TWriteBuffer::writeWord(this_00,in_stack_0000000c); - // try { // try from 080e3073 to 080e3077 has its CatchHandler @ 080e3172 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); - // try { // try from 080e3082 to 080e3086 has its CatchHandler @ 080e31a2 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); - // try { // try from 080e3091 to 080e3095 has its CatchHandler @ 080e31d6 - TWriteBuffer::writeQuad(this_00,in_stack_00000018); - // try { // try from 080e30a1 to 080e30a5 has its CatchHandler @ 080e320a - TWriteBuffer::writeWord(this_00,in_stack_0000001c); - iVar1 = executeQuery(this,0x78,true); - return (iVar1 == 0) - 1; -} - - - -// DWARF original prototype: int setNotation(TQueryManagerConnection * this, ulong GamemasterID, -// char * PlayerName, char * IPAddress, char * Reason, char * Comment, ulong * BanishmentID) - -int __thiscall TQueryManagerConnection::setNotation(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - bool bVar1; - byte bVar2; - int iVar3; - ulong uVar4; - int FailureCode; - uint uVar5; - ulong in_stack_00000008; - char *in_stack_0000000c; - char *in_stack_00000010; - char *in_stack_00000014; - char *in_stack_00000018; - ulong *in_stack_0000001c; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e3265 to 080e3279 has its CatchHandler @ 080e3350 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\x1a'); - // try { // try from 080e3284 to 080e3288 has its CatchHandler @ 080e3390 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e3293 to 080e3297 has its CatchHandler @ 080e33c2 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); - // try { // try from 080e32a2 to 080e32a6 has its CatchHandler @ 080e33f2 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); - // try { // try from 080e32b1 to 080e32b5 has its CatchHandler @ 080e3422 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); - // try { // try from 080e32c0 to 080e32c4 has its CatchHandler @ 080e3456 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); - iVar3 = executeQuery(this,0x1e,true); - if (iVar3 == 0) { - // try { // try from 080e3340 to 080e3344 has its CatchHandler @ 080e348a - uVar4 = TReadBuffer::readQuad(&this->ReadBuffer); - *in_stack_0000001c = uVar4; - iVar3 = 0; - } - else { - if (iVar3 == 1) { - // try { // try from 080e3303 to 080e3307 has its CatchHandler @ 080e34bc - bVar2 = TReadBuffer::readByte(&this->ReadBuffer); - uVar5 = (uint)bVar2; - bVar1 = false; - if ((uVar5 != 0) && (uVar5 < 3)) { - bVar1 = true; - } - if (bVar1) { - return uVar5; - } - error(&DAT_0810e4a0,uVar5); - } - else { - error("TQueryManagerConnection::setNotation: Anfrage fehlgeschlagen.\n"); - } - iVar3 = -1; - } - return iVar3; -} - - - -// DWARF original prototype: int setNamelock(TQueryManagerConnection * this, ulong GamemasterID, -// char * PlayerName, char * IPAddress, char * Reason, char * Comment) - -int __thiscall TQueryManagerConnection::setNamelock(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - bool bVar1; - byte bVar2; - int iVar3; - int FailureCode; - int iVar4; - uint uVar5; - ulong in_stack_00000008; - char *in_stack_0000000c; - char *in_stack_00000010; - char *in_stack_00000014; - char *in_stack_00000018; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e3515 to 080e3529 has its CatchHandler @ 080e35f0 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\x17'); - // try { // try from 080e3534 to 080e3538 has its CatchHandler @ 080e3630 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e3543 to 080e3547 has its CatchHandler @ 080e3662 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); - // try { // try from 080e3552 to 080e3556 has its CatchHandler @ 080e3692 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); - // try { // try from 080e3561 to 080e3565 has its CatchHandler @ 080e36c2 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); - // try { // try from 080e3570 to 080e3574 has its CatchHandler @ 080e36f6 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); - iVar3 = executeQuery(this,0x1e,true); - iVar4 = 0; - if (iVar3 != 0) { - if (iVar3 == 1) { - // try { // try from 080e35b7 to 080e35bb has its CatchHandler @ 080e372a - bVar2 = TReadBuffer::readByte(&this->ReadBuffer); - uVar5 = (uint)bVar2; - bVar1 = false; - if ((uVar5 != 0) && (uVar5 < 5)) { - bVar1 = true; - } - if (bVar1) { - return uVar5; - } - error(&DAT_0810e540,uVar5); - } - else { - error("TQueryManagerConnection::setNamelock: Anfrage fehlgeschlagen.\n"); - } - iVar4 = -1; - } - return iVar4; -} - - - -// DWARF original prototype: int banishAccount(TQueryManagerConnection * this, ulong GamemasterID, -// char * PlayerName, char * IPAddress, char * Reason, char * Comment, bool * FinalWarning, int * -// Days, ulong * BanishmentID) - -int __thiscall TQueryManagerConnection::banishAccount(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - TReadBuffer *this_01; - bool bVar1; - byte bVar2; - uchar uVar3; - int iVar4; - ulong uVar5; - int FailureCode; - uint uVar6; - ulong in_stack_00000008; - char *in_stack_0000000c; - char *in_stack_00000010; - char *in_stack_00000014; - char *in_stack_00000018; - char *in_stack_0000001c; - uint *in_stack_00000020; - ulong *in_stack_00000024; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e3785 to 080e3799 has its CatchHandler @ 080e38c0 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\x19'); - // try { // try from 080e37a4 to 080e37a8 has its CatchHandler @ 080e3900 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e37b3 to 080e37b7 has its CatchHandler @ 080e3932 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); - // try { // try from 080e37c2 to 080e37c6 has its CatchHandler @ 080e3962 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); - // try { // try from 080e37d1 to 080e37d5 has its CatchHandler @ 080e3992 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); - // try { // try from 080e37e0 to 080e37e4 has its CatchHandler @ 080e39c6 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); - // try { // try from 080e37f8 to 080e37fc has its CatchHandler @ 080e39fa - TWriteBuffer::writeByte(this_00,*in_stack_0000001c != '\0'); - iVar4 = executeQuery(this,0x1e,true); - if (iVar4 == 0) { - this_01 = &this->ReadBuffer; - // try { // try from 080e3878 to 080e387c has its CatchHandler @ 080e3a2e - uVar5 = TReadBuffer::readQuad(this_01); - *in_stack_00000024 = uVar5; - // try { // try from 080e3887 to 080e388b has its CatchHandler @ 080e3a60 - bVar2 = TReadBuffer::readByte(this_01); - uVar6 = 0xffffffff; - if (bVar2 != 0xff) { - uVar6 = (uint)bVar2; - } - *in_stack_00000020 = uVar6; - // try { // try from 080e38a8 to 080e38ac has its CatchHandler @ 080e3a92 - uVar3 = TReadBuffer::readByte(this_01); - *in_stack_0000001c = uVar3 != '\0'; - iVar4 = 0; - } - else { - if (iVar4 == 1) { - // try { // try from 080e383b to 080e383f has its CatchHandler @ 080e3ac4 - bVar2 = TReadBuffer::readByte(&this->ReadBuffer); - uVar6 = (uint)bVar2; - bVar1 = false; - if ((uVar6 != 0) && (uVar6 < 4)) { - bVar1 = true; - } - if (bVar1) { - return uVar6; - } - error(&DAT_0810e600,uVar6); - } - else { - error("TQueryManagerConnection::banishAccount: Anfrage fehlgeschlagen.\n"); - } - iVar4 = -1; - } - return iVar4; -} - - - -// WARNING: Variable defined which should be unmapped: i_1 -// DWARF original prototype: int reportStatement(TQueryManagerConnection * this, ulong ReporterID, -// char * PlayerName, char * Reason, char * Comment, ulong BanishmentID, ulong StatementID, int -// NumberOfStatements, ulong * StatementIDs, ulong * TimeStamps, ulong * CharacterIDs, char[30] * -// Channels, char[256] * Texts) - -int __thiscall TQueryManagerConnection::reportStatement(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - int iVar1; - bool bVar2; - byte bVar3; - int iVar4; - int i; - int iVar5; - uint uVar6; - ulong in_stack_00000008; - char *in_stack_0000000c; - char *in_stack_00000010; - char *in_stack_00000014; - ulong in_stack_00000018; - ulong in_stack_0000001c; - int in_stack_00000020; - int *in_stack_00000024; - int in_stack_00000028; - int in_stack_0000002c; - int in_stack_00000030; - int in_stack_00000034; - int local_14; - int i_1; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e3b25 to 080e3b39 has its CatchHandler @ 080e3ce0 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\x1b'); - // try { // try from 080e3b44 to 080e3b48 has its CatchHandler @ 080e3d20 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e3b53 to 080e3b57 has its CatchHandler @ 080e3d52 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); - // try { // try from 080e3b62 to 080e3b66 has its CatchHandler @ 080e3d82 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); - // try { // try from 080e3b71 to 080e3b75 has its CatchHandler @ 080e3db2 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); - // try { // try from 080e3b80 to 080e3b84 has its CatchHandler @ 080e3de6 - TWriteBuffer::writeQuad(this_00,in_stack_00000018); - // try { // try from 080e3b8f to 080e3b93 has its CatchHandler @ 080e3e1a - TWriteBuffer::writeQuad(this_00,in_stack_0000001c); - iVar5 = 0; - iVar4 = in_stack_00000020; - if (0 < in_stack_00000020) { - iVar1 = *in_stack_00000024; - while (iVar1 == 0) { - iVar5 = iVar5 + 1; - iVar4 = iVar4 + -1; - if (in_stack_00000020 <= iVar5) break; - iVar1 = in_stack_00000024[iVar5]; - } - } - // try { // try from 080e3bcb to 080e3bcf has its CatchHandler @ 080e3e4e - TWriteBuffer::writeWord(this_00,(ushort)iVar4); - local_14 = 0; - if (0 < in_stack_00000020) { - do { - if (in_stack_00000024[local_14] != 0) { - // try { // try from 080e3c77 to 080e3c7b has its CatchHandler @ 080e3e82 - TWriteBuffer::writeQuad(this_00,in_stack_00000024[local_14]); - // try { // try from 080e3c8c to 080e3c90 has its CatchHandler @ 080e3eb6 - TWriteBuffer::writeQuad(this_00,*(ulong *)(in_stack_00000028 + local_14 * 4)); - // try { // try from 080e3ca1 to 080e3ca5 has its CatchHandler @ 080e3eea - TWriteBuffer::writeQuad(this_00,*(ulong *)(in_stack_0000002c + local_14 * 4)); - // try { // try from 080e3cbe to 080e3cc2 has its CatchHandler @ 080e3f1e - TWriteStream::writeString - (&this_00->super_TWriteStream, - (char *)(in_stack_00000030 + local_14 * 0x1e)); - // try { // try from 080e3cd5 to 080e3cd9 has its CatchHandler @ 080e3f52 - TWriteStream::writeString - (&this_00->super_TWriteStream, - (char *)(local_14 * 0x100 + in_stack_00000034)); - } - local_14 = local_14 + 1; - } while (local_14 < in_stack_00000020); - } - iVar5 = executeQuery(this,0xb4,true); - iVar4 = 0; - if (iVar5 != 0) { - if (iVar5 == 1) { - // try { // try from 080e3c3d to 080e3c41 has its CatchHandler @ 080e3f86 - bVar3 = TReadBuffer::readByte(&this->ReadBuffer); - uVar6 = (uint)bVar3; - bVar2 = false; - if ((uVar6 != 0) && (uVar6 < 3)) { - bVar2 = true; - } - if (bVar2) { - return uVar6; - } - error(&DAT_0810e6c0,uVar6); - } - else { - error("TQueryManagerConnection::reportStatement: Anfrage fehlgeschlagen.\n"); - } - iVar4 = -1; - } - return iVar4; -} - - - -// DWARF original prototype: int banishIPAddress(TQueryManagerConnection * this, ulong GamemasterID, -// char * PlayerName, char * IPAddress, char * Reason, char * Comment) - -int __thiscall TQueryManagerConnection::banishIPAddress(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - bool bVar1; - byte bVar2; - int iVar3; - int FailureCode; - int iVar4; - uint uVar5; - ulong in_stack_00000008; - char *in_stack_0000000c; - char *in_stack_00000010; - char *in_stack_00000014; - char *in_stack_00000018; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e3fe5 to 080e3ff9 has its CatchHandler @ 080e40c0 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\x1c'); - // try { // try from 080e4004 to 080e4008 has its CatchHandler @ 080e4100 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e4013 to 080e4017 has its CatchHandler @ 080e4132 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); - // try { // try from 080e4022 to 080e4026 has its CatchHandler @ 080e4162 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); - // try { // try from 080e4031 to 080e4035 has its CatchHandler @ 080e4192 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); - // try { // try from 080e4040 to 080e4044 has its CatchHandler @ 080e41c6 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); - iVar3 = executeQuery(this,0x1e,true); - iVar4 = 0; - if (iVar3 != 0) { - if (iVar3 == 1) { - // try { // try from 080e4087 to 080e408b has its CatchHandler @ 080e41fa - bVar2 = TReadBuffer::readByte(&this->ReadBuffer); - uVar5 = (uint)bVar2; - bVar1 = false; - if ((uVar5 != 0) && (uVar5 < 3)) { - bVar1 = true; - } - if (bVar1) { - return uVar5; - } - error(&DAT_0810e780,uVar5); - } - else { - error("TQueryManagerConnection::banishIPAddress: Anfrage fehlgeschlagen.\n"); - } - iVar4 = -1; - } - return iVar4; -} - - - -// WARNING: Variable defined which should be unmapped: Unjustified_local -// DWARF original prototype: int logCharacterDeath(TQueryManagerConnection * this, ulong -// CharacterID, int Level, ulong Offender, char * Remark, bool Unjustified, time_t Time) - -int __thiscall -TQueryManagerConnection::logCharacterDeath - (TQueryManagerConnection *this,ulong CharacterID,int Level,ulong Offender,char *Remark, - bool Unjustified,time_t Time) - -{ - TWriteBuffer *this_00; - int iVar1; - bool Unjustified_local; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e425c to 080e4270 has its CatchHandler @ 080e4310 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\x1d'); - // try { // try from 080e427b to 080e427f has its CatchHandler @ 080e4350 - TWriteBuffer::writeQuad(this_00,CharacterID); - // try { // try from 080e428b to 080e428f has its CatchHandler @ 080e4382 - TWriteBuffer::writeWord(this_00,(ushort)Level); - // try { // try from 080e429a to 080e429e has its CatchHandler @ 080e43b2 - TWriteBuffer::writeQuad(this_00,Offender); - // try { // try from 080e42a9 to 080e42ad has its CatchHandler @ 080e43e2 - TWriteStream::writeString(&this_00->super_TWriteStream,Remark); - // try { // try from 080e42be to 080e42c2 has its CatchHandler @ 080e4416 - TWriteBuffer::writeByte(this_00,Unjustified); - // try { // try from 080e42cd to 080e42d1 has its CatchHandler @ 080e444a - TWriteBuffer::writeQuad(this_00,Time); - iVar1 = executeQuery(this,0x5a,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::logCharacterDeath: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int addBuddy(TQueryManagerConnection * this, ulong AccountID, ulong -// Buddy) - -int __thiscall TQueryManagerConnection::addBuddy(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - int iVar1; - ulong in_stack_00000008; - ulong in_stack_0000000c; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e44a5 to 080e44b9 has its CatchHandler @ 080e4513 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\x1e'); - // try { // try from 080e44c4 to 080e44c8 has its CatchHandler @ 080e4550 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e44d3 to 080e44d7 has its CatchHandler @ 080e4582 - TWriteBuffer::writeQuad(this_00,in_stack_0000000c); - iVar1 = executeQuery(this,0x5a,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::addBuddy: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int removeBuddy(TQueryManagerConnection * this, ulong AccountID, ulong -// Buddy) - -int __thiscall TQueryManagerConnection::removeBuddy(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - int iVar1; - ulong in_stack_00000008; - ulong in_stack_0000000c; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e45d5 to 080e45e9 has its CatchHandler @ 080e4643 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\x1f'); - // try { // try from 080e45f4 to 080e45f8 has its CatchHandler @ 080e4680 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e4603 to 080e4607 has its CatchHandler @ 080e46b2 - TWriteBuffer::writeQuad(this_00,in_stack_0000000c); - iVar1 = executeQuery(this,0x5a,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::removeBuddy: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int decrementIsOnline(TQueryManagerConnection * this, ulong -// CharacterID) - -int __thiscall -TQueryManagerConnection::decrementIsOnline(TQueryManagerConnection *this,ulong CharacterID) - -{ - TWriteBuffer *this_00; - int iVar1; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e470b to 080e471f has its CatchHandler @ 080e4773 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,' '); - // try { // try from 080e472a to 080e472e has its CatchHandler @ 080e47b0 - TWriteBuffer::writeQuad(this_00,CharacterID); - iVar1 = executeQuery(this,0x1e,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::decrementIsOnline: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int finishAuctions(TQueryManagerConnection * this, int * -// NumberOfAuctions, ushort * HouseIDs, ulong * CharacterIDs, char[30] * CharacterNames, int * Bids) - -int __thiscall -TQueryManagerConnection::finishAuctions - (TQueryManagerConnection *this,int *NumberOfAuctions,ushort *HouseIDs,ulong *CharacterIDs, - char (*CharacterNames) [30],int *Bids) - -{ - ushort uVar1; - int iVar2; - ulong uVar3; - uint uVar4; - TReadBuffer *this_00; - int MaxNumberOfAuctions; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e4805 to 080e4819 has its CatchHandler @ 080e4900 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,'!'); - iVar2 = executeQuery(this,0x3c,true); - if (iVar2 == 0) { - this_00 = &this->ReadBuffer; - iVar2 = *NumberOfAuctions; - // try { // try from 080e485b to 080e485f has its CatchHandler @ 080e4940 - uVar1 = TReadBuffer::readWord(this_00); - uVar4 = (uint)uVar1; - *NumberOfAuctions = uVar4; - if ((int)uVar4 <= iVar2) { - iVar2 = 0; - if (uVar4 != 0) { - do { - // try { // try from 080e487c to 080e4880 has its CatchHandler @ 080e496b - uVar1 = TReadBuffer::readWord(this_00); - HouseIDs[iVar2] = uVar1; - // try { // try from 080e488e to 080e4892 has its CatchHandler @ 080e4996 - uVar3 = TReadBuffer::readQuad(this_00); - CharacterIDs[iVar2] = uVar3; - // try { // try from 080e48ba to 080e48be has its CatchHandler @ 080e49c4 - TReadStream::readString(&this_00->super_TReadStream,CharacterNames[iVar2],0x1e); - // try { // try from 080e48c2 to 080e48c6 has its CatchHandler @ 080e49fa - uVar3 = TReadBuffer::readQuad(this_00); - Bids[iVar2] = uVar3; - iVar2 = iVar2 + 1; - } while (iVar2 < *NumberOfAuctions); - } - return 0; - } - error("TQueryManagerConnection::finishAuctions: zu viele Auktionen (%d>%d).\n", - *NumberOfAuctions,iVar2); - } - else { - error("TQueryManagerConnection::finishAuctions: Anfrage fehlgeschlagen.\n"); - } - return -1; -} - - - -// WARNING: Variable defined which should be unmapped: Banish_local -// DWARF original prototype: int excludeFromAuctions(TQueryManagerConnection * this, ulong -// CharacterID, bool Banish) - -int __thiscall -TQueryManagerConnection::excludeFromAuctions - (TQueryManagerConnection *this,ulong CharacterID,bool Banish) - -{ - TWriteBuffer *this_00; - int iVar1; - bool Banish_local; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e4a5c to 080e4a70 has its CatchHandler @ 080e4ad3 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'3'); - // try { // try from 080e4a7b to 080e4a7f has its CatchHandler @ 080e4b10 - TWriteBuffer::writeQuad(this_00,CharacterID); - TWriteBuffer::writeByte(this_00,Banish); - iVar1 = executeQuery(this,0x1e,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::excludeFromAuctions: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int transferHouses(TQueryManagerConnection * this, int * -// NumberOfTransfers, ushort * HouseIDs, ulong * NewOwnerIDs, char[30] * NewOwnerNames, int * -// Prices) - -int __thiscall -TQueryManagerConnection::transferHouses - (TQueryManagerConnection *this,int *NumberOfTransfers,ushort *HouseIDs,ulong *NewOwnerIDs, - char (*NewOwnerNames) [30],int *Prices) - -{ - ushort uVar1; - int iVar2; - ulong uVar3; - uint uVar4; - TReadBuffer *this_00; - int MaxNumberOfTransfers; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e4b65 to 080e4b79 has its CatchHandler @ 080e4c60 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,'#'); - iVar2 = executeQuery(this,0x3c,true); - if (iVar2 == 0) { - this_00 = &this->ReadBuffer; - iVar2 = *NumberOfTransfers; - // try { // try from 080e4bbb to 080e4bbf has its CatchHandler @ 080e4ca0 - uVar1 = TReadBuffer::readWord(this_00); - uVar4 = (uint)uVar1; - *NumberOfTransfers = uVar4; - if ((int)uVar4 <= iVar2) { - iVar2 = 0; - if (uVar4 != 0) { - do { - // try { // try from 080e4bdc to 080e4be0 has its CatchHandler @ 080e4ccb - uVar1 = TReadBuffer::readWord(this_00); - HouseIDs[iVar2] = uVar1; - // try { // try from 080e4bee to 080e4bf2 has its CatchHandler @ 080e4cf6 - uVar3 = TReadBuffer::readQuad(this_00); - NewOwnerIDs[iVar2] = uVar3; - // try { // try from 080e4c1a to 080e4c1e has its CatchHandler @ 080e4d24 - TReadStream::readString(&this_00->super_TReadStream,NewOwnerNames[iVar2],0x1e); - // try { // try from 080e4c22 to 080e4c26 has its CatchHandler @ 080e4d5a - uVar3 = TReadBuffer::readQuad(this_00); - Prices[iVar2] = uVar3; - iVar2 = iVar2 + 1; - } while (iVar2 < *NumberOfTransfers); - } - return 0; - } - error("TQueryManagerConnection::transferHouses: zu viele Transfers (%d>%d).\n", - *NumberOfTransfers,iVar2); - } - else { - error("TQueryManagerConnection::transferHouses: Anfrage fehlgeschlagen.\n"); - } - return -1; -} - - - -// WARNING: Variable defined which should be unmapped: HouseID_local -// DWARF original prototype: int cancelHouseTransfer(TQueryManagerConnection * this, ushort HouseID) - -int __thiscall -TQueryManagerConnection::cancelHouseTransfer(TQueryManagerConnection *this,ushort HouseID) - -{ - TWriteBuffer *this_00; - int iVar1; - ushort HouseID_local; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e4dc2 to 080e4dd6 has its CatchHandler @ 080e4e24 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'4'); - // try { // try from 080e4de1 to 080e4de5 has its CatchHandler @ 080e4e60 - TWriteBuffer::writeWord(this_00,HouseID); - iVar1 = executeQuery(this,0x1e,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::cancelHouseTransfer: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int evictFreeAccounts(TQueryManagerConnection * this, int * -// NumberOfEvictions, ushort * HouseIDs, ulong * OwnerIDs) - -int __thiscall -TQueryManagerConnection::evictFreeAccounts - (TQueryManagerConnection *this,int *NumberOfEvictions,ushort *HouseIDs,ulong *OwnerIDs) - -{ - ushort uVar1; - int iVar2; - ulong uVar3; - uint uVar4; - TReadBuffer *this_00; - int MaxNumberOfEvictions; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e4eb5 to 080e4ec9 has its CatchHandler @ 080e4f77 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,'$'); - iVar2 = executeQuery(this,0x3c,true); - if (iVar2 == 0) { - this_00 = &this->ReadBuffer; - iVar2 = *NumberOfEvictions; - // try { // try from 080e4f0b to 080e4f0f has its CatchHandler @ 080e4fb1 - uVar1 = TReadBuffer::readWord(this_00); - uVar4 = (uint)uVar1; - *NumberOfEvictions = uVar4; - if ((int)uVar4 <= iVar2) { - iVar2 = 0; - if (uVar4 != 0) { - do { - // try { // try from 080e4f33 to 080e4f37 has its CatchHandler @ 080e4fdc - uVar1 = TReadBuffer::readWord(this_00); - HouseIDs[iVar2] = uVar1; - // try { // try from 080e4f45 to 080e4f49 has its CatchHandler @ 080e5007 - uVar3 = TReadBuffer::readQuad(this_00); - OwnerIDs[iVar2] = uVar3; - iVar2 = iVar2 + 1; - } while (iVar2 < *NumberOfEvictions); - } - return 0; - } - error(&DAT_0810ebc0,*NumberOfEvictions,iVar2); - } - else { - error("TQueryManagerConnection::evictFreeAccounts: Anfrage fehlgeschlagen.\n"); - } - return -1; -} - - - -// DWARF original prototype: int evictDeletedCharacters(TQueryManagerConnection * this, int * -// NumberOfEvictions, ushort * HouseIDs) - -int __thiscall -TQueryManagerConnection::evictDeletedCharacters - (TQueryManagerConnection *this,int *NumberOfEvictions,ushort *HouseIDs) - -{ - ushort uVar1; - int iVar2; - uint uVar3; - int MaxNumberOfEvictions; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e5055 to 080e5069 has its CatchHandler @ 080e5107 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,'%'); - iVar2 = executeQuery(this,0x3c,true); - if (iVar2 == 0) { - iVar2 = *NumberOfEvictions; - // try { // try from 080e50ae to 080e50b2 has its CatchHandler @ 080e5141 - uVar1 = TReadBuffer::readWord(&this->ReadBuffer); - uVar3 = (uint)uVar1; - *NumberOfEvictions = uVar3; - if ((int)uVar3 <= iVar2) { - iVar2 = 0; - if (uVar3 != 0) { - do { - // try { // try from 080e50d6 to 080e50da has its CatchHandler @ 080e5170 - uVar1 = TReadBuffer::readWord(&this->ReadBuffer); - HouseIDs[iVar2] = uVar1; - iVar2 = iVar2 + 1; - } while (iVar2 < *NumberOfEvictions); - } - return 0; - } - error(&DAT_0810ec80,*NumberOfEvictions,iVar2); - } - else { - error("TQueryManagerConnection::evictDeletedCharacters: Anfrage fehlgeschlagen.\n"); - } - return -1; -} - - - -// WARNING: Variable defined which should be unmapped: i -// DWARF original prototype: int evictExGuildleaders(TQueryManagerConnection * this, int -// NumberOfGuildhouses, int * NumberOfEvictions, ushort * HouseIDs, ulong * Guildleaders) - -int __thiscall -TQueryManagerConnection::evictExGuildleaders - (TQueryManagerConnection *this,int NumberOfGuildhouses,int *NumberOfEvictions, - ushort *HouseIDs,ulong *Guildleaders) - -{ - TWriteBuffer *this_00; - ushort uVar1; - int iVar2; - int i_1; - int local_14; - int i; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e51c5 to 080e51d9 has its CatchHandler @ 080e52b0 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'&'); - // try { // try from 080e51e5 to 080e51e9 has its CatchHandler @ 080e52f0 - TWriteBuffer::writeWord(this_00,(ushort)NumberOfGuildhouses); - local_14 = 0; - if (0 < NumberOfGuildhouses) { - do { - // try { // try from 080e5281 to 080e5285 has its CatchHandler @ 080e5322 - TWriteBuffer::writeWord(this_00,HouseIDs[local_14]); - // try { // try from 080e5296 to 080e529a has its CatchHandler @ 080e5350 - TWriteBuffer::writeQuad(this_00,Guildleaders[local_14]); - local_14 = local_14 + 1; - } while (local_14 < NumberOfGuildhouses); - } - iVar2 = executeQuery(this,0x3c,true); - if (iVar2 == 0) { - // try { // try from 080e5236 to 080e523a has its CatchHandler @ 080e5380 - uVar1 = TReadBuffer::readWord(&this->ReadBuffer); - *NumberOfEvictions = (uint)uVar1; - iVar2 = 0; - if (uVar1 != 0) { - do { - // try { // try from 080e5253 to 080e5257 has its CatchHandler @ 080e53b2 - uVar1 = TReadBuffer::readWord(&this->ReadBuffer); - HouseIDs[iVar2] = uVar1; - iVar2 = iVar2 + 1; - } while (iVar2 < *NumberOfEvictions); - } - iVar2 = 0; - } - else { - error("TQueryManagerConnection::evictExGuildleaders: Anfrage fehlgeschlagen.\n"); - iVar2 = -1; - } - return iVar2; -} - - - -// WARNING: Variable defined which should be unmapped: HouseID_local -// DWARF original prototype: int insertHouseOwner(TQueryManagerConnection * this, ushort HouseID, -// ulong OwnerID, int PaidUntil) - -int __thiscall -TQueryManagerConnection::insertHouseOwner - (TQueryManagerConnection *this,ushort HouseID,ulong OwnerID,int PaidUntil) - -{ - TWriteBuffer *this_00; - int iVar1; - ushort HouseID_local; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e540c to 080e5420 has its CatchHandler @ 080e5487 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'\''); - // try { // try from 080e542b to 080e542f has its CatchHandler @ 080e54c1 - TWriteBuffer::writeWord(this_00,HouseID); - // try { // try from 080e543a to 080e543e has its CatchHandler @ 080e54f2 - TWriteBuffer::writeQuad(this_00,OwnerID); - // try { // try from 080e5449 to 080e544d has its CatchHandler @ 080e5522 - TWriteBuffer::writeQuad(this_00,PaidUntil); - iVar1 = executeQuery(this,0x1e,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::insertHouseOwner: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// WARNING: Variable defined which should be unmapped: HouseID_local -// DWARF original prototype: int updateHouseOwner(TQueryManagerConnection * this, ushort HouseID, -// ulong OwnerID, int PaidUntil) - -int __thiscall -TQueryManagerConnection::updateHouseOwner - (TQueryManagerConnection *this,ushort HouseID,ulong OwnerID,int PaidUntil) - -{ - TWriteBuffer *this_00; - int iVar1; - ushort HouseID_local; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e557c to 080e5590 has its CatchHandler @ 080e55f7 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'('); - // try { // try from 080e559b to 080e559f has its CatchHandler @ 080e5631 - TWriteBuffer::writeWord(this_00,HouseID); - // try { // try from 080e55aa to 080e55ae has its CatchHandler @ 080e5662 - TWriteBuffer::writeQuad(this_00,OwnerID); - // try { // try from 080e55b9 to 080e55bd has its CatchHandler @ 080e5692 - TWriteBuffer::writeQuad(this_00,PaidUntil); - iVar1 = executeQuery(this,0x1e,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::updateHouseOwner: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// WARNING: Variable defined which should be unmapped: HouseID_local -// DWARF original prototype: int deleteHouseOwner(TQueryManagerConnection * this, ushort HouseID) - -int __thiscall -TQueryManagerConnection::deleteHouseOwner(TQueryManagerConnection *this,ushort HouseID) - -{ - TWriteBuffer *this_00; - int iVar1; - ushort HouseID_local; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e56f2 to 080e5706 has its CatchHandler @ 080e5754 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,')'); - // try { // try from 080e5711 to 080e5715 has its CatchHandler @ 080e5790 - TWriteBuffer::writeWord(this_00,HouseID); - iVar1 = executeQuery(this,0x1e,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::deleteHouseOwner: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int getHouseOwners(TQueryManagerConnection * this, int * -// NumberOfHouses, ushort * HouseIDs, ulong * OwnerIDs, char[30] * OwnerNames, int * PaidUntils) - -int __thiscall -TQueryManagerConnection::getHouseOwners - (TQueryManagerConnection *this,int *NumberOfHouses,ushort *HouseIDs,ulong *OwnerIDs, - char (*OwnerNames) [30],int *PaidUntils) - -{ - ushort uVar1; - int iVar2; - ulong uVar3; - uint uVar4; - TReadBuffer *this_00; - int MaxNumberOfHouses; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e57e5 to 080e57f9 has its CatchHandler @ 080e58e0 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,'*'); - iVar2 = executeQuery(this,0x3c,true); - if (iVar2 == 0) { - this_00 = &this->ReadBuffer; - iVar2 = *NumberOfHouses; - // try { // try from 080e583b to 080e583f has its CatchHandler @ 080e5920 - uVar1 = TReadBuffer::readWord(this_00); - uVar4 = (uint)uVar1; - *NumberOfHouses = uVar4; - if ((int)uVar4 <= iVar2) { - iVar2 = 0; - if (uVar4 != 0) { - do { - // try { // try from 080e585c to 080e5860 has its CatchHandler @ 080e594b - uVar1 = TReadBuffer::readWord(this_00); - HouseIDs[iVar2] = uVar1; - // try { // try from 080e586e to 080e5872 has its CatchHandler @ 080e5976 - uVar3 = TReadBuffer::readQuad(this_00); - OwnerIDs[iVar2] = uVar3; - // try { // try from 080e589a to 080e589e has its CatchHandler @ 080e59a4 - TReadStream::readString(&this_00->super_TReadStream,OwnerNames[iVar2],0x1e); - // try { // try from 080e58a2 to 080e58a6 has its CatchHandler @ 080e59da - uVar3 = TReadBuffer::readQuad(this_00); - PaidUntils[iVar2] = uVar3; - iVar2 = iVar2 + 1; - } while (iVar2 < *NumberOfHouses); - } - return 0; - } - error(&DAT_0810eec0,*NumberOfHouses,iVar2); - } - else { - error("TQueryManagerConnection::getHouseOwners: Anfrage fehlgeschlagen.\n"); - } - return -1; -} - - - -// DWARF original prototype: int getAuctions(TQueryManagerConnection * this, int * NumberOfAuctions, -// ushort * HouseIDs) - -int __thiscall -TQueryManagerConnection::getAuctions - (TQueryManagerConnection *this,int *NumberOfAuctions,ushort *HouseIDs) - -{ - ushort uVar1; - int iVar2; - uint uVar3; - int MaxNumberOfAuctions; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e5a35 to 080e5a49 has its CatchHandler @ 080e5ae7 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,'+'); - iVar2 = executeQuery(this,0x78,true); - if (iVar2 == 0) { - iVar2 = *NumberOfAuctions; - // try { // try from 080e5a8e to 080e5a92 has its CatchHandler @ 080e5b21 - uVar1 = TReadBuffer::readWord(&this->ReadBuffer); - uVar3 = (uint)uVar1; - *NumberOfAuctions = uVar3; - if ((int)uVar3 <= iVar2) { - iVar2 = 0; - if (uVar3 != 0) { - do { - // try { // try from 080e5ab6 to 080e5aba has its CatchHandler @ 080e5b50 - uVar1 = TReadBuffer::readWord(&this->ReadBuffer); - HouseIDs[iVar2] = uVar1; - iVar2 = iVar2 + 1; - } while (iVar2 < *NumberOfAuctions); - } - return 0; - } - error("TQueryManagerConnection::getAuctions: zu viele Auktionen (%d>%d).\n", - *NumberOfAuctions,iVar2); - } - else { - error("TQueryManagerConnection::getAuctions: Anfrage fehlgeschlagen.\n"); - } - return -1; -} - - - -// WARNING: Variable defined which should be unmapped: HouseID_local -// DWARF original prototype: int startAuction(TQueryManagerConnection * this, ushort HouseID) - -int __thiscall TQueryManagerConnection::startAuction(TQueryManagerConnection *this,ushort HouseID) - -{ - TWriteBuffer *this_00; - int iVar1; - ushort HouseID_local; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e5bb2 to 080e5bc6 has its CatchHandler @ 080e5c14 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,','); - // try { // try from 080e5bd1 to 080e5bd5 has its CatchHandler @ 080e5c50 - TWriteBuffer::writeWord(this_00,HouseID); - iVar1 = executeQuery(this,0x1e,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::startAuction: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// WARNING: Variable defined which should be unmapped: i -// DWARF original prototype: int insertHouses(TQueryManagerConnection * this, int NumberOfHouses, -// ushort * HouseIDs, char * * Names, int * Rents, char * * Descriptions, int * Sizes, int * -// PositionsX, int * PositionsY, int * PositionsZ, char[30] * Towns, bool * Guildhouses) - -int __thiscall -TQueryManagerConnection::insertHouses - (TQueryManagerConnection *this,int NumberOfHouses,ushort *HouseIDs,char **Names,int *Rents - ,char **Descriptions,int *Sizes,int *PositionsX,int *PositionsY,int *PositionsZ, - char (*Towns) [30],bool *Guildhouses) - -{ - TWriteBuffer *this_00; - int iVar1; - int local_14; - int i; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e5ca5 to 080e5cb9 has its CatchHandler @ 080e5e10 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'-'); - // try { // try from 080e5cc5 to 080e5cc9 has its CatchHandler @ 080e5e50 - TWriteBuffer::writeWord(this_00,(ushort)NumberOfHouses); - local_14 = 0; - if (0 < NumberOfHouses) { - do { - // try { // try from 080e5d23 to 080e5d27 has its CatchHandler @ 080e5e82 - TWriteBuffer::writeWord(this_00,HouseIDs[local_14]); - // try { // try from 080e5d38 to 080e5d3c has its CatchHandler @ 080e5eaf - TWriteStream::writeString(&this_00->super_TWriteStream,Names[local_14]); - // try { // try from 080e5d4d to 080e5d51 has its CatchHandler @ 080e5edf - TWriteBuffer::writeQuad(this_00,Rents[local_14]); - // try { // try from 080e5d62 to 080e5d66 has its CatchHandler @ 080e5f13 - TWriteStream::writeString(&this_00->super_TWriteStream,Descriptions[local_14]); - // try { // try from 080e5d78 to 080e5d7c has its CatchHandler @ 080e5f47 - TWriteBuffer::writeWord(this_00,*(ushort *)(Sizes + local_14)); - // try { // try from 080e5d8e to 080e5d92 has its CatchHandler @ 080e5f7b - TWriteBuffer::writeWord(this_00,*(ushort *)(PositionsX + local_14)); - // try { // try from 080e5da4 to 080e5da8 has its CatchHandler @ 080e5faf - TWriteBuffer::writeWord(this_00,*(ushort *)(PositionsY + local_14)); - // try { // try from 080e5dba to 080e5dbe has its CatchHandler @ 080e5fe3 - TWriteBuffer::writeByte(this_00,(uchar)PositionsZ[local_14]); - // try { // try from 080e5dd7 to 080e5ddb has its CatchHandler @ 080e6017 - TWriteStream::writeString(&this_00->super_TWriteStream,Towns[local_14]); - // try { // try from 080e5df3 to 080e5df7 has its CatchHandler @ 080e604b - TWriteBuffer::writeByte(this_00,Guildhouses[local_14] != false); - local_14 = local_14 + 1; - } while (local_14 < NumberOfHouses); - } - iVar1 = executeQuery(this,0x3c,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::insertHouses: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int clearIsOnline(TQueryManagerConnection * this, int * -// NumberOfAffectedPlayers) - -int __thiscall -TQueryManagerConnection::clearIsOnline(TQueryManagerConnection *this,int *NumberOfAffectedPlayers) - -{ - ushort uVar1; - int iVar2; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e60a8 to 080e60bc has its CatchHandler @ 080e6110 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,'.'); - iVar2 = executeQuery(this,0x78,true); - if (iVar2 == 0) { - // try { // try from 080e60fa to 080e60fe has its CatchHandler @ 080e6147 - uVar1 = TReadBuffer::readWord(&this->ReadBuffer); - *NumberOfAffectedPlayers = (uint)uVar1; - iVar2 = 0; - } - else { - error("TQueryManagerConnection::clearIsOnline: Anfrage fehlgeschlagen.\n"); - iVar2 = -1; - } - return iVar2; -} - - - -// DWARF original prototype: int createPlayerlist(TQueryManagerConnection * this, int -// NumberOfPlayers, char * * Names, int * Levels, char[30] * Professions, bool * NewRecord) - -int __thiscall -TQueryManagerConnection::createPlayerlist - (TQueryManagerConnection *this,int NumberOfPlayers,char **Names,int *Levels, - char (*Professions) [30],bool *NewRecord) - -{ - uchar uVar1; - ushort w; - TWriteBuffer *this_00; - int i; - int iVar2; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e6197 to 080e61ab has its CatchHandler @ 080e6270 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'/'); - w = 0xffff; - if (-1 < NumberOfPlayers) { - w = (ushort)NumberOfPlayers; - } - // try { // try from 080e61c4 to 080e61c8 has its CatchHandler @ 080e62b0 - TWriteBuffer::writeWord(this_00,w); - iVar2 = 0; - if (0 < NumberOfPlayers) { - do { - // try { // try from 080e6232 to 080e6236 has its CatchHandler @ 080e62e2 - TWriteStream::writeString(&this_00->super_TWriteStream,Names[iVar2]); - // try { // try from 080e6245 to 080e6249 has its CatchHandler @ 080e6312 - TWriteBuffer::writeWord(this_00,*(ushort *)(Levels + iVar2)); - // try { // try from 080e625e to 080e6262 has its CatchHandler @ 080e6345 - TWriteStream::writeString(&this_00->super_TWriteStream,Professions[iVar2]); - iVar2 = iVar2 + 1; - } while (iVar2 < NumberOfPlayers); - } - iVar2 = executeQuery(this,0xf0,true); - if (iVar2 == 0) { - // try { // try from 080e6211 to 080e6215 has its CatchHandler @ 080e637c - uVar1 = TReadBuffer::readByte(&this->ReadBuffer); - *NewRecord = uVar1 != '\0'; - iVar2 = 0; - } - else { - error("TQueryManagerConnection::createPlayerlist: Anfrage fehlgeschlagen.\n"); - iVar2 = -1; - } - return iVar2; -} - - - -// WARNING: Variable defined which should be unmapped: i -// DWARF original prototype: int logKilledCreatures(TQueryManagerConnection * this, int -// NumberOfRaces, char * * Names, int * KilledPlayers, int * KilledCreatures) - -int __thiscall -TQueryManagerConnection::logKilledCreatures - (TQueryManagerConnection *this,int NumberOfRaces,char **Names,int *KilledPlayers, - int *KilledCreatures) - -{ - TWriteBuffer *this_00; - int iVar1; - int local_14; - int i; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e63d5 to 080e63e9 has its CatchHandler @ 080e6491 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'0'); - // try { // try from 080e63f5 to 080e63f9 has its CatchHandler @ 080e64d0 - TWriteBuffer::writeWord(this_00,(ushort)NumberOfRaces); - local_14 = 0; - if (0 < NumberOfRaces) { - do { - // try { // try from 080e6452 to 080e6456 has its CatchHandler @ 080e6502 - TWriteStream::writeString(&this_00->super_TWriteStream,Names[local_14]); - // try { // try from 080e6467 to 080e646b has its CatchHandler @ 080e6530 - TWriteBuffer::writeQuad(this_00,KilledPlayers[local_14]); - // try { // try from 080e647c to 080e6480 has its CatchHandler @ 080e6560 - TWriteBuffer::writeQuad(this_00,KilledCreatures[local_14]); - local_14 = local_14 + 1; - } while (local_14 < NumberOfRaces); - } - iVar1 = executeQuery(this,0xf0,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::logKilledCreatures: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int loadPlayers(TQueryManagerConnection * this, ulong -// MinimumCharacterID, int * NumberOfPlayers, char[30] * Names, ulong * CharacterIDs) - -int __thiscall -TQueryManagerConnection::loadPlayers - (TQueryManagerConnection *this,ulong MinimumCharacterID,int *NumberOfPlayers, - char (*Names) [30],ulong *CharacterIDs) - -{ - TWriteBuffer *this_00; - int iVar1; - ulong uVar2; - int i; - TReadBuffer *this_01; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e65b5 to 080e65c9 has its CatchHandler @ 080e6670 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,'2'); - // try { // try from 080e65d4 to 080e65d8 has its CatchHandler @ 080e66b0 - TWriteBuffer::writeQuad(this_00,MinimumCharacterID); - iVar1 = executeQuery(this,900,true); - if (iVar1 == 0) { - this_01 = &this->ReadBuffer; - // try { // try from 080e6616 to 080e661a has its CatchHandler @ 080e66e2 - uVar2 = TReadBuffer::readQuad(this_01); - iVar1 = 0; - *NumberOfPlayers = uVar2; - if (0 < (int)uVar2) { - do { - // try { // try from 080e664f to 080e6653 has its CatchHandler @ 080e670d - TReadStream::readString(&this_01->super_TReadStream,Names[iVar1],0x1e); - // try { // try from 080e6657 to 080e665b has its CatchHandler @ 080e673f - uVar2 = TReadBuffer::readQuad(this_01); - CharacterIDs[iVar1] = uVar2; - iVar1 = iVar1 + 1; - } while (iVar1 < *NumberOfPlayers); - } - iVar1 = 0; - } - else { - error("TQueryManagerConnection::loadPlayers: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int getKeptCharacters(TQueryManagerConnection * this, ulong -// MinimumCharacterID, int * NumberOfPlayers, ulong * CharacterIDs) - -int __thiscall -TQueryManagerConnection::getKeptCharacters - (TQueryManagerConnection *this,ulong MinimumCharacterID,int *NumberOfPlayers, - ulong *CharacterIDs) - -{ - TWriteBuffer *this_00; - int iVar1; - ulong uVar2; - int i; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e6795 to 080e67a9 has its CatchHandler @ 080e6830 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,200); - // try { // try from 080e67b4 to 080e67b8 has its CatchHandler @ 080e6870 - TWriteBuffer::writeQuad(this_00,MinimumCharacterID); - iVar1 = executeQuery(this,0x708,true); - if (iVar1 == 0) { - // try { // try from 080e67f6 to 080e67fa has its CatchHandler @ 080e68a2 - uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); - iVar1 = 0; - *NumberOfPlayers = uVar2; - if (0 < (int)uVar2) { - do { - // try { // try from 080e6813 to 080e6817 has its CatchHandler @ 080e68d0 - uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); - CharacterIDs[iVar1] = uVar2; - iVar1 = iVar1 + 1; - } while (iVar1 < *NumberOfPlayers); - } - iVar1 = 0; - } - else { - error("TQueryManagerConnection::getKeptCharacters: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int getDeletedCharacters(TQueryManagerConnection * this, ulong -// MinimumCharacterID, int * NumberOfPlayers, ulong * CharacterIDs) - -int __thiscall -TQueryManagerConnection::getDeletedCharacters - (TQueryManagerConnection *this,ulong MinimumCharacterID,int *NumberOfPlayers, - ulong *CharacterIDs) - -{ - TWriteBuffer *this_00; - int iVar1; - ulong uVar2; - int i; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e6925 to 080e6939 has its CatchHandler @ 080e69c0 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xc9); - // try { // try from 080e6944 to 080e6948 has its CatchHandler @ 080e6a00 - TWriteBuffer::writeQuad(this_00,MinimumCharacterID); - iVar1 = executeQuery(this,900,true); - if (iVar1 == 0) { - // try { // try from 080e6986 to 080e698a has its CatchHandler @ 080e6a32 - uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); - iVar1 = 0; - *NumberOfPlayers = uVar2; - if (0 < (int)uVar2) { - do { - // try { // try from 080e69a3 to 080e69a7 has its CatchHandler @ 080e6a60 - uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); - CharacterIDs[iVar1] = uVar2; - iVar1 = iVar1 + 1; - } while (iVar1 < *NumberOfPlayers); - } - iVar1 = 0; - } - else { - error("TQueryManagerConnection::getKeptCharacters: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int deleteOldCharacter(TQueryManagerConnection * this, ulong -// CharacterID) - -int __thiscall -TQueryManagerConnection::deleteOldCharacter(TQueryManagerConnection *this,ulong CharacterID) - -{ - TWriteBuffer *this_00; - int iVar1; - - this_00 = &this->WriteBuffer; - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e6abb to 080e6acf has its CatchHandler @ 080e6b23 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xca); - // try { // try from 080e6ada to 080e6ade has its CatchHandler @ 080e6b60 - TWriteBuffer::writeQuad(this_00,CharacterID); - iVar1 = executeQuery(this,0x1e,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::deleteOldCharacter: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int getHiddenCharacters(TQueryManagerConnection * this, ulong -// MinimumCharacterID, int * NumberOfPlayers, ulong * CharacterIDs) - -int __thiscall -TQueryManagerConnection::getHiddenCharacters - (TQueryManagerConnection *this,ulong MinimumCharacterID,int *NumberOfPlayers, - ulong *CharacterIDs) - -{ - TWriteBuffer *this_00; - int iVar1; - ulong uVar2; - int i; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e6bb5 to 080e6bc9 has its CatchHandler @ 080e6c50 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xcb); - // try { // try from 080e6bd4 to 080e6bd8 has its CatchHandler @ 080e6c90 - TWriteBuffer::writeQuad(this_00,MinimumCharacterID); - iVar1 = executeQuery(this,0x78,true); - if (iVar1 == 0) { - // try { // try from 080e6c16 to 080e6c1a has its CatchHandler @ 080e6cc2 - uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); - iVar1 = 0; - *NumberOfPlayers = uVar2; - if (0 < (int)uVar2) { - do { - // try { // try from 080e6c33 to 080e6c37 has its CatchHandler @ 080e6cf0 - uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); - CharacterIDs[iVar1] = uVar2; - iVar1 = iVar1 + 1; - } while (iVar1 < *NumberOfPlayers); - } - iVar1 = 0; - } - else { - error("TQueryManagerConnection::getHiddenCharacters: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// WARNING: Variable defined which should be unmapped: i -// DWARF original prototype: int createHighscores(TQueryManagerConnection * this, int -// NumberOfPlayers, ulong * CharacterIDs, int * ExpPoints, int * ExpLevel, int * Fist, int * Club, -// int * Axe, int * Sword, int * Distance, int * Shielding, int * Magic, int * Fishing) - -int __thiscall -TQueryManagerConnection::createHighscores - (TQueryManagerConnection *this,int NumberOfPlayers,ulong *CharacterIDs,int *ExpPoints, - int *ExpLevel,int *Fist,int *Club,int *Axe,int *Sword,int *Distance,int *Shielding, - int *Magic,int *Fishing) - -{ - TWriteBuffer *this_00; - int iVar1; - int local_14; - int i; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e6d45 to 080e6d59 has its CatchHandler @ 080e6eb5 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xcc); - // try { // try from 080e6d64 to 080e6d68 has its CatchHandler @ 080e6ef0 - TWriteBuffer::writeQuad(this_00,NumberOfPlayers); - local_14 = 0; - if (0 < NumberOfPlayers) { - do { - // try { // try from 080e6dc1 to 080e6dc5 has its CatchHandler @ 080e6f22 - TWriteBuffer::writeQuad(this_00,CharacterIDs[local_14]); - // try { // try from 080e6dd6 to 080e6dda has its CatchHandler @ 080e6f4f - TWriteBuffer::writeQuad(this_00,ExpPoints[local_14]); - // try { // try from 080e6dec to 080e6df0 has its CatchHandler @ 080e6f7f - TWriteBuffer::writeWord(this_00,*(ushort *)(ExpLevel + local_14)); - // try { // try from 080e6e02 to 080e6e06 has its CatchHandler @ 080e6fb3 - TWriteBuffer::writeWord(this_00,*(ushort *)(Fist + local_14)); - // try { // try from 080e6e18 to 080e6e1c has its CatchHandler @ 080e6fe7 - TWriteBuffer::writeWord(this_00,*(ushort *)(Club + local_14)); - // try { // try from 080e6e2e to 080e6e32 has its CatchHandler @ 080e701b - TWriteBuffer::writeWord(this_00,*(ushort *)(Axe + local_14)); - // try { // try from 080e6e44 to 080e6e48 has its CatchHandler @ 080e704f - TWriteBuffer::writeWord(this_00,*(ushort *)(Sword + local_14)); - // try { // try from 080e6e5a to 080e6e5e has its CatchHandler @ 080e7083 - TWriteBuffer::writeWord(this_00,*(ushort *)(Distance + local_14)); - // try { // try from 080e6e70 to 080e6e74 has its CatchHandler @ 080e70b7 - TWriteBuffer::writeWord(this_00,*(ushort *)(Shielding + local_14)); - // try { // try from 080e6e86 to 080e6e8a has its CatchHandler @ 080e70eb - TWriteBuffer::writeWord(this_00,*(ushort *)(Magic + local_14)); - // try { // try from 080e6e9c to 080e6ea0 has its CatchHandler @ 080e711f - TWriteBuffer::writeWord(this_00,*(ushort *)(Fishing + local_14)); - local_14 = local_14 + 1; - } while (local_14 < NumberOfPlayers); - } - iVar1 = executeQuery(this,0x78,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::createHighscores: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int createCensus(TQueryManagerConnection * this) - -int __thiscall TQueryManagerConnection::createCensus(TQueryManagerConnection *this) - -{ - int iVar1; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e7178 to 080e718c has its CatchHandler @ 080e71c8 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,0xcd); - iVar1 = executeQuery(this,600,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::createCensus: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int createKillStatistics(TQueryManagerConnection * this) - -int __thiscall TQueryManagerConnection::createKillStatistics(TQueryManagerConnection *this) - -{ - int iVar1; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e7228 to 080e723c has its CatchHandler @ 080e7278 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,0xce); - iVar1 = executeQuery(this,300,true); - if (iVar1 == 0) { - iVar1 = 0; - } - else { - error("TQueryManagerConnection::createKillStatistics: Anfrage fehlgeschlagen.\n"); - iVar1 = -1; - } - return iVar1; -} - - - -// DWARF original prototype: int getPlayersOnline(TQueryManagerConnection * this, int * -// NumberOfWorlds, char[30] * Names, ushort * Players) - -int __thiscall -TQueryManagerConnection::getPlayersOnline - (TQueryManagerConnection *this,int *NumberOfWorlds,char (*Names) [30],ushort *Players) - -{ - TReadBuffer *this_00; - byte bVar1; - ushort uVar2; - int iVar3; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e72d5 to 080e72e9 has its CatchHandler @ 080e7380 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,0xcf); - iVar3 = executeQuery(this,0x78,true); - if (iVar3 == 0) { - this_00 = &this->ReadBuffer; - // try { // try from 080e7326 to 080e732a has its CatchHandler @ 080e73c0 - bVar1 = TReadBuffer::readByte(this_00); - iVar3 = 0; - *NumberOfWorlds = (uint)bVar1; - if (bVar1 != 0) { - do { - // try { // try from 080e735f to 080e7363 has its CatchHandler @ 080e73eb - TReadStream::readString(&this_00->super_TReadStream,Names[iVar3],0x1e); - // try { // try from 080e7367 to 080e736b has its CatchHandler @ 080e741a - uVar2 = TReadBuffer::readWord(this_00); - Players[iVar3] = uVar2; - iVar3 = iVar3 + 1; - } while (iVar3 < *NumberOfWorlds); - } - iVar3 = 0; - } - else { - error("TQueryManagerConnection::getPlayersOnline: Anfrage fehlgeschlagen.\n"); - iVar3 = -1; - } - return iVar3; -} - - - -// DWARF original prototype: int getWorlds(TQueryManagerConnection * this, int * NumberOfWorlds, -// char[30] * Names) - -int __thiscall -TQueryManagerConnection::getWorlds - (TQueryManagerConnection *this,int *NumberOfWorlds,char (*Names) [30]) - -{ - byte bVar1; - int iVar2; - - this->QueryOk = true; - (this->WriteBuffer).Position = 0; - // try { // try from 080e7475 to 080e7489 has its CatchHandler @ 080e7511 - TWriteBuffer::writeWord(&this->WriteBuffer,0); - TWriteBuffer::writeByte(&this->WriteBuffer,0xd0); - iVar2 = executeQuery(this,0x78,true); - if (iVar2 == 0) { - // try { // try from 080e74c9 to 080e74cd has its CatchHandler @ 080e7550 - bVar1 = TReadBuffer::readByte(&this->ReadBuffer); - iVar2 = 0; - *NumberOfWorlds = (uint)bVar1; - if (bVar1 != 0) { - do { - // try { // try from 080e7502 to 080e7506 has its CatchHandler @ 080e7580 - TReadStream::readString(&(this->ReadBuffer).super_TReadStream,Names[iVar2],0x1e); - iVar2 = iVar2 + 1; - } while (iVar2 < *NumberOfWorlds); - } - iVar2 = 0; - } - else { - error("TQueryManagerConnection::getWorlds: Anfrage fehlgeschlagen.\n"); - iVar2 = -1; - } - return iVar2; -} - - - -// DWARF original prototype: int getServerLoad(TQueryManagerConnection * this, char * World, int -// Period, int * Data) - -int __thiscall -TQueryManagerConnection::getServerLoad - (TQueryManagerConnection *this,char *World,int Period,int *Data) - -{ - TWriteBuffer *this_00; - ushort uVar1; - int iVar2; - uint uVar3; - ushort Value; - int i; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e75d5 to 080e75e9 has its CatchHandler @ 080e7673 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xd1); - // try { // try from 080e75f4 to 080e75f8 has its CatchHandler @ 080e76b0 - TWriteStream::writeString(&this_00->super_TWriteStream,World); - // try { // try from 080e7607 to 080e760b has its CatchHandler @ 080e76e2 - TWriteBuffer::writeByte(this_00,(uchar)Period); - iVar2 = executeQuery(this,0x168,true); - if (iVar2 == 0) { - iVar2 = 0; - do { - // try { // try from 080e7630 to 080e7634 has its CatchHandler @ 080e7712 - uVar1 = TReadBuffer::readWord(&this->ReadBuffer); - uVar3 = 0xffffffff; - if (uVar1 != 0xffff) { - uVar3 = (uint)uVar1; - } - Data[iVar2] = uVar3; - iVar2 = iVar2 + 1; - } while (iVar2 < 600); - iVar2 = 0; - } - else { - error("TQueryManagerConnection::getServerLoad: Anfrage fehlgeschlagen.\n"); - iVar2 = -1; - } - return iVar2; -} - - - -// DWARF original prototype: int insertPaymentDataOld(TQueryManagerConnection * this, ulong -// PurchaseNr, ulong ReferenceNr, char * FirstName, char * LastName, char * Company, char * Street, -// char * Zip, char * City, char * Country, char * State, char * Phone, char * Fax, char * EMail, -// char * PaymentMethod, ulong ProductID, char * Registrant, ulong AccountID, ulong * PaymentID) - -int __thiscall TQueryManagerConnection::insertPaymentDataOld(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - byte bVar1; - int iVar2; - ulong uVar3; - ulong in_stack_00000008; - ulong in_stack_0000000c; - char *in_stack_00000010; - char *in_stack_00000014; - char *in_stack_00000018; - char *in_stack_0000001c; - char *in_stack_00000020; - char *in_stack_00000024; - char *in_stack_00000028; - char *in_stack_0000002c; - char *in_stack_00000030; - char *in_stack_00000034; - char *in_stack_00000038; - char *in_stack_0000003c; - ulong in_stack_00000040; - char *in_stack_00000044; - ulong in_stack_00000048; - ulong *in_stack_0000004c; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e7765 to 080e7779 has its CatchHandler @ 080e78f6 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xd2); - // try { // try from 080e7784 to 080e7788 has its CatchHandler @ 080e7930 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e7793 to 080e7797 has its CatchHandler @ 080e7962 - TWriteBuffer::writeQuad(this_00,in_stack_0000000c); - // try { // try from 080e77a2 to 080e77a6 has its CatchHandler @ 080e7992 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); - // try { // try from 080e77b1 to 080e77b5 has its CatchHandler @ 080e79c2 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); - // try { // try from 080e77c0 to 080e77c4 has its CatchHandler @ 080e79f6 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); - // try { // try from 080e77cf to 080e77d3 has its CatchHandler @ 080e7a2a - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000001c); - // try { // try from 080e77de to 080e77e2 has its CatchHandler @ 080e7a5e - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000020); - // try { // try from 080e77ed to 080e77f1 has its CatchHandler @ 080e7a92 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000024); - // try { // try from 080e77fc to 080e7800 has its CatchHandler @ 080e7ac6 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000028); - // try { // try from 080e780b to 080e780f has its CatchHandler @ 080e7afa - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000002c); - // try { // try from 080e781a to 080e781e has its CatchHandler @ 080e7b2e - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000030); - // try { // try from 080e7829 to 080e782d has its CatchHandler @ 080e7b62 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000034); - // try { // try from 080e7838 to 080e783c has its CatchHandler @ 080e7b96 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000038); - // try { // try from 080e7847 to 080e784b has its CatchHandler @ 080e7bca - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000003c); - // try { // try from 080e7856 to 080e785a has its CatchHandler @ 080e7bfe - TWriteBuffer::writeQuad(this_00,in_stack_00000040); - // try { // try from 080e7865 to 080e7869 has its CatchHandler @ 080e7c32 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000044); - // try { // try from 080e7874 to 080e7878 has its CatchHandler @ 080e7c66 - TWriteBuffer::writeQuad(this_00,in_stack_00000048); - iVar2 = executeQuery(this,0x168,true); - if (iVar2 == 0) { - // try { // try from 080e78e6 to 080e78ea has its CatchHandler @ 080e7c9a - uVar3 = TReadBuffer::readQuad(&this->ReadBuffer); - *in_stack_0000004c = uVar3; - iVar2 = 0; - } - else { - if (iVar2 == 1) { - // try { // try from 080e78b7 to 080e78bb has its CatchHandler @ 080e7ccc - bVar1 = TReadBuffer::readByte(&this->ReadBuffer); - if (bVar1 == 1) { - return 1; - } - error(&DAT_0810f520,(uint)bVar1); - } - else { - error("TQueryManagerConnection::insertPaymentDataOld: Anfrage fehlgeschlagen.\n"); - } - iVar2 = -1; - } - return iVar2; -} - - - -// DWARF original prototype: int addPaymentOld(TQueryManagerConnection * this, ulong AccountID, char -// * Description, ulong PaymentID, int Days, int * ActionTaken) - -int __thiscall TQueryManagerConnection::addPaymentOld(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - bool bVar1; - byte bVar2; - int iVar3; - int FailureCode; - uint uVar4; - ulong in_stack_00000008; - char *in_stack_0000000c; - ulong in_stack_00000010; - ushort in_stack_00000014; - uint *in_stack_00000018; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e7d25 to 080e7d39 has its CatchHandler @ 080e7e06 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xd3); - // try { // try from 080e7d44 to 080e7d48 has its CatchHandler @ 080e7e40 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e7d53 to 080e7d57 has its CatchHandler @ 080e7e72 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); - // try { // try from 080e7d62 to 080e7d66 has its CatchHandler @ 080e7ea2 - TWriteBuffer::writeQuad(this_00,in_stack_00000010); - // try { // try from 080e7d72 to 080e7d76 has its CatchHandler @ 080e7ed2 - TWriteBuffer::writeWord(this_00,in_stack_00000014); - iVar3 = executeQuery(this,0x168,true); - if (iVar3 == 0) { - // try { // try from 080e7df2 to 080e7df6 has its CatchHandler @ 080e7f06 - bVar2 = TReadBuffer::readByte(&this->ReadBuffer); - *in_stack_00000018 = (uint)bVar2; - iVar3 = 0; - } - else { - if (iVar3 == 1) { - // try { // try from 080e7db5 to 080e7db9 has its CatchHandler @ 080e7f38 - bVar2 = TReadBuffer::readByte(&this->ReadBuffer); - uVar4 = (uint)bVar2; - bVar1 = false; - if ((uVar4 != 0) && (uVar4 < 3)) { - bVar1 = true; - } - if (bVar1) { - return uVar4; - } - error(&DAT_0810f5e0,uVar4); - } - else { - error("TQueryManagerConnection::addPaymentOld: Anfrage fehlgeschlagen.\n"); - } - iVar3 = -1; - } - return iVar3; -} - - - -// DWARF original prototype: int cancelPaymentOld(TQueryManagerConnection * this, ulong PurchaseNr, -// ulong ReferenceNr, ulong AccountID, bool * IllegalUse, char * EMailAddress) - -int __thiscall TQueryManagerConnection::cancelPaymentOld(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - bool bVar1; - byte bVar2; - uchar uVar3; - int iVar4; - int FailureCode; - uint uVar5; - ulong in_stack_00000008; - ulong in_stack_0000000c; - ulong in_stack_00000010; - undefined4 in_stack_00000014; - char *in_stack_00000018; - char *Text; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e7f95 to 080e7fa9 has its CatchHandler @ 080e8072 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xd4); - // try { // try from 080e7fb4 to 080e7fb8 has its CatchHandler @ 080e80b0 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e7fc3 to 080e7fc7 has its CatchHandler @ 080e80e2 - TWriteBuffer::writeQuad(this_00,in_stack_0000000c); - // try { // try from 080e7fd2 to 080e7fd6 has its CatchHandler @ 080e8112 - TWriteBuffer::writeQuad(this_00,in_stack_00000010); - iVar4 = executeQuery(this,0x168,true); - if (iVar4 == 0) { - // try { // try from 080e8047 to 080e804b has its CatchHandler @ 080e8142 - uVar3 = TReadBuffer::readByte(&this->ReadBuffer); - *(bool *)in_stack_00000014 = uVar3 != '\0'; - // try { // try from 080e8069 to 080e806d has its CatchHandler @ 080e8174 - TReadStream::readString(&(this->ReadBuffer).super_TReadStream,in_stack_00000018,0x32); - iVar4 = 0; - } - else { - if (iVar4 == 1) { - // try { // try from 080e8015 to 080e8019 has its CatchHandler @ 080e81aa - bVar2 = TReadBuffer::readByte(&this->ReadBuffer); - uVar5 = (uint)bVar2; - bVar1 = false; - if ((uVar5 != 0) && (uVar5 < 3)) { - bVar1 = true; - } - if (bVar1) { - return uVar5; - } - Text = &DAT_0810f6a0; - } - else { - Text = "TQueryManagerConnection::cancelPaymentOld: Anfrage fehlgeschlagen.\n"; - } - error(Text); - iVar4 = -1; - } - return iVar4; -} - - - -// DWARF original prototype: int insertPaymentDataNew(TQueryManagerConnection * this, ulong -// PurchaseNr, ulong ReferenceNr, char * FirstName, char * LastName, char * Company, char * Street, -// char * Zip, char * City, char * Country, char * State, char * Phone, char * Fax, char * EMail, -// char * PaymentMethod, ulong ProductID, char * Registrant, char * PaymentKey, ulong * PaymentID) - -int __thiscall TQueryManagerConnection::insertPaymentDataNew(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - byte bVar1; - int iVar2; - ulong uVar3; - ulong in_stack_00000008; - ulong in_stack_0000000c; - char *in_stack_00000010; - char *in_stack_00000014; - char *in_stack_00000018; - char *in_stack_0000001c; - char *in_stack_00000020; - char *in_stack_00000024; - char *in_stack_00000028; - char *in_stack_0000002c; - char *in_stack_00000030; - char *in_stack_00000034; - char *in_stack_00000038; - char *in_stack_0000003c; - ulong in_stack_00000040; - char *in_stack_00000044; - char *in_stack_00000048; - ulong *in_stack_0000004c; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e8205 to 080e8219 has its CatchHandler @ 080e8396 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xd5); - // try { // try from 080e8224 to 080e8228 has its CatchHandler @ 080e83d0 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e8233 to 080e8237 has its CatchHandler @ 080e8402 - TWriteBuffer::writeQuad(this_00,in_stack_0000000c); - // try { // try from 080e8242 to 080e8246 has its CatchHandler @ 080e8432 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); - // try { // try from 080e8251 to 080e8255 has its CatchHandler @ 080e8462 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); - // try { // try from 080e8260 to 080e8264 has its CatchHandler @ 080e8496 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); - // try { // try from 080e826f to 080e8273 has its CatchHandler @ 080e84ca - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000001c); - // try { // try from 080e827e to 080e8282 has its CatchHandler @ 080e84fe - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000020); - // try { // try from 080e828d to 080e8291 has its CatchHandler @ 080e8532 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000024); - // try { // try from 080e829c to 080e82a0 has its CatchHandler @ 080e8566 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000028); - // try { // try from 080e82ab to 080e82af has its CatchHandler @ 080e859a - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000002c); - // try { // try from 080e82ba to 080e82be has its CatchHandler @ 080e85ce - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000030); - // try { // try from 080e82c9 to 080e82cd has its CatchHandler @ 080e8602 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000034); - // try { // try from 080e82d8 to 080e82dc has its CatchHandler @ 080e8636 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000038); - // try { // try from 080e82e7 to 080e82eb has its CatchHandler @ 080e866a - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000003c); - // try { // try from 080e82f6 to 080e82fa has its CatchHandler @ 080e869e - TWriteBuffer::writeQuad(this_00,in_stack_00000040); - // try { // try from 080e8305 to 080e8309 has its CatchHandler @ 080e86d2 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000044); - // try { // try from 080e8314 to 080e8318 has its CatchHandler @ 080e8706 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000048); - iVar2 = executeQuery(this,0x168,true); - if (iVar2 == 0) { - // try { // try from 080e8386 to 080e838a has its CatchHandler @ 080e873a - uVar3 = TReadBuffer::readQuad(&this->ReadBuffer); - *in_stack_0000004c = uVar3; - iVar2 = 0; - } - else { - if (iVar2 == 1) { - // try { // try from 080e8357 to 080e835b has its CatchHandler @ 080e876c - bVar1 = TReadBuffer::readByte(&this->ReadBuffer); - if (bVar1 == 1) { - return 1; - } - error(&DAT_0810f760,(uint)bVar1); - } - else { - error("TQueryManagerConnection::insertPaymentDataNew: Anfrage fehlgeschlagen.\n"); - } - iVar2 = -1; - } - return iVar2; -} - - - -// DWARF original prototype: int addPaymentNew(TQueryManagerConnection * this, char * PaymentKey, -// ulong PaymentID, int * ActionTaken, char * EMailReceiver) - -int __thiscall TQueryManagerConnection::addPaymentNew(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - bool bVar1; - byte bVar2; - int iVar3; - int FailureCode; - uint uVar4; - char *in_stack_00000008; - ulong in_stack_0000000c; - uint *in_stack_00000010; - char *in_stack_00000014; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e87c5 to 080e87d9 has its CatchHandler @ 080e88a8 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xd6); - // try { // try from 080e87e4 to 080e87e8 has its CatchHandler @ 080e88e2 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000008); - // try { // try from 080e87f3 to 080e87f7 has its CatchHandler @ 080e8912 - TWriteBuffer::writeQuad(this_00,in_stack_0000000c); - iVar3 = executeQuery(this,0x168,true); - if (iVar3 == 0) { - // try { // try from 080e8876 to 080e887a has its CatchHandler @ 080e8942 - bVar2 = TReadBuffer::readByte(&this->ReadBuffer); - *in_stack_00000010 = (uint)bVar2; - if (bVar2 == 5) { - // try { // try from 080e88a1 to 080e88a5 has its CatchHandler @ 080e8970 - TReadStream::readString(&(this->ReadBuffer).super_TReadStream,in_stack_00000014,100); - } - iVar3 = 0; - } - else { - if (iVar3 == 1) { - // try { // try from 080e8836 to 080e883a has its CatchHandler @ 080e89a6 - bVar2 = TReadBuffer::readByte(&this->ReadBuffer); - uVar4 = (uint)bVar2; - bVar1 = false; - if ((uVar4 != 0) && (uVar4 < 4)) { - bVar1 = true; - } - if (bVar1) { - return uVar4; - } - error(&DAT_0810f820,uVar4); - } - else { - error("TQueryManagerConnection::addPaymentNew: Anfrage fehlgeschlagen.\n"); - } - iVar3 = -1; - } - return iVar3; -} - - - -// DWARF original prototype: int cancelPaymentNew(TQueryManagerConnection * this, ulong PurchaseNr, -// ulong ReferenceNr, char * PaymentKey, bool * IllegalUse, bool * Present, char * EMailAddress) - -int __thiscall TQueryManagerConnection::cancelPaymentNew(TQueryManagerConnection *this) - -{ - TWriteBuffer *this_00; - TReadBuffer *this_01; - uchar uVar1; - int iVar2; - ulong in_stack_00000008; - ulong in_stack_0000000c; - char *in_stack_00000010; - undefined4 in_stack_00000014; - undefined4 in_stack_00000018; - char *in_stack_0000001c; - char *Text; - - this->QueryOk = true; - this_00 = &this->WriteBuffer; - (this->WriteBuffer).Position = 0; - // try { // try from 080e8a05 to 080e8a19 has its CatchHandler @ 080e8ae4 - TWriteBuffer::writeWord(this_00,0); - TWriteBuffer::writeByte(this_00,0xd7); - // try { // try from 080e8a24 to 080e8a28 has its CatchHandler @ 080e8b20 - TWriteBuffer::writeQuad(this_00,in_stack_00000008); - // try { // try from 080e8a33 to 080e8a37 has its CatchHandler @ 080e8b52 - TWriteBuffer::writeQuad(this_00,in_stack_0000000c); - // try { // try from 080e8a42 to 080e8a46 has its CatchHandler @ 080e8b82 - TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); - iVar2 = executeQuery(this,0x168,true); - if (iVar2 == 0) { - this_01 = &this->ReadBuffer; - // try { // try from 080e8aa6 to 080e8aaa has its CatchHandler @ 080e8bb2 - uVar1 = TReadBuffer::readByte(this_01); - *(bool *)in_stack_00000014 = uVar1 != '\0'; - // try { // try from 080e8ab9 to 080e8abd has its CatchHandler @ 080e8be4 - uVar1 = TReadBuffer::readByte(this_01); - *(bool *)in_stack_00000018 = uVar1 != '\0'; - // try { // try from 080e8adb to 080e8adf has its CatchHandler @ 080e8c16 - TReadStream::readString(&this_01->super_TReadStream,in_stack_0000001c,0x32); - iVar2 = 0; - } - else { - if (iVar2 == 1) { - // try { // try from 080e8a85 to 080e8a89 has its CatchHandler @ 080e8c4c - uVar1 = TReadBuffer::readByte(&this->ReadBuffer); - if (uVar1 == '\x01') { - return 1; - } - Text = &DAT_0810f8e0; - } - else { - Text = "TQueryManagerConnection::cancelPaymentNew: Anfrage fehlgeschlagen.\n"; - } - error(Text); - iVar2 = -1; - } - return iVar2; -} - - - -// DWARF original prototype: void TQueryManagerConnectionPool(TQueryManagerConnectionPool * this, -// int Connections) - -void __thiscall -TQueryManagerConnectionPool::TQueryManagerConnectionPool - (TQueryManagerConnectionPool *this,int Connections) - -{ - Semaphore::Semaphore(&this->FreeQueryManagerConnections,Connections); - // try { // try from 080e8cb5 to 080e8cb9 has its CatchHandler @ 080e8d00 - Semaphore::Semaphore(&this->QueryManagerConnectionMutex,1); - if (Connections < 1) { - // try { // try from 080e8ce6 to 080e8cea has its CatchHandler @ 080e8cf2 - error(&DAT_0810f940,Connections); - Connections = 1; - } - this->NumberOfConnections = Connections; - this->QueryManagerConnection = (TQueryManagerConnection *)0x0; - this->QueryManagerConnectionFree = (bool *)0x0; - return; -} - - - -// DWARF original prototype: void TQueryManagerConnectionPool(TQueryManagerConnectionPool * this, -// int Connections) - -void __thiscall -TQueryManagerConnectionPool::TQueryManagerConnectionPool - (TQueryManagerConnectionPool *this,int Connections) - -{ - Semaphore::Semaphore(&this->FreeQueryManagerConnections,Connections); - // try { // try from 080e8d55 to 080e8d59 has its CatchHandler @ 080e8da0 - Semaphore::Semaphore(&this->QueryManagerConnectionMutex,1); - if (Connections < 1) { - // try { // try from 080e8d86 to 080e8d8a has its CatchHandler @ 080e8d92 - error(&DAT_0810f940,Connections); - Connections = 1; - } - this->NumberOfConnections = Connections; - this->QueryManagerConnection = (TQueryManagerConnection *)0x0; - this->QueryManagerConnectionFree = (bool *)0x0; - return; -} - - - -// DWARF original prototype: void init(TQueryManagerConnectionPool * this) - -int __thiscall -TQueryManagerConnectionPool::init(TQueryManagerConnectionPool *this,EVP_PKEY_CTX *ctx) - -{ - int *piVar1; - bool *pbVar2; - undefined4 *puVar3; - int iVar4; - int i; - int iVar5; - TQueryManagerConnection *this_00; - - iVar5 = this->NumberOfConnections; - // try { // try from 080e8dda to 080e8dde has its CatchHandler @ 080e8f00 - piVar1 = (int *)operator_new__(iVar5 * 0x30 + 4); - *piVar1 = iVar5; - this_00 = (TQueryManagerConnection *)(piVar1 + 1); - while (iVar5 = iVar5 + -1, iVar5 != -1) { - // try { // try from 080e8dfc to 080e8e00 has its CatchHandler @ 080e8ea4 - TQueryManagerConnection::TQueryManagerConnection(this_00,0x4000); - this_00 = this_00 + 1; - } - this->QueryManagerConnection = (TQueryManagerConnection *)(piVar1 + 1); - // try { // try from 080e8e1e to 080e8ea3 has its CatchHandler @ 080e8f00 - pbVar2 = (bool *)operator_new__(this->NumberOfConnections); - iVar5 = 0; - this->QueryManagerConnectionFree = pbVar2; - if (0 < this->NumberOfConnections) { - iVar4 = 0; - do { - if (*(int *)((int)&this->QueryManagerConnection->Socket + iVar4) < 0) { - error("TQueryManagerConnectionPool::init: Kann nicht zum Query-Manager verbinden.\n" - ); - puVar3 = (undefined4 *)__cxa_allocate_exception(4); - *puVar3 = "cannot connect to query manager"; - // WARNING: Subroutine does not return - __cxa_throw(puVar3,char_const*::typeinfo,0); - } - iVar4 = iVar4 + 0x30; - pbVar2 = this->QueryManagerConnectionFree; - pbVar2[iVar5] = true; - iVar5 = iVar5 + 1; - } while (iVar5 < this->NumberOfConnections); - } - return (int)pbVar2; -} - - - -// DWARF original prototype: void exit(TQueryManagerConnectionPool * this) - -void __thiscall TQueryManagerConnectionPool::exit(TQueryManagerConnectionPool *this,int __status) - -{ - TQueryManagerConnection *pTVar1; - int i; - int iVar2; - TQueryManagerConnection *this_00; - int in_stack_ffffffe8; - - iVar2 = 0; - if (0 < this->NumberOfConnections) { - do { - iVar2 = iVar2 + 1; - Semaphore::down(&this->FreeQueryManagerConnections); - } while (iVar2 < this->NumberOfConnections); - } - pTVar1 = this->QueryManagerConnection; - if (pTVar1 != (TQueryManagerConnection *)0x0) { - this_00 = pTVar1 + *(int *)&pTVar1[-1].QueryOk; - while (pTVar1 != this_00) { - this_00 = this_00 + -1; - TQueryManagerConnection::~TQueryManagerConnection(this_00,in_stack_ffffffe8); - pTVar1 = this->QueryManagerConnection; - } - operator_delete__(&pTVar1[-1].QueryOk); - } - if (this->QueryManagerConnectionFree == (bool *)0x0) { - return; - } - operator_delete__(this->QueryManagerConnectionFree); - return; -} - - - -// DWARF original prototype: TQueryManagerConnection * getConnection(TQueryManagerConnectionPool * -// this) - -TQueryManagerConnection * __thiscall -TQueryManagerConnectionPool::getConnection(TQueryManagerConnectionPool *this) - -{ - Semaphore *this_00; - int i; - int iVar1; - int iVar2; - - this_00 = &this->QueryManagerConnectionMutex; - Semaphore::down(&this->FreeQueryManagerConnections); - Semaphore::down(this_00); - iVar1 = 0; - if (0 < this->NumberOfConnections) { - iVar2 = 0; - do { - if (this->QueryManagerConnectionFree[iVar1] != false) { - this->QueryManagerConnectionFree[iVar1] = false; - Semaphore::up(this_00); - return (TQueryManagerConnection *) - ((int)&this->QueryManagerConnection->BufferSize + iVar2); - } - iVar1 = iVar1 + 1; - iVar2 = iVar2 + 0x30; - } while (iVar1 < this->NumberOfConnections); - } - error("TQueryManagerConnectionPool::getConnection: Keine freie Verbindung gefunden.\n"); - Semaphore::up(this_00); - return (TQueryManagerConnection *)0x0; -} - - - -// DWARF original prototype: void releaseConnection(TQueryManagerConnectionPool * this, -// TQueryManagerConnection * Connection) - -void __thiscall -TQueryManagerConnectionPool::releaseConnection - (TQueryManagerConnectionPool *this,TQueryManagerConnection *Connection) - -{ - TQueryManagerConnection *pTVar1; - int i; - int iVar2; - - iVar2 = 0; - if (0 < this->NumberOfConnections) { - pTVar1 = this->QueryManagerConnection; - do { - if (pTVar1 == Connection) { - this->QueryManagerConnectionFree[iVar2] = true; - Semaphore::up(&this->FreeQueryManagerConnections); - return; - } - iVar2 = iVar2 + 1; - pTVar1 = pTVar1 + 1; - } while (iVar2 < this->NumberOfConnections); - } - error("TQueryManagerConnectionPool::releaseConnection: Verbindung nicht gefunden.\n"); - return; -} - - - -// DWARF original prototype: void TQueryManagerPoolConnection(TQueryManagerPoolConnection * this, -// TQueryManagerConnectionPool * Pool) - -void __thiscall -TQueryManagerPoolConnection::TQueryManagerPoolConnection - (TQueryManagerPoolConnection *this,TQueryManagerConnectionPool *Pool) - -{ - TQueryManagerConnection *pTVar1; - int i; - int iVar2; - - if (Pool == (TQueryManagerConnectionPool *)0x0) { - error("TQueryManagerPoolConnection::TQueryManagerPoolConnection: Pool ist NULL.\n"); - this->QueryManagerConnection = (TQueryManagerConnection *)0x0; - } - else { - this->QueryManagerConnectionPool = Pool; - iVar2 = 0; - Semaphore::down(&Pool->FreeQueryManagerConnections); - Semaphore::down(&Pool->QueryManagerConnectionMutex); - if (0 < Pool->NumberOfConnections) { - do { - if (Pool->QueryManagerConnectionFree[iVar2] != false) { - Pool->QueryManagerConnectionFree[iVar2] = false; - Semaphore::up(&Pool->QueryManagerConnectionMutex); - pTVar1 = Pool->QueryManagerConnection + iVar2; - goto LAB_080e90b4; - } - iVar2 = iVar2 + 1; - } while (iVar2 < Pool->NumberOfConnections); - } - error("TQueryManagerConnectionPool::getConnection: Keine freie Verbindung gefunden.\n"); - Semaphore::up(&Pool->QueryManagerConnectionMutex); - pTVar1 = (TQueryManagerConnection *)0x0; -LAB_080e90b4: - this->QueryManagerConnection = pTVar1; - } - return; -} - - - -// DWARF original prototype: void TQueryManagerPoolConnection(TQueryManagerPoolConnection * this, -// TQueryManagerConnectionPool * Pool) - -void __thiscall -TQueryManagerPoolConnection::TQueryManagerPoolConnection - (TQueryManagerPoolConnection *this,TQueryManagerConnectionPool *Pool) - -{ - TQueryManagerConnection *pTVar1; - int i; - int iVar2; - - if (Pool == (TQueryManagerConnectionPool *)0x0) { - error("TQueryManagerPoolConnection::TQueryManagerPoolConnection: Pool ist NULL.\n"); - this->QueryManagerConnection = (TQueryManagerConnection *)0x0; - } - else { - this->QueryManagerConnectionPool = Pool; - iVar2 = 0; - Semaphore::down(&Pool->FreeQueryManagerConnections); - Semaphore::down(&Pool->QueryManagerConnectionMutex); - if (0 < Pool->NumberOfConnections) { - do { - if (Pool->QueryManagerConnectionFree[iVar2] != false) { - Pool->QueryManagerConnectionFree[iVar2] = false; - Semaphore::up(&Pool->QueryManagerConnectionMutex); - pTVar1 = Pool->QueryManagerConnection + iVar2; - goto LAB_080e9154; - } - iVar2 = iVar2 + 1; - } while (iVar2 < Pool->NumberOfConnections); - } - error("TQueryManagerConnectionPool::getConnection: Keine freie Verbindung gefunden.\n"); - Semaphore::up(&Pool->QueryManagerConnectionMutex); - pTVar1 = (TQueryManagerConnection *)0x0; -LAB_080e9154: - this->QueryManagerConnection = pTVar1; - } - return; -} - - - -// DWARF original prototype: void ~TQueryManagerPoolConnection(TQueryManagerPoolConnection * this, -// int __in_chrg) - -void __thiscall -TQueryManagerPoolConnection::~TQueryManagerPoolConnection - (TQueryManagerPoolConnection *this,int __in_chrg) - -{ - TQueryManagerConnectionPool *pTVar1; - TQueryManagerConnection *pTVar2; - int i; - int iVar3; - - if (this->QueryManagerConnection == (TQueryManagerConnection *)0x0) { - return; - } - pTVar1 = this->QueryManagerConnectionPool; - iVar3 = 0; - if (0 < pTVar1->NumberOfConnections) { - pTVar2 = pTVar1->QueryManagerConnection; - do { - if (pTVar2 == this->QueryManagerConnection) { - pTVar1->QueryManagerConnectionFree[iVar3] = true; - Semaphore::up(&pTVar1->FreeQueryManagerConnections); - return; - } - iVar3 = iVar3 + 1; - pTVar2 = pTVar2 + 1; - } while (iVar3 < pTVar1->NumberOfConnections); - } - error("TQueryManagerConnectionPool::releaseConnection: Verbindung nicht gefunden.\n"); - return; -} - - - -// DWARF original prototype: void ~TQueryManagerPoolConnection(TQueryManagerPoolConnection * this, -// int __in_chrg) - -void __thiscall -TQueryManagerPoolConnection::~TQueryManagerPoolConnection - (TQueryManagerPoolConnection *this,int __in_chrg) - -{ - TQueryManagerConnectionPool *pTVar1; - TQueryManagerConnection *pTVar2; - int i; - int iVar3; - - if (this->QueryManagerConnection == (TQueryManagerConnection *)0x0) { - return; - } - pTVar1 = this->QueryManagerConnectionPool; - iVar3 = 0; - if (0 < pTVar1->NumberOfConnections) { - pTVar2 = pTVar1->QueryManagerConnection; - do { - if (pTVar2 == this->QueryManagerConnection) { - pTVar1->QueryManagerConnectionFree[iVar3] = true; - Semaphore::up(&pTVar1->FreeQueryManagerConnections); - return; - } - iVar3 = iVar3 + 1; - pTVar2 = pTVar2 + 1; - } while (iVar3 < pTVar1->NumberOfConnections); - } - error("TQueryManagerConnectionPool::releaseConnection: Verbindung nicht gefunden.\n"); - return; -} - // CRYPTO.CC //============================================================================== diff --git a/src/communication.cc b/src/communication.cc index bb71327..9f0e6e5 100644 --- a/src/communication.cc +++ b/src/communication.cc @@ -427,7 +427,7 @@ bool SendData(TConnection *Connection, const uint8 *Data, int Size){ // Waiting List // ============================================================================= -bool GetWaitinglistEntry(const char *Name, int *NextTry, bool *FreeAccount, bool *Newbie){ +bool GetWaitinglistEntry(const char *Name, uint32 *NextTry, bool *FreeAccount, bool *Newbie){ bool Result = false; CommunicationThreadMutex.down(); TWaitinglistEntry *Entry = WaitinglistHead; diff --git a/src/houses.cc b/src/houses.cc index b47138e..4c06419 100644 --- a/src/houses.cc +++ b/src/houses.cc @@ -1670,16 +1670,16 @@ void LoadHouses(void){ Houses += 1; } - uint16 *HouseIDs = (uint16*)alloca(Houses * sizeof(uint16)); - char **Names = (char**)alloca(Houses * sizeof(char*)); - int *Rents = (int*)alloca(Houses * sizeof(int)); - char **Descriptions = (char**)alloca(Houses * sizeof(char*)); - int *Sizes = (int*)alloca(Houses * sizeof(int)); - int *PositionsX = (int*)alloca(Houses * sizeof(int)); - int *PositionsY = (int*)alloca(Houses * sizeof(int)); - int *PositionsZ = (int*)alloca(Houses * sizeof(int)); - char (*Towns)[30] = (char(*)[30])alloca(Houses * 30); - bool *Guildhouses = (bool*)alloca(Houses * sizeof(bool)); + uint16 *HouseIDs = (uint16*)alloca(Houses * sizeof(uint16)); + const char **Names = (const char**)alloca(Houses * sizeof(const char*)); + int *Rents = (int*)alloca(Houses * sizeof(int)); + const char **Descriptions = (const char**)alloca(Houses * sizeof(const char*)); + int *Sizes = (int*)alloca(Houses * sizeof(int)); + int *PositionsX = (int*)alloca(Houses * sizeof(int)); + int *PositionsY = (int*)alloca(Houses * sizeof(int)); + int *PositionsZ = (int*)alloca(Houses * sizeof(int)); + char (*Towns)[30] = (char(*)[30])alloca(Houses * 30); + bool *Guildhouses = (bool*)alloca(Houses * sizeof(bool)); for(int HouseNr = 0; HouseNr < Houses; HouseNr += 1){ THouse *H = House.at(HouseNr); HouseIDs[HouseNr] = H->ID; diff --git a/src/map.hh b/src/map.hh index 81edef0..571def0 100644 --- a/src/map.hh +++ b/src/map.hh @@ -120,9 +120,9 @@ uint32 CronInfo(Object Obj, bool Delete); uint32 CronStop(Object Obj); // NOTE(fusion): Map management functions. Most for internal use. -void SwapObject(TWriteBinaryFile *File, Object Obj, uint32 FileNumber); +void SwapObject(TWriteBinaryFile *File, Object Obj, uintptr FileNumber); void SwapSector(void); -void UnswapSector(uint32 FileNumber); +void UnswapSector(uintptr FileNumber); void DeleteSwappedSectors(void); void LoadObjects(TReadScriptFile *Script, TWriteStream *Stream, bool Skip); void LoadObjects(TReadStream *Stream, Object Con); diff --git a/src/query.cc b/src/query.cc index a31b9b0..5da269d 100644 --- a/src/query.cc +++ b/src/query.cc @@ -20,6 +20,8 @@ void SetQueryManagerLoginData(int Type, const char *Data){ } } +// TQueryManagerConnection +// ============================================================================= // TODO(fusion): An initializer list executes in the same order fields are // declared. This initialization should work as long as `BufferSize` is the // first field declared in `TQueryManagerConnection`, which it is. @@ -373,6 +375,8 @@ int TQueryManagerConnection::executeQuery(int Timeout, bool AutoReconnect){ return QUERY_FAILED; } + this->ReadBuffer.Size = ResponseSize; + this->ReadBuffer.Position = 0; int Status = this->getByte(); if(Status == QUERY_FAILED){ error("TQueryManagerConnection::executeQuery: Anfrage fehlgeschlagen.\n"); @@ -381,3 +385,1351 @@ int TQueryManagerConnection::executeQuery(int Timeout, bool AutoReconnect){ return Status; } } + +int TQueryManagerConnection::checkAccountPassword(uint32 AccountID, + const char *Password, const char *IPAddress){ + this->prepareQuery(10); + this->sendQuad(AccountID); + this->sendString(Password); + this->sendString(IPAddress); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode >= 1 && ErrorCode <= 4){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::checkAccountPassword: Ungültiger Fehlercode %d.\n", ErrorCode); + } + } + return Result; +} + +int TQueryManagerConnection::loginAdmin(uint32 AccountID, bool PrivateWorld, + int *NumberOfCharacters, char (*Characters)[30], char (*Worlds)[30], + uint8 (*IPAddresses)[4], uint16 *Ports, uint16 *PremiumDaysLeft){ + this->prepareQuery(12); + this->sendQuad(AccountID); + this->sendFlag(PrivateWorld); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *NumberOfCharacters = this->getByte(); + for(int i = 0; i < *NumberOfCharacters; i += 1){ + this->getString(Characters[i], 30); + this->getString(Worlds[i], 30); + this->getBytes(IPAddresses[i], 4); + Ports[i] = this->getWord(); + } + *PremiumDaysLeft = this->getWord(); + }else if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode == 1){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::loginAdmin: Ungültiger Fehlercode %d.\n", ErrorCode); + } + } + return Result; +} + +int TQueryManagerConnection::loadWorldConfig(int *WorldType, int *RebootTime, + int *IPAddress, int *Port, int *MaxPlayers, int *PremiumPlayerBuffer, + int *MaxNewbies, int *PremiumNewbieBuffer){ + this->prepareQuery(53); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *WorldType = this->getByte(); + *RebootTime = (int)this->getByte() * 60; + IPAddress[0] = this->getByte(); + IPAddress[1] = this->getByte(); + IPAddress[2] = this->getByte(); + IPAddress[3] = this->getByte(); + *Port = this->getWord(); + *MaxPlayers = this->getWord(); + *PremiumPlayerBuffer = this->getWord(); + *MaxNewbies = this->getWord(); + *PremiumNewbieBuffer = this->getWord(); + } + return Result; +} + +static int GetRightByName(const char *RightName){ + int Result = -1; + if(strcmp(RightName, "PREMIUM_ACCOUNT") == 0){ + Result = PREMIUM_ACCOUNT; + }else if(strcmp(RightName, "NOTATION") == 0){ + Result = NOTATION; + }else if(strcmp(RightName, "NAMELOCK") == 0){ + Result = NAMELOCK; + }else if(strcmp(RightName, "STATEMENT_REPORT") == 0){ + Result = STATEMENT_REPORT; + }else if(strcmp(RightName, "BANISHMENT") == 0){ + Result = BANISHMENT; + }else if(strcmp(RightName, "FINAL_WARNING") == 0){ + Result = FINAL_WARNING; + }else if(strcmp(RightName, "IP_BANISHMENT") == 0){ + Result = IP_BANISHMENT; + }else if(strcmp(RightName, "KICK") == 0){ + Result = KICK; + }else if(strcmp(RightName, "HOME_TELEPORT") == 0){ + Result = HOME_TELEPORT; + }else if(strcmp(RightName, "GAMEMASTER_BROADCAST") == 0){ + Result = GAMEMASTER_BROADCAST; + }else if(strcmp(RightName, "ANONYMOUS_BROADCAST") == 0){ + Result = ANONYMOUS_BROADCAST; + }else if(strcmp(RightName, "NO_BANISHMENT") == 0){ + Result = NO_BANISHMENT; + }else if(strcmp(RightName, "ALLOW_MULTICLIENT") == 0){ + Result = ALLOW_MULTICLIENT; + }else if(strcmp(RightName, "LOG_COMMUNICATION") == 0){ + Result = LOG_COMMUNICATION; + }else if(strcmp(RightName, "READ_GAMEMASTER_CHANNEL") == 0){ + Result = READ_GAMEMASTER_CHANNEL; + }else if(strcmp(RightName, "READ_TUTOR_CHANNEL") == 0){ + Result = READ_TUTOR_CHANNEL; + }else if(strcmp(RightName, "HIGHLIGHT_HELP_CHANNEL") == 0){ + Result = HIGHLIGHT_HELP_CHANNEL; + }else if(strcmp(RightName, "SEND_BUGREPORTS") == 0){ + Result = SEND_BUGREPORTS; + }else if(strcmp(RightName, "NAME_INSULTING") == 0){ + Result = NAME_INSULTING; + }else if(strcmp(RightName, "NAME_SENTENCE") == 0){ + Result = NAME_SENTENCE; + }else if(strcmp(RightName, "NAME_NONSENSICAL_LETTERS") == 0){ + Result = NAME_NONSENSICAL_LETTERS; + }else if(strcmp(RightName, "NAME_BADLY_FORMATTED") == 0){ + Result = NAME_BADLY_FORMATTED; + }else if(strcmp(RightName, "NAME_NO_PERSON") == 0){ + Result = NAME_NO_PERSON; + }else if(strcmp(RightName, "NAME_CELEBRITY") == 0){ + Result = NAME_CELEBRITY; + }else if(strcmp(RightName, "NAME_COUNTRY") == 0){ + Result = NAME_COUNTRY; + }else if(strcmp(RightName, "NAME_FAKE_IDENTITY") == 0){ + Result = NAME_FAKE_IDENTITY; + }else if(strcmp(RightName, "NAME_FAKE_POSITION") == 0){ + Result = NAME_FAKE_POSITION; + }else if(strcmp(RightName, "STATEMENT_INSULTING") == 0){ + Result = STATEMENT_INSULTING; + }else if(strcmp(RightName, "STATEMENT_SPAMMING") == 0){ + Result = STATEMENT_SPAMMING; + }else if(strcmp(RightName, "STATEMENT_ADVERT_OFFTOPIC") == 0){ + Result = STATEMENT_ADVERT_OFFTOPIC; + }else if(strcmp(RightName, "STATEMENT_ADVERT_MONEY") == 0){ + Result = STATEMENT_ADVERT_MONEY; + }else if(strcmp(RightName, "STATEMENT_NON_ENGLISH") == 0){ + Result = STATEMENT_NON_ENGLISH; + }else if(strcmp(RightName, "STATEMENT_CHANNEL_OFFTOPIC") == 0){ + Result = STATEMENT_CHANNEL_OFFTOPIC; + }else if(strcmp(RightName, "STATEMENT_VIOLATION_INCITING") == 0){ + Result = STATEMENT_VIOLATION_INCITING; + }else if(strcmp(RightName, "CHEATING_BUG_ABUSE") == 0){ + Result = CHEATING_BUG_ABUSE; + }else if(strcmp(RightName, "CHEATING_GAME_WEAKNESS") == 0){ + Result = CHEATING_GAME_WEAKNESS; + }else if(strcmp(RightName, "CHEATING_MACRO_USE") == 0){ + Result = CHEATING_MACRO_USE; + }else if(strcmp(RightName, "CHEATING_MODIFIED_CLIENT") == 0){ + Result = CHEATING_MODIFIED_CLIENT; + }else if(strcmp(RightName, "CHEATING_HACKING") == 0){ + Result = CHEATING_HACKING; + }else if(strcmp(RightName, "CHEATING_MULTI_CLIENT") == 0){ + Result = CHEATING_MULTI_CLIENT; + }else if(strcmp(RightName, "CHEATING_ACCOUNT_TRADING") == 0){ + Result = CHEATING_ACCOUNT_TRADING; + }else if(strcmp(RightName, "CHEATING_ACCOUNT_SHARING") == 0){ + Result = CHEATING_ACCOUNT_SHARING; + }else if(strcmp(RightName, "GAMEMASTER_THREATENING") == 0){ + Result = GAMEMASTER_THREATENING; + }else if(strcmp(RightName, "GAMEMASTER_PRETENDING") == 0){ + Result = GAMEMASTER_PRETENDING; + }else if(strcmp(RightName, "GAMEMASTER_INFLUENCE") == 0){ + Result = GAMEMASTER_INFLUENCE; + }else if(strcmp(RightName, "GAMEMASTER_FALSE_REPORTS") == 0){ + Result = GAMEMASTER_FALSE_REPORTS; + }else if(strcmp(RightName, "KILLING_EXCESSIVE_UNJUSTIFIED") == 0){ + Result = KILLING_EXCESSIVE_UNJUSTIFIED; + }else if(strcmp(RightName, "DESTRUCTIVE_BEHAVIOUR") == 0){ + Result = DESTRUCTIVE_BEHAVIOUR; + }else if(strcmp(RightName, "SPOILING_AUCTION") == 0){ + Result = SPOILING_AUCTION; + }else if(strcmp(RightName, "INVALID_PAYMENT") == 0){ + Result = INVALID_PAYMENT; + }else if(strcmp(RightName, "TELEPORT_TO_CHARACTER") == 0){ + Result = TELEPORT_TO_CHARACTER; + }else if(strcmp(RightName, "TELEPORT_TO_MARK") == 0){ + Result = TELEPORT_TO_MARK; + }else if(strcmp(RightName, "TELEPORT_VERTICAL") == 0){ + Result = TELEPORT_VERTICAL; + }else if(strcmp(RightName, "TELEPORT_TO_COORDINATE") == 0){ + Result = TELEPORT_TO_COORDINATE; + }else if(strcmp(RightName, "LEVITATE") == 0){ + Result = LEVITATE; + }else if(strcmp(RightName, "SPECIAL_MOVEUSE") == 0){ + Result = SPECIAL_MOVEUSE; + }else if(strcmp(RightName, "MODIFY_GOSTRENGTH") == 0){ + Result = MODIFY_GOSTRENGTH; + }else if(strcmp(RightName, "SHOW_COORDINATE") == 0){ + Result = SHOW_COORDINATE; + }else if(strcmp(RightName, "RETRIEVE") == 0){ + Result = RETRIEVE; + }else if(strcmp(RightName, "ENTER_HOUSES") == 0){ + Result = ENTER_HOUSES; + }else if(strcmp(RightName, "OPEN_NAMEDOORS") == 0){ + // TODO(fusion): The actual name was "OPEN_NAMEDDOORS" but could be a typo? + // Either way, it doesn't make that much of a difference since there is no + // actual query manager outside the ones we might build ourselves. + Result = OPEN_NAMEDOORS; + }else if(strcmp(RightName, "INVULNERABLE") == 0){ + Result = INVULNERABLE; + }else if(strcmp(RightName, "UNLIMITED_MANA") == 0){ + Result = UNLIMITED_MANA; + }else if(strcmp(RightName, "KEEP_INVENTORY") == 0){ + Result = KEEP_INVENTORY; + }else if(strcmp(RightName, "ALL_SPELLS") == 0){ + Result = ALL_SPELLS; + }else if(strcmp(RightName, "UNLIMITED_CAPACITY") == 0){ + Result = UNLIMITED_CAPACITY; + }else if(strcmp(RightName, "ZERO_CAPACITY") == 0){ + Result = ZERO_CAPACITY; + }else if(strcmp(RightName, "ATTACK_EVERYWHERE") == 0){ + Result = ATTACK_EVERYWHERE; + }else if(strcmp(RightName, "NO_ATTACK") == 0){ + Result = NO_ATTACK; + }else if(strcmp(RightName, "NO_RUNES") == 0){ + Result = NO_RUNES; + }else if(strcmp(RightName, "NO_LOGOUT_BLOCK") == 0){ + Result = NO_LOGOUT_BLOCK; + }else if(strcmp(RightName, "GAMEMASTER_OUTFIT") == 0){ + Result = GAMEMASTER_OUTFIT; + }else if(strcmp(RightName, "ILLUMINATE") == 0){ + Result = ILLUMINATE; + }else if(strcmp(RightName, "CHANGE_PROFESSION") == 0){ + Result = CHANGE_PROFESSION; + }else if(strcmp(RightName, "IGNORED_BY_MONSTERS") == 0){ + Result = IGNORED_BY_MONSTERS; + }else if(strcmp(RightName, "SHOW_KEYHOLE_NUMBERS") == 0){ + Result = SHOW_KEYHOLE_NUMBERS; + }else if(strcmp(RightName, "CREATE_OBJECTS") == 0){ + Result = CREATE_OBJECTS; + }else if(strcmp(RightName, "CREATE_MONEY") == 0){ + Result = CREATE_MONEY; + }else if(strcmp(RightName, "CREATE_MONSTERS") == 0){ + Result = CREATE_MONSTERS; + }else if(strcmp(RightName, "CHANGE_SKILLS") == 0){ + Result = CHANGE_SKILLS; + }else if(strcmp(RightName, "CLEANUP_FIELDS") == 0){ + Result = CLEANUP_FIELDS; + }else if(strcmp(RightName, "NO_STATISTICS") == 0){ + Result = NO_STATISTICS; + } + return Result; +} + +// NOTE(fusion): These seem to be related to forums and an admin panel. +static bool IsAdministrativeRight(const char *RightName){ + return strcmp(RightName, "CLEAR_CHARACTER_INFO") == 0 + || strcmp(RightName, "CLEAR_GUILDS") == 0 + || strcmp(RightName, "DELETE_GUILDS") == 0 + || strcmp(RightName, "BOARD_REPORT") == 0 + || strcmp(RightName, "BOARD_MODERATION") == 0 + || strcmp(RightName, "BOARD_ANONYMOUS_EDIT") == 0 + || strcmp(RightName, "BOARD_PRECONFIRMED") == 0 + || strcmp(RightName, "KEEP_ACCOUNT") == 0 + || strcmp(RightName, "INVITED") == 0 + || strcmp(RightName, "CIPWATCH_ADMIN") == 0 + || strcmp(RightName, "CIPWATCH_USER") == 0 + || strcmp(RightName, "CREATECHAR_GAMEMASTER") == 0 + || strcmp(RightName, "CREATECHAR_GOD") == 0 + || strcmp(RightName, "CREATECHAR_TEST") == 0 + || strcmp(RightName, "VIEW_ACCOUNT") == 0 + || strcmp(RightName, "VIEW_GAMEMASTER_RECORD") == 0 + || strcmp(RightName, "VIEW_CRIMINAL_RECORD") == 0 + || strcmp(RightName, "VIEW_LOG_FILES") == 0 + || strcmp(RightName, "MODIFY_BANISHMENT") == 0 + || strcmp(RightName, "APPOINT_CIP") == 0 + || strcmp(RightName, "APPOINT_SGM") == 0 + || strcmp(RightName, "APPOINT_JGM") == 0 + || strcmp(RightName, "APPOINT_SENATOR") == 0 + || strcmp(RightName, "SET_ACCOUNT_RIGHTS") == 0 + || strcmp(RightName, "SET_CHARACTER_RIGHTS") == 0 + || strcmp(RightName, "SET_ACCOUNTGROUP_RIGHTS") == 0 + || strcmp(RightName, "SET_CHARACTERGROUP_RIGHTS") == 0 + || strcmp(RightName, "KEEP_CHARACTER") == 0 + || strcmp(RightName, "EXTRA_CHARACTER") == 0; +} + +// NOTE(fusion): `PlayerName` is an input and output parameter. It will contain +// the correct player name with upper and lower case letters if the operation is +// successful. +int TQueryManagerConnection::loginGame(uint32 AccountID, char *PlayerName, + const char *Password, const char *IPAddress, bool PrivateWorld, + bool PremiumAccountRequired, bool GamemasterRequired, uint32 *CharacterID, + int *Sex, char *Guild, char *Rank, char *Title, int *NumberOfBuddies, + uint32 *BuddyIDs, char (*BuddyNames)[30], uint8 *Rights, + bool *PremiumAccountActivated){ + this->prepareQuery(20); + this->sendQuad(AccountID); + this->sendString(PlayerName); + this->sendString(Password); + this->sendString(IPAddress); + this->sendFlag(PrivateWorld); + this->sendFlag(PremiumAccountRequired); + this->sendFlag(GamemasterRequired); + int Status = this->executeQuery(120, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *CharacterID = this->getQuad(); + this->getString(PlayerName, 30); + *Sex = this->getByte(); + this->getString(Guild, 30); + this->getString(Rank, 30); + this->getString(Title, 30); + *NumberOfBuddies = this->getByte(); + + int SkipBuddies = 0; + if(*NumberOfBuddies > 100){ // MAX_BUDDIES + error("TQueryManagerConnection::loginGame: zu viele Buddys (%d) für %s.\n", + *NumberOfBuddies, PlayerName); + SkipBuddies = *NumberOfBuddies - 100; + *NumberOfBuddies = 100; + } + + for(int i = 0; i < *NumberOfBuddies; i += 1){ + BuddyIDs[i] = this->getQuad(); + this->getString(BuddyNames[i], 30); + } + + if(SkipBuddies > 0){ + char BuddyName[30]; + for(int i = 0; i < SkipBuddies; i += 1){ + this->getQuad(); + this->getString(BuddyName, 30); + } + } + + int NumberOfRights = this->getByte(); + for(int i = 0; i < NumberOfRights; i += 1){ + char RightName[30]; + this->getString(RightName, 30); + int Right = GetRightByName(RightName); + if(Right != -1){ + SetBit(Rights, Right); + }else if(!IsAdministrativeRight(RightName)){ + error("TQueryManagerConnection::loginGame: Unbekanntes Recht %s.\n", RightName); + } + } + + *PremiumAccountActivated = this->getFlag(); + }else if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode >= 1 && ErrorCode <= 15){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::loginGame: Ungültiger Fehlercode %d.\n", ErrorCode); + } + } + return Result; +} + +int TQueryManagerConnection::logoutGame(uint32 CharacterID, int Level, const char *Profession, + const char *Residence, time_t LastLoginTime, int TutorActivities){ + this->prepareQuery(21); + this->sendQuad(CharacterID); + this->sendWord(Level); + this->sendString(Profession); + this->sendString(Residence); + this->sendQuad((uint32)LastLoginTime); + this->sendWord((uint16)TutorActivities); + int Status = this->executeQuery(120, true); + return (Status == QUERY_OK ? 0 : -1); +} + +int TQueryManagerConnection::setNotation(uint32 GamemasterID, const char *PlayerName, + const char *IPAddress, const char *Reason, const char *Comment, uint32 *BanishmentID){ + this->prepareQuery(26); + this->sendQuad(GamemasterID); + this->sendString(PlayerName); + this->sendString(IPAddress); + this->sendString(Reason); + this->sendString(Comment); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *BanishmentID = this->getQuad(); + }else if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode >= 1 && ErrorCode <= 2){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::setNotation: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else{ + error("TQueryManagerConnection::setNotation: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::setNamelock(uint32 GamemasterID, const char *PlayerName, + const char *IPAddress, const char *Reason, const char *Comment){ + this->prepareQuery(23); + this->sendQuad(GamemasterID); + this->sendString(PlayerName); + this->sendString(IPAddress); + this->sendString(Reason); + this->sendString(Comment); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode >= 1 && ErrorCode <= 4){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::setNamelock: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else if(Status != QUERY_OK){ + error("TQueryManagerConnection::setNamelock: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::banishAccount(uint32 GamemasterID, const char *PlayerName, + const char *IPAddress, const char *Reason, const char *Comment, bool *FinalWarning, + int *Days, uint32 *BanishmentID){ + this->prepareQuery(25); + this->sendQuad(GamemasterID); + this->sendString(PlayerName); + this->sendString(IPAddress); + this->sendString(Reason); + this->sendString(Comment); + this->sendFlag(*FinalWarning); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *BanishmentID = this->getQuad(); + *Days = this->getByte(); + *FinalWarning = this->getFlag(); + if(*Days == 0xFF){ + *Days = -1; + } + }else if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode >= 1 && ErrorCode <= 3){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::banishAccount: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else{ + error("TQueryManagerConnection::banishAccount: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::reportStatement(uint32 ReporterID, const char *PlayerName, + const char *Reason, const char *Comment, uint32 BanishmentID, uint32 StatementID, + int NumberOfStatements, uint32 *StatementIDs, int *TimeStamps, uint32 *CharacterIDs, + const char (*Channels)[30], const char (*Texts)[256]){ + this->prepareQuery(27); + this->sendQuad(ReporterID); + this->sendString(PlayerName); + this->sendString(Reason); + this->sendString(Comment); + this->sendQuad(BanishmentID); + this->sendQuad(StatementID); + + int NonZeroStatements = 0; + for(int i = 0; i < NumberOfStatements; i += 1){ + if(StatementIDs[i] != 0){ + NonZeroStatements += 1; + } + } + + this->sendQuad((uint32)NonZeroStatements); + for(int i = 0; i < NumberOfStatements; i += 1){ + if(StatementIDs[i] != 0){ + this->sendQuad(StatementIDs[i]); + this->sendQuad((uint32)TimeStamps[i]); + this->sendQuad(CharacterIDs[i]); + this->sendString(Channels[i]); + this->sendString(Texts[i]); + } + } + + int Status = this->executeQuery(180, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode >= 1 && ErrorCode <= 2){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::reportStatement: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else if(Status != QUERY_OK){ + error("TQueryManagerConnection::reportStatement: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::banishIPAddress(uint32 GamemasterID, const char *PlayerName, + const char *IPAddress, const char *Reason, const char *Comment){ + this->prepareQuery(28); + this->sendQuad(GamemasterID); + this->sendString(PlayerName); + this->sendString(IPAddress); + this->sendString(Reason); + this->sendString(Comment); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode >= 1 && ErrorCode <= 2){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::banishIPAddress: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else if(Status != QUERY_OK){ + error("TQueryManagerConnection::banishIPAddress: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::logCharacterDeath(uint32 CharacterID, int Level, + uint32 Offender, const char *Remark, bool Unjustified, time_t Time){ + this->prepareQuery(29); + this->sendQuad(CharacterID); + this->sendWord((uint16)Level); + this->sendQuad(Offender); + this->sendString(Remark); + this->sendFlag(Unjustified); + this->sendQuad((uint32)Time); + int Status = this->executeQuery(90, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::logCharacterDeath: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::addBuddy(uint32 AccountID, uint32 Buddy){ + this->prepareQuery(30); + this->sendQuad(AccountID); + this->sendQuad(Buddy); + int Status = this->executeQuery(90, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::addBuddy: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::removeBuddy(uint32 AccountID, uint32 Buddy){ + this->prepareQuery(31); + this->sendQuad(AccountID); + this->sendQuad(Buddy); + int Status = this->executeQuery(90, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::removeBuddy: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::decrementIsOnline(uint32 CharacterID){ + this->prepareQuery(32); + this->sendQuad(CharacterID); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::decrementIsOnline: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::finishAuctions(int *NumberOfAuctions, uint16 *HouseIDs, + uint32 *CharacterIDs, char (*CharacterNames)[30], int *Bids){ + this->prepareQuery(33); + int Status = this->executeQuery(60, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + int MaxNumberOfAuctions = *NumberOfAuctions; + *NumberOfAuctions = this->getWord(); + if(*NumberOfAuctions > MaxNumberOfAuctions){ + error("TQueryManagerConnection::finishAuctions: zu viele Auktionen (%d>%d).\n", + *NumberOfAuctions, MaxNumberOfAuctions); + return -1; + } + + for(int i = 0; i < *NumberOfAuctions; i += 1){ + HouseIDs[i] = this->getWord(); + CharacterIDs[i] = this->getQuad(); + this->getString(CharacterNames[i], 30); + Bids[i] = (int)this->getQuad(); + } + }else{ + error("TQueryManagerConnection::finishAuctions: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::excludeFromAuctions(uint32 CharacterID, bool Banish){ + this->prepareQuery(51); + this->sendQuad(CharacterID); + this->sendFlag(Banish); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::excludeFromAuctions: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::transferHouses(int *NumberOfTransfers, uint16 *HouseIDs, + uint32 *NewOwnerIDs, char (*NewOwnerNames)[30], int *Prices){ + this->prepareQuery(35); + int Status = this->executeQuery(60, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + int MaxNumberOfTransfers = *NumberOfTransfers; + *NumberOfTransfers = this->getWord(); + if(*NumberOfTransfers > MaxNumberOfTransfers){ + error("TQueryManagerConnection::transferHouses: zu viele Transfers (%d>%d).\n", + *NumberOfTransfers, MaxNumberOfTransfers); + return -1; + } + + for(int i = 0; i < *NumberOfTransfers; i += 1){ + HouseIDs[i] = this->getWord(); + NewOwnerIDs[i] = this->getQuad(); + this->getString(NewOwnerNames[i], 30); + Prices[i] = (int)this->getQuad(); + } + }else{ + error("TQueryManagerConnection::transferHouses: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::cancelHouseTransfer(uint16 HouseID){ + this->prepareQuery(52); + this->sendWord(HouseID); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::cancelHouseTransfer: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::evictFreeAccounts(int *NumberOfEvictions, + uint16 *HouseIDs, uint32 *OwnerIDs){ + this->prepareQuery(36); + int Status = this->executeQuery(60, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + int MaxNumberOfEvictions = *NumberOfEvictions; + *NumberOfEvictions = this->getWord(); + if(*NumberOfEvictions > MaxNumberOfEvictions){ + error("TQueryManagerConnection::evictFreeAccounts: zu viele Räumungen (%d>%d).\n", + *NumberOfEvictions, MaxNumberOfEvictions); + return -1; + } + + for(int i = 0; i < *NumberOfEvictions; i += 1){ + HouseIDs[i] = this->getWord(); + OwnerIDs[i] = this->getQuad(); + } + }else{ + error("TQueryManagerConnection::evictFreeAccounts: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::evictDeletedCharacters(int *NumberOfEvictions, uint16 *HouseIDs){ + this->prepareQuery(37); + int Status = this->executeQuery(60, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + int MaxNumberOfEvictions = *NumberOfEvictions; + *NumberOfEvictions = this->getWord(); + if(*NumberOfEvictions > MaxNumberOfEvictions){ + error("TQueryManagerConnection::evictDeletedCharacters: zu viele Räumungen (%d>%d).\n", + *NumberOfEvictions, MaxNumberOfEvictions); + return -1; + } + + for(int i = 0; i < *NumberOfEvictions; i += 1){ + HouseIDs[i] = this->getWord(); + } + }else{ + error("TQueryManagerConnection::evictDeletedCharacters: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::evictExGuildleaders(int NumberOfGuildhouses, + int *NumberOfEvictions, uint16 *HouseIDs, uint32 *Guildleaders){ + this->prepareQuery(38); + + this->sendWord((uint16)NumberOfGuildhouses); + for(int i = 0; i < NumberOfGuildhouses; i += 1){ + this->sendWord(HouseIDs[i]); + this->sendQuad(Guildleaders[i]); + } + + int Status = this->executeQuery(60, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *NumberOfEvictions = this->getWord(); + for(int i = 0; i < *NumberOfEvictions; i += 1){ + HouseIDs[i] = this->getWord(); + } + }else{ + error("TQueryManagerConnection::evictExGuildleaders: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::insertHouseOwner(uint16 HouseID, uint32 OwnerID, int PaidUntil){ + this->prepareQuery(39); + this->sendWord(HouseID); + this->sendQuad(OwnerID); + this->sendQuad((uint32)PaidUntil); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::insertHouseOwner: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::updateHouseOwner(uint16 HouseID, uint32 OwnerID, int PaidUntil){ + this->prepareQuery(40); + this->sendWord(HouseID); + this->sendQuad(OwnerID); + this->sendQuad((uint32)PaidUntil); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::updateHouseOwner: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::deleteHouseOwner(uint16 HouseID){ + this->prepareQuery(41); + this->sendWord(HouseID); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::deleteHouseOwner: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::getHouseOwners(int *NumberOfOwners, uint16 *HouseIDs, + uint32 *OwnerIDs, char (*OwnerNames)[30], int *PaidUntils){ + this->prepareQuery(42); + int Status = this->executeQuery(60, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + int MaxNumberOfOwners = *NumberOfOwners; + *NumberOfOwners = this->getWord(); + if(*NumberOfOwners > MaxNumberOfOwners){ + error("TQueryManagerConnection::getHouseOwners: zu viele Häuser (%d>%d).\n", + *NumberOfOwners, MaxNumberOfOwners); + return -1; + } + + for(int i = 0; i < *NumberOfOwners; i += 1){ + HouseIDs[i] = this->getWord(); + OwnerIDs[i] = this->getQuad(); + this->getString(OwnerNames[i], 30); + PaidUntils[i] = (int)this->getQuad(); + } + }else{ + error("TQueryManagerConnection::getHouseOwners: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::getAuctions(int *NumberOfAuctions, uint16 *HouseIDs){ + this->prepareQuery(43); + int Status = this->executeQuery(120, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + int MaxNumberOfAuctions = *NumberOfAuctions; + *NumberOfAuctions = this->getWord(); + if(*NumberOfAuctions > MaxNumberOfAuctions){ + error("TQueryManagerConnection::getAuctions: zu viele Auktionen (%d>%d).\n", + *NumberOfAuctions, MaxNumberOfAuctions); + return -1; + } + + for(int i = 0; i < *NumberOfAuctions; i += 1){ + HouseIDs[i] = this->getWord(); + } + }else{ + error("TQueryManagerConnection::getAuctions: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::startAuction(uint16 HouseID){ + this->prepareQuery(44); + this->sendWord(HouseID); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::startAuction: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::insertHouses(int NumberOfHouses, uint16 *HouseIDs, + const char **Names, int *Rents, const char **Descriptions, int *Sizes, + int *PositionsX,int *PositionsY,int *PositionsZ, char (*Towns)[30], + bool *Guildhouses){ + this->prepareQuery(45); + + this->sendWord(NumberOfHouses); + for(int i = 0; i < NumberOfHouses; i += 1){ + this->sendWord(HouseIDs[i]); + this->sendString(Names[i]); + this->sendQuad((int)Rents[i]); + this->sendString(Descriptions[i]); + this->sendWord((uint16)Sizes[i]); + this->sendWord((uint16)PositionsX[i]); + this->sendWord((uint16)PositionsY[i]); + this->sendByte((uint8)PositionsZ[i]); + this->sendString(Towns[i]); + this->sendFlag(Guildhouses[i]); + } + + int Status = this->executeQuery(60, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::insertHouses: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::clearIsOnline(int *NumberOfAffectedPlayers){ + this->prepareQuery(46); + int Status = this->executeQuery(120, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *NumberOfAffectedPlayers = this->getWord(); + }else{ + error("TQueryManagerConnection::clearIsOnline: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::createPlayerlist(int NumberOfPlayers, const char **Names, + int *Levels, const char (*Professions)[30], bool *NewRecord){ + this->prepareQuery(47); + + if(NumberOfPlayers >= 0){ + this->sendWord((uint16)NumberOfPlayers); + for(int i = 0; i < NumberOfPlayers; i += 1){ + this->sendString(Names[i]); + this->sendWord((uint16)Levels[i]); + this->sendString(Professions[i]); + } + }else{ + this->sendWord(0xFFFF); + } + + int Status = this->executeQuery(240, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *NewRecord = this->getFlag(); + }else{ + error("TQueryManagerConnection::createPlayerlist: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::logKilledCreatures(int NumberOfRaces, const char **Names, + int *KilledPlayers,int *KilledCreatures){ + this->prepareQuery(48); + + this->sendWord((uint16)NumberOfRaces); + for(int i = 0; i < NumberOfRaces; i += 1){ + this->sendString(Names[i]); + this->sendQuad((uint32)KilledPlayers[i]); + this->sendQuad((uint32)KilledCreatures[i]); + } + + int Status = this->executeQuery(240, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::logKilledCreatures: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::loadPlayers(uint32 MinimumCharacterID, int *NumberOfPlayers, + char (*Names)[30], uint32 *CharacterIDs){ + this->prepareQuery(50); + this->sendQuad(MinimumCharacterID); + int Status = this->executeQuery(900, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + // TODO(fusion): This is called to fill the player index in `InitPlayerIndex` + // but there is no explicit parameter that limits how many results are returned + // which could be a problem. + *NumberOfPlayers = (int)this->getQuad(); + for(int i = 0; i < *NumberOfPlayers; i += 1){ + this->getString(Names[i], 30); + CharacterIDs[i] = this->getQuad(); + } + }else{ + error("TQueryManagerConnection::loadPlayers: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::getKeptCharacters(uint32 MinimumCharacterID, + int *NumberOfPlayers, uint32 *CharacterIDs){ + this->prepareQuery(200); + this->sendQuad(MinimumCharacterID); + int Status = this->executeQuery(1800, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + // TODO(fusion): Same as `loadPlayers`. + *NumberOfPlayers = (int)this->getQuad(); + for(int i = 0; i < *NumberOfPlayers; i += 1){ + CharacterIDs[i] = this->getQuad(); + } + }else{ + error("TQueryManagerConnection::getKeptCharacters: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::getDeletedCharacters(uint32 MinimumCharacterID, + int *NumberOfPlayers, uint32 *CharacterIDs){ + this->prepareQuery(201); + this->sendQuad(MinimumCharacterID); + int Status = this->executeQuery(900, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + // TODO(fusion): Same as `loadPlayers`. + *NumberOfPlayers = (int)this->getQuad(); + for(int i = 0; i < *NumberOfPlayers; i += 1){ + CharacterIDs[i] = this->getQuad(); + } + }else{ + error("TQueryManagerConnection::getKeptCharacters: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::deleteOldCharacter(uint32 CharacterID){ + this->prepareQuery(202); + this->sendQuad(CharacterID); + int Status = this->executeQuery(30, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::deleteOldCharacter: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::getHiddenCharacters(uint32 MinimumCharacterID, + int *NumberOfPlayers, uint32 *CharacterIDs){ + this->prepareQuery(203); + this->sendQuad(MinimumCharacterID); + int Status = this->executeQuery(120, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + // TODO(fusion): Same as `loadPlayers`. + *NumberOfPlayers = (int)this->getQuad(); + for(int i = 0; i < *NumberOfPlayers; i += 1){ + CharacterIDs[i] = this->getQuad(); + } + }else{ + error("TQueryManagerConnection::getHiddenCharacters: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::createHighscores(int NumberOfPlayers, uint32 *CharacterIDs, + int *ExpPoints, int *ExpLevel, int *Fist, int *Club, int *Axe, + int *Sword, int *Distance, int *Shielding, int *Magic, int *Fishing){ + this->prepareQuery(204); + + this->sendQuad((uint32)NumberOfPlayers); + for(int i = 0; i < NumberOfPlayers; i += 1){ + this->sendQuad(CharacterIDs[i]); + this->sendQuad((uint32)ExpPoints[i]); + this->sendWord((uint16)ExpLevel[i]); + this->sendWord((uint16)Fist[i]); + this->sendWord((uint16)Club[i]); + this->sendWord((uint16)Axe[i]); + this->sendWord((uint16)Sword[i]); + this->sendWord((uint16)Distance[i]); + this->sendWord((uint16)Shielding[i]); + this->sendWord((uint16)Magic[i]); + this->sendWord((uint16)Fishing[i]); + } + + int Status = this->executeQuery(120, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::createHighscores: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::createCensus(void){ + this->prepareQuery(205); + int Status = this->executeQuery(600, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::createCensus: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::createKillStatistics(void){ + this->prepareQuery(206); + int Status = this->executeQuery(300, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status != QUERY_OK){ + error("TQueryManagerConnection::createKillStatistics: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::getPlayersOnline(int *NumberOfWorlds, char (*Names)[30], uint16 *Players){ + this->prepareQuery(207); + int Status = this->executeQuery(120, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *NumberOfWorlds = this->getByte(); + for(int i = 0; i < *NumberOfWorlds; i += 1){ + this->getString(Names[i], 30); + Players[i] = this->getWord(); + } + }else{ + error("TQueryManagerConnection::getPlayersOnline: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::getWorlds(int *NumberOfWorlds, char (*Names)[30]){ + this->prepareQuery(208); + int Status = this->executeQuery(120, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *NumberOfWorlds = this->getByte(); + for(int i = 0; i < *NumberOfWorlds; i += 1){ + this->getString(Names[i], 30); + } + }else{ + error("TQueryManagerConnection::getWorlds: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::getServerLoad(const char *World, int Period, int *Data){ + this->prepareQuery(209); + this->sendString(World); + this->sendByte((uint8)Period); + int Status = this->executeQuery(360, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + // TODO(fusion): Another hardcoded constant? + for(int i = 0; i < 600; i += 0){ + Data[i] = this->getWord(); + if(Data[i] == 0xFFFF){ + Data[i] = -1; + } + } + }else{ + error("TQueryManagerConnection::getServerLoad: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::insertPaymentDataOld(uint32 PurchaseNr, uint32 ReferenceNr, + const char *FirstName, const char *LastName, const char *Company, + const char *Street, const char *Zip, const char *City, const char *Country, + const char *State, const char *Phone, const char *Fax, const char *EMail, + const char *PaymentMethod, uint32 ProductID, const char *Registrant, + uint32 AccountID, uint32 *PaymentID){ + this->prepareQuery(210); + this->sendQuad(PurchaseNr); + this->sendQuad(ReferenceNr); + this->sendString(FirstName); + this->sendString(LastName); + this->sendString(Company); + this->sendString(Street); + this->sendString(Zip); + this->sendString(City); + this->sendString(Country); + this->sendString(State); + this->sendString(Phone); + this->sendString(Fax); + this->sendString(EMail); + this->sendString(PaymentMethod); + this->sendQuad(ProductID); + this->sendString(Registrant); + this->sendQuad(AccountID); + int Status = this->executeQuery(360, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *PaymentID = this->getQuad(); + }else if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode == 1){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::insertPaymentDataOld: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else{ + error("TQueryManagerConnection::insertPaymentDataOld: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::addPaymentOld(uint32 AccountID, const char *Description, + uint32 PaymentID, int Days, int *ActionTaken){ + this->prepareQuery(211); + this->sendQuad(AccountID); + this->sendString(Description); + this->sendQuad(PaymentID); + this->sendWord((uint16)Days); + int Status = this->executeQuery(360, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *ActionTaken = this->getByte(); + }else if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode >= 1 && ErrorCode <= 2){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::addPaymentOld: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else{ + error("TQueryManagerConnection::addPaymentOld: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::cancelPaymentOld(uint32 PurchaseNr, uint32 ReferenceNr, + uint32 AccountID, bool *IllegalUse, char *EMailAddress){ + this->prepareQuery(212); + this->sendQuad(PurchaseNr); + this->sendQuad(ReferenceNr); + this->sendQuad(AccountID); + int Status = this->executeQuery(360, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *IllegalUse = this->getFlag(); + this->getString(EMailAddress, 50); + }else if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode >= 1 && ErrorCode <= 2){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::cancelPaymentOld: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else{ + error("TQueryManagerConnection::cancelPaymentOld: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::insertPaymentDataNew(uint32 PurchaseNr, uint32 ReferenceNr, + const char *FirstName, const char *LastName, const char *Company, + const char *Street, const char *Zip, const char *City, const char *Country, + const char *State, const char *Phone, const char *Fax, const char *EMail, + const char *PaymentMethod, uint32 ProductID, const char *Registrant, + const char *PaymentKey, uint32 *PaymentID){ + this->prepareQuery(213); + this->sendWord(PurchaseNr); + this->sendWord(ReferenceNr); + this->sendString(FirstName); + this->sendString(LastName); + this->sendString(Company); + this->sendString(Street); + this->sendString(Zip); + this->sendString(City); + this->sendString(Country); + this->sendString(State); + this->sendString(Phone); + this->sendString(Fax); + this->sendString(EMail); + this->sendString(PaymentMethod); + this->sendWord(ProductID); + this->sendString(Registrant); + this->sendString(PaymentKey); + int Status = this->executeQuery(360, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *PaymentID = this->getQuad(); + }else if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode == 1){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::insertPaymentDataNew: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else{ + error("TQueryManagerConnection::insertPaymentDataNew: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::addPaymentNew(const char *PaymentKey, uint32 PaymentID, + int *ActionTaken, char *EMailReceiver){ + this->prepareQuery(214); + this->sendString(PaymentKey); + this->sendQuad(PaymentID); + int Status = this->executeQuery(360, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *ActionTaken = this->getByte(); + if(*ActionTaken == 5){ + this->getString(EMailReceiver, 100); + } + }else if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode >= 1 && ErrorCode <= 3){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::addPaymentNew: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else{ + error("TQueryManagerConnection::addPaymentNew: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +int TQueryManagerConnection::cancelPaymentNew(uint32 PurchaseNr, uint32 ReferenceNr, + const char *PaymentKey, bool *IllegalUse, bool *Present, char *EMailAddress){ + this->prepareQuery(215); + this->sendQuad(PurchaseNr); + this->sendQuad(ReferenceNr); + this->sendString(PaymentKey); + int Status = this->executeQuery(360, true); + int Result = (Status == QUERY_OK ? 0 : -1); + if(Status == QUERY_OK){ + *IllegalUse = this->getFlag(); + *Present = this->getFlag(); + this->getString(EMailAddress, 50); + }else if(Status == QUERY_ERROR){ + int ErrorCode = this->getByte(); + if(ErrorCode == 1){ + Result = ErrorCode; + }else{ + error("TQueryManagerConnection::cancelPaymentNew: Ungültiger Fehlercode %d.\n", ErrorCode); + } + }else{ + error("TQueryManagerConnection::cancelPaymentNew: Anfrage fehlgeschlagen.\n"); + } + return Result; +} + +// TQueryManagerConnectionPool +// ============================================================================= +// TODO(fusion): Same as `TQueryManagerConnection::TQueryManagerConnection`. +TQueryManagerConnectionPool::TQueryManagerConnectionPool(int Connections) : + NumberOfConnections(std::max(Connections, 1)), + QueryManagerConnection(NULL), + QueryManagerConnectionFree(NULL), + FreeQueryManagerConnections(this->NumberOfConnections), + QueryManagerConnectionMutex(1) +{ + if(Connections <= 0){ + error("TQueryManagerConnectionPool::TQueryManagerConnectionPool:" + " Ungültige Verbindungsanzahl %d.\n", Connections); + } +} + +void TQueryManagerConnectionPool::init(void){ + this->QueryManagerConnection = new TQueryManagerConnection[this->NumberOfConnections]; + this->QueryManagerConnectionFree = new bool[this->NumberOfConnections]; + for(int i = 0; i < this->NumberOfConnections; i += 1){ + if(!this->QueryManagerConnection[i].isConnected()){ + error("TQueryManagerConnectionPool::init: Kann nicht zum Query-Manager verbinden.\n"); + throw "cannot connect to query manager"; + } + + this->QueryManagerConnectionFree[i] = true; + } +} + +void TQueryManagerConnectionPool::exit(void){ + for(int i = 0; i < this->NumberOfConnections; i += 1){ + this->FreeQueryManagerConnections.down(); + } + + delete[] this->QueryManagerConnection; + delete[] this->QueryManagerConnectionFree; +} + +TQueryManagerConnection *TQueryManagerConnectionPool::getConnection(void){ + int ConnectionIndex = -1; + this->FreeQueryManagerConnections.down(); + this->QueryManagerConnectionMutex.down(); + for(int i = 0; i < this->NumberOfConnections; i += 1){ + if(this->QueryManagerConnectionFree[i]){ + this->QueryManagerConnectionFree[i] = false; + ConnectionIndex = i; + break; + } + } + this->QueryManagerConnectionMutex.up(); + + if(ConnectionIndex == -1){ + error("TQueryManagerConnectionPool::getConnection: Keine freie Verbindung gefunden.\n"); + return NULL; + } + + return &this->QueryManagerConnection[ConnectionIndex]; +} + +void TQueryManagerConnectionPool::releaseConnection(TQueryManagerConnection *Connection){ + int ConnectionIndex = -1; + for(int i = 0; i < this->NumberOfConnections; i += 1){ + if(&this->QueryManagerConnection[i] == Connection){ + ConnectionIndex = i; + break; + } + } + + if(ConnectionIndex == -1){ + error("TQueryManagerConnectionPool::releaseConnection: Verbindung nicht gefunden.\n"); + return; + } + + this->QueryManagerConnectionFree[ConnectionIndex] = true; + this->FreeQueryManagerConnections.up(); +} + +// TQueryManagerPoolConnection +// ============================================================================= +TQueryManagerPoolConnection::TQueryManagerPoolConnection(TQueryManagerConnectionPool *Pool) : + QueryManagerConnectionPool(Pool), + QueryManagerConnection(NULL) +{ + if(this->QueryManagerConnectionPool == NULL){ + error("TQueryManagerPoolConnection::TQueryManagerPoolConnection: Pool ist NULL.\n"); + return; + } + + this->QueryManagerConnection = this->QueryManagerConnectionPool->getConnection(); +} + +TQueryManagerPoolConnection::~TQueryManagerPoolConnection(void){ + if(this->QueryManagerConnection != NULL){ + ASSERT(this->QueryManagerConnectionPool != NULL); + this->QueryManagerConnectionPool->releaseConnection(this->QueryManagerConnection); + } +} diff --git a/src/query.hh b/src/query.hh index 8bdd527..dbba9dc 100644 --- a/src/query.hh +++ b/src/query.hh @@ -11,6 +11,7 @@ enum : int { }; struct TQueryManagerConnection{ + TQueryManagerConnection(void) : TQueryManagerConnection(KB(16)) {} TQueryManagerConnection(int QueryBufferSize); ~TQueryManagerConnection(void); @@ -39,35 +40,20 @@ struct TQueryManagerConnection{ int executeQuery(int Timeout, bool AutoReconnect); -//== - - int loadWorldConfig(int *WorldType, int *RebootTime, - int *IPAddress, int *Port, - int *MaxPlayers, int *PremiumPlayerBuffer, - int *MaxNewbies, int *PremiumNewbieBuffer); - int loadPlayers(uint32 MinimumCharacterID, int *NumberOfPlayers, - char (*Names)[30], uint32 *CharacterIDs); - - int loginGame(uint32 AccountID, const char *PlayerName, const char *Password, + int checkAccountPassword(uint32 AccountID, const char *Password, const char *IPAddress); + int loginAdmin(uint32 AccountID, bool PrivateWorld, int *NumberOfCharacters, + char (*Characters)[30], char (*Worlds)[30], uint8 (*IPAddresses)[4], + uint16 *Ports, uint16 *PremiumDaysLeft); + int loadWorldConfig(int *WorldType, int *RebootTime, int *IPAddress, + int *Port, int *MaxPlayers, int *PremiumPlayerBuffer, int *MaxNewbies, + int *PremiumNewbieBuffer); + int loginGame(uint32 AccountID, char *PlayerName, const char *Password, const char *IPAddress, bool PrivateWorld, bool PremiumAccountRequired, bool GamemasterRequired, uint32 *CharacterID, int *Sex, char *Guild, char *Rank, char *Title, int *NumberOfBuddies, uint32 *BuddyIDs, char (*BuddyNames)[30], uint8 *Rights, bool *PremiumAccountActivated); int logoutGame(uint32 CharacterID, int Level, const char *Profession, const char *Residence, time_t LastLoginTime, int TutorActivities); - int createPlayerlist(int NumberOfPlayers, const char **Names, int *Levels, - const char (*Professions)[30], bool *NewRecord); - int decrementIsOnline(uint32 CharacterID); - int clearIsOnline(int *NumberOfAffectedPlayers); - int addBuddy(uint32 AccountID, uint32 BuddyID); - int removeBuddy(uint32 AccountID, uint32 BuddyID); - - int logKilledCreatures(int NumberOfRaces, const char **Names, - int *KilledPlayers,int *KilledCreatures); - - int logCharacterDeath(uint32 CharacterID, int Level, uint32 OffenderID, - const char *Remark, bool Unjustified, time_t Time); - int setNotation(uint32 GamemasterID, const char *PlayerName, const char *IPAddress, const char *Reason, const char *Comment, uint32 *BanishmentID); int setNamelock(uint32 GamemasterID, const char *PlayerName, const char *IPAddress, @@ -76,35 +62,82 @@ struct TQueryManagerConnection{ const char *Reason, const char *Comment, bool *FinalWarning, int *Days, uint32 *BanishmentID); int reportStatement(uint32 ReporterID, const char *PlayerName, const char *Reason, - const char *Comment, uint32 BanishmentID, uint32 StatementID, int NumberOfStatements, - uint32 *StatementIDs, int *TimeStamps, uint32 *CharacterIDs, char (*Channels)[30], - char (*Texts)[256]); + const char *Comment, uint32 BanishmentID, uint32 StatementID, + int NumberOfStatements, uint32 *StatementIDs, int *TimeStamps, + uint32 *CharacterIDs, const char (*Channels)[30], const char (*Texts)[256]); int banishIPAddress(uint32 GamemasterID, const char *PlayerName, const char *IPAddress, const char *Reason, const char *Comment); - - int insertHouses(int NumberOfHouses, uint16 *HouseIDs, char **Names, - int *Rents, char **Descriptions, int *Sizes, int *PositionsX, - int *PositionsY, int *PositionsZ, char (*Towns)[30], bool *Guildhouses); - + int logCharacterDeath(uint32 CharacterID, int Level, uint32 Offender, + const char *Remark, bool Unjustified, time_t Time); + int addBuddy(uint32 AccountID, uint32 Buddy); + int removeBuddy(uint32 AccountID, uint32 Buddy); + int decrementIsOnline(uint32 CharacterID); int finishAuctions(int *NumberOfAuctions, uint16 *HouseIDs, uint32 *CharacterIDs, char (*CharacterNames)[30], int *Bids); - int excludeFromAuctions(uint32 CharacterIDs, bool Banish); - + int excludeFromAuctions(uint32 CharacterID, bool Banish); int transferHouses(int *NumberOfTransfers, uint16 *HouseIDs, - uint32 *NewOwnerIDs, char (*NewOwnerNames) [30], int *Prices); + uint32 *NewOwnerIDs, char (*NewOwnerNames)[30], int *Prices); int cancelHouseTransfer(uint16 HouseID); int evictFreeAccounts(int *NumberOfEvictions, uint16 *HouseIDs, uint32 *OwnerIDs); int evictDeletedCharacters(int *NumberOfEvictions, uint16 *HouseIDs); - int evictExGuildleaders(int NumberOfGuildhouses, int *NumberOfEvictions, - uint16 *HouseIDs, uint32 *Guildleaders); + int evictExGuildleaders(int NumberOfGuildhouses, + int *NumberOfEvictions, uint16 *HouseIDs, uint32 *Guildleaders); + int insertHouseOwner(uint16 HouseID, uint32 OwnerID, int PaidUntil); + int updateHouseOwner(uint16 HouseID, uint32 OwnerID, int PaidUntil); int deleteHouseOwner(uint16 HouseID); - + int getHouseOwners(int *NumberOfOwners, uint16 *HouseIDs, + uint32 *OwnerIDs, char (*OwnerNames)[30], int *PaidUntils); int getAuctions(int *NumberOfAuctions, uint16 *HouseIDs); int startAuction(uint16 HouseID); - int getHouseOwners(int *NumberOfHouses, uint16 *HouseIDs, - uint32 *OwnerIDs, char (*OwnerNames)[30], int *PaidUntils); - int insertHouseOwner(uint16 HouseID, uint32 OwnerID, int PaidUntil); - int updateHouseOwner(uint16 HouseID, uint32 OwnerID, int PaidUntil); + int insertHouses(int NumberOfHouses, uint16 *HouseIDs, + const char **Names, int *Rents, const char **Descriptions, + int *Sizes, int *PositionsX,int *PositionsY,int *PositionsZ, + char (*Towns)[30], bool *Guildhouses); + int clearIsOnline(int *NumberOfAffectedPlayers); + int createPlayerlist(int NumberOfPlayers, const char **Names, + int *Levels, const char (*Professions)[30], bool *NewRecord); + int logKilledCreatures(int NumberOfRaces, const char **Names, + int *KilledPlayers,int *KilledCreatures); + int loadPlayers(uint32 MinimumCharacterID, int *NumberOfPlayers, + char (*Names)[30], uint32 *CharacterIDs); + int getKeptCharacters(uint32 MinimumCharacterID, + int *NumberOfPlayers, uint32 *CharacterIDs); + int getDeletedCharacters(uint32 MinimumCharacterID, + int *NumberOfPlayers, uint32 *CharacterIDs); + int deleteOldCharacter(uint32 CharacterID); + int getHiddenCharacters(uint32 MinimumCharacterID, + int *NumberOfPlayers, uint32 *CharacterIDs); + int createHighscores(int NumberOfPlayers, uint32 *CharacterIDs, + int *ExpPoints, int *ExpLevel, int *Fist, int *Club, int *Axe, + int *Sword, int *Distance, int *Shielding, int *Magic, int *Fishing); + int createCensus(void); + int createKillStatistics(void); + int getPlayersOnline(int *NumberOfWorlds, char (*Names)[30], uint16 *Players); + int getWorlds(int *NumberOfWorlds, char (*Names)[30]); + int getServerLoad(const char *World, int Period, int *Data); + + int insertPaymentDataOld(uint32 PurchaseNr, uint32 ReferenceNr, + const char *FirstName, const char *LastName, const char *Company, + const char *Street, const char *Zip, const char *City, const char *Country, + const char *State, const char *Phone, const char *Fax, const char *EMail, + const char *PaymentMethod, uint32 ProductID, const char *Registrant, + uint32 AccountID, uint32 *PaymentID); + int addPaymentOld(uint32 AccountID, const char *Description, + uint32 PaymentID, int Days, int *ActionTaken); + int cancelPaymentOld(uint32 PurchaseNr, uint32 ReferenceNr, + uint32 AccountID, bool *IllegalUse, char *EMailAddress); + + int insertPaymentDataNew(uint32 PurchaseNr, uint32 ReferenceNr, + const char *FirstName, const char *LastName, const char *Company, + const char *Street, const char *Zip, const char *City, const char *Country, + const char *State, const char *Phone, const char *Fax, const char *EMail, + const char *PaymentMethod, uint32 ProductID, const char *Registrant, + const char *PaymentKey, uint32 *PaymentID); + int addPaymentNew(const char *PaymentKey, uint32 PaymentID, + int *ActionTaken, char *EMailReceiver); + int cancelPaymentNew(uint32 PurchaseNr, uint32 ReferenceNr, + const char *PaymentKey, bool *IllegalUse, bool *Present, + char *EMailAddress); // DATA // ================= @@ -120,6 +153,8 @@ struct TQueryManagerConnectionPool{ TQueryManagerConnectionPool(int Connections); void init(void); void exit(void); + TQueryManagerConnection *getConnection(void); + void releaseConnection(TQueryManagerConnection *Connection); // DATA // ================= -- cgit v1.2.3