⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packetutil.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	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 + -