Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void __usercall ChatProcessor(int a1<eax>, time_t a2<esi:edi>, PLAYER *player, int a4, int arenaPlayerIndex, const char *ChatText, char a7)
- {
- void *v7; // esp@1
- const char *v8; // ebx@1
- PLAYER *v9; // ebp@1
- int v10; // edi@5
- PLAYER *v11; // edx@6
- int v12; // ecx@9
- int v13; // esi@17
- int v14; // eax@33
- const char v15; // al@36
- const char *v16; // ebx@45
- PLAYER *v17; // eax@50
- int v18; // esi@51
- char *v19; // ecx@54
- int v20; // edx@56
- unsigned int v21; // eax@61
- signed int v22; // ebx@61
- ARENA *v23; // eax@63
- ARENA *v24; // edx@63
- int v25; // ecx@63
- int v26; // esi@64
- signed int v27; // edi@65
- int v28; // eax@66
- ARENA *v29; // ecx@66
- int v30; // esi@69
- int v31; // edi@71
- int v32; // esi@71
- signed int v33; // ecx@74
- int v34; // eax@75
- char *v35; // edi@78
- signed int v36; // ecx@78
- signed int v37; // ecx@81
- const void *v38; // esi@81
- char *v39; // edi@81
- unsigned int v40; // edx@81
- signed int v41; // ecx@81
- const char v42; // al@89
- const char *v43; // ebx@89
- const char v44; // al@90
- const char v45; // al@96
- const char *v46; // ebx@96
- const char v47; // al@97
- const char v48; // al@103
- const char *v49; // ebx@103
- const char v50; // al@104
- int v51; // ebx@107
- const char *v52; // edx@108
- unsigned int v53; // kr48_4@108
- unsigned int v54; // kr50_4@108
- const char *v55; // edi@108
- unsigned int v56; // kr58_4@110
- const char *v57; // esi@110
- const char *v58; // edi@110
- int v59; // ecx@110
- bool v60; // zf@110
- int v61; // edi@121
- int i; // esi@121
- const char *v63; // eax@122
- signed int v64; // esi@126
- const char *v65; // ebx@134
- PLAYER *v66; // eax@140
- int v67; // edx@141
- int v68; // ecx@141
- PLAYER *v69; // eax@146
- int v70; // edx@147
- int v71; // ecx@147
- char v72; // cl@153
- int v73; // eax@153
- char *j; // edx@153
- char v75; // cl@156
- char v76; // cl@157
- int v77; // eax@157
- char *k; // edx@157
- char v79; // cl@160
- char v80; // cl@161
- int v81; // eax@161
- char *l; // edx@161
- char *v83; // eax@163
- char v84; // al@171
- int v85; // esi@171
- char *m; // ecx@171
- char v87; // al@174
- char v88; // al@175
- int v89; // esi@175
- char *n; // ecx@175
- char v91; // al@180
- int v92; // esi@180
- char *ii; // ecx@180
- const char *v94; // ebx@189
- const char v95; // al@200
- const char *v96; // ebx@200
- const char v97; // al@201
- ARENA *v98; // eax@204
- unsigned int v99; // kr68_4@208
- int v100; // edi@208
- PLAYER **v101; // ebx@209
- int v102; // ebx@215
- PLAYER *v103; // ecx@217
- __int64 v104; // qax@218
- int v105; // ecx@218
- __int64 v106; // qax@218
- int v107; // ST24_4@218
- __int64 v108; // qax@218
- PLAYER *v109; // esi@223
- int v110; // ST24_4@224
- int v111; // ST1C_4@224
- int v112; // ST18_4@224
- char *v113; // eax@224
- ARENA *v114; // eax@226
- signed int v115; // ecx@228
- int v116; // eax@228
- ENCRYPTION *v117; // ecx@230
- int v118; // edi@230
- int v119; // edx@233
- int v120; // edi@233
- unsigned __int64 v121; // st7@233
- int v122; // eax@235
- int v123; // ecx@235
- int v124; // eax@237
- unsigned __int64 v125; // st7@237
- int v126; // ecx@237
- int v127; // edx@239
- int v128; // edi@239
- time_t v129; // ST20_8@242
- signed __int64 v130; // qax@242
- signed int v131; // edi@242
- __int64 v132; // qax@243
- __int64 v133; // ST20_8@243
- signed int v134; // ecx@243
- __int64 v135; // ST18_8@243
- int v136; // ecx@247
- PLAYER *v137; // eax@268
- int v138; // ecx@269
- const char v139; // al@276
- const char *v140; // edi@276
- const char v141; // al@277
- const char v142; // al@279
- __int16 v143; // ax@284
- PLAYER *v144; // edi@289
- ARENA *v145; // eax@292
- int v146; // ecx@292
- signed int v147; // edx@293
- PLAYER *v148; // eax@294
- ARENA *v149; // eax@296
- int v150; // ecx@296
- signed int v151; // edx@297
- PLAYER *v152; // eax@298
- PLAYER *v153; // eax@308
- char *v154; // eax@309
- const char v155; // al@312
- const char *v156; // edi@312
- const char v157; // al@313
- ARENA *v158; // eax@318
- unsigned int v159; // kr88_4@320
- const char v160; // al@323
- const char *v161; // edi@323
- const char v162; // al@324
- const char v163; // al@330
- const char *v164; // edi@330
- const char v165; // al@331
- int v166; // eax@336
- __int16 v167; // ax@342
- PLAYER *v168; // esi@346
- int v169; // edx@350
- const char v170; // al@384
- const char *v171; // edi@384
- const char v172; // al@385
- PLAYER *v173; // esi@392
- int v174; // edx@397
- PLAYER *v175; // esi@403
- int v176; // edi@408
- int v177; // eax@409
- int v178; // esi@410
- int v179; // eax@410
- ARENA *v180; // ecx@413
- int v181; // edi@415
- ARENA **v182; // esi@416
- PLAYER *v183; // ecx@423
- int v184; // edi@427
- PLAYER **v185; // esi@428
- PLAYER *v186; // ecx@437
- ARENA *v187; // ecx@443
- FILE *v188; // eax@449
- const char *v189; // edi@449
- int v190; // ebx@451
- int v191; // eax@451
- FILE *v192; // eax@454
- ARENA *v193; // eax@455
- int v194; // esi@456
- signed int v195; // edi@457
- PLAYER *v196; // eax@458
- const char *v197; // esi@461
- int v198; // eax@461
- signed int v199; // edi@463
- int v200; // edx@471
- time_t v201; // ST20_8@478
- signed __int64 v202; // qax@478
- signed int v203; // esi@478
- signed int v204; // ecx@481
- int v205; // edi@481
- const char *v206; // esi@481
- bool v207; // zf@481
- const char *v208; // ebx@485
- signed int v209; // ebx@490
- char *v210; // eax@491
- int v211; // ecx@491
- int v212; // edi@494
- signed int v213; // ecx@496
- signed int v214; // ecx@499
- const void *v215; // esi@499
- char *v216; // edi@499
- unsigned int v217; // edx@499
- signed int v218; // ecx@499
- char *v219; // edi@502
- signed int v220; // ecx@502
- signed int v221; // ecx@505
- const void *v222; // esi@505
- char *v223; // edi@505
- unsigned int v224; // edx@505
- signed int v225; // ecx@505
- int v226; // ebx@516
- signed int v227; // esi@516
- ARENA *v228; // edx@520
- int v229; // eax@520
- int v230; // esi@520
- int v231; // edi@520
- int v232; // edx@520
- int v233; // ecx@524
- ARENA *v234; // eax@527
- int v235; // edx@527
- int v236; // ecx@527
- __int16 v237; // ax@527
- int v238; // eax@527
- int v239; // ecx@527
- int v240; // eax@527
- int v241; // eax@540
- ARENA *v242; // ecx@543
- char *v243; // eax@543
- char *v244; // edx@544
- char *v245; // ebx@546
- int v246; // eax@546
- ARENA *v247; // esi@547
- char *v248; // esi@550
- signed int v249; // ebp@554
- int v250; // eax@557
- int v251; // eax@562
- signed int v252; // ecx@570
- int v253; // edi@570
- const char *v254; // esi@570
- bool v255; // zf@570
- int v256; // eax@575
- const char *v257; // edx@578
- ARENA *v258; // ecx@585
- signed int v259; // ebx@586
- PLAYER *v260; // ecx@587
- signed int v261; // esi@587
- __int64 v262; // qax@590
- __int64 v263; // qax@591
- int v264; // edi@602
- signed int v265; // ecx@604
- signed int v266; // ecx@607
- const void *v267; // esi@607
- char *v268; // edi@607
- unsigned int v269; // edx@607
- signed int v270; // ecx@607
- char *v271; // edi@610
- signed int v272; // ecx@610
- signed int v273; // ecx@613
- const void *v274; // esi@613
- char *v275; // edi@613
- unsigned int v276; // edx@613
- signed int v277; // ecx@613
- int v278; // edx@617
- int v279; // ecx@621
- int v280; // edx@638
- char *v281; // ebx@638
- unsigned int v282; // ebx@646
- PLAYER *v283; // eax@646
- signed int v284; // ecx@654
- signed int v285; // ecx@658
- signed int v286; // ecx@662
- signed int v287; // ecx@671
- int v288; // edi@671
- const char *v289; // esi@671
- bool v290; // zf@671
- signed int v291; // ecx@675
- int v292; // edi@675
- const char *v293; // esi@675
- bool v294; // zf@675
- signed int v295; // ecx@682
- int v296; // eax@683
- const char v297; // al@688
- const char *v298; // edi@688
- char *jj; // ecx@688
- const char v300; // al@691
- char v301; // al@692
- int v302; // edi@692
- char *kk; // ecx@692
- const char v304; // al@696
- char *v305; // edi@704
- int *v306; // esi@704
- char v307; // al@707
- int v308; // ecx@708
- int v309; // edi@708
- int v310; // esi@708
- const char *v311; // eax@709
- ARENA *v312; // edi@711
- ARENA *v313; // ecx@718
- int v314; // eax@718
- int v315; // eax@723
- __int64 v316; // qax@727
- __int64 v317; // qax@728
- __int64 v318; // qax@729
- const char *v319; // ebx@730
- int v320; // edi@737
- char *v321; // ST1C_4@737
- int v322; // esi@737
- ARENA *v323; // eax@738
- ARENA *v324; // eax@743
- char *v325; // eax@748
- int v326; // edx@749
- PLAYER *v327; // esi@749
- bool v328; // sf@749
- ARENA **v329; // edi@750
- ARENA *v330; // eax@751
- int v331; // ebx@751
- signed int v332; // esi@752
- unsigned int v333; // krD8_4@774
- ARENA **v334; // esi@775
- int v335; // ebp@776
- signed int v336; // edi@777
- ARENA *v337; // edx@784
- int v338; // esi@785
- int v339; // ecx@785
- const char *v340; // ecx@797
- char v341; // al@799
- char *ll; // edx@799
- const char v343; // al@803
- const char v344; // al@804
- const char *v345; // ecx@804
- int v346; // eax@819
- int v347; // eax@833
- unsigned int v348; // krE8_4@836
- int v349; // edi@836
- PLAYER **v350; // ebp@837
- char *v351; // [sp+4h] [bp-1608Ch]@668
- const char *v352; // [sp+8h] [bp-16088h]@668
- char *v353; // [sp+Ch] [bp-16084h]@52
- char *v354; // [sp+Ch] [bp-16084h]@351
- char *v355; // [sp+Ch] [bp-16084h]@598
- char *v356; // [sp+Ch] [bp-16084h]@644
- int v357; // [sp+Ch] [bp-16084h]@668
- const char *v358; // [sp+10h] [bp-16080h]@52
- char *v359; // [sp+10h] [bp-16080h]@57
- char *v360; // [sp+10h] [bp-16080h]@218
- const char *v361; // [sp+10h] [bp-16080h]@351
- int v362; // [sp+10h] [bp-16080h]@525
- const char *v363; // [sp+10h] [bp-16080h]@598
- const char *v364; // [sp+10h] [bp-16080h]@644
- int v365; // [sp+10h] [bp-16080h]@668
- int v366; // [sp+14h] [bp-1607Ch]@52
- char v367; // [sp+14h] [bp-1607Ch]@54
- char v368; // [sp+14h] [bp-1607Ch]@218
- int v369; // [sp+14h] [bp-1607Ch]@351
- int v370; // [sp+14h] [bp-1607Ch]@525
- int v371; // [sp+14h] [bp-1607Ch]@598
- char *v372; // [sp+14h] [bp-1607Ch]@644
- int v373; // [sp+14h] [bp-1607Ch]@668
- char v374[16]; // [sp+18h] [bp-16078h]@1
- ARENA *a5[2]; // [sp+28h] [bp-16068h]@63
- int v376; // [sp+30h] [bp-16060h]@69
- int v377; // [sp+34h] [bp-1605Ch]@61
- char ExitCode[7]; // [sp+38h] [bp-16058h]@233
- char v379; // [sp+3Fh] [bp-16051h]@420
- size_t Size; // [sp+40h] [bp-16050h]@69
- int v381; // [sp+44h] [bp-1604Ch]@233
- int v382; // [sp+48h] [bp-16048h]@69
- int v383; // [sp+4Ch] [bp-16044h]@69
- char v384; // [sp+50h] [bp-16040h]@527
- __int16 v385; // [sp+51h] [bp-1603Fh]@527
- int v386; // [sp+53h] [bp-1603Dh]@527
- int v387; // [sp+57h] [bp-16039h]@527
- __int16 v388; // [sp+5Bh] [bp-16035h]@527
- char v389[3]; // [sp+5Dh] [bp-16033h]@527
- int v390; // [sp+60h] [bp-16030h]@233
- char array1[32]; // [sp+64h] [bp-1602Ch]@157
- char array2[256]; // [sp+84h] [bp-1600Ch]@52
- char Dest[256]; // [sp+184h] [bp-15F0Ch]@69
- char Str1[64]; // [sp+284h] [bp-15E0Ch]@153
- char AppName[64]; // [sp+2C4h] [bp-15DCCh]@76
- char buf[512]; // [sp+304h] [bp-15D8Ch]@45
- char StartupInfo[256]; // [sp+504h] [bp-15B8Ch]@163
- char v398[512]; // [sp+604h] [bp-15A8Ch]@741
- char v399[8192]; // [sp+804h] [bp-1588Ch]@638
- char v400[80000]; // [sp+2804h] [bp-1388Ch]@543
- int v401; // [sp+16084h] [bp-Ch]@1
- int (*v402)(); // [sp+16088h] [bp-8h]@1
- int v403; // [sp+1608Ch] [bp-4h]@1
- const char *Buf1b; // [sp+160A0h] [bp+10h]@485
- const char *Buf1a; // [sp+160A0h] [bp+10h]@489
- v403 = -1;
- v402 = sub_4288DE;
- v401 = a1;
- v7 = alloca(0x1605Cu);
- v8 = ChatText;
- v9 = player;
- *(_QWORD *)v374 = a2;
- if ( player && player->isModerator && *ChatText == '8' || strlen(ChatText) > 0xFA )
- return;
- v10 = arenaPlayerIndex;
- SomethingWithSendingChatTypes(player, a4, arenaPlayerIndex, (int)ChatText, a7);
- if ( player )
- {
- v11 = 0;
- if ( arenaPlayerIndex >= 0 && arenaPlayerIndex < 1024 )
- v11 = ZonePlayerList[arenaPlayerIndex];
- v12 = BillingLogMessages;
- if ( BillingLogMessages <= player->Extra2 )
- v12 = player->Extra2;
- if ( v11 && v11->Extra2 )
- {
- if ( v12 )
- {
- LABEL_17:
- v13 = -1;
- switch ( a4 )
- {
- case 9:
- v13 = -4;
- break;
- case 3:
- v13 = -2;
- break;
- case 5:
- if ( v11 )
- v13 = v11->UserId;
- break;
- case 4:
- v13 = -3;
- break;
- default:
- break;
- }
- if ( v12 == 3
- || v12 == 2 && (a4 == 3 || a4 == 4 || a4 == 5 || a4 == 9 || *ChatText == '*')
- || v12 == 1 && (a4 == 5 || *ChatText == '*') )
- {
- v14 = player->UserId;
- if ( v14 >= 0 )
- {
- if ( BillingConnectionStructPointer )
- SendBillerUnknownPacket(v14, v13, ChatText);
- }
- }
- goto LABEL_36;
- }
- if ( *ChatText != '*' )
- v12 = 1;
- }
- if ( !v12 )
- goto LABEL_36;
- goto LABEL_17;
- }
- LABEL_36:
- v15 = *ChatText;
- if ( *ChatText == '*' )
- {
- if ( player )
- {
- if ( !player->isModerator )
- goto LABEL_460;
- v8 = ChatText;
- v10 = arenaPlayerIndex;
- if ( player )
- {
- if ( !player->isSuperModerator )
- goto LABEL_311;
- if ( player && !player->isSysop )
- {
- LABEL_187:
- if ( !_memicmp(ChatText, "*szone", 6u) && player )
- {
- v94 = ChatText + 6;
- if ( ChatText[6] == ' ' )
- v94 = ChatText + 7;
- if ( *v94 == '_' )
- *v94 = ' ';
- if ( player->isSysop || *v94 != '*' || !_memicmp(v94, "*permit", 7u) || !_memicmp(v94, "*revoke", 7u) )
- {
- strcpy(&buf[2], v94);
- buf[1] = a7;
- buf[0] = 2;
- if ( BillingConnectionStructPointer )
- SendBillerZoneRevokePermitPacket(player->BillerPlayerId, BillingScoreId, buf, strlen(v94) + 3);
- }
- return;
- }
- if ( !_memicmp(ChatText, "*zone", 5u) )
- {
- v95 = ChatText[5];
- v96 = ChatText + 5;
- ChatText += 5;
- if ( v95 == ' ' )
- {
- do
- v97 = (v96++)[1];
- while ( v97 == ' ' );
- ChatText = v96;
- }
- if ( player )
- {
- v98 = player->MyArena;
- if ( v98 )
- FormatMessageArena(v98, "%s\n", v96);
- }
- if ( *v96 == '_' )
- *v96 = ' ';
- strcpy(&buf[5], v96);
- buf[2] = a7;
- buf[0] = 7;
- buf[1] = 0;
- *(_WORD *)&buf[3] = -1;
- v99 = strlen(v96) + 1;
- v100 = 0;
- if ( ZonePlayerCount > 0 )
- {
- v101 = playerPointerList;
- do
- {
- if ( (*v101)->MyArena )
- SendPlayerReliablePacket(*v101, buf, v99 - 1 + 6, 1);
- ++v100;
- ++v101;
- }
- while ( v100 < ZonePlayerCount );
- }
- goto LABEL_311;
- }
- if ( _memicmp(ChatText, "*where", 6u) )
- {
- v102 = 0;
- }
- else
- {
- v102 = 0;
- if ( player )
- {
- if ( a4 != 5 || (v103 = ZonePlayerList[arenaPlayerIndex]) == 0 )
- goto LABEL_311;
- v104 = v103->YPixels;
- v105 = (int)v103->PlayerName;
- v106 = 10 * (((BYTE4(v104) & 0xF) + (signed int)v104) >> 4);
- v107 = (((WORD2(v106) & 0x1FF) + (signed int)v106) >> 9) + 1;
- v108 = 10 * *(_WORD *)(v105 - 443) / 16;
- sprintf(AppName, "%s: %c%d", v105, (((WORD2(v108) & 0x1FF) + (signed int)v108) >> 9) + 65, v107);
- v368 = 0;
- v360 = AppName;
- goto LABEL_310;
- }
- }
- if ( !_memicmp(ChatText, "*info", 5u) && player != (PLAYER *)v102 )
- {
- if ( a4 != 5 || (v109 = ZonePlayerList[arenaPlayerIndex], v109 == (PLAYER *)v102) )
- goto LABEL_311;
- v110 = v109->DemoPlayer != v102;
- v111 = v109->Frequency;
- v112 = v109->TimeZoneBias;
- v113 = GetIPAddressString((struct in_addr)v109->IPAddressDWORD);
- sprintf(
- array2,
- "IP:%s TimeZoneBias:%d Freq:%d TypedName:%s Demo:%d",
- v113,
- v112,
- v111,
- v109->TypedName,
- v110);
- if ( player->isSysop != v102 )
- sprintf(&array2[strlen(array2)], " MachineId:%d", v109->MachineId);
- SendArenaMessage(player, array2, v102);
- v114 = player->MyArena;
- if ( v114->ServersideArenaSettings.KingDeathCount > v102 )
- {
- sprintf(
- array2,
- "DeathsLeft:%d KillsNeeded:%d",
- v109->KotHDeathCount,
- v114->ServersideArenaSettings.KingCrownRecoverKills - v109->KingCrownKills);
- SendArenaMessage(player, array2, v102);
- }
- sprintf(
- array2,
- "Ping:%dms LowPing:%dms HighPing:%dms AvePing:%dms",
- 10 * v109->CurrentPing,
- 10 * v109->LowPing,
- 10 * v109->HighPing,
- 10 * v109->AveragePing);
- SendArenaMessage(player, array2, v102);
- sprintf(
- array2,
- "S2CAveLatency:%dms C2SAveLatency:%dms",
- v109->S2CAverageLatency,
- 10 * v109->C2SAverageLatencyFirst / (v109->C2SAverageLatencySecond + 1));
- v115 = v109->SecurityWeaponCountTotal;
- v116 = 1000;
- if ( v115 > 200 )
- v116 = 1000 * v109->SecurityWeaponCount / v115;
- v376 = 1000 - v116;
- sub_41CB70((int)&v109->encryptionPointer->ConnectionStatus, (int)&a5[1], (int)&v377);
- a5[1] = (ARENA *)(1000 - (unsigned int)a5[1]);
- v117 = v109->encryptionPointer;
- v377 = 1000 - v377;
- v118 = GetBillingServerRelOut(v117, (int)&v383);
- sprintf(
- array2,
- "LOSS: S2C:%.1f%% C2S:%.1f%%",
- (double)*(signed int *)&a5[1] * dword_429008,
- (double)v377 * dword_429008);
- if ( player->isSysop != v102 )
- sprintf(
- &array2[strlen(array2)],
- " S2CWeapons:%.1f%% S2C_RelOut:%d(%d)",
- (double)v376 * dword_429008,
- v118,
- v383);
- SendArenaMessage(player, array2, v102);
- if ( player->isSuperModerator != v102 )
- {
- sub_41CB90(
- (int)&v109->encryptionPointer->ConnectionStatus,
- (int)&v390,
- (int)&v376,
- (int)&Size,
- (int)&v382);
- sprintf(array2, "S2C:%d-->%d C2S:%d-->%d", v390, v382, Size, v376);
- SendArenaMessage(player, array2, v102);
- v119 = v109->C2SCurrentFast;
- v120 = v109->C2SCurrentSlow;
- *(double *)&v121 = 0.0;
- a5[0] = 0;
- v381 = v120;
- *(_DWORD *)ExitCode = v120 + v119;
- if ( v120 + v119 > v102 )
- *(float *)a5 = (double)v381 * 100.0 / (double)*(signed int *)ExitCode;
- v122 = v109->C2SCurrentTotalSlow;
- v123 = v109->C2SCurrentTotalFast;
- *(_DWORD *)ExitCode = v122;
- v381 = v123 + v122;
- if ( v123 + v122 > 0 )
- *(double *)&v121 = (double)*(signed int *)ExitCode * 100.0 / (double)v381;
- sprintf(
- array2,
- "C2S CURRENT: Slow:%d Fast:%d %.1f%% TOTAL: Slow:%d Fast:%d %.1f%%",
- v120,
- v119,
- *(float *)a5,
- v122,
- v123,
- v121,
- v121 >> 32);
- SendArenaMessage(player, array2, 0);
- v124 = *(_WORD *)&v109->gap_12B[25];
- *(double *)&v125 = 0.0;
- v126 = *(_WORD *)&v109->gap_12B[27];
- a5[0] = 0;
- *(_DWORD *)ExitCode = v124;
- v381 = v126 + v124;
- if ( v126 + v124 > 0 )
- *(float *)a5 = (double)*(signed int *)ExitCode * 100.0 / (double)v381;
- v127 = *(_DWORD *)&v109->gap_12B[21];
- v128 = *(_DWORD *)&v109->gap_12B[17];
- *(_DWORD *)ExitCode = v128;
- v381 = v128 + v127;
- if ( v128 + v127 > 0 )
- *(double *)&v125 = (double)*(signed int *)ExitCode * 100.0 / (double)v381;
- sprintf(
- array2,
- "S2C CURRENT: Slow:%d Fast:%d %.1f%% TOTAL: Slow:%d Fast:%d %.1f%%",
- v124,
- v126,
- *(float *)a5,
- v128,
- v127,
- v125,
- v125 >> 32);
- v102 = 0;
- SendArenaMessage(player, array2, 0);
- }
- HIDWORD(v129) = v109->TotalUsageSeconds2;
- LODWORD(v129) = time((time_t *)v102);
- v130 = (signed __int64)difftime(v129, *(time_t *)v374);
- v131 = v130;
- LODWORD(v130) = (signed int)((_DWORD)v130
- + ((unsigned __int64)(18446744071705233545i64 * (signed int)v130) >> 32)) >> 5;
- sprintf(
- Dest,
- "TIME: Session:%5d:%02d:00",
- v131 / 3600,
- (signed int)(((unsigned int)v130 >> 31) + v130) % 60);
- if ( player->isSysop != v102 )
- {
- HIDWORD(v132) = v109->AccountCreationSecond;
- LODWORD(v132) = v109->AccountCreationMinute;
- v133 = v132;
- LODWORD(v132) = v109->AccountCreationYear;
- HIDWORD(v132) = v109->AccountCreationHour;
- v134 = v131 + v109->UsageTotalSeconds;
- v135 = v132;
- HIDWORD(v132) = v109->AccountCreationDay;
- LODWORD(v132) = v109->AccountCreationMonth;
- sprintf(
- &Dest[strlen(Dest)],
- " Total:%5d:%02d:00 Created: %d-%d-%d %02d:%02d:%02d",
- v134 / 3600,
- v134 / 60 % 60,
- v132,
- v135,
- v133);
- }
- SendArenaMessage(player, Dest, v102);
- if ( player->isSysop == v102 )
- goto LABEL_311;
- if ( player->MyArena->ServersideArenaSettings.MiscTimedGame > v102 )
- {
- sprintf(
- array2,
- "BEST SCORE Points:%d Win:%d Lose:%d",
- *(_DWORD *)&v109->PersonalBestPoints1of2 + *(_DWORD *)&v109->PersonalBestPoints2of2,
- v109->PersonalBestWins,
- v109->PersonalBestLosses);
- SendArenaMessage(player, array2, v102);
- }
- v136 = (int)v109->encryptionPointer;
- a5[0] = (ARENA *)v102;
- v376 = v102;
- v382 = v102;
- Size = v102;
- sub_41C9B0(v136, (int)a5, (int)&v376);
- sub_41C9D0((int)&v109->encryptionPointer->ConnectionStatus, (int)&v382, (int)&Size);
- if ( (signed int)a5[0] <= v102 )
- {
- if ( v382 <= v102 )
- goto LABEL_311;
- }
- sprintf(array2, "Async C2S:%d of %d S2C:%d of %d", v376, a5[0], Size, v382);
- v368 = v102;
- v360 = array2;
- goto LABEL_310;
- }
- if ( _memicmp(ChatText, "*getlist", 8u) || player == (PLAYER *)v102 )
- {
- if ( _memicmp(ChatText, "*putlist", 8u) || player == (PLAYER *)v102 )
- {
- if ( _memicmp(ChatText, "*getmodlist", 0xBu) || player == (PLAYER *)v102 )
- {
- if ( _memicmp(ChatText, "*putmodlist", 0xBu) || player == (PLAYER *)v102 )
- {
- if ( !_memicmp(ChatText, "*recycle", 8u) )
- {
- if ( player != (PLAYER *)v102 )
- SendArenaMessage(player, "Recycling Server", v102);
- RecycleServer = 1;
- goto LABEL_311;
- }
- if ( !_memicmp(ChatText, "*moderator", 0xAu) )
- {
- if ( a4 != 5 || (v137 = ZonePlayerList[arenaPlayerIndex], v137 == (PLAYER *)v102) )
- goto LABEL_311;
- v368 = v102;
- v138 = v137->isModerator == v102;// isModerator != isModerator
- v137->isModerator = v138;
- if ( v138 == v102 )
- v360 = "Player Moderator Mode OFF";
- else
- v360 = "Player Moderator Mode ON";
- goto LABEL_310;
- }
- if ( _memicmp(ChatText, "*restart", 8u) || player == (PLAYER *)v102 )
- {
- if ( !_memicmp(ChatText, "*prize", 6u) )
- {
- v139 = ChatText[6];
- v140 = ChatText + 6;
- ChatText += 6;
- if ( v139 == 32 )
- {
- do
- v141 = (v140++)[1];
- while ( v141 == 32 );
- ChatText = v140;
- }
- v142 = *v140;
- v60 = *v140 == 35;
- ExitCode[0] = 32;
- *(_WORD *)&ExitCode[3] = v102;
- *(_WORD *)&ExitCode[1] = 1;
- if ( v60 )
- {
- *(_WORD *)&ExitCode[3] = atoi(v140 + 1);
- }
- else
- {
- if ( isdigit(v142) )
- *(_WORD *)&ExitCode[1] = atoi(v140);
- }
- if ( player->isSysop == v102 )
- {
- v143 = *(_WORD *)&ExitCode[1];
- *(_WORD *)&ExitCode[1] = 100;
- if ( v143 <= 100 )
- *(_WORD *)&ExitCode[1] = v143;
- }
- if ( player != (PLAYER *)v102 )
- SendArenaMessage(player, "Granting prize(s)", v102);
- if ( a4 == 5 )
- {
- v144 = ZonePlayerList[arenaPlayerIndex];
- if ( v144 != (PLAYER *)v102 )
- {
- SendPlayerReliablePacket(v144, ExitCode, 5, 1);
- v144->field_305 = 1;
- }
- }
- else
- {
- if ( a4 == 3 )
- {
- SendReliablePacketToMyFrequency(player, ExitCode, 5, 1);
- SendPlayerReliablePacket(player, ExitCode, 5, 1);
- v145 = player->MyArena;
- v146 = 0;
- if ( v145->ArenaPlayerCount > v102 )
- {
- v147 = 16072;
- do
- {
- v148 = v145->PlayerPointers[v147];
- ++v146;
- ++v147;
- v148->field_305 = 1;
- v145 = player->MyArena;
- }
- while ( v146 < v145->ArenaPlayerCount );
- }
- }
- else
- {
- SendPlayerPacket(player->MyArena, ExitCode, 5, 1);
- v149 = player->MyArena;
- v150 = 0;
- if ( v149->ArenaPlayerCount > v102 )
- {
- v151 = 16072;
- do
- {
- v152 = v149->PlayerPointers[v151];
- ++v150;
- ++v151;
- v152->field_305 = 1;
- v149 = player->MyArena;
- }
- while ( v150 < v149->ArenaPlayerCount );
- }
- }
- }
- goto LABEL_311;
- }
- if ( _memicmp(ChatText, "*trace", 6u) || player == (PLAYER *)v102 )
- goto LABEL_311;
- if ( player->unknownIthoughtItWasPlayerPointerDupe != v102
- && GetExitCodeProcess((HANDLE)player->unknownIthoughtItWasPlayerPointerDupe, (LPDWORD)ExitCode) )
- {
- if ( *(_DWORD *)ExitCode == 259 )
- TerminateProcess((HANDLE)player->unknownIthoughtItWasPlayerPointerDupe, v102);
- CloseHandle((HANDLE)player->unknownIthoughtItWasPlayerPointerDupe);
- player->unknownIthoughtItWasPlayerPointerDupe = 0;
- player->dword4 = 0;
- player->dword8 = 0;
- player->dwordC = 0;
- }
- if ( a4 != 5 || (v153 = ZonePlayerList[arenaPlayerIndex], v153 == (PLAYER *)v102) )
- goto LABEL_311;
- v154 = GetIPAddressString((struct in_addr)v153->IPAddressDWORD);
- sprintf(array2, "SUBGAME /SPAWN tracert %s > spawn.log", v154);
- memset(StartupInfo, 0, 0x44u);
- *(_DWORD *)StartupInfo = 68;
- *(_DWORD *)&StartupInfo[12] = "Spawned TRACERT";
- CreateProcessA(
- (LPCSTR)v102,
- array2,
- (LPSECURITY_ATTRIBUTES)v102,
- (LPSECURITY_ATTRIBUTES)v102,
- v102,
- 0x20u,
- (LPVOID)v102,
- (LPCSTR)v102,
- (LPSTARTUPINFOA)StartupInfo,
- (LPPROCESS_INFORMATION)player);
- v368 = v102;
- v360 = "SPAWN STARTED";
- LABEL_310:
- SendArenaMessage(player, v360, v368);
- goto LABEL_311;
- }
- player->MyArena->GameTimePassedTwo = v102;
- }
- else
- {
- buf[0] = 25;
- strncpy(&buf[257], "moderate.txt", 0x10u);
- buf[272] = 0;
- strncpy(&buf[1], "moderate.txt", 0x100u);
- buf[256] = 0;
- SendPlayerReliablePacket(player, buf, 273, 1);
- }
- }
- else
- {
- SendArenaMessage(player, "File sent: moderate.txt (please wait...)", v102);
- sub_40E550(player, "moderate.txt");
- }
- }
- else
- {
- buf[0] = 25;
- strncpy(&buf[1], "permit.txt", 0x100u);
- buf[256] = 0;
- strncpy(&buf[257], "permit.txt", 0x10u);
- buf[272] = 0;
- SendPlayerReliablePacket(player, buf, 273, 1);
- }
- }
- else
- {
- SendArenaMessage(player, "File sent: permit.txt (please wait...)", v102);
- sub_40E550(player, "permit.txt");
- }
- LABEL_311:
- if ( _memicmp(ChatText, "*arena", 6u) )
- {
- if ( !_memicmp(ChatText, "*permit", 7u) )
- {
- v160 = ChatText[7];
- v161 = ChatText + 7;
- ChatText += 7;
- if ( v160 == 32 )
- {
- do
- v162 = (v161++)[1];
- while ( v162 == 32 );
- ChatText = v161;
- }
- if ( *v161 )
- {
- sub_407280((int)PermitPointer, v161);
- sub_407200(PermitPointer);
- if ( !player )
- return;
- sprintf(array2, "Permission Added: %s", v161);
- SendArenaMessage(player, array2, 0);
- }
- goto LABEL_460;
- }
- if ( _memicmp(ChatText, "*revoke", 7u) )
- {
- if ( _memicmp(ChatText, "*banner", 7u) || !player )
- {
- if ( _memicmp(ChatText, "*shutup", 7u) || !player )
- {
- if ( _memicmp(ChatText, "*lock", 5u) || !player )
- {
- if ( _memicmp(ChatText, "*timer", 6u) || !player )
- {
- if ( _memicmp(ChatText, "*spec", 5u) || !player )
- {
- if ( _memicmp(ChatText, "*kill", 5u) || !player )
- {
- if ( _memicmp(ChatText, "*flagreset", 0xAu) )
- {
- if ( _memicmp(ChatText, "*shipreset", 0xAu) )
- {
- if ( _memicmp(ChatText, "*scorereset", 0xBu) )
- {
- if ( _memicmp(ChatText, "*timereset", 0xAu) )
- {
- if ( _memicmp(ChatText, "*beginlog", 9u) || !player )
- {
- if ( !_memicmp(ChatText, "*endlog", 7u) )
- {
- if ( !player )
- return;
- v192 = player->pfile329;
- if ( v192 )
- {
- fprintf(v192, "Name Win Lose Points\n");
- fprintf(player->pfile329, "---------------- ----- ----- -------\n");
- v193 = player->MyArena;
- if ( v193 )
- {
- v194 = 0;
- if ( v193->ArenaPlayerCount > 0 )
- {
- v195 = 16072;
- do
- {
- v196 = v193->PlayerPointers[v195];
- fprintf(
- player->pfile329,
- "%-16.16s %5d %5d %7d\n",
- v196->Name,
- v196->CurrentWins,
- v196->CurrentLosses,
- v196->FlagPoints + v196->KillPoints);
- v193 = player->MyArena;
- ++v194;
- ++v195;
- }
- while ( v194 < v193->ArenaPlayerCount );
- }
- }
- fprintf(player->pfile329, "\nLOG FINISHED\n");
- fclose(player->pfile329);
- player->pfile329 = 0;
- sprintf(Dest, "Logging session closed, sending file: %s", &player->char32d);
- SendArenaMessage(player, Dest, 0);
- sub_40E550(player, &player->char32d);
- }
- }
- }
- else
- {
- v188 = player->pfile329;
- v189 = ChatText + 9;
- ChatText += 9;
- if ( v188 )
- fclose(v188);
- v190 = rand();
- v191 = rand();
- sprintf(&player->char32d, "SS%d.log", v191 + v190);
- player->pfile329 = fopen(&player->char32d, "wt");
- sprintf(Dest, "Logging session to: %s", &player->char32d);
- SendArenaMessage(player, Dest, 0);
- fprintf(player->pfile329, "LOG STARTED:%s\n", v189);
- }
- }
- else
- {
- if ( !player )
- return;
- v187 = player->MyArena;
- if ( v187 )
- {
- if ( v187->ServersideArenaSettings.MiscTimedGame <= 0 )
- SendArenaMessage(player, "Invalid command, this is not a timed game", 0);
- else
- sub_405360(v187, 1);
- }
- }
- }
- else
- {
- if ( a4 == 5 )
- {
- if ( player )
- SendArenaMessage(player, "Player score reset", 0);
- v186 = ZonePlayerList[arenaPlayerIndex];
- if ( v186 )
- SendResetScoresPacket(v186);
- }
- else
- {
- if ( !player )
- return;
- ArenaScoreReset(player->MyArena, 1);
- }
- }
- }
- else
- {
- v379 = 27;
- if ( a4 == 5 )
- {
- if ( player )
- SendArenaMessage(player, "Player ship reset", 0);
- v183 = ZonePlayerList[arenaPlayerIndex];
- if ( v183 )
- SendPlayerReliablePacket(v183, &v379, 1, 1);
- }
- else
- {
- if ( player )
- {
- SendArenaMessage(player, "All ships reset", 0);
- SendPlayerPacket(player->MyArena, &v379, 1, 1);
- }
- else
- {
- v184 = 0;
- if ( ZonePlayerCount > 0 )
- {
- v185 = playerPointerList;
- do
- {
- if ( (*v185)->MyArena )
- SendPlayerReliablePacket(*v185, &v379, 1, 1);
- ++v184;
- ++v185;
- }
- while ( v184 < ZonePlayerCount );
- }
- }
- }
- }
- }
- else
- {
- if ( player )
- {
- SendArenaMessage(player, "Flag game being reset", 0);
- v180 = player->MyArena;
- if ( v180 )
- FlagUpdateSomething(v180);
- }
- else
- {
- v181 = 0;
- if ( ArenaArrayLength > 0 )
- {
- v182 = Arenas;
- do
- {
- FlagUpdateSomething(*v182);
- ++v181;
- ++v182;
- }
- while ( v181 < ArenaArrayLength );
- }
- }
- }
- }
- else
- {
- if ( a4 == 5 )
- {
- v175 = ZonePlayerList[arenaPlayerIndex];
- if ( v175 )
- {
- if ( player->isSysop || !v175->isSuperModerator )
- {
- v175->DisconnectReason = 4;
- v175->AlreadySentReliablePacket = 1;
- WriteSubGameLog("Player kicked off by moderator: %s\n", v175->Name);
- SendArenaMessage(player, "Player kicked off", 0);
- if ( ChatText[5] == 32 )
- {
- v176 = atoi(ChatText + 6);
- if ( v176 > 0 )
- {
- v177 = MachineIdArrayIndex;
- if ( MachineIdArrayIndex < 1000 )
- {
- KickedUsers[MachineIdArrayIndex].MachineId = v175->MachineId;
- v178 = v177;
- KickedUsers[v177].KickStartTime = GetTickCount() / 0xA;
- v179 = MachineIdArrayIndex + 1;
- KickedUsers[v178].KickDelayMilliseconds = 6000 * v176;
- MachineIdArrayIndex = v179;
- }
- }
- }
- }
- else
- {
- SendArenaMessage(v175, "Moderator attempted to kick you off", 0);
- }
- }
- }
- }
- }
- else
- {
- if ( a4 == 5 )
- {
- v173 = ZonePlayerList[arenaPlayerIndex];
- if ( v173 )
- {
- if ( player->isSysop || !v173->isSuperModerator )
- {
- if ( v173->Ship != 8 )
- SetPlayerShip(v173, 8);
- v174 = v173->IsSpeced;
- v173->IsSpeced = v174 == 0;
- if ( v174 )
- SendArenaMessage(player, "Player free to enter arena", 0);
- else
- SendArenaMessage(player, "Player locked in spectator mode", 0);
- }
- }
- }
- }
- }
- else
- {
- v170 = ChatText[6];
- v171 = ChatText + 6;
- ChatText += 6;
- if ( v170 == 32 )
- {
- do
- v172 = (v171++)[1];
- while ( v172 == 32 );
- ChatText = v171;
- }
- if ( *v171 )
- {
- player->MyArena->GameTimeStart = 6000 * atoi(v171);
- player->MyArena->GameTimePassed = GetTickCount() / 0xA;
- player->MyArena->field_FF56 = 0;
- }
- }
- }
- else
- {
- if ( player->MyArena )
- {
- if ( _memicmp(ChatText, "*lockpublic", 0xBu) )
- {
- if ( _memicmp(ChatText, "*lockteam", 9u) )
- {
- if ( _memicmp(ChatText, "*lockprivate", 0xCu) )
- {
- if ( _memicmp(ChatText, "*lockall", 8u) )
- {
- if ( _memicmp(ChatText, "*lockspec", 9u) )
- {
- if ( !ChatText[5] )
- {
- player->MyArena->ArenaLocked = player->MyArena->ArenaLocked == 0;
- if ( player->MyArena->ArenaLocked )
- SendArenaMessage(player, "Arena LOCKED", 0);
- else
- SendArenaMessage(player, "Arena UNLOCKED", 0);
- }
- }
- else
- {
- player->MyArena->SpecMessageLock = player->MyArena->SpecMessageLock == 0;
- if ( player->MyArena->SpecMessageLock )
- SendArenaMessage(player, "Message lock applies to spectators only.", 0);
- else
- SendArenaMessage(player, "Message lock applies to everybody.", 0);
- }
- }
- else
- {
- player->MyArena->AllMessagesLocked = player->MyArena->AllMessagesLocked == 0;
- player->MyArena->AllMessagesLockedAgainSomething = player->MyArena->AllMessagesLocked;
- if ( player->MyArena->AllMessagesLocked )
- SendArenaMessage(player, "All Messages LOCKED", 0);
- else
- SendArenaMessage(player, "All Messages UNLOCKED", 0);
- }
- }
- else
- {
- player->MyArena->PrivateMessagesLocked = player->MyArena->PrivateMessagesLocked == 0;
- if ( player->MyArena->PrivateMessagesLocked )
- SendArenaMessage(player, "Private Messages LOCKED", 0);
- else
- SendArenaMessage(player, "Private Messages UNLOCKED", 0);
- }
- }
- else
- {
- player->MyArena->AllMessagesLocked = player->MyArena->AllMessagesLocked == 0;
- if ( player->MyArena->AllMessagesLocked )
- SendArenaMessage(player, "Team Messages LOCKED", 0);
- else
- SendArenaMessage(player, "Team Messages UNLOCKED", 0);
- }
- }
- else
- {
- player->MyArena->AllMessagesLocked = player->MyArena->AllMessagesLocked == 0;
- if ( player->MyArena->AllMessagesLocked )
- SendArenaMessage(player, "Public Messages LOCKED", 0);
- else
- SendArenaMessage(player, "Public Messages UNLOCKED", 0);
- }
- }
- }
- }
- else
- {
- if ( a4 == 5 )
- {
- v168 = ZonePlayerList[arenaPlayerIndex];
- if ( v168 )
- {
- if ( v168->isSysop || v168->isSuperModerator && !player->isSysop )
- {
- sprintf(Dest, "%s tried to shut you up", player->Name);
- SendArenaMessage(v168, Dest, 0);
- }
- else
- {
- v169 = v168->IsSilenced;
- v168->IsSilenced = v169 == 0;
- if ( v169 )
- {
- v369 = (int)v168->Name;
- v361 = "%s can now speak";
- v354 = Dest;
- }
- else
- {
- v369 = (int)v168->Name;
- v361 = "%s has been silenced";
- v354 = Dest;
- }
- sprintf(v354, v361, v369);
- SendArenaMessage(player, Dest, 0);
- }
- }
- }
- }
- }
- else
- {
- player->dword30 = 1;
- v167 = player->PlayerId;
- Dest[0] = 31;
- *(_WORD *)&Dest[1] = v167;
- memcpy(&Dest[3], player->BannerData, 0x60u);
- SendPlayerPacket(player->MyArena, Dest, 99, 1);
- }
- goto LABEL_460;
- }
- v163 = ChatText[7];
- v164 = ChatText + 7;
- ChatText += 7;
- if ( v163 == 32 )
- {
- do
- v165 = (v164++)[1];
- while ( v165 == 32 );
- ChatText = v164;
- }
- if ( *v164 )
- {
- if ( strcmp(v164, "*") )
- {
- v166 = IsBannedMachineId((int)PermitPointer, (int)v164);
- if ( v166 >= 0 )
- ListMachineSomething((int)PermitPointer, v166);
- }
- else
- {
- sub_407060(PermitPointer);
- }
- sub_407200(PermitPointer);
- if ( !player )
- return;
- SendArenaMessage(player, "Permission revoked", 0);
- }
- LABEL_460:
- if ( player )
- {
- v197 = ChatText + 1;
- v198 = _strcmpi(ChatText + 1, SysopPassword);
- if ( v198 && v198 )
- {
- v199 = 1;
- }
- else
- {
- WriteSubGameLog("%s> SYSOP LOGGED IN\n", player->Name);
- v199 = 1;
- player->isSysop = 1;
- player->isModerator = 1;
- player->isSuperModerator = 1;
- }
- if ( !_strcmpi(v197, SuperModeratorPassword) )
- {
- WriteSubGameLog("%s> SUPER MODERATOR LOGGED IN\n", player->Name);
- player->isModerator = v199;
- player->isSuperModerator = v199;
- }
- if ( !_strcmpi(v197, ModeratorPassword) )
- {
- WriteSubGameLog("%s> MODERATOR LOGGED IN\n", player->Name);
- player->isModerator = v199;
- }
- if ( !_strcmpi(v197, EnergyPassword) )
- {
- WriteSubGameLog("%s> ENERGY VIEWING TURNED ON/OFF\n", player->Name);
- if ( player->MyArena )
- {
- v200 = player->isEnergyShowing;
- player->isEnergyShowing = v200 == 0;
- if ( v200 )
- SendArenaMessage(player, "Showing Energy OFF", 0);
- else
- SendArenaMessage(player, "Showing Energy ON", 0);
- }
- }
- }
- return;
- }
- v155 = ChatText[6];
- v156 = ChatText + 6;
- ChatText += 6;
- if ( v155 == 32 )
- {
- do
- v157 = (v156++)[1];
- while ( v157 == 32 );
- ChatText = v156;
- }
- if ( *v156 == 95 )
- *v156 = 32;
- if ( player )
- {
- v158 = player->MyArena;
- if ( v158 )
- FormatMessageArena(v158, "%s\n", v156);
- }
- buf[2] = a7;
- strcpy(&buf[5], ChatText);
- buf[0] = 7;
- buf[1] = 0;
- *(_WORD *)&buf[3] = -1;
- v159 = strlen(ChatText) + 1;
- if ( player )
- {
- SendPlayerPacket(player->MyArena, buf, v159 + 5, 1);
- goto LABEL_460;
- }
- return;
- }
- }
- }
- if ( !_memicmp(v8, "**", 2u) && player )
- {
- v16 = v8 + 2;
- buf[1] = a7;
- strcpy(&buf[2], v16);
- buf[0] = 2;
- if ( BillingConnectionStructPointer )
- SendBillerUserPrivateChatPacket(player->BillerPlayerId, BillingGroupId, buf, strlen(v16) + 3);
- return;
- }
- if ( _memicmp(v8, "*energy", 7u) || !player )
- {
- if ( !_memicmp(v8, "*stat", 5u) && player )
- {
- v21 = GetTickCount();
- v22 = v21 / 0xA - oldTickCountValue;
- v377 = v21 / 0xA - oldTickCountValue;
- if ( v377 <= 0 )
- {
- v22 = 1;
- v377 = 1;
- }
- v23 = player->MyArena;
- v24 = 0;
- a5[0] = 0;
- v25 = v23->ArenaPlayerCount;
- if ( v25 > 0 )
- {
- v26 = 0;
- if ( v25 > 0 )
- {
- v27 = 16072;
- do
- {
- v28 = GetBillingServerRelOut(v23->PlayerPointers[v27]->encryptionPointer, 0);
- ++v27;
- v29 = (ARENA *)((char *)a5[0] + v28);
- v23 = player->MyArena;
- a5[0] = v29;
- ++v26;
- }
- while ( v26 < v23->ArenaPlayerCount );
- v24 = a5[0];
- }
- a5[0] = (ARENA *)(10 * (signed int)v24 / player->MyArena->ArenaPlayerCount);
- }
- sub_41B3F0((int)dword_437B08, (int)&v383, (int)&a5[1], (int)&v382, (int)&Size, (int)&v376);
- sprintf(
- Dest,
- "Send:%d(%d) Recv:%d(%d) RelOut:%.1f Multi:%.1f\n",
- 100 * v383 / v22,
- (signed int)(100 * (unsigned int)a5[1]) / v22,
- 100 * v382 / v22,
- (signed int)(100 * Size) / v22,
- (double)*(signed int *)a5 * dword_429008,// 0.1
- (double)v376 * seg_429000 / (double)v377);// 100.0
- SendArenaMessage(player, Dest, 0);
- v30 = 0;
- if ( dword_4AC43C )
- v30 = GetBillingServerRelOut((ENCRYPTION *)dword_4AC43C, 0);
- sprintf(
- Dest,
- "Iterations:%d Players:%d BillingRelOut:%d Wave:%d\n",
- 100 * ServerIterations / v22,
- ZonePlayerCount,
- v30,
- 100 * Wave / v22);
- SendArenaMessage(player, Dest, 0);
- sprintf(
- Dest,
- "Screen:%d Radar:%d Double:%d Timer:%d\n",
- 100 * ScreenValue / v22,
- 100 * RadarValue / v22,
- 100 * DoubleValue / v22,
- v22 / 100);
- SendArenaMessage(player, Dest, 0);
- v31 = 0;
- v32 = 0;
- if ( ArenaArrayLength > 0 )
- {
- v377 = (int)Arenas;
- do
- {
- v31 += GetArenaMemoryTotal(*(ARENA **)v377);
- ++v32;
- v377 += 4;
- }
- while ( v32 < ArenaArrayLength );
- }
- sprintf(Dest, "MemoryUsage:%dk\n", v31);
- SendArenaMessage(player, Dest, 0);
- v33 = 0;
- Dest[0] = 0;
- v377 = 0;
- do
- {
- v34 = SomeArrayOf256_1[v33];
- if ( v34 )
- {
- sprintf(AppName, "%d:%d(%d) ", v33, 100 * SomeArrayOf256_2[v33] / v22, 100 * v34 / v22);
- if ( strlen(AppName) + strlen(Dest) > 0x4B )
- {
- SendArenaMessage(player, Dest, 0);
- Dest[0] = 0;
- }
- v35 = AppName;
- v36 = -1;
- do
- {
- if ( !v36 )
- break;
- v60 = *v35++ == 0;
- --v36;
- }
- while ( !v60 );
- v37 = ~v36;
- v38 = &v35[-v37];
- v39 = Dest;
- v40 = v37;
- v41 = -1;
- do
- {
- if ( !v41 )
- break;
- v60 = *v39++ == 0;
- --v41;
- }
- while ( !v60 );
- memcpy(v39 - 1, v38, v40);
- v33 = v377;
- }
- ++v33;
- v377 = v33;
- }
- while ( v33 < 256 );
- if ( !Dest[0] )
- goto LABEL_187;
- v367 = 0;
- v359 = Dest;
- goto LABEL_186;
- }
- if ( !_memicmp(v8, "*addword", 8u) )
- {
- v42 = v8[8];
- v43 = v8 + 8;
- ChatText = v43;
- if ( v42 == 32 )
- {
- do
- v44 = (v43++)[1];
- while ( v44 == 32 );
- ChatText = v43;
- }
- if ( !*v43 || (sub_407280((int)ObscenePointer, v43), sub_407200(ObscenePointer), !player) )
- goto LABEL_187;
- sprintf(array2, "Obscene Word Added: %s", v43);
- v367 = 0;
- v359 = array2;
- goto LABEL_186;
- }
- if ( _memicmp(v8, "*addmachine", 0xBu) )
- {
- if ( !_memicmp(v8, "*removemachine", 0xEu) )
- {
- v48 = v8[14];
- v49 = v8 + 14;
- ChatText = v49;
- if ( v48 == 32 )
- {
- do
- v50 = (v49++)[1];
- while ( v50 == 32 );
- ChatText = v49;
- }
- if ( !*v49 )
- goto LABEL_187;
- v51 = 0;
- v377 = ListMachine((int)IDBlockPointer);
- if ( v377 > 0 )
- {
- do
- {
- v52 = (const char *)ListMachineByIndex((int)IDBlockPointer, v51);
- v53 = strlen(v52) + 1;
- v54 = strlen(ChatText) + 1;
- v55 = ChatText;
- if ( v54 - 1 >= v53 - 1 )
- v55 = v52;
- v56 = strlen(v55) + 1;
- v57 = ChatText;
- v58 = v52;
- v59 = v56 - 1;
- v60 = 1;
- do
- {
- if ( !v59 )
- break;
- v60 = *v57++ == *v58++;
- --v59;
- }
- while ( v60 );
- if ( v60 )
- {
- ListMachineSomething((int)IDBlockPointer, v51);
- --v377;
- }
- else
- {
- ++v51;
- }
- }
- while ( v51 < v377 );
- }
- sub_407200(IDBlockPointer);
- if ( !player )
- goto LABEL_187;
- v367 = 0;
- v359 = "MachineId Block Removed";
- goto LABEL_186;
- }
- if ( !_memicmp(v8, "*listmachine", 0xCu) && player )
- {
- v61 = ListMachine((int)IDBlockPointer);
- for ( i = 0; i < v61; ++i )
- {
- v63 = (const char *)ListMachineByIndex((int)IDBlockPointer, i);
- SendArenaMessage(player, v63, 0);
- }
- goto LABEL_187;
- }
- if ( !_memicmp(v8, "*log", 4u) && player )
- {
- v64 = 0;
- do
- {
- if ( LogArray[256 * (v64 + CurrentLogLine) % 48] )
- SendArenaMessage(player, &LogArray[256 * (v64 + CurrentLogLine) % 48], 0);
- ++v64;
- }
- while ( v64 < 48 );
- goto LABEL_187;
- }
- if ( !_memicmp(v8, "*shutdown", 9u) )
- {
- if ( player )
- SendArenaMessage(player, "Shutting down server...", 0);
- printf("Shutting down server...\n");
- v65 = v8 + 9;
- RecycleServer = 1;
- IsServerRunning = 1;
- ShutdownArguments = 0;
- ChatText = v65;
- if ( *v65 == 32 )
- {
- ++v65;
- ChatText = v65;
- }
- if ( *v65 )
- strcpy(&ShutdownArguments, v65);
- goto LABEL_187;
- }
- if ( !_memicmp(v8, "*sysop", 6u) )
- {
- if ( a4 != 5 || (v66 = ZonePlayerList[v10]) == 0 )
- goto LABEL_187;
- v67 = v66->isSysop;
- v68 = v67 == 0;
- v66->isSysop = v68;
- v66->isSuperModerator = v68;
- v66->isModerator = v68;
- v367 = 0;
- if ( v67 )
- v359 = "Player Sysop Mode OFF";
- else
- v359 = "Player Sysop Mode ON";
- goto LABEL_186;
- }
- if ( !_memicmp(v8, "*smoderator", 0xBu) )
- {
- if ( a4 != 5 || (v69 = ZonePlayerList[v10]) == 0 )
- goto LABEL_187;
- v70 = v69->isSuperModerator;
- v71 = v70 == 0;
- v69->isSuperModerator = v71;
- v69->isModerator = v71;
- v367 = 0;
- if ( v70 )
- v359 = "Player Super Moderator Mode OFF";
- else
- v359 = "Player Super Moderator Mode ON";
- goto LABEL_186;
- }
- if ( _memicmp(v8, "*s*", 3u) && _memicmp(v8, "*g*", 3u) )
- {
- if ( _memicmp(v8, "*set ", 5u) )
- goto LABEL_187;
- v72 = v8[5];
- v73 = (int)(v8 + 5);
- for ( j = Str1; v72; ++v73 )
- {
- if ( v72 == 58 )
- break;
- *j = v72;
- v72 = *(_BYTE *)(v73 + 1);
- ++j;
- }
- v75 = *(_BYTE *)v73;
- *j = 0;
- if ( !v75 )
- return;
- v76 = *(_BYTE *)(v73 + 1);
- v77 = v73 + 1;
- for ( k = array1; v76; ++v77 )
- {
- if ( v76 == 58 )
- break;
- *k = v76;
- v76 = *(_BYTE *)(v77 + 1);
- ++k;
- }
- v79 = *(_BYTE *)v77;
- *k = 0;
- if ( !v79 )
- return;
- v80 = *(_BYTE *)(v77 + 1);
- v81 = v77 + 1;
- for ( l = Dest; v80; ++v81 )
- {
- *l = v80;
- v80 = *(_BYTE *)(v81 + 1);
- ++l;
- }
- *l = 0;
- GetModuleFileNameA(0, StartupInfo, 256u);
- v83 = strrchr(StartupInfo, 92);
- if ( v83 )
- *v83 = 0;
- else
- StartupInfo[0] = 0;
- sprintf(array2, "%s\\server.cfg", StartupInfo);
- if ( _strcmpi(Str1, "All") )
- {
- WritePrivateProfileStringA(Str1, array1, Dest, array2);
- }
- else
- {
- WritePrivateProfileStringA("Warbird", array1, Dest, array2);
- WritePrivateProfileStringA("Javelin", array1, Dest, array2);
- WritePrivateProfileStringA("Spider", array1, Dest, array2);
- WritePrivateProfileStringA("Leviathan", array1, Dest, array2);
- WritePrivateProfileStringA("Weasel", array1, Dest, array2);
- WritePrivateProfileStringA("Terrier", array1, Dest, array2);
- WritePrivateProfileStringA("Lancaster", array1, Dest, array2);
- WritePrivateProfileStringA("Shark", array1, Dest, array2);
- }
- if ( !player )
- goto LABEL_187;
- v367 = 0;
- v359 = "Change complete";
- goto LABEL_186;
- }
- v84 = v8[3];
- v85 = (int)(v8 + 3);
- for ( m = Str1; v84; ++v85 )
- {
- if ( v84 == 58 )
- break;
- *m = v84;
- v84 = *(_BYTE *)(v85 + 1);
- ++m;
- }
- v87 = *(_BYTE *)v85;
- *m = 0;
- if ( !v87 )
- return;
- v88 = *(_BYTE *)(v85 + 1);
- v89 = v85 + 1;
- for ( n = array1; v88; ++v89 )
- {
- if ( v88 == 58 )
- break;
- *n = v88;
- v88 = *(_BYTE *)(v89 + 1);
- ++n;
- }
- *n = 0;
- if ( !_memicmp(v8, "*s*", 3u) )
- {
- if ( !*(_BYTE *)v89 )
- return;
- v91 = *(_BYTE *)(v89 + 1);
- v92 = v89 + 1;
- for ( ii = AppName; v91; ++v92 )
- {
- *ii = v91;
- v91 = *(_BYTE *)(v92 + 1);
- ++ii;
- }
- *ii = 0;
- WritePrivateProfileStringA(Str1, array1, AppName, FileName);
- dword_4D5920 = 1;
- }
- if ( !player )
- goto LABEL_187;
- GetPrivateProfileStringA(Str1, array1, "InvalidTag", StartupInfo, 64u, FileName);
- sprintf(Dest, "%s:%s:%s", Str1, array1, StartupInfo);
- v19 = Dest;
- v367 = 0;
- }
- else
- {
- v45 = v8[11];
- v46 = v8 + 11;
- ChatText = v46;
- if ( v45 == 32 )
- {
- do
- v47 = (v46++)[1];
- while ( v47 == 32 );
- ChatText = v46;
- }
- if ( !*v46 || (sub_407280((int)IDBlockPointer, v46), sub_407200(IDBlockPointer), !player) )
- goto LABEL_187;
- sprintf(array2, "MachineId Block Added: %s", v46);
- v19 = array2;
- v367 = 0;
- }
- }
- else
- {
- if ( a4 != 5 )
- {
- if ( !player->MyArena )
- goto LABEL_187;
- v20 = player->isEnergyShowing;
- player->isEnergyShowing = v20 == 0;
- v367 = 0;
- if ( v20 )
- v359 = "Showing Energy OFF";
- else
- v359 = "Showing Energy ON";
- goto LABEL_186;
- }
- v17 = ZonePlayerList[v10];
- if ( !v17 )
- goto LABEL_187;
- v18 = v17->isEnergyShowing;
- v17->isEnergyShowing = v18 == 0;
- if ( v18 )
- {
- v366 = (int)v17->Name;
- v358 = "Showing Energy OFF for %s";
- v353 = array2;
- }
- else
- {
- v366 = (int)v17->Name;
- v358 = "Showing Energy ON for %s";
- v353 = array2;
- }
- sprintf(v353, v358, v366);
- v19 = array2;
- v367 = 0;
- }
- v359 = v19;
- LABEL_186:
- SendArenaMessage(player, v359, v367);
- goto LABEL_187;
- }
- if ( player )
- {
- a5[1] = player->MyArena;
- if ( a5[1] )
- {
- if ( v15 == 63 )
- {
- if ( !strcmp(ChatText, "?usage") )
- {
- HIDWORD(v201) = player->TotalUsageSeconds2;
- LODWORD(v201) = time(0);
- v202 = (signed __int64)difftime(v201, *(time_t *)v374);
- v203 = v202;
- LODWORD(v202) = (signed int)((_DWORD)v202 + ((unsigned __int64)(-2004318071i64 * (signed int)v202) >> 32)) >> 5;
- sprintf(
- array2,
- "Session Usage: %5d hours %d minutes",
- v203 / 3600,
- (signed int)(((unsigned int)v202 >> 31) + v202) % 60);
- SendArenaMessage(player, array2, 0);
- sprintf(
- array2,
- " Total Usage: %5d hours %d minutes",
- (player->UsageTotalSeconds + v203) / 3600,
- (player->UsageTotalSeconds + v203) / 60 % 60);
- SendArenaMessage(player, array2, 0);
- sprintf(
- array2,
- " First played: %d-%d-%d %d:%d:%d",
- player->AccountCreationMonth,
- player->AccountCreationDay,
- player->AccountCreationYear,
- player->AccountCreationHour,
- player->AccountCreationMinute,
- player->AccountCreationSecond);
- SendArenaMessage(player, array2, 0);
- return;
- }
- if ( !strcmp(ChatText, "?sheep") )
- {
- SendArenaMessage(player, a5[1]->ServersideArenaSettings.MiscSheepMessage, 24);
- return;
- }
- v204 = 4;
- v205 = (int)"?buy";
- v206 = ChatText;
- v207 = 1;
- do
- {
- if ( !v204 )
- break;
- v207 = *v206++ == *(_BYTE *)v205++;
- --v204;
- }
- while ( v207 );
- if ( v207 )
- {
- v208 = ChatText + 4;
- Buf1b = ChatText + 4;
- while ( *v208 == 32 || *v208 == 61 )
- ++v208;
- Buf1a = v208;
- if ( *v208 )
- {
- if ( player->Ship == 8 )
- {
- SendArenaMessage(player, "Spectators cannot purchase items.", 0);
- }
- else
- {
- if ( a5[1]->ServersideArenaSettings.CostPurchaseAnytime || player->ShipTogglables & 0x20 )
- {
- v226 = 0;
- v227 = 0;
- while ( _strcmpi(&player->MyArena->ServersideArenaSettings.char158[v227], Buf1a) )
- {
- v227 += 24;
- ++v226;
- if ( v227 >= 576 )
- goto LABEL_529;
- }
- v228 = player->MyArena;
- v229 = player->FlagPoints;
- v230 = 24 * v226;
- v231 = *(_DWORD *)&v228->ServersideArenaSettings.char158[24 * v226 + 16];
- v232 = (int)&v228->ServersideArenaSettings.char158[24 * v226 + 16];
- if ( v231 )
- {
- if ( v231 <= v229 + player->KillPoints )
- {
- v233 = *(_DWORD *)v232;
- if ( *(_DWORD *)v232 <= v229 )
- {
- v370 = -v233;
- v362 = 0;
- }
- else
- {
- v370 = -v229;
- v362 = v229 - v233;
- }
- AppendPointsLog(player, v362, v370);
- v234 = player->MyArena;
- ExitCode[0] = 32;
- *(_WORD *)&ExitCode[3] = *(_WORD *)((char *)&v234->ServersideArenaSettings.dword16C + v230);
- *(_WORD *)&ExitCode[1] = 1;
- SendPlayerReliablePacket(player, ExitCode, 5, 1);
- v235 = player->FlagPoints;
- v236 = player->KillPoints;
- v385 = player->PlayerId;
- v237 = player->CurrentWins;
- v387 = v235;
- v386 = v236;
- LOWORD(v236) = player->CurrentLosses;
- v388 = v237;
- v238 = *(_DWORD *)&player->CurrentWins;
- *(_WORD *)v389 = v236;
- v239 = *(_DWORD *)&player->GoalCount;
- player->dword23F = v238;
- v240 = *(int *)((char *)&player->KillPoints + 2);
- v384 = 9;
- *(_DWORD *)&player->dword243 = v239;
- LOWORD(v239) = HIWORD(player->FlagPoints);
- *(_DWORD *)&player->dword247 = v240;
- LOWORD(player->word24B) = v239;
- SendPlayerReliablePacket(player, &v384, 15, 1);
- if ( *(_DWORD *)&player->MyArena->ServersideArenaSettings.char158[v230 + 16] > 500 )
- sub_40E040(player, &v384, 15, 0);
- }
- else
- {
- SendArenaMessage(player, "You do not have enough points to purchase that item.", 0);
- }
- }
- else
- {
- SendArenaMessage(player, "That item is not available for purchase.", 0);
- }
- LABEL_529:
- if ( v226 == 24 )
- SendArenaMessage(player, "Invalid item specified for purchase.", 0);
- }
- else
- {
- SendArenaMessage(player, "You must be in safe zone to purchase items.", 0);
- }
- }
- }
- else
- {
- array2[0] = 0;
- v209 = 0;
- do
- {
- v210 = (char *)player->MyArena + v209;
- v211 = *(_DWORD *)(v210 + 109982);
- if ( v211 > 0 )
- {
- sprintf(Dest, "%s=%d", v210 + 109966, v211);
- if ( strlen(Dest) + strlen(array2) > 0x4B )
- {
- SendArenaMessage(player, array2, 0);
- array2[0] = 0;
- }
- v212 = (int)" ";
- if ( !array2[0] )
- v212 = (int)"PRICE: ";
- v213 = -1;
- do
- {
- if ( !v213 )
- break;
- v60 = *(_BYTE *)v212++ == 0;
- --v213;
- }
- while ( !v60 );
- v214 = ~v213;
- v215 = (const void *)(v212 - v214);
- v216 = array2;
- v217 = v214;
- v218 = -1;
- do
- {
- if ( !v218 )
- break;
- v60 = *v216++ == 0;
- --v218;
- }
- while ( !v60 );
- memcpy(v216 - 1, v215, v217);
- v219 = Dest;
- v220 = -1;
- do
- {
- if ( !v220 )
- break;
- v60 = *v219++ == 0;
- --v220;
- }
- while ( !v60 );
- v221 = ~v220;
- v222 = &v219[-v221];
- v223 = array2;
- v224 = v221;
- v225 = -1;
- do
- {
- if ( !v225 )
- break;
- v60 = *v223++ == 0;
- --v225;
- }
- while ( !v60 );
- memcpy(v223 - 1, v222, v224);
- }
- v209 += 24;
- }
- while ( v209 < 576 );
- if ( array2[0] )
- SendArenaMessage(player, array2, 0);
- }
- return;
- }
- if ( !strcmp(ChatText, "?zone") )
- {
- SendArenaMessage(player, BillingServerName, 0);
- return;
- }
- if ( !strcmp(ChatText, "?userid") )
- {
- sprintf(Dest, "UserId:%d", player->UserId);
- SendArenaMessage(player, Dest, 0);
- return;
- }
- if ( !strcmp(ChatText, "?owner") )
- {
- sprintf(Dest, "Arena Owner:%s", a5[1]->ServersideArenaSettings.OwnerName);
- SendArenaMessage(player, Dest, 0);
- return;
- }
- if ( !strcmp(ChatText, "?getsettings") )
- {
- if ( player->isSysop
- || (v241 = a5[1]->ServersideArenaSettings.OwnerUserId, player->UserId == v241) && v241 >= 0 )
- {
- SendArenaMessage(player, "File being sent, please wait.", 0);
- v242 = player->MyArena;
- v400[0] = 16;
- v243 = strrchr(v242->szConfigFile, 92);
- if ( v243 )
- {
- strcpy(&v400[1], v243 + 1);
- v244 = strrchr(&v400[1], 46);
- if ( v244 )
- strcpy(v244, ".set");
- v245 = &v400[17];
- v246 = (int)operator new(0x2B74Cu);
- *(_DWORD *)ExitCode = v246;
- v403 = 0;
- if ( v246 )
- {
- v247 = (ARENA *)sub_406210(v246, player->MyArena->szConfigFile);
- a5[0] = v247;
- }
- else
- {
- a5[0] = 0;
- v247 = 0;
- }
- v403 = -1;
- v376 = 0;
- if ( TotalTemplateSSSEntries > 0 )
- {
- v248 = TotalTemplateSSSList[0].SomeString256;
- do
- {
- if ( !v248[256] || v9->isSysop )
- {
- if ( _strcmpi(v248 - 80, "All") )
- {
- sub_4066B0(
- (int)a5[0],
- v248 - 80,
- v248 - 48,
- (const char *)&DirectoryCurrentNamePassword,
- Dest,
- 0x100u);
- v251 = *((_DWORD *)v248 - 2);
- if ( v251 == -999 )
- sprintf(v245, "%s:%s:%s:::%s\r\n", v248 - 80, v248 - 48, Dest, v248);
- else
- sprintf(
- v245,
- "%s:%s:%s:%d:%d:%s\r\n",
- v248 - 80,
- v248 - 48,
- Dest,
- v251,
- *((_DWORD *)v248 - 1),
- v248);
- v245 += strlen(v245);
- }
- else
- {
- v249 = (signed int)off_42C848;
- do
- {
- sub_4066B0(
- (int)a5[0],
- *(const char **)v249,
- v248 - 48,
- (const char *)&DirectoryCurrentNamePassword,
- array2,
- 256u);
- if ( v249 <= (signed int)off_42C848 )
- {
- v250 = *((_DWORD *)v248 - 2);
- if ( v250 == -999 )
- sprintf(v245, "%s:%s:%s:::%s\r\n", *(_DWORD *)v249, v248 - 48, array2, v248);
- else
- sprintf(
- v245,
- "%s:%s:%s:%d:%d:%s\r\n",
- *(_DWORD *)v249,
- v248 - 48,
- array2,
- v250,
- *((_DWORD *)v248 - 1),
- v248);
- }
- else
- {
- sprintf(v245, "%s:%s:%s:*\r\n", *(_DWORD *)v249, v248 - 48, array2);
- }
- v249 += 4;
- v245 += strlen(v245);
- }
- while ( v249 < (signed int)"Spawned Command" );
- }
- }
- v9 = player;
- v248 += 338;
- ++v376;
- }
- while ( v376 < TotalTemplateSSSEntries );
- v247 = a5[0];
- }
- SendPlayerReliablePacket(v9, v400, v245 - v400, 1);
- if ( v247 )
- {
- sub_4063F0((int)v247);
- operator delete(v247);
- }
- }
- }
- else
- {
- SendArenaMessage(player, "Only the owner of this arena can view the settings.", 0);
- }
- return;
- }
- v252 = 10;
- v253 = (int)"?setlevel ";
- v254 = ChatText;
- v255 = 1;
- do
- {
- if ( !v252 )
- break;
- v255 = *v254++ == *(_BYTE *)v253++;
- --v252;
- }
- while ( v255 );
- if ( v255 )
- {
- if ( player->isSysop
- || (v256 = a5[1]->ServersideArenaSettings.OwnerUserId, player->UserId == v256) && v256 >= 0 )
- {
- buf[0] = 25;
- strncpy(&buf[1], ChatText + 10, 256u);
- v257 = player->MyArena->szLevelFile2;
- buf[256] = 0;
- strncpy(&buf[257], v257, 0x10u);
- buf[272] = 0;
- SendPlayerReliablePacket(player, buf, 273, 1);
- }
- else
- {
- SendArenaMessage(player, "Only the owner of this arena can change the level.", 0);
- }
- return;
- }
- if ( !strcmp(ChatText, "?recycle") )
- {
- if ( player->isSysop || player->UserId == a5[1]->ServersideArenaSettings.OwnerUserId )
- a5[1]->field_10026 = 1;
- else
- SendArenaMessage(player, "Only the owner of this arena can recycle it.", 0);
- return;
- }
- if ( !strcmp(ChatText, "?spec") )
- {
- v258 = a5[1];
- array2[0] = 0;
- v376 = 0;
- if ( a5[1]->ArenaPlayerCount > 0 )
- {
- v259 = 16072;
- do
- {
- v260 = v258->PlayerPointers[v259];
- v261 = 0;
- if ( player->isSuperModerator )
- {
- if ( v260->Ship == 8 )
- {
- if ( v260->ArenaPlayerIndex < 0 )
- {
- v262 = (signed int)v260->XPixels - (signed int)player->XPixels;
- if ( (signed int)((HIDWORD(v262) ^ v262) - HIDWORD(v262)) < 1280 )
- {
- v263 = (signed int)v260->YPixels - (signed int)player->YPixels;
- if ( (signed int)((HIDWORD(v263) ^ v263) - HIDWORD(v263)) < 1024 )
- v261 = 1;
- }
- }
- }
- }
- if ( (v260->ArenaPlayerIndex == *(_DWORD *)&player->PlayerId || v261)
- && (player->isSysop || !v260->isModerator) )
- {
- if ( v261 )
- {
- v371 = (int)v260->Name;
- v363 = "*%s";
- v355 = Dest;
- }
- else
- {
- v371 = (int)v260->Name;
- v363 = "%s";
- v355 = Dest;
- }
- sprintf(v355, v363, v371);
- if ( strlen(Dest) + strlen(array2) > 0x4B )
- {
- SendArenaMessage(player, array2, 0);
- array2[0] = 0;
- }
- v264 = (int)",";
- if ( !array2[0] )
- v264 = (int)"SPEC: ";
- v265 = -1;
- do
- {
- if ( !v265 )
- break;
- v60 = *(_BYTE *)v264++ == 0;
- --v265;
- }
- while ( !v60 );
- v266 = ~v265;
- v267 = (const void *)(v264 - v266);
- v268 = array2;
- v269 = v266;
- v270 = -1;
- do
- {
- if ( !v270 )
- break;
- v60 = *v268++ == 0;
- --v270;
- }
- while ( !v60 );
- memcpy(v268 - 1, v267, v269);
- v271 = Dest;
- v272 = -1;
- do
- {
- if ( !v272 )
- break;
- v60 = *v271++ == 0;
- --v272;
- }
- while ( !v60 );
- v273 = ~v272;
- v274 = &v271[-v273];
- v275 = array2;
- v276 = v273;
- v277 = -1;
- do
- {
- if ( !v277 )
- break;
- v60 = *v275++ == 0;
- --v277;
- }
- while ( !v60 );
- memcpy(v275 - 1, v274, v276);
- }
- v258 = player->MyArena;
- ++v259;
- v278 = v258->ArenaPlayerCount;
- ++v376;
- }
- while ( v376 < v278 );
- }
- if ( array2[0] )
- SendArenaMessage(player, array2, 0);
- return;
- }
- if ( !strcmp(ChatText, "?packetloss") )
- {
- sub_41CB70((int)&player->encryptionPointer->ConnectionStatus, (int)a5, (int)&v377);
- v279 = 1000 - v377;
- v60 = (ARENA *)1000 == a5[0];
- a5[0] = (ARENA *)(1000 - (unsigned int)a5[0]);
- v377 = 1000 - v377;
- if ( !v60 || v279 )
- sprintf(
- array2,
- "PACKET LOSS ServerToYou:%.1f%% YouToServer:%.1f%%",
- (double)*(signed int *)a5 * dword_429008,
- (double)v377 * dword_429008);
- else
- sprintf(array2, "PACKET LOSS Unknown, check again in a few minutes.");
- SendArenaMessage(player, array2, 0);
- return;
- }
- if ( !strcmp(ChatText, "?jackpot") )
- {
- sprintf(Dest, "Current Jackpot: %d", a5[1]->ArenaJackpot);
- SendArenaMessage(player, Dest, 0);
- return;
- }
- if ( !strcmp(ChatText, "?crown") )
- {
- if ( a5[1]->ServersideArenaSettings.KingDeathCount <= 0
- || a5[1]->ServersideArenaSettings.KingCrownRecoverKills <= 0 )
- {
- SendArenaMessage(player, "This is not a king of the hill style game or crowns cannot be recovered.", 0);
- }
- else
- {
- if ( player->KotHDeathCount <= 0 )
- {
- sprintf(
- Dest,
- "Kills needed for crown: %d",
- a5[1]->ServersideArenaSettings.KingCrownRecoverKills - player->KingCrownKills);
- SendArenaMessage(player, Dest, 0);
- }
- else
- {
- SendArenaMessage(player, "You already have a crown.", 0);
- }
- }
- return;
- }
- if ( !strcmp(ChatText, "?score") )
- {
- GetScore(a5[1], (int)player);
- return;
- }
- if ( !strcmp(ChatText, "?arena") )
- {
- v280 = 0;
- v399[0] = 47;
- v281 = &v399[1];
- v376 = 0;
- if ( ArenaArrayLength > 0 )
- {
- a5[0] = (ARENA *)Arenas;
- do
- {
- if ( BYTE3(a5[0]->PlayerPointers[0][74].UserId) != 35
- || player->isModerator
- || player->MyArena == (ARENA *)a5[0]->PlayerPointers[0] )
- {
- if ( BYTE3(a5[0]->PlayerPointers[0][74].UserId) )
- {
- v372 = (char *)&a5[0]->PlayerPointers[0][74].UserId + 3;
- v364 = "%s";
- v356 = array2;
- }
- else
- {
- v372 = (char *)v280;
- v364 = "%d";
- v356 = array2;
- }
- sprintf(v356, v364, v372);
- strcpy(v281, array2);
- v282 = (unsigned int)&v281[strlen(array2) + 1];
- v283 = a5[0]->PlayerPointers[0];
- if ( a5[0]->PlayerPointers[0] == (PLAYER *)player->MyArena )
- *(_WORD *)v282 = -*(_WORD *)&v283[75].TypedName[18];
- else
- *(_WORD *)v282 = *(_WORD *)&v283[75].TypedName[18];
- v280 = v376;
- v281 = (char *)(v282 + 2);
- }
- ++v280;
- v376 = v280;
- a5[0] = (ARENA *)((char *)a5[0] + 4);
- }
- while ( v280 < ArenaArrayLength );
- }
- SendPlayerReliablePacket(player, v399, v281 - v399, 1);
- return;
- }
- if ( !strcmp(ChatText, "?time") )
- {
- if ( a5[1]->ServersideArenaSettings.MiscTimedGame <= 0 )
- {
- if ( a5[1]->GameTimeStart )
- {
- v285 = player->MyArena->GameTimeStart - abs(GetTickCount() / 0xA - player->MyArena->GameTimePassed);
- if ( v285 < 0 )
- v285 = 0;
- sprintf(array2, "Time left: %d minutes %d seconds", v285 / 6000, v285 % 6000 / 100);
- SendArenaMessage(player, array2, 0);
- }
- else
- {
- if ( player->isModerator )
- {
- v286 = player->MyArena->ServersideArenaSettings.TerritoryRewardDelay
- - abs(GetTickCount() / 0xA - player->MyArena->TerritoryRewardTimePassed);
- if ( v286 < 0 )
- v286 = 0;
- sprintf(array2, "Time left to reward: %d minutes %d seconds", v286 / 6000, v286 % 6000 / 100);
- SendArenaMessage(player, array2, 0);
- }
- else
- {
- SendArenaMessage(player, "This zone does not have a game time limit", 0);
- }
- }
- }
- else
- {
- v284 = player->MyArena->ServersideArenaSettings.MiscTimedGame
- - abs(GetTickCount() / 0xA - player->MyArena->GameTimePassedTwo);
- if ( v284 < 0 )
- v284 = 0;
- sprintf(array2, "Time left: %d minutes %d seconds", v284 / 6000, v284 % 6000 / 100);
- SendArenaMessage(player, array2, 0);
- }
- return;
- }
- if ( !strcmp(ChatText, "?best") )
- {
- if ( a5[1]->ServersideArenaSettings.MiscTimedGame <= 0 )
- {
- v373 = player->CurrentLosses;
- v365 = player->CurrentWins;
- v357 = player->KillPoints + player->FlagPoints;
- v352 = "CURRENT SCORE Points:%d Win:%d Lose:%d";
- v351 = Dest;
- }
- else
- {
- v373 = player->PersonalBestLosses;
- v365 = player->PersonalBestWins;
- v357 = *(_DWORD *)&player->PersonalBestPoints1of2 + *(_DWORD *)&player->PersonalBestPoints2of2;
- v352 = "PERSONAL BEST Points:%d Win:%d Lose:%d";
- v351 = Dest;
- }
- sprintf(v351, v352, v357, v365, v373);
- SendArenaMessage(player, Dest, 0);
- return;
- }
- v287 = 5;
- v288 = (int)"?set ";
- v289 = ChatText;
- v290 = 1;
- do
- {
- if ( !v287 )
- break;
- v290 = *v289++ == *(_BYTE *)v288++;
- --v287;
- }
- while ( v290 );
- if ( v290 )
- goto LABEL_845;
- v291 = 5;
- v292 = (int)"?get ";
- v293 = ChatText;
- v294 = 1;
- do
- {
- if ( !v291 )
- break;
- v294 = *v293++ == *(_BYTE *)v292++;
- --v291;
- }
- while ( v294 );
- if ( v294 )
- {
- LABEL_845:
- v295 = 0;
- if ( player->isSysop
- || (v296 = player->UserId, v296 >= 0)
- && a5[1]->bHasScrFile
- && a5[1]->ServersideArenaSettings.OwnerUserId == v296 )
- v295 = 1;
- if ( v295 )
- {
- v297 = ChatText[5];
- v298 = ChatText + 5;
- for ( jj = AppName; v297; ++v298 )
- {
- if ( v297 == 58 )
- break;
- *jj = v297;
- v297 = v298[1];
- ++jj;
- }
- v300 = *v298;
- *jj = 0;
- if ( v300 )
- {
- v301 = v298[1];
- v302 = (int)(v298 + 1);
- for ( kk = Str1; v301; ++v302 )
- {
- if ( v301 == 61 )
- break;
- if ( v301 == 58 )
- break;
- *kk = v301;
- v301 = *(_BYTE *)(v302 + 1);
- ++kk;
- }
- v304 = *(_BYTE *)v302;
- *kk = 0;
- if ( v304 )
- ++v302;
- strcpy(Dest, (const char *)v302);
- if ( _memicmp(ChatText, "?set ", 5u)
- || (sprintf(StartupInfo, "%s:%s:%s", AppName, Str1, Dest),
- !ChangeSettings(player->MyArena, player, StartupInfo)) )
- {
- if ( !_strcmpi(AppName, "All") )
- strcpy(AppName, "Warbird");
- GetPrivateProfileStringA(AppName, Str1, "InvalidTag", array2, 128u, player->MyArena->szConfigFile);
- sprintf(buf, "%s:%s=%s", AppName, Str1, array2);
- SendArenaMessage(player, buf, 0);
- }
- }
- }
- else
- {
- SendArenaMessage(player, "You do not have permission to set parameters in this arena.", 0);
- }
- return;
- }
- if ( isalpha(ChatText[1]) )
- {
- if ( BillingConnectionStructPointer )
- SendBillerUserCommandPacket(player->BillerPlayerId, ChatText);
- return;
- }
- }
- }
- }
- v305 = buf;
- v306 = (int *)ChatText;
- if ( *ChatText )
- {
- do
- {
- if ( isalpha(*(_BYTE *)v306) )
- *v305++ = toupper(*(_BYTE *)v306);
- v307 = *((_BYTE *)v306 + 1);
- v306 = (int *)((char *)v306 + 1);
- }
- while ( v307 );
- }
- v308 = (int)ObscenePointer;
- *v305 = 0;
- v309 = ListMachine(v308);
- v310 = 0;
- if ( v309 <= 0 )
- {
- LABEL_711:
- a5[0] = 0;
- v312 = (ARENA *)1;
- }
- else
- {
- while ( 1 )
- {
- v311 = (const char *)ListMachineByIndex((int)ObscenePointer, v310);
- if ( strstr(buf, v311) )
- break;
- ++v310;
- if ( v310 >= v309 )
- goto LABEL_711;
- }
- v312 = (ARENA *)1;
- a5[0] = (ARENA *)1;
- }
- a5[1] = 0;
- if ( player )
- {
- if ( player->Ship == 8 && player->MyArena->ServersideArenaSettings.MiscSpectatorQuiet && !player->isModerator )
- a5[1] = v312;
- if ( (signed int)(GetTickCount() / 0xA - player->GetTickCountValueDividedByTen2) >= 100 )
- {
- player->dword293 = 0;
- }
- else
- {
- v313 = player->MyArena;
- v314 = player->dword293 + 1;
- player->dword293 = v314;
- if ( v314 > v313->ServersideArenaSettings.MessageQuickMessageLimit && !player->isSysop )
- {
- WriteSubGameLog("Played kicked off for message flooding: %s\n", player->PlayerName);
- player->DisconnectReason = 12;
- player->AlreadySentReliablePacket = v312;
- SendArenaMessagePlayer(player, "WARNING: You have been disconnected for message flooding.", 0);
- return;
- }
- }
- player->GetTickCountValueDividedByTen2 = GetTickCount() / 0xA;
- }
- v315 = a4;
- if ( (ARENA *)a4 == v312 || a4 == 2 )
- {
- if ( player )
- {
- if ( player->MyArena )
- {
- v316 = (signed int)(GetTickCount() / 0xA - player->MyArena->GameTimePassedTwo);
- if ( (signed int)((HIDWORD(v316) ^ v316) - HIDWORD(v316)) < 600
- || (v317 = (signed int)(GetTickCount() / 0xA - player->MyArena->GetTickCountValue8),
- (signed int)((HIDWORD(v317) ^ v317) - HIDWORD(v317)) < 500)
- || (v318 = (signed int)(GetTickCount() / 0xA - player->MyArena->TerritoryRewardTimePassed),
- (signed int)((HIDWORD(v318) ^ v318) - HIDWORD(v318)) < 500) )
- return;
- }
- }
- v319 = (const char *)&DirectoryCurrentNamePassword;
- v376 = (int)&DirectoryCurrentNamePassword;
- if ( player )
- {
- v319 = player->Name;
- v376 = (int)player->Name;
- }
- if ( *v319 && ChatCounter64Max > 0 )
- {
- if ( !strcmp((const char *)&dword_431FC8[91 * ChatCounter64Max], v319)
- && !strcmp((const char *)&dword_431E9C[91 * ChatCounter64Max], ChatText) )
- return;
- v319 = (const char *)v376;
- }
- v320 = 364 * ChatCounter64Max + 4399112;
- v321 = (char *)(364 * ChatCounter64Max + 4399112);
- ChatCounter64Max = (unsigned __int8)((char)(ChatCounter64Max + 1) % -64);
- strncpy(v321, ChatText, 0x12Cu);
- v322 = v320 + 300;
- *(_BYTE *)(v320 + 299) = 0;
- strncpy((char *)(v320 + 300), v319, 0x20u);
- v320 += 332;
- *(_BYTE *)(v322 + 31) = 0;
- strncpy((char *)v320, "(Everyone)", 0x20u);
- *(_BYTE *)(v320 + 31) = 0;
- if ( player )
- {
- v323 = player->MyArena;
- if ( v323 )
- FormatMessageArena(v323, "%16.16s>%s\n", v322, ChatText);
- }
- v315 = a4;
- }
- v398[0] = 7;
- v398[1] = v315;
- v398[2] = a7;
- if ( v315 == 7 )
- {
- if ( !player
- || (v324 = player->MyArena) == 0
- || player->isModerator
- || v324->SpecMessageLock && player->Ship != 8
- || !v324->PrivateMessagesLocked )
- {
- *(_WORD *)&v398[3] = 0;
- v325 = strchr(ChatText + 1, 58);
- *(_DWORD *)ExitCode = v325;
- if ( v325 )
- {
- v326 = v325 - ChatText - 1;
- Size = v326;
- memcpy(array2, ChatText + 1, v326);
- v327 = 0;
- v60 = ArenaArrayLength == 0;
- v328 = ArenaArrayLength < 0;
- array2[v326] = 0;
- v377 = 0;
- v376 = 0;
- if ( !(v328 | v60) )
- {
- v329 = Arenas;
- do
- {
- v330 = *v329;
- v331 = 0;
- if ( (*v329)->ArenaPlayerCount > 0 )
- {
- v332 = 16072;
- while ( _strcmpi(array2, v330->PlayerPointers[v332]->Name) )
- {
- if ( !v377 && player && !_memicmp(array2, (*v329)->PlayerPointers[v332]->Name, Size) )
- v377 = (int)(*v329)->PlayerPointers[v332];
- v330 = *v329;
- ++v331;
- ++v332;
- if ( v331 >= (*v329)->ArenaPlayerCount )
- goto LABEL_761;
- }
- v377 = (int)(*v329)->playerPointersForSomething[v331];
- }
- LABEL_761:
- ++v329;
- ++v376;
- }
- while ( v376 < ArenaArrayLength );
- v326 = Size;
- v325 = *(char **)ExitCode;
- v327 = (PLAYER *)v377;
- }
- if ( v327 )
- {
- if ( player )
- sprintf(&v398[5], "(%s)>%s", player->Name, v325 + 1);
- else
- sprintf(&v398[5], "%s", v325 + 1);
- sub_40E000(v327, v398, strlen(&v398[5]) + 6, 1, (int)a5[0], a5[1]);
- }
- else
- {
- if ( player )
- {
- buf[0] = 2;
- buf[1] = a7;
- sprintf(&buf[2], ":%s:(%s)>%s", array2, player->Name, v325 + 1);
- if ( BillingConnectionStructPointer )
- SendBillerUserPrivateChatPacket(-1, BillingGroupId, buf, strlen(&buf[2]) + 3);
- }
- else
- {
- if ( array2[0] == 35 )
- {
- if ( v326 > 2 )
- {
- if ( array2[1] != 32 )
- {
- sprintf(&v398[5], "%s", v325 + 1);
- v333 = strlen(&v398[5]) + 1;
- v376 = 0;
- if ( ArenaArrayLength > 0 )
- {
- v334 = Arenas;
- do
- {
- v335 = 0;
- if ( (*v334)->ArenaPlayerCount > 0 )
- {
- v336 = 16072;
- do
- {
- if ( !_strcmpi(&array2[1], (*v334)->PlayerPointers[v336]->Squad) )
- sub_40E000((*v334)->PlayerPointers[v336], v398, v333 - 1 + 6, 1, (int)a5[0], a5[1]);
- ++v335;
- ++v336;
- }
- while ( v335 < (*v334)->ArenaPlayerCount );
- }
- ++v334;
- ++v376;
- }
- while ( v376 < ArenaArrayLength );
- }
- }
- }
- }
- }
- }
- }
- }
- }
- else
- {
- if ( player && (v337 = player->MyArena) != 0 )
- {
- *(_WORD *)&v398[3] = player->PlayerId;
- *(_DWORD *)ExitCode = strcpy(&v398[5], ChatText);
- v338 = v337->ServersideArenaSettings.MessageReliable;
- v339 = strlen(ChatText) + 6;
- if ( v337->ArenaPlayerCount < 20 )
- v338 = 1;
- switch ( a4 )
- {
- case 9:
- if ( player->isModerator || v337->SpecMessageLock && player->Ship != 8 || !v337->PrivateMessagesLocked )
- {
- if ( BillingConnectionStructPointer )
- {
- if ( *ChatText == 59 || isdigit(*ChatText) && ChatText[1] == 59 )
- {
- v340 = ChatText;
- if ( *ChatText == 59 )
- v340 = ChatText + 1;
- v341 = *v340;
- for ( ll = Str1; v341; ++v340 )
- {
- if ( v341 == 59 )
- break;
- if ( v341 == 58 )
- break;
- *ll = v341;
- v341 = v340[1];
- ++ll;
- }
- v343 = *v340;
- *ll = 0;
- if ( v343 )
- {
- v344 = v340[1];
- v345 = v340 + 1;
- if ( v344 )
- {
- if ( Str1[0] )
- SendBillerUserChannelChatPacket(player->BillerPlayerId, Str1, v345);
- }
- }
- }
- else
- {
- SendBillerUserChannelChatPacket(
- player->BillerPlayerId,
- (const char *)&DirectoryCurrentNamePassword,
- ChatText);
- }
- }
- else
- {
- SendArenaMessage(player, "Chat channels not available at this time.", 0);
- }
- }
- break;
- case 1:
- case 2:
- if ( player->isModerator || v337->SpecMessageLock && player->Ship != 8 || !v337->AllMessagesLocked )
- SomethingWithAttachedPlayer(player, v398, v339, v338, (int)a5[0], (int)a5[1]);
- break;
- case 3:
- if ( player->isModerator
- || v337->SpecMessageLock && player->Ship != 8
- || !v337->AllMessagesLockedAgainSomething )
- {
- v346 = v337->ServersideArenaSettings.MessageTeamReliable || v338;
- sub_40E220(player, v398, v339, v346, (int)a5[0], (int)a5[1]);
- }
- break;
- case 5:
- if ( player->isModerator || v337->SpecMessageLock && player->Ship != 8 || !v337->PrivateMessagesLocked )
- SomethingWithAudioByteAndShip8((ARENA *)arenaPlayerIndex, v398, v339, 1, (int)a5[0], a5[1]);
- break;
- case 4:
- if ( player->isModerator
- || v337->SpecMessageLock && player->Ship != 8
- || !v337->AllMessagesLockedAgainSomething )
- {
- v347 = v337->ServersideArenaSettings.MessageTeamReliable || v338;
- sub_40E300(player, arenaPlayerIndex, v398, v339, v347, (int)a5[0], (int)a5[1]);
- }
- break;
- default:
- return;
- }
- }
- else
- {
- buf[2] = a7;
- strcpy(&buf[5], ChatText);
- buf[0] = 7;
- buf[1] = 0;
- *(_WORD *)&buf[3] = 0;
- v348 = strlen(ChatText) + 1;
- v349 = 0;
- if ( ZonePlayerCount > 0 )
- {
- v350 = playerPointerList;
- do
- {
- if ( (*v350)->MyArena )
- SendPlayerReliablePacket(*v350, buf, v348 - 1 + 6, 1);
- ++v349;
- ++v350;
- }
- while ( v349 < ZonePlayerCount );
- }
- }
- }
- }
- -----------------------------------------------------------------------
- Stack Frame View
- -----------------------------------------------------------------------
- -00016090 ; Ins/Del : create/delete structure
- -00016090 ; D/A/* : create structure member (data/ascii/array)
- -00016090 ; N : rename structure or structure member
- -00016090 ; U : delete structure member
- -00016090 ; Use data definition commands to create local variables and function arguments.
- -00016090 ; Two special fields " r" and " s" represent return address and saved registers.
- -00016090 ; Frame size: 16090; Saved regs: 0; Purge: 0
- -00016090 ;
- -00016090
- -00016090 var_16090 dq ?
- -00016088 var_16088 dq ?
- -00016080 var_16080 dd 6 dup(?) ; offset
- -00016068 a5 dd 2 dup(?) ; offset
- -00016060 var_16060 dd ?
- -0001605C var_1605C dd ?
- -00016058 ExitCode db 7 dup(?)
- -00016051 var_16051 db ?
- -00016050 Size dd ?
- -0001604C var_1604C dd ?
- -00016048 var_16048 dd ?
- -00016044 var_16044 dd ?
- -00016040 var_16040 db ?
- -0001603F var_1603F dw ?
- -0001603D var_1603D dd ?
- -00016039 var_16039 dd ?
- -00016035 var_16035 dw ?
- -00016033 var_16033 db 3 dup(?)
- -00016030 var_16030 dd ?
- -0001602C array1 db 32 dup(?)
- -0001600C array2 db 256 dup(?)
- -00015F0C Dest db 256 dup(?)
- -00015E0C Str1 db 64 dup(?)
- -00015DCC AppName db 64 dup(?)
- -00015D8C buf db 512 dup(?)
- -00015B8C StartupInfo db 256 dup(?)
- -00015A8C var_15A8C db 512 dup(?)
- -0001588C var_1588C db 8192 dup(?)
- -0001388C var_1388C db 80000 dup(?)
- -0000000C var_C dd ?
- -00000008 db ? ; undefined
- -00000007 db ? ; undefined
- -00000006 db ? ; undefined
- -00000005 db ? ; undefined
- -00000004 var_4 dd ?
- +00000000 r db 4 dup(?)
- +00000004 player dd ? ; offset
- +00000008 arenaPlayerIndex dq ?
- +00000010 ChatText dd ? ; offset
- +00000014 SoundByte db ?
- +00000015
- +00000015 ; end of stack variables
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement