📄 packetutil.cpp
字号:
pAddSlayerCorpse->setTreasureCount(pSlayerCorpse->getTreasureCount()); __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 粮俊促 轨颇捞绢 矫眉甫 眠啊且 锭 焊郴绰 菩哦阑 备己茄促.//////////////////////////////////////////////////////////////////////////////void makeGCAddVampireCorpse(GCAddVampireCorpse* pAddVampireCorpse, VampireCorpse* pVampireCorpse) throw(){ __BEGIN_TRY pAddVampireCorpse->setVampireInfo(pVampireCorpse->getVampireInfo()); pAddVampireCorpse->setTreasureCount(pVampireCorpse->getTreasureCount()); __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 粮俊促 阁胶磐 矫眉甫 眠啊且 锭 焊郴绰 菩哦阑 备己茄促.//////////////////////////////////////////////////////////////////////////////void makeGCAddMonsterCorpse(GCAddMonsterCorpse* pAddMonsterCorpse, MonsterCorpse* pMonsterCorpse, int X, int Y) throw(){ __BEGIN_TRY pAddMonsterCorpse->setObjectID(pMonsterCorpse->getObjectID()); pAddMonsterCorpse->setMonsterType(pMonsterCorpse->getMonsterType()); pAddMonsterCorpse->setMonsterName(pMonsterCorpse->getMonsterName()); pAddMonsterCorpse->setX(X); pAddMonsterCorpse->setY(Y); pAddMonsterCorpse->setDir(pMonsterCorpse->getDir()); pAddMonsterCorpse->setTreasureCount(pMonsterCorpse->getTreasureCount()); pAddMonsterCorpse->sethasHead(pMonsterCorpse->gethasHead()); pAddMonsterCorpse->setLastKiller(pMonsterCorpse->getLastKiller()); __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 粮俊促 酒快胶磐令 矫眉甫 眠啊且 锭 焊郴绰 菩哦阑 备己茄促.//////////////////////////////////////////////////////////////////////////////void makeGCAddOustersCorpse(GCAddOustersCorpse* pAddOustersCorpse, OustersCorpse* pOustersCorpse) throw(){ __BEGIN_TRY pAddOustersCorpse->setOustersInfo(pOustersCorpse->getOustersInfo()); pAddOustersCorpse->setTreasureCount(pOustersCorpse->getTreasureCount()); __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 促弗 荤恩狼 弥措 眉仿 鞍篮 巴捞 函版登菌阑 版快俊 朝酒啊绰 // GCOtherModifyInfo甫 备己茄促.//////////////////////////////////////////////////////////////////////////////void makeGCOtherModifyInfo(GCOtherModifyInfo* pInfo, Slayer* pSlayer, const SLAYER_RECORD* prev){ SLAYER_RECORD cur; pSlayer->getSlayerRecord(cur); pInfo->setObjectID(pSlayer->getObjectID()); if (prev->pHP[ATTR_CURRENT] != cur.pHP[ATTR_CURRENT]) pInfo->addShortData(MODIFY_CURRENT_HP, cur.pHP[ATTR_CURRENT]); if (prev->pHP[ATTR_MAX ] != cur.pHP[ATTR_MAX ]) pInfo->addShortData(MODIFY_MAX_HP, cur.pHP[ATTR_MAX]);}void makeGCOtherModifyInfo(GCOtherModifyInfo* pInfo, Vampire* pVampire, const VAMPIRE_RECORD* prev){ VAMPIRE_RECORD cur; pVampire->getVampireRecord(cur); pInfo->setObjectID(pVampire->getObjectID()); if (prev->pHP[ATTR_CURRENT] != cur.pHP[ATTR_CURRENT]) pInfo->addShortData(MODIFY_CURRENT_HP, cur.pHP[ATTR_CURRENT]); if (prev->pHP[ATTR_MAX ] != cur.pHP[ATTR_MAX ]) pInfo->addShortData(MODIFY_MAX_HP, cur.pHP[ATTR_MAX]);}void makeGCOtherModifyInfo(GCOtherModifyInfo* pInfo, Ousters* pOusters, const OUSTERS_RECORD* prev){ OUSTERS_RECORD cur; pOusters->getOustersRecord(cur); pInfo->setObjectID(pOusters->getObjectID()); if (prev->pHP[ATTR_CURRENT] != cur.pHP[ATTR_CURRENT]) pInfo->addShortData(MODIFY_CURRENT_HP, cur.pHP[ATTR_CURRENT]); if (prev->pHP[ATTR_MAX ] != cur.pHP[ATTR_MAX ]) pInfo->addShortData(MODIFY_MAX_HP, cur.pHP[ATTR_MAX]);}void makeGCCreateItem(GCCreateItem* pGCCreateItem, Item* pItem, CoordInven_t x, CoordInven_t y) throw(Error){ pGCCreateItem->setObjectID(pItem->getObjectID()); pGCCreateItem->setItemClass((BYTE)pItem->getItemClass()); pGCCreateItem->setItemType(pItem->getItemType()); pGCCreateItem->setOptionType(pItem->getOptionTypeList()); pGCCreateItem->setDurability(pItem->getDurability()); pGCCreateItem->setEnchantLevel(pItem->getEnchantLevel()); pGCCreateItem->setSilver(pItem->getSilver()); pGCCreateItem->setGrade(pItem->getGrade()); pGCCreateItem->setItemNum(pItem->getNum()); pGCCreateItem->setInvenX(x); pGCCreateItem->setInvenY(y); if ( pItem->getItemClass() == Item::ITEM_CLASS_PET_ITEM ) { PetItem* pPetItem = dynamic_cast<PetItem*>(pItem); list<OptionType_t> olist; if ( pPetItem->getPetInfo()->getPetOption() != 0 ) olist.push_back(pPetItem->getPetInfo()->getPetOption()); pGCCreateItem->setOptionType( olist ); pGCCreateItem->setDurability( pPetItem->getPetInfo()->getPetHP() ); pGCCreateItem->setEnchantLevel( pPetItem->getPetInfo()->getPetAttr() ); pGCCreateItem->setSilver( pPetItem->getPetInfo()->getPetAttrLevel() ); pGCCreateItem->setGrade( (pPetItem->getPetInfo()->getPetHP()==0)?(pPetItem->getPetInfo()->getLastFeedTime().daysTo( VSDateTime::currentDateTime() )):(-1) ); pGCCreateItem->setItemNum( pPetItem->getPetInfo()->getPetLevel() ); }}void sendPayInfo(GamePlayer* pGamePlayer) throw (Error){ __BEGIN_TRY /* char str[80]; if (pGamePlayer->isPayPlaying()) { Timeval currentTime; getCurrentTime(currentTime); Timeval payTime = pGamePlayer->getPayPlayTime(currentTime); if (pGamePlayer->getPayPlayType()==PAY_PLAY_TYPE_PERSON) { strcpy(str, "[俺牢] "); } else { strcpy(str, "[PC规] "); } if (pGamePlayer->getPayType()==PAY_TYPE_FREE) { strcat(str, "蜡丰辑厚胶瘤父 公丰 拌沥涝聪促."); } else if (pGamePlayer->getPayType()==PAY_TYPE_PERIOD) { sprintf(str, "%s%s 鳖瘤 荤侩啊瓷钦聪促.", str, pGamePlayer->getPayPlayAvailableDateTime().toString().c_str()); } else { sprintf(str, "%s荤侩矫埃 : %d / %d 盒", str, (payTime.tv_sec/60), pGamePlayer->getPayPlayAvailableHours()); } } else { strcpy(str, "公丰 霸烙 吝涝聪促."); } GCSystemMessage gcSystemMessage; gcSystemMessage.setMessage(str); pGamePlayer->sendPacket (&gcSystemMessage); */ __END_CATCH}// 林困俊 LevelUp effect甫 谎妨霖促.void sendEffectLevelUp(Creature* pCreature) throw (Error){ __BEGIN_TRY Assert(pCreature!=NULL); //Assert(pCreature->isPC()); // 林困俊 谎妨霖促. GCAddEffect gcAddEffect; gcAddEffect.setObjectID(pCreature->getObjectID()); gcAddEffect.setDuration(10); // 喊肺 狼固绝瘤父 1檬肺 汲沥 if (pCreature->isSlayer()) { gcAddEffect.setEffectID(Effect::EFFECT_CLASS_LEVELUP_SLAYER); } else if (pCreature->isVampire()) { gcAddEffect.setEffectID(Effect::EFFECT_CLASS_LEVELUP_VAMPIRE); } else if (pCreature->isOusters()) { gcAddEffect.setEffectID(Effect::EFFECT_CLASS_LEVELUP_OUSTERS); } pCreature->getZone()->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcAddEffect); //cout << "send LEVEL UP : " << gcAddEffect.toString().c_str() << endl; __END_CATCH}void sendSystemMessage(GamePlayer* pGamePlayer, const string& msg) throw (Error){ __BEGIN_TRY Assert(pGamePlayer!=NULL); // 粮俊 乐促搁 官肺 焊郴霖促. if (pGamePlayer->getPlayerStatus()==GPS_NORMAL) { GCSystemMessage gcSystemMessage; gcSystemMessage.setMessage( msg ); pGamePlayer->sendPacket( &gcSystemMessage ); } // 粮俊 绝促搁.. GamePlayer俊 眠啊秦滴绊 唱吝俊 焊郴霖促. else { Event* pEvent = pGamePlayer->getEvent(Event::EVENT_CLASS_SYSTEM_MESSAGE); EventSystemMessage* pEventSystemMessage = NULL; if (pEvent==NULL) { pEvent = pEventSystemMessage = new EventSystemMessage(pGamePlayer); // 粮俊 甸绢啊磊 付磊 贸府等促. pEvent->setDeadline( 0 ); pGamePlayer->addEvent( pEvent ); } else { pEventSystemMessage = dynamic_cast<EventSystemMessage*>(pEvent); } Assert(pEventSystemMessage!=NULL); pEventSystemMessage->addMessage( msg ); //cout << "NOT GPS_NORMAL: EventSystemMessage" << endl; } __END_CATCH}bool makeGCWarScheduleList(GCWarScheduleList* pGCWarScheduleList, ZoneID_t zoneID) throw(Error){ __BEGIN_TRY Zone* pZone = getZoneByZoneID(zoneID); Assert(pZone!=NULL); Assert(pZone->isCastle()); WarScheduler* pWarScheduler = pZone->getWarScheduler(); Assert(pWarScheduler!=NULL); pWarScheduler->makeGCWarScheduleList( pGCWarScheduleList ); __END_CATCH return true;}/*void makeGCItemNameInfoList(GCItemNameInfoList* pInfo, PlayerCreature* pPC) throw(Error){ __BEGIN_TRY list<ItemNameInfo*>& itemNameInfos = pPC->getItemNameInfoList(); list<ItemNAmeInfo*>::const_iterator itr = itemNameInfos.begin(); for( ; itr != itemNameInfos.end() ; itr++ ) { pInfo->addItemNameInfo( *itr ); } __END_CATCH}*/void sendGCMiniGameScores( PlayerCreature* pPC, BYTE gameType, BYTE Level ){ GCMiniGameScores gcMGS; gcMGS.setGameType( (GameType)gameType ); gcMGS.setLevel(Level); Statement* pStmt = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); Result* pResult = pStmt->executeQuery( "SELECT Name, Score FROM MiniGameScores WHERE Type=%u AND Level=%u LIMIT 1", gameType, Level); // UPDATE牢 版快绰 Result* 措脚俊.. pStmt->getAffectedRowCount() if (pResult->next()) { gcMGS.addScore( pResult->getString(1), pResult->getInt(2) ); }/* pResult = pStmt->executeQuery( "SELECT Score FROM MiniGameScores WHERE Type=%u AND Level=%u AND Name='%s' LIMIT 1", gameType, Level, pPC->getName().c_str() ); if (pResult->next()) { gcMGS.addScore( pPC->getName(), pResult->getInt(1) ); }*/ SAFE_DELETE(pStmt); } END_DB(pStmt) pPC->getPlayer()->sendPacket(&gcMGS);}void makeGCPetStashList( GCPetStashList* pPacket, PlayerCreature* pPC ){ for ( int i=0; i<MAX_PET_STASH; ++i ) { PetItem* pPetItem = dynamic_cast<PetItem*>(pPC->getPetStashItem(i)); if ( pPetItem != NULL ) { PetStashItemInfo* pInfo = new PetStashItemInfo; pInfo->pPetInfo = pPetItem->getPetInfo(); pInfo->KeepDays = 0; pPacket->getPetStashItemInfos()[i] = pInfo; } } cout << pPacket->toString() << endl;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -