Example #1
0
        public void CommandGainMasterly(int netId, short skillId, int masterly)
        {
            int charId = EM_Character.s_instance.GetCharIdByNetId(netId);
            var skObj  = EM_Skill.s_instance.GetCharacterSkillByIdAndNetworkId(skillId, netId);

            if (charId == -1 || skObj == null)
            {
                return;
            }
            skObj.m_masterly += masterly;
            // 持久化 与 client
            EM_Skill.s_instance.CharacterUpdateSkill(charId, skObj);
            m_networkService.SendServerCommand(SC_ApplySelfUpdateSkillLevelAndMasterly.Instance(
                                                   netId, skObj.m_SkillId, skObj.m_skillLevel, skObj.m_masterly));
        }
Example #2
0
        public void CommandUpdateSkillLevel(int netId, short skillId, short targetLv)
        {
            var skill   = EM_Skill.s_instance.GetCharacterSkillByIdAndNetworkId(skillId, netId);
            var charObj = EM_Character.s_instance.GetCharacterByNetworkId(netId);
            var wallet  = EM_Wallet.s_instance.GetWallet(netId);

            if (skill == null || charObj == null || wallet.Item1 == -1)
            {
                return;
            }
            short oriLv     = skill.m_skillLevel;
            long  costTotal = 0;

            while (skill.m_skillLevel < targetLv && skill.m_skillLevel < skill.m_skillDe.m_skillMaxLevel)
            {
                if (costTotal + skill.m_skillDataDe.m_upgradeMoneyInNeed > wallet.Item1)
                {
                    break;
                }
                if (skill.m_skillDataDe.m_upgradeCharacterLevelInNeed > charObj.m_Level)
                {
                    break;
                }
                if (skill.m_skillDataDe.m_upgradeMasterlyInNeed > skill.m_masterly)
                {
                    break;
                }
                costTotal += skill.m_skillDataDe.m_upgradeMoneyInNeed;
                skill.Upgrade();
            }
            if (oriLv != skill.m_skillLevel)
            {
                GL_Wallet.s_instance.NotifyUpdateVirtualCurrencyOnline(netId, charObj.m_characterId, -costTotal);
                // 持久化 与 client
                EM_Skill.s_instance.CharacterUpdateSkill(charObj.m_characterId, skill);
                m_networkService.SendServerCommand(SC_ApplySelfUpdateSkillLevelAndMasterly.Instance(
                                                       netId, skill.m_SkillId, skill.m_skillLevel, skill.m_masterly));
                // log
                GL_MissionLog.s_instance.NotifyLogLvUpSkill(netId, skillId, skill.m_skillLevel);
            }
        }