コード例 #1
0
ファイル: Character.cs プロジェクト: leonardo-spy/Symbioz
        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();
        }
コード例 #2
0
ファイル: Character.cs プロジェクト: leonardo-spy/Symbioz
        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));
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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));
        }