Fix /sb plantera setting time to night, optimize SSC inventory saving, fix angler quests in SSC

This commit is contained in:
MarioE 2014-06-05 18:39:13 -04:00
parent af3f5ef954
commit ffa68c1115
3 changed files with 65 additions and 58 deletions

View file

@ -1792,7 +1792,6 @@ namespace TShockAPI
return; return;
case "plantera": case "plantera":
npc.SetDefaults(262); npc.SetDefaults(262);
TSPlayer.Server.SetTime(false, 0.0);
TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY);
TSPlayer.All.SendSuccessMessage("{0} has spawned Plantera {1} time(s).", args.Player.Name, amount); TSPlayer.All.SendSuccessMessage("{0} has spawned Plantera {1} time(s).", args.Player.Name, amount);
return; return;

View file

@ -1209,42 +1209,44 @@ namespace TShockAPI
GetDataHandlerDelegates = new Dictionary<PacketTypes, GetDataHandlerDelegate> GetDataHandlerDelegates = new Dictionary<PacketTypes, GetDataHandlerDelegate>
{ {
{PacketTypes.PlayerInfo, HandlePlayerInfo}, { PacketTypes.PlayerInfo, HandlePlayerInfo },
{PacketTypes.PlayerUpdate, HandlePlayerUpdate}, { PacketTypes.PlayerUpdate, HandlePlayerUpdate },
{PacketTypes.Tile, HandleTile}, { PacketTypes.Tile, HandleTile },
{PacketTypes.TileSendSquare, HandleSendTileSquare}, { PacketTypes.TileSendSquare, HandleSendTileSquare },
{PacketTypes.ProjectileNew, HandleProjectileNew}, { PacketTypes.ProjectileNew, HandleProjectileNew },
{PacketTypes.TogglePvp, HandleTogglePvp}, { PacketTypes.TogglePvp, HandleTogglePvp },
{PacketTypes.PlayerTeam, HandlePlayerTeam}, { PacketTypes.PlayerTeam, HandlePlayerTeam },
{PacketTypes.TileKill, HandleTileKill}, { PacketTypes.TileKill, HandleTileKill },
{PacketTypes.PlayerKillMe, HandlePlayerKillMe}, { PacketTypes.PlayerKillMe, HandlePlayerKillMe },
{PacketTypes.LiquidSet, HandleLiquidSet}, { PacketTypes.LiquidSet, HandleLiquidSet },
{PacketTypes.PlayerSpawn, HandleSpawn}, { PacketTypes.PlayerSpawn, HandleSpawn },
{PacketTypes.ChestGetContents, HandleChestOpen}, { PacketTypes.ChestGetContents, HandleChestOpen },
{PacketTypes.ChestOpen, HandleChestActive}, { PacketTypes.ChestOpen, HandleChestActive },
{PacketTypes.ChestItem, HandleChestItem}, { PacketTypes.ChestItem, HandleChestItem },
{PacketTypes.SignNew, HandleSign}, { PacketTypes.SignNew, HandleSign },
{PacketTypes.PlayerSlot, HandlePlayerSlot}, { PacketTypes.PlayerSlot, HandlePlayerSlot },
{PacketTypes.TileGetSection, HandleGetSection}, { PacketTypes.TileGetSection, HandleGetSection },
{PacketTypes.UpdateNPCHome, UpdateNPCHome}, { PacketTypes.UpdateNPCHome, UpdateNPCHome },
{PacketTypes.PlayerAddBuff, HandlePlayerAddBuff}, { PacketTypes.PlayerAddBuff, HandlePlayerAddBuff },
{PacketTypes.ItemDrop, HandleItemDrop}, { PacketTypes.ItemDrop, HandleItemDrop },
{PacketTypes.PlayerHp, HandlePlayerHp}, { PacketTypes.PlayerHp, HandlePlayerHp },
{PacketTypes.PlayerMana, HandlePlayerMana}, { PacketTypes.PlayerMana, HandlePlayerMana },
{PacketTypes.PlayerDamage, HandlePlayerDamage}, { PacketTypes.PlayerDamage, HandlePlayerDamage },
{PacketTypes.NpcStrike, HandleNpcStrike}, { PacketTypes.NpcStrike, HandleNpcStrike },
{PacketTypes.NpcSpecial, HandleSpecial}, { PacketTypes.NpcSpecial, HandleSpecial },
{PacketTypes.PlayerAnimation, HandlePlayerAnimation}, { PacketTypes.PlayerAnimation, HandlePlayerAnimation },
{PacketTypes.PlayerBuff, HandlePlayerBuffList}, { PacketTypes.PlayerBuff, HandlePlayerBuffList },
{PacketTypes.PasswordSend, HandlePassword}, { PacketTypes.PasswordSend, HandlePassword },
{PacketTypes.ContinueConnecting2, HandleConnecting}, { PacketTypes.ContinueConnecting2, HandleConnecting },
{PacketTypes.ProjectileDestroy, HandleProjectileKill}, { PacketTypes.ProjectileDestroy, HandleProjectileKill },
{PacketTypes.SpawnBossorInvasion, HandleSpawnBoss}, { PacketTypes.SpawnBossorInvasion, HandleSpawnBoss },
{PacketTypes.Teleport, HandleTeleport}, { PacketTypes.Teleport, HandleTeleport },
{PacketTypes.PaintTile, HandlePaintTile}, { PacketTypes.PaintTile, HandlePaintTile },
{PacketTypes.PaintWall, HandlePaintWall}, { PacketTypes.PaintWall, HandlePaintWall },
{PacketTypes.Placeholder, HandleRaptor}, { PacketTypes.Placeholder, HandleRaptor },
{PacketTypes.DoorUse, HandleDoorUse} { PacketTypes.DoorUse, HandleDoorUse },
{ PacketTypes.CompleteAnglerQuest, HandleCompleteAnglerQuest },
{ PacketTypes.NumberOfAnglerQuestsCompleted, HandleNumberOfAnglerQuestsCompleted }
}; };
} }
@ -3604,20 +3606,33 @@ namespace TShockAPI
} }
} }
private static bool HandleDoorUse(GetDataHandlerArgs e) private static bool HandleDoorUse(GetDataHandlerArgs args)
{ {
var Close = e.Data.ReadByte(); var close = args.Data.ReadByte();
var X = e.Data.ReadInt16(); var x = args.Data.ReadInt16();
var Y = e.Data.ReadInt16(); var y = args.Data.ReadInt16();
var dir = e.Data.ReadByte() == 0 ? -1 : 1; var dir = args.Data.ReadByte() == 0 ? -1 : 1;
if (X >= Main.tile.GetLength(0) || Y >= Main.tile.GetLength(1) || X < 0 || Y < 0) // Check for out of range if (x >= Main.maxTilesX || y >= Main.maxTilesY || x < 0 || y < 0) // Check for out of range
return true; return true;
if (Main.tile[X, Y].type != 10 && Main.tile[X, Y].type != 11) // Check for tile types if (Main.tile[x, y].type != 10 && Main.tile[x, y].type != 11) // Check for tile types
return true; return true;
return false; return false;
} }
private static bool HandleCompleteAnglerQuest(GetDataHandlerArgs args)
{
// Since packet 76 is NEVER sent to us, we actually have to rely on this to get the true count
args.TPlayer.anglerQuestsFinished++;
return false;
}
private static bool HandleNumberOfAnglerQuestsCompleted(GetDataHandlerArgs args)
{
// Never sent by vanilla client, ignore this
return true;
}
} }
} }

View file

@ -1617,23 +1617,16 @@ namespace TShockAPI
public static string ToString(NetItem[] inventory) public static string ToString(NetItem[] inventory)
{ {
string inventoryString = ""; StringBuilder items = new StringBuilder();
for (int i = 0; i < maxNetInventory; i++) for (int i = 0; i < maxNetInventory; i++)
{ {
if (i != 0) items.Append(inventory[i].netID).Append(",");
inventoryString += "~";
inventoryString += inventory[i].netID;
if (inventory[i].netID != 0) if (inventory[i].netID != 0)
{ items.Append(inventory[i].stack).Append(",").Append(inventory[i].prefix).Append("~");
inventoryString += "," + inventory[i].stack;
inventoryString += "," + inventory[i].prefix;
}
else else
{ items.Append("0,0~");
inventoryString += ",0,0";
} }
} return items.ToString(0, items.Length - 1);
return inventoryString;
} }
public static NetItem[] Parse(string data) public static NetItem[] Parse(string data)