From 3402eac0b589acfa893f504d9ac1ffd7aa108b15 Mon Sep 17 00:00:00 2001 From: Controllerdestiny <523321293@qq.com> Date: Sat, 4 May 2024 14:00:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=20Servertools=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=95=B0=E6=8D=AE=E5=BA=93=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ServerTools/DB/PlayerDeath.cs | 16 +++++++++++----- ServerTools/DB/PlayerOnline.cs | 7 ++++++- ServerTools/Plugin.cs | 10 +++++++--- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/ServerTools/DB/PlayerDeath.cs b/ServerTools/DB/PlayerDeath.cs index d80b83b0..3ebab46f 100644 --- a/ServerTools/DB/PlayerDeath.cs +++ b/ServerTools/DB/PlayerDeath.cs @@ -7,7 +7,7 @@ namespace ServerTools.DB; public class PlayerDeath : Dictionary { - public new int this[string key] + private new int this[string key] { get { @@ -47,9 +47,15 @@ private void ReadAll() public void Add(string name) { - this[name] += 1; - if (database.Query("UPDATE Death SET Count = @0 WHERE Name = @1", this[name], name) != 1) - database.Query("INSERT INTO `Death` (`Name`, `Count`) VALUES (@0, @1)", this[name], 1); - + if (ContainsKey(name)) + { + this[name] += 1; + database.Query("UPDATE Death SET Count = @0 WHERE Name = @1", this[name], name); + } + else + { + this[name] = 1; + database.Query("INSERT INTO `Death` (`Name`, `Count`) VALUES (@0, @1)", name, 1); + } } } diff --git a/ServerTools/DB/PlayerOnline.cs b/ServerTools/DB/PlayerOnline.cs index 971d10c7..ee2800be 100644 --- a/ServerTools/DB/PlayerOnline.cs +++ b/ServerTools/DB/PlayerOnline.cs @@ -7,6 +7,7 @@ namespace ServerTools.DB; public class PlayerOnline : Dictionary { + private HashSet _players = new(); public new int this[string key] { get @@ -42,6 +43,7 @@ public void ReadAll() string username = reader.Get("username"); int duration = reader.Get("duration"); this[username] = duration; + _players.Add(username); } } @@ -67,6 +69,7 @@ public bool Update(string Name, int duration) } public bool Insert(string Name, int duration) { + _players.Add(Name); return 1 == database.Query("INSERT INTO `OnlineDuration` (`username`, `duration`) VALUES (@0, @1)", Name, duration); } @@ -75,7 +78,9 @@ public bool Insert(string Name, int duration) public void AddOrUpdate(string name, int duration) { - if (!Update(name, duration)) + if (_players.Contains(name)) + Update(name, duration); + else Insert(name, duration); } diff --git a/ServerTools/Plugin.cs b/ServerTools/Plugin.cs index dafed3b4..d3aeb944 100644 --- a/ServerTools/Plugin.cs +++ b/ServerTools/Plugin.cs @@ -126,13 +126,17 @@ private void OnUpdate(EventArgs e) if (TimerCount % 60 == 0) { Timer?.Invoke(e); - foreach (var ply in Deads) + if (Config.DeadTimer) { - if (ply != null && ply.Active && ply.Dead) + foreach (var ply in Deads) { - ply.SendInfoMessage(Config.DeadFormat, ply.RespawnTimer); + if (ply != null && ply.Active && ply.Dead) + { + ply.SendInfoMessage(Config.DeadFormat, ply.RespawnTimer); + } } } + } }