public void startEvent(UserCharacter u) { if (!u.isMessage) { u.isMessage = true; u.page = default_action; u.npcData = this; } if (u.page != 0) { Actions[u.page].start(u); } else { u.resetMessage(); } }
public void start(UserCharacter u) { string[] cmd; int index; cmd = split_command; // IF:INT:strUNE0: if (cmd[0] == "IF") { string[] data = command.Split(';'); Command con = new Command("IF:(.*)\\[(.*)\\](.*)"); string[] conData = con.MatchData(data[0]); // 조건 비교 #region 안보는거 추천 switch (conData[2]) { // EQU (equal ==) case "EQU": try { if ((int)u.GetType().GetProperty(conData[1]).GetValue(u, null) == Convert.ToInt32(conData[3])) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } catch { if (u.GetType().GetProperty(conData[1]).GetValue(u, null) == u.GetType().GetProperty(conData[3]).GetValue(u, null)) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } break; // UNE (unequal !=) case "UNE": try { if ((int)u.GetType().GetProperty(conData[1]).GetValue(u, null) != Convert.ToInt32(conData[3])) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } catch { if (u.GetType().GetProperty(conData[1]).GetValue(u, null) != u.GetType().GetProperty(conData[3]).GetValue(u, null)) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } break; // MOR (>=) case "MOR": try { if ((int)u.GetType().GetProperty(conData[1]).GetValue(u, null) >= Convert.ToInt32(conData[3])) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } catch { if ((int)u.GetType().GetProperty(conData[1]).GetValue(u, null) >= (int)u.GetType().GetProperty(conData[3]).GetValue(u, null)) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } break; // BEL (<=) case "BEL": try { if ((int)u.GetType().GetProperty(conData[1]).GetValue(u, null) <= Convert.ToInt32(conData[3])) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } catch { if ((int)u.GetType().GetProperty(conData[1]).GetValue(u, null) <= (int)u.GetType().GetProperty(conData[3]).GetValue(u, null)) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } break; // EXC (>) case "EXC": try { if ((int)u.GetType().GetProperty(conData[1]).GetValue(u, null) > Convert.ToInt32(conData[3])) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } catch { if ((int)u.GetType().GetProperty(conData[1]).GetValue(u, null) > (int)u.GetType().GetProperty(conData[3]).GetValue(u, null)) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } break; // UND (<) case "UND": try { if ((int)u.GetType().GetProperty(conData[1]).GetValue(u, null) < Convert.ToInt32(conData[3])) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } catch { if ((int)u.GetType().GetProperty(conData[1]).GetValue(u, null) < (int)u.GetType().GetProperty(conData[3]).GetValue(u, null)) { cmd = data[1].Split(':'); } else { cmd = data[2].Split(':'); } } break; } #endregion } // command 로 분기 switch (cmd[0]) { case "MESSAGE": index = Convert.ToInt32(cmd[1]); u.action = npcData.Messages[index].actions; u.userData.clientData.SendPacket(Packet.EventTrigger(npcData.Messages[index])); break; case "END": u.resetMessage(); break; case "STORE": index = Convert.ToInt32(cmd[1]); u.page = npcData.Stores[index].action; Store.Show(u, npcData.Stores[index].storeData.no); npcData.startEvent(u); break; case "FUNCTION": index = Convert.ToInt32(cmd[1]); u.page = npcData.Functions[index].action; if (typeof(NPCFunction).GetMethod(npcData.Functions[index].func) != null) { object[] args = { u, npcData }; typeof(NPCFunction).GetMethod(npcData.Functions[index].func).Invoke(null, args); } npcData.startEvent(u); break; } }