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