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); }
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); }
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); }