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

📄 effecthaspet.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////////////// Filename    : EffectHasPet.cpp// Written by  : 江// Description : //////////////////////////////////////////////////////////////////////////////#include "EffectHasPet.h"#include "PlayerCreature.h"#include "GamePlayer.h"#include "Zone.h"#include "PetInfo.h"#include "CreatureUtil.h"#include "PetExpInfo.h"#include "PetUtil.h"#include "types/PetTypes.h"#include "Gpackets/GCAddEffect.h"#include "Gpackets/GCRemoveEffect.h"#include "Gpackets/GCModifyInformation.h"#include "PetItem.h"#include "VSDateTime.h"#include "VariableManager.h"#include <cstdio>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////EffectHasPet::EffectHasPet(Creature* pCreature)	throw(Error){	__BEGIN_TRY	setTarget(pCreature);	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectHasPet::affect()	throw(Error){	__BEGIN_TRY	Creature* pCreature = dynamic_cast<Creature*>(m_pTarget);	affect( pCreature );	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectHasPet::affect(Creature* pCreature)	throw(Error){	__BEGIN_TRY	if ( pCreature == NULL || !pCreature->isPC() ) return;	VSDateTime currentTime = VSDateTime::currentDateTime();	setNextTime(600);	setDeadline(999999);	PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);	Assert( pPC != NULL );	//cout << pPC->getName() << " 狼 脐捞 逛冈阑锭啊 灯嚼聪促." << endl;	GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPC->getPlayer());	Assert( pGamePlayer != NULL );	list<PetItem*>::iterator itr = pPC->getPetItems().begin();	list<PetItem*>::iterator endItr = pPC->getPetItems().end();	for ( ; itr != endItr ; ++itr )	{		PetItem* pPetItem = *itr;		if ( pPetItem == NULL ) continue;		PetInfo* pPetInfo = pPetItem->getPetInfo();		//cout << pPC->getName() << " 狼 脐牢 " << pPetItem->getObjectID() << " 锅 脐捞 逛冈嚼聪促." << pPetInfo->getPetHP() << endl;		if ( pPetInfo == NULL )		{			filelog( "PetBug.log", "EffectHasPet 倒酒啊绰单 脐捞 绝促 : %s", pPC->getName().c_str() );			continue;		}		PetHP_t PetHP = pPetInfo->getPetHP();		if ( PetHP == 0 )		{			continue;		}		int secsLast = pPetInfo->getLastFeedTime().secsTo(currentTime);//		if ( secsLast > 70 )//		{//			filelog( "PetBug.log", "脐捞 逛冈绰单 70檬 逞霸 吧啡促. %d檬 : %s", secsLast, pPC->getName().c_str() );//		}		// 50饭骇 脐篮 10盒俊 茄锅究 逛冈绰促.		if ( pPetInfo->getPetLevel() == 50 && secsLast < 600 ) continue;		pPetInfo->setCurrentFeedTurn( pPetInfo->getCurrentFeedTurn() + 1 );		// 啊阐 逛冈牢促.		if ( pPetInfo->getCurrentFeedTurn() >= pPetInfo->getFeedTurn() )		{			pPetInfo->setCurrentFeedTurn(0);			pPetInfo->setPetHP( PetHP-1 );			pPetInfo->setFeedTime( currentTime );			if ( pPetInfo->getPetHP() == 0 )			{				filelog( "Pet.log", "%s狼 脐捞 磷菌促.", pPC->getName().c_str() );				//cout << pPC->getName() << "狼 脐捞 磷菌促" << endl;				if ( pPC->getPetInfo() == pPetInfo )				{					pPC->setPetInfo(NULL);					pPC->initAllStatAndSend();					sendPetInfo( pGamePlayer, true, false );				}			}		}		if ( pPC->getPetInfo() == pPetInfo )		{			PetExp_t exp = 20;			if ( !pGamePlayer->isPayPlaying() ) exp = 12;			exp = getPercentValue( exp, g_pVariableManager->getPetExpRatio() );			if ( increasePetExp( pPetInfo, exp ) )			{				sendPetInfo( pGamePlayer, true, false );			}			else			{				GCModifyInformation gcMI;				gcMI.addLongData( MODIFY_PET_EXP, pPetInfo->getPetExp() );				gcMI.addShortData( MODIFY_PET_HP, pPetInfo->getPetHP() );				pGamePlayer->sendPacket( &gcMI );			}		}		char query[100];		sprintf(query, "PetHP=%u, LastFeedTime='%s', PetExp=%u", pPetInfo->getPetHP(), currentTime.toDateTime().c_str(), pPetInfo->getPetExp());		pPetInfo->getPetItem()->tinysave(query);	}	__END_CATCH}void EffectHasPet::unaffect() 	throw(Error){	__BEGIN_TRY		Creature* pCreature = dynamic_cast<Creature *>(m_pTarget);	unaffect(pCreature);	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void EffectHasPet::unaffect(Creature* pCreature)	throw(Error){	__BEGIN_TRY	__BEGIN_DEBUG	//cout << "EffectHasPet" << "unaffect BEGIN" << endl;	Assert(pCreature != NULL);	//cout << "EffectHasPet 瘤矿聪促." << endl;	// 瓷仿摹甫 沥惑利栏肺 登倒府扁 困秦辑绰 敲贰弊甫 掺绊,	// initAllStat阑 阂矾具 茄促.	pCreature->removeFlag(Effect::EFFECT_CLASS_HAS_PET);	Zone* pZone = pCreature->getZone();	Assert(pZone != NULL);	GCRemoveEffect gcRemoveEffect;	gcRemoveEffect.setObjectID(pCreature->getObjectID());	gcRemoveEffect.addEffectList(Effect::EFFECT_CLASS_HAS_PET);	pZone->broadcastPacket(pCreature->getX(), pCreature->getY(), &gcRemoveEffect);	//cout << "EffectHasPet" << "unaffect END" << endl;	__END_DEBUG	__END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////string EffectHasPet::toString()	const throw(){	__BEGIN_TRY	StringStream msg;	msg << "EffectHasPet("		<< "ObjectID:" << getObjectID()		<< ")";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -