cglearnskillhandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· 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 + -
显示快捷键?