Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //----- (005076B0) --------------------------------------------------------
- signed int __cdecl sub_5076B0(char *src, int a2, char a3, char a4, char a5, unsigned int a6)
- {
- signed int result; // eax@2
- int v7; // edx@6
- unsigned int v8; // edi@6
- unsigned int v9; // eax@12
- int v10; // ecx@13
- int v11; // esi@20
- int v12; // esi@23
- if ( GetChannelByName((int)src) )
- return 0;
- if ( a2 && GetChannelById(a2) )
- return 0;
- v7 = dword_BCF094;
- v8 = dword_BCF090;
- if ( a6 && a6 <= 0xA )
- {
- if ( a6 > dword_BCF090 )
- {
- sub_506210((int)&unk_BCF08C, a6);
- v8 = a6 - 1;
- LABEL_22:
- v7 = dword_BCF094;
- goto LABEL_23;
- }
- if ( !*(_DWORD *)(168 * a6 + dword_BCF094 - 168) )
- {
- v8 = a6 - 1;
- LABEL_23:
- v12 = 168 * v8;
- *(_DWORD *)(168 * v8 + v7) = v8 + 1;
- SStrCopy((char *)(168 * v8 + dword_BCF094 + 4), src, 128);
- *(_DWORD *)(v12 + dword_BCF094 + 148) = a2;
- result = 1;
- *(_DWORD *)(v12 + dword_BCF094 + 156) = 1;
- *(_DWORD *)(v12 + dword_BCF094 + 160) = 0;
- *(_BYTE *)(v12 + dword_BCF094 + 164) = a4;
- *(_BYTE *)(v12 + dword_BCF094 + 165) = a5;
- return result;
- }
- }
- v9 = 0;
- if ( dword_BCF090 )
- {
- v10 = dword_BCF094;
- while ( *(_DWORD *)v10 )
- {
- ++v9;
- v10 += 168;
- if ( v9 >= dword_BCF090 )
- goto LABEL_16;
- }
- v11 = 168 * v9;
- *(_DWORD *)(168 * v9 + dword_BCF094) = v9 + 1;
- SStrCopy((char *)(168 * v9 + dword_BCF094 + 4), src, 128);
- *(_DWORD *)(v11 + dword_BCF094 + 148) = a2;
- result = 1;
- *(_DWORD *)(v11 + dword_BCF094 + 156) = 1;
- *(_DWORD *)(v11 + dword_BCF094 + 160) = 0;
- *(_BYTE *)(v11 + dword_BCF094 + 164) = a4;
- *(_BYTE *)(v11 + dword_BCF094 + 165) = a5;
- }
- else
- {
- LABEL_16:
- if ( dword_BCF090 != 10 )
- {
- sub_506210((int)&unk_BCF08C, dword_BCF090 + 1);
- goto LABEL_22;
- }
- if ( !a3 )
- CGGameUI::DisplayError(GERR_TOO_MANY_CHAT_CHANNELS);
- result = 0;
- }
- return result;
- }
- //----- (00507880) --------------------------------------------------------
- int __cdecl sub_507880(int a1, char *src, int a3, char a4)
- {
- int result; // eax@2
- int v5; // esi@4
- int v6; // eax@6
- if ( a1 )
- result = GetChannelById(a1);
- else
- result = GetChannelByName((int)src);
- v5 = result;
- if ( result && *(_DWORD *)result )
- {
- v6 = *(_DWORD *)(result + 148);
- *(_DWORD *)(v5 + 156) = 0;
- if ( v6 )
- {
- dword_BCF010 |= 1 << (v6 - 1);
- SStrCopy((char *)(v5 + 4), src, 128);
- }
- *(_DWORD *)(v5 + 152) = a3;
- *(_BYTE *)(v5 + 144) = a4;
- result = sub_505D40();
- }
- return result;
- }
- //----- (00507900) --------------------------------------------------------
- int __cdecl sub_507900(int a1, int a2)
- {
- int result; // eax@2
- int v3; // esi@4
- int v4; // eax@6
- if ( a1 )
- result = GetChannelById(a1);
- else
- result = GetChannelByName(a2);
- v3 = result;
- if ( result )
- {
- *(_DWORD *)(result + 156) = 1;
- if ( dword_B743CC )
- {
- v4 = sub_4FE1C0(dword_B743CC, (int)&a1);
- if ( !a1 && v3 != -4 && v4 && !SStrCmpUTF8I(v3 + 4, v4, 0x7FFFFFFF) )
- {
- if ( dword_B7447C[8 * dword_B743CC] )
- FrameScript::SignalEvent(EVENT_CHANNEL_VOICE_UPDATE, "%d%d", dword_B743CC + 1, dword_B7447C[8 * dword_B743CC]);
- else
- FrameScript::SignalEvent(EVENT_CHANNEL_VOICE_UPDATE, "%d", dword_B743CC + 1);
- dword_B743CC = 0;
- }
- }
- if ( !dword_B743DC && v3 != -4 && !SStrCmpUTF8I(v3 + 4, (int)byte_B743E0, 0x7FFFFFFF) )
- {
- memset(byte_B743E0, 0, 0x80u);
- dword_B743DC = 4;
- sub_502360((int)&dword_BCFB68);
- dword_BCFB68 = 0;
- dword_BCFB6C = 0;
- dword_BCFB70 = 0;
- dword_B743D4 = 0;
- }
- result = sub_505D40();
- }
- return result;
- }
- //----- (00507A30) --------------------------------------------------------
- signed int __cdecl sub_507A30(int a1, int a2)
- {
- unsigned int v2; // eax@2
- if ( a1 )
- v2 = GetChannelById(a1);
- else
- v2 = GetChannelByName(a2);
- if ( v2 )
- {
- *(_DWORD *)v2 = 0;
- *(_BYTE *)(v2 + 4) = 0;
- *(_DWORD *)(v2 + 148) = 0;
- *(_DWORD *)(v2 + 156) = 1;
- *(_DWORD *)(v2 + 160) = 1;
- }
- return sub_505D40();
- }
- //----- (00507A80) --------------------------------------------------------
- char __cdecl sub_507A80(char *src, char *a2, unsigned int a3, char a4, int *a5, int *a6, char a7, int a8, int a9, unsigned int a10)
- {
- int v10; // edi@1
- int v11; // ebx@1
- int *v12; // esi@9
- unsigned int v13; // eax@14
- int v14; // ecx@15
- void *v15; // eax@23
- unsigned int v17; // eax@31
- int *v18; // eax@38
- int a1; // [sp+Ch] [bp-124h]@1
- void *v20; // [sp+10Ch] [bp-24h]@1
- int v21; // [sp+110h] [bp-20h]@3
- int v22; // [sp+114h] [bp-1Ch]@35
- int v23; // [sp+118h] [bp-18h]@35
- int v24; // [sp+11Ch] [bp-14h]@35
- int v25; // [sp+120h] [bp-10h]@35
- int v26; // [sp+124h] [bp-Ch]@35
- int v27; // [sp+128h] [bp-8h]@35
- unsigned int v28; // [sp+12Ch] [bp-4h]@6
- v10 = 0;
- *a5 = 0;
- *a6 = 0;
- SStrCopy((char *)&a1, src, 256);
- v11 = g_ChatChannelsDB.numRows;
- v20 = dword_BD0780;
- if ( dword_BD080C < g_AreaTableDB.minIndex || dword_BD080C > g_AreaTableDB.maxIndex )
- v21 = 0;
- else
- v21 = g_AreaTableDB.Rows[dword_BD080C - g_AreaTableDB.minIndex];
- if ( g_ChatChannelsDB.numRows > 0u )
- {
- v28 = 0;
- while ( 1 )
- {
- v12 = v10 < 0 || v10 >= g_ChatChannelsDB.numRows ? 0 : &g_ChatChannelsDB.FirstRow[v28 / 4];
- if ( !SStrCmpUTF8I(v12[4], (int)src, 0x7FFFFFFF) )
- break;
- v28 += 20;
- ++v10;
- if ( v10 >= (unsigned int)v11 )
- goto LABEL_13;
- }
- if ( v21 && *((_BYTE *)v12 + 4) & 0x20 && *(_DWORD *)(v21 + 16) & 0x100 && dword_B74464[0] )
- v15 = *(void **)(dword_B74464[0] + 44);
- else
- v15 = v20;
- if ( !v15 || !*(_BYTE *)v15 )
- return 0;
- *a5 = v12[4];
- *a6 = *v12;
- SStrPrintf((char *)&a1, 256, (char *)v12[3], v15);
- a2 = &byte_9E14FF;
- if ( a4 && v12[1] & 0x20000 )
- sub_508260(0, 1);
- }
- LABEL_13:
- if ( *a6 )
- {
- v13 = 0;
- if ( !dword_BCF090 )
- goto LABEL_34;
- v14 = dword_BCF094 + 148;
- while ( *(_DWORD *)v14 != *a6 )
- {
- ++v13;
- v14 += 168;
- if ( v13 >= dword_BCF090 )
- goto LABEL_34;
- }
- v17 = dword_BCF094 + 168 * v13;
- }
- else
- {
- v17 = GetChannelByName((int)&a1);
- }
- if ( !v17 )
- {
- LABEL_34:
- if ( sub_5076B0((char *)&a1, *a6, a7, a8 != 0, a9 != 0, a10) )
- {
- v22 = (int)off_9E0E24;
- v23 = 0;
- v24 = 0;
- v25 = 0;
- v26 = 0;
- v27 = -1;
- CDataStore::PutInt32((CDataStore *)&v22, 151);
- CDataStore::PutInt32((CDataStore *)&v22, *a6);
- CDataStore::PutInt8((CDataStore *)&v22, a7);
- CDataStore::PutInt8((CDataStore *)&v22, a8);
- CDataStore::PutCString((CDataStore *)&v22, (char *)&a1);
- CDataStore::PutCString((CDataStore *)&v22, a2);
- v27 = 0;
- ClientServices::SendPacket_1((CDataStore *)&v22);
- v22 = (int)off_9E0E24;
- if ( v25 != -1 )
- CDataStore::InternalDestroy((void **)&v23, (int)&v24, (int)&v25);
- goto LABEL_37;
- }
- return 0;
- }
- LABEL_37:
- if ( a3 < 0xA )
- {
- v18 = (int *)*a5;
- if ( !*a5 )
- v18 = &a1;
- sub_501A70((int)&byte_BCF0B0[256 * a3], (int)v18, *a6);
- dword_BCEFE0 = 1;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement