Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Development] Season XII Source Chinesse Team - based on X-TEAM

Newbie Spellweaver
Joined
Feb 16, 2017
Messages
27
Reaction score
4
Main season 13 cracked and unpacked for who want to try !!
download:
change configs in config.ini

QWlwAKi - [Development] Season XII Source Chinesse Team - based on X-TEAM - RaGEZONE Forums



Code:
change BYTE CharSet[19] instead of BYTE CharSet[18] in all structures

MagicStoneMix number = 0xF6

4th wings charset
Code:
#if(GAMESERVER_UPDATE>=1301)
else if (TempInventory[7] >= 414 && TempInventory[7] <= 421) //Season 13
    {
  lpObj->CharSet[9] |= 0x05;
  lpObj->CharSet[16] |= ((TempInventory[7] - 414) << 2);
  
  lpObj->CharSet[18] |= Level;
 
    }
 #endif

PMSG_DAMAGE_SEND
Code:
struct PMSG_DAMAGE_SEND
{
    PBMSG_HEAD header; // C1:[PROTOCOL_CODE2]
    BYTE index[2];
    #if(GAMESERVER_UPDATE>=1301)
    DWORD damage;
    #else
    BYTE damage[2];
    #endif
    #if(GAMESERVER_UPDATE>=701)
    BYTE type[2];
    #else
    BYTE type;
    #endif
    BYTE ShieldDamage[2];
    #if(GAMESERVER_UPDATE>=701)
    BYTE attribute;
    #endif
    #if(GAMESERVER_EXTRA==1)
    DWORD ViewCurHP;
    DWORD ViewCurSD;
    DWORD ViewDamageHP;
    DWORD ViewDamageSD;
    #endif
};

PMSG_CHARACTER_LIST_SEND
Code:
struct PMSG_CHARACTER_LIST_SEND
{
    PSBMSG_HEAD header; // C1:F3:00
    #if(GAMESERVER_UPDATE>=1301)
    BYTE unk[2];
    #endif
    BYTE ClassCode;
    BYTE MoveCnt;
    BYTE count;
    #if(GAMESERVER_UPDATE>=602)
    #if(GAMESERVER_UPDATE>=1200)
    BYTE ExtWarehouse[2];
    #else
    BYTE ExtWarehouse;
    #endif
    #endif
};

Code:
struct PMSG_MONSTER_DAMAGE_SEND
{
    PSBMSG_HEAD header; // C1:F3:07
    #if(GAMESERVER_UPDATE>=1301)
    DWORD damage;
    #else
    BYTE damage[2];
    #endif
    BYTE ShieldDamage[2];
    #if(GAMESERVER_EXTRA==1)
    DWORD ViewCurHP;
    DWORD ViewCurSD;
    DWORD ViewDamageHP;
    DWORD ViewDamageSD;
    #endif
};

HackPacketCheck.txt
//Index Value Encrypt MaxDelay MinCount MaxCount
0 * 0 0 0 0 //S13
1 * 0 0 0 0
2 * 0 0 0 0
3 * 1 0 0 0
4 * 0 0 0 0
5 * 0 0 0 0
6 * 0 0 0 0
7 * 0 0 0 0
8 * 0 0 0 0
9 * 0 0 0 0
10 * 0 0 0 0
11 * 0 0 0 0
12 * 0 0 0 0
13 * 0 0 0 0
14 * 1 0 0 0
15 * 0 0 0 0
16 * 0 0 0 0
17 * 0 0 0 0
18 * 0 0 0 0
19 * 0 0 0 0
20 * 0 0 0 0
21 * 0 0 0 0
22 * 0 0 0 0
23 * 0 0 0 0
24 * 0 2000 10 15
25 * 1 0 0 0
26 * 0 0 0 0
27 * 1 0 0 0
28 * 1 0 0 0
29 * 0 0 0 0
30 * 1 0 0 0
31 * 0 0 0 0
32 * 0 0 0 0
33 * 0 0 0 0
34 * 1 0 0 0
35 * 1 0 0 0
36 * 1 0 0 0
37 * 0 0 0 0
38 * 1 0 0 0
39 * 0 0 0 0
40 * 0 0 0 0
41 * 0 0 0 0
42 * 0 0 0 0
43 * 0 0 0 0
44 * 0 0 0 0
45 * 0 0 0 0
46 * 0 0 0 0
47 * 0 0 0 0
48 * 1 0 0 0
49 * 0 0 0 0
50 * 1 0 0 0
51 * 1 0 0 0
52 * 1 0 0 0
53 * 1 0 0 0 //S13
54 * 1 0 0 0
55 * 1 0 0 0 //S13
56 * 0 0 0 0
57 * 0 0 0 0
58 * 1 0 0 0 //S13
59 * 0 0 0 0
60 * 1 0 0 0
61 * 1 0 0 0
62 * 0 0 0 0
63 * 1 0 0 0
64 * 1 0 0 0
65 * 1 0 0 0
66 * 0 0 0 0
67 * 0 0 0 0
68 * 0 0 0 0
69 * 0 0 0 0
70 * 0 0 0 0
71 * 0 0 0 0
72 * 0 0 0 0
73 * 0 0 0 0
74 * 1 0 0 0
75 * 0 0 0 0
76 * 0 0 0 0
77 0 1 0 0 0
77 1 1 0 0 0
77 15 1 0 0 0 //S13
77 16 1 0 0 0 //S13
77 17 1 0 0 0 //S13
77 18 1 0 0 0 //S13
77 19 1 0 0 0 //S13
77 20 1 0 0 0 //S13
77 21 1 0 0 0 //S13
77 35 1 0 0 0 //S13
77 36 1 0 0 0 //S13
77 37 1 0 0 0 //S13
77 39 1 0 0 0 //S13
77 40 1 0 0 0 //S13
78 0 1 0 0 0
78 1 0 0 0 0
78 8 0 0 0 0
78 9 1 0 0 0
78 17 0 0 0 0 //
78 19 0 0 0 0 //
78 35 0 0 0 0 //S13
79 * 1 0 0 0 //S13
80 * 0 0 0 0
81 * 0 0 0 0
82 * 0 0 0 0
83 * 0 0 0 0
84 * 0 0 0 0
85 * 0 0 0 0
86 * 0 0 0 0
87 * 0 0 0 0
88 * 0 0 0 0
89 * 1 0 0 0
90 * 0 0 0 0
91 * 0 0 0 0
92 * 0 0 0 0
93 * 0 0 0 0
94 * 0 0 0 0
95 * 0 0 0 0
96 * 0 0 0 0
97 * 0 0 0 0
98 * 0 0 0 0
99 * 0 0 0 0
100 * 0 0 0 0
101 * 0 0 0 0
102 * 0 0 0 0
103 * 0 0 0 0
104 * 0 0 0 0
105 * 0 0 0 0
106 * 0 0 0 0
107 * 0 0 0 0
108 * 0 0 0 0
109 * 0 0 0 0
110 * 0 0 0 0
111 * 0 0 0 0
112 * 0 0 0 0
113 * 0 0 0 0
114 * 1 0 0 0
115 * 1 0 0 0
116 * 0 0 0 0
117 * 0 0 0 0
118 * 0 0 0 0 //S13
119 * 0 0 0 0
120 * 0 0 0 0
121 * 0 0 0 0
122 * 0 0 0 0
123 * 0 0 0 0
124 * 0 0 0 0
125 * 0 0 0 0
126 * 0 0 0 0 //4th skill tree
127 * 0 0 0 0
128 * 0 0 0 0
129 * 0 0 0 0
130 * 0 0 0 0
131 * 1 0 0 0
132 * 0 0 0 0
133 * 0 0 0 0
134 * 0 0 0 0
135 * 0 0 0 0
136 * 0 0 0 0
137 * 0 0 0 0
138 * 0 0 0 0
139 * 0 0 0 0
140 * 0 0 0 0
141 * 0 0 0 0
142 * 1 0 0 0 //S13
143 * 0 0 0 0
144 * 0 0 0 0
145 * 0 0 0 0
146 * 0 0 0 0
147 * 0 0 0 0
148 * 0 0 0 0
149 * 0 0 0 0
150 * 0 0 0 0
151 * 0 0 0 0
152 * 0 0 0 0
153 * 0 0 0 0
154 * 0 0 0 0
155 * 0 0 0 0
156 * 0 0 0 0
157 * 0 0 0 0
158 * 0 0 0 0
159 * 0 0 0 0
160 * 1 0 0 0 //S13
161 * 0 0 0 0
162 * 1 0 0 0
163 * 0 0 0 0
164 * 0 0 0 0
165 * 0 0 0 0
166 * 0 0 0 0
167 * 0 0 0 0
168 * 0 0 0 0
169 * 0 0 0 0
170 * 1 0 0 0
171 * 0 0 0 0
172 * 0 0 0 0
173 * 0 0 0 0
174 * 0 0 0 0
175 * 0 0 0 0
176 * 1 0 0 0
177 * 1 0 0 0
178 * 0 0 0 0
179 * 0 0 0 0
180 * 0 0 0 0
181 * 0 0 0 0
182 * 0 0 0 0
183 * 0 0 0 0
184 * 0 0 0 0
185 * 0 0 0 0
186 * 0 0 0 0
187 * 0 0 0 0
188 * 0 0 0 0
189 * 0 0 0 0
190 * 0 0 0 0
191 * 0 0 0 0
192 * 0 0 0 0
193 * 0 0 0 0
194 * 0 0 0 0
195 * 0 0 0 0
196 * 0 0 0 0
197 * 1 0 0 0
198 * 0 0 0 0
199 * 0 0 0 0
200 * 0 0 0 0
201 * 0 0 0 0
202 * 0 0 0 0
203 * 0 0 0 0
204 * 0 0 0 0
205 * 0 0 0 0
206 * 0 0 0 0
207 * 0 0 0 0
208 * 0 0 0 0
208 7 0 0 0 0 //
208 8 0 0 0 0 //
208 242 1 0 0 0 //
208 240 1 0 0 0 //
209 * 0 0 0 0
210 * 1 0 0 0 //S13
211 * 1 0 0 0 //?enc = 0
212 * 0 0 0 0
213 * 0 0 0 0
214 * 0 0 0 0
215 * 0 0 0 0
216 * 1 0 0 0
217 * 0 0 0 0
218 * 0 0 0 0
219 * 1 0 0 0
220 * 0 0 0 0
221 * 0 0 0 0
222 * 0 0 0 0
223 * 0 0 0 0
224 * 0 0 0 0
225 * 0 0 0 0
226 * 0 0 0 0
227 * 0 0 0 0
228 * 0 0 0 0
229 * 0 0 0 0
230 * 0 0 0 0
231 * 0 0 0 0
232 * 1 0 0 0 //S13
233 * 0 0 0 0
234 * 0 0 0 0
235 * 0 0 0 0
236 0 1 0 0 0 //S13
236 1 1 0 0 0
236 2 1 0 0 0
236 3 1 0 0 0
236 5 1 0 0 0 //
236 7 0 0 0 0 // Wing 4 upgrade
236 39 0 0 0 0 //
236 49 0 0 0 0 //S13
236 51 1 0 0 0
236 80 0 0 0 0 //S13
236 81 0 0 0 0 //S13
236 82 0 0 0 0 //S13
236 84 0 0 0 0 //S13
237 * 0 0 0 0
238 * 0 0 0 0
239 * 0 0 0 0
240 * 0 0 0 0
241 * 1 0 0 0
242 * 0 0 0 0
243 * * 0 0 0
244 * 0 0 0 0
245 * 0 0 0 0
246 10 1 0 0 0 //S13
246 11 1 0 0 0 //S13
246 13 1 0 0 0 //S13
246 15 1 0 0 0 //S13
246 16 1 0 0 0 //S13
246 26 1 0 0 0 //S13
246 27 1 0 0 0 //S13
246 28 0 0 0 0 //S13
246 33 1 0 0 0 //S13
246 48 1 0 0 0 //S13
246 49 1 0 0 0 //S13
246 81 1 0 0 0 //S13
246 82 1 0 0 0 //S13
246 84 1 0 0 0 //S13
246 85 1 0 0 0 //S13
247 * 0 0 0 0
248 * 0 0 0 0
249 * 0 0 0 0
250 * 0 0 0 0
251 * 0 0 0 0
252 * 0 0 0 0
253 * 0 0 0 0
254 * 0 0 0 0
255 * 1 0 0 0 //S13
end
Pyke - [Development] Season XII Source Chinesse Team - based on X-TEAM - RaGEZONE Forums



When you enter a game or die, you add a lot of useless buffs.
 

Attachments

You must be registered for see attachments list
Skilled Illusionist
Joined
Jun 22, 2017
Messages
363
Reaction score
561
Pyke - [Development] Season XII Source Chinesse Team - based on X-TEAM - RaGEZONE Forums



When you enter a game or die, you add a lot of useless buffs.

i just shared some structures can help to login, but webzen changed a lot of things.
tips: ProtocolCore function is deobfuscated that you can research easy
 
Newbie Spellweaver
Joined
Feb 16, 2017
Messages
27
Reaction score
4
i just shared some structures can help to login, but webzen changed a lot of things.
tips: ProtocolCore function is deobfuscated that you can research easy

please share source of the main.dll.
 
Last edited:
Newbie Spellweaver
Joined
Feb 20, 2016
Messages
26
Reaction score
4
I will let here a protocolcore from a season 12 decopiled, it will help who is working on it.
Code:
void __cdecl ProtocolCore(char protoNum, char *aRecv, int aLen, int aIndex, int Encrypt, int serial)
{
  int v6; // eax@4
  int v7; // eax@9
  char v8; // [sp+Ch] [bp-170h]@19
  char v9; // [sp+Ch] [bp-170h]@100
  char v10; // [sp+Ch] [bp-170h]@126
  char v11; // [sp+Ch] [bp-170h]@164
  char v12; // [sp+Ch] [bp-170h]@185
  char v13; // [sp+Ch] [bp-170h]@193
  char v14; // [sp+Ch] [bp-170h]@224
  char v15; // [sp+Ch] [bp-170h]@233
  char v16; // [sp+Ch] [bp-170h]@239
  char v17; // [sp+Ch] [bp-170h]@259
  char v18; // [sp+Ch] [bp-170h]@349
  char v19; // [sp+Ch] [bp-170h]@464
  char v20; // [sp+Ch] [bp-170h]@491
  char v21; // [sp+9Ch] [bp-E0h]@313
  int v22; // [sp+9Dh] [bp-DFh]@313
  int v23; // [sp+A4h] [bp-D8h]@312
  _tagPMSG_REQ_DUEL_LEAVECNANNEL *v24; // [sp+A8h] [bp-D4h]@312
  char v25; // [sp+ACh] [bp-D0h]@310
  int v26; // [sp+ADh] [bp-CFh]@310
  int v27; // [sp+B1h] [bp-CBh]@310
  int v28; // [sp+B5h] [bp-C7h]@310
  int v29; // [sp+B9h] [bp-C3h]@310
  int v30; // [sp+BDh] [bp-BFh]@310
  int v31; // [sp+C1h] [bp-BBh]@310
  int v32; // [sp+C5h] [bp-B7h]@310
  char v33; // [sp+C9h] [bp-B3h]@310
  int v34; // [sp+CCh] [bp-B0h]@309
  _tagPMSG_REQ_DUEL_JOINCNANNEL *v35; // [sp+D0h] [bp-ACh]@309
  char Msg; // [sp+D4h] [bp-A8h]@307
  int v37; // [sp+D5h] [bp-A7h]@307
  int v38; // [sp+D9h] [bp-A3h]@307
  int v39; // [sp+DDh] [bp-9Fh]@307
  int v40; // [sp+E1h] [bp-9Bh]@307
  int v41; // [sp+E8h] [bp-94h]@306
  _tagPMSG_REQ_DUEL_EXIT *v42; // [sp+ECh] [bp-90h]@306
  int v43; // [sp+F0h] [bp-8Ch]@305
  _tagPMSG_ANS_DUEL_ANSWER *lpMsg; // [sp+F4h] [bp-88h]@305
  _tagPMSG_ANS_DUEL_INVITE res; // [sp+F8h] [bp-84h]@303
  int nRet; // [sp+10Ch] [bp-70h]@302
  _tagPMSG_REQ_DUEL_INVITE *lpReq; // [sp+110h] [bp-6Ch]@302
  unsigned __int16 wPacketType; // [sp+114h] [bp-68h]@301
  char *v49; // [sp+118h] [bp-64h]@300
  char *v50; // [sp+11Ch] [bp-60h]@277
  char *v51; // [sp+120h] [bp-5Ch]@267
  char *v52; // [sp+124h] [bp-58h]@259
  char *v53; // [sp+128h] [bp-54h]@247
  char *v54; // [sp+12Ch] [bp-50h]@239
  char *v55; // [sp+130h] [bp-4Ch]@233
  char *v56; // [sp+134h] [bp-48h]@230
  char *v57; // [sp+138h] [bp-44h]@224
  char *v58; // [sp+13Ch] [bp-40h]@203
  char *v59; // [sp+140h] [bp-3Ch]@199
  char *v60; // [sp+144h] [bp-38h]@193
  char *v61; // [sp+148h] [bp-34h]@185
  char *v62; // [sp+14Ch] [bp-30h]@182
  char *v63; // [sp+150h] [bp-2Ch]@170
  char *v64; // [sp+154h] [bp-28h]@164
  char *v65; // [sp+158h] [bp-24h]@153
  char *v66; // [sp+15Ch] [bp-20h]@134
  char *v67; // [sp+160h] [bp-1Ch]@126
  char *v68; // [sp+164h] [bp-18h]@106
  char *v69; // [sp+168h] [bp-14h]@100
  OBJECTSTRUCT *lpObj; // [sp+16Ch] [bp-10h]@47
  PMSG_DEFAULT2 *lpDef; // [sp+170h] [bp-Ch]@32
  PMSG_DEFAULT2 *lpMsg2; // [sp+174h] [bp-8h]@19


  if ( gStalkProtocol )
  {
    if ( gStalkProtocolId == gObj[aIndex].AccountID[0] && byte_B578215 == gObj[aIndex].AccountID[1] )
    {
      j__strcmp(&gStalkProtocolId, gObj[aIndex].AccountID);
      if ( !v6 )
        LogAddHeadHex(gObj[aIndex].AccountID, aRecv, aLen);
    }
  }
  if ( serial < 0 || gObj[aIndex].Type != 1 || NSerialCheck::InCheck((NSerialCheck *)(8 * aIndex + 241847592), serial) )
  {
    CheckPacketValidation(aIndex, protoNum);
    if ( (unsigned __int8)protoNum != 241 && (unsigned __int8)protoNum != 243 )
    {
      lpObj = &gObj[aIndex];
      switch ( protoNum )
      {
        case 0:
          tempindex = aIndex;
          PChatProc((PMSG_CHATDATA *)aRecv, aIndex);
          break;
        case 1:
          CGChatRecv((PMSG_CHATDATA_NUMBER *)aRecv, aIndex);
          break;
        case 2:
          CGChatWhisperRecv((PMSG_CHATDATA_WHISPER *)aRecv, aIndex);
          break;
        case 3:
          CGCheckMainRecv((PMSG_CHECK_MAINEXE_RESULT *)aRecv, aIndex);
          break;
        case 0xE:
          CGLiveClient((PMSG_CLIENTTIME *)aRecv, aIndex);
          break;
        case 0xD7:
          PMoveProc((PMSG_MOVE *)aRecv, aIndex);
          break;
        case 0x10:
          RecvPositionSetProc((PMSG_POSISTION_SET *)aRecv, aIndex);
          break;
        case 0xDF:
          CGAttack((PMSG_ATTACK *)aRecv, aIndex);
          break;
        case 0x18:
          CGActionRecv((PMSG_ACTION *)aRecv, aIndex);
          break;
        case 0x19:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGMagicAttack((PMSG_MAGICATTACK *)aRecv, aIndex);
          break;
        case 0x1B:
          CGMagicCancel((PMSG_MAGICCANCEL *)aRecv, aIndex);
          break;
        case 0x1C:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGTeleportRecv((PMSG_TELEPORT *)aRecv, aIndex);
          break;
        case 0xB0:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGTargetTeleportRecv((PMSG_TARGET_TELEPORT *)aRecv, aIndex);
          break;
        case 0xD3:
          CGBeattackRecv(aRecv, aIndex, 0);
          break;
        case 0x1E:
          gObj[aIndex].m_dwTestTick = GetTickCount();
          LogAddTD("[TEST2] C => S Attack Packet ");
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGDurationMagicRecv((PMSG_DURATION_MAGIC_RECV *)aRecv, aIndex);
          break;
        case 0x22:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGItemGetRequest((PMSG_ITEMGETREQUEST *)aRecv, aIndex);
          break;
        case 0x23:
          CGItemDropRequest((PMSG_ITEMTHROW *)aRecv, aIndex, 0);
          break;
        case 0x24:
          CGInventoryItemMove((PMSG_INVENTORYITEMMOVE *)aRecv, aIndex);
          break;
        case 0x26:
          CGUseItemRecv((PMSG_USEITEM *)aRecv, aIndex);
          break;
        case 0x30:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGTalkRequestRecv((PMSG_TALKREQUEST *)aRecv, aIndex);
          break;
        case 0x31:
          CGCloseWindow(aIndex);
          break;
        case 0x32:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGBuyRequestRecv((PMSG_BUYREQUEST *)aRecv, aIndex);
          break;
        case 0x33:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGSellRequestRecv((PMSG_SELLREQUEST *)aRecv, aIndex);
          break;
        case 0x34:
          CGModifyRequestItem((PMSG_ITEMDURREPAIR *)aRecv, aIndex);
          break;
        case 0x35:
          CGDecompositionRequestItem((PMSG_ITEMCOMPOSITION *)aRecv, aIndex);
          break;
        case 0x36:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGTradeRequestSend((PMSG_TRADE_REQUEST *)aRecv, aIndex);
          break;
        case 0x37:
          CGTradeResponseRecv((PMSG_TRADE_RESPONSE *)aRecv, aIndex);
          break;
        case 0x3A:
          CGTradeMoneyRecv((PMSG_TRADE_GOLD *)aRecv, aIndex);
          break;
        case 0x3C:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGTradeOkButtonRecv((PMSG_TRADE_OKBUTTON *)aRecv, aIndex);
          break;
        case 0x3D:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGTradeCancelButtonRecv(aIndex);
          break;
        case 0x3E:
          v69 = aRecv;
          v9 = aRecv[3];
          if ( v9 == 8 )
          {
            CEvolutionMonsterRenewal::CGReqSelectRewardBox(&g_EvoMonRenewal, (PMSG_REQ_EVMON_REWARD *)aRecv, aIndex);
          }
          else if ( v9 == 9 )
          {
            CEvolutionMonsterRenewal::CGReqCloseRewardBox(&g_EvoMonRenewal, aIndex);
          }
          break;
        case 0x3F:
          v68 = aRecv;
          switch ( aRecv[3] )
          {
            case 1:
              CGPShopReqSetItemPrice((PMSG_REQ_PSHOP_SETITEMPRICE *)aRecv, aIndex);
              break;
            case 2:
              CGPShopReqOpen((PMSG_REQ_PSHOP_OPEN *)aRecv, aIndex);
              break;
            case 3:
              CGPShopReqClose(aIndex);
              break;
            case 5:
              CGPShopReqBuyList((PMSG_REQ_BUYLIST_FROM_PSHOP *)aRecv, aIndex);
              break;
            case 6:
              CGPShopReqBuyItem((PMSG_REQ_BUYITEM_FROM_PSHOP *)aRecv, aIndex);
              break;
            case 7:
              CGPShopReqCloseDeal((PMSG_REQ_PSHOPDEAL_CLOSE *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0x40:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGPartyRequestRecv((PMSG_PARTYREQUEST *)aRecv, aIndex);
          break;
        case 0x41:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGPartyRequestResultRecv((PMSG_PARTYREQUESTRESULT *)aRecv, aIndex);
          break;
        case 0x42:
          CGPartyList(aIndex);
          break;
        case 0x43:
          if ( PacketCheckTime(&gObj[aIndex]) == 1 )
            gObj[aIndex].m_btSendDeletePartyMember = 1;
          CGPartyDelUser((stPMSG_PARTYDELUSER *)aRecv, aIndex, 1, 0);
          gObj[aIndex].m_btSendDeletePartyMember = 0;
          break;
        case 0x4A:
          GCMonkMagicAttack((PMSG_MAGICATTACK *)aRecv, aIndex);
          break;
        case 0x4B:
          GCMonkDarkSideTargetSelect((PMSG_MONK_DARKSIDE_RECV *)aRecv, aIndex);
          break;
        case 0x4C:
          v67 = aRecv;
          v10 = aRecv[3];
          if ( v10 )
          {
            if ( v10 == 1 )
            {
              CMineSystem::RewardMineTwinkle(&g_CMineSystem, (_PMSG_REQ_MINETWINKLE_REWARD *)aRecv, aIndex);
            }
            else if ( v10 == 3 )
            {
              CMineSystem::FailMineTwinkle(&g_CMineSystem, (_PMSG_ANS_MINETWINKLE_END_ANIMATION *)aRecv, aIndex, 0);
            }
          }
          else
          {
            CMineSystem::MineTwinkle(&g_CMineSystem, (_PMSG_REQ_MINETWINKLE *)aRecv, aIndex);
          }
          break;
        case 0x4D:
          v66 = aRecv;
          switch ( aRecv[3] )
          {
            case 0:
              if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
                CGEventItemGetRequest((PMSG_EVENTITEM_GETREQUEST *)aRecv, aIndex);
              break;
            case 1:
              CGEventItemDropRequest((PMSG_EVENTITEM_THROW *)aRecv, aIndex);
              break;
            case 0xF:
              CGReqEventInvenOpen(aRecv, aIndex);
              break;
            case 0x10:
              CMuRummyMng::CGReqMuRummyStart(&g_CMuRummyMng, (_tagPMSG_REQ_MURUMMY_INFO *)aRecv, aIndex);
              break;
            case 0x11:
              CMuRummyMng::CGReqCardReveal(&g_CMuRummyMng, (_tagPMSG_REQ_REVEAL_CARD *)aRecv, aIndex);
              break;
            case 0x12:
              CMuRummyMng::CGReqCardMove(&g_CMuRummyMng, (_tagPMSG_REQ_CARD_MOVE *)aRecv, aIndex);
              break;
            case 0x13:
              CMuRummyMng::CGReqCardReMove(&g_CMuRummyMng, (_tagPMSG_REQ_CARD_REMOVE *)aRecv, aIndex);
              break;
            case 0x14:
              CMuRummyMng::CGReqCardMatch(&g_CMuRummyMng, (_tagPMSG_REQ_CARD_MATCH *)aRecv, aIndex);
              break;
            case 0x15:
              CMuRummyMng::CGReqMuRummyEnd(&g_CMuRummyMng, (_tagPMSG_REQ_MURUMMY_END *)aRecv, aIndex);
              break;
            case 0x19:
              CMuRummyMng::CGReqCardMatch4Slot(&g_CMuRummyMng, (_tagPMSG_REQ_CARD_MATCH_4SLOT *)aRecv, aIndex);
              break;
            case 0x23:
              CBombHuntMng::CGReqBombHuntStart(&g_CBombHuntMng, aIndex);
              break;
            case 0x24:
              CBombHuntMng::CGReqLBClick(&g_CBombHuntMng, (_tagPMSG_REQ_BOMB_HUNT_LB_CLICK *)aRecv, aIndex);
              break;
            case 0x25:
              CBombHuntMng::CGReqRBClick(&g_CBombHuntMng, (_tagPMSG_REQ_BOMB_HUNT_RB_CLICK *)aRecv, aIndex);
              break;
            case 0x27:
              CBombHuntMng::CGReqBombHuntBanner(&g_CBombHuntMng, aIndex);
              break;
            case 0x28:
              CBombHuntMng::CGReqReward(&g_CBombHuntMng, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0x4E:
          v65 = aRecv;
          switch ( aRecv[3] )
          {
            case 0:
              if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
                CGMuunItemGetRequest((PMSG_MUUNITEM_GETREQUEST *)aRecv, aIndex);
              break;
            case 8:
              CMuunSystem::CGMuunInventoryUseItemRecv(&g_CMuunSystem, (PMSG_USEITEM_MUUN_INVEN *)aRecv, aIndex);
              break;
            case 9:
              if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
                CGMuunItemSellRequestRecv((PMSG_MUUN_ITEM_SELLREQUEST *)aRecv, aIndex);
              break;
            case 0x11:
              CMuunSystem::CGReqRideSelect(&g_CMuunSystem, (PMSG_MUUN_RIDE_SELECT *)aRecv, aIndex);
              break;
            case 0x13:
              CMuunSystem::CGMuunExchangeItem(&g_CMuunSystem, (PMSG_REQ_MUUN_EXCHANGE *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0x4F:
          v64 = aRecv;
          v11 = aRecv[3];
          if ( v11 == 2 )
          {
            CGremoryCaseMng::GCReqItemRecv(&g_CGremoryCaseMng, (_tagPMSG_REQ_GC_RECV *)aRecv, aIndex);
          }
          else if ( v11 == 5 )
          {
            CGremoryCaseMng::GCReqGCOpen(&g_CGremoryCaseMng, (_tagPMSG_REQ_GC_OPEN *)aRecv, aIndex);
          }
          break;
        case 0x59:
          v63 = aRecv;
          if ( aRecv[3] == 1 )
            GCMagicAttackAction((PMSG_MAGICATTACK_ACTION *)aRecv, aIndex);
          break;
        case 0x50:
          CGGuildRequestRecv((PMSG_GUILDJOINQ *)aRecv, aIndex);
          break;
        case 0x51:
          CGGuildRequestResultRecv((PMSG_GUILDQRESULT *)aRecv, aIndex);
          break;
        case 0x52:
          CGGuildListAll(aIndex);
          break;
        case 0x53:
          CGGuildDelUser((PMSG_GUILDDELUSER *)aRecv, aIndex);
          break;
        case 0x54:
          CGGuildMasterAnswerRecv((PMSG_GUILDMASTERANSWER *)aRecv, aIndex);
          break;
        case 0x55:
          CGGuildMasterInfoSave(aIndex, (PMSG_GUILDINFOSAVE *)aRecv);
          break;
        case 0x57:
          CGGuildMasterCreateCancel(aIndex);
          break;
        case 0x61:
          GCGuildWarRequestSendRecv((PMSG_GUILDWARSEND_RESULT *)aRecv, aIndex);
          break;
        case 0x66:
          GCGuildViewportInfo((PMSG_REQ_GUILDVIEWPORT *)aRecv, aIndex);
          break;
        case 0x6D:
          v62 = aRecv;
          if ( !aRecv[3] )
            CGAwesomiupPlayGuideOptionButtonClickRecv((_PMSG_NOTIFY_PLAY_GUIDE_EXECUTE *)aRecv, aIndex);
          break;
        case 0x6F:
          v61 = aRecv;
          v12 = aRecv[3];
          if ( v12 )
          {
            if ( v12 == 1 )
            {
              CRestoreSoldItem::CGReqQuitRestoreItemInterface(
                &gRestoreSoldItemSystem,
                (PMSG_REQ_QUIT_RESTORE_INTERFACE *)aRecv,
                aIndex);
            }
            else if ( v12 == 2 )
            {
              CGReqRestoreItem((PMSG_REQ_RESTORE_ITEM *)aRecv, aIndex);
            }
          }
          else
          {
            CRestoreSoldItem::CGReqRestoreItemList(
              &gRestoreSoldItemSystem,
              (PMSG_REQ_RESTOREITEM_LIST *)aRecv,
              aIndex,
              0);
          }
          break;
        case 0x70:
          v60 = aRecv;
          v13 = aRecv[3];
          if ( v13 )
          {
            if ( v13 == 1 )
              LuckyItemManager::CGReqLuckyItemSmelting(
                &g_LuckyItemManager,
                (PMSG_REQ_LUCKYITEM_SMELTING *)aRecv,
                aIndex);
          }
          else
          {
            LuckyItemManager::CGReqLuckyItemTicketExchange(
              &g_LuckyItemManager,
              (PMSG_REQ_TICKET_EXCHANGE *)aRecv,
              aIndex);
          }
          break;
        case 0xB1:
          v59 = aRecv;
          if ( aRecv[3] == 1 && DataEncryptCheck(aIndex, protoNum, Encrypt) )
            CGReqMapSvrAuth((PMSG_REQ_MAPSERVERAUTH *)aRecv, aIndex);
          break;
        case 0xB2:
          v58 = aRecv;
          switch ( aRecv[3] )
          {
            case 0:
              CGReqCastleSiegeState((PMSG_REQ_CASTLESIEGESTATE *)aRecv, aIndex);
              break;
            case 1:
              CGReqRegCastleSiege((PMSG_REQ_REGCASTLESIEGE *)aRecv, aIndex);
              break;
            case 2:
              CGReqGiveUpCastleSiege((PMSG_REQ_GIVEUPCASTLESIEGE *)aRecv, aIndex);
              break;
            case 3:
              CGReqGuildRegInfo((PMSG_REQ_GUILDREGINFO *)aRecv, aIndex);
              break;
            case 4:
              CGReqRegGuildMark((PMSG_REQ_REGGUILDMARK *)aRecv, aIndex);
              break;
            case 5:
              CGReqNpcBuy((PMSG_REQ_NPCBUY *)aRecv, aIndex);
              break;
            case 6:
              CGReqNpcRepair((PMSG_REQ_NPCREPAIR *)aRecv, aIndex);
              break;
            case 7:
              CGReqNpcUpgrade((PMSG_REQ_NPCUPGRADE *)aRecv, aIndex);
              break;
            case 8:
              CGReqTaxMoneyInfo((PMSG_REQ_TAXMONEYINFO *)aRecv, aIndex);
              break;
            case 9:
              CGReqTaxRateChange((PMSG_REQ_TAXRATECHANGE *)aRecv, aIndex);
              break;
            case 0x10:
              CGReqMoneyDrawOut((PMSG_REQ_MONEYDRAWOUT *)aRecv, aIndex);
              break;
            case 0x12:
              CGReqCsGateOperate((PMSG_REQ_CSGATEOPERATE *)aRecv, aIndex);
              break;
            case 0x1B:
              CGReqCsMiniMapData((PMSG_REQ_MINIMAPDATA *)aRecv, aIndex);
              break;
            case 0x1C:
              CGReqStopCsMiniMapData((PMSG_REQ_STOPMINIMAPDATA *)aRecv, aIndex);
              break;
            case 0x1D:
              CGReqCsSendCommand((PMSG_REQ_CSCOMMAND *)aRecv, aIndex);
              break;
            case 0x1F:
              CGReqCsSetEnterHuntZone((PMSG_REQ_CSHUNTZONEENTER *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0xB3:
          CGReqNpcDbList((PMSG_REQ_NPCDBLIST *)aRecv, aIndex);
          break;
        case 0xB4:
          CGReqCsRegGuildList((PMSG_REQ_CSREGGUILDLIST *)aRecv, aIndex);
          break;
        case 0xB5:
          CGReqCsAttkGuildList((PMSG_REQ_CSATTKGUILDLIST *)aRecv, aIndex);
          break;
        case 0xB7:
          v57 = aRecv;
          v14 = aRecv[3];
          if ( v14 == 1 )
          {
            CGReqWeaponUse((PMSG_REQ_USEWEAPON *)aRecv, aIndex);
          }
          else if ( v14 == 4 )
          {
            CGReqWeaponDamageValue((PMSG_REQ_WEAPON_DAMAGE_VALUE *)aRecv, aIndex);
          }
          break;
        case 0xB9:
          v56 = aRecv;
          if ( aRecv[3] == 2 )
            CGReqGuildMarkOfCastleOwner((PMSG_REQ_GUILDMARK_OF_CASTLEOWNER *)aRecv, aIndex);
          break;
        case 0xBC:
          v55 = aRecv;
          v15 = aRecv[3];
          if ( v15 )
          {
            if ( v15 == 1 )
              CGReqJewelUnMix((PMSG_REQ_JEWEL_UNMIX *)aRecv, aIndex);
          }
          else
          {
            CGReqJewelMix((PMSG_REQ_JEWEL_MIX *)aRecv, aIndex);
          }
          break;
        case 0xBD:
          v54 = aRecv;
          v16 = aRecv[3];
          if ( v16 )
          {
            if ( v16 == 3 )
            {
              CGReqAlatrContract((PMSG_REQ_CRYWOLF_ALTAR_CONTRACT *)aRecv, aIndex);
            }
            else if ( v16 == 9 )
            {
              CGReqPlusChaosRate((PMSG_REQ_CRYWOLF_BENEFIT_PLUS_CHAOSRATE *)aRecv, aIndex);
            }
          }
          else
          {
            CGReqCrywolfInfo((PMSG_REQ_CRYWOLF_INFO *)aRecv, aIndex);
          }
          break;
        case 0xCD:
          v53 = aRecv;
          switch ( aRecv[3] )
          {
            case 1:
              CGReqUBFMyCharacterInfo((PMSG_REQ_UBF_INFO *)aRecv, aIndex);
              break;
            case 2:
              CGReqUBFJoin((PMSG_REQ_UBF_JOIN *)aRecv, aIndex);
              break;
            case 6:
              CGReqUBFGetReward((PMSG_REQ_GET_REWARD *)aRecv, aIndex);
              break;
            case 7:
              CGReqUBFCancel((PMSG_REQ_UBF_CANCEL *)aRecv, aIndex);
              break;
            case 8:
              CGReqUBFGetRealName((PMSG_REQ_UBF_REAL_NAME *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0xE1:
          CGGuildAssignStatus((PMSG_GUILD_ASSIGN_STATUS_REQ *)aRecv, aIndex);
          break;
        case 0xE2:
          CGGuildAssignType((PMSG_GUILD_ASSIGN_TYPE_REQ *)aRecv, aIndex);
          break;
        case 0xE5:
          CGRelationShipReqJoinBreakOff((PMSG_RELATIONSHIP_JOIN_BREAKOFF_REQ *)aRecv, aIndex);
          break;
        case 0xE6:
          CGRelationShipAnsJoinBreakOff((PMSG_RELATIONSHIP_JOIN_BREAKOFF_ANS *)aRecv, aIndex);
          break;
        case 0xE9:
          CGUnionList((PMSG_UNIONLIST_REQ *)aRecv, aIndex);
          break;
        case 0xE7:
          v52 = aRecv;
          v17 = aRecv[3];
          switch ( v17 )
          {
            case 1:
              CGReqSendMemberPosInfoStart(aIndex);
              break;
            case 2:
              CGReqSendMemberPosInfoStop(aIndex);
              break;
            case 3:
              GCReqSendNpcPosInfo((_PMSG_REQ_NPC_POSITION *)aRecv, aIndex);
              break;
          }
          break;
        case 0xEB:
          v51 = aRecv;
          if ( aRecv[3] == 1 )
            CGRelationShipReqKickOutUnionMember((PMSG_KICKOUT_UNIONMEMBER_REQ *)aRecv, aIndex);
          break;
        case 0x71:
          GCPingSendRecv((PMSG_PING_RESULT *)aRecv, aIndex);
          break;
        case 0x72:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            GCPacketCheckSumRecv((PMSG_PACKETCHECKSUM *)aRecv, aIndex);
          break;
        case 0x73:
          if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
            GCNPggCheckSumRecv((PMSG_NPROTECTGGCHECKSUM *)aRecv, aIndex);
          break;
        case 0x77:
          v50 = aRecv;
          switch ( aRecv[3] )
          {
            case 0:
              Labyrinth::CGReqCheckLabyrinthEntering(&g_Labyrinth, aIndex);
              break;
            case 1:
              Labyrinth::CGReqEnterLabyrinth(&g_Labyrinth, aIndex);
              break;
            case 5:
              Labyrinth::CGReqMoveLabyrinthZone(&g_Labyrinth, aIndex, (PMSG_REQ_MOVE_LABYRINTH_ZONE *)aRecv);
              break;
            case 0x11:
              Labyrinth::CGReqLevelUpLabyrinth(&g_Labyrinth, aIndex, (PMSG_REQ_LABYRINTH_DIMENSION_LEVEL_UP *)aRecv);
              break;
            default:
              return;
          }
          break;
        case 0x81:
          CGWarehouseMoneyInOut(aIndex, (PMSG_WAREHOUSEMONEYINOUT *)aRecv);
          break;
        case 0x82:
          CGWarehouseUseEnd(aIndex);
          break;
        case 0x83:
          GCWarehouseRecivePassword(aIndex, (PMSG_WAREHOUSEPASSSEND *)aRecv);
          break;
        case 0x86:
          CGChaosBoxItemMixButtonClick((PMSG_CHAOSMIX *)aRecv, aIndex);
          break;
        case 0x87:
          CGChaosBoxUseEnd(aIndex);
          break;
        case 0x88:
          CGLQChaosBoxSpaceCheck((PMSG_REQ_LQMIX_SPACE_CHECK *)aRecv, aIndex);
          break;
        case 0x90:
          GCReqmoveDevilSquare((PMSG_REQ_MOVEDEVILSQUARE *)aRecv, aIndex);
          break;
        case 0x91:
          GCReqDevilSquareRemainTime((PMSG_REQ_DEVILSQUARE_REMAINTIME *)aRecv, aIndex);
          break;
        case 0x95:
          GCRegEventChipRecv((PMSG_REGEVENTCHIP *)aRecv, aIndex);
          break;
        case 0x96:
          GCGetMutoNumRecv((PMSG_GETMUTONUMBER *)aRecv, aIndex);
          break;
        case 0x97:
          GCUseEndEventChipRescv(aIndex);
          break;
        case 0x98:
          GCUseRenaChangeZenRecv((PMSG_EXCHANGE_EVENTCHIP *)aRecv, aIndex);
          break;
        case 0x99:
          CGReqMoveOtherServer((PMSG_REQ_MOVE_OTHERSERVER *)aRecv, aIndex);
          break;
        case 0xA0:
          CGRequestQuestInfo(aIndex);
          break;
        case 0xA2:
          CGSetQuestState((PMSG_SETQUEST *)aRecv, aIndex);
          break;
        case 0xA7:
          CGRequestPetItemCommand((PMSG_REQUEST_PET_ITEM_COMMAND *)aRecv, aIndex);
          break;
        case 0xA9:
          CGRequestPetItemInfo((PMSG_REQUEST_PET_ITEMINFO *)aRecv, aIndex);
          break;
        case 0xAA:
          v49 = aRecv;
          if ( aRecv[3] )
          {
            wPacketType = (unsigned __int8)v49[3] | 0xAA00;
            switch ( wPacketType )
            {
              case 0xAA01u:
                lpReq = (_tagPMSG_REQ_DUEL_INVITE *)aRecv;
                nRet = OnCGInviteDuel((_tagPMSG_REQ_DUEL_INVITE *)aRecv, aIndex);
                if ( nRet )
                {
                  *(_DWORD *)&res.NumberH = 0;
                  *(_DWORD *)&res.szName[2] = 0;
                  *(_DWORD *)&res.szName[6] = 0;
                  res.h.c = -63;
                  res.h.size = 17;
                  res.h.headcode = -86;
                  res.h.subcode = 1;
                  res.nResult = nRet;
                  DataSend(aIndex, (char *)&res.h, 0x11u);
                }
                break;
              case 0xAA02u:
                lpMsg = (_tagPMSG_ANS_DUEL_ANSWER *)aRecv;
                v43 = OnCGAnswerDuel((_tagPMSG_ANS_DUEL_ANSWER *)aRecv, aIndex);
                break;
              case 0xAA03u:
                v42 = (_tagPMSG_REQ_DUEL_EXIT *)aRecv;
                v41 = OnCGLeaveDuel((_tagPMSG_REQ_DUEL_EXIT *)aRecv, aIndex);
                if ( v41 )
                {
                  v37 = 0;
                  v38 = 0;
                  v39 = 0;
                  v40 = 0;
                  Msg = -63;
                  LOWORD(v37) = -21999;
                  BYTE2(v37) = 3;
                  DataSend(aIndex, &Msg, 0x11u);
                }
                break;
              case 0xAA07u:
                v35 = (_tagPMSG_REQ_DUEL_JOINCNANNEL *)aRecv;
                v34 = OnDuelChannelJoin((_tagPMSG_REQ_DUEL_JOINCNANNEL *)aRecv, aIndex);
                if ( v34 )
                {
                  v27 = 0;
                  v28 = 0;
                  v29 = 0;
                  v30 = 0;
                  v31 = 0;
                  v32 = 0;
                  v33 = 0;
                  v25 = -63;
                  LOWORD(v26) = -21986;
                  BYTE2(v26) = 7;
                  BYTE3(v26) = v34;
                  DataSend(aIndex, &v25, 0x1Eu);
                }
                break;
              case 0xAA09u:
                v24 = (_tagPMSG_REQ_DUEL_LEAVECNANNEL *)aRecv;
                v23 = OnDuelChannelLeave((_tagPMSG_REQ_DUEL_LEAVECNANNEL *)aRecv, aIndex);
                if ( v23 )
                {
                  v21 = -63;
                  LOWORD(v22) = -22011;
                  BYTE2(v22) = 9;
                  BYTE3(v22) = v23;
                  DataSend(aIndex, &v21, 5u);
                }
                break;
              default:
                return;
            }
          }
          break;
        case 0x9A:
          CGRequestEnterBloodCastle((PMSG_REQ_MOVEBLOODCASTLE *)aRecv, aIndex);
          break;
        case 0x9B:
        case 0xF9:
          return;
        case 0x9F:
          CGRequestEventEnterCount((PMSG_REQ_CL_ENTERCOUNT *)aRecv, aIndex);
          break;
        case 0xAF:
          switch ( aRecv[3] )
          {
            case 1:
              CGRequestEnterChaosCastle((PMSG_REQ_MOVECHAOSCASTLE *)aRecv, aIndex);
              break;
            case 2:
              CGRequestRepositionUserInChaosCastle((PMSG_REQ_REPOSUSER_IN_CC *)aRecv, aIndex);
              break;
            case 3:
              CGReqCCF_DayTime(aIndex);
              break;
            case 5:
              CGReqCCF_EnterCheck(aIndex);
              break;
            case 6:
              CGRequestRepositionUserInCCF((PMSG_REQ_REPOSUSER_IN_CCF *)aRecv, aIndex);
              break;
            case 7:
              CGReq_CCF_Ranking((PMSG_REQ_CCF_RANKING *)aRecv, aIndex);
              break;
            case 8:
              CG_CCF_UI_OnOff((PMSG_CCF_UI_ONOFF *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0xC0:
          FriendListRequest(aIndex);
          break;
        case 0xC1:
          FriendAddRequest((PMSG_FRIEND_ADD_REQ *)aRecv, aIndex);
          break;
        case 0xC2:
          WaitFriendAddRequest((PMSG_FRIEND_ADD_SIN_RESULT *)aRecv, aIndex);
          break;
        case 0xC3:
          FriendDelRequest((PMSG_FRIEND_DEL_REQ *)aRecv, aIndex);
          break;
        case 0xC4:
          FriendStateClientRecv((PMSG_FRIEND_STATE_C *)aRecv, aIndex);
          break;
        case 0xC5:
          FriendMemoSend((PMSG_FRIEND_MEMO *)aRecv, aIndex);
          break;
        case 0xC7:
          FriendMemoReadReq((PMSG_FRIEND_READ_MEMO_REQ *)aRecv, aIndex);
          break;
        case 0xC8:
          FriendMemoDelReq((PMSG_FRIEND_MEMO_DEL_REQ *)aRecv, aIndex);
          break;
        case 0xC9:
          FriendMemoListReq(aIndex);
          break;
        case 0xCA:
          FriendChatRoomCreateReq((PMSG_FRIEND_ROOMCREATE_REQ *)aRecv, aIndex);
          break;
        case 0xCB:
          FriendRoomInvitationReq((PMSG_ROOM_INVITATION *)aRecv, aIndex);
          break;
        case 0xD0:
          switch ( aRecv[3] )
          {
            case 0:
              CGReqPCBangCouponItem((PMSG_REQ_PCBANG_COUPON_ITEM *)aRecv, aIndex);
              break;
            case 3:
              CGReqWhiteAngelGetItem((PMSG_REQ_WHITEANGEL_ITEM *)aRecv, aIndex);
              break;
            case 5:
              CGReqBuyPCBangPointItem((PMSG_REQ_CG_BUY_PCBANG_POINT_ITEM *)aRecv, aIndex);
              break;
            case 6:
              CGReqPCBangPointShopOpen((PMSG_REQ_PCBANG_POINT_SHOP_OPEN *)aRecv, aIndex);
              break;
            case 7:
              CGReqEnterOnWerwolf((PMSG_REQ_ENTER_ON_WERWOLF *)aRecv, aIndex);
              break;
            case 8:
              CGReqEnterOnGateKeeper((PMSG_REQ_ENTER_ON_GATEKEEPER *)aRecv, aIndex);
              break;
            case 0xA:
              CGAnsSnowManMoveGate((PMSG_REQ_SNOWMAN_NPC *)aRecv, aIndex);
              break;
            case 0x10:
              CGReqEventItem((PMSG_REQ_GIVE_SANTA_ITEM *)aRecv, aIndex);
              break;
            case 0xF0:
              CGReq_RuudShopBuy((PMSG_REQ_RUUD_POINT_SHOP_BUY *)aRecv, aIndex);
              break;
            case 0xF2:
              CGReqOpenRuudBox((PMSG_RUUD_BOXOPEN_REQ *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0xD1:
          v18 = aRecv[3];
          if ( v18 )
          {
            if ( v18 == 1 )
              GCReqEnterKanturuBossMap((PMSG_REQ_ENTER_KANTURU_BOSS_MAP *)aRecv, aIndex);
          }
          else
          {
            CGReqKanturuStateInfo((PMSG_REQ_KANTURU_STATE_INFO *)aRecv, aIndex);
          }
          break;
        case 0xF5:
          switch ( aRecv[3] )
          {
            case 1:
              CCashShop::CGCashShopOpen(&g_CashShop, lpObj, (PMSG_REQ_CASHSHOPOPEN *)aRecv);
              break;
            case 3:
              CCashShop::CGCashPoint(&g_CashShop, lpObj);
              break;
            case 5:
              CCashShop::GCCashItemListSend(&g_CashShop, &gObj[aIndex], (PMSG_REQ_CASHITEMLIST *)aRecv);
              break;
            case 7:
              CCashShop::CGCashItemBuy(&g_CashShop, &gObj[aIndex], (PMSG_REQ_CASHITEM_BUY *)aRecv);
              break;
            default:
              return;
          }
          break;
        case 0xFC:
          CGReqWriteSnsLog((PMSG_REQ_SEND_SNS_LOG *)aRecv, aIndex);
          break;
        case 0xBF:
          switch ( aRecv[3] )
          {
            case 0:
              CGReqEnterIllusionTemple((PMSG_REQ_ENTER_ILLUSION_TEMPLE *)aRecv, aIndex);
              break;
            case 2:
              CGIllusionTempleUseMagic((PMSG_ILLUSION_TEMPLE_USE_MAGIC *)aRecv, aIndex);
              break;
            case 5:
              CGReqIllusionTempleReward((PMSG_ILLUSION_TEMPLE_REQ_REWARD *)aRecv, aIndex);
              break;
            case 0xB:
              CGReqGetCoinCount((PMSG_REQ_GET_COIN_COUNT *)aRecv, aIndex);
              break;
            case 0xC:
              CGReqRegeistCoin((PMSG_REQ_REGEIST_COIN *)aRecv, aIndex);
              break;
            case 0xD:
              CGReqTradeCoin((PMSG_REQ_TRADE_COIN *)aRecv, aIndex);
              break;
            case 0xE:
              CGReqEnterDoppelganger((PMSG_REQ_ENTER_DOPPELGANGER *)aRecv, aIndex);
              break;
            case 0x16:
              CGAutoUserDetectLog((PMSG_AUTOUSER_DETECT_LOG *)aRecv, aIndex);
              break;
            case 0x17:
              CGMoveRorenMarket((PMSG_MOVE_ROREN_MARKET *)aRecv, aIndex);
              break;
            case 0x20:
              CGInventoryEquipment((_tagPMSG_REQ_INVENTORY_EQUIPMENT_ITEM *)aRecv, aIndex);
              break;
            case 0x51:
              CGReqMacroSystem((PMSG_REQ_MACROSYSTEM *)aRecv, aIndex);
              break;
            case 0x5A:
              CGEnterCheckITL((PMSG_REQ_ENTER_ITL *)aRecv, aIndex);
              break;
            case 0x5B:
              CGReqAcceptEnterITL((PMSG_REQ_ACCEPTENTER *)aRecv, aIndex);
              break;
            case 0x5C:
              CGReqITLSchedule(aIndex);
              break;
            case 0x5D:
              CGReqITLGuild_LeagueRank(aIndex);
              break;
            case 0x5E:
              CGReqITLTournamentRank(aIndex);
              break;
            case 0x5F:
              CGReq_ITL_ReEnter(aIndex);
              break;
            case 0x67:
              CGReqITLMagicUse((PMSG_ITL_USE_MAGIC *)aRecv, aIndex);
              break;
            case 0x68:
              CGReq_RewardList(aIndex);
              break;
            case 0x69:
              CGReq_ITLGetReward(aIndex);
              break;
            case 0x6A:
              CGReq_ITL_Relics((PMSG_REQ_ITL_RELATE_RELICS *)aRecv, aIndex);
              break;
            case 0x6B:
              CGReq_ITL_Reward_Gem((PMSG_ITL_REQ_REWARD *)aRecv, aIndex);
              break;
            case 0x70:
              CG_Req_Enter_ITR((PMSG_REQ_ENTER_ITR *)aRecv, aIndex);
              break;
            case 0x71:
              CG_ReqAcceptEnterITR((PMSG_REQ_ACCEPTENTER_ITR *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0x8A:
          CGAnsHacktoolStatistics((PMSG_ANS_HACKTOOL_STATISTICS *)aRecv, aIndex);
          break;
        case 0x8E:
          if ( aRecv[3] == 2 )
            CGReqMapMove((PMSG_REQ_MAPMOVE *)aRecv, aIndex);
          break;
        case 0xAE:
          CGRequestMacroSave((PMSG_MACRODATA *)aRecv, aIndex);
          break;
        case 0xFB:
          CGRequestSnsSave((PMSG_SNSDATA *)aRecv, aIndex);
          break;
        case 0xFD:
          CGReqUserSettingSave((PMSG_USERSETTING_SAVEDATA *)aRecv, aIndex);
          break;
        case 0xF7:
          if ( aRecv[3] == 1 )
            CGReqEnterZone((PMSG_REQ_ENTERZONE *)aRecv, aIndex);
          break;
        case 0xF6:
          switch ( aRecv[3] )
          {
            case 0x30:
              CGReqQuestExp((_tagPMSG_REQ_NPC_QUESTEXP *)aRecv, aIndex);
              break;
            case 0x31:
              CGReqAttDefPowerInc((PMSG_REQ_ATTDEF_POWER_INC *)aRecv, aIndex);
              break;
            case 0x21:
              CGReqEventItemQuestList((PMSG_REQ_EVENT_ITEM_EP_LIST *)aRecv, aIndex);
              break;
            case 0xA:
              CGReqQuestSwitch((PMSG_REQ_QUESTEXP *)aRecv, aIndex);
              break;
            case 0xB:
              CGReqQuestProgress((PMSG_REQ_QUESTEXP *)aRecv, aIndex);
              break;
            case 0xD:
              CGReqQuestComplete((PMSG_REQ_QUESTEXP_COMPLETE *)aRecv, aIndex);
              break;
            case 0xF:
              CGReqQuestGiveUp((PMSG_REQ_QUESTEXP_GIVEUP *)aRecv, aIndex);
              break;
            case 0x1A:
              CGReqProgressQuestList((PMSG_REQ_QUESTEXP_PROGRESS_LIST *)aRecv, aIndex);
              break;
            case 0x1B:
              CGReqProgressQuestInfo((PMSG_REQ_QUESTEXP_PROGRESS_INFO *)aRecv, aIndex);
              break;
            case 0x10:
              CGReqTutorialKeyComplete((PMSG_REQ_QUESTEXP_ASK_COMPLETE *)aRecv, aIndex);
              break;
            case 0x1C:
              CGReq3rdQuestMonKillCount((_tagPMSG_REQ_3RDQUEST_MOSTER_KILLCOUNT *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0xF8:
          if ( aRecv[3] )
          {
            switch ( (unsigned __int8)aRecv[3] | 0xF800 )
            {
              case 0xF801:
                CGReqRegGensMember((_tagPMSG_REQ_REG_GENS_MEMBER *)aRecv, aIndex);
                break;
              case 0xF803:
                CGReqSecedeGensMember((_tagPMSG_REQ_SECEDE_GENS_MEMBER *)aRecv, aIndex);
                break;
              case 0xF809:
                CGReqGensReward((_tagPMSG_GENS_REWARD_CODE *)aRecv, aIndex);
                break;
              case 0xF80B:
                CGReqGensMemberInfo((_tagPMSG_REQ_GENS_INFO *)aRecv, aIndex);
                break;
              case 0xF820:
                CGReqAcheronEnter((_tagPMSG_REQ_ACHERON_ENTER *)aRecv, aIndex);
                break;
              case 0xF830:
                CGReqArcaBattleGuildMasterJoin((_tagPMSG_REQ_ARCA_BATTLE_JOIN *)aRecv, aIndex);
                break;
              case 0xF832:
                CGReqArcaBattleGuildMemberJoin((_tagPMSG_REQ_ARCA_BATTLE_JOIN *)aRecv, aIndex);
                break;
              case 0xF834:
                CGReqArcaBattleEnter((_tagPMSG_REQ_ARCA_BATTLE_ENTER *)aRecv, aIndex);
                break;
              case 0xF836:
                CGReqArcaBattleBootyExchange(aIndex);
                break;
              case 0xF83C:
                CGReqSpritemapExchange(aIndex);
                break;
              case 0xF841:
                CGReqRegisteredMemberCnt(aIndex);
                break;
              case 0xF843:
                CArcaBattle::CGReqMarkReg(&g_ArcaBattle, aIndex);
                break;
              case 0xF845:
                CArcaBattle::CGReqMarkRank(&g_ArcaBattle, aIndex);
                break;
              case 0xF84B:
                CAcheronGuardianEvent::CGReqAcheronEventEnter(
                  &g_AcheronGuardianEvent,
                  (_tagPMSG_REQ_ACHERON_EVENT_ENTER *)aRecv,
                  aIndex);
                break;
              default:
                return;
            }
          }
          break;
        case 0xD2:
          switch ( aRecv[3] )
          {
            case 1:
              CCashShopInGame::RequestCashPoint(&g_CashShopInGame, lpObj);
              break;
            case 2:
              CCashShopInGame::RequestCashShopOpen(&g_CashShopInGame, lpObj, (PMSG_CASHSHOP_SHOPOPEN_REQ *)aRecv);
              break;
            case 3:
              CCashShopInGame::RequestBuyItem(&g_CashShopInGame, lpObj, (PMSG_CASHSHOP_BUYITEM_REQ *)aRecv);
              break;
            case 4:
              CCashShopInGame::RequestGiftItem(&g_CashShopInGame, lpObj, (PMSG_CASHSHOP_GIFTSEND_REQ *)aRecv);
              break;
            case 5:
              CCashShopInGame::RequestStorageList(&g_CashShopInGame, lpObj, (PMSG_CASHSHOP_STORAGELIST_REQ *)aRecv);
              break;
            case 7:
              CCashShopInGame::RequestGiftCash(&g_CashShopInGame, lpObj, (PMSG_CASHSHOP_CASHSEND_REQ *)aRecv);
              break;
            case 8:
              CCashShopInGame::RequestItemBuyConfirm(&g_CashShopInGame, lpObj);
              break;
            case 9:
              CCashShopInGame::RequestItemLeftCount(
                &g_CashShopInGame,
                lpObj,
                (PMSG_CASHSHOP_ITEMBUY_LEFT_COUNT_REQ *)aRecv);
              break;
            case 0xA:
              CCashShopInGame::RequestStorageItemThrow(
                &g_CashShopInGame,
                lpObj,
                (PMSG_CASHSHOP_STORAGE_ITEM_THROW_REQ *)aRecv);
              break;
            case 0xB:
              CCashShopInGame::RequestStorageItemUse(
                &g_CashShopInGame,
                lpObj,
                (PMSG_CASHSHOP_STORAGE_ITEM_USE_REQ *)aRecv);
              break;
            case 0xF:
              CCashShopInGame::RequestStorageItemSaleType(
                &g_CashShopInGame,
                lpObj,
                (PMSG_CASHSHOP_STORAGE_ITEM_SALE_TYPE_REQ *)aRecv);
              break;
            case 0x13:
              CCashShopInGame::RequestEventProductList(&g_CashShopInGame, lpObj, (PMSG_CASHSHOP_EVENTITEM_REQ *)aRecv);
              break;
            default:
              return;
          }
          break;
        case 0xEC:
          switch ( aRecv[3] )
          {
            case 0:
              CGReqInJewelPentagramItem((PMSG_REQ_IN_PENTAGRAM_JEWEL *)aRecv, aIndex);
              break;
            case 1:
              CGReqOutJewelPentagramItem((PMSG_REQ_OUT_PENTAGRAM_JEWEL *)aRecv, aIndex);
              break;
            case 2:
              CGReqRefinePentagramJewel((PMSG_REQ_REFINE_PENTAGRAM_JEWEL *)aRecv, aIndex);
              break;
            case 3:
              CGReqUpgradPentagramJewel((PMSG_REQ_UPGRADE_PENTAGRAM_JEWEL *)aRecv, aIndex);
              break;
            case 5:
              CGReqPentagramSlotOpen((PMSG_REQ_PENTAGRAM_SLOT_OPEN *)aRecv, aIndex);
              break;
            case 0x27:
              CGReq_DetailInfo((PMSG_REQ_DETAILINFO_FIRST *)aRecv, aIndex);
              break;
            case 0x31:
              CGReqSearchItemInPShop((PMSG_REQ_SEARCH_ITEM_PSHOP *)aRecv, aIndex);
              break;
            case 0x33:
              CGReqPShopLog((PMSG_REQ_PSHOP_LOG *)aRecv, aIndex);
              break;
            case 0x50:
              CGReqHuntingRecordWndtOpen((PMSG_REQ_HUNTING_RECORD_WND_OPEN *)aRecv, aIndex);
              break;
            case 0x51:
              CGReqHuntingRecordWndtClose((PMSG_REQ_HUNTING_RECORD_WND_CLOSE *)aRecv, aIndex);
              break;
            case 0x52:
              CGReqHuntingRecordInfoUserOpen((PMSG_REQ_HUNTING_RECORD_INFO_USER_OPEN *)aRecv, aIndex);
              break;
            case 0x54:
              CGReqHuntingRecordInfoUserOpenGet((PMSG_REQ_HUNTING_RECORD_INFO_USER_OPEN_GET *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0xE8:
          CGOverlapItemSplitRequest((PMSG_REQ_OVERLAP_ITEM_SPLIT *)aRecv, aIndex);
          break;
        case 0xDB:
          switch ( aRecv[3] )
          {
            case 0:
              CGReqDSFSchedule(aIndex);
              break;
            case 1:
              GDReqCanPartyEnter(aIndex);
              break;
            case 2:
              CGReqAcceptEnterDSF((PMSG_REQ_DSF_ACCEPTENTER *)aRecv, aIndex);
              break;
            case 3:
              CGReqDSFGoFinalParty((PMSG_REQ_DSF_GO_FINAL_PARTY_INFO *)aRecv, aIndex);
              break;
            case 9:
              CGReqDSFGetReward((PMSG_REQ_DSF_GET_REWARD *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0xDD:
          v19 = aRecv[3];
          if ( v19 == 1 )
          {
            CGReqDSNEnter((PMSG_REQ_DSN_ENTER *)aRecv, aIndex);
          }
          else if ( v19 == 2 )
          {
            CGReqAcceptEnterDSN((PMSG_REQ_DSN_ACCEPTENTER *)aRecv, aIndex);
          }
          break;
        case 0xED:
          switch ( aRecv[3] )
          {
            case 0:
              CGReqGuildMatchingList((_PMSG_REQ_GUIDMATCHINGLIST *)aRecv, aIndex);
              break;
            case 1:
              CGReqGuildMatchingListSearchWord((_PMSG_REQ_GUIDMATCHINGLISTSEARCHWORD *)aRecv, aIndex);
              break;
            case 2:
              CGReqRegGuildMatchingList((_PMSG_REQ_REGGUILDMATCHINGDATA *)aRecv, aIndex);
              break;
            case 3:
              CGReqCancelGuildMatchingList((_PMSG_REQ_CANCEL_GUILDMATCHINGLIST *)aRecv, aIndex);
              break;
            case 4:
              CGReqJoinGuildMatching((_PMSG_REQ_JOIN_GUILDMATCHING *)aRecv, aIndex);
              break;
            case 5:
              CGReqCancelJoinGuildMatching(aIndex);
              break;
            case 6:
              CGReqAllowJoinGuildMatching((_PMSG_REQ_ALLOW_JOIN_GUILDMATCHING *)aRecv, aIndex);
              break;
            case 7:
              CGReqGetAllowListJoinGuildMatching((_PMSG_REQ_ALLOWLIST_GUILDMATCHING *)aRecv, aIndex);
              break;
            case 8:
              CGReqGetWaitStateListGuildMatching(aIndex);
              break;
            default:
              return;
          }
          break;
        case 0xEF:
          switch ( aRecv[3] )
          {
            case 0:
              CGReqRegWantedPartyMember((_PMSG_REQ_REG_WANTED_PARTYMEMBER *)aRecv, aIndex);
              break;
            case 1:
              CGReqGetPartyMatchingList((_PMSG_REQ_GET_PARTYMATCHINGLIST *)aRecv, aIndex);
              break;
            case 2:
              CGReqJoinMemberPartyMatching((_PMSG_REQ_MEMBERJOIN_PARTYMATCHINGLIST *)aRecv, aIndex);
              break;
            case 3:
              CGReqMemberJoinStateList((_PMSG_REQ_MEMBERJOIN_STATELIST_PARTYMATCHING *)aRecv, aIndex);
              break;
            case 4:
              CGReqMemberJoinStateListLeader((_PMSG_REQ_WAITLIST_PARTYMATCHING *)aRecv, aIndex);
              break;
            case 5:
              CGReqAcceptJoinMemberPartyMatching((_PMSG_REQ_ACCEPTMEMBER_PARTYMATCHING *)aRecv, aIndex);
              break;
            case 6:
              CGReqCancelPartyMatching((_PMSG_REQ_CANCEL_JOIN_PARTYMATCHING *)aRecv, aIndex);
              break;
            case 7:
              CGReqPartyLeaderChange((_PMSG_REQ_CHANGE_PARTY_LEADER *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0x6E:
          v20 = aRecv[3];
          if ( v20 == 1 )
          {
            CBlockChatUserSystem::CG_ReqAddBlockChattingUser(
              &g_CBlockChatUserSystem,
              (PMSG_REQ_ADD_BLOCK_CHAT_USER *)aRecv,
              aIndex);
          }
          else if ( v20 == 2 )
          {
            CBlockChatUserSystem::CG_ReqDelBlockChattingUser(
              &g_CBlockChatUserSystem,
              (PMSG_REQ_DEL_BLOCK_CHAT_USER *)aRecv,
              aIndex);
          }
          break;
        case 0x78:
          switch ( aRecv[3] )
          {
            case 1:
              CGReqUpgradeSocketItem((PMSG_REQ_UPGRADE_SOCKETITEM *)aRecv, aIndex);
              break;
            case 2:
              CGReqExtractSeedInven((PMSG_REQ_EXTRACT_SEED_INVEN *)aRecv, aIndex);
              break;
            case 3:
              CGReqSetSeedSphearInven((PMSG_REQ_SET_SEEDSPHERE_INVEN *)aRecv, aIndex);
              break;
            case 4:
              CGReqRemoveSeedSphearInven((PMSG_REQ_REMOVE_SEEDSPHERE_INVEN *)aRecv, aIndex);
              break;
            case 5:
              CGReqCompositeSeedSphearInven((PMSG_REQ_COMPOSITE_SEEDSPHERE_INVEN *)aRecv, aIndex);
              break;
            case 6:
              CGReqUpgradeSeedSphearInven((PMSG_REQ_UPGRADE_SEEDSPHERE_INVEN *)aRecv, aIndex);
              break;
            case 7:
              CGReqDeleteSocket((PMSG_REQ_DELETE_SOCKET *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        case 0x76:
          switch ( aRecv[3] )
          {
            case 1:
              CNixiesLakeBossZone::RecvReqChkEnterBossZone(
                &g_NixiesLakeBossZone,
                (_tagPMSG_REQ_CHK_ENTER_ON_NIXIES_NIX_BOSS_ZONE *)aRecv,
                aIndex);
              break;
            case 2:
              CNixiesLakeBossZone::RecvReqEnterBossZone(
                &g_NixiesLakeBossZone,
                (_tagPMSG_REQ_ENTER_ON_NIXIES_NIX_BOSS_ZONE *)aRecv,
                aIndex);
              break;
            case 3:
              CNixiesLakeBossZone::RecvReqEnterBossZoneByInvite(
                &g_NixiesLakeBossZone,
                (_tagPMSG_ANS_INVITE_ON_NIXIES_NIX_BOSS_ZONE_WITH_PARTYMEMBER *)aRecv,
                aIndex);
              break;
            case 0x10:
              CNixiesLakeBoss::RecvSendIceBreathAttack(&g_NixiesLakeBoss, (_tagPMSG_ICE_BREATH_ATTACK *)aRecv, aIndex);
              break;
            default:
              return;
          }
          break;
        default:
          LogAddC(
            2u,
            "error-L2 : account:%s name:%s HEAD:%x (%s,%d) State:%d",
            gObj[aIndex].AccountID,
            gObj[aIndex].Name,
            (unsigned __int8)protoNum,
            "c:\\muserversvn\\job_branch\\kor\\job_season12_part1\\gameserver\\protocol.cpp",
            `ProtocolCore'::`2'::__LINE__Var + 2142,
            gObj[aIndex].Connected);
          CloseClient(aIndex);
          break;
      }
    }
    else
    {
      switch ( protoNum )
      {
        case 14:
          if ( DataEncryptCheck(aIndex, 14, Encrypt) )
          {
            CGLiveClient((PMSG_CLIENTTIME *)aRecv, aIndex);
            tempindex = aIndex;
          }
          break;
        case -15:
          lpMsg2 = (PMSG_DEFAULT2 *)aRecv;
          v8 = aRecv[3];
          if ( v8 == 1 )
          {
            if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
              CSPJoinIdPassRequest((PMSG_IDPASS *)aRecv, aIndex);
          }
          else if ( v8 == 2 )
          {
            if ( DataEncryptCheck(aIndex, protoNum, Encrypt) )
              CGClientCloseMsg((PMSG_CLIENTCLOSE *)aRecv, aIndex);
          }
          else if ( v8 == 3 && DataEncryptCheck(aIndex, protoNum, Encrypt) )
          {
            CGClientMsg((PMSG_CLIENTMSG *)aRecv, aIndex);
          }
          break;
        case -13:
          lpDef = (PMSG_DEFAULT2 *)aRecv;
          switch ( aRecv[3] )
          {
            case 0:
              DataServerGetCharListRequest(aIndex);
              break;
            case 1:
              CGPCharacterCreate((PMSG_CHARCREATE *)aRecv, aIndex);
              break;
            case 2:
              CGPCharDel((PMSG_CHARDELETE *)aRecv, aIndex);
              break;
            case 3:
              CGPCharacterMapJoinRequest((PMSG_CHARMAPJOIN *)aRecv, aIndex);
              break;
            case 6:
              CGLevelUpPointAdd((PMSG_LVPOINTADD *)aRecv, aIndex);
              break;
            case 0x12:
              gObjMoveDataLoadingOK(aIndex);
              break;
            case 0x15:
              CGReqCheckChangeName((PMSG_REQ_CHECK_CHAGNE_NAME *)aRecv, aIndex);
              break;
            case 0x16:
              CGChangeName((PMSG_CHAGNE_NAME *)aRecv, aIndex);
              break;
            case 0x21:
              CGEnableUsePolymorphSkinrRecv((PMSG_REQ_USE_POLYMORPH_SKIN *)aRecv, aIndex);
              break;
            case 0x26:
              CGReqDoUsePopupType((PMSG_REQ_USE_POPUP *)aRecv, aIndex);
              break;
            case 0x30:
              GCSkillKeyRecv((PMSG_SKILLKEY *)aRecv, aIndex);
              break;
            case 0x31:
              CGNotifyGuarditBreach((PMSG_GUARDIT_BREACH *)aRecv, aIndex);
              break;
            case 0x52:
              CMasterLevelSkillTreeSystem::CGReqGetMasterLevelSkill(
                &g_MasterSkillSystem,
                (PMSG_REQ_MASTERLEVEL_SKILL *)aRecv,
                aIndex);
              break;
            default:
              return;
          }
          break;
      }
    }
  }
  else
  {
    v7 = NSerialCheck::GetSerial((NSerialCheck *)(8 * aIndex + 241847592));
    LogAdd(
      "Error-L1 : Socket Serial %s %d o_serial:%d serial:%d ",
      gObj[aIndex].AccountID,
      (unsigned __int8)protoNum,
      v7,
      serial);
    CloseClient(aIndex);
  }
}
 
Newbie Spellweaver
Joined
Feb 16, 2017
Messages
27
Reaction score
4
warning, i found a lot of stupid things like this, people can make your gameserver crash!

gHcv3DG - [Development] Season XII Source Chinesse Team - based on X-TEAM - RaGEZONE Forums

YES...The GAMESERVER.EXE Frequent crashes. List some solutions please.
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Aug 19, 2014
Messages
52
Reaction score
5
hello i wanna ask you sometime please, i use vs2015 build the mu@.dll buy connot login in game what's problem?



warning, i found a lot of stupid things like this, people can make your gameserver crash!

gHcv3DG - [Development] Season XII Source Chinesse Team - based on X-TEAM - RaGEZONE Forums

hello i wanna ask you sometime please, i use vs2015 build the mu@.dll buy connot login in game what's problem? should i know main.exe how to connect to mu@.dll??
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Aug 6, 2015
Messages
59
Reaction score
3
to see I do not understand, c9mpartis something that decides that season 13 but you are asking how to connect to the main dll something does not close me, to see if someone does something with this fake

 
Newbie Spellweaver
Joined
Aug 19, 2014
Messages
52
Reaction score
5
thanks i entered the game good ,its my language so i can play in africa my self no boring thanks u guys
 
Newbie Spellweaver
Joined
Aug 19, 2014
Messages
52
Reaction score
5
Pyke - [Development] Season XII Source Chinesse Team - based on X-TEAM - RaGEZONE Forums

this one how to do when i login the charactor gs show me like this
 
Experienced Elementalist
Joined
Apr 11, 2005
Messages
290
Reaction score
206
Pyke - [Development] Season XII Source Chinesse Team - based on X-TEAM - RaGEZONE Forums

this one how to do when i login the charactor gs show me like this

This should show when You exiting (disconnecting from server).
GS disconnect inactive client precisely. (You have some quote of time for login or server will disconnect You)
(btw. im working on add arca battle/war to this server)
 
Last edited:
Newbie Spellweaver
Joined
Aug 19, 2014
Messages
52
Reaction score
5
yes exactly but client side no responsible maybe 10 minutes enter the game maybe no enter forever ... agter i selected the charactor push enter button....



now work well thanks very much my friend , and i also will help somebody the one need help thanks again.

- - - Updated - - -

i wanny gey the tools for lang.mpr but the link over,,,crying
 
Last edited by a moderator:
Experienced Elementalist
Joined
Apr 11, 2005
Messages
290
Reaction score
206
Anyone have this problem with random silent GS crashes ? (login,logout,login,logout) and crashing sometimes...
Do someone know why this happen ?
It seems to be not crashes just server close itself in random time.

...Update...

How to fix these two bugs (china text):
(Zen and Ruud description)

[IMG]https://forum.ragezone.com/ima...forum.ragezone.com/images/404_image.png[/IMG]
 
Last edited by a moderator:
Back
Top