From bd878ee63c621dfd44247a172975ab8f500e72d5 Mon Sep 17 00:00:00 2001 From: k0rd Date: Sat, 4 Feb 2012 17:01:27 -0500 Subject: [PATCH 1/3] Don't use remembered pos if we are on a different WorldID --- TShockAPI/DB/RememberPosManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TShockAPI/DB/RememberPosManager.cs b/TShockAPI/DB/RememberPosManager.cs index 50df4110..429437ea 100644 --- a/TShockAPI/DB/RememberPosManager.cs +++ b/TShockAPI/DB/RememberPosManager.cs @@ -70,7 +70,7 @@ namespace TShockAPI.DB { try { - using (var reader = database.QueryReader("SELECT * FROM RememberedPos WHERE Name=@0 AND IP=@1", name, IP)) + using (var reader = database.QueryReader("SELECT * FROM RememberedPos WHERE Name=@0 AND IP=@1 AND WorldID=@2", name, IP, Main.worldID.ToString())) { if (reader.Read()) { From 217d001baf0de04632b327ce07b544697bbe2823 Mon Sep 17 00:00:00 2001 From: k0rd Date: Sat, 4 Feb 2012 18:00:33 -0500 Subject: [PATCH 2/3] option to overload Region.InArea() with x,y for more accurate Region detection. --- TShockAPI/DB/RegionManager.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/TShockAPI/DB/RegionManager.cs b/TShockAPI/DB/RegionManager.cs index ccd96c63..25391bf2 100644 --- a/TShockAPI/DB/RegionManager.cs +++ b/TShockAPI/DB/RegionManager.cs @@ -236,7 +236,7 @@ namespace TShockAPI.DB } for (int i = 0; i < Regions.Count; i++) { - if (Regions[i].InArea(new Rectangle(x, y, 0, 0)) && !Regions[i].HasPermissionToBuildInRegion(ply)) + if (Regions[i].InArea(x,y) && !Regions[i].HasPermissionToBuildInRegion(ply)) { return false; } @@ -530,6 +530,18 @@ namespace TShockAPI.DB } return false; } + + public bool InArea(int x, int y) //overloaded with x,y + { + + if (x >= Area.Left && x <= Area.Right && y >= Area.Top && y <= Area.Bottom) + { + return true; + } + + return false; + } + public bool HasPermissionToBuildInRegion(TSPlayer ply) { @@ -598,4 +610,4 @@ namespace TShockAPI.DB return AllowedGroups.Remove(groupName); } } -} \ No newline at end of file +} From 364d4cb3f63cce0f488322f1366b57a4d86cad7f Mon Sep 17 00:00:00 2001 From: k0rd Date: Sat, 4 Feb 2012 18:11:17 -0500 Subject: [PATCH 3/3] Send player back to spawn if remembered position puts them somewhere they can't really go. --- TShockAPI/TShock.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 9bdd096b..fc880bce 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -854,9 +854,9 @@ namespace TShockAPI if (Config.RememberLeavePos) { - if (RememberedPos.GetLeavePos(player.Name, player.IP) != Vector2.Zero){ + if (RememberedPos.GetLeavePos(player.Name, player.IP) != Vector2.Zero){ var pos = RememberedPos.GetLeavePos(player.Name, player.IP); - player.LastNetPosition = pos; + player.Teleport((int) pos.X, (int) pos.Y + 3); }} @@ -1433,4 +1433,4 @@ namespace TShockAPI Utils.HashAlgo = file.HashAlgorithm; } } -} +}