예제 #1
0
        public static void Init_Load()
        {
            MysqlNode node = new MysqlNode(private_data.mysqlOption, "SELECT * FROM npc");

            using (node.ExecuteReader())
            {
                while (node.Read())
                {
                    NPC npc = new NPC();
                    npc.skin     = node.GetString("skin");
                    npc.name     = node.GetString("name");
                    npc.function = node.GetString("function");
                    npc.position = new Vector4(node.GetFloat("x"), node.GetFloat("y"), node.GetFloat("z"), node.GetFloat("q"));

                    MysqlNode messagenode = new MysqlNode(private_data.mysqlOption, "SELECT * FROM npc_message WHERE npc_no=?no");
                    messagenode["no"] = node.GetInt("npc_no");
                    using (messagenode.ExecuteReader())
                    {
                        while (messagenode.Read())
                        {
                            npc.AddMessage(messagenode.GetString("message"));
                            Console.WriteLine("NPC " + npc.name + " 메세지 입력 -> " + messagenode.GetString("message"));
                        }
                    }
                    npc.Start();
                    Console.WriteLine("NPC " + npc.name + " 추가");
                }
            }


            Group_Load();
        }
예제 #2
0
        /// <summary>
        /// 이 유저가 서있는 위치가 다른 그룹에 포함되는지 반환합니다.
        /// 인풋값에 숫자를 입력하면 그 거리를 기준으로 판단합니다.
        /// </summary>
        /// <returns></returns>
        public string InGroup(float check_d = 17.5f)
        {
            MysqlNode snode = new MysqlNode(private_data.mysqlOption, "SELECT group_name, x, z FROM `group`");

            using (snode.ExecuteReader())
            {
                while (snode.Read())
                {
                    float dx       = position.x - snode.GetFloat("x");
                    float dz       = position.z - snode.GetFloat("z");
                    float distance = (float)Math.Sqrt(dx * dx + dz * dz);
                    if (distance <= check_d)
                    {
                        return(snode.GetString("group_name"));
                    }
                }
            }
            return(null);
        }
예제 #3
0
        /// <summary>
        /// 프로그램 시작시 처음 실행되는 함수입니다. 이 함수에서 NPC를 추가합니다.
        /// </summary>
        public static void Init_Load()
        {
            MysqlNode node = new MysqlNode(private_data.mysqlOption, "SELECT * FROM npc");

            using (node.ExecuteReader())
            {
                while (node.Read())
                {
                    // MYSQL로부터 데이터를 읽어 새로운 NPC를 생성합니다.
                    NPC npc = new NPC();
                    npc.group    = "NPC";
                    npc.skin     = node.GetString("skin");
                    npc.name     = node.GetString("name");
                    npc.function = node.GetString("function");
                    npc.position = new Vector4(node.GetFloat("x"), node.GetFloat("y"), node.GetFloat("z"), node.GetFloat("q"));
                    // 혹시 해당 NPC에 대사가 있을경우 그 대사 정보를입력합니다.
                    MysqlNode messagenode = new MysqlNode(private_data.mysqlOption, "SELECT * FROM npc_message WHERE npc_no=?no");
                    messagenode["no"] = node.GetInt("npc_no");
                    using (messagenode.ExecuteReader())
                    {
                        while (messagenode.Read())
                        {
                            // 해당 NPC에게 대사 추가
                            npc.AddMessage(messagenode.GetString("message"));
                            Console.WriteLine("NPC " + npc.name + " 메세지 입력 -> " + messagenode.GetString("message"));
                        }
                    }
                    // NPC의 로딩이 완료되었고, 다른 유저들이 이 NPC를 볼 수 있도록 Start함수를 실행시킵니다.
                    npc.Start();
                    Console.WriteLine("NPC " + npc.name + " 추가");
                }
            }

            // 이어서 Group_Load 함수를 실행시킵니다.
            Group_Load();
        }
예제 #4
0
        private static void Group_Load()
        {
            MysqlNode node = new MysqlNode(private_data.mysqlOption, "SELECT * FROM course join `group` on group.group_name=course.no");

            using (node.ExecuteReader())
            {
                while (node.Read())
                {
                    Study group = new Study(node.GetString("group_name"), new Vector4(node.GetFloat("x"), node.GetFloat("y"), node.GetFloat("z"), node.GetFloat("q")));
                    group.Start();
                    Console.WriteLine("Group " + group.name + " 추가");
                }
            }
        }
예제 #5
0
        private static void Group_Load()
        {
            // 모든 그룹에 대해 정보를 읽어옵니다.
            // Group은 Course와 같은 방식으로 접근이 가능하며,
            // 세부 정보는 GROUP 테이블에 담겨있기때문에
            // Course, Group 테이블을 조인합니다.
            MysqlNode node = new MysqlNode(private_data.mysqlOption, "SELECT * FROM course join `group` on group.group_name=course.no");

            using (node.ExecuteReader())
            {
                while (node.Read())
                {
                    // 그룹 이름, 그룹장, 위치 정보를 이용하여 새로운 그룹을 서버에 추가시킵니다.
                    // Study 클래스같은 경우는 NPC를 상속하는 클래스입니다.
                    Study group = new Study(node.GetString("group_name"), node.GetString("master"), new Vector4(node.GetFloat("x"), node.GetFloat("y"), node.GetFloat("z"), node.GetFloat("q")));
                    group.Start();
                    Console.WriteLine("Group " + group.name + " 추가");
                }
            }
        }