Skip to content

Commit

Permalink
Added some sanity checks for the warps data.
Browse files Browse the repository at this point in the history
  • Loading branch information
cartman-2000 committed Nov 24, 2015
1 parent b19a3b0 commit 736cff5
Show file tree
Hide file tree
Showing 10 changed files with 151 additions and 172 deletions.
38 changes: 15 additions & 23 deletions CommandDelWarp.cs
Expand Up @@ -41,34 +41,26 @@ public string Syntax

public void Execute(IRocketPlayer caller, string[] command)
{
if (Warps.Instance.Configuration.Instance.WarpsEnable)
if (command.Length == 0 || command.Length > 1)
{
if (command.Length == 0 || command.Length > 1)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("delwarp_help"));
return;
}
UnturnedChat.Say(caller, Warps.Instance.Translate("delwarp_help"));
return;
}

Warp warpData = Warps.warpsData.GetWarp(command[0]);
if (warpData == null)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("delwarp_not_found"));
return;
}
else
{
if (Warps.CheckUconomy())
if (Warps.Instance.Configuration.Instance.DelWarpChargeEnable && Warps.Instance.Configuration.Instance.DelWarpCost > 0.00m)
if (!Warps.TryCharge(caller, Warps.Instance.Configuration.Instance.DelWarpCost))
return;
Warps.warpsData.RemoveWarp(command[0]);
UnturnedChat.Say(caller, Warps.Instance.Translate("delwarp_removed"));
return;
}
Warp warpData = Warps.warpsData.GetWarp(command[0]);
if (warpData == null)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("delwarp_not_found"));
return;
}
else
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_disabled"));
if (Warps.CheckUconomy())
if (Warps.Instance.Configuration.Instance.DelWarpChargeEnable && Warps.Instance.Configuration.Instance.DelWarpCost > 0.00m)
if (!Warps.TryCharge(caller, Warps.Instance.Configuration.Instance.DelWarpCost))
return;
Warps.warpsData.RemoveWarp(command[0]);
UnturnedChat.Say(caller, Warps.Instance.Translate("delwarp_removed"));
return;
}
}
Expand Down
64 changes: 28 additions & 36 deletions CommandSetWarp.cs
Expand Up @@ -42,48 +42,40 @@ public string Syntax

public void Execute(IRocketPlayer caller, string[] command)
{
if (Warps.Instance.Configuration.Instance.WarpsEnable)
if (command.Length == 0 || command.Length > 1)
{
if (command.Length == 0 || command.Length > 1)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("setwarp_help"));
return;
}
string warpName = command[0].Trim();
if (warpName == string.Empty)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("setwarp_not_set"));
return;
}
UnturnedChat.Say(caller, Warps.Instance.Translate("setwarp_help"));
return;
}
string warpName = command[0].Sanitze().Trim();
if (warpName == string.Empty)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("setwarp_not_set"));
return;
}

Warp warpData = new Warp();
UnturnedPlayer unturnedCaller = (UnturnedPlayer)caller;
warpData.Name = warpName;
warpData.SetterCharName = unturnedCaller.CharacterName;
warpData.SetterSteamName = unturnedCaller.SteamName;
warpData.SetterCSteamID = unturnedCaller.CSteamID;
warpData.World = Warps.MapName;
warpData.Rotation = unturnedCaller.Rotation;
warpData.Location = unturnedCaller.Position;
Warp warpData = new Warp();
UnturnedPlayer unturnedCaller = (UnturnedPlayer)caller;
warpData.Name = warpName;
warpData.SetterCharName = unturnedCaller.CharacterName.Sanitze();
warpData.SetterSteamName = unturnedCaller.SteamName.Sanitze();
warpData.SetterCSteamID = unturnedCaller.CSteamID;
warpData.World = Warps.MapName;
warpData.Rotation = unturnedCaller.Rotation;
warpData.Location = unturnedCaller.Position;

if (Warps.CheckUconomy())
if (Warps.Instance.Configuration.Instance.SetWarpChargeEnable && Warps.Instance.Configuration.Instance.SetWarpCost > 0.00m)
if (!Warps.TryCharge(caller, Warps.Instance.Configuration.Instance.SetWarpCost))
return;
if (Warps.warpsData.SetWarp(warpData))
{
UnturnedChat.Say(caller, Warps.Instance.Translate("setwarp_set"));
return;
}
else
{
UnturnedChat.Say(caller, Warps.Instance.Translate("setwarp_not_set"));
return;
}
if (Warps.CheckUconomy())
if (Warps.Instance.Configuration.Instance.SetWarpChargeEnable && Warps.Instance.Configuration.Instance.SetWarpCost > 0.00m)
if (!Warps.TryCharge(caller, Warps.Instance.Configuration.Instance.SetWarpCost))
return;
if (Warps.warpsData.SetWarp(warpData))
{
UnturnedChat.Say(caller, Warps.Instance.Translate("setwarp_set"));
return;
}
else
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_disabled"));
UnturnedChat.Say(caller, Warps.Instance.Translate("setwarp_not_set"));
return;
}
}
Expand Down
104 changes: 48 additions & 56 deletions CommandWarp.cs
Expand Up @@ -46,75 +46,67 @@ public string Syntax

public void Execute(IRocketPlayer caller, string[] command)
{
if (Warps.Instance.Configuration.Instance.WarpsEnable)
if (command.Length == 0 || command.Length > 2)
{
if (command.Length == 0 || command.Length > 2)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_help"));
return;
}
Warp warp = Warps.warpsData.GetWarp(command[0]);
UnturnedPlayer unturnedTarget = command.GetUnturnedPlayerParameter(1);
if (warp != null)
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_help"));
return;
}
Warp warp = Warps.warpsData.GetWarp(command[0]);
UnturnedPlayer unturnedTarget = command.GetUnturnedPlayerParameter(1);
if (warp != null)
{
if (unturnedTarget != null && (caller.HasPermission("warp.other") || SteamAdminlist.checkAdmin(caller is ConsolePlayer ? CSteamID.Nil : (CSteamID)ulong.Parse(caller.Id))))
{
if (unturnedTarget != null && (caller.HasPermission("warp.other") || SteamAdminlist.checkAdmin(caller is ConsolePlayer ? CSteamID.Nil : (CSteamID)ulong.Parse(caller.Id))))
{
if (unturnedTarget.Stance == EPlayerStance.DRIVING || unturnedTarget.Stance == EPlayerStance.SITTING)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_cant_warp_in_car"));
return;
}
if (Warps.CheckUconomy())
if (Warps.Instance.Configuration.Instance.WarpOtherChargeEnable && Warps.Instance.Configuration.Instance.WarpOtherCost > 0.00m)
if (!Warps.TryCharge(caller, Warps.Instance.Configuration.Instance.WarpOtherCost))
return;
unturnedTarget.Teleport(warp.Location, warp.Rotation);
UnturnedChat.Say(caller, Warps.Instance.Translate("admin_warp", unturnedTarget.CharacterName, warp.Name));
Logger.Log(Warps.Instance.Translate("admin_warp_log", caller.DisplayName, caller.Id, unturnedTarget.CharacterName, warp.Name));
UnturnedChat.Say(unturnedTarget, Warps.Instance.Translate("player_warp", warp.Name));
return;
}
else if (unturnedTarget != null)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_other_not_allowed"));
return;
}
if (unturnedTarget == null && command.Length == 2)
if (unturnedTarget.Stance == EPlayerStance.DRIVING || unturnedTarget.Stance == EPlayerStance.SITTING)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_cant_find_player"));
return;
}
else if (caller is ConsolePlayer)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_console_no_player"));
return;
}
else
{
UnturnedPlayer unturnedCaller = (UnturnedPlayer)caller;
if (unturnedCaller.Stance == EPlayerStance.DRIVING || unturnedCaller.Stance == EPlayerStance.SITTING)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_cant_warp_in_car"));
return;
}
if (Warps.CheckUconomy())
if (Warps.Instance.Configuration.Instance.WarpCargeEnable && Warps.Instance.Configuration.Instance.WarpCost > 0.00m)
if (!Warps.TryCharge(caller, Warps.Instance.Configuration.Instance.WarpCost))
return;
unturnedCaller.Teleport(warp.Location, warp.Rotation);
UnturnedChat.Say(caller, Warps.Instance.Translate("player_warp", warp.Name));
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_cant_warp_in_car"));
return;
}
if (Warps.CheckUconomy())
if (Warps.Instance.Configuration.Instance.WarpOtherChargeEnable && Warps.Instance.Configuration.Instance.WarpOtherCost > 0.00m)
if (!Warps.TryCharge(caller, Warps.Instance.Configuration.Instance.WarpOtherCost))
return;
unturnedTarget.Teleport(warp.Location, warp.Rotation);
UnturnedChat.Say(caller, Warps.Instance.Translate("admin_warp", unturnedTarget.CharacterName, warp.Name));
Logger.Log(Warps.Instance.Translate("admin_warp_log", caller.DisplayName, caller.Id, unturnedTarget.CharacterName, warp.Name));
UnturnedChat.Say(unturnedTarget, Warps.Instance.Translate("player_warp", warp.Name));
return;
}
else if (unturnedTarget != null)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_other_not_allowed"));
return;
}
if (unturnedTarget == null && command.Length == 2)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_cant_find_player"));
return;
}
else if (caller is ConsolePlayer)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_console_no_player"));
return;
}
else
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_cant_find_warp", command[0]));
UnturnedPlayer unturnedCaller = (UnturnedPlayer)caller;
if (unturnedCaller.Stance == EPlayerStance.DRIVING || unturnedCaller.Stance == EPlayerStance.SITTING)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_cant_warp_in_car"));
return;
}
if (Warps.CheckUconomy())
if (Warps.Instance.Configuration.Instance.WarpCargeEnable && Warps.Instance.Configuration.Instance.WarpCost > 0.00m)
if (!Warps.TryCharge(caller, Warps.Instance.Configuration.Instance.WarpCost))
return;
unturnedCaller.Teleport(warp.Location, warp.Rotation);
UnturnedChat.Say(caller, Warps.Instance.Translate("player_warp", warp.Name));
return;
}
}
else
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_disabled"));
UnturnedChat.Say(caller, Warps.Instance.Translate("warp_cant_find_warp", command[0]));
return;
}
}
Expand Down
32 changes: 12 additions & 20 deletions CommandWarps.cs
Expand Up @@ -43,31 +43,23 @@ public string Syntax

public void Execute(IRocketPlayer caller, string[] command)
{
if (Warps.Instance.Configuration.Instance.WarpsEnable)
string name = command.GetStringParameter(0);
if (name == "help")
{
string name = command.GetStringParameter(0);
if (name == "help")
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_help"));
return;
}
List<Warp> WarpsList = Warps.warpsData.SearchWarps(name);
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_help"));
return;
}
List<Warp> WarpsList = Warps.warpsData.SearchWarps(name);

if (WarpsList.Count == 0)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_none_found"));
return;
}
else
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_list_header", WarpsList.Count));
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_list", string.Join(", ", WarpsList.Select(warp => warp.Name).ToArray())));
}
if (WarpsList.Count == 0)
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_none_found"));
return;
}
else
{
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_disabled"));
return;
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_list_header", WarpsList.Count));
UnturnedChat.Say(caller, Warps.Instance.Translate("warps_list", string.Join(", ", WarpsList.Select(warp => warp.Name).ToArray())));
}
}
}
Expand Down
15 changes: 15 additions & 0 deletions Extensions.cs
@@ -0,0 +1,15 @@
using System.Text.RegularExpressions;

namespace Warps
{
public static class Extensions
{
// Sanitize strings with binary control characters 0x00-0x1f.
public static string Sanitze(this string value)
{
if (value == null)
return null;
return Regex.Replace(value, @"([\u0000-\u001F])+", " ");
}
}
}
4 changes: 2 additions & 2 deletions Properties/AssemblyInfo.cs
Expand Up @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.1.2.0")]
[assembly: AssemblyFileVersion("1.1.2.0")]
[assembly: AssemblyVersion("1.1.3.0")]
[assembly: AssemblyFileVersion("1.1.3.0")]
20 changes: 18 additions & 2 deletions WarpDataManager.cs
Expand Up @@ -23,11 +23,27 @@ private void Load()
{
try
{
// sanity checks for warps data.
if (warpData.Name == null || warpData.Name == string.Empty)
{
Logger.LogWarning("Error: No warp name on record, Skipping!");
continue;
}
if (warpData.SetterCharName == null)
warpData.SetterCharName = "";
if (warpData.SetterSteamName == null)
warpData.SetterSteamName = "";
if (warpData.World == null || warpData.World == string.Empty)
{
Logger.LogWarning("Error: No world set to record, Skipping!");
continue;
}

WarpsData.Add(warpData.World.ToLower() + "." + warpData.Name.ToLower(), warpData);
}
catch
catch (Exception ex)
{
Logger.LogError("Error: Unable to load a warp record.");
Logger.LogException(ex, "Error: Unable to load a warp record.");
}
}
}
Expand Down
6 changes: 1 addition & 5 deletions Warps.cs
Expand Up @@ -18,10 +18,7 @@ public class Warps : RocketPlugin<WarpsConfig>
protected override void Load()
{
Instance = this;
if (Instance.Configuration.Instance.WarpsEnable)
{
warpsData = new WarpDataManager();
}
warpsData = new WarpDataManager();
Instance.Configuration.Save();
}

Expand Down Expand Up @@ -92,7 +89,6 @@ public override TranslationList DefaultTranslations
{ "delwarp_help", CommandDelWarp.syntax + " - " + CommandDelWarp.help },
{ "delwarpall_help", CommandDelWarpAll.syntax + " - " + CommandDelWarpAll.help },
{ "warps_help", CommandWarps.syntax + " - " + CommandWarps.help },
{ "warps_disabled", "Error: Warps arn't enabled on this server." },
{ "admin_warp", "You have teleported player: {0}, to warp: {1}." },
{ "admin_warp_log", "Admin: {0}({1}), has teleported player: {2}, to warp:{3}" },
{ "player_warp", "You have been teleported to warp: {0}." },
Expand Down
1 change: 1 addition & 0 deletions Warps.csproj
Expand Up @@ -75,6 +75,7 @@
<Compile Include="CommandWarp.cs" />
<Compile Include="CommandWarps.cs" />
<Compile Include="CommandDelWarpAll.cs" />
<Compile Include="Extensions.cs" />
<Compile Include="Warp.cs" />
<Compile Include="WarpDataManager.cs" />
<Compile Include="Warps.cs" />
Expand Down

0 comments on commit 736cff5

Please sign in to comment.