Merge branch 'general-devel' of github.com:TShock/TShock into general-devel

This commit is contained in:
high 2011-08-15 19:02:31 -04:00
commit 81d45ad076
5 changed files with 95 additions and 11 deletions

View file

@ -154,7 +154,7 @@ namespace TShockAPI
ChatCommands.Add(new Command("pvpfun", Slap, "slap"));
ChatCommands.Add(new Command("editspawn", ToggleAntiBuild, "antibuild"));
ChatCommands.Add(new Command("editspawn", ProtectSpawn, "protectspawn"));
ChatCommands.Add(new Command("editspawn", Region, "region"));
ChatCommands.Add(new Command("manageregion", Region, "region"));
ChatCommands.Add(new Command("editspawn", DebugRegions, "debugreg"));
ChatCommands.Add(new Command(Help, "help"));
ChatCommands.Add(new Command(Playing, "playing", "online", "who"));
@ -1837,6 +1837,41 @@ namespace TShockAPI
args.Player.SendMessage("Invalid syntax! Proper syntax: /region allow [name] [region]", Color.Red);
break;
}
case "remove":
if (args.Parameters.Count > 2)
{
string playerName = args.Parameters[1];
string regionName = "";
User playerID;
for (int i = 2; i < args.Parameters.Count; i++)
{
if (regionName == "")
{
regionName = args.Parameters[2];
}
else
{
regionName = regionName + " " + args.Parameters[i];
}
}
if ((playerID = TShock.Users.GetUserByName(playerName)) != null)
{
if (TShock.Regions.RemoveUser(regionName, playerName))
{
args.Player.SendMessage("Removed user " + playerName + " from " + regionName, Color.Yellow);
}
else
args.Player.SendMessage("Region " + regionName + " not found", Color.Red);
}
else
{
args.Player.SendMessage("Player " + playerName + " not found", Color.Red);
}
}
else
args.Player.SendMessage("Invalid syntax! Proper syntax: /region allow [name] [region]", Color.Red);
break;
case "list":
{
//How many regions per page

View file

@ -52,6 +52,7 @@ namespace TShockAPI.DB
creator.EnsureExists(table);
ImportOld();
ReloadAllRegions();
}
@ -256,7 +257,7 @@ namespace TShockAPI.DB
{
try
{
database.Query("INSERT INTO Regions VALUES (@0, @1, @2, @3, @4, @5, @6, @7);", tx, ty, width, height, regionname, worldid, "", 1);
database.Query("INSERT INTO Regions VALUES (@0, @1, @2, @3, @4, @5, @6, @7);", tx, ty, height, width, regionname, worldid, "", 1);
Regions.Add(new Region(new Rectangle(tx, ty, width, height), regionname, true, worldid));
return true;
}
@ -361,6 +362,20 @@ namespace TShockAPI.DB
return MergedIDs.Split(new []{','}, StringSplitOptions.RemoveEmptyEntries).ToList();
}
public bool RemoveUser(string regionName, string userName )
{
Region r = getRegion(regionName);
if( r != null )
{
r.RemoveID(TShock.Users.GetUserID(userName));
string ids = string.Join(",", r.AllowedIDs);
int q = database.Query("UPDATE Regions SET UserIds=@0 WHERE RegionName=@1 AND WorldID=@2", ids,
regionName, Main.worldID.ToString());
if (q > 0)
return true;
}
return false;
}
public bool AddNewUser(string regionName, String userName)
{
try
@ -377,11 +392,14 @@ namespace TShockAPI.DB
else
MergedIDs = MergedIDs + "," + Convert.ToString(TShock.Users.GetUserID(userName));
if (database.Query("UPDATE Regions SET UserIds=@0 WHERE RegionName=@1 AND WorldID=@2", MergedIDs, regionName, Main.worldID.ToString()) > 0)
int q = database.Query("UPDATE Regions SET UserIds=@0 WHERE RegionName=@1 AND WorldID=@2", MergedIDs,
regionName, Main.worldID.ToString());
foreach (var r in Regions)
{
ReloadAllRegions();
return true;
if (r.Name == regionName && r.WorldID == Main.worldID.ToString())
r.setAllowedIDs( MergedIDs );
}
return q != 0;
}
catch (Exception ex)
{
@ -417,7 +435,7 @@ namespace TShockAPI.DB
{
foreach (Region r in Regions)
{
if (r.Name.Equals(name))
if (r.Name.Equals(name) && r.WorldID == Main.worldID.ToString())
return r;
}
return new Region();
@ -484,5 +502,33 @@ namespace TShockAPI.DB
}
return false;
}
public void setAllowedIDs( String ids )
{
String[] id_arr = ids.Split(',');
List<int> id_list = new List<int>();
foreach( String id in id_arr )
{
int i = 0;
int.TryParse(id, out i);
if( i != 0 )
id_list.Add( i );
}
AllowedIDs = id_list;
}
public void RemoveID(int id)
{
var index = -1;
for (int i = 0; i < AllowedIDs.Count; i++ )
{
if (AllowedIDs[i] == id)
{
index = i;
break;
}
}
AllowedIDs.RemoveAt( index );
}
}
}

View file

@ -309,11 +309,12 @@ namespace TShockAPI
if (Main.player[i] != null & Main.player[i].active && i != Index)
player = i;
SendMessage("You are now being annoyed.", Color.Red);
var oriinv = Main.player[0].inventory[player];
while ((DateTime.UtcNow - launch).TotalSeconds < time2)
var oriinv = Main.player[player].inventory[0];
var startname = Name;
while ((DateTime.UtcNow - launch).TotalSeconds < time2 && startname == Name)
{
Main.player[0].inventory[player].SetDefaults("Whoopie Cushion");
Main.player[0].inventory[player].stack = 1;
Main.player[player].inventory[0].SetDefaults("Whoopie Cushion");
Main.player[player].inventory[0].stack = 1;
SendData(PacketTypes.PlayerSlot, "Whoopie Cushion", player, 0f);
Main.player[player].position = TPlayer.position;
Main.player[player].selectedItem = 0;
@ -324,7 +325,7 @@ namespace TShockAPI
SendData(PacketTypes.PlayerUpdate, number: player);
Thread.Sleep(50);
}
Main.player[0].inventory[0] = oriinv;
Main.player[player].inventory[0] = oriinv;
SendData(PacketTypes.PlayerSlot, oriinv.name, player, 0f);
}

View file

@ -26,6 +26,7 @@
#managewarp - allow player to add/delete warp locations
#managegroup - allow player to add/delete/modify groups
#manageitem - allow a player to add/delete item bans
#manageregion - allow a user to create/edit regions
#editspawn - allow player to enable/disable build protection
#cfg - allow player to view/change tshock configuration
#time - allow player to change time

View file

@ -5,6 +5,7 @@
<TestLink id="7601a790-d2fb-45d2-a612-1ae4de84eb61" name="regionmanagertest" storage="unittests\regionmanagertest.orderedtest" type="Microsoft.VisualStudio.TestTools.TestTypes.Ordered.AutoSuite, Microsoft.VisualStudio.QualityTools.Tips.OrderedTest.ObjectModel, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="f28695ef-8181-4996-8783-b5059ce904b1" name="banmanagertest" storage="unittests\banmanagertest.orderedtest" type="Microsoft.VisualStudio.TestTools.TestTypes.Ordered.AutoSuite, Microsoft.VisualStudio.QualityTools.Tips.OrderedTest.ObjectModel, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="b9c6b3d7-52d8-4b49-bfbf-933efa073ca8" name="itemmanagertest" storage="unittests\itemmanagertest.orderedtest" type="Microsoft.VisualStudio.TestTools.TestTypes.Ordered.AutoSuite, Microsoft.VisualStudio.QualityTools.Tips.OrderedTest.ObjectModel, PublicKeyToken=b03f5f7f11d50a3a" />
<TestLink id="ec2aa146-8548-415b-a9f5-80472ce3c7d9" name="groupmanagertest" storage="unittests\groupmanagertest.orderedtest" type="Microsoft.VisualStudio.TestTools.TestTypes.Ordered.AutoSuite, Microsoft.VisualStudio.QualityTools.Tips.OrderedTest.ObjectModel, PublicKeyToken=b03f5f7f11d50a3a" />
</TestLinks>
</TestList>
<TestList name="Lists of Tests" id="8c43106b-9dc1-4907-a29f-aa66a61bf5b6">