Skip to content

Commit

Permalink
Added multiple trails per player
Browse files Browse the repository at this point in the history
  • Loading branch information
SDPlugins committed Jun 11, 2017
1 parent 50eecb8 commit 23620ce
Show file tree
Hide file tree
Showing 7 changed files with 180 additions and 134 deletions.
15 changes: 8 additions & 7 deletions Database.cs
Expand Up @@ -7,6 +7,7 @@
using SDG.Unturned;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Trails
{
Expand All @@ -33,14 +34,14 @@ private MySqlConnection createConnection ()
}
return connection;
}
public void addToSQL (UnturnedPlayer player, ushort trail)
public void addToSQL (UnturnedPlayer player, List <ushort> trails)
{
if (TableLoaded)
{
MySqlConnection connection = createConnection ();
MySqlCommand command = connection.CreateCommand ();
command.Parameters.AddWithValue ("@SteamID", player.CSteamID);
command.Parameters.AddWithValue ("@Trail", trail);
command.Parameters.AddWithValue ("@Trail", String.Join (",", trails.Select (t => t.ToString ()).ToArray ()));
command.CommandText = "SELECT * FROM `"+ Trails.Instance.Configuration.Instance.tablename +"` WHERE SteamID=@SteamID;";
connection.Open ();
object result = command.ExecuteScalar ();
Expand All @@ -52,7 +53,7 @@ public void addToSQL (UnturnedPlayer player, ushort trail)
connection.Close ();
}
}
public void remove (UnturnedPlayer player)
public void removeAll (UnturnedPlayer player)
{
if (TableLoaded)
{
Expand All @@ -65,7 +66,7 @@ public void remove (UnturnedPlayer player)
connection.Close ();
}
}
public string getTrail (UnturnedPlayer player)
public List <ushort> getTrails (UnturnedPlayer player)
{
if (TableLoaded)
{
Expand All @@ -77,9 +78,9 @@ public string getTrail (UnturnedPlayer player)
object result = command.ExecuteScalar ();
connection.Close ();
if (result != null)
return result.ToString ();
return result.ToString ().Split (',').Select (t => ushort.Parse (t)).ToList ();
}
return "false";
return null;
}
#region Check Schemas

Expand All @@ -98,7 +99,7 @@ public void CheckTrailsTable ()
if (test == null)
{
Logger.Log ("Creating " + Trails.Instance.Configuration.Instance.tablename + " Table...");
command.CommandText = "CREATE TABLE `" + Trails.Instance.Configuration.Instance.tablename + "` (`id` int(11) NOT NULL AUTO_INCREMENT,`SteamID` VARCHAR(18) NOT NULL,`Trail` int(32) NOT NULL,PRIMARY KEY (`id`));";
command.CommandText = "CREATE TABLE `" + Trails.Instance.Configuration.Instance.tablename + "` (`id` int(11) NOT NULL AUTO_INCREMENT,`SteamID` VARCHAR(18) NOT NULL,`Trail` int(64) NOT NULL,PRIMARY KEY (`id`));";
command.ExecuteNonQuery ();
Logger.Log ("" + Trails.Instance.Configuration.Instance.tablename + " Table Successfully created...");
}
Expand Down
131 changes: 86 additions & 45 deletions TrailCommand.cs
Expand Up @@ -56,75 +56,116 @@ public void Execute (IRocketPlayer caller, string [] command)
UnturnedPlayer player = (UnturnedPlayer)caller;
if (command.Length > 0)
{
ushort id;
if (ushort.TryParse (command [0], out id))
var trail = Trails.Instance.Configuration.Instance.customTrails.Where (t => t.name.ToLower ().Contains (command [1].ToLower ())).FirstOrDefault ();

if (trail == null)
{
if (player.HasPermission ("trail.custom"))
{
Trails.Instance.database.addToSQL (player, id);
if (Trails.trails.ContainsKey (player.CSteamID))
Trails.trails [player.CSteamID] = id;
else
Trails.trails.Add (player.CSteamID, id);
UnturnedChat.Say (player, Trails.Instance.Translate ("set_trail", id.ToString ()), Color.green);
}
else
UnturnedChat.Say (player, Trails.Instance.Translate ("no_permission_custom"), Color.red);
UnturnedChat.Say (player, Trails.Instance.Translate ("trail_not_found", command [1]), Color.red);
return;
}
else
{

var trail = Trails.Instance.Configuration.Instance.customTrails.Where (t => t.name.ToLower ().Contains (command [0].ToLower ())).FirstOrDefault ();

if (command.Length == 2)
{
if (player.HasPermission ("trail.player.force"))
switch (command [0].ToLower ())
{
case "add":
case "a":
if (command.Length == 3)
{
UnturnedPlayer setPlayer = UnturnedPlayer.FromName (command [1]);
if (setPlayer != null)
if (player.HasPermission ("trail.player.force"))
{
Trails.Instance.database.addToSQL (setPlayer, trail.id);
if (Trails.trails.ContainsKey (setPlayer.CSteamID))
Trails.trails [setPlayer.CSteamID] = trail.id;
else
Trails.trails.Add (setPlayer.CSteamID, trail.id);
UnturnedPlayer setPlayer = UnturnedPlayer.FromName (command [2]);
if (setPlayer != null)
{
if (Trails.trails.ContainsKey ((ulong)setPlayer.CSteamID))
Trails.trails [(ulong)setPlayer.CSteamID].Add (trail.id);
else
Trails.trails.Add ((ulong)setPlayer.CSteamID, new List<ushort> () { trail.id });

UnturnedChat.Say (setPlayer, Trails.Instance.Translate ("set_trail_by_admin", trail.name, player.DisplayName), Color.green);
UnturnedChat.Say (player, Trails.Instance.Translate ("set_trail_admin", setPlayer.DisplayName, trail.name), Color.green);
Trails.Instance.database.addToSQL (setPlayer, Trails.trails [(ulong)setPlayer.CSteamID]);
UnturnedChat.Say (setPlayer, Trails.Instance.Translate ("set_trail_by_admin", trail.name, player.DisplayName), Color.green);
UnturnedChat.Say (player, Trails.Instance.Translate ("set_trail_admin", setPlayer.DisplayName, trail.name), Color.green);
}
else
UnturnedChat.Say (player, Trails.Instance.Translate ("player_not_found", command [1]), Color.red);
}
else
UnturnedChat.Say (player, Trails.Instance.Translate ("player_not_found", command [1]), Color.red);
UnturnedChat.Say (player, Trails.Instance.Translate ("no_force_permission"), Color.red);
}
else
UnturnedChat.Say (player, Trails.Instance.Translate ("no_force_permission"), Color.red);
}
else
{
if (trail != null)
{
if (player.HasPermission (trail.permission.ToLower ()))
{
Trails.Instance.database.addToSQL (player, trail.id);
if (Trails.trails.ContainsKey (player.CSteamID))
Trails.trails [player.CSteamID] = trail.id;
if (Trails.trails.ContainsKey ((ulong)player.CSteamID))
Trails.trails [(ulong)player.CSteamID].Add (trail.id);
else
Trails.trails.Add (player.CSteamID, trail.id);
Trails.trails.Add ((ulong)player.CSteamID, new List<ushort> () { trail.id });

Trails.Instance.database.addToSQL (player, Trails.trails [(ulong)player.CSteamID]);
UnturnedChat.Say (player, Trails.Instance.Translate ("set_trail", trail.name), Color.green);
}
else
UnturnedChat.Say (player, Trails.Instance.Translate ("no_permission", trail.name), Color.red);
}
break;
case "remove":
case "r":
if (command.Length == 2)
{
if (command [1] == "*")
{
if (Trails.trails.ContainsKey ((ulong)player.CSteamID))
Trails.trails.Remove ((ulong)player.CSteamID);

Trails.Instance.database.removeAll (player);
UnturnedChat.Say (player, Trails.Instance.Translate ("removed_all_trails"), Color.green);
}
else
{
if (Trails.trails.ContainsKey ((ulong)player.CSteamID))
if (Trails.trails [(ulong)player.CSteamID].Contains (trail.id))
Trails.trails.Remove (trail.id);

if (Trails.trails [(ulong)player.CSteamID].Count > 0)
Trails.Instance.database.addToSQL (player, Trails.trails [(ulong)player.CSteamID]);
else
Trails.Instance.database.removeAll (player);
UnturnedChat.Say (player, Trails.Instance.Translate ("removed_trail"), Color.green);
}
}
break;
case "help":
case "h":
if (command.Length >= 2)
{
switch (command [1].ToLower ())
{
case "add":
case "a":
UnturnedChat.Say (player, "/trail add <trail name> [player name]", Color.green);
break;
case "remove":
case "r":
UnturnedChat.Say (player, "/trail remove <* | trail name>", Color.green);
break;
default:
UnturnedChat.Say (player, "Invalid Format: /trail help <add | remove>", Color.red);
break;
}
}
else
UnturnedChat.Say (player, Trails.Instance.Translate ("trail_not_found", command [0]), Color.red);
}
UnturnedChat.Say (player, "Invalid Format: /trail help <add | remove>", Color.red);
break;
default:
UnturnedChat.Say (player, "Invalid Format: /trail <add | remove | help>", Color.red);
break;
}
}
else
{
Trails.Instance.database.remove (player);
if (Trails.trails.ContainsKey (player.CSteamID))
Trails.trails.Remove (player.CSteamID);
UnturnedChat.Say (player, Trails.Instance.Translate ("removed_trail"), Color.green);
if (Trails.trails.ContainsKey ((ulong)player.CSteamID))
Trails.trails.Remove ((ulong)player.CSteamID);

Trails.Instance.database.removeAll (player);
UnturnedChat.Say (player, Trails.Instance.Translate ("removed_all_trails"), Color.green);
}
}

Expand Down

0 comments on commit 23620ce

Please sign in to comment.