public void Execute(IRocketPlayer caller, string[] command) { if (command.Length < 2) { this.SendUsage(caller); return; } var name = command.GetStringParameter(0); var typeName = command.GetStringParameter(1).ToLower(); if (RegionsPlugin.Instance.GetRegion(name, true) != null) { UnturnedChat.Say(caller, "A region with this name already exists!", Color.red); return; } var type = RegionType.RegisterRegionType(typeName); if (type == null) { var types = ""; for (int i = 0; i < RegionType.GetTypes().Count; i++) { var t = RegionType.GetTypes()[i]; if (types == "") { types = t; continue; } types += ", " + t; } UnturnedChat.Say(caller, "Unknown type: " + typeName + "! Available types: " + types, Color.red); return; } var args = new ArrayList(command); args.RemoveAt(0); // remove name... args.RemoveAt(0); // remove type... var region = type.OnCreate(caller, name, (string[])args.ToArray(typeof(string))); if (region == null) { UnturnedChat.Say(caller, "Could't create region!", Color.red); return; } RegionsPlugin.Instance.Regions.Add(region); RegionsPlugin.Instance.OnRegionCreated(region); region.SetFlag("EnterMessage", "Entered region: {0}", new List <GroupValue>()); region.SetFlag("LeaveMessage", "Left region: {0}", new List <GroupValue>()); RegionsPlugin.Instance.Configuration.Save(); UnturnedChat.Say(caller, "Successfully created region: " + name, Color.green); }
protected override void Load() { Logger.Log($"Regions v{VERSION}", ConsoleColor.Cyan); Instance = this; if (Configuration.Instance.NoEquipIgnoredItems == null) { Configuration.Instance.NoEquipIgnoredItems = new List <ushort>(); } if (Configuration.Instance.NoEquipWeaponIgnoredItems == null) { Configuration.Instance.NoEquipWeaponIgnoredItems = new List <ushort>(); } RegionType.RegisterRegionType("rectangle", typeof(RectangleType)); RegionType.RegisterRegionType("circle", typeof(CircleType)); RegionFlag.RegisterFlag("Godmode", typeof(GodmodeFlag)); RegionFlag.RegisterFlag("NoEnter", typeof(NoEnterFlag)); RegionFlag.RegisterFlag("NoLeave", typeof(NoLeaveFlag)); RegionFlag.RegisterFlag("NoZombies", typeof(NoZombiesFlag)); RegionFlag.RegisterFlag("NoPlace", typeof(NoPlaceFlag)); RegionFlag.RegisterFlag("NoDestroy", typeof(NoDestroyFlag)); RegionFlag.RegisterFlag("NoVehiclesUsage", typeof(NoVehiclesUsageFlag)); RegionFlag.RegisterFlag("NoEquip", typeof(NoEquipFlag)); RegionFlag.RegisterFlag("NoEquipWeapon", typeof(NoEquipWeaponFlag)); RegionFlag.RegisterFlag("EnterMessage", typeof(EnterMessageFlag)); RegionFlag.RegisterFlag("LeaveMessage", typeof(LeaveMessageFlag)); RegionFlag.RegisterFlag("Teleport", typeof(TeleportFlag)); RegionFlag.RegisterFlag("UnlimitedGenerator", typeof(UnlimitedGeneratorFlag)); RegionFlag.RegisterFlag("EnterEffect", typeof(EnterEffectFlag)); RegionFlag.RegisterFlag("LeaveEffect", typeof(LeaveEffectFlag)); RegionFlag.RegisterFlag("EnterURL", typeof(EnterURLFlag)); RegionFlag.RegisterFlag("LeaveURL", typeof(LeaveURLFlag)); RegionFlag.RegisterFlag("VanishFlag", typeof(VanishFlag)); RegionFlag.RegisterFlag("NoDecay", typeof(NoDecayFlag)); RegionFlag.RegisterFlag("EnterAddGroup", typeof(EnterAddGroupFlag)); RegionFlag.RegisterFlag("EnterRemoveGroup", typeof(EnterRemoveGroupFlag)); RegionFlag.RegisterFlag("LeaveAddGroup", typeof(LeaveAddGroupFlag)); RegionFlag.RegisterFlag("LeaveRemoveGroup", typeof(LeaveRemoveGroupFlag)); RegionFlag.RegisterFlag("Decay", typeof(DecayFlag)); RegionFlag.RegisterFlag("NoVehicleDamage", typeof(NoVehiclesDamageFlag)); RegionFlag.RegisterFlag("NoVehiclesLockpick", typeof(NoVehiclesLockpickFlag)); Configuration.Load(); _defaultPermissionsProvider = R.Permissions; R.Permissions = new RegionsPermissionsProvider(_defaultPermissionsProvider); R.Plugins.OnPluginsLoaded += OnPluginsLoaded; foreach (var untPlayer in Provider.clients.Select(p => UnturnedPlayer.FromCSteamID(p.playerID.steamID))) { OnPlayerConnect(untPlayer); } }