Пример #1
0
    public ActiveSkill additionalActiveSkill;   // 附加的主动技能

    public override void Execute(CharacterMono speller, CharacterMono target)
    {
        base.Execute(speller, target);
        if (additionalActiveSkill.IsMustDesignation)
        {
            additionalActiveSkill.Execute(speller, target);
        }
        else
        {
            additionalActiveSkill.Execute(speller, target.transform.position);
        }
    }
 public void ExecuteSkill()
 {
     if (ActiveSkill != null)
     {
         ActiveSkill.Execute();
         ActiveSkill = null;
     }
 }
Пример #3
0
    /// <summary>
    /// 用于处理SpellSkill协议
    /// </summary>
    /// <param name="protocol"></param>
    public void TreateSpellSkillProtocol(ProtocolBytes protocol)
    {
        // 释放技能的单位的ID
        string userName = protocol.GetString();

        // 不处理本地玩家的SpellSkill协议
        if (userName == NetWorkManager.Instance.NowPlayerID)
        {
            return;
        }
        if (userName.Contains("NPC#") && IsHomeowner)
        {
            return;
        }


        //Debug.Log("处理SpellSkill协议");

        // 要释放的技能的ID
        int skillId = protocol.GetInt();

        // 要释放的技能的等级
        int skillLevel = protocol.GetInt();

        // 技能目标
        string skillTarget = protocol.GetString();

        ActiveSkill skill = TestDatabase.Instance.baseSkills[skillId] as ActiveSkill;

        if (skillTarget == "Position")
        {
            float x = protocol.GetFloat();
            float y = protocol.GetFloat();
            float z = protocol.GetFloat();

            skill.Execute(NetWorkManager.Instance.networkPlayers[userName].GetComponent <CharacterMono>(), new Vector3(x, y, z));
        }
        else
        {
            string targetId = protocol.GetString();

            skill.Execute(NetWorkManager.Instance.networkPlayers[userName].GetComponent <CharacterMono>(), NetWorkManager.Instance.networkPlayers[targetId].GetComponent <CharacterMono>());
        }
    }