PDA

View Full Version : |Source| ProtocolCore Season 9.1 MuBlue :)



Mr.Haziel
29/12/2015, 06:03 PM
Acabei de descompilar Fresquinho do forno kkkk, com meu IDA mais antigo não saia completo, mas agora sim !!
ProtocolCore Season 9.1 :ott



/----- (0084B7A0) --------------------------------------------------------
void __cdecl ProtocolCore(char protoNum, char *aRecv, int aLen, int aIndex, int Encrypt, int serial)
{
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]
[Only registered and activated users can see links]


if ( gStalkProtocol )
{
if ( gStalkProtocolId == gObj[aIndex].AccountID[0] && byte_958FAA1 == 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 + 201878688), serial) )
{
if ( cManager.WatchTargetIndex != -1 && cManager.WatchTargetIndex == aIndex )
WriteHackLog(aIndex, protoNum, aRecv, aLen + 1, "PC");
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 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 0x3F:
v56 = aRecv;
switch ( aRecv[3] )
{
case 1:
CGPShopReqSetItemPrice((PMSG_REQ_PSHOP_SETITEMPRIC E *)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;
}
return;
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 )
CGPartyDelUser((stPMSG_PARTYDELUSER *)aRecv, aIndex, 1);
break;
case 0x4A:
GCMonkMagicAttack((PMSG_MAGICATTACK *)aRecv, aIndex);
break;
case 0x4B:
GCMonkDarkSideTargetSelect((PMSG_MONK_DARKSIDE_REC V *)aRecv, aIndex);
break;
case 0x4C:
v55 = aRecv;
v9 = aRecv[3];
if ( v9 )
{
if ( v9 == 1 )
{
CMineSystem::RewardMineTwinkle(&g_CMineSystem, (_PMSG_REQ_MINETWINKLE_REWARD *)aRecv, aIndex);
}
else if ( v9 == 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:
v54 = 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;
default:
return;
}
return;
case 0x4E:
v53 = 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_SELLREQU EST *)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;
}
return;
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_RESUL T *)aRecv, aIndex);
break;
case 0x66:
GCGuildViewportInfo((PMSG_REQ_GUILDVIEWPORT *)aRecv, aIndex);
break;
case 0xB1:
v52 = aRecv;
if ( aRecv[3] == 1 && DataEncryptCheck(aIndex, protoNum, Encrypt) )
CGReqMapSvrAuth((PMSG_REQ_MAPSERVERAUTH *)aRecv, aIndex);
break;
case 0xB2:
v51 = 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;
}
return;
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:
v50 = aRecv;
v10 = aRecv[3];
if ( v10 == 1 )
{
CGReqWeaponUse((PMSG_REQ_USEWEAPON *)aRecv, aIndex);
}
else if ( v10 == 4 )
{
CGReqWeaponDamageValue((PMSG_REQ_WEAPON_DAMAGE_VAL UE *)aRecv, aIndex);
}
break;
case 0xB9:
v49 = aRecv;
if ( aRecv[3] == 2 )
CGReqGuildMarkOfCastleOwner((PMSG_REQ_GUILDMARK_OF _CASTLEOWNER *)aRecv, aIndex);
break;
case 0xBC:
v48 = aRecv;
v11 = aRecv[3];
if ( v11 )
{
if ( v11 == 1 )
CGReqJewelUnMix((PMSG_REQ_JEWEL_UNMIX *)aRecv, aIndex);
}
else
{
CGReqJewelMix((PMSG_REQ_JEWEL_MIX *)aRecv, aIndex);
}
break;
case 0xBD:
v47 = aRecv;
v12 = aRecv[3];
if ( v12 )
{
if ( v12 == 3 )
{
CGReqAlatrContract((PMSG_REQ_CRYWOLF_ALTAR_CONTRAC T *)aRecv, aIndex);
}
else if ( v12 == 9 )
{
CGReqPlusChaosRate((PMSG_REQ_CRYWOLF_BENEFIT_PLUS_ CHAOSRATE *)aRecv, aIndex);
}
}
else
{
CGReqCrywolfInfo((PMSG_REQ_CRYWOLF_INFO *)aRecv, aIndex);
}
break;
case 0xCD:
v46 = 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;
}
return;
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_J OIN_BREAKOFF_REQ *)aRecv, aIndex);
break;
case 0xE6:
CGRelationShipAnsJoinBreakOff((PMSG_RELATIONSHIP_J OIN_BREAKOFF_ANS *)aRecv, aIndex);
break;
case 0xE9:
CGUnionList((PMSG_UNIONLIST_REQ *)aRecv, aIndex);
break;
case 0xE7:
v45 = aRecv;
v13 = aRecv[3];
switch ( v13 )
{
case 1:
CGReqSendMemberPosInfoStart(aIndex);
break;
case 2:
CGReqSendMemberPosInfoStop(aIndex);
break;
case 3:
GCReqSendNpcPosInfo((_PMSG_REQ_NPC_POSITION *)aRecv, aIndex);
break;
}
break;
case 0xEB:
v44 = 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 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 0x90:
GCReqmoveDevilSquare((PMSG_REQ_MOVEDEVILSQUARE *)aRecv, aIndex);
break;
case 0x91:
GCReqDevilSquareRemainTime((PMSG_REQ_DEVILSQUARE_R EMAINTIME *)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_COM MAND *)aRecv, aIndex);
break;
case 0xA9:
CGRequestPetItemInfo((PMSG_REQUEST_PET_ITEMINFO *)aRecv, aIndex);
break;
case 0xAA:
v43 = aRecv;
if ( aRecv[3] )
{
wPacketType = (unsigned __int8)v43[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;
v37 = OnCGAnswerDuel((_tagPMSG_ANS_DUEL_ANSWER *)aRecv, aIndex);
break;
case 0xAA03u:
v36 = (_tagPMSG_REQ_DUEL_EXIT *)aRecv;
v35 = OnCGLeaveDuel((_tagPMSG_REQ_DUEL_EXIT *)aRecv, aIndex);
if ( v35 )
{
v31 = 0;
v32 = 0;
v33 = 0;
v34 = 0;
Msg = -63;
LOWORD(v31) = -21999;
BYTE2(v31) = 3;
DataSend(aIndex, &Msg, 0x11u);
}
break;
case 0xAA07u:
v29 = (_tagPMSG_REQ_DUEL_JOINCNANNEL *)aRecv;
v28 = OnDuelChannelJoin((_tagPMSG_REQ_DUEL_JOINCNANNEL *)aRecv, aIndex);
if ( v28 )
{
v21 = 0;
v22 = 0;
v23 = 0;
v24 = 0;
v25 = 0;
v26 = 0;
v27 = 0;
v19 = -63;
LOWORD(v20) = -21986;
BYTE2(v20) = 7;
BYTE3(v20) = v28;
DataSend(aIndex, &v19, 0x1Eu);
}
break;
case 0xAA09u:
v18 = (_tagPMSG_REQ_DUEL_LEAVECNANNEL *)aRecv;
v17 = OnDuelChannelLeave((_tagPMSG_REQ_DUEL_LEAVECNANNEL *)aRecv, aIndex);
if ( v17 )
{
v15 = -63;
LOWORD(v16) = -22011;
BYTE2(v16) = 9;
BYTE3(v16) = v17;
DataSend(aIndex, &v15, 5u);
}
break;
default:
return;
}
}
return;
case 0x9A:
CGRequestEnterBloodCastle((PMSG_REQ_MOVEBLOODCASTL E *)aRecv, aIndex);
break;
case 0x9B:
case 0xF9:
return;
case 0x9F:
CGRequestEventEnterCount((PMSG_REQ_CL_ENTERCOUNT *)aRecv, aIndex);
break;
case 0x9D:
CGRequestLottoRegister((PMSG_REQ_2ANV_LOTTO_EVENT *)aRecv, aIndex);
break;
case 0xAF:
switch ( aRecv[3] )
{
case 1:
CGRequestEnterChaosCastle((PMSG_REQ_MOVECHAOSCASTL E *)aRecv, aIndex);
break;
case 2:
CGRequestRepositionUserInChaosCastle((PMSG_REQ_REP OSUSER_IN_CC *)aRecv, aIndex);
break;
case 3:
CGReqCCF_DayTime(aIndex);
break;
case 5:
CGReqCCF_EnterCheck(aIndex);
break;
case 6:
CGRequestRepositionUserInCCF((PMSG_REQ_REPOSUSER_I N_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;
}
return;
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_RE Q *)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_PO INT_ITEM *)aRecv, aIndex);
break;
case 6:
CGReqPCBangPointShopOpen((PMSG_REQ_PCBANG_POINT_SH OP_OPEN *)aRecv, aIndex);
break;
case 7:
CGReqEnterOnWerwolf((PMSG_REQ_ENTER_ON_WERWOLF *)aRecv, aIndex);
break;
case 8:
CGReqEnterOnGateKeeper((PMSG_REQ_ENTER_ON_GATEKEEP ER *)aRecv, aIndex);
break;
case 0xA:
CGAnsSnowManMoveGate((PMSG_REQ_SNOWMAN_NPC *)aRecv, aIndex);
break;
case 0x10:
CGReqEventItem((PMSG_REQ_GIVE_SANTA_ITEM *)aRecv, aIndex);
break;
default:
return;
}
return;
case 0xD1:
v14 = aRecv[3];
if ( v14 )
{
if ( v14 == 1 )
GCReqEnterKanturuBossMap((PMSG_REQ_ENTER_KANTURU_B OSS_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;
}
return;
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_RE Q_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_DOPPELGANGE R *)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_EQUIP MENT_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;
}
return;
case 0x8A:
CGAnsHacktoolStatistics((PMSG_ANS_HACKTOOL_STATIST ICS *)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_LI ST *)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_CO MPLETE *)aRecv, aIndex);
break;
default:
return;
}
return;
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_ME MBER *)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_ENT ER *)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;
}
}
return;
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 0x13:
CCashShopInGame::RequestEventProductList(&g_CashShopInGame, lpObj, (PMSG_CASHSHOP_EVENTITEM_REQ *)aRecv);
break;
default:
return;
}
return;
case 0xEC:
switch ( aRecv[3] )
{
case 0:
CGReqInJewelPentagramItem((PMSG_REQ_IN_PENTAGRAM_J EWEL *)aRecv, aIndex);
break;
case 1:
CGReqOutJewelPentagramItem((PMSG_REQ_OUT_PENTAGRAM _JEWEL *)aRecv, aIndex);
break;
case 2:
CGReqRefinePentagramJewel((PMSG_REQ_REFINE_PENTAGR AM_JEWEL *)aRecv, aIndex);
break;
case 3:
CGReqUpgradPentagramJewel((PMSG_REQ_UPGRAD_PENTAGR AM_JEWEL *)aRecv, aIndex);
break;
case 0x31:
CGReqSearchItemInPShop((PMSG_REQ_SEARCH_ITEM_PSHOP *)aRecv, aIndex);
break;
case 0x33:
CGReqPShopLog((PMSG_REQ_PSHOP_LOG *)aRecv, aIndex);
break;
default:
return;
}
return;
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;
}
return;
case 0xED:
switch ( aRecv[3] )
{
case 0:
CGReqGuildMatchingList((_PMSG_REQ_GUIDMATCHINGLIST *)aRecv, aIndex);
break;
case 1:
CGReqGuildMatchingListSearchWord((_PMSG_REQ_GUIDMA TCHINGLISTSEARCHWORD *)aRecv, aIndex);
break;
case 2:
CGReqRegGuildMatchingList((_PMSG_REQ_REGGUILDMATCH INGDATA *)aRecv, aIndex);
break;
case 3:
CGReqCancelGuildMatchingList((_PMSG_REQ_CANCEL_GUI LDMATCHINGLIST *)aRecv, aIndex);
break;
case 4:
CGReqJoinGuildMatching((_PMSG_REQ_JOIN_GUILDMATCHI NG *)aRecv, aIndex);
break;
case 5:
CGReqCancelJoinGuildMatching(aIndex);
break;
case 6:
CGReqAllowJoinGuildMatching((_PMSG_REQ_ALLOW_JOIN_ GUILDMATCHING *)aRecv, aIndex);
break;
case 7:
CGReqGetAllowListJoinGuildMatching((_PMSG_REQ_ALLO WLIST_GUILDMATCHING *)aRecv, aIndex);
break;
case 8:
CGReqGetWaitStateListGuildMatching(aIndex);
break;
default:
return;
}
return;
case 0xEF:
switch ( aRecv[3] )
{
case 0:
CGReqRegWantedPartyMember((_PMSG_REQ_REG_WANTED_PA RTYMEMBER *)aRecv, aIndex);
break;
case 1:
CGReqGetPartyMatchingList((_PMSG_REQ_GET_PARTYMATC HINGLIST *)aRecv, aIndex);
break;
case 2:
CGReqJoinMemberPartyMatching((_PMSG_REQ_MEMBERJOIN _PARTYMATCHINGLIST *)aRecv, aIndex);
break;
case 3:
CGReqMemberJoinStateList((_PMSG_REQ_MEMBERJOIN_STA TELIST_PARTYMATCHING *)aRecv, aIndex);
break;
case 4:
CGReqMemberJoinStateListLeader((_PMSG_REQ_WAITLIST _PARTYMATCHING *)aRecv, aIndex);
break;
case 5:
CGReqAcceptJoinMemberPartyMatching((_PMSG_REQ_ACCE PTMEMBER_PARTYMATCHING *)aRecv, aIndex);
break;
case 6:
CGReqCancelPartyMatching((_PMSG_REQ_CANCEL_JOIN_PA RTYMATCHING *)aRecv, aIndex);
break;
default:
return;
}
return;
default:
LogAddC(
2u,
"error-L2 : account:%s name:%s HEAD:%x (%s,%d) State:%d",
gObj[aIndex].AccountID,
gObj[aIndex].Name,
(unsigned __int8)protoNum,
"d:\\muserversvn\\job_branch\\kor\\job_season9\\gam eserver\\protocol.cpp",
`ProtocolCore'::`2'::__LINE__Var + 1783,
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_POLYMO RPH_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::CGReqGetMasterLevelSk ill(
&g_MasterSkillSystem,
(PMSG_REQ_MASTERLEVEL_SKILL *)aRecv,
aIndex);
break;
default:
return;
}
break;
}
}
}
else
{
v7 = NSerialCheck::GetSerial((NSerialCheck *)(8 * aIndex + 201878688));
LogAdd(
"Error-L1 : Socket Serial %s %d o_serial:%d serial:%d ",
gObj[aIndex].AccountID,
(unsigned __int8)protoNum,
v7,
serial);
CloseClient(aIndex);
}
}

ADMTec
30/12/2015, 06:33 PM
oi eu não sou programador mais queria saber se você poderia me explicar a utilidade disso??

Beeki
30/12/2015, 11:07 PM
Muito legal, vejo sempre você postando prints dos seus arquivos super raros e tal, meio que se gabando. Mas tenho uma dúvida, você apenas usa tais arquivos para estudos ou programa todas elas?

Se for pra estudos, porque guarda o conhecimento somente para você?

Mr.Haziel
01/01/2016, 09:44 PM
@ADMTecCom isso você não tem necessidade de debugar o protocolo pós já tem todas as cases completas e como pode ver acima informa qual o nome de casa uma,as suas utilidades você descobre estudando elas.
Para mim é super útil !!


@guhsvasc bom pelo que entendi foram 2 perguntas.
1ª Resposta => Tenho quase que todos arquivos programados por mim,sempre que da também estudo,como pode ver acima a season 9 tem novas cases e etc..
2ª Resposta => Não guardo o conhecimento apenas para mim,como pode ver postei o novo protocolo acima para estudos .


Grande abraço ...