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)); } }
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)); } }
public void Update(NpcDialogQuestionMessage message) { if (_account.State != AccountStates.TALKING) { return; } PossibleReplies = new List <uint>(message.VisibleReplies); QuestionReceived?.Invoke(); }
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(); }
public static Task HandleNpcDialogQuestionMessage(Account account, NpcDialogQuestionMessage message) => Task.Run(() => account.Game.Npcs.Update(message));