Merge pull request #1970 from Pryaxis/handlesynccavernmonster
Add HandleSyncCavernMonsterType
This commit is contained in:
commit
f80bf4abab
2 changed files with 23 additions and 14 deletions
|
|
@ -7,6 +7,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
|
||||||
* New permission `tshock.journey.research` to enable sharing research via item sacrifice (@QuiCM)
|
* New permission `tshock.journey.research` to enable sharing research via item sacrifice (@QuiCM)
|
||||||
* Add Emoji event to GetDataHandler. This packet is received when a player tries to display an emote.
|
* Add Emoji event to GetDataHandler. This packet is received when a player tries to display an emote.
|
||||||
* Adding EmojiHandler to handle an exploit. Adding `tshock.sendemoji` permission and checks. Added this permission to guest group by default.
|
* Adding EmojiHandler to handle an exploit. Adding `tshock.sendemoji` permission and checks. Added this permission to guest group by default.
|
||||||
|
* Handling SyncCavernMonsterType packet to prevent an exploit where players could modify the server's cavern monster types and make the server spawn any NPCs - including bosses - onto other players.
|
||||||
|
|
||||||
## TShock 4.4.0 (Pre-release 10)
|
## TShock 4.4.0 (Pre-release 10)
|
||||||
* Fix all rope coils. (@Olink)
|
* Fix all rope coils. (@Olink)
|
||||||
|
|
|
||||||
|
|
@ -152,9 +152,10 @@ namespace TShockAPI
|
||||||
{ PacketTypes.PlayerHurtV2, HandlePlayerDamageV2 },
|
{ PacketTypes.PlayerHurtV2, HandlePlayerDamageV2 },
|
||||||
{ PacketTypes.PlayerDeathV2, HandlePlayerKillMeV2 },
|
{ PacketTypes.PlayerDeathV2, HandlePlayerKillMeV2 },
|
||||||
{ PacketTypes.Emoji, HandleEmoji },
|
{ PacketTypes.Emoji, HandleEmoji },
|
||||||
|
{ PacketTypes.SyncRevengeMarker, HandleSyncRevengeMarker },
|
||||||
{ PacketTypes.FishOutNPC, HandleFishOutNPC },
|
{ PacketTypes.FishOutNPC, HandleFishOutNPC },
|
||||||
{ PacketTypes.FoodPlatterTryPlacing, HandleFoodPlatterTryPlacing },
|
{ PacketTypes.FoodPlatterTryPlacing, HandleFoodPlatterTryPlacing },
|
||||||
{ PacketTypes.SyncRevengeMarker, HandleSyncRevengeMarker }
|
{ PacketTypes.SyncCavernMonsterType, HandleSyncCavernMonsterType }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3590,7 +3591,7 @@ namespace TShockAPI
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool HandleEmoji(GetDataHandlerArgs args)
|
private static bool HandleEmoji(GetDataHandlerArgs args)
|
||||||
{
|
{
|
||||||
byte playerIndex = args.Data.ReadInt8();
|
byte playerIndex = args.Data.ReadInt8();
|
||||||
|
|
@ -3601,6 +3602,21 @@ namespace TShockAPI
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool HandleSyncRevengeMarker(GetDataHandlerArgs args)
|
||||||
|
{
|
||||||
|
int uniqueID = args.Data.ReadInt32();
|
||||||
|
Vector2 location = args.Data.ReadVector2();
|
||||||
|
int netId = args.Data.ReadInt32();
|
||||||
|
float npcHpPercent = args.Data.ReadSingle();
|
||||||
|
int npcTypeAgainstDiscouragement = args.Data.ReadInt32(); //tfw the argument is Type Against Discouragement
|
||||||
|
int npcAiStyleAgainstDiscouragement = args.Data.ReadInt32(); //see ^
|
||||||
|
int coinsValue = args.Data.ReadInt32();
|
||||||
|
float baseValue = args.Data.ReadSingle();
|
||||||
|
bool spawnedFromStatus = args.Data.ReadBoolean();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private static bool HandleFishOutNPC(GetDataHandlerArgs args)
|
private static bool HandleFishOutNPC(GetDataHandlerArgs args)
|
||||||
{
|
{
|
||||||
|
|
@ -3628,19 +3644,11 @@ namespace TShockAPI
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool HandleSyncRevengeMarker(GetDataHandlerArgs args)
|
private static bool HandleSyncCavernMonsterType(GetDataHandlerArgs args)
|
||||||
{
|
{
|
||||||
int uniqueID = args.Data.ReadInt32();
|
args.Player.Kick("Exploit attempt detected!");
|
||||||
Vector2 location = args.Data.ReadVector2();
|
TShock.Log.ConsoleDebug($"HandleSyncCavernMonsterType: Player is trying to modify NPC cavernMonsterType; this is a crafted packet! - From {args.Player.Name}");
|
||||||
int netId = args.Data.ReadInt32();
|
return true;
|
||||||
float npcHpPercent = args.Data.ReadSingle();
|
|
||||||
int npcTypeAgainstDiscouragement = args.Data.ReadInt32(); //tfw the argument is Type Against Discouragement
|
|
||||||
int npcAiStyleAgainstDiscouragement = args.Data.ReadInt32(); //see ^
|
|
||||||
int coinsValue = args.Data.ReadInt32();
|
|
||||||
float baseValue = args.Data.ReadSingle();
|
|
||||||
bool spawnedFromStatus = args.Data.ReadBoolean();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum EditAction
|
public enum EditAction
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue