public static void HandleCharacterSelectionMessage(WorldClient client, CharacterSelectionMessage message)
        {
            CharacterRecord characterRecord = client.Characters.First((CharacterRecord entry) => entry.Id == message.id);

            if (characterRecord == null)
            {
                client.Send(new CharacterSelectedErrorMessage());
            }
            else
            {
                CharacterHandler.CommonCharacterSelection(client, characterRecord);
            }
        }
        public static void HandleCharacterDeletionRequestMessage(WorldClient client, CharacterDeletionRequestMessage message)
        {
            if (!IPCAccessor.Instance.IsConnected)
            {
                client.Send(new CharacterDeletionErrorMessage(1));
                client.DisconnectLater(1000);
            }
            else
            {
                CharacterRecord characterRecord = client.Characters.Find((CharacterRecord entry) => entry.Id == message.characterId);
                if (characterRecord == null)
                {
                    client.Send(new CharacterDeletionErrorMessage(1));
                    client.DisconnectLater(1000);
                }
                else
                {
                    Stump.Server.WorldServer.Game.Guilds.GuildMember guildMember = Singleton <GuildManager> .Instance.TryGetGuildMember(characterRecord.Id);

                    if (guildMember != null && guildMember.IsBoss)
                    {
                        client.Send(new CharacterDeletionErrorMessage(1));
                        client.DisconnectLater(1000);
                    }
                    else
                    {
                        string secretAnswerHash = message.secretAnswerHash;
                        if (Singleton <ExperienceManager> .Instance.GetCharacterLevel(characterRecord.Experience) <= 20 || (client.Account.SecretAnswer != null && secretAnswerHash == (message.characterId + "~" + client.Account.SecretAnswer).GetMD5()))
                        {
                            if (client.Account.DeletedCharactersCount > CharacterHandler.MaxDayCharacterDeletion)
                            {
                                client.Send(new CharacterDeletionErrorMessage(2));
                            }
                            else
                            {
                                Singleton <CharacterManager> .Instance.DeleteCharacterOnAccount(characterRecord, client);

                                CharacterHandler.SendCharactersListMessage(client);
                                BasicHandler.SendBasicNoOperationMessage(client);
                            }
                        }
                        else
                        {
                            client.Send(new CharacterDeletionErrorMessage(3));
                        }
                    }
                }
            }
        }
 public static void HandleCharacterCreationRequestMessage(WorldClient client, CharacterCreationRequestMessage message)
 {
     if (!IPCAccessor.Instance.IsConnected)
     {
         CharacterHandler.OnCharacterCreationFailed(client, CharacterCreationResultEnum.ERR_NO_REASON);
     }
     else
     {
         Singleton <CharacterManager> .Instance.CreateCharacter(client, message.name, message.breed, message.sex, message.colors, message.cosmeticId, delegate
         {
             CharacterHandler.OnCharacterCreationSuccess(client);
         }, delegate(CharacterCreationResultEnum x)
         {
             CharacterHandler.OnCharacterCreationFailed(client, x);
         });
     }
 }
        public static void CommonCharacterBasicInformations(WorldClient client)
        {
            CharacterHandler.SendCharacterSelectedSuccessMessage(client);
            ContextHandler.SendNotificationListMessage(client, new int[] { 2147483647 });
            InventoryHandler.SendInventoryContentMessage(client);
            ShortcutHandler.SendShortcutBarContentMessage(client, ShortcutBarEnum.GENERAL_SHORTCUT_BAR);
            ShortcutHandler.SendShortcutBarContentMessage(client, ShortcutBarEnum.SPELL_SHORTCUT_BAR);
            ContextRoleplayHandler.SendEmoteListMessage(client, (
                                                            from entry in Enumerable.Range(0, 21)
                                                            select(byte) entry).ToList <byte>());

            PvPHandler.SendAlignmentRankUpdateMessage(client);
            if (client.Character.Guild != null)
            {
                GuildHandler.SendGuildMembershipMessage(client, client.Character.GuildMember);
                GuildHandler.SendGuildInformationsGeneralMessage(client, client.Character.Guild);
                GuildHandler.SendGuildInformationsMembersMessage(client, client.Character.Guild);
                if (client.Character.Guild.Alliance != null)
                {
                    AllianceHandler.SendAllianceMembershipMessage(client, client.Character.Guild.Alliance);
                    AllianceHandler.SendAllianceInsiderInfoMessage(client, client.Character.Guild.Alliance);
                }
            }
            ChatHandler.SendEnabledChannelsMessage(client, new sbyte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13 }, new sbyte[0]);
            InventoryHandler.SendSpellListMessage(client, true);
            InitializationHandler.SendSetCharacterRestrictionsMessage(client);
            InventoryHandler.SendInventoryWeightMessage(client);
            FriendHandler.SendFriendWarnOnConnectionStateMessage(client, client.Character.FriendsBook.WarnOnConnection);
            FriendHandler.SendFriendWarnOnLevelGainStateMessage(client, client.Character.FriendsBook.WarnOnLevel);
            GuildHandler.SendGuildMemberWarnOnConnectionStateMessage(client, client.Character.WarnOnGuildConnection);
            AchievementHandler.SendAchievementListMessage(client, client.Character.Record.FinishedAchievements, client.Character.Achievement.GetRewardableAchievements());
            client.Character.SendConnectionMessages();
            ContextRoleplayHandler.SendGameRolePlayArenaUpdatePlayerInfosMessage(client);
            CharacterHandler.SendCharacterCapabilitiesMessage(client);

            client.WorldAccount.LastConnection     = new System.DateTime?(System.DateTime.Now);
            client.WorldAccount.LastIp             = client.IP;
            client.WorldAccount.ConnectedCharacter = new int?(client.Character.Id);

            client.Character.Record.LastUsage = new System.DateTime?(System.DateTime.Now);
            ServerBase <WorldServer> .Instance.DBAccessor.Database.Update(client.WorldAccount);

            ServerBase <WorldServer> .Instance.DBAccessor.Database.Update(client.Character.Record);
        }
 public static void HandleCharacterFirstSelectionMessage(WorldClient client, CharacterFirstSelectionMessage message)
 {
     CharacterHandler.HandleCharacterSelectionMessage(client, message);
 }
 private static void OnCharacterCreationFailed(WorldClient client, CharacterCreationResultEnum result)
 {
     CharacterHandler.SendCharacterCreationResultMessage(client, result);
 }