Exemplo n.º 1
0
        public QuestProgressInfo(BinaryReader reader)
        {
            Index = reader.ReadInt32();
            Info  = Envir.QuestInfoList.FirstOrDefault(e => e.Index == Index);

            StartDateTime = DateTime.FromBinary(reader.ReadInt64());
            EndDateTime   = DateTime.FromBinary(reader.ReadInt64());

            int count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                KillTaskCount.Add(reader.ReadInt32());
            }

            count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                ItemTaskCount.Add(reader.ReadInt64());
            }

            if (Envir.LoadVersion >= 37)
            {
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    FlagTaskSet.Add(reader.ReadBoolean());
                }
            }
        }
Exemplo n.º 2
0
        public static void SaveQuestDB(QuestInfo info)
        {
            try
            {
                MySqlConnection connection = new MySqlConnection(); //star conection
                String          connectionString;
                connectionString            = "Server=" + Settings.ServerIP + "; Uid=" + Settings.Uid + "; Pwd=" + Settings.Pwd + "; convert zero datetime=True";
                connection.ConnectionString = connectionString;
                connection.Open();
                string sqlCommand;
                string query = "SELECT COUNT(*) FROM  " + Settings.DBServer + ".questinfo WHERE IndexID=" + info.Index;
                using (var cmd = new MySqlCommand(query, connection))
                {
                    int count = Convert.ToInt32(cmd.ExecuteScalar());

                    if (count == 0)
                    {
                        sqlCommand = "INSERT INTO  " + Settings.DBServer + ".questinfo (IndexID, Name, Group_, FileName, RequiredMinLevel, RequiredMaxLevel, RequiredQuest, RequiredClass, Type, GotoMessage, KillMessage, ItemMessage, FlagMessage) VALUES (@IndexID, @Name, @Group_, @FileName, @RequiredMinLevel, @RequiredMaxLevel, @RequiredQuest, @RequiredClass, @Type, @GotoMessage, @KillMessage, @ItemMessage, @FlagMessage)";
                    }

                    else
                    {
                        sqlCommand = "UPDATE  " + Settings.DBServer + ".questinfo SET IndexID = @IndexID, Name = @Name, Group_ = @Group_, FileName = @FileName, RequiredMinLevel = @RequiredMinLevel, RequiredMaxLevel = @RequiredMaxLevel, RequiredQuest = @RequiredQuest, RequiredClass = @RequiredClass,Type = @Type, GotoMessage = @GotoMessage, KillMessage = @KillMessage, ItemMessage = @ItemMessage, FlagMessage = @FlagMessage  WHERE IndexID = " + info.Index + "";
                    }
                }

                using (var command = new MySqlCommand(sqlCommand, connection))
                {
                    command.Parameters.AddWithValue("@IndexID", info.Index);
                    command.Parameters.AddWithValue("@Name", info.Name);
                    command.Parameters.AddWithValue("@Group_", info.Group);
                    command.Parameters.AddWithValue("@FileName", info.FileName);
                    command.Parameters.AddWithValue("@RequiredMinLevel", info.RequiredMinLevel);
                    command.Parameters.AddWithValue("@RequiredMaxLevel", info.RequiredMaxLevel);
                    command.Parameters.AddWithValue("@RequiredQuest", info.RequiredQuest);
                    command.Parameters.AddWithValue("@RequiredClass", info.RequiredClass);
                    command.Parameters.AddWithValue("@Type", info.Type);
                    command.Parameters.AddWithValue("@GotoMessage", info.GotoMessage);
                    command.Parameters.AddWithValue("@KillMessage", info.KillMessage);
                    command.Parameters.AddWithValue("@ItemMessage", info.ItemMessage);
                    command.Parameters.AddWithValue("@FlagMessage", info.FlagMessage);
                    command.ExecuteNonQuery();
                    command.Dispose();
                }

                connection.Close();
            }
            catch (MySqlException ex)
            {
                SMain.Enqueue(ex);
            }
        }
Exemplo n.º 3
0
        public static void FromText(string text, bool hero = false)
        {
            string[] data = text.Split(new[] { ',' });

            if (data.Length < 13)
            {
                return;
            }

            QuestInfo info = new QuestInfo(false)
            {
                Name  = data[0],
                Group = data[1]
            };


            byte.TryParse(data[2], out byte temp);

            info.Type = (QuestType)temp;

            info.FileName    = data[3];
            info.GotoMessage = data[4];
            info.KillMessage = data[5];
            info.ItemMessage = data[6];
            info.FlagMessage = data[7];

            int.TryParse(data[8], out info.RequiredMinLevel);
            int.TryParse(data[9], out info.RequiredMaxLevel);
            int.TryParse(data[10], out info.RequiredQuest);


            byte.TryParse(data[11], out temp);

            bool.TryParse(data[12], out info.HeroQuest);

            bool.TryParse(data[13], out info.autoComplete);

            int.TryParse(data[14], out info.Time);


            info.RequiredClass = (RequiredClass)temp;

            info.HeroQuest = hero;

            info.Index = ++SMain.EditEnvir.QuestIndex;
            SMain.EditEnvir.QuestInfoList.Add(info);
        }
Exemplo n.º 4
0
        public QuestProgressInfo(int index)
        {
            Info = SMain.Envir.QuestInfoList.FirstOrDefault(e => e.Index == index);

            if (Info == null) return;

            foreach (var kill in Info.KillTasks)
                KillTaskCount.Add(0);

            foreach (var item in Info.ItemTasks)
                ItemTaskCount.Add(0);

            foreach (var flag in Info.FlagTasks)
                FlagTaskSet.Add(false);

            CheckCompleted();
        }
Exemplo n.º 5
0
        public static QuestInfo CloneQuest(QuestInfo m)
        {
            QuestInfo newQuest = new QuestInfo(m.HeroQuest)
            {
                CarryItems            = m.CarryItems,
                CompletionDescription = m.CompletionDescription,
                CreditReward          = m.CreditReward,
                Description           = m.Description,
                ExpReward             = m.ExpReward,
                FileName         = m.FileName,
                FixedRewards     = m.FixedRewards,
                BuffRewards      = m.BuffRewards,
                FlagMessage      = m.FlagMessage,
                FlagTasks        = m.FlagTasks,
                GoldReward       = m.GoldReward,
                GotoMessage      = m.GotoMessage,
                Group            = m.Group,
                Index            = m.Index,
                ItemMessage      = m.ItemMessage,
                ItemTasks        = m.ItemTasks,
                KillMessage      = m.KillMessage,
                KillTasks        = m.KillTasks,
                Name             = m.Name,
                NpcIndex         = m.NpcIndex,
                NpcInfo          = m.NpcInfo,
                percentageExp    = m.percentageExp,
                autoComplete     = m.autoComplete,
                RequiredClass    = m.RequiredClass,
                RequiredMaxLevel = m.RequiredMaxLevel,
                RequiredMinLevel = m.RequiredMinLevel,
                RequiredQuest    = m.RequiredQuest,
                SelectRewards    = m.SelectRewards,
                TaskDescription  = m.TaskDescription,
                Time             = m.Time,
                Type             = m.Type,
                _finishNpcIndex  = m._finishNpcIndex,
                _regexMessage    = m._regexMessage,
                ItemExpReward    = m.ItemExpReward
            };


            return(newQuest);
        }
Exemplo n.º 6
0
 public QuestInfo UpdateQuestInfo(QuestInfo m)
 {
     CarryItems            = m.CarryItems;
     CompletionDescription = m.CompletionDescription;
     CreditReward          = m.CreditReward;
     Description           = m.Description;
     ExpReward             = m.ExpReward;
     FileName         = m.FileName;
     FixedRewards     = m.FixedRewards;
     BuffRewards      = m.BuffRewards;
     FlagMessage      = m.FlagMessage;
     FlagTasks        = m.FlagTasks;
     GoldReward       = m.GoldReward;
     GotoMessage      = m.GotoMessage;
     Group            = m.Group;
     Index            = m.Index;
     ItemMessage      = m.ItemMessage;
     ItemTasks        = m.ItemTasks;
     KillMessage      = m.KillMessage;
     KillTasks        = m.KillTasks;
     Name             = m.Name;
     NpcIndex         = m.NpcIndex;
     NpcInfo          = m.NpcInfo;
     percentageExp    = m.percentageExp;
     autoComplete     = m.autoComplete;
     RequiredClass    = m.RequiredClass;
     RequiredMaxLevel = m.RequiredMaxLevel;
     RequiredMinLevel = m.RequiredMinLevel;
     RequiredQuest    = m.RequiredQuest;
     SelectRewards    = m.SelectRewards;
     TaskDescription  = m.TaskDescription;
     Time             = m.Time;
     Type             = m.Type;
     _finishNpcIndex  = m._finishNpcIndex;
     _regexMessage    = m._regexMessage;
     ItemExpReward    = m.ItemExpReward;
     return(this);
 }
Exemplo n.º 7
0
        public QuestProgressInfo(int index)
        {
            Index = index;

            Info = SMain.Envir.QuestInfoList.FirstOrDefault(e => e.Index == index);

            foreach (var kill in Info.KillTasks)
            {
                KillTaskCount.Add(0);
            }

            foreach (var item in Info.ItemTasks)
            {
                ItemTaskCount.Add(0);
            }

            foreach (var flag in Info.FlagTasks)
            {
                FlagTaskSet.Add(false);
            }

            CheckCompleted();
        }
Exemplo n.º 8
0
        public QuestProgressInfo(BinaryReader reader)
        {
            Index = reader.ReadInt32();
            Info = SMain.Envir.QuestInfoList.FirstOrDefault(e => e.Index == Index);

            StartDateTime = DateTime.FromBinary(reader.ReadInt64());
            EndDateTime = DateTime.FromBinary(reader.ReadInt64());

            int count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
                KillTaskCount.Add(reader.ReadInt32());

            count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
                ItemTaskCount.Add(reader.ReadInt64());

            if (Envir.LoadVersion >= 37)
            {
                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                    FlagTaskSet.Add(reader.ReadBoolean());
            }
        }
Exemplo n.º 9
0
        public static void FromText(string text)
        {
            string[] data = text.Split(new[] { ',' });

            if (data.Length < 10)
            {
                return;
            }

            QuestInfo info = new QuestInfo();

            info.Name  = data[0];
            info.Group = data[1];

            byte temp;

            byte.TryParse(data[2], out temp);

            info.Type = (QuestType)temp;

            info.FileName    = data[3];
            info.GotoMessage = data[4];
            info.KillMessage = data[5];
            info.ItemMessage = data[6];
            info.FlagMessage = data[7];

            int.TryParse(data[8], out info.RequiredMinLevel);
            int.TryParse(data[9], out info.RequiredMaxLevel);
            int.TryParse(data[10], out info.RequiredQuest);

            byte.TryParse(data[11], out temp);

            info.RequiredClass = (RequiredClass)temp;

            info.Index = ++EditEnvir.QuestIndex;
            EditEnvir.QuestInfoList.Add(info);
        }
Exemplo n.º 10
0
 public void Remove(QuestInfo info)
 {
     QuestInfoList.Remove(info);
     //Desync all objects\
 }
Exemplo n.º 11
0
 public void CheckQuestInfo(QuestInfo info)
 {
     if (Connection.SentQuestInfo.Contains(info)) return;
     Enqueue(new S.NewQuestInfo { Info = info.CreateClientQuestInfo() });
     Connection.SentQuestInfo.Add(info);
 }
Exemplo n.º 12
0
        public QuestProgressInfo(MySqlDataReader readerQuestProgressDB, string Name)
        {
            Index = Convert.ToInt32(readerQuestProgressDB["IndexID"]);
            Info  = SMain.Envir.QuestInfoList.FirstOrDefault(e => e.Index == Index);

            // StartDateTime = DateTime.Now;
            //  EndDateTime = DateTime.MaxValue;

            EndDateTime   = readerQuestProgressDB.GetDateTime(readerQuestProgressDB.GetOrdinal("EndDateTime"));
            StartDateTime = readerQuestProgressDB.GetDateTime(readerQuestProgressDB.GetOrdinal("StartDateTime"));

            try
            {
                MySqlConnection connection = new MySqlConnection(); //star conection
                String          connectionString;
                connectionString            = "Server=" + Settings.ServerIP + "; Uid=" + Settings.Uid + "; Pwd=" + Settings.Pwd + "; convert zero datetime=True";
                connection.ConnectionString = connectionString;
                connection.Open();

                MySqlCommand instruccionKillTask = connection.CreateCommand();

                instruccionKillTask.CommandText = "SELECT * FROM " + Settings.DBAccount + ".killtaskcount WHERE ChName = '" + Name + "' and IndexID = '" + Index + "' ORDER BY IndexID, Position";

                MySqlDataReader readerKillTask = instruccionKillTask.ExecuteReader();


                while (readerKillTask.Read())
                {
                    int position = Convert.ToInt32(readerKillTask["Position"]);
                    int value    = Convert.ToInt32(readerKillTask["Value"]);

                    KillTaskCount.Add(value);
                }

                readerKillTask.Dispose();


                MySqlCommand instruccionItemTask = connection.CreateCommand();

                instruccionItemTask.CommandText = "SELECT * FROM " + Settings.DBAccount + ".itemtaskcount WHERE ChName = '" + Name + "' and IndexID = '" + Index + "' ORDER BY IndexID, Position";

                MySqlDataReader readerItemTask = instruccionItemTask.ExecuteReader();


                while (readerItemTask.Read())
                {
                    int  position = Convert.ToInt32(readerItemTask["Position"]);
                    long value    = Convert.ToInt64(readerItemTask["Value"]);

                    ItemTaskCount.Add(value);
                }

                readerItemTask.Dispose();

                MySqlCommand instruccionFlagTask = connection.CreateCommand();

                instruccionFlagTask.CommandText = "SELECT * FROM " + Settings.DBAccount + ".flagtaskset WHERE ChName = '" + Name + "' and IndexID = '" + Index + "' ORDER BY IndexID, Position";

                MySqlDataReader readerFlagTask = instruccionFlagTask.ExecuteReader();


                while (readerFlagTask.Read())
                {
                    int  position = Convert.ToInt32(readerFlagTask["Position"]);
                    bool value    = Convert.ToBoolean(readerFlagTask["value"]);

                    FlagTaskSet.Add(value);
                }

                readerFlagTask.Dispose();

                connection.Close();
            }

            catch (MySqlException ex)
            {
                SMain.Enqueue(ex);
            }
        }
Exemplo n.º 13
0
        public static void FromText(string text)
        {
            string[] data = text.Split(new[] { ',' });

            if (data.Length < 10) return;

            QuestInfo info = new QuestInfo();

            info.Name = data[0];
            info.Group = data[1];

            byte temp;

            byte.TryParse(data[2], out temp);

            info.Type = (QuestType)temp;

            info.FileName = data[3];
            info.GotoMessage = data[4];
            info.KillMessage = data[5];
            info.ItemMessage = data[6];
            info.FlagMessage = data[7];

            int.TryParse(data[8], out info.RequiredMinLevel);
            int.TryParse(data[9], out info.RequiredMaxLevel);
            int.TryParse(data[10], out info.RequiredQuest);

            byte.TryParse(data[11], out temp);

            info.RequiredClass = (RequiredClass)temp;

            info.Index = ++SMain.EditEnvir.QuestIndex;
            SMain.EditEnvir.QuestInfoList.Add(info);
        }
Exemplo n.º 14
0
        public QuestProgressInfo(BinaryReader reader, int version, int customVersion)
        {
            Index = reader.ReadInt32();
            Info  = Envir.QuestInfoList.FirstOrDefault(e => e.Index == Index);

            StartDateTime = DateTime.FromBinary(reader.ReadInt64());
            EndDateTime   = DateTime.FromBinary(reader.ReadInt64());

            if (version < 90)
            {
                int count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    var killCount = reader.ReadInt32();

                    if (Info.KillTasks.Count >= i)
                    {
                        var progress = new QuestKillTaskProgress
                        {
                            MonsterID = Info.KillTasks[i].Monster.Index,
                            Count     = killCount,
                            Info      = Info.KillTasks[i]
                        };
                        KillTaskCount.Add(progress);
                    }
                }

                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    var itemCount = reader.ReadInt32();
                    if (Info.ItemTasks.Count >= i)
                    {
                        var progress = new QuestItemTaskProgress
                        {
                            ItemID = Info.ItemTasks[i].Item.Index,
                            Count  = itemCount,
                            Info   = Info.ItemTasks[i]
                        };
                        ItemTaskCount.Add(progress);
                    }
                }

                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    var flagState = reader.ReadBoolean();
                    if (Info.FlagTasks.Count >= i)
                    {
                        var progress = new QuestFlagTaskProgress
                        {
                            Number = Info.FlagTasks[i].Number,
                            State  = flagState,
                            Info   = Info.FlagTasks[i]
                        };
                        FlagTaskSet.Add(progress);
                    }
                }
            }
            else
            {
                int count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    var progress = new QuestKillTaskProgress
                    {
                        MonsterID = reader.ReadInt32(),
                        Count     = reader.ReadInt32()
                    };

                    foreach (var task in Info.KillTasks)
                    {
                        if (task.Monster.Index != progress.MonsterID)
                        {
                            continue;
                        }

                        progress.Info = task;
                        KillTaskCount.Add(progress);
                        break;
                    }
                }

                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    var progress = new QuestItemTaskProgress
                    {
                        ItemID = reader.ReadInt32(),
                        Count  = reader.ReadInt32()
                    };

                    foreach (var task in Info.ItemTasks)
                    {
                        if (task.Item.Index != progress.ItemID)
                        {
                            continue;
                        }

                        progress.Info = task;
                        ItemTaskCount.Add(progress);
                        break;
                    }
                }

                count = reader.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    var progress = new QuestFlagTaskProgress
                    {
                        Number = reader.ReadInt32(),
                        State  = reader.ReadBoolean()
                    };

                    foreach (var task in Info.FlagTasks)
                    {
                        if (task.Number != progress.Number)
                        {
                            continue;
                        }

                        progress.Info = task;
                        FlagTaskSet.Add(progress);
                        break;
                    }
                }

                //Add any new tasks which may have been added
                foreach (var kill in Info.KillTasks)
                {
                    if (KillTaskCount.Any(x => x.MonsterID == kill.Monster.Index))
                    {
                        continue;
                    }

                    KillTaskCount.Add(new QuestKillTaskProgress
                    {
                        MonsterID = kill.Monster.Index,
                        Info      = kill
                    });
                }

                foreach (var item in Info.ItemTasks)
                {
                    if (ItemTaskCount.Any(x => x.ItemID == item.Item.Index))
                    {
                        continue;
                    }

                    ItemTaskCount.Add(new QuestItemTaskProgress
                    {
                        ItemID = item.Item.Index,
                        Info   = item
                    });
                }

                foreach (var flag in Info.FlagTasks)
                {
                    if (FlagTaskSet.Any(x => x.Number == flag.Number))
                    {
                        continue;
                    }

                    FlagTaskSet.Add(new QuestFlagTaskProgress
                    {
                        Number = flag.Number,
                        Info   = flag
                    });
                }
            }
        }