cglearnskillhandler.cpp

来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 740 行 · 第 1/2 页

CPP
740
字号
//////////////////////////////////////////////////////////////////////////////// Filename    : CGLearnSkillHandler.cpp// Written By  : elca@ewestsoft.com// Description ://////////////////////////////////////////////////////////////////////////////#include "CGLearnSkill.h"#ifdef __GAME_SERVER__	#include "GamePlayer.h"	#include "NPC.h"	#include "Slayer.h"	#include "Vampire.h"	#include "Ousters.h"	#include "StringPool.h"	#include "SkillParentInfo.h"	#include "SkillInfo.h"	#include "SkillDomainInfoManager.h"	#include "Gpackets/GCLearnSkillFailed.h"	#include "Gpackets/GCLearnSkillOK.h"	#include "Gpackets/GCLearnSkillReady.h"	#include "Gpackets/GCSystemMessage.h"	#include <cstdio>	bool CheckRequiredSkill(SkillInfo* pSkillInfo, Ousters* pOusters, int domain);	int getSkillMapID(ElementalDomain domain);#endif	//////////////////////////////////////////////////////////////////////////////// constants//////////////////////////////////////////////////////////////////////////////#define DOMAIN_DIFFER           0#define NPC_LEVEL_LIMIT         1#define PARENT_SKILL_NEED       2#define SKILL_NOT_IMPLEMENTED  10////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGLearnSkillHandler::execute (CGLearnSkill* pPacket , Player* pPlayer)	 throw (ProtocolException, Error){	__BEGIN_TRY __BEGIN_DEBUG_EX		#ifdef __GAME_SERVER__	Assert(pPacket != NULL);	Assert(pPlayer != NULL);			Assert(pPacket != NULL && pPlayer != NULL);	SkillType_t        targetSkillType  = pPacket->getSkillType();	GamePlayer*        pGamePlayer      = dynamic_cast<GamePlayer*>(pPlayer);	Creature*          pPC              = pGamePlayer->getCreature();	GCLearnSkillFailed failpkt; 	// 泅犁 备泅登瘤 臼篮 扁贱阑 硅快妨绰瘤 眉农茄促.	switch (targetSkillType)	{		////////////////////////////////////////////////////////////		// 瘤盔登绰 扁贱		////////////////////////////////////////////////////////////		case SKILL_DOUBLE_IMPACT:		case SKILL_TRIPLE_SLASHER:		case SKILL_RAINBOW_SLASHER:		case SKILL_THUNDER_SPARK:		case SKILL_DANCING_SWORD:		case SKILL_CROSS_COUNTER:		case SKILL_FLASH_SLIDING:		case SKILL_LIGHTNING_HAND:		case SKILL_SINGLE_BLOW:		case SKILL_SPIRAL_SLAY:		case SKILL_TRIPLE_BREAK:		case SKILL_WILD_SMASH:		case SKILL_GHOST_BLADE:		case SKILL_POTENTIAL_EXPLOSION:		case SKILL_SHADOW_WALK:		case SKILL_CHARGING_POWER:		case SKILL_FAST_RELOAD:		case SKILL_QUICK_FIRE://		case SKILL_SMG_MASTERY:		case SKILL_MULTI_SHOT:			case SKILL_HEAD_SHOT://		case SKILL_AR_MASTERY:		case SKILL_PIERCING:		case SKILL_CREATE_HOLY_WATER:		case SKILL_LIGHT:		case SKILL_DETECT_HIDDEN:		case SKILL_AURA_BALL:		case SKILL_BLESS:		case SKILL_CONTINUAL_LIGHT:		case SKILL_FLARE:		case SKILL_PURIFY:		case SKILL_AURA_RING:		case SKILL_STRIKING:		case SKILL_CURE_LIGHT_WOUNDS:		case SKILL_CURE_POISON:		case SKILL_PROTECTION_FROM_POISON:		case SKILL_CAUSE_LIGHT_WOUNDS:		case SKILL_CURE_SERIOUS_WOUNDS:		case SKILL_REMOVE_CURSE:		case SKILL_PROTECTION_FROM_CURSE:		case SKILL_CAUSE_SERIOUS_WOUNDS:		case SKILL_CURE_CRITICAL_WOUNDS:		case SKILL_ACID_TOUCH:		case SKILL_ACID_BOLT:		case SKILL_ACID_BALL:		case SKILL_POISONOUS_HANDS:		case SKILL_GREEN_POISON:		case SKILL_YELLOW_POISON:		case SKILL_DARKBLUE_POISON:		case SKILL_GREEN_STALKER:		case SKILL_PARALYZE:		case SKILL_DOOM:		case SKILL_HIDE:		case SKILL_DARKNESS:		case SKILL_BLOODY_MARKER:		case SKILL_BLOODY_TUNNEL:		case SKILL_SNAKE_COMBO:			case SKILL_SWORD_WAVE:		case SKILL_TORNADO_SEVER://		case SKILL_SG_MASTERY://		case SKILL_SR_MASTERY:		case SKILL_AURA_SHIELD:		case SKILL_ACID_SWAMP:		case SKILL_INVISIBILITY:		case SKILL_TRANSFORM_TO_WOLF:		case SKILL_TRANSFORM_TO_BAT:		case SKILL_SACRIFICE:		case SKILL_DETECT_INVISIBILITY:		case SKILL_MEDITATION:		case SKILL_PRAYER:		case SKILL_RESURRECT:		case SKILL_WIND_DIVIDER:		case SKILL_EARTHQUAKE:		case SKILL_SEDUCTION:		case SKILL_SNIPING:		case SKILL_PROTECTION_FROM_ACID:		case SKILL_BLOODY_NAIL:		case SKILL_BLOODY_KNIFE:		case SKILL_CAUSE_CRITICAL_WOUNDS:		case SKILL_HURRICANE_COMBO://		case SKILL_CREATE_BOMB:		case SKILL_CREATE_MINE:			case SKILL_INSTALL_MINE:		case SKILL_THUNDER_BOLT:		case SKILL_EXPANSION:		case SKILL_BERSERKER:		case SKILL_MOONLIGHT_SEVER:		case SKILL_POISON_STRIKE:		case SKILL_POISON_STORM:		case SKILL_ACID_STRIKE:		case SKILL_ACID_STORM:		case SKILL_EXTREME:		case SKILL_VISIBLE:		case SKILL_ENERGY_DROP:		case SKILL_VIGOR_DROP:		case SKILL_REVEALER:		case SKILL_CURE_ALL:		case SKILL_BLOODY_BALL:		case SKILL_DOUBLE_SHOT:		case SKILL_TRIPLE_SHOT:		case SKILL_THROW_BOMB:		case SKILL_DEATH:		// 2002.6.18眠啊		case SKILL_SHADOW_DANCING:		case SKILL_SWORD_MASTERY:		case SKILL_SHIELD_MASTERY:		case SKILL_THUNDER_STORM:		case SKILL_CONCENTRATION:		case SKILL_EVASION:		case SKILL_TYPHOON:		case SKILL_PEACE:		case SKILL_ACTIVATION:		//case SKILL_EXORCISM:		case SKILL_SANCTUARY://		case SKILL_REFLECTION:		case SKILL_HYMN:		case SKILL_TRANSFUSION:		case SKILL_BLOODY_SPEAR:		case SKILL_MEPHISTO:		// 2002.6.19 眠啊		case SKILL_SUMMON_CASKET:		case SKILL_MENTAL_SWORD:		case SKILL_OBSERVING_EYE:		// 2002.10.23		case SKILL_SOUL_CHAIN:		// 2002.11.27		case SKILL_LIVENESS :		// 2002.12.30		case SKILL_SHARP_SHIELD:		case SKILL_WIDE_LIGHTNING:		case SKILL_GUN_SHOT_GUIDANCE:		case SKILL_AIR_SHIELD:		case SKILL_BULLET_OF_LIGHT:		case SKILL_HANDS_OF_WISDOM:		case SKILL_LIGHT_BALL:		case SKILL_HOLY_ARROW:		case SKILL_REBUKE:		case SKILL_SPIRIT_GUARD:		case SKILL_REGENERATION:		case SKILL_POWER_OF_LAND:		case SKILL_TURN_UNDEAD:		// 2003. 1. 3.		case SKILL_BLOODY_WALL:		case SKILL_BLOODY_WAVE:		case SKILL_BLOODY_BREAKER:		case SKILL_METEOR_STRIKE:		case SKILL_RAPID_GLIDING:		// 2003. 5. 6		case SKILL_DENIAL_MAGIC:		case SKILL_REQUITAL:		case SKILL_CONCEALMENT:		case SKILL_SWORD_RAY:		case SKILL_MULTI_AMPUTATE:		case SKILL_NAIL_MASTERY:		case SKILL_BLOODY_STRIKE:		case SKILL_HALLUCINATION:		case SKILL_HIT_CONVERT:		case SKILL_WILD_TYPHOON:		case SKILL_ULTIMATE_BLOW:		case SKILL_ILLENDUE:		case SKILL_LIGHTNESS:		case SKILL_FLOURISH:		case SKILL_EVADE:		case SKILL_SHARP_ROUND:		case SKILL_HIDE_SIGHT:		case SKILL_BACK_STAB:		case SKILL_BLUNTING:		case SKILL_GAMMA_CHOP:		case SKILL_CROSS_GUARD:		case SKILL_KASAS_ARROW:		case SKILL_HANDS_OF_FIRE:		case SKILL_PROMINENCE:		case SKILL_RING_OF_FLARE:		case SKILL_BLAZE_BOLT:		case SKILL_ICE_FIELD:		case SKILL_WATER_BARRIER:		case SKILL_HANDS_OF_NIZIE:		case SKILL_NYMPH_RECOVERY:		case SKILL_LIBERTY:		case SKILL_TENDRIL:		case SKILL_GNOMES_WHISPER:		case SKILL_STONE_AUGER:		case SKILL_REFUSAL_ETHER:		case SKILL_DRIFTING_SOUL:		case SKILL_CRITICAL_MAGIC:		case SKILL_FIRE_OF_SOUL_STONE:		case SKILL_ICE_OF_SOUL_STONE:		case SKILL_SAND_OF_SOUL_STONE:		case SKILL_BLOCK_HEAD:		case SKILL_EARTHS_TEETH:		case SKILL_EMISSION_WATER:		case SKILL_BEAT_HEAD:		case SKILL_DIVINE_SPIRITS:		case SKILL_BLITZ_SLIDING:		case SKILL_JABBING_VEIN:		case SKILL_GREAT_HEAL:		case SKILL_DIVINE_GUIDANCE:		case SKILL_BLAZE_WALK:		case SKILL_BLOODY_ZENITH:		case SKILL_REDIANCE:		case SKILL_LAR_SLASH:		case SKILL_ARMS_MASTERY_1:		case SKILL_ARMS_MASTERY_2:		case SKILL_TRIDENT:		case SKILL_HEART_CATALYST:		case SKILL_PROTECTION_FROM_BLOOD:		case SKILL_MOLE_SHOT:		case SKILL_VIVID_MAGAZINE:		case SKILL_ETERNITY:		case SKILL_INSTALL_TRAP:		case SKILL_HOLY_ARMOR:		case SKILL_MERCY_GROUND:		case SKILL_CREATE_HOLY_POTION:		case SKILL_TRANSFORM_TO_WERWOLF:		case SKILL_GRAY_DARKNESS:		case SKILL_TALON_OF_CROW:		case SKILL_STONE_SKIN:		case SKILL_HOWL:		case SKILL_ACID_ERUPTION:		case SKILL_TELEPORT:		case SKILL_FIRE_PIERCING:		case SKILL_SUMMON_FIRE_ELEMENTAL:		case SKILL_MAGNUM_SPEAR:		case SKILL_HELLFIRE:		case SKILL_ICE_LANCE:		case SKILL_FROZEN_ARMOR:		case SKILL_SUMMON_WATER_ELEMENTAL:		case SKILL_EXPLOSION_WATER:		case SKILL_SOUL_REBIRTH:		case SKILL_SOUL_REBIRTH_MASTERY:		case SKILL_REACTIVE_ARMOR:		case SKILL_GROUND_BLESS:		case SKILL_SUMMON_GROUND_ELEMENTAL:		case SKILL_SHARP_CHAKRAM:		case SKILL_SHIFT_BREAK:		case SKILL_DESTRUCTION_SPEAR:		case SKILL_FATAL_SNICK:		case SKILL_DUCKING_WALLOP:		case SKILL_CHARGING_ATTACK:		case SKILL_DISTANCE_BLITZ:		case SKILL_BLESS_FIRE:		case SKILL_WATER_SHIELD:		case SKILL_SAND_CROSS:		case SKILL_METEOR_STORM:#ifndef __CHINA_SERVER__		// 2004.04.29		case SKILL_FABULOUS_SOUL:		case SKILL_WILL_OF_IRON:#endif					break;		////////////////////////////////////////////////////////////		// 瘤盔登瘤 臼绰 扁贱		////////////////////////////////////////////////////////////		case SKILL_ARMAGEDDON:		case SKILL_HOLY_BLAST:		case SKILL_BLOODY_STORM:		case SKILL_MIRACLE_SHIELD:		case SKILL_THUNDER_FLASH:		case SKILL_DRAGON_RISING:		case SKILL_FIVE_STORM_CRASH:		case SKILL_HEAVENS_SWORD:		case SKILL_ARMAGEDDON_SLASHER:		case SKILL_SOUL_SHOCK:		case SKILL_SAINT_BLADE:		case SKILL_DISARM_MINE:		case SKILL_IDENTIFY:		case SKILL_ENCHANT:		case SKILL_CHAIN_AURA:		case SKILL_SAINT_AURA:		case SKILL_MASS_CURE:		case SKILL_MASS_HEAL:		case SKILL_SUMMON_WOLF:		case SKILL_RAISING_DEAD:		case SKILL_SUMMON_SERVANT:		case SKILL_EXORCISM:		case SKILL_RESTORE:		case SKILL_INVINCIBLE:			failpkt.setSkillType(targetSkillType);			failpkt.setDesc(SKILL_NOT_IMPLEMENTED);			pPlayer->sendPacket(&failpkt);			return;		default:			failpkt.setSkillType(targetSkillType);			failpkt.setDesc(SKILL_NOT_IMPLEMENTED);			pPlayer->sendPacket(&failpkt);			return;	}	// 敲饭捞绢啊 沥惑利牢 惑怕牢瘤甫 八荤茄促.	if (pGamePlayer->getPlayerStatus() == GPS_NORMAL) 	{		// NPC啊 啊福媚 临 荐 乐绰瘤 八荤茄促.		SkillInfo* pSkillInfo = g_pSkillInfoManager->getSkillInfo(targetSkillType);		Assert(pSkillInfo != NULL);		// 敲饭捞绢啊 浇饭捞绢牢瘤 轨颇捞绢牢瘤 备盒		if (pPC->isSlayer()) executeSlayerSkill(pPacket, pPlayer);		else if (pPC->isVampire()) executeVampireSkill(pPacket, pPlayer);		else if (pPC->isOusters()) executeOustersSkill(pPacket, pPlayer);		else throw ProtocolException("CGLearnSkillHandler::execute() : Unknown player creature!");	}	else throw ProtocolException("CGLearnSkillHandler::execute() : Game Player Status is not NORMAL!");#endif	// __GAME_SERVER__

⌨️ 快捷键说明

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