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); } } }
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); }
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); } }