예제 #1
0
 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();
     }
 }
예제 #2
0
        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;
            }
        }