public static void Initialize() { if (m_scriptDisabled) { return; } var npc = NpcManager.Instance.GetNpcTemplate(NpcId); if (npc == null) { Logger.Error("Npc {0} not found, script is disabled", NpcId); m_scriptDisabled = true; return; } npc.NpcSpawned += OnNpcSpawned; Message = NpcManager.Instance.GetNpcMessage(MessageId); MessageError = NpcManager.Instance.GetNpcMessage(MessageLevelErrorId); MessagePrestigeMax = NpcManager.Instance.GetNpcMessage(MessagePrestigeMaxId); if (Message != null && MessageError != null && MessagePrestigeMax != null) { return; } Logger.Error("Messages {0},{1},{2} not found, script is disabled", MessageId, MessageLevelErrorId, MessagePrestigeMaxId); }
public virtual void Reply(short replyId) { NpcMessage currentMessage = this.CurrentMessage; NpcReply[] array = ( from entry in this.CurrentMessage.Replies where entry.ReplyId == (int)replyId select entry).ToArray <NpcReply>(); if (array.Any((NpcReply x) => !x.CanExecute(this.Npc, this.Character))) { this.Character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 34, new object[0]); } else { NpcReply[] array2 = array; for (int i = 0; i < array2.Length; i++) { NpcReply reply = array2[i]; this.Reply(reply); } if (array.Length == 0 || currentMessage == this.CurrentMessage) { this.Close(); } } }
public static void Initialize() { if (m_scriptDisabled) { return; } var npc = NpcManager.Instance.GetNpcTemplate(NpcId); if (npc == null) { Logger.Error("Npc {0} not found, script is disabled", NpcId); m_scriptDisabled = true; return; } npc.NpcSpawned += OnNpcSpawned; Message = NpcManager.Instance.GetNpcMessage(MessageId); if (Message != null) { return; } Logger.Error("Message {0} not found, script is disabled", MessageId); m_scriptDisabled = true; }
public virtual void ChangeMessage(NpcMessage message) { this.CurrentMessage = message; System.Collections.Generic.IEnumerable <short> replies = ( from entry in message.Replies where entry.CriteriaExpression == null || entry.CriteriaExpression.Eval(this.Character) select(short) entry.ReplyId).Distinct <short>(); ContextRoleplayHandler.SendNpcDialogQuestionMessage(this.Character.Client, this.CurrentMessage, replies, new string[0]); }
public void ChangeMessage(short id) { NpcMessage npcMessage = Singleton <NpcManager> .Instance.GetNpcMessage((int)id); if (npcMessage != null) { this.ChangeMessage(npcMessage); } }
public virtual void ChangeMessage(NpcMessage message) { CurrentMessage = message; var replies = message.Replies. Where(entry => entry.CanShow(Npc, Character)). Select(entry => (short)entry.ReplyId).Distinct(); ContextRoleplayHandler.SendNpcDialogQuestionMessage(Character.Client, CurrentMessage, replies); }
/// <summary> /// 根据ID获取对应的NPC的信息 /// </summary> /// <param name="npcid"></param> /// <returns></returns> public NpcMessage GetTargetNpc(NpcTypeID npcid) { if (!m_allNpcInfo.ContainsKey(npcid)) { if (npcid == NpcTypeID.None) { return(null); } NpcMessage.CreateDefault((int)npcid); m_allNpcInfo.Add(npcid, NpcMessage.defaultNpc); return(NpcMessage.defaultNpc); } return(m_allNpcInfo.Get(npcid)); }
/// <summary> /// NPC信息 /// </summary> /// <param name="p"></param> void _Packet(ScNpcInfo p) { if (p != null && p.npcinfos != null && p.npcinfos.Length > 0) { m_allNpcs.Clear(); m_allNpcInfo.Clear(); PNpcInfo[] infos = null; p.npcinfos.CopyTo(ref infos); List <PNpcInfo> list = new List <PNpcInfo>(infos); list.Sort((a, b) => a.npcId.CompareTo(b.npcId)); PNpcEngagement engagement = null; if (p.engagementNpc != null) { p.engagementNpc.CopyTo(ref engagement); } for (int i = 0; i < list.Count; i++) { NpcMessage msg = null; if (engagement != null && engagement.npcId == list[i].npcId) { msg = new NpcMessage(list[i], engagement); } else { msg = new NpcMessage(list[i]); } if (msg.isNull || msg.npcInfo == null || msg.npcInfo.type == 2) { continue; } m_allNpcs.Add(msg); m_allNpcInfo.Add((NpcTypeID)list[i].npcId, msg); } DispatchModuleEvent(EventReceiveLoginNpcInfo); } }
public static void CreateDefault(int id) { var npc = PacketObject.Create <PNpcInfo>(); npc.npcId = (ushort)id; npc.currentLv = 1; npc.currentExp = 0; npc.starStLv = 1; npc.starExp = 0; var info = ConfigManager.Get <NpcInfo>(id); if (info == null) { Logger.LogError("config_npcInfo do not have the msg id=={0}", id); npc.mode = 39001; } npc.mode = (ushort)info.cloth; defaultNpc = new NpcMessage(npc); }
public Task GetTargetTask(NpcMessage npc, byte taskId = 0) { if (npc == null || npc.npcInfo == null || npc.npcInfo.tasks == null) { return(null); } var tasks = npc.npcInfo.tasks; for (int i = 0; i < tasks.Length; i++) { if (tasks[i].fetterLv == npc.fetterLv) { //调用任务module接口,返回是否有这个任务 if (taskId != 0 && tasks[i].taskId != taskId) { continue; } return(moduleTask.GetTask((byte)tasks[i].taskId)); } } return(null); }
public static void SendNpcDialogQuestionMessage(IPacketReceiver client, NpcMessage message, IEnumerable <short> replies, params string[] parameters) { client.Send(new NpcDialogQuestionMessage((short)message.Id, parameters, replies)); }
public static void SendNpcDialogQuestionMessage(IPacketReceiver client, NpcMessage message, System.Collections.Generic.IEnumerable <short> replies, params string[] parameters) { client.Send(new NpcDialogQuestionMessage((ushort)message.Id, parameters, replies.Cast <ushort>())); }