Beispiel #1
0
        public static void NpcDialogQuestionMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            NpcDialogQuestionMessage msg = (NpcDialogQuestionMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                msg.Deserialize(reader);
            }
            account.Npc.QuestionId = msg.messageId;
            int mess = (int)GameData.GetDataObject(D2oFileEnum.NpcMessages, account.Npc.QuestionId).Fields["messageId"];

            account.Log(new BotTextInformation("Dialogue : " + BlueSheep.Common.Data.I18N.GetText(mess)), 0);
            if (account.Npc.QuestionId == 318 && (int)msg.visibleReplies[0] == 259)
            {
                //Bank
                account.Npc.SendReply(259);
                return;
            }
            else if (account.Npc.QuestionId == 318)
            {
                account.Log(new ErrorTextInformation("Vous n'êtes pas level 10, vous ne pouvez pas utiliser la banque. Fermeture du dialogue."), 0);
                account.Npc.CloseDialog();
            }
            if (msg.visibleReplies.Length == 0)
            {
                account.Npc.CloseDialog();
            }
            account.Npc.Replies.Clear();
            account.Npc.Replies = msg.visibleReplies.Select <short, BlueSheep.Core.Npc.NpcReply>((id) => new BlueSheep.Core.Npc.NpcReply(account.MapData.Npcs.Find(n => n.contextualId == account.Npc.Id).npcId, id)).ToList();
            if (account.Path != null)
            {
                account.Path.SearchReplies(BlueSheep.Common.Data.I18N.GetText(mess));
            }
        }
Beispiel #2
0
        public static void NpcDialogQuestionMessageTreatment(Message message, byte[] packetDatas, AccountUC account)
        {
            NpcDialogQuestionMessage msg = (NpcDialogQuestionMessage)message;

            using (BigEndianReader reader = new BigEndianReader(packetDatas))
            {
                msg.Deserialize(reader);
            }
            account.Npc.QuestionId = msg.messageId;
            int mess = (int)GameData.GetDataObject(D2oFileEnum.NpcMessages, account.Npc.QuestionId).Fields["messageId"];

            account.Log(new BotTextInformation("Dialogue : " + BlueSheep.Common.Data.I18N.GetText(mess)), 0);
            if (account.Npc.QuestionId == 318 && (int)msg.visibleReplies[0] == 259)
            {
                //Bank
                account.Npc.SendReply(259);
                return;
            }
            if (msg.visibleReplies.Length == 0)
            {
                account.Npc.CloseDialog();
            }
            account.Npc.Replies.Clear();
            account.Npc.Replies = msg.visibleReplies.Select <short, BlueSheep.Core.Npc.NpcReply>((id) => new BlueSheep.Core.Npc.NpcReply(account.Npc.Npcs[account.Npc.Id], id)).ToList();
            if (account.Path != null)
            {
                account.Path.SearchReplies(BlueSheep.Common.Data.I18N.GetText(mess));
            }
        }
Beispiel #3
0
        public void Update(NpcDialogQuestionMessage message)
        {
            if (_account.State != AccountStates.TALKING)
            {
                return;
            }

            PossibleReplies = new List <uint>(message.VisibleReplies);
            QuestionReceived?.Invoke();
        }
Beispiel #4
0
        private void OnNpcDialogQuestionMessage(IAccount arg1, NpcDialogQuestionMessage dialogQuestion)
        {
            PossibleReplies = new List <NpcReplyLUA>();
            foreach (var replyid in dialogQuestion.VisibleReplies)
            {
                PossibleReplies.Add(new NpcReplyLUA((int)replyid, _currentNpc));
            }

            LastMessageID = dialogQuestion.MessageId;
            Console.WriteLine(LastMessageID.ToString());
            InDialog = true;
            _messageReceived.Set();
        }
Beispiel #5
0
 public static Task HandleNpcDialogQuestionMessage(Account account, NpcDialogQuestionMessage message)
 => Task.Run(() => account.Game.Npcs.Update(message));