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

📄 attackmelee.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			_GCAttackMeleeOK3.setObjectID(pVampire->getObjectID());			_GCAttackMeleeOK3.setTargetObjectID (TargetObjectID);			pPlayer->sendPacket(&_GCAttackMeleeOK1);			if (pTargetCreature->isPC()) 			{				Player* pTargetPlayer = pTargetCreature->getPlayer();				if (pTargetPlayer != NULL) 				{					_GCAttackMeleeOK2.setObjectID(pVampire->getObjectID());					pTargetPlayer->sendPacket(&_GCAttackMeleeOK2);				}			} 			else if (pTargetCreature->isMonster())			{				Monster* pMonster = dynamic_cast<Monster*>(pTargetCreature);				pMonster->addEnemy(pVampire);				// 付胶磐绰 掉饭捞绝促.				if (!pMonster->isMaster())				{					Timeval NextTurn = pMonster->getNextTurn();					Timeval DelayTurn;					DelayTurn.tv_sec = 0;					DelayTurn.tv_usec = 200000;					Timeval NewTurn = NextTurn + DelayTurn;					pMonster->setNextTurn(NewTurn);				}			}			list<Creature *> cList;			cList.push_back(pTargetCreature);			cList.push_back(pVampire);			pZone->broadcastPacket(pVampire->getX(), pVampire->getY(),  &_GCAttackMeleeOK3 , cList);			pSkillSlot->setRunTime();		}		else 		{			executeSkillFailNormal(pVampire, getSkillType(), pTargetCreature);		}	} 	catch (Throwable & t) 	{		executeSkillFailException(pVampire, getSkillType());	}	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End(vampire)" << endl;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 酒快胶磐胶 坷宏璃飘//////////////////////////////////////////////////////////////////////////////void AttackMelee::execute(Ousters* pOusters, ObjectID_t TargetObjectID)	throw(Error){	__BEGIN_TRY	Assert(pOusters != NULL);	try 	{		Player* pPlayer = pOusters->getPlayer();		Zone* pZone = pOusters->getZone();		Assert(pPlayer != NULL);		Assert(pZone != NULL);		Creature* pTargetCreature = pZone->getCreature(TargetObjectID);			// NoSuch力芭 锭巩俊. by sigi. 2002.5.2		if (pTargetCreature==NULL)		{			executeSkillFailException(pOusters, getSkillType());			return;		}		GCAttackMeleeOK1 _GCAttackMeleeOK1;		GCAttackMeleeOK2 _GCAttackMeleeOK2;		GCAttackMeleeOK3 _GCAttackMeleeOK3;		// 胶懦 浇儿阑 罐酒柯促.		OustersSkillSlot* pSkillSlot = pOusters->hasSkill(SKILL_ATTACK_MELEE);		Assert(pSkillSlot != NULL);		bool bCriticalHit = false;		Damage_t Damage = computeDamage(pOusters, pTargetCreature, 0, bCriticalHit);		bool bTimeCheck         = verifyRunTime(pSkillSlot);		bool bRangeCheck        = verifyDistance(pOusters, pTargetCreature, 1);		bool bHitRoll           = HitRoll::isSuccess(pOusters, pTargetCreature);		bool bCanHit            = canHit(pOusters, pTargetCreature, SKILL_ATTACK_MELEE);		bool bPK                = verifyPK(pOusters, pTargetCreature);		if (bTimeCheck && bRangeCheck && bHitRoll && bCanHit && bPK)		{			Damage += computeElementalCombatSkill( pOusters, pTargetCreature, _GCAttackMeleeOK1 );			CheckCrossCounter(pOusters, pTargetCreature, Damage);			// 单固瘤甫 林绊, 郴备档甫 冻绢哆赴促.			setDamage(pTargetCreature, Damage, pOusters, SKILL_ATTACK_MELEE, &_GCAttackMeleeOK2, &_GCAttackMeleeOK1);			computeAlignmentChange(pTargetCreature, Damage, pOusters, &_GCAttackMeleeOK2, &_GCAttackMeleeOK1);			decreaseDurability(pOusters, pTargetCreature, 1, &_GCAttackMeleeOK1, &_GCAttackMeleeOK2);			// 农府萍拿 洒飘扼搁 惑措规阑 第肺 拱矾唱霸 茄促.			if (bCriticalHit)			{				knockbackCreature(pZone, pTargetCreature, pOusters->getX(), pOusters->getY());			}			increaseAlignment(pOusters, pTargetCreature, _GCAttackMeleeOK1);			// 惑措啊 磷菌促搁 版氰摹甫 粱 棵妨霖促.			if (pTargetCreature->isDead())			{				int exp = computeCreatureExp(pTargetCreature, 100, pOusters);				shareOustersExp(pOusters, exp, _GCAttackMeleeOK1);			}			_GCAttackMeleeOK1.setObjectID(TargetObjectID);			_GCAttackMeleeOK3.setObjectID(pOusters->getObjectID());			_GCAttackMeleeOK3.setTargetObjectID (TargetObjectID);			pPlayer->sendPacket(&_GCAttackMeleeOK1);			if (pTargetCreature->isPC()) 			{				Player* pTargetPlayer = pTargetCreature->getPlayer();				if (pTargetPlayer != NULL) 				{					_GCAttackMeleeOK2.setObjectID(pOusters->getObjectID());					pTargetPlayer->sendPacket(&_GCAttackMeleeOK2);				}			} 			else if (pTargetCreature->isMonster())			{				Monster* pMonster = dynamic_cast<Monster*>(pTargetCreature);				pMonster->addEnemy(pOusters);				// 付胶磐绰 掉饭捞绝促.				if (!pMonster->isMaster())				{					Timeval NextTurn = pMonster->getNextTurn();					Timeval DelayTurn;					DelayTurn.tv_sec = 0;					DelayTurn.tv_usec = 200000;					Timeval NewTurn = NextTurn + DelayTurn;					pMonster->setNextTurn(NewTurn);				}			}			list<Creature *> cList;			cList.push_back(pTargetCreature);			cList.push_back(pOusters);			pZone->broadcastPacket(pOusters->getX(), pOusters->getY(),  &_GCAttackMeleeOK3 , cList);			pSkillSlot->setRunTime();		}		else 		{			executeSkillFailNormal(pOusters, getSkillType(), pTargetCreature);		}	} 	catch (Throwable & t) 	{		executeSkillFailException(pOusters, getSkillType());	}	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End(vampire)" << endl;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// 阁胶磐 坷宏璃飘//////////////////////////////////////////////////////////////////////////////void AttackMelee::execute(Monster* pMonster, Creature* pEnemy)	throw(Error){	__BEGIN_TRY	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " Begin(monster)" << endl;	Assert(pMonster != NULL);	Assert(pEnemy != NULL);	try 	{ 		Zone* pZone = pMonster->getZone();		Assert(pZone != NULL);		if (pMonster->isFlag(Effect::EFFECT_CLASS_HIDE))		{			//cout << "Monster cannot use skill while hiding." << endl;			//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End(monster)" << endl;			return;		}		if (pMonster->isFlag(Effect::EFFECT_CLASS_INVISIBILITY))		{			addVisibleCreature(pZone, pMonster, true);		}		GCAttackMeleeOK2 _GCAttackMeleeOK2;		GCAttackMeleeOK3 _GCAttackMeleeOK3;		bool bCriticalHit = false;		Damage_t Damage = computeDamage(pMonster, pEnemy, 0, bCriticalHit);		bool bRangeCheck        = verifyDistance(pMonster, pEnemy, pMonster->getMeleeRange());		bool bHitRoll           = HitRoll::isSuccess(pMonster, pEnemy);		bool bCanHit            = canHit(pMonster, pEnemy, SKILL_ATTACK_MELEE);		if (bRangeCheck && bHitRoll && bCanHit)		{			CheckCrossCounter(pMonster, pEnemy, Damage);			// 单固瘤甫 林绊, 郴备档甫 冻绢哆赴促.			setDamage(pEnemy, Damage, pMonster, SKILL_ATTACK_MELEE, &_GCAttackMeleeOK2);			decreaseDurability(pMonster, pEnemy, 1, NULL, &_GCAttackMeleeOK2);			// 农府萍拿 洒飘扼搁 惑措规阑 第肺 拱矾唱霸 茄促.			if (bCriticalHit)			{				knockbackCreature(pZone, pEnemy, pMonster->getX(), pMonster->getY());			}			_GCAttackMeleeOK3.setObjectID(pMonster->getObjectID());			_GCAttackMeleeOK3.setTargetObjectID (pEnemy->getObjectID());			if (pEnemy->isPC()) 			{				Player* pTargetPlayer = pEnemy->getPlayer();				Assert(pTargetPlayer != NULL);				_GCAttackMeleeOK2.setObjectID(pMonster->getObjectID());				pTargetPlayer->sendPacket(&_GCAttackMeleeOK2);			}			else if (pEnemy->isMonster())			{				Monster* pTargetMonster = dynamic_cast<Monster*>(pEnemy);				pTargetMonster->addEnemy(pMonster);			}			list<Creature *> cList;			cList.push_back(pEnemy);			cList.push_back(pMonster);			pZone->broadcastPacket(pMonster->getX(), pMonster->getY(),  &_GCAttackMeleeOK3 , cList);		} 		else 		{			executeSkillFailNormal(pMonster, getSkillType(), pEnemy);		}	} 	catch (Throwable & t) 	{		executeSkillFailException(pMonster, getSkillType());	}	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End(monster)" << endl;	__END_CATCH}AttackMelee g_AttackMelee;

⌨️ 快捷键说明

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