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

📄 attackarms.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
						{							knockbackCreature(pZone, pEnemy, myX, myY);						}						// 鸥百捞 浇饭捞绢啊 酒匆 版快俊父 版氰摹甫 棵妨霖促.						if (!pTargetCreature->isSlayer())						{							bHit = true;						}					}				}				if (bHit)				{					shareAttrExp(pSlayer, Damage, 1, 8, 1, _GCSkillToTileOK1);					increaseDomainExp(pSlayer, DomainType, 1, _GCSkillToTileOK1);				}				// 醚舅 箭磊甫 临捞绊, 醚舅 箭磊甫 历厘窍绊, 巢篮 醚舅 箭磊甫 罐篮 促澜俊 郴备仿阑 冻绢哆赴促.				_GCSkillToTileOK1.addShortData(MODIFY_BULLET, RemainBullet);				decreaseDurability(pSlayer, NULL, 1, &_GCSkillToTileOK1, NULL);				_GCSkillToTileOK1.setSkillType(SKILL_MULTI_SHOT);				_GCSkillToTileOK1.setCEffectID(0);				_GCSkillToTileOK1.setX(targetX);				_GCSkillToTileOK1.setY(targetX);				_GCSkillToTileOK1.setRange(dir);				_GCSkillToTileOK1.setDuration(0);				_GCSkillToTileOK2.setObjectID(pSlayer->getObjectID());				_GCSkillToTileOK2.setSkillType(SKILL_MULTI_SHOT);				_GCSkillToTileOK2.setX(targetX);				_GCSkillToTileOK2.setY(targetY);				_GCSkillToTileOK2.setRange(dir);				_GCSkillToTileOK2.setDuration(0);				_GCSkillToTileOK3.setObjectID(pSlayer->getObjectID());				_GCSkillToTileOK3.setSkillType(SKILL_MULTI_SHOT);				_GCSkillToTileOK3.setX(targetX);				_GCSkillToTileOK3.setY(targetY);				_GCSkillToTileOK4.setSkillType(SKILL_MULTI_SHOT);				_GCSkillToTileOK4.setX(targetX);				_GCSkillToTileOK4.setY(targetY);				_GCSkillToTileOK4.setDuration(0);				_GCSkillToTileOK4.setRange(dir);				_GCSkillToTileOK5.setObjectID(pSlayer->getObjectID());				_GCSkillToTileOK5.setSkillType(SKILL_MULTI_SHOT);				_GCSkillToTileOK5.setX(targetX);				_GCSkillToTileOK5.setY(targetY);				_GCSkillToTileOK5.setRange(dir);				_GCSkillToTileOK5.setDuration(0);				pPlayer->sendPacket(&_GCSkillToTileOK1);				// 捞 扁贱俊 狼秦 康氢阑 罐绰 仇甸俊霸 菩哦阑 焊郴拎具 茄促.				for(list<Creature*>::const_iterator itr = cList.begin(); itr != cList.end(); itr++)				{					Creature* pVictim = *itr;					Assert(pVictim != NULL);					if (pVictim->isPC())					{						_GCSkillToTileOK2.clearList();						HP_t targetHP = 0;						if (pVictim->isSlayer())						{							targetHP = (dynamic_cast<Slayer*>(pVictim))->getHP(ATTR_CURRENT);						}						else if (pVictim->isVampire())						{							targetHP = (dynamic_cast<Vampire*>(pVictim))->getHP(ATTR_CURRENT);						}						else if (pVictim->isOusters())						{							targetHP = (dynamic_cast<Ousters*>(pVictim))->getHP(ATTR_CURRENT);						}						else continue;						_GCSkillToTileOK2.addShortData(MODIFY_CURRENT_HP, targetHP);						decreaseDurability(NULL, pVictim, 1, NULL, &_GCSkillToTileOK2);						Player* pPlayer = pVictim->getPlayer();						Assert(pPlayer != NULL);						pPlayer->sendPacket(&_GCSkillToTileOK2);					}					else if (pVictim->isMonster())					{						Monster* pMonster = dynamic_cast<Monster*>(pVictim);						pMonster->addEnemy(pSlayer);					}				}				cList.push_back(pSlayer);				cList = pZone->broadcastSkillPacket(myX, myY, targetX, targetY, &_GCSkillToTileOK5, cList);				pZone->broadcastPacket(myX, myY, &_GCSkillToTileOK3, cList);				pZone->broadcastPacket(targetX, targetY,  &_GCSkillToTileOK4, cList);			}			pSkillSlot->setRunTime();		} 		else 		{			executeSkillFailNormalWithGun(pSlayer, getSkillType(), pTargetCreature, RemainBullet);		}	} 	catch (Throwable &t) 	{		executeSkillFailException(pSlayer, getSkillType());		//cerr << t.toString() << endl;	}	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End(slayer)" << endl;	__END_DEBUG __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 阁胶磐 坷宏璃飘 勤甸矾//////////////////////////////////////////////////////////////////////////////void AttackArms::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 << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " end(monster)" << endl;			return;		}		if (pMonster->isFlag(Effect::EFFECT_CLASS_INVISIBILITY)) 		{			addVisibleCreature(pZone, pMonster, true);		}		GCAttackArmsOK2 _GCAttackArmsOK2;		GCAttackArmsOK3 _GCAttackArmsOK3;		GCAttackArmsOK4 _GCAttackArmsOK4;		GCAttackArmsOK5 _GCAttackArmsOK5;		_GCAttackArmsOK5.setSkillSuccess(false);		if (HitRoll::isSuccess(pMonster, pEnemy) && verifyDistance(pMonster, pEnemy, pMonster->getMissileRange())) 		{			bool bCriticalHit = false;			Damage_t Damage = computeDamage(pMonster, pEnemy, 0, bCriticalHit);			setDamage(pEnemy, Damage, pMonster, SKILL_ATTACK_ARMS, &_GCAttackArmsOK2, NULL);			// 农府萍拿 洒飘扼搁 惑措规阑 第肺 拱矾唱霸 茄促.			if (bCriticalHit)			{				knockbackCreature(pZone, pEnemy, pMonster->getX(), pMonster->getY());			}			_GCAttackArmsOK5.setSkillSuccess(true);					if (pEnemy->isPC()) 			{				Player* pTargetPlayer = pEnemy->getPlayer();				if (pTargetPlayer != NULL) 				{ 					_GCAttackArmsOK2.setObjectID(pMonster->getObjectID());					pTargetPlayer->sendPacket(&_GCAttackArmsOK2);				}			} 			else if (pEnemy->isMonster())			{				Monster* pTargetMonster = dynamic_cast<Monster*>(pEnemy);				pTargetMonster->addEnemy(pMonster);				// 付胶磐绰 掉饭捞绝促.				if (!pMonster->isMaster()#ifdef __UNDERWORLD__						&& !pMonster->isUnderworld() && pMonster->getMonsterType() != 599#endif				)				{					Timeval NextTurn = pMonster->getNextTurn();					Timeval DelayTurn;					DelayTurn.tv_sec = 0;					DelayTurn.tv_usec = 200000;					Timeval NewTurn = NextTurn + DelayTurn;					pTargetMonster->setNextTurn(NewTurn);				}			}			// 傍拜磊客 惑措狼 酒捞袍 郴备己 冻绢飘覆.			decreaseDurability(pMonster, pEnemy, 1, NULL, &_GCAttackArmsOK2);			ZoneCoord_t targetX = pEnemy->getX();			ZoneCoord_t targetY = pEnemy->getY();			ZoneCoord_t myX     = pMonster->getX();			ZoneCoord_t myY     = pMonster->getY();			_GCAttackArmsOK3.setObjectID(pMonster->getObjectID());			_GCAttackArmsOK3.setTargetXY (targetX, targetY);						_GCAttackArmsOK4.setTargetObjectID (pEnemy->getObjectID());						_GCAttackArmsOK5.setObjectID(pMonster->getObjectID());			_GCAttackArmsOK5.setTargetObjectID (pEnemy->getObjectID());			list<Creature *> cList;			cList.push_back(pEnemy);			cList.push_back(pMonster);			cList = pZone->broadcastSkillPacket(myX, myY, targetX, targetY, &_GCAttackArmsOK5, cList);			pZone->broadcastPacket(myX, myY, &_GCAttackArmsOK3, cList);			pZone->broadcastPacket(targetX, targetY, &_GCAttackArmsOK4, cList);		}		else		{			executeSkillFailNormal(pMonster, getSkillType(), pEnemy);		}	} 	catch (Throwable& t) 	{		executeSkillFailException(pMonster, getSkillType());	}	//cout << "TID[" << Thread::self() << "]" << getSkillHandlerName() << " End(monster)" << endl;	__END_CATCH}AttackArms g_AttackArms;

⌨️ 快捷键说明

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