- Joined
- Apr 11, 2005
- Messages
- 290
- Reaction score
- 206
who knows how to fix Apostle Devin, click and nothing happen, is a bug or configuration ?
Did You fixed Crywolf mobs first? (didn't show monsters)
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!who knows how to fix Apostle Devin, click and nothing happen, is a bug or configuration ?
Did You fixed Crywolf mobs first? (didn't show monsters)
you have to compile the gameserverCS
Main season 13 cracked and unpacked for who want to try !!
download:You must be registered to see links
change configs in config.ini
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
here looks is fine the mobsTry to spawn some mobs in Your MonsterSetBaseCS file (not in MonsterSetBase) with Your GS CS
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
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);
}
}
warning, i found a lot of stupid things like this, people can make your gameserver crash!
warning, i found a lot of stupid things like this, people can make your gameserver crash!
this one how to do when i login the charactor gs show me like this