예제 #1
0
        public static void TextInformationTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            TextInformationMessage msg = (TextInformationMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                msg.Deserialize(reader);
            }
            switch (msg.msgId)
            {
            case 89:
                account.Log(new DofAlertTextInformation("Bienvenue sur DOFUS, dans le Monde des Douze !" + System.Environment.NewLine + "Il est interdit de transmettre votre identifiant ou votre mot de passe."), 1);
                break;

            case 153:
                account.Log(new DofInfoCanal("Votre adresse ip actuelle est " + msg.parameters[0]), 0);
                break;

            case 171:
                account.Log(new ErrorTextInformation(string.Format("Impossible de lancer ce sort, vous avez une portée de {0} à {1}, et vous visez à {2} !", msg.parameters[0], msg.parameters[1], msg.parameters[2])), 4);
                break;

            case 34:
                account.Log(new ErrorTextInformation(string.Format("Vous avez perdu {0} points d'énergie", msg.parameters[0])), 0);
                account.Log(new ErrorTextInformation("Combat perdu"), 0);
                if (account.Fight != null)
                {
                    account.Fight.winLoseDic["Perdu"]++;
                    account.ActualizeFightStats(account.Fight.winLoseDic, account.Fight.xpWon);
                }
                break;
                //default:
                //    DataClass data = GameData.GetDataObjects(D2oFileEnum.InfoMessages)[msg.msgId];
                //    account.Log(new DofInfoCanal(I18N.GetText((int)data.Fields["textId"])));
                //    break;
            }
            //string textId = I18N.GetText(msg.msgType * 10000 + msg.msgId);
            //if (msg.parameters != null)
            //{
            //    if (msg.parameters[0] != null && msg.parameters[0].IndexOf("~") != -1)
            //    {
            //        params = msg.parameters[0].split("~");
            //    }
            //    else
            //    {
            //        params = msg.parameters;
            //    }
            //}
        }
예제 #2
0
        public static void TextInformationMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            TextInformationMessage msg = (TextInformationMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                msg.Deserialize(reader);
            }
            switch (msg.MsgId)
            {
            //case 89:
            //    account.Log(new DofAlertTextInformation("Bienvenue sur DOFUS, dans le Monde des Douze !" + System.Environment.NewLine + "Il est interdit de transmettre votre identifiant ou votre mot de passe."), 1);
            //    break;
            //case 153:
            //    account.Log(new DofInfoCanal("Votre adresse ip actuelle est " + msg.parameters[0]), 0);
            //    break;
            //case 171:
            //    account.Log(new ErrorTextInformation(string.Format("Impossible de lancer ce sort, vous avez une portée de {0} à {1}, et vous visez à {2} !", msg.parameters[0], msg.parameters[1], msg.parameters[2])), 4);
            //    break;
            case 34:
                //account.Log(new ErrorTextInformation(string.Format("Vous avez perdu {0} points d'énergie", msg.parameters[0])), 0);
                //account.Log(new ErrorTextInformation("Combat perdu"), 0);
                if (account.Fight != null)
                {
                    account.FightData.winLoseDic["Perdu"]++;
                    account.ActualizeFightStats(account.FightData.winLoseDic, account.FightData.xpWon);
                }
                break;
            }
            //default:


            DataClass data = GameData.GetDataObject(D2oFileEnum.InfoMessages, msg.MsgType * 10000 + msg.MsgId);
            string    text = I18N.GetText((int)data.Fields["textId"]);

            for (int i = 0; i < msg.Parameters.Count; i++)
            {
                var parameter = msg.Parameters[i];
                text = text.Replace("%" + (i + 1), parameter);
            }
            account.Log(new DofAlertTextInformation(text), 0);
        }
예제 #3
0
        public static void CurrentMapMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            CurrentMapMessage currentMapMessage = (CurrentMapMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                currentMapMessage.Deserialize(reader);
            }

            account.MapID = currentMapMessage.MapId;
            if (account.MapID == account.MapData.LastMapId && account.Fight != null)
            {
                account.FightData.winLoseDic["Gagné"]++;
                account.ActualizeFightStats(account.FightData.winLoseDic, account.FightData.xpWon);
            }
            if (!account.IsMITM)
            {
                MapInformationsRequestMessage mapInformationsRequestMessage
                    = new MapInformationsRequestMessage(account.MapID);
                account.SocketManager.Send(mapInformationsRequestMessage);
            }
        }