Create ParcelBan.cs
This commit is contained in:
parent
694756b2db
commit
10e935f7b7
1 changed files with 91 additions and 0 deletions
91
Core/Commands/Parcel/ParcelBan.cs
Normal file
91
Core/Commands/Parcel/ParcelBan.cs
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
using OpenMetaverse;
|
||||
using static OpenMetaverse.ParcelManager;
|
||||
|
||||
namespace BSB.Commands.CMD_Parcel
|
||||
{
|
||||
public class ParcelBan : CoreCommand_1arg
|
||||
{
|
||||
public override string[] ArgTypes { get { return new[] { "Avatar", "True|False" }; } }
|
||||
public override string[] ArgHints { get { return new[] { "Avatar [UUID or Firstname Lastname]", "Type" }; } }
|
||||
public override string Helpfile { get { return "Bans an avatar [ARG 1] from a parcel<br/>by setting Type to False you can unban"; } }
|
||||
|
||||
protected bool ban_target(OpenMetaverse.Parcel p, UUID target)
|
||||
{
|
||||
bool alreadyBanned = false;
|
||||
foreach (ParcelAccessEntry E in p.AccessBlackList)
|
||||
{
|
||||
if (E.AgentID == target)
|
||||
{
|
||||
alreadyBanned = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (alreadyBanned == true)
|
||||
{
|
||||
return Failed("Target is in the blacklist");
|
||||
}
|
||||
ParcelAccessEntry entry = new ParcelAccessEntry();
|
||||
entry.AgentID = target;
|
||||
entry.Flags = AccessList.Ban;
|
||||
entry.Time = new System.DateTime(3030, 03, 03);
|
||||
p.AccessBlackList.Add(entry);
|
||||
p.Update(bot.GetClient.Network.CurrentSim, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected bool unban_target(OpenMetaverse.Parcel p, UUID target)
|
||||
{
|
||||
bool alreadyBanned = false;
|
||||
ParcelAccessEntry removeme = new ParcelAccessEntry();
|
||||
foreach (ParcelAccessEntry E in p.AccessBlackList)
|
||||
{
|
||||
if (E.AgentID == target)
|
||||
{
|
||||
alreadyBanned = true;
|
||||
removeme = E;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (alreadyBanned == false)
|
||||
{
|
||||
return Failed("Target is NOT in the blacklist");
|
||||
}
|
||||
p.AccessBlackList.Remove(removeme);
|
||||
p.Update(bot.GetClient.Network.CurrentSim, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public override bool CallFunction(string[] args)
|
||||
{
|
||||
if (base.CallFunction(args) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (UUID.TryParse(args[0], out UUID target) == false)
|
||||
{
|
||||
return Failed("Arg 0 requires UUID");
|
||||
}
|
||||
bool banuser = true;
|
||||
if (args.Length == 2)
|
||||
{
|
||||
if (args[1] == "False")
|
||||
{
|
||||
banuser = false;
|
||||
}
|
||||
}
|
||||
int localid = bot.GetClient.Parcels.GetParcelLocalID(bot.GetClient.Network.CurrentSim, bot.GetClient.Self.SimPosition);
|
||||
if (bot.GetClient.Network.CurrentSim.Parcels.ContainsKey(localid) == false)
|
||||
{
|
||||
return Failed("Unable to get parcel details");
|
||||
}
|
||||
OpenMetaverse.Parcel p = bot.GetClient.Network.CurrentSim.Parcels[localid];
|
||||
if (banuser == true)
|
||||
{
|
||||
return ban_target(p, target);
|
||||
}
|
||||
return unban_target(p, target);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue