cgpartyinvitehandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 323 行
CPP
323 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGPartyInviteHandler.cpp// Written By : excel96// Description : //////////////////////////////////////////////////////////////////////////////#include "CGPartyInvite.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "Creature.h" #include "Zone.h" #include "Party.h" #include "CreatureUtil.h" #include "Gpackets/GCPartyInvite.h" #include "Gpackets/GCPartyError.h" #include "Gpackets/GCSystemMessage.h" #include "SystemAvailabilitiesManager.h"#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGPartyInviteHandler::execute (CGPartyInvite* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); SYSTEM_ASSERT( SYSTEM_PARTY ); ObjectID_t TargetOID = pPacket->getTargetObjectID(); BYTE CODE = pPacket->getCode(); GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Assert(pGamePlayer != NULL); Creature* pCreature = pGamePlayer->getCreature(); Assert(pCreature != NULL); Zone* pZone = pCreature->getZone(); Assert(pZone != NULL); PartyInviteInfoManager* pPIIM = pZone->getPartyInviteInfoManager(); // 颇萍 扁瓷 滚弊 锭巩俊 阜酒初篮 何盒捞促. // 辫己刮 /* pPIIM->cancelInvite(pCreature); GCSystemMessage gcSystemMessage; gcSystemMessage.setMessage("颇萍 扁瓷篮 滚弊肺 牢窍咯 泅犁 瘤盔登瘤 臼嚼聪促."); pPlayer->sendPacket(&gcSystemMessage); executeError(pPacket, pPlayer, GC_PARTY_ERROR_UNKNOWN); return; */ ///// Creature* pTargetCreature = NULL; /* try { pTargetCreature = pZone->getCreature(TargetOID); } catch (NoSuchElementException) { pPIIM->cancelInvite(pCreature); executeError(pPacket, pPlayer, GC_PARTY_ERROR_TARGET_NOT_EXIST); return; } */ // NoSuch力芭. by sigi. 2002.5.2 pTargetCreature = pZone->getCreature(TargetOID); if (pTargetCreature==NULL) { pPIIM->cancelInvite(pCreature); executeError(pPacket, pPlayer, GC_PARTY_ERROR_TARGET_NOT_EXIST); return; } // 颇萍俊 檬措且 仇捞 PC啊 酒聪芭唱, 辆练捞 促福搁 啊涝矫懦 荐啊 绝促. if (!pTargetCreature->isPC() || !isSameRace(pCreature, pTargetCreature)) { pPIIM->cancelInvite(pCreature); executeError(pPacket, pPlayer,GC_PARTY_ERROR_RACE_DIFFER); return; } // 鸥百狼 敲饭捞绢甫 罐酒柯促. //PartyInviteInfo* pInfo1 = pPIIM->getInviteInfo(pCreature->getName()); PartyInviteInfo* pInfo2 = pPIIM->getInviteInfo(pTargetCreature->getName()); Player* pTargetPlayer = pTargetCreature->getPlayer(); GCPartyInvite gcPartyInvite; // 促弗 荤恩阑 颇萍俊 啊涝矫虐绊磊 且 锭 if (CODE == CG_PARTY_INVITE_REQUEST) { //cout << "CODE:CG_PARTY_INVITE_REQUEST" << endl; // 檬措茄 仇捞 捞固 促弗 仇阑 檬措 吝捞扼搁... // A啊 B甫 檬措茄促. 弊 促澜, B啊 A狼 夸备甫 // 傈崔罐瘤 给茄 惑怕俊辑 A甫 檬措茄促. // 捞 版快 笛 促 CODE啊 CG_PARTY_INVITE_REQUEST牢单... // cancalInvite秦滚府搁, A客 B狼 沥焊啊 朝酒啊滚府霸 等促. // 弊巴阑 规瘤窍扁 困秦 林籍贸府秦滚赴促. // 澜, 公郊 富牢瘤 郴啊 毫档 肋 葛福摆匙... -- excel96 /* if (pInfo1 != NULL) { //pPIIM->cancelInvite(pCreature); return; } */ // 檬措罐篮 仇捞 捞固 促弗 仇苞 檬措 包拌 吝捞扼搁... // 官悔聪啊 檬措俊 览且 荐 绝促. if (pInfo2 != NULL) { //cout << "pInfo2 != NULL" << endl; gcPartyInvite.setTargetObjectID(pPacket->getTargetObjectID()); gcPartyInvite.setCode(GC_PARTY_INVITE_BUSY); pPlayer->sendPacket(&gcPartyInvite); return; } int PartyID = pCreature->getPartyID(); int TargetPartyID = pTargetCreature->getPartyID(); //cout << "Creature" << pCreature->getName() << "] PartyID = " << PartyID << endl; //cout << "TargetCreature" << pTargetCreature->getName() << "] PartyID = " << PartyID << endl; // 檬措茄 仇苞 檬措罐篮 仇 笛 促啊 颇萍俊 啊涝登绢乐促搁 啊涝且 荐啊 绝促. if (PartyID != 0 && TargetPartyID != 0) { gcPartyInvite.setTargetObjectID(pPacket->getTargetObjectID()); gcPartyInvite.setCode(GC_PARTY_INVITE_ANOTHER_PARTY); pPlayer->sendPacket(&gcPartyInvite); return; } // 檬措茄 仇狼 颇萍 箭磊啊 钙胶扼搁 檬措且 荐 绝促. if (PartyID != 0) { if (!g_pGlobalPartyManager->canAddMember(PartyID)) { gcPartyInvite.setTargetObjectID(pPacket->getTargetObjectID()); gcPartyInvite.setCode(GC_PARTY_INVITE_MEMBER_FULL); pPlayer->sendPacket(&gcPartyInvite); return; } } // 檬措罐篮 仇狼 颇萍 箭磊啊 钙胶扼搁 檬措且 荐 绝促. if (TargetPartyID != 0) { if (!g_pGlobalPartyManager->canAddMember(TargetPartyID)) { gcPartyInvite.setTargetObjectID(pPacket->getTargetObjectID()); gcPartyInvite.setCode(GC_PARTY_INVITE_MEMBER_FULL); pPlayer->sendPacket(&gcPartyInvite); return; } } //cout << "Sending Packet" << endl; // 菩哦阑 焊郴霖促. gcPartyInvite.setTargetObjectID(pCreature->getObjectID()); gcPartyInvite.setCode(GC_PARTY_INVITE_REQUEST); pTargetPlayer->sendPacket(&gcPartyInvite); //cout << "Sent gcPartyInvite" << endl; // 笛 促 檬措葛靛肺 甸绢艾栏骨肺, 檬措 沥焊甫 积己秦 霖促. pPIIM->initInviteInfo(pCreature, pTargetCreature); //cout << "initInviteInfo OK" << endl; } // 颇萍 啊涝 脚没阑 秒家且 锭 else if (CODE == CG_PARTY_INVITE_CANCEL) { // 泅犁 檬措 吝牢瘤甫 眉农茄促. if (pPIIM->isInviting(pCreature, pTargetCreature)) { // 菩哦阑 霖厚秦 焊郴霖促. gcPartyInvite.setTargetObjectID(pCreature->getObjectID()); gcPartyInvite.setCode(GC_PARTY_INVITE_CANCEL); pTargetPlayer->sendPacket(&gcPartyInvite); // 檬措甫 秒家矫挪促. pPIIM->cancelInvite(pCreature, pTargetCreature); } else { executeError(pPacket, pPlayer, GC_PARTY_ERROR_NOT_INVITING); return; } } // 颇萍 啊涝 夸没阑 罐酒甸看阑 锭 else if (CODE == CG_PARTY_INVITE_ACCEPT) { if (pPIIM->isInviting(pCreature, pTargetCreature)) { int PartyID = pCreature->getPartyID(); int TargetPartyID = pTargetCreature->getPartyID(); // 颇萍俊 加秦 乐绰 仇捞 颇萍俊 加窍瘤 臼绰 仇阑 檬措沁阑 锭 // (颇萍俊 加秦乐瘤 臼篮 仇捞, 颇萍俊 加秦 乐绰 仇狼 檬措俊 览沁阑 锭) if (TargetPartyID != 0 && PartyID == 0) { // 臂肺国 颇萍 概聪历俊 糕滚甫 歹茄促. if (g_pGlobalPartyManager->addPartyMember(TargetPartyID, pCreature)) { // 肺拿 颇萍 概聪历俊 糕滚甫 歹茄促. LocalPartyManager* pLocalPartyManager = pZone->getLocalPartyManager(); pLocalPartyManager->addPartyMember(TargetPartyID, pCreature); } } // 颇萍俊 加秦乐瘤 臼篮 仇捞 颇萍俊 加秦乐绰 仇阑 檬措沁阑 锭 // (颇萍俊 加秦乐绰 仇捞, 颇萍俊 加秦乐瘤 臼篮 仇狼 檬措俊 览沁阑 锭) // (颇萍俊 加秦乐绰 仇捞, 寇何牢狼 柳涝阑 倾啊沁阑 锭) else if (PartyID != 0 && TargetPartyID == 0) { // 臂肺国 颇萍 概聪历俊 糕滚甫 歹茄促. if (g_pGlobalPartyManager->addPartyMember(PartyID, pTargetCreature)) { // 肺拿 颇萍 概聪历俊 糕滚甫 歹茄促. LocalPartyManager* pLocalPartyManager = pZone->getLocalPartyManager(); pLocalPartyManager->addPartyMember(PartyID, pTargetCreature); } } // 滴 仇 促 酒公繁 颇萍俊 加秦乐瘤 臼阑 锭 // (货肺款 颇萍甫 积己且 锭) else { // 货肺款 颇萍甫 父甸绢 殿废茄促. int NewPartyID = g_pGlobalPartyManager->registerParty(); // 臂肺国 颇萍 概聪历俊 臂肺国 颇萍甫 歹窍绊, 糕滚甫 歹茄促. g_pGlobalPartyManager->createParty(NewPartyID, pTargetCreature->getCreatureClass()); g_pGlobalPartyManager->addPartyMember(NewPartyID, pCreature); g_pGlobalPartyManager->addPartyMember(NewPartyID, pTargetCreature); // 肺拿 颇萍 概聪历俊 肺拿 颇萍甫 歹窍绊, 糕滚甫 歹茄促. LocalPartyManager* pLocalPartyManager = pZone->getLocalPartyManager(); pLocalPartyManager->createParty(NewPartyID, pTargetCreature->getCreatureClass()); pLocalPartyManager->addPartyMember(NewPartyID, pCreature); pLocalPartyManager->addPartyMember(NewPartyID, pTargetCreature); } // 颇萍 檬措啊 场车栏骨肺, 颇萍 檬措 沥焊甫 昏力秦霖促. pPIIM->cancelInvite(pCreature, pTargetCreature); } else { executeError(pPacket, pPlayer, GC_PARTY_ERROR_NOT_INVITING); return; } } // 颇萍 啊涝 夸没阑 芭何沁阑 锭 else if (CODE == CG_PARTY_INVITE_REJECT) { if (pPIIM->isInviting(pCreature, pTargetCreature)) { // 菩哦阑 焊辰促. gcPartyInvite.setTargetObjectID(pCreature->getObjectID()); gcPartyInvite.setCode(GC_PARTY_INVITE_REJECT); pTargetPlayer->sendPacket(&gcPartyInvite); // 颇萍 檬措甫 芭何沁栏骨肺 檬措 沥焊甫 昏力矫难霖促. pPIIM->cancelInvite(pCreature, pTargetCreature); } else { executeError(pPacket, pPlayer, GC_PARTY_ERROR_NOT_INVITING); return; } } else if (CODE == CG_PARTY_INVITE_BUSY) { gcPartyInvite.setTargetObjectID(pPacket->getTargetObjectID()); gcPartyInvite.setCode(GC_PARTY_INVITE_BUSY); pPlayer->sendPacket(&gcPartyInvite); } else { throw ProtocolException("CGPartyInvite::execute() : Unknown Code"); }#endif __END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGPartyInviteHandler::executeError (CGPartyInvite* pPacket , Player* pPlayer, BYTE ErrorCode) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ GCPartyError gcPartyError; gcPartyError.setTargetObjectID(pPacket->getTargetObjectID()); gcPartyError.setCode(ErrorCode); pPlayer->sendPacket(&gcPartyError);#endif __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?