public void AddJobXp(sbyte jobid, ulong amount) { var job = CharacterJobRecord.GetJob(Id, jobid); if (job.JobLevel == 200) { return; } var exp = ExperienceRecord.GetExperienceForLevel((uint)(job.JobLevel + 1)); if (job.JobExp + amount >= exp) { job.JobLevel++; Client.Send(new JobLevelUpMessage(job.JobLevel, job.GetJobDescription())); if (job.JobLevel == 200) { job.JobExp = exp; RefreshJobs(); return; } AddJobXp(jobid, amount); } else { job.JobExp += amount; } SaveTask.UpdateElement(job); RefreshJobs(); }
public void RefreshJobs() { var recordDatas = CharacterJobRecord.GetCharacterJobsDatas(Id); Client.Send(new JobCrafterDirectorySettingsMessage(recordDatas.JobSettings)); Client.Send(new JobDescriptionMessage(recordDatas.JobsDescriptions)); Client.Send(new JobExperienceMultiUpdateMessage(recordDatas.JobsExperiences)); }
public override void Ready(bool ready, ushort step) { var crafterLevel = CharacterJobRecord.GetJob(Client.Character.Id, JobId).JobLevel; var currentRecipe = RecipeRecord.GetRecipe(CraftedItems, (ushort)SkillId); if (currentRecipe.IsNull()) { Client.Send(new ExchangeCraftResultMessage((sbyte)CraftResultEnum.CRAFT_IMPOSSIBLE)); return; } else if (currentRecipe.ResultLevel > crafterLevel) { Client.Character.Reply("Vous n'avez pas le niveau pour effectuer ce craft!"); return; } ReplayEngine = new CraftReplayEngine(this, currentRecipe); ReplayEngine.Start(); }
public static void HandleCharacterDeletion(CharacterDeletionRequestMessage message, WorldClient client) // finish this { CharacterRecord deletedCharacter = CharacterRecord.GetCharacterRecordById(message.characterId); if (deletedCharacter == null) { return; } StatsRecord.GetStatsRecord(message.characterId).RemoveElement(); CharacterRecord.Characters.Remove(deletedCharacter); client.Characters.Remove(deletedCharacter); deletedCharacter.RemoveElement(); CharacterItemRecord.RemoveAll(message.characterId); GeneralShortcutRecord.RemoveAll(message.characterId); CharacterSpellRecord.RemoveAll(message.characterId); CharacterJobRecord.RemoveAll(message.characterId); BidShopGainRecord.RemoveAll(message.characterId); CharacterGuildRecord.RemoveAll(message.characterId); // Si il est meneur de guilde? BidShopItemRecord.RemoveAll(message.characterId); Logger.Log("Character " + deletedCharacter.Name + " deleted"); client.Send(new CharactersListMessage(client.Characters.ConvertAll <CharacterBaseInformations>(x => x.GetBaseInformation()), false)); }