Beispiel #1
0
        static void ListFromDatabase(Player p, ref bool foundAny, ushort x, ushort y, ushort z)
        {
            if (!Database.TableExists("Block" + p.level.name))
            {
                return;
            }
            using (DataTable Blocks = Database.Backend.GetRows("Block" + p.level.name, "*",
                                                               "WHERE X=@0 AND Y=@1 AND Z=@2", x, y, z)) {
                BlockDBEntry entry = default(BlockDBEntry);
                entry.OldRaw = Block.Invalid;

                for (int i = 0; i < Blocks.Rows.Count; i++)
                {
                    foundAny = true;
                    DataRow row  = Blocks.Rows[i];
                    string  name = row["Username"].ToString().Trim();

                    DateTime time  = DateTime.Parse(row["TimePerformed"].ToString());
                    TimeSpan delta = time - BlockDB.Epoch;
                    entry.TimeDelta = (int)delta.TotalSeconds;
                    entry.Flags     = BlockDBFlags.ManualPlace;

                    byte flags = ParseFlags(row["Deleted"].ToString());
                    if ((flags & 1) == 0)   // block was placed
                    {
                        entry.NewRaw = byte.Parse(row["Type"].ToString());
                        entry.Flags |= (flags & 2) != 0 ? BlockDBFlags.NewCustom : BlockDBFlags.None;
                    }
                    BlockDBChange.Output(p, name, entry);
                }
            }
        }
Beispiel #2
0
        static void OutputEntry(Player p, ref bool foundAny, Dictionary <int, string> names, BlockDBEntry entry)
        {
            DateTime now  = DateTime.UtcNow;
            string   name = null;

            if (!names.TryGetValue(entry.PlayerID, out name))
            {
                name = NameConverter.FindName(entry.PlayerID);
                names[entry.PlayerID] = name;
            }
            foundAny = true;
            BlockDBChange.Output(p, name, entry);
        }
Beispiel #3
0
        static void ListFromDatabase(Player p, ref bool foundAny, ushort x, ushort y, ushort z)
        {
            if (!Database.TableExists("Block" + p.level.name))
            {
                return;
            }

            List <string[]> entries = Database.GetRows("Block" + p.level.name, "Username,TimePerformed,Deleted,Type",
                                                       "WHERE X=@0 AND Y=@1 AND Z=@2", x, y, z);

            if (entries.Count > 0)
            {
                foundAny = true;
            }
            BlockDBEntry entry = default(BlockDBEntry);

            entry.OldRaw = Block.Invalid;

            foreach (string[] row in entries)
            {
                DateTime time  = row[1].ParseDBDate();
                TimeSpan delta = time - BlockDB.Epoch;
                entry.TimeDelta = (int)delta.TotalSeconds;
                entry.Flags     = BlockDBFlags.ManualPlace;

                byte flags = ParseFlags(row[2]);
                if ((flags & 1) == 0)   // block was placed
                {
                    entry.NewRaw = byte.Parse(row[3]);
                    if ((flags & 2) != 0)
                    {
                        entry.Flags |= BlockDBFlags.NewExtended;
                    }
                }
                BlockDBChange.Output(p, row[0], entry);
            }
        }