Fixed false bans when picking up liquid.
Added 3 permissions (canlava, canwater, logs) 'canlava' and 'canwater' are in the default group. Without them you cannot manipulate water/lava. Users with the 'logs' permission get sent information. For example when someone uses a command they don't have access to.
This commit is contained in:
parent
55000158ee
commit
0dc39e15f5
5 changed files with 92 additions and 50 deletions
|
|
@ -141,20 +141,20 @@ namespace TShockAPI
|
|||
{
|
||||
if (Main.player[i].team == Main.player[args.PlayerID].team)
|
||||
{
|
||||
Tools.SendMessage(i, msg, new float[] { (float)Main.teamColor[playerTeam].R, (float)Main.teamColor[playerTeam].G, (float)Main.teamColor[playerTeam].B });
|
||||
Tools.SendMessage(i, msg, Main.teamColor[playerTeam].R, Main.teamColor[playerTeam].G, Main.teamColor[playerTeam].B);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Tools.SendMessage(args.PlayerID, "You are not in a party!", new float[] { 255f, 240f, 20f });
|
||||
Tools.SendMessage(args.PlayerID, "You are not in a party!", 255f, 240f, 20f);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ThirdPerson(CommandArgs args)
|
||||
{
|
||||
string msg = args.Message.Remove(0, 3);
|
||||
Tools.Broadcast("*" + Tools.FindPlayer(args.PlayerID) + " " + msg, new float[] { 205, 133, 63 });
|
||||
Tools.Broadcast("*" + Tools.FindPlayer(args.PlayerID) + " " + msg, 205, 133, 63);
|
||||
}
|
||||
|
||||
public static void Playing(CommandArgs args)
|
||||
|
|
@ -171,23 +171,23 @@ namespace TShockAPI
|
|||
lineOne += "BanCheater : " + ConfigurationManager.banCheater + ", ";
|
||||
lineOne += "KickGriefer : " + ConfigurationManager.kickGriefer + ", ";
|
||||
lineOne += "BanGriefer : " + ConfigurationManager.banGriefer;
|
||||
Tools.SendMessage(ply, lineOne, new[] { 255f, 255f, 0f });
|
||||
Tools.SendMessage(ply, lineOne, 255f, 255f, 0f);
|
||||
string lineTwo = "";
|
||||
lineTwo += "BanTnt : " + ConfigurationManager.banTnt + ", ";
|
||||
lineTwo += "KickTnt : " + ConfigurationManager.kickTnt + ", ";
|
||||
lineTwo += "BanBoom : " + ConfigurationManager.banBoom + ", ";
|
||||
lineTwo += "KickBoom : " + ConfigurationManager.kickBoom;
|
||||
Tools.SendMessage(ply, lineTwo, new[] { 255f, 255f, 0f });
|
||||
Tools.SendMessage(ply, lineTwo, 255f, 255f, 0f);
|
||||
string lineThree = "";
|
||||
lineThree += "InvMultiplier : " + ConfigurationManager.invasionMultiplier + ", ";
|
||||
lineThree += "ProtectS : " + ConfigurationManager.spawnProtect + ", ";
|
||||
lineThree += "ProtectR : " + ConfigurationManager.spawnProtectRadius + ", ";
|
||||
lineThree += "DMS : " + ConfigurationManager.defaultMaxSpawns + ", ";
|
||||
lineThree += "SpawnRate: " + ConfigurationManager.defaultSpawnRate;
|
||||
Tools.SendMessage(ply, lineThree, new[] { 255f, 255f, 0f });
|
||||
Tools.SendMessage(ply, lineThree, 255f, 255f, 0f);
|
||||
string lineFour = "";
|
||||
lineFour += "MaxSlots : " + ConfigurationManager.maxSlots + ", ";
|
||||
Tools.SendMessage(ply, lineFour, new[] { 255f, 255f, 0f });
|
||||
Tools.SendMessage(ply, lineFour, 255f, 255f, 0f);
|
||||
}
|
||||
|
||||
public static void Kick(CommandArgs args)
|
||||
|
|
@ -210,20 +210,20 @@ namespace TShockAPI
|
|||
{
|
||||
int player = Tools.FindPlayer(plStr);
|
||||
if (player == -1)
|
||||
Tools.SendMessage(ply, "Invalid player!", new[] { 255f, 0f, 0f });
|
||||
Tools.SendMessage(ply, "Invalid player!", 255f, 0f, 0f);
|
||||
else if (player == -2)
|
||||
Tools.SendMessage(ply, "More than one player matched!", new[] { 255f, 0f, 0f });
|
||||
Tools.SendMessage(ply, "More than one player matched!", 255f, 0f, 0f );
|
||||
else
|
||||
{
|
||||
if (!Tools.Kick(player, reason.Length != 0 ? reason : "Misbehaviour."))
|
||||
{
|
||||
Tools.SendMessage(ply, "You can't kick another admin!", new[] { 255f, 0f, 0f });
|
||||
Tools.SendMessage(ply, "You can't kick another admin!", 255f, 0f, 0f );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
Tools.SendMessage(ply, "Invalid syntax! Proper syntax: /kick <player> [reason]",
|
||||
new[] { 255f, 0f, 0f });
|
||||
255f, 0f, 0f );
|
||||
}
|
||||
|
||||
public static void BanIP(CommandArgs args)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ namespace TShockAPI
|
|||
|
||||
public static string saveDir = "./tshock/";
|
||||
|
||||
public static Version VersionNum = new Version(2, 0, 0, 2);
|
||||
public static Version VersionNum = new Version(2, 0, 0, 4);
|
||||
|
||||
public static string VersionCodename = "UnrealIRCd ftw (irc.shankshock.com #terraria)";
|
||||
|
||||
|
|
@ -134,9 +134,10 @@ namespace TShockAPI
|
|||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
Console.WriteLine("TShock Version " + Version.Major + "." + Version.Minor + "." + Version.Build + "." +
|
||||
Version.Revision + " (" + VersionCodename + ") now running.");
|
||||
string version = "TShock Version " + Version + " (" + VersionCodename + ") now running.";
|
||||
Console.WriteLine(version);
|
||||
Log.Initialize(FileTools.SaveDir + "log.txt", LogLevel.All, false);
|
||||
Log.Info(version);
|
||||
Log.Info("Starting...");
|
||||
|
||||
GameHooks.Initialize += OnPreInit;
|
||||
|
|
@ -445,41 +446,48 @@ namespace TShockAPI
|
|||
int tileX = Math.Abs(x);
|
||||
int tileY = Math.Abs(y);
|
||||
|
||||
int lavacount = 0;
|
||||
int watercount = 0;
|
||||
|
||||
bool bucket = false;
|
||||
for (int i = 0; i < 44; i++)
|
||||
{
|
||||
if (Main.player[e.Msg.whoAmI].inventory[i].name == "Lava Bucket")
|
||||
lavacount++;
|
||||
else if (Main.player[e.Msg.whoAmI].inventory[i].name == "Water Bucket")
|
||||
watercount++;
|
||||
if (Main.player[e.Msg.whoAmI].inventory[i].type >= 205 && Main.player[e.Msg.whoAmI].inventory[i].type <= 207)
|
||||
{
|
||||
bucket = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (lava && lavacount <= 0)
|
||||
if (lava && !players[e.Msg.whoAmI].group.HasPermission("canlava"))
|
||||
{
|
||||
Log.Debug(string.Format("Liquid(PlyXY:{0}_{1}, TileXY:{2}_{3}, Result:{4}_{5})",
|
||||
plyX, plyY,
|
||||
tileX, tileY,
|
||||
Math.Abs(plyX - tileX), Math.Abs(plyY - tileY)
|
||||
));
|
||||
return Tools.HandleGriefer(e.Msg.whoAmI, "Placing lava they didn't have."); ;
|
||||
Tools.SendMessage(e.Msg.whoAmI, "You do not have permission to use lava", Color.Red);
|
||||
Tools.SendLogs(Main.player[e.Msg.whoAmI].name + " tried using lava", Color.Red);
|
||||
|
||||
return true;
|
||||
}
|
||||
if (!lava && watercount <= 0)
|
||||
if (!lava && !players[e.Msg.whoAmI].group.HasPermission("canwater"))
|
||||
{
|
||||
Log.Debug(string.Format("Liquid(PlyXY:{0}_{1}, TileXY:{2}_{3}, Result:{4}_{5})",
|
||||
Tools.SendMessage(e.Msg.whoAmI, "You do not have permission to use water", Color.Red);
|
||||
Tools.SendLogs(Main.player[e.Msg.whoAmI].name + " tried using water", Color.Red);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!bucket)
|
||||
{
|
||||
Log.Debug(string.Format("{0}(PlyXY:{1}_{2}, TileXY:{3}_{4}, Result:{5}_{6}, Amount:{7})",
|
||||
lava ? "Lava" : "Water",
|
||||
plyX, plyY,
|
||||
tileX, tileY,
|
||||
Math.Abs(plyX - tileX), Math.Abs(plyY - tileY)
|
||||
Math.Abs(plyX - tileX), Math.Abs(plyY - tileY),
|
||||
liquid
|
||||
));
|
||||
return Tools.HandleGriefer(e.Msg.whoAmI, "Placing water they didn't have.");
|
||||
return Tools.HandleGriefer(e.Msg.whoAmI, "Manipulating liquid without bucket."); ;
|
||||
}
|
||||
if ((Math.Abs(plyX - tileX) > 6) || (Math.Abs(plyY - tileY) > 6))
|
||||
{
|
||||
Log.Debug(string.Format("Liquid(PlyXY:{0}_{1}, TileXY:{2}_{3}, Result:{4}_{5})",
|
||||
Log.Debug(string.Format("Liquid(PlyXY:{0}_{1}, TileXY:{2}_{3}, Result:{4}_{5}, Amount:{6})",
|
||||
plyX, plyY,
|
||||
tileX, tileY,
|
||||
Math.Abs(plyX - tileX), Math.Abs(plyY - tileY)
|
||||
Math.Abs(plyX - tileX), Math.Abs(plyY - tileY),
|
||||
liquid
|
||||
));
|
||||
return Tools.HandleGriefer(e.Msg.whoAmI, "Placing impossible to place liquid."); ;
|
||||
}
|
||||
|
|
@ -521,10 +529,8 @@ namespace TShockAPI
|
|||
private void OnGreetPlayer(int who, HandledEventArgs e)
|
||||
{
|
||||
if (Main.netMode != 2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
int plr = who; //legacy support
|
||||
|
||||
Log.Info(Tools.FindPlayer(who) + " (" + Tools.GetPlayerIP(who) + ") from '" + players[who].group.GetName() + "' group joined.");
|
||||
Tools.ShowMOTD(who);
|
||||
if (HackedHealth(who))
|
||||
|
|
@ -571,15 +577,14 @@ namespace TShockAPI
|
|||
|
||||
if (cmd == null)
|
||||
{
|
||||
Tools.SendMessage(ply, "That command does not exist, try /help", new float[] { 255, 0, 0 });
|
||||
Tools.SendMessage(ply, "That command does not exist, try /help", Color.Red);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!cmd.Run(text, players[ply]))
|
||||
{
|
||||
Log.Info(Tools.FindPlayer(ply) + " tried to execute " + cmd.Name() +
|
||||
" that s/he did not have access to!");
|
||||
Tools.SendMessage(ply, "You do not have access to that command.", new float[] { 255, 0, 0 });
|
||||
Tools.SendLogs(Tools.FindPlayer(ply) + " tried to execute " + cmd.Name(), Color.Red);
|
||||
Tools.SendMessage(ply, "You do not have access to that command.", Color.Red);
|
||||
}
|
||||
}
|
||||
e.Handled = true;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Terraria;
|
||||
|
||||
namespace TShockAPI
|
||||
|
|
@ -85,24 +86,60 @@ namespace TShockAPI
|
|||
Log.Info("Broadcast: " + msg);
|
||||
}
|
||||
|
||||
public static void Broadcast(string msg, float[] color)
|
||||
public static void Broadcast(string msg, float red, float green, float blue)
|
||||
{
|
||||
for (int i = 0; i < Main.player.Length; i++)
|
||||
{
|
||||
SendMessage(i, msg, color);
|
||||
SendMessage(i, msg, red, green, blue);
|
||||
}
|
||||
Log.Info("Broadcast: " + msg);
|
||||
}
|
||||
|
||||
[Obsolete("STOP USING THIS")]
|
||||
public static void SendMessage(int ply, string msg, float[] colors)
|
||||
{
|
||||
SendMessage(ply, msg, colors[0],colors[1],colors[2]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sends a message out to a single player
|
||||
/// </summary>
|
||||
/// <param name="ply">int socket thingy for the player from the server socket</param>
|
||||
/// <param name="msg">String message</param>
|
||||
|
||||
public static void SendMessage(int ply, string msg, float red, float green, float blue)
|
||||
{
|
||||
NetMessage.SendData(0x19, ply, -1, msg, 255, red, green, blue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sends a message out to a single player
|
||||
/// </summary>
|
||||
/// <param name="ply">int socket thingy for the player from the server socket</param>
|
||||
/// <param name="msg">String message</param>
|
||||
/// <param name="color">Float containing red, blue, and green color values</param>
|
||||
public static void SendMessage(int ply, string msg, float[] color)
|
||||
public static void SendMessage(int ply, string msg, Color color)
|
||||
{
|
||||
NetMessage.SendData(0x19, ply, -1, msg, 255, color[0], color[1], color[2]);
|
||||
NetMessage.SendData(0x19, ply, -1, msg, 255, color.R, color.G, color.B);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sends message to all users with 'logs' permission.
|
||||
/// </summary>
|
||||
/// <param name="log"></param>
|
||||
/// <param name="color"></param>
|
||||
public static void SendLogs(string log, Color color)
|
||||
{
|
||||
Log.Info(log);
|
||||
for (int i = 0; i < Main.maxPlayers; i++)
|
||||
{
|
||||
if (TShock.players[i] == null)
|
||||
continue;
|
||||
if (!TShock.players[i].group.HasPermission("logs"))
|
||||
continue;
|
||||
|
||||
SendMessage(i, log, color);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ namespace TShockAPI
|
|||
Tools.SendMessage(i, "The server is out of date. To update, type /updatenow.");
|
||||
for (int j = 4; j < changes.Length; j++)
|
||||
{
|
||||
Tools.SendMessage(i, changes[j], new float[] { 255, 0, 0 });
|
||||
Tools.SendMessage(i, changes[j], 255, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@
|
|||
#immunetoban immunetokick editspawn
|
||||
#ignoregriefdetection reservedslot
|
||||
|
||||
default null
|
||||
default null canwater canlava
|
||||
vip default reservedslot
|
||||
newadmin default kick editspawn reservedslot
|
||||
admin newadmin ban unban unbanip causeevents spawnboss spawnmob tp immunetokick kill
|
||||
admin newadmin ban unban unbanip causeevents spawnboss spawnmob tp immunetokick kill logs
|
||||
trustedadmin admin maintenance cfg cheat pvpfun ignorecheatdetection immunetoban ignoregriefdetection
|
||||
Loading…
Add table
Add a link
Reference in a new issue