Added SSI Updates.
This commit is contained in:
parent
fddaf657a5
commit
98a7e7f080
3 changed files with 127 additions and 51 deletions
|
|
@ -633,20 +633,20 @@ namespace TShockAPI
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int TileY { get; set; }
|
public int TileY { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ???
|
/// Amount of liquid
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public byte Liquid { get; set;}
|
public byte Amount { get; set;}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// True if lava
|
/// Type of Liquid: 0=water, 1=lave, 2=honey
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool Lava { get; set; }
|
public byte Type { get; set; }
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// LiquidSet - When ever a liquid is set
|
/// LiquidSet - When ever a liquid is set
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static HandlerList<LiquidSetEventArgs> LiquidSet;
|
public static HandlerList<LiquidSetEventArgs> LiquidSet;
|
||||||
|
|
||||||
private static bool OnLiquidSet(int tilex, int tiley, byte liquid, bool lava)
|
private static bool OnLiquidSet(int tilex, int tiley, byte amount, byte type)
|
||||||
{
|
{
|
||||||
if (LiquidSet == null)
|
if (LiquidSet == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -655,8 +655,8 @@ namespace TShockAPI
|
||||||
{
|
{
|
||||||
TileX = tilex,
|
TileX = tilex,
|
||||||
TileY = tiley,
|
TileY = tiley,
|
||||||
Liquid = liquid,
|
Amount = amount,
|
||||||
Lava = lava,
|
Type = type,
|
||||||
};
|
};
|
||||||
LiquidSet.Invoke(null, args);
|
LiquidSet.Invoke(null, args);
|
||||||
return args.Handled;
|
return args.Handled;
|
||||||
|
|
@ -2380,11 +2380,12 @@ namespace TShockAPI
|
||||||
{
|
{
|
||||||
int tileX = args.Data.ReadInt32();
|
int tileX = args.Data.ReadInt32();
|
||||||
int tileY = args.Data.ReadInt32();
|
int tileY = args.Data.ReadInt32();
|
||||||
byte liquid = args.Data.ReadInt8();
|
byte amount = args.Data.ReadInt8();
|
||||||
bool lava = args.Data.ReadBoolean();
|
byte type = args.Data.ReadInt8();
|
||||||
|
|
||||||
if (OnLiquidSet(tileX, tileY, liquid, lava))
|
if (OnLiquidSet(tileX, tileY, amount, type))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (tileX < 0 || tileX >= Main.maxTilesX || tileY < 0 || tileY >= Main.maxTilesY)
|
if (tileX < 0 || tileX >= Main.maxTilesX || tileY < 0 || tileY >= Main.maxTilesY)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
@ -2403,9 +2404,9 @@ namespace TShockAPI
|
||||||
|
|
||||||
if (!args.Player.Group.HasPermission(Permissions.ignoreliquidsetdetection))
|
if (!args.Player.Group.HasPermission(Permissions.ignoreliquidsetdetection))
|
||||||
{
|
{
|
||||||
args.Player.TileLiquidThreshold++;
|
args.Player.TileLiquidThreshold+=amount;
|
||||||
}
|
}
|
||||||
if (liquid != 0)
|
if (amount != 0)
|
||||||
{
|
{
|
||||||
int bucket = 0;
|
int bucket = 0;
|
||||||
if (args.TPlayer.inventory[args.TPlayer.selectedItem].type == 206)
|
if (args.TPlayer.inventory[args.TPlayer.selectedItem].type == 206)
|
||||||
|
|
@ -2416,8 +2417,12 @@ namespace TShockAPI
|
||||||
{
|
{
|
||||||
bucket = 2;
|
bucket = 2;
|
||||||
}
|
}
|
||||||
|
else if (args.TPlayer.inventory[args.TPlayer.selectedItem].type == 207)
|
||||||
|
{
|
||||||
|
bucket = 3;
|
||||||
|
}
|
||||||
|
|
||||||
if(lava && bucket != 2)
|
if(type == 1 && bucket != 2)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("You do not have permission to perform this action.");
|
args.Player.SendErrorMessage("You do not have permission to perform this action.");
|
||||||
args.Player.Disable("Spreading lava without holding a lava bucket");
|
args.Player.Disable("Spreading lava without holding a lava bucket");
|
||||||
|
|
@ -2425,7 +2430,7 @@ namespace TShockAPI
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(lava && (!args.Player.Group.HasPermission(Permissions.usebanneditem) &&
|
if(type == 1 && (!args.Player.Group.HasPermission(Permissions.usebanneditem) &&
|
||||||
TShock.Itembans.ItemIsBanned("Lava Bucket", args.Player)))
|
TShock.Itembans.ItemIsBanned("Lava Bucket", args.Player)))
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("You do not have permission to perform this action.");
|
args.Player.SendErrorMessage("You do not have permission to perform this action.");
|
||||||
|
|
@ -2434,7 +2439,7 @@ namespace TShockAPI
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!lava && bucket != 1)
|
if (type == 0 && bucket != 1)
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("You do not have permission to perform this action.");
|
args.Player.SendErrorMessage("You do not have permission to perform this action.");
|
||||||
args.Player.Disable("Spreading water without holding a water bucket");
|
args.Player.Disable("Spreading water without holding a water bucket");
|
||||||
|
|
@ -2442,7 +2447,7 @@ namespace TShockAPI
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!lava && (!args.Player.Group.HasPermission(Permissions.usebanneditem) &&
|
if (type == 0 && (!args.Player.Group.HasPermission(Permissions.usebanneditem) &&
|
||||||
TShock.Itembans.ItemIsBanned("Water Bucket", args.Player)))
|
TShock.Itembans.ItemIsBanned("Water Bucket", args.Player)))
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("You do not have permission to perform this action.");
|
args.Player.SendErrorMessage("You do not have permission to perform this action.");
|
||||||
|
|
@ -2450,6 +2455,23 @@ namespace TShockAPI
|
||||||
args.Player.SendTileSquare(tileX, tileY);
|
args.Player.SendTileSquare(tileX, tileY);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type == 2 && bucket != 3)
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage("You do not have permission to perform this action.");
|
||||||
|
args.Player.Disable("Spreading water without holding a water bucket");
|
||||||
|
args.Player.SendTileSquare(tileX, tileY);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == 2 && (!args.Player.Group.HasPermission(Permissions.usebanneditem) &&
|
||||||
|
TShock.Itembans.ItemIsBanned("Honey Bucket", args.Player)))
|
||||||
|
{
|
||||||
|
args.Player.SendErrorMessage("You do not have permission to perform this action.");
|
||||||
|
args.Player.Disable("Using banned honey bucket without permissions");
|
||||||
|
args.Player.SendTileSquare(tileX, tileY);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TShock.CheckTilePermission(args.Player, tileX, tileY))
|
if (TShock.CheckTilePermission(args.Player, tileX, tileY))
|
||||||
|
|
|
||||||
|
|
@ -395,7 +395,7 @@ namespace TShockAPI
|
||||||
bool flag = false;
|
bool flag = false;
|
||||||
if (RealPlayer)
|
if (RealPlayer)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 40; i++) //41 is trash can, 42-45 is coins, 46-49 is ammo
|
for (int i = 0; i < 50; i++) //41 is trash can, 42-45 is coins, 46-49 is ammo
|
||||||
{
|
{
|
||||||
if (TPlayer.inventory[i] == null || !TPlayer.inventory[i].active || TPlayer.inventory[i].name == "")
|
if (TPlayer.inventory[i] == null || !TPlayer.inventory[i].active || TPlayer.inventory[i].name == "")
|
||||||
{
|
{
|
||||||
|
|
@ -989,9 +989,10 @@ namespace TShockAPI
|
||||||
this.maxHealth = player.TPlayer.statLifeMax;
|
this.maxHealth = player.TPlayer.statLifeMax;
|
||||||
Item[] inventory = player.TPlayer.inventory;
|
Item[] inventory = player.TPlayer.inventory;
|
||||||
Item[] armor = player.TPlayer.armor;
|
Item[] armor = player.TPlayer.armor;
|
||||||
|
Item[] dye = player.TPlayer.dye;
|
||||||
for (int i = 0; i < NetItem.maxNetInventory; i++)
|
for (int i = 0; i < NetItem.maxNetInventory; i++)
|
||||||
{
|
{
|
||||||
if (i < 49)
|
if (i < NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots))
|
||||||
{
|
{
|
||||||
if (player.TPlayer.inventory[i] != null)
|
if (player.TPlayer.inventory[i] != null)
|
||||||
{
|
{
|
||||||
|
|
@ -1013,11 +1014,12 @@ namespace TShockAPI
|
||||||
this.inventory[i].prefix = 0;
|
this.inventory[i].prefix = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if (i < NetItem.maxNetInventory - NetItem.dyeSlots)
|
||||||
{
|
{
|
||||||
if (player.TPlayer.armor[i - 48] != null)
|
var index = i - (NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots));
|
||||||
|
if (player.TPlayer.armor[index] != null)
|
||||||
{
|
{
|
||||||
this.inventory[i].netID = armor[i - 48].netID;
|
this.inventory[i].netID = armor[index].netID;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -1026,8 +1028,31 @@ namespace TShockAPI
|
||||||
|
|
||||||
if (this.inventory[i].netID != 0)
|
if (this.inventory[i].netID != 0)
|
||||||
{
|
{
|
||||||
this.inventory[i].stack = armor[i - 48].stack;
|
this.inventory[i].stack = armor[index].stack;
|
||||||
this.inventory[i].prefix = armor[i - 48].prefix;
|
this.inventory[i].prefix = armor[index].prefix;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.inventory[i].stack = 0;
|
||||||
|
this.inventory[i].prefix = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var index = i - (NetItem.maxNetInventory - NetItem.dyeSlots);
|
||||||
|
if (player.TPlayer.dye[index] != null)
|
||||||
|
{
|
||||||
|
this.inventory[i].netID = armor[index].netID;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.inventory[i].netID = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.inventory[i].netID != 0)
|
||||||
|
{
|
||||||
|
this.inventory[i].stack = armor[index].stack;
|
||||||
|
this.inventory[i].prefix = armor[index].prefix;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -1041,7 +1066,9 @@ namespace TShockAPI
|
||||||
|
|
||||||
public class NetItem
|
public class NetItem
|
||||||
{
|
{
|
||||||
public static int maxNetInventory = 59;
|
public static readonly int maxNetInventory = 73;
|
||||||
|
public static readonly int armorSlots = 11;
|
||||||
|
public static readonly int dyeSlots = 3;
|
||||||
public int netID;
|
public int netID;
|
||||||
public int stack;
|
public int stack;
|
||||||
public int prefix;
|
public int prefix;
|
||||||
|
|
|
||||||
|
|
@ -1593,9 +1593,10 @@ namespace TShockAPI
|
||||||
|
|
||||||
Item[] inventory = player.TPlayer.inventory;
|
Item[] inventory = player.TPlayer.inventory;
|
||||||
Item[] armor = player.TPlayer.armor;
|
Item[] armor = player.TPlayer.armor;
|
||||||
|
Item[] dye = player.TPlayer.dye;
|
||||||
for (int i = 0; i < NetItem.maxNetInventory; i++)
|
for (int i = 0; i < NetItem.maxNetInventory; i++)
|
||||||
{
|
{
|
||||||
if (i < 49)
|
if (i < NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots))
|
||||||
{
|
{
|
||||||
Item item = new Item();
|
Item item = new Item();
|
||||||
Item serverItem = new Item();
|
Item serverItem = new Item();
|
||||||
|
|
@ -1632,34 +1633,35 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else if(i < (NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots)))
|
||||||
{
|
{
|
||||||
Item item = new Item();
|
Item item = new Item();
|
||||||
Item serverItem = new Item();
|
Item serverItem = new Item();
|
||||||
if (armor[i - 48] != null && armor[i - 48].netID != 0)
|
var index = i - (NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots));
|
||||||
|
if (armor[index] != null && armor[index].netID != 0)
|
||||||
{
|
{
|
||||||
if (playerData.inventory[i].netID != armor[i - 48].netID)
|
if (playerData.inventory[i].netID != armor[index].netID)
|
||||||
{
|
{
|
||||||
item.netDefaults(armor[i - 48].netID);
|
item.netDefaults(armor[index].netID);
|
||||||
item.Prefix(armor[i - 48].prefix);
|
item.Prefix(armor[index].prefix);
|
||||||
item.AffixName();
|
item.AffixName();
|
||||||
player.SendMessage(player.IgnoreActionsForInventory = "Your armor (" + item.name + ") needs to be deleted.",
|
player.SendMessage(player.IgnoreActionsForInventory = "Your armor (" + item.name + ") needs to be deleted.",
|
||||||
Color.Cyan);
|
Color.Cyan);
|
||||||
check = false;
|
check = false;
|
||||||
}
|
}
|
||||||
else if (playerData.inventory[i].prefix != armor[i - 48].prefix)
|
else if (playerData.inventory[i].prefix != armor[index].prefix)
|
||||||
{
|
{
|
||||||
item.netDefaults(armor[i - 48].netID);
|
item.netDefaults(armor[index].netID);
|
||||||
item.Prefix(armor[i - 48].prefix);
|
item.Prefix(armor[index].prefix);
|
||||||
item.AffixName();
|
item.AffixName();
|
||||||
player.SendMessage(player.IgnoreActionsForInventory = "Your armor (" + item.name + ") needs to be deleted.",
|
player.SendMessage(player.IgnoreActionsForInventory = "Your armor (" + item.name + ") needs to be deleted.",
|
||||||
Color.Cyan);
|
Color.Cyan);
|
||||||
check = false;
|
check = false;
|
||||||
}
|
}
|
||||||
else if (armor[i - 48].stack > playerData.inventory[i].stack)
|
else if (armor[index].stack > playerData.inventory[i].stack)
|
||||||
{
|
{
|
||||||
item.netDefaults(armor[i - 48].netID);
|
item.netDefaults(armor[index].netID);
|
||||||
item.Prefix(armor[i - 48].prefix);
|
item.Prefix(armor[index].prefix);
|
||||||
item.AffixName();
|
item.AffixName();
|
||||||
player.SendMessage(
|
player.SendMessage(
|
||||||
player.IgnoreActionsForInventory =
|
player.IgnoreActionsForInventory =
|
||||||
|
|
@ -1669,6 +1671,44 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(i < (NetItem.maxNetInventory - (NetItem.armorSlots + NetItem.dyeSlots)))
|
||||||
|
{
|
||||||
|
Item item = new Item();
|
||||||
|
Item serverItem = new Item();
|
||||||
|
var index = i - (NetItem.maxNetInventory - NetItem.dyeSlots);
|
||||||
|
if (dye[index] != null && dye[index].netID != 0)
|
||||||
|
{
|
||||||
|
if (playerData.inventory[i].netID != dye[index].netID)
|
||||||
|
{
|
||||||
|
item.netDefaults(dye[index].netID);
|
||||||
|
item.Prefix(dye[index].prefix);
|
||||||
|
item.AffixName();
|
||||||
|
player.SendMessage(player.IgnoreActionsForInventory = "Your dye (" + item.name + ") needs to be deleted.",
|
||||||
|
Color.Cyan);
|
||||||
|
check = false;
|
||||||
|
}
|
||||||
|
else if (playerData.inventory[i].prefix != dye[index].prefix)
|
||||||
|
{
|
||||||
|
item.netDefaults(dye[index].netID);
|
||||||
|
item.Prefix(dye[index].prefix);
|
||||||
|
item.AffixName();
|
||||||
|
player.SendMessage(player.IgnoreActionsForInventory = "Your dye (" + item.name + ") needs to be deleted.",
|
||||||
|
Color.Cyan);
|
||||||
|
check = false;
|
||||||
|
}
|
||||||
|
else if (dye[index].stack > playerData.inventory[i].stack)
|
||||||
|
{
|
||||||
|
item.netDefaults(dye[index].netID);
|
||||||
|
item.Prefix(dye[index].prefix);
|
||||||
|
item.AffixName();
|
||||||
|
player.SendMessage(
|
||||||
|
player.IgnoreActionsForInventory =
|
||||||
|
"Your dye (" + item.name + ") (" + inventory[i].stack + ") needs to have its stack size decreased to (" +
|
||||||
|
playerData.inventory[i].stack + ").", Color.Cyan);
|
||||||
|
check = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return check;
|
return check;
|
||||||
|
|
@ -1676,20 +1716,7 @@ namespace TShockAPI
|
||||||
|
|
||||||
public static bool CheckIgnores(TSPlayer player)
|
public static bool CheckIgnores(TSPlayer player)
|
||||||
{
|
{
|
||||||
bool check = false;
|
return Config.PvPMode == "always" && !player.TPlayer.hostile || player.IgnoreActionsForInventory != "none" || player.IgnoreActionsForCheating != "none" || player.IgnoreActionsForDisabledArmor != "none" || player.IgnoreActionsForClearingTrashCan || !player.IsLoggedIn && Config.RequireLogin;;
|
||||||
if (Config.PvPMode == "always" && !player.TPlayer.hostile)
|
|
||||||
check = true;
|
|
||||||
if (player.IgnoreActionsForInventory != "none")
|
|
||||||
check = true;
|
|
||||||
if (player.IgnoreActionsForCheating != "none")
|
|
||||||
check = true;
|
|
||||||
if (player.IgnoreActionsForDisabledArmor != "none")
|
|
||||||
check = true;
|
|
||||||
if (player.IgnoreActionsForClearingTrashCan)
|
|
||||||
check = true;
|
|
||||||
if (!player.IsLoggedIn && Config.RequireLogin)
|
|
||||||
check = true;
|
|
||||||
return check;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnConfigRead(ConfigFile file)
|
public void OnConfigRead(ConfigFile file)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue