Merge /tphere into /tp, add /tppos
This commit is contained in:
parent
69529fad38
commit
66b0f3899c
3 changed files with 126 additions and 81 deletions
|
|
@ -388,6 +388,11 @@ namespace TShockAPI
|
||||||
HelpText = "Sends you to the world's spawn point."
|
HelpText = "Sends you to the world's spawn point."
|
||||||
});
|
});
|
||||||
add(new Command(Permissions.tp, TP, "tp")
|
add(new Command(Permissions.tp, TP, "tp")
|
||||||
|
{
|
||||||
|
AllowServer = false,
|
||||||
|
HelpText = "Teleports a player to another player."
|
||||||
|
});
|
||||||
|
add(new Command(Permissions.tppos, TPPos, "tppos")
|
||||||
{
|
{
|
||||||
AllowServer = false,
|
AllowServer = false,
|
||||||
HelpText = "Teleports you to another player or a coordinate."
|
HelpText = "Teleports you to another player or a coordinate."
|
||||||
|
|
@ -395,12 +400,7 @@ namespace TShockAPI
|
||||||
add(new Command(Permissions.tpallow, TPAllow, "tpallow")
|
add(new Command(Permissions.tpallow, TPAllow, "tpallow")
|
||||||
{
|
{
|
||||||
AllowServer = false,
|
AllowServer = false,
|
||||||
HelpText = "Toggles whether other people can teleport to you."
|
HelpText = "Toggles whether other people can teleport you."
|
||||||
});
|
|
||||||
add(new Command(Permissions.tphere, TPHere, "tphere")
|
|
||||||
{
|
|
||||||
AllowServer = false,
|
|
||||||
HelpText = "Teleports another player to you."
|
|
||||||
});
|
});
|
||||||
#endregion
|
#endregion
|
||||||
#region World Commands
|
#region World Commands
|
||||||
|
|
@ -1922,105 +1922,147 @@ namespace TShockAPI
|
||||||
|
|
||||||
private static void TP(CommandArgs args)
|
private static void TP(CommandArgs args)
|
||||||
{
|
{
|
||||||
if (args.Parameters.Count < 1)
|
if (args.Parameters.Count != 1 && args.Parameters.Count != 2)
|
||||||
{
|
{
|
||||||
|
if (args.Player.Group.HasPermission(Permissions.tpothers))
|
||||||
|
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /tp <player> [player 2]");
|
||||||
|
else
|
||||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /tp <player>");
|
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /tp <player>");
|
||||||
args.Player.SendErrorMessage(" /tp <x> <y>");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(args.Parameters.Count == 2)
|
if (args.Parameters.Count == 1)
|
||||||
{
|
{
|
||||||
float x, y;
|
var players = TShock.Utils.FindPlayer(args.Parameters[0]);
|
||||||
if (float.TryParse(args.Parameters[0], out x) && float.TryParse(args.Parameters[1], out y))
|
|
||||||
{
|
|
||||||
args.Player.Teleport(x, y);
|
|
||||||
args.Player.SendSuccessMessage("Teleported!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
string plStr = String.Join(" ", args.Parameters);
|
|
||||||
var players = TShock.Utils.FindPlayer(plStr);
|
|
||||||
if (players.Count == 0)
|
if (players.Count == 0)
|
||||||
{
|
args.Player.SendErrorMessage("Invalid player!");
|
||||||
args.Player.SendErrorMessage("Invalid user name.");
|
|
||||||
args.Player.SendErrorMessage("Proper syntax: /tp <player>");
|
|
||||||
args.Player.SendErrorMessage(" /tp <x> <y>");
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (players.Count > 1)
|
else if (players.Count > 1)
|
||||||
TShock.Utils.SendMultipleMatchError(args.Player, players.Select(p => p.Name));
|
TShock.Utils.SendMultipleMatchError(args.Player, players.Select(p => p.Name));
|
||||||
else if (!players[0].TPAllow && !args.Player.Group.HasPermission(Permissions.tpall))
|
else
|
||||||
{
|
{
|
||||||
var plr = players[0];
|
var target = players[0];
|
||||||
args.Player.SendErrorMessage(plr.Name + " has prevented users from teleporting to them.");
|
if (!target.TPAllow && !args.Player.Group.HasPermission(Permissions.tpoverride))
|
||||||
plr.SendInfoMessage(args.Player.Name + " attempted to teleport to you.");
|
{
|
||||||
|
args.Player.SendErrorMessage("{0} has disabled players from teleporting.", target.Name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (args.Player.Teleport(target.TPlayer.position.X, target.TPlayer.position.Y))
|
||||||
|
{
|
||||||
|
args.Player.SendSuccessMessage("Teleported to {0}.", target.Name);
|
||||||
|
if (!args.Player.Group.HasPermission(Permissions.tpsilent))
|
||||||
|
target.SendInfoMessage("{0} teleported to you.", args.Player.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var plr = players[0];
|
if (!args.Player.Group.HasPermission(Permissions.tpothers))
|
||||||
if (args.Player.Teleport(plr.TPlayer.position.X, plr.TPlayer.position.Y))
|
|
||||||
{
|
{
|
||||||
args.Player.SendSuccessMessage(string.Format("Teleported to {0}.", plr.Name));
|
args.Player.SendErrorMessage("You do not have access to this command.");
|
||||||
if (!args.Player.Group.HasPermission(Permissions.tphide))
|
|
||||||
plr.SendInfoMessage(args.Player.Name + " teleported to you.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void TPHere(CommandArgs args)
|
|
||||||
{
|
|
||||||
if (args.Parameters.Count < 1)
|
|
||||||
{
|
|
||||||
if (args.Player.Group.HasPermission(Permissions.tpallothers))
|
|
||||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /tphere <player|*>");
|
|
||||||
else
|
|
||||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /tphere <player>");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string playerName = String.Join(" ", args.Parameters);
|
var players1 = TShock.Utils.FindPlayer(args.Parameters[0]);
|
||||||
var players = TShock.Utils.FindPlayer(playerName);
|
var players2 = TShock.Utils.FindPlayer(args.Parameters[1]);
|
||||||
if (players.Count == 0)
|
|
||||||
|
if (players2.Count == 0)
|
||||||
|
args.Player.SendErrorMessage("Invalid player!");
|
||||||
|
else if (players2.Count > 1)
|
||||||
|
TShock.Utils.SendMultipleMatchError(args.Player, players2.Select(p => p.Name));
|
||||||
|
else if (players1.Count == 0)
|
||||||
{
|
{
|
||||||
if (playerName == "*")
|
if (args.Parameters[0] == "*")
|
||||||
{
|
{
|
||||||
if (!args.Player.Group.HasPermission(Permissions.tpallothers))
|
if (!args.Player.Group.HasPermission(Permissions.tpallothers))
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("You do not have permission to use this command.");
|
args.Player.SendErrorMessage("You do not have access to this command.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
args.Player.SendInfoMessage(string.Format("You teleported everyone here."));
|
|
||||||
for (int i = 0; i < Main.maxPlayers; i++)
|
var target = players2[0];
|
||||||
|
foreach (var source in TShock.Players.Where(p => p != null && p != args.Player))
|
||||||
{
|
{
|
||||||
if (Main.player[i].active && (Main.player[i] != args.TPlayer))
|
if (!target.TPAllow && !args.Player.Group.HasPermission(Permissions.tpoverride))
|
||||||
|
continue;
|
||||||
|
if (source.Teleport(target.TPlayer.position.X, target.TPlayer.position.Y))
|
||||||
{
|
{
|
||||||
if (TShock.Players[i].Teleport(args.TPlayer.position.X, args.TPlayer.position.Y))
|
if (args.Player != source)
|
||||||
TShock.Players[i].SendSuccessMessage(String.Format("You were teleported to {0}.", args.Player.Name));
|
{
|
||||||
|
if (args.Player.Group.HasPermission(Permissions.tpsilent))
|
||||||
|
source.SendSuccessMessage("You were teleported to {0}.", target.Name);
|
||||||
|
else
|
||||||
|
source.SendSuccessMessage("{0} teleported you to {1}.", args.Player.Name, target.Name);
|
||||||
|
}
|
||||||
|
if (args.Player != target)
|
||||||
|
{
|
||||||
|
if (args.Player.Group.HasPermission(Permissions.tpsilent))
|
||||||
|
target.SendInfoMessage("{0} was teleported to you.", source.Name);
|
||||||
|
if (!args.Player.Group.HasPermission(Permissions.tpsilent))
|
||||||
|
target.SendInfoMessage("{0} teleported {1} to you.", args.Player.Name, source.Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
args.Player.SendSuccessMessage("Teleported everyone to {0}.", target.Name);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
args.Player.SendErrorMessage("Invalid player!");
|
args.Player.SendErrorMessage("Invalid player!");
|
||||||
}
|
}
|
||||||
else if (players.Count > 1)
|
else if (players1.Count > 1)
|
||||||
{
|
TShock.Utils.SendMultipleMatchError(args.Player, players1.Select(p => p.Name));
|
||||||
TShock.Utils.SendMultipleMatchError(args.Player, players.Select(p => p.Name));
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var plr = players[0];
|
var source = players1[0];
|
||||||
if (plr.Teleport(args.TPlayer.position.X, args.TPlayer.position.Y))
|
if (!source.TPAllow && !args.Player.Group.HasPermission(Permissions.tpoverride))
|
||||||
{
|
{
|
||||||
plr.SendInfoMessage("You were teleported to {0}.", args.Player.Name);
|
args.Player.SendErrorMessage("{0} has disabled players from teleporting.", source.Name);
|
||||||
args.Player.SendSuccessMessage("You teleported {0} here.", plr.Name);
|
return;
|
||||||
|
}
|
||||||
|
var target = players2[0];
|
||||||
|
if (!target.TPAllow && !args.Player.Group.HasPermission(Permissions.tpoverride))
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage("{0} has disabled players from teleporting.", target.Name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
args.Player.SendSuccessMessage("Teleported {0} to {1}.", source.Name, target.Name);
|
||||||
|
if (source.Teleport(target.TPlayer.position.X, target.TPlayer.position.Y))
|
||||||
|
{
|
||||||
|
if (args.Player != source)
|
||||||
|
{
|
||||||
|
if (args.Player.Group.HasPermission(Permissions.tpsilent))
|
||||||
|
source.SendSuccessMessage("You were teleported to {0}.", target.Name);
|
||||||
|
else
|
||||||
|
source.SendSuccessMessage("{0} teleported you to {1}.", args.Player.Name, target.Name);
|
||||||
|
}
|
||||||
|
if (args.Player != target)
|
||||||
|
{
|
||||||
|
if (args.Player.Group.HasPermission(Permissions.tpsilent))
|
||||||
|
target.SendInfoMessage("{0} was teleported to you.", source.Name);
|
||||||
|
if (!args.Player.Group.HasPermission(Permissions.tpsilent))
|
||||||
|
target.SendInfoMessage("{0} teleported {1} to you.", args.Player.Name, source.Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void TPPos(CommandArgs args)
|
||||||
|
{
|
||||||
|
if (args.Parameters.Count != 2)
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /tppos <tile x> <tile y>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int x, y;
|
||||||
|
if (!int.TryParse(args.Parameters[0], out x) || !int.TryParse(args.Parameters[1], out y)
|
||||||
|
|| x < 0 || y < 0 || x >= Main.maxTilesX || y >= Main.maxTilesY)
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage("Invalid tile positions!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
args.Player.Teleport(16 * x, 16 * y);
|
||||||
|
args.Player.SendSuccessMessage("Teleported to {0}, {1}!", x, y);
|
||||||
|
}
|
||||||
|
|
||||||
private static void TPAllow(CommandArgs args)
|
private static void TPAllow(CommandArgs args)
|
||||||
{
|
{
|
||||||
|
|
@ -2136,7 +2178,7 @@ namespace TShockAPI
|
||||||
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /warp hide [name] <true/false>");
|
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: /warp hide [name] <true/false>");
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
else if (args.Parameters[0].ToLower() == "send" && args.Player.Group.HasPermission(Permissions.tphere))
|
else if (args.Parameters[0].ToLower() == "send" && args.Player.Group.HasPermission(Permissions.tpothers))
|
||||||
{
|
{
|
||||||
#region Warp send
|
#region Warp send
|
||||||
if (args.Parameters.Count < 3)
|
if (args.Parameters.Count < 3)
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ namespace TShockAPI.DB
|
||||||
string.Join(",", Permissions.ban, Permissions.whitelist, "tshock.world.time.*", Permissions.spawnboss,
|
string.Join(",", Permissions.ban, Permissions.whitelist, "tshock.world.time.*", Permissions.spawnboss,
|
||||||
Permissions.spawnmob, Permissions.managewarp, Permissions.time, Permissions.tp, Permissions.slap,
|
Permissions.spawnmob, Permissions.managewarp, Permissions.time, Permissions.tp, Permissions.slap,
|
||||||
Permissions.kill, Permissions.logs,
|
Permissions.kill, Permissions.logs,
|
||||||
Permissions.immunetokick, Permissions.tphere));
|
Permissions.immunetokick, Permissions.tpothers));
|
||||||
|
|
||||||
AddDefaultGroup("trustedadmin", "admin",
|
AddDefaultGroup("trustedadmin", "admin",
|
||||||
string.Join(",", Permissions.maintenance, "tshock.cfg.*", "tshock.world.*", Permissions.butcher, Permissions.item,
|
string.Join(",", Permissions.maintenance, "tshock.cfg.*", "tshock.world.*", Permissions.butcher, Permissions.item,
|
||||||
|
|
|
||||||
|
|
@ -207,17 +207,20 @@ namespace TShockAPI
|
||||||
[Description("User can teleport to others.")]
|
[Description("User can teleport to others.")]
|
||||||
public static readonly string tp = "tshock.tp.self";
|
public static readonly string tp = "tshock.tp.self";
|
||||||
|
|
||||||
[Description("User can teleport people to them.")]
|
[Description("User can teleport other people.")]
|
||||||
public static readonly string tphere = "tshock.tp.others";
|
public static readonly string tpothers = "tshock.tp.others";
|
||||||
|
|
||||||
[Description("Users can stop people from teleporting to them")]
|
[Description("User can teleport to tile positions.")]
|
||||||
|
public static readonly string tppos = "tshock.tp.pos";
|
||||||
|
|
||||||
|
[Description("Users can stop people from teleporting.")]
|
||||||
public static readonly string tpallow = "tshock.tp.block";
|
public static readonly string tpallow = "tshock.tp.block";
|
||||||
|
|
||||||
[Description("Users can tp to anyone")]
|
[Description("Users can override teleport blocks.")]
|
||||||
public static readonly string tpall = "tshock.tp.toall";
|
public static readonly string tpoverride = "tshock.tp.override";
|
||||||
|
|
||||||
[Description("Users can tp to people without showing a notice")]
|
[Description("Users can teleport to people without showing a notice")]
|
||||||
public static readonly string tphide = "tshock.tp.silent";
|
public static readonly string tpsilent = "tshock.tp.silent";
|
||||||
|
|
||||||
[Description("User can use /home.")]
|
[Description("User can use /home.")]
|
||||||
public static readonly string home = "tshock.tp.home";
|
public static readonly string home = "tshock.tp.home";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue