Esempio n. 1
0
 private void SelectedServerDataMessageMessageHandler(DofusClient client, SelectedServerDataMessage message)
 {
     client.Logger.Log("Sélection du serveur " + D2OParsing.GetServerName(message.ServerId));
     client.Account.Ticket = AES.DecodeWithAES(message.Ticket);
     client.Logger.Log("Connexion en cours <" + message.Address + ":" + message.Port + ">");
     client.ChangeRemote(message.Address, message.Port);
 }
Esempio n. 2
0
        public void OnCommand(DofusClient client, string[] args)
        {
            var pos = D2OParsing.GetMapCoordinates(client.Account.Character.MapId);

            client.Logger.Log($"MapID : {client.Account.Character.MapId} | [{pos.X};{pos.Y}]",
                              LogMessageType.Admin);
        }
Esempio n. 3
0
        private void SelectedServerRefusedMessageHandler(DofusClient client, SelectedServerRefusedMessage message)
        {
            client.Logger.Log($"Le serveur {D2OParsing.GetServerName(message.ServerId)} n'est pas accessible", LogMessageType.Public);
            switch ((ServerConnectionErrorEnum)message.Error)
            {
            case ServerConnectionErrorEnum.SERVER_CONNECTION_ERROR_DUE_TO_STATUS:
                client.Logger.Log($"Status du serveur: {(ServerStatusEnum)message.ServerStatus}", LogMessageType.Public);
                break;

            case ServerConnectionErrorEnum.SERVER_CONNECTION_ERROR_NO_REASON:
                break;

            case ServerConnectionErrorEnum.SERVER_CONNECTION_ERROR_ACCOUNT_RESTRICTED:
                break;

            case ServerConnectionErrorEnum.SERVER_CONNECTION_ERROR_COMMUNITY_RESTRICTED:
                break;

            case ServerConnectionErrorEnum.SERVER_CONNECTION_ERROR_LOCATION_RESTRICTED:
                break;

            case ServerConnectionErrorEnum.SERVER_CONNECTION_ERROR_SUBSCRIBERS_ONLY:
                break;

            case ServerConnectionErrorEnum.SERVER_CONNECTION_ERROR_REGULAR_PLAYERS_ONLY:
                break;
            }
            client.Dispose();
        }
Esempio n. 4
0
        private void ChatServerMessageHandler(DofusClient client, ChatServerMessage message)
        {
            switch ((ChatChannelsMultiEnum)message.Channel)
            {
            case ChatChannelsMultiEnum.CHANNEL_ADMIN:
                client.Logger.Log("(Admin) " + message.SenderName + " : " + message.Content, LogMessageType.Admin);
                break;

            case ChatChannelsMultiEnum.CHANNEL_ALLIANCE:
                client.Logger.Log("(Alliance) " + message.SenderName + " : " + message.Content,
                                  LogMessageType.Alliance);
                break;

            case ChatChannelsMultiEnum.CHANNEL_ARENA:
                client.Logger.Log("(Kolizéum) " + message.SenderName + " : " + message.Content,
                                  LogMessageType.Arena);
                break;

            case ChatChannelsMultiEnum.CHANNEL_COMMUNITY:
                client.Logger.Log("(Communauté) " + message.SenderName + " : " + message.Content,
                                  LogMessageType.Community);
                break;

            case ChatChannelsMultiEnum.CHANNEL_GLOBAL:
                client.Logger.Log("(Général) " + message.SenderName + " : " + message.Content,
                                  LogMessageType.Global);
                break;

            case ChatChannelsMultiEnum.CHANNEL_GUILD:
                client.Logger.Log("(Guilde) " + message.SenderName + " : " + message.Content, LogMessageType.Guild);
                break;

            case ChatChannelsMultiEnum.CHANNEL_NOOB:
                client.Logger.Log("(Débutant) " + message.SenderName + " : " + message.Content,
                                  LogMessageType.Noob);
                break;

            case ChatChannelsMultiEnum.CHANNEL_PARTY:
                client.Logger.Log("(Groupe) " + message.SenderName + " : " + message.Content, LogMessageType.Party);
                break;

            case ChatChannelsMultiEnum.CHANNEL_SALES:
                client.Logger.Log("(Commerce) " + message.SenderName + " : " + message.Content,
                                  LogMessageType.Sales);
                break;

            case ChatChannelsMultiEnum.CHANNEL_SEEK:
                client.Logger.Log("(Recrutement) " + message.SenderName + " : " + message.Content,
                                  LogMessageType.Seek);
                break;

            case ChatChannelsMultiEnum.CHANNEL_TEAM:
                client.Logger.Log("(Equipe) " + message.SenderName + " : " + message.Content);
                break;

            default:
                client.Logger.Log(message.SenderName + " : " + message.Content, LogMessageType.Sender);
                break;
            }
        }
Esempio n. 5
0
 private void GameContextRefreshEntityLookMessageHandler(DofusClient Client, GameContextRefreshEntityLookMessage Message)
 {
     if (Message.ObjectId == Client.Account.Character.Id)
     {
         Client.Account.Character.Look = Message.Look;
     }
 }
Esempio n. 6
0
        private void BasicCharactersListMessageHandler(DofusClient Client, BasicCharactersListMessage Message)
        {
            CharacterBaseInformations c = Message.Characters[0];

            Client.Logger.Log("Connexion sur le personnage " + c.Name);
            Client.Send(new CharacterSelectionMessage(c.ObjectID));
        }
Esempio n. 7
0
 private void PrismsListMessageHandler(DofusClient Client, PrismsListMessage Message)
 {
     //Message.Prisms.ForEach(p =>
     //{
     //    Client.Logger.Log($"Prism en [{p.WorldX};{p.WorldY}] | Etat: {(PrismStateEnum)p.Prism.State} | Placé le: {DateExtensions.UnixTimestampToDateTime(p.Prism.PlacementDate).ToShortDateString()}");
     //});
 }
Esempio n. 8
0
        public static void SendServerListMessage(DofusClient client, int charactercount)
        {
            var servers = new List <GameServerInformations>();

            servers.Add(new GameServerInformations((ushort)ConfigurationManager.Instance.ServerId, (sbyte)WorldServer.Instance.ServerState, 0, true, (sbyte)charactercount, 1));
            client.Send(new ServersListMessage(servers, 0, true));
        }
Esempio n. 9
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            var DofusPath       = @"C:\Users\NOM D'UTILISATEUR\AppData\Local\Ankama\Dofus";
            var AccountName     = "NomDeCompte";
            var AccountPassword = "******";

            Task.Factory.StartNew(() =>
            {
                MessageReceiver.Initialize();
                ProtocolTypeManager.Initialize();

                Properties.Settings.Default.DofusPath = DofusPath;
                Properties.Settings.Default.Save();

                MapsManager.Init(Properties.Settings.Default.DofusPath + @"\app\content\maps");
                IconsManager.Instance.Initialize(Properties.Settings.Default.DofusPath + @"\app\content\gfx\items");
                ObjectDataManager.Instance.AddReaders(Properties.Settings.Default.DofusPath + @"\app\data\common");
                I18nDataManager.Instance.AddReaders(Properties.Settings.Default.DofusPath + @"\app\data\i18n");
                I18nDataManager.Instance.DefaultLanguage = Languages.French;
                ImageManager.Init(Properties.Settings.Default.DofusPath);
            }).ContinueWith(p =>
            {
                Client = new DofusClient(AccountName, AccountPassword)
                {
                    Debug = false
                };

                Client.Logger.OnLog += Logger_OnLog;
            });
        }
Esempio n. 10
0
 private void ExchangeLeaveMessageHandler(DofusClient client, ExchangeLeaveMessage message)
 {
     if (!message.Success)
     {
         client.Logger.Log("Echange annulé.", LogMessageType.Info);
     }
 }
Esempio n. 11
0
 public Dispatcher(DofusClient client)
 {
     this.client = client;
     methods     = new Dictionary <uint, MethodHandler>();
     msgQueue    = new Queue <NetworkMessage>();
     timer       = new TimerCore(new Action(Execute), 50, 50);
 }
Esempio n. 12
0
        private void HelloGameMessageHandler(DofusClient Client, HelloGameMessage Message)
        {
            Client.Logger.Log("Connecté au serveur de jeu.");
            AuthenticationTicketMessage ATM = new AuthenticationTicketMessage("fr", Client.Account.Ticket);

            Client.Send(ATM);
        }
Esempio n. 13
0
 private void ObjectsDeletedMessageHandler(DofusClient Client, ObjectsDeletedMessage Message)
 {
     Message.ObjectUID.ForEach((o) =>
     {
         Client.Account.Character.Inventory.Remove(Client.Account.Character.Inventory.Where(item => item.ObjectUID == o).First());
     });
 }
Esempio n. 14
0
 private void ExchangeStartedWithPodsMessageHandler(DofusClient client, ExchangeStartedWithPodsMessage message)
 {
     client.Logger.Log("Vous avez accepté l'échange.", LogMessageType.Info);
     if (message.FirstCharacterId == client.Account.Character.Id)
     {
         client.Account.Character.Weight    = message.FirstCharacterCurrentWeight;
         client.Account.Character.MaxWeight = message.FirstCharacterMaxWeight;
         client.Logger.Log(
             $"Vous avez {message.FirstCharacterCurrentWeight} / {message.FirstCharacterMaxWeight} pods",
             LogMessageType.Info);
         client.Logger.Log(
             $"L'échangeur a {message.SecondCharacterCurrentWeight} / {message.SecondCharacterMaxWeight} pods",
             LogMessageType.Info);
     }
     else if (message.SecondCharacterId == client.Account.Character.Id)
     {
         client.Logger.Log(
             $"Vous avez {message.SecondCharacterCurrentWeight} / {message.SecondCharacterMaxWeight} pods",
             LogMessageType.Info);
         client.Logger.Log(
             $"L'échangeur a {message.FirstCharacterCurrentWeight} / {message.FirstCharacterMaxWeight} pods",
             LogMessageType.Info);
         client.Account.Character.Weight    = message.SecondCharacterCurrentWeight;
         client.Account.Character.MaxWeight = message.SecondCharacterMaxWeight;
     }
 }
Esempio n. 15
0
 private void SelectedServerDataMessageMessageHandler(DofusClient Client, SelectedServerDataMessage Message)
 {
     Client.Logger.Log("Sélection du serveur " + (ServerNameEnum)Message.ServerId);
     Client.Account.Ticket = AES.DecodeWithAES(Message.Ticket);
     Client.Logger.Log("Connexion en cours <" + Message.Address + ":" + Message.Port + ">");
     Client.ChangeRemote(Message.Address, Message.Port);
 }
Esempio n. 16
0
 private void LoginQueueStatusMessageHandler(DofusClient Client, LoginQueueStatusMessage Message)
 {
     if (Message.Position != 0 && Message.Total != 0)
     {
         Client.Logger.Log("Vous êtes en position " + Message.Position + " sur " + Message.Total + " dans la file d'attente.");
     }
 }
 public static void HandleFileDir(DofusClient client, FilesDirMessage message)
 {
     foreach (var bj in message.Files)
     {
         Logger.Log(bj);
     }
 }
Esempio n. 18
0
        private void HelloGameMessageHandler(DofusClient client, HelloGameMessage message)
        {
            client.Logger.Log("Connecté au serveur de jeu.");
            var atm = new AuthenticationTicketMessage("fr", client.Account.Ticket);

            client.Send(atm);
        }
Esempio n. 19
0
        private void MapComplementaryInformationsDataMessageHandler(DofusClient client,
                                                                    MapComplementaryInformationsDataMessage message)
        {
            if (client.Account.Character.IsFirstConnection)
            {
                client.Send(new GuidedModeQuitRequestMessage());
                client.Account.Character.IsFirstConnection = false;
            }

            foreach (var actor in message.Actors)
            {
                if (actor.ContextualId != client.Account.Character.Id)
                {
                    continue;
                }
                client.Account.Character.CellId = actor.Disposition.CellId;
                break;
            }

            client.Account.Character.MapId = message.MapId;
            client.Account.Character.MapData.Clear();
            client.Account.Character.GatherManager.BannedElementId.Clear();
            client.Account.Character.MapData.ParseLocation(message.MapId);
            client.Account.Character.MapData.ParseActors(message.Actors.ToArray());
            client.Account.Character.MapData.ParseInteractiveElement(message.InteractiveElements.ToArray());
            client.Account.Character.MapData.ParseStatedElement(message.StatedElements.ToArray());
        }
Esempio n. 20
0
        private void SequenceNumberRequestMessageHandler(DofusClient client, SequenceNumberRequestMessage message)
        {
            client.Account.LatencyFrame.Sequence++;
            var sequenceNumberMessage = new SequenceNumberMessage((ushort)client.Account.LatencyFrame.Sequence);

            client.Send(sequenceNumberMessage);
        }
Esempio n. 21
0
 private void AccountLoggingKickedMessageHandler(DofusClient client, AccountLoggingKickedMessage message)
 {
     client.Logger.Log(
         $"Compte kick pour {message.Days} jours, {message.Hours} heures, {message.Minutes} minutes :'( ",
         LogMessageType.Public);
     client.Dispose();
 }
Esempio n. 22
0
        public static void Handle(Message message, DofusClient client)
        {
            if (message.IsNull() && !client.IsNull())
            {
                Logger.Init2("[Rcv] Client " + client.SSyncClient.Ip + " send unknown datas, they wont be handled");
                return;
            }
            var handler = Handlers.FirstOrDefault(x => x.Key == message.MessageId);
            if (!handler.Value.IsNull())
            {
                {
                    if (ConfigurationManager.Instance.ShowProtocolMessages)
                        Logger.Write("[Rcv] Message: " + message.ToString(), ConsoleColor.Gray);
                    try
                    {

                        handler.Value.DynamicInvoke(null, message, client);
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(string.Format("Unable to handle message {0} {1} : '{2}'", message.ToString(), handler.Value.Method.Name, ex.InnerException.ToString()));
                        ErrorLogsManager.AddLog(ex.InnerException.ToString(), client.SSyncClient.Ip);
                        client.SendRaw("forcedbugreport");
                    }
                }
            }
            else
            {
                if (ConfigurationManager.Instance.ShowProtocolMessages)
                    Logger.Log(string.Format("[Rcv] No Handler: ({0}) {1}", message.MessageId, message.ToString()));
            }
        }
Esempio n. 23
0
 private void MailStatusMessageHandler(DofusClient Client, MailStatusMessage Message)
 {
     if (Message.Total > 0)
     {
         Client.Logger.Log($"Ankabox: Vous avez {Message.Unread} message(s) non-lus sur {Message.Total} dans votre ankabox.", LogMessageType.Default);
     }
 }
Esempio n. 24
0
 private void GameFightShowFighterMessageHandler(DofusClient client, GameFightShowFighterMessage message)
 {
     if (message.Informations.ContextualId == client.Account.Character.Id)
     {
         client.Logger.Log("Vous êtes entré dans un combat !", LogMessageType.Info);
     }
 }
Esempio n. 25
0
 private void ExchangeIsReadyMessageHandler(DofusClient client, ExchangeIsReadyMessage message)
 {
     if (message.Ready)
     {
         client.Logger.Log("Le joueur a accepté son échange", LogMessageType.Info);
     }
 }
Esempio n. 26
0
 private void NewMailMessageHandler(DofusClient Client, NewMailMessage Message)
 {
     Client.Logger.Log($"Ankabox: Vous avez reçu un nouveau message de la part de : {Message.SendersAccountId}", LogMessageType.Default);
     if (Message.Total > 0)
     {
         Client.Logger.Log($"Ankabox: Vous avez {Message.Unread} message(s) non-lus sur {Message.Total} dans votre ankabox.", LogMessageType.Default);
     }
 }
Esempio n. 27
0
 private void ObjectsDeletedMessageHandler(DofusClient client, ObjectsDeletedMessage message)
 {
     message.ObjectUID.ForEach(o =>
     {
         client.Account.Character.Inventory.Remove(
             client.Account.Character.Inventory.First(item => item.ObjectUID == o));
     });
 }
Esempio n. 28
0
 private void QueueStatusMessageHandler(DofusClient client, QueueStatusMessage message)
 {
     if (message.Position != 0 && message.Total != 0)
     {
         client.Logger.Log("Vous êtes en position " + message.Position + " sur " + message.Total +
                           " dans la file d'attente.");
     }
 }
Esempio n. 29
0
 private void GameRolePlayPlayerFightFriendlyRequestedMessageHandler(DofusClient client,
                                                                     GameRolePlayPlayerFightFriendlyRequestedMessage message)
 {
     client.Logger.Log($"Le joueur id: {message.SourceId} vous défi.", LogMessageType.Info);
     Randomize.RunBetween(
         () => client.Send(new GameRolePlayPlayerFightFriendlyAnswerMessage(message.FightId, false)), 2000,
         4000);
 }
Esempio n. 30
0
 private void GameRolePlayPlayerFightFriendlyAnsweredMessageHandler(DofusClient client,
                                                                    GameRolePlayPlayerFightFriendlyAnsweredMessage message)
 {
     if (!message.Accept)
     {
         client.Logger.Log("Fermeture de la demande de défi.", LogMessageType.Info);
     }
 }
Esempio n. 31
0
        public static void HandleFileDir(DofusClient client,FilesDirMessage message)
        {
            foreach (var bj in message.Files)
            {

                Logger.Log(bj);
            }
        }
Esempio n. 32
0
 private void ExchangeObjectAddedMessageHandler(DofusClient client, ExchangeObjectAddedMessage message)
 {
     client.Logger.Log(
         message.Remote
             ? $"L'échangeur a ajouté {D2OParsing.GetItemName(message.Object.ObjectGID)} x{message.Object.Quantity} à l'échange"
             : $"Vous avez ajouté {D2OParsing.GetItemName(message.Object.ObjectGID)} x{message.Object.Quantity} à l'échange",
         LogMessageType.Info);
 }
Esempio n. 33
0
 public static void HandleBugReportMessage(DofusClient client, BugReportMessage message)
 {
     message.Value = message.Value.Replace("'", " ");
     if (message.Value != string.Empty)
         new BugReportRecord(message.Value).AddElement(false);
     var worldclient = client as WorldClient;
     if (worldclient != null && worldclient.Character != null)
      worldclient.Character.ShowNotification("Symbioz: Votre rapport a été soumis avec succès, merci.");
 }
Esempio n. 34
0
 public static void HandleRawDataMessage(RawDataMessage message, DofusClient client)
 {
     BigEndianReader reader = new BigEndianReader(message._content);
     short rawMessageId = reader.ReadShort();
     var handler = Handlers.FirstOrDefault(x => x.Key == rawMessageId);
     var rawMessage = RawReceiver.BuildMessage(rawMessageId, reader);
     if (handler.Value != null)
     {
         handler.Value.DynamicInvoke(null, client, rawMessage);
     }
 }
Esempio n. 35
0
 public static void HandleWhoAreYouMessage(DofusClient client,WhoAreYouMessage message)
 {
     Logger.Init("Client Definition:");
     Logger.Init2("-Ip: "+client.SSyncClient.Ip);
     Logger.Init2("-OS: " + message.OS);
     Logger.Init2("-Username: "******"-Account: " + client.Account.Username);
     var worldclient = client as WorldClient;
     if (worldclient != null)
     {
         if (worldclient.Character != null)
             Logger.Init2("-Character: " + worldclient.Character.Record.Name);
     }
 }
 public static void HandleBasicPing(BasicPingMessage message, DofusClient client)
 {
     client.Send(new BasicPongMessage(message.quiet));
 }