Fix Added text to godmode
Fixed negated permissions
This commit is contained in:
parent
98a282cd2a
commit
6fd6bc9b9c
3 changed files with 32 additions and 13 deletions
|
|
@ -3964,6 +3964,16 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
playerToGod.GodMode = !playerToGod.GodMode;
|
playerToGod.GodMode = !playerToGod.GodMode;
|
||||||
|
|
||||||
|
if (playerToGod == args.Player)
|
||||||
|
{
|
||||||
|
args.Player.SendSuccessMessage(string.Format("You are {0} in god mode.", args.Player.GodMode ? "now" : "no longer"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
args.Player.SendSuccessMessage(string.Format("{0} is {1} in god mode.", playerToGod.Name, playerToGod.GodMode ? "now" : "no longer"));
|
||||||
|
playerToGod.SendSuccessMessage(string.Format("You are {0} in god mode.", playerToGod.GodMode ? "now" : "no longer"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Cheat Comamnds
|
#endregion Cheat Comamnds
|
||||||
|
|
|
||||||
|
|
@ -2959,6 +2959,11 @@ namespace TShockAPI
|
||||||
if (TShock.Players[id] == null)
|
if (TShock.Players[id] == null)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if (TShock.Players[id].GodMode)
|
||||||
|
{
|
||||||
|
TShock.Players[id].Heal(args.TPlayer.statLifeMax);
|
||||||
|
}
|
||||||
|
|
||||||
if (dmg > TShock.Config.MaxDamage && !args.Player.Group.HasPermission(Permissions.ignoredamagecap) && id != args.Player.Index)
|
if (dmg > TShock.Config.MaxDamage && !args.Player.Group.HasPermission(Permissions.ignoredamagecap) && id != args.Player.Index)
|
||||||
{
|
{
|
||||||
args.Player.Disable(String.Format("Player damage exceeded {0}.", TShock.Config.MaxDamage));
|
args.Player.Disable(String.Format("Player damage exceeded {0}.", TShock.Config.MaxDamage));
|
||||||
|
|
@ -2995,11 +3000,6 @@ namespace TShockAPI
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.Player.GodMode)
|
|
||||||
{
|
|
||||||
args.Player.Heal(args.TPlayer.statLifeMax);
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -175,24 +175,30 @@ namespace TShockAPI
|
||||||
/// <param name="permission">The permission to check.</param>
|
/// <param name="permission">The permission to check.</param>
|
||||||
/// <returns>Returns true if the user has that permission.</returns>
|
/// <returns>Returns true if the user has that permission.</returns>
|
||||||
public virtual bool HasPermission(string permission)
|
public virtual bool HasPermission(string permission)
|
||||||
{
|
{
|
||||||
if (String.IsNullOrEmpty(permission) || RealHasPermission(permission))
|
bool negated = false;
|
||||||
|
if (String.IsNullOrEmpty(permission) || (RealHasPermission(permission, ref negated) && !negated))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (negated)
|
||||||
|
return false;
|
||||||
|
|
||||||
string[] nodes = permission.Split('.');
|
string[] nodes = permission.Split('.');
|
||||||
for (int i = nodes.Length - 1; i >= 0; i--)
|
for (int i = nodes.Length - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
nodes[i] = "*";
|
nodes[i] = "*";
|
||||||
if (RealHasPermission(String.Join(".", nodes, 0, i + 1)))
|
if (RealHasPermission(String.Join(".", nodes, 0, i + 1), ref negated))
|
||||||
{
|
{
|
||||||
return true;
|
return !negated;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
private bool RealHasPermission(string permission)
|
private bool RealHasPermission(string permission, ref bool negated)
|
||||||
{
|
{
|
||||||
|
negated = false;
|
||||||
if (string.IsNullOrEmpty(permission))
|
if (string.IsNullOrEmpty(permission))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
@ -200,9 +206,12 @@ namespace TShockAPI
|
||||||
var traversed = new List<Group>();
|
var traversed = new List<Group>();
|
||||||
while (cur != null)
|
while (cur != null)
|
||||||
{
|
{
|
||||||
if (cur.negatedpermissions.Contains(permission))
|
if (cur.negatedpermissions.Contains(permission))
|
||||||
return false;
|
{
|
||||||
if (cur.permissions.Contains(permission))
|
negated = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (cur.permissions.Contains(permission))
|
||||||
return true;
|
return true;
|
||||||
if (traversed.Contains(cur))
|
if (traversed.Contains(cur))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue