Skip to content

Commit

Permalink
4.0.0 Beta II
Browse files Browse the repository at this point in the history
  • Loading branch information
Francesco authored and Francesco committed Mar 12, 2022
1 parent a4d8812 commit ed24a4d
Show file tree
Hide file tree
Showing 11 changed files with 111 additions and 91 deletions.
2 changes: 1 addition & 1 deletion SCPUtils/Commands/AddIps.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
if (!string.IsNullOrEmpty(a.Ip))
{
string ipaddress = a.Ip;
string userId = string.Concat(a.Id, "@", a.Authentication);
string userId = string.Concat(a.Id, "@", a.Authentication);
if (!Database.LiteDatabase.GetCollection<DatabaseIp>().Exists(ip => ip.Id == ipaddress))
{
ScpUtils.StaticInstance.DatabasePlayerData.AddIp(ipaddress, userId);
Expand Down
51 changes: 25 additions & 26 deletions SCPUtils/Commands/BadgePlayTime.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using System;
using System.Linq;
using System.Text;
using Log = Exiled.API.Features.Log;

namespace SCPUtils.Commands
{
Expand All @@ -25,23 +24,23 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
int range;
int count = 0;
int playtime;
// TimeSpan playtime;
// TimeSpan playtime;
if (!sender.CheckPermission("scputils.playtime") && !((CommandSender)sender).FullPermissions)
{
response = "<color=red>You need a higher administration level to use this command!</color>";
return false;
}
if (arguments.Count < 2)
{
response = $"<color=yellow>Usage: {Command} <badgeName> <days range> </color>";
return false;
}
else
{
badge = arguments.Array[1].ToString();
}
if (arguments.Count < 2)
{
response = $"<color=yellow>Usage: {Command} <badgeName> <days range> </color>";
return false;
}
else
{
badge = arguments.Array[1].ToString();
}

int.TryParse(arguments.Array[2], out range);
int.TryParse(arguments.Array[2], out range);

if (!ServerStatic.GetPermissionsHandler().GetAllGroups().ContainsKey(badge))
{
Expand All @@ -52,7 +51,7 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
StringBuilder message = new StringBuilder($"Checking playtime of badge {badge}").AppendLine();
foreach (var player in ServerStatic.RolesConfig.GetStringDictionary("Members"))
{
playtime = 0;
playtime = 0;
if (player.Value.ToString() == badge)
{
var databasePlayer = player.Key.GetDatabasePlayer();
Expand All @@ -61,28 +60,28 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
response = $"Null player detected! {player.Key}";
return false;
}

for (int i = 0; i <= range; i++)

for (int i = 0; i <= range; i++)
{
databasePlayer.PlayTimeRecords.Count();
DateTime.TryParse((DateTime.Now.Date.AddDays(-i)).ToString(), out DateTime date);
if (databasePlayer.PlayTimeRecords.ContainsKey(date.Date.ToShortDateString()))
{
databasePlayer.PlayTimeRecords.Count();
DateTime.TryParse((DateTime.Now.Date.AddDays(-i)).ToString(), out DateTime date);
if (databasePlayer.PlayTimeRecords.ContainsKey(date.Date.ToShortDateString()))
{
playtime += databasePlayer.PlayTimeRecords[date.Date.ToShortDateString()];
}
playtime += databasePlayer.PlayTimeRecords[date.Date.ToShortDateString()];
}
if (playtime == 0) message.AppendLine($"[{databasePlayer.Name} - {databasePlayer.Id}@{databasePlayer.Authentication}] - Playtime: [ No activity ]");
else message.AppendLine($"[{databasePlayer.Name} - {databasePlayer.Id}@{databasePlayer.Authentication}] - Playtime: [ { new TimeSpan(0, 0, playtime).ToString() } ]");
count++;
}
if (playtime == 0) message.AppendLine($"[{databasePlayer.Name} - {databasePlayer.Id}@{databasePlayer.Authentication}] - Playtime: [ No activity ]");
else message.AppendLine($"[{databasePlayer.Name} - {databasePlayer.Id}@{databasePlayer.Authentication}] - Playtime: [ { new TimeSpan(0, 0, playtime).ToString() } ]");
count++;
}
}

if(count==0)
if (count == 0)
{
response = "No players found on specified badge!";
return false;
}


response = $"{message}";

Expand Down
5 changes: 4 additions & 1 deletion SCPUtils/Commands/PlayTime.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
{
string target;
int range;
int playtime;
if (!sender.CheckPermission("scputils.ownplaytime") && !sender.CheckPermission("scputils.playtime") && !((CommandSender)sender).FullPermissions)
{
response = "<color=red>You need a higher administration level to use this command!</color>";
Expand Down Expand Up @@ -90,6 +91,7 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s



playtime = 0;
for (int i = 0; i <= range; i++)
{
databasePlayer.PlayTimeRecords.Count();
Expand All @@ -98,13 +100,14 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
if (databasePlayer.PlayTimeRecords.ContainsKey(date.Date.ToShortDateString()))
{
message.Append($"{date.Date.ToShortDateString()} Playtime: [ { new TimeSpan(0, 0, databasePlayer.PlayTimeRecords[date.Date.ToShortDateString()]).ToString() } ]");
playtime += databasePlayer.PlayTimeRecords[date.Date.ToShortDateString()];
}
else
{
message.Append($"{date.Date.ToShortDateString()} Playtime: [ No activity ]");
}
}

message.AppendLine($"\nSpecified Period PlayTime: [ { new TimeSpan(0, 0, playtime).ToString() } ]");
response = $"{message}";

return true;
Expand Down
13 changes: 11 additions & 2 deletions SCPUtils/Commands/ShowWarns.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using CommandSystem;
using Exiled.Permissions.Extensions;
using System;
using System.Linq;
using System.Text;

namespace SCPUtils.Commands
Expand Down Expand Up @@ -60,8 +61,16 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
message.AppendLine($"Class: {databasePlayer.SuicideScp[currentindex]}");
message.AppendLine($"Punishment: {databasePlayer.SuicidePunishment[currentindex]}");
message.AppendLine($"Staffer: {databasePlayer.LogStaffer[currentindex]}");
if (databasePlayer.SuicidePunishment[currentindex] == "Ban") message.AppendLine($"Expire: {databasePlayer.Expire[currentindex]}");
if (databasePlayer.SuicidePunishment[currentindex] == "Round-Ban") message.AppendLine($"Round(s) ban: {databasePlayer.RoundsBan[currentindex]}");
if (databasePlayer.SuicidePunishment[currentindex] == "Ban")
{
if (currentindex <= databasePlayer.Expire.Count()) message.AppendLine($"Expire: {databasePlayer.Expire[currentindex]}");
else message.AppendLine($"Expire: Unknown");
}
if (databasePlayer.SuicidePunishment[currentindex] == "Round-Ban")
{
if (currentindex <= databasePlayer.RoundsBan.Count()) message.AppendLine($"Round(s) ban: {databasePlayer.RoundsBan[currentindex]}");
else message.AppendLine($"Round(s) ban: Unknown");
}
message.AppendLine($"User Notified: {databasePlayer.UserNotified[currentindex]}");
message.AppendLine();
currentindex++;
Expand Down
4 changes: 2 additions & 2 deletions SCPUtils/Configs.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using Exiled.API.Interfaces;
using System.Collections.Generic;
using System.ComponentModel;
using DamageTypes = Exiled.API.Enums.DamageType;
using Log = Exiled.API.Features.Log;
using ZoneType = Exiled.API.Enums.ZoneType;
using DamageTypes = Exiled.API.Enums.DamageType;

namespace SCPUtils
{
Expand Down Expand Up @@ -257,7 +257,7 @@ public class Configs : IConfig
{ DamageTypes.Recontainment.ToString().ToUpper(), DamageTypes.Recontainment.ToString().ToUpper() }, { DamageTypes.Scp.ToString().ToUpper(), DamageTypes.Scp.ToString().ToUpper() }, { DamageTypes.Scp018.ToString().ToUpper(), DamageTypes.Scp018.ToString().ToUpper() },
{ DamageTypes.Scp207.ToString().ToUpper(), DamageTypes.Scp207.ToString().ToUpper() }, { DamageTypes.SeveredHands.ToString().ToUpper(), DamageTypes.SeveredHands.ToString().ToUpper() }, { DamageTypes.Tesla.ToString().ToUpper(), DamageTypes.Tesla.ToString().ToUpper() }, { DamageTypes.Unknown.ToString().ToUpper(), DamageTypes.Unknown.ToString().ToUpper() },
{ DamageTypes.Warhead.ToString().ToUpper(), DamageTypes.Warhead.ToString().ToUpper() }, { DamageTypes.Firearm.ToString().ToUpper(), DamageTypes.Firearm.ToString().ToUpper() } };


[Description("The command name for the unwarn command")]
public string UnwarnCommand { get; set; } = "scputils_player_unwarn";
Expand Down
2 changes: 1 addition & 1 deletion SCPUtils/Database/Database.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public void AddIp(string ip, string uid)
LiteDatabase.GetCollection<DatabaseIp>().Insert(new DatabaseIp()
{
Id = ip,
UserIds = new List<string>() { uid }
UserIds = new List<string>() { uid }
});
}
catch (Exception ex)
Expand Down
2 changes: 1 addition & 1 deletion SCPUtils/Database/DatabaseIp.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ namespace SCPUtils
public class DatabaseIp
{
public string Id { get; set; }
public List<string> UserIds { get; set; } = new List<string>();
public List<string> UserIds { get; set; } = new List<string>();
}
}
2 changes: 1 addition & 1 deletion SCPUtils/Database/Player.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class Player
public DateTime LastSeen { get; set; }
public string ColorPreference { get; set; }
public string CustomNickName { get; set; }
public bool HideBadge { get; set; }
public bool HideBadge { get; set; }
public bool MultiAccountWhiteList { get; set; }
public string BadgeName { get; set; }
public DateTime BadgeExpire { get; set; }
Expand Down
101 changes: 52 additions & 49 deletions SCPUtils/Functions/EventHandlers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using DamageTypes = Exiled.API.Enums.DamageType;
using Features = Exiled.API.Features;
using Round = Exiled.API.Features.Round;
using DamageTypes = Exiled.API.Enums.DamageType;

namespace SCPUtils
{
Expand All @@ -33,66 +33,69 @@ public EventHandlers(ScpUtils pluginInstance)
this.pluginInstance = pluginInstance;
}

internal void OnPlayerDeath(DyingEventArgs ev)
internal void OnPlayerDeath(DyingEventArgs ev)
{
if (ev.Target == null) return;
Log.Info(ev.Handler.Type);
Log.Info(ev.Handler.Damage);
Log.Info(ev.Handler.IsSuicide);
Log.Info(ev.Handler.Attacker);
if ((ev.Target.Role.Team == Team.SCP || (pluginInstance.Config.AreTutorialsSCP && ev.Target.Role.Team == Team.TUT)) && Round.IsStarted && pluginInstance.Config.EnableSCPSuicideAutoWarn && !TemporarilyDisabledWarns)
{
if (ev.Target == null) return;
if ((ev.Target.Role.Team == Team.SCP || (pluginInstance.Config.AreTutorialsSCP && ev.Target.Role.Team == Team.TUT)) && Round.IsStarted && pluginInstance.Config.EnableSCPSuicideAutoWarn && !TemporarilyDisabledWarns)
if ((DateTime.Now - lastTeslaEvent).Seconds >= pluginInstance.Config.Scp079TeslaEventWait)
{
if ((DateTime.Now - lastTeslaEvent).Seconds >= pluginInstance.Config.Scp079TeslaEventWait)
if (ev.Handler.Type == DamageTypes.Tesla || (ev.Handler.Type == DamageTypes.Unknown && ev.Handler.Damage >= 50000) || (ev.Handler.Type == DamageTypes.Explosion && ev.Killer == ev.Target))
{

if (ev.Handler.Type == DamageTypes.Tesla || (ev.Handler.Type == DamageTypes.Unknown && ev.Handler.Damage >= 50000) || (ev.Handler.Type == DamageTypes.Explosion && ev.Killer == ev.Target))
{
pluginInstance.Functions.LogWarn(ev.Target, ev.Handler.Type.ToString());
pluginInstance.Functions.OnQuitOrSuicide(ev.Target);
}
else if ((ev.Handler.Type == DamageTypes.Unknown && ev.Handler.Damage == -1f) && ev.Killer == ev.Target && pluginInstance.Config.QuitEqualsSuicide)
{
pluginInstance.Functions.LogWarn(ev.Target, "Disconnect");
pluginInstance.Functions.OnQuitOrSuicide(ev.Target);
}
pluginInstance.Functions.LogWarn(ev.Target, ev.Handler.Type.ToString());
pluginInstance.Functions.OnQuitOrSuicide(ev.Target);
}
else if ((ev.Handler.Type == DamageTypes.Unknown && ev.Handler.Damage == -1f) && pluginInstance.Config.QuitEqualsSuicide)
{
pluginInstance.Functions.LogWarn(ev.Target, "Disconnect");
pluginInstance.Functions.OnQuitOrSuicide(ev.Target);
}
}
}

if (pluginInstance.Config.NotifyLastPlayerAlive)
{

if (pluginInstance.Config.NotifyLastPlayerAlive)
List<Features.Player> team = Features.Player.Get(ev.Target.Role.Team).ToList();
if (team.Count - 1 == 1)
{
List<Features.Player> team = Features.Player.Get(ev.Target.Role.Team).ToList();
if (team.Count - 1 == 1)
if (team[0] == ev.Target)
{
team[1].ShowHint(pluginInstance.Config.LastPlayerAliveNotificationText, pluginInstance.Config.LastPlayerAliveMessageDuration);
}
else
{
if (team[0] == ev.Target)
{
team[1].ShowHint(pluginInstance.Config.LastPlayerAliveNotificationText, pluginInstance.Config.LastPlayerAliveMessageDuration);
}
else
{
team[0].ShowHint(pluginInstance.Config.LastPlayerAliveNotificationText, pluginInstance.Config.LastPlayerAliveMessageDuration);
}
team[0].ShowHint(pluginInstance.Config.LastPlayerAliveNotificationText, pluginInstance.Config.LastPlayerAliveMessageDuration);
}
}
}

if (ev.Target.IsScp || ev.Target.Role == RoleType.Tutorial && pluginInstance.Config.AreTutorialsSCP)
if (ev.Target.IsScp || ev.Target.Role == RoleType.Tutorial && pluginInstance.Config.AreTutorialsSCP)
{
if (ev.Handler.IsSuicide)
{
if (ev.Target.Nickname != ev.Killer.Nickname)
if (pluginInstance.Config.ScpDeathMessage.Show && ev.Target.Role != RoleType.Scp0492)
{
if (pluginInstance.Config.ScpDeathMessage.Show && ev.Target.Role != RoleType.Scp0492)
{
var message = pluginInstance.Config.ScpDeathMessage.Content;
message = message.Replace("%playername%", ev.Target.Nickname).Replace("%scpname%", ev.Target.Role.ToString()).Replace("%killername%", ev.Killer.Nickname).Replace("%reason%", ev.Handler.Type.ToString());
Map.Broadcast(pluginInstance.Config.ScpDeathMessage.Duration, message, pluginInstance.Config.ScpDeathMessage.Type);
}
var message = pluginInstance.Config.ScpDeathMessage.Content;
message = message.Replace("%playername%", ev.Target.Nickname).Replace("%scpname%", ev.Target.Role.ToString()).Replace("%killername%", ev.Killer.Nickname).Replace("%reason%", ev.Handler.Type.ToString());
Map.Broadcast(pluginInstance.Config.ScpDeathMessage.Duration, message, pluginInstance.Config.ScpDeathMessage.Type);
}

if (ev.Target.Nickname == ev.Killer.Nickname)
}
if (!ev.Handler.IsSuicide)
{
if (pluginInstance.Config.ScpSuicideMessage.Show)
{
if (pluginInstance.Config.ScpSuicideMessage.Show)
{
var message = pluginInstance.Config.ScpSuicideMessage.Content;
message = message.Replace("%playername%", ev.Target.Nickname).Replace("%scpname%", ev.Target.Role.ToString()).Replace("%reason%", ev.Handler.Type.ToString());
Map.Broadcast(pluginInstance.Config.ScpSuicideMessage.Duration, message, pluginInstance.Config.ScpSuicideMessage.Type);
}
var message = pluginInstance.Config.ScpSuicideMessage.Content;
message = message.Replace("%playername%", ev.Target.Nickname).Replace("%scpname%", ev.Target.Role.ToString()).Replace("%reason%", ev.Handler.Type.ToString());
Map.Broadcast(pluginInstance.Config.ScpSuicideMessage.Duration, message, pluginInstance.Config.ScpSuicideMessage.Type);
}
}
}
}
}


internal void OnRoundRestart()
Expand Down Expand Up @@ -142,8 +145,8 @@ internal void OnTeamRespawn(RespawningTeamEventArgs ev)
}

internal void OnPlayerDestroy(DestroyingEventArgs ev)
{
pluginInstance.Functions.SaveData(ev.Player);
{
pluginInstance.Functions.SaveData(ev.Player);
}

internal void On096AddTarget(AddingTargetEventArgs ev)
Expand All @@ -167,10 +170,10 @@ internal void On079TeslaEvent(InteractingTeslaEventArgs _)
}

internal void OnPlayerHurt(HurtingEventArgs ev)
{
if(ev.Attacker == null || ev.Target == null) return;
{
if (ev.Attacker == null || ev.Target == null) return;
if (pluginInstance.Config.CuffedImmunityPlayers?.ContainsKey(ev.Target.Role.Team) == true)
{
{
ev.IsAllowed = !(pluginInstance.Functions.IsTeamImmune(ev.Target, ev.Attacker) && pluginInstance.Functions.CuffedCheck(ev.Target) && pluginInstance.Functions.CheckSafeZones(ev.Target));
}
}
Expand Down
Loading

0 comments on commit ed24a4d

Please sign in to comment.