public void Start(MapleClient c, int npcId) { lock (m_cms) { if (m_cms.ContainsKey(c)) { return; } } var cm = new NpcConversationManager(c, npcId); try { lock (m_cms) { if (c.Player.GmLevel > 0) { c.Player.DropMessage($"与NPC:{npcId}成功建立对话!"); } m_cms.Add(c, cm); m_status.Add(c, 0); #if debug CSScript.KeepCompilingHistory = false; #else CSScript.KeepCompilingHistory = true; #endif string scriptPath = $"Script//NPC//{npcId}.cs"; if (File.Exists(scriptPath)) { dynamic script = CSScript.Load(scriptPath).CreateObject("*"); if (m_scripts.ContainsKey(c)) { m_scripts[c] = script; } else { m_scripts.Add(c, script); } script.Start(cm); } else { cm.SendOk($"脚本不存在或者脚本错误,请与管理员联系。\r\n我的ID:#b{npcId}#k"); cm.Close(); } } } catch (Exception e) { cm.SendOk($"脚本不存在或者脚本错误,请与管理员联系。\r\n我的ID:#b{npcId}#k"); cm.Close(); Console.WriteLine(e); } }
public void Close(NpcConversationManager cm) { lock (m_cms) { var c = cm.Client; m_cms.Remove(c); m_scripts.Remove(c); m_status.Remove(c); } }