Exemple #1
0
        public void LearnSkill(Player player, int skillId)
        {
            Skill skill = Data.Data.Skills[skillId];

            if (skill == null)
            {
                Log.Warn("LearnSkill: skill data not found");
                return;
            }

            if (player.GetLevel() < skill.Level)
            {
                Log.Warn("LearnSkill: player level < skill Level");
                return;
            }

            if (player.GetJobLevel() < skill.JobLevel)
            {
                Log.Warn("LearnSkill: player Job level < skill Job Level");
                return;
            }

            if (skill.Job != (int)player.PlayerData.Class)
            {
                Log.Warn("LearnSkill: player Job < skill Job");
                return;
            }

            if (player.SkillPoint < skill.LearnExp && (player.PlayerData.Class != PlayerClass.Hanbi && skill.Id != 1000101))
            {
                Log.Warn("LearnSkill: player SkillPoint < skill LearnExp");
                return;
            }

            if ((player.PlayerData.Class != PlayerClass.Hanbi && skill.Id != 1000101))
            {
                player.SkillPoint -= skill.LearnExp;
            }

            switch ((SkillType)skill.Type)
            {
            case SkillType.Basic:
                player.Skills.AddSkill(skill.Id, 1);
                break;

            case SkillType.Passive:
                player.PassiveSkills.AddSkill(skill.Id, 1);
                break;

            case SkillType.Ascension:
                player.AscensionSkills.AddSkill(skill.Id, 1);
                break;
            }

            DataBaseSkill.AddPlayerSkill(player, skill.Id, 1, (SkillType)skill.Type, skill.Index);
        }
Exemple #2
0
        public void Authorized(IConnection connection, string accountName, string password)
        {
            connection.Account            = DataBaseAccount.GetAccountByName(accountName);
            connection.Account.Connection = connection;
            connection.Account.Players    = DataBasePlayer.GetPlayers(connection.Account, Properties.Settings.Default.SERVER_ID);
            connection.Account.SessionID  = (int)IdFactory.GetNext();

            for (int i = 0; i < connection.Account.Players.Count; i++)
            {
                connection.Account.Players[i].Inventory          = DataBaseStorage.GetPlayerStorage(connection.Account.Players[i].PlayerId, StorageType.Inventory);
                connection.Account.Players[i].Abilities          = DataBaseAbility.GetPlayerAbility(connection.Account.Players[i].PlayerId, SkillType.Basic);
                connection.Account.Players[i].AscensionAbilities = DataBaseAbility.GetPlayerAbility(connection.Account.Players[i].PlayerId, SkillType.Ascension);
                connection.Account.Players[i].Skills             = DataBaseSkill.GetPlayerSkill(connection.Account.Players[i].PlayerId, SkillType.Basic);
                connection.Account.Players[i].PassiveSkills      = DataBaseSkill.GetPlayerSkill(connection.Account.Players[i].PlayerId, SkillType.Passive);
                connection.Account.Players[i].AscensionSkills    = DataBaseSkill.GetPlayerSkill(connection.Account.Players[i].PlayerId, SkillType.Ascension);
                connection.Account.Players[i].Quests             = DataBaseQuest.GetPlayerQuest(connection.Account.Players[i].PlayerId);
            }

            DataBaseAccount.SaveLastIP(connection.Account.id, (connection as OuterNetworkConnection).IpAddress);
            Global.Global.FeedbackService.OnAuthorized(connection);
        }
Exemple #3
0
        public void PlayerEndGame(Player player)
        {
            if (player.Ai != null)
            {
                player.Ai.Release();
                player.Ai = null;
            }

            AccountService.IdFactory.Release(player.Account.SessionID);

            DataBasePlayer.SavePlayer(player);
            DataBaseStorage.SavePlayerStorage(player.PlayerId, player.Inventory);
            DataBaseAbility.SavePlayerAbility(player, SkillType.Basic);
            DataBaseAbility.SavePlayerAbility(player, SkillType.Ascension);

            DataBaseSkill.SavePlayerSkill(player, SkillType.Basic);
            DataBaseSkill.SavePlayerSkill(player, SkillType.Ascension);
            DataBaseSkill.SavePlayerSkill(player, SkillType.Passive);

            DataBaseQuest.SavePlayerQuest(player);

            PlayersOnline.Remove(player);
        }