aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfusion32 <marcopuzziello@gmail.com>2025-07-02 13:28:45 -0300
committerfusion32 <marcopuzziello@gmail.com>2025-07-02 13:28:45 -0300
commite782274ade8d7307e157a997d6ac3bcaa4130024 (patch)
tree7999cc2737817db3e4c22bf94236ade6d5dd0d95
parentaaf198773fd8e041b0976cc0682e83f8acf394d0 (diff)
downloadgame-e782274ade8d7307e157a997d6ac3bcaa4130024.tar.gz
game-e782274ade8d7307e157a997d6ac3bcaa4130024.zip
`query.cc`
-rw-r--r--Makefile2
-rw-r--r--TODO.md27
-rw-r--r--reference/game.c4633
-rw-r--r--src/communication.cc2
-rw-r--r--src/houses.cc20
-rw-r--r--src/map.hh4
-rw-r--r--src/query.cc1352
-rw-r--r--src/query.hh117
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<int>(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
// =================