Пример #1
0
 internal static bool TeleportCar(this InteractableVehicle vehicle, UnturnedPlayer player, Vector3 Location)
 {
     if (player.CurrentVehicle.passengers[0].player != null)
         return false;
     vehicle.transform.position = Location;
     return true;
 }
 public void Execute(UnturnedPlayer caller, string[] command)
 {
     if (command.Length > 0)
         DGPlugin.messagePlayer(caller, "Invalid amount of parameters. Format is \"/balance\".");
     else
         DGPlugin.messagePlayer(caller, "You currently have " + Currency.getBalance(caller) + " credits.");
 }
Пример #3
0
 public void chat(UnturnedPlayer caller, string text)
 {
     if (isMember(caller))
         tellParty(caller.CharacterName + (isLeader(caller) ? "[L]: " : "[P]: ") + text);
     else
         DGPlugin.messagePlayer(caller, "Error, you are not in this party.");
 }
Пример #4
0
        public void DropMagsWithLimit(ushort ammoAmountToSpawn, IRocketPlayer caller, SDG.Unturned.ItemGunAsset currentWeapon, UnturnedPlayer Uplayer, string[] command)
        {
            if (ammoAmountToSpawn <= (ushort)EasyAmmo.Instance.Configuration.Instance.ClipLimit || caller.HasPermission("easyammo.bypasslimit"))
            {
                UnturnedChat.Say(caller, EasyAmmo.Instance.Translate("dropping_mags", ammoAmountToSpawn.ToString(), UnturnedItems.GetItemAssetById(GetMagId(Uplayer, currentWeapon, command)).Name, GetMagId(Uplayer, currentWeapon, command).ToString()));

                for (int ii = 0; ii < (int)ammoAmountToSpawn; ii++)
                {
                    ItemManager.dropItem(new Item(GetMagId(Uplayer, currentWeapon, command), true), Uplayer.Position, true, true, true);
                }
            }
            else
            {
                UnturnedItems.GetItemAssetById(1);
                ushort amountoverlimit = ammoAmountToSpawn;
                ammoAmountToSpawn = (ushort)EasyAmmo.Instance.Configuration.Instance.ClipLimit;

                UnturnedChat.Say(caller, EasyAmmo.Instance.Translate("over_clip_spawn_limit_dropping", amountoverlimit.ToString(), EasyAmmo.Instance.Configuration.Instance.ClipLimit, UnturnedItems.GetItemAssetById(GetMagId(Uplayer, currentWeapon, command)).Name, GetMagId(Uplayer, currentWeapon, command).ToString()));

                for (int ii = 0; ii < (int)ammoAmountToSpawn; ii++)
                {
                    ItemManager.dropItem(new Item(GetMagId(Uplayer, currentWeapon, command), true), Uplayer.Position, true, true, true);
                }

            }
        }
 public static void playerDied(UnturnedPlayer player)
 {
     if (nextTP.ContainsKey(player.CSteamID))
         nextTP[player.CSteamID] = Math.Max(Time.realtimeSinceStartup + cooldownTime / 2, nextTP[player.CSteamID]);
     else
         nextTP[player.CSteamID] = Time.realtimeSinceStartup + cooldownTime / 2;
 }
        public void Execute(UnturnedPlayer caller, string[] command)
        {
            //check for parameter vaidity
            if (command.Length == 0)
            {
                DGPlugin.messagePlayer(caller, "Invalid amount of players. Format is \"/kick PlayerName\".");
                return;
            }

            var playerName = string.Join(" ", command);

            //check for player existence
            var player = DGPlugin.getPlayer(playerName);
            if (player == null)
            {
                DGPlugin.messagePlayer(caller, "Failed to find player named \"" + playerName + "\"");
                return;
            }

            var party = Parties.getParty(caller);
            if (party != null)
            {
                party.kickMember(caller, player);
                DGPlugin.messagePlayer(player, "You have been removed from the party.");
            }
            else
                DGPlugin.messagePlayer(caller, "You are not in a party.");
        }
Пример #7
0
 public override void OnRegionEnter(UnturnedPlayer player)
 {
     if(!_lastHealth.ContainsKey(player.CSteamID.m_SteamID))
         _lastHealth.Add(player.CSteamID.m_SteamID, player.Health);
     if (!GetValueSafe(Region.GetGroup(player))) return;
     player.Features.GodMode = true;
 }
Пример #8
0
 public override void OnRegionEnter(UnturnedPlayer player)
 {
     if (Value == null)
         return;
     var val = GetValue<ushort>(Region.GetGroup(player));
     player.TriggerEffect(val);
 }
 public void Execute(UnturnedPlayer caller, string[] command)
 {
     if (command.Length < 2)
         DGPlugin.messagePlayer(caller,
             "Invalid amount of parameters. Format is \"/transfer amount playerName\".");
     else
     {
         int amount;
         if (!int.TryParse(command[0], out amount))
             DGPlugin.messagePlayer(caller, "Invalid amount.");
         else
         {
             var playerName = string.Join(" ", command.Skip(1).ToArray());
             UnturnedPlayer player;
             if ((player = DGPlugin.getPlayer(playerName)) == null)
                 DGPlugin.messagePlayer(caller, "Failed to find player named \"" + playerName + "\"");
             else
             {
                 if (amount < 1)
                     DGPlugin.messagePlayer(caller, "You cannot send negative credits!");
                 else if (Currency.transferCredits(caller, player, amount))
                 {
                     DGPlugin.messagePlayer(caller,
                         "You sent " + amount + " credits to " + player.CharacterName + ".");
                     DGPlugin.messagePlayer(player, caller.CharacterName + " just gave you $" + amount + "!");
                 }
                 else
                 {
                     DGPlugin.messagePlayer(caller, "Insufficient funds.");
                 }
             }
         }
     }
 }
Пример #10
0
 public override void OnRegionEnter(UnturnedPlayer player)
 {
     var parsedValue = GetValue<string>(Region.GetGroup(player));
     if (parsedValue == null)
         return;
     parsedValue = parsedValue.Replace("{0}", Region.Name);
     UnturnedChat.Say(player, parsedValue);
 }
 private void e_OnPlayerUpdateHealth(UnturnedPlayer player, byte health)
 {
     if (health < 95)
     {
         Player.Heal(100);
         Player.Bleeding = false;
         Player.Broken = false;
     }
 }
Пример #12
0
 public override void OnRegionEnter(UnturnedPlayer player)
 {
     var group = Region.GetGroup(player);
     var val = GetValue<string>(group);
     if(val == null)
         return;
     string msg = RegionsPlugin.Instance.Configuration.Instance.UrlOpenMessage;
     PlayerUtil.OpenUrl(player, msg, val);
 }
 public static void clearStats(UnturnedPlayer player)
 {
     player.Hunger = 0;
     player.Infection = 0;
     player.Thirst = 0;
     player.Heal(100);
     player.Bleeding = false;
     player.Broken = false;
 }
Пример #14
0
        public void DropMags(ushort ammoAmountToSpawn, IRocketPlayer caller, SDG.Unturned.ItemGunAsset currentWeapon, UnturnedPlayer Uplayer, string[] command)
        {
            UnturnedChat.Say(caller, EasyAmmo.Instance.Translate("dropping_mags", ammoAmountToSpawn.ToString(), UnturnedItems.GetItemAssetById(GetMagId(Uplayer, currentWeapon, command)).Name, GetMagId(Uplayer, currentWeapon, command).ToString()));

            for (int ii = 0; ii < (int)ammoAmountToSpawn; ii++)
            {
                ItemManager.dropItem(new Item(GetMagId(Uplayer, currentWeapon, command), true), Uplayer.Position, true, true, true);
            }
        }
Пример #15
0
        public void addMember(UnturnedPlayer player)
        {
            //add the player to the steam group for this party
            player.Player.SteamChannel.SteamPlayer.playerID.SteamGroupID = steamGroup;

            members.Add(player);

            tellParty(player.CharacterName + " has joined the party!", player);
            DGPlugin.messagePlayer(player, "You have joined the party!", chatColor);
        }
 public void Execute(UnturnedPlayer caller, string[] command)
 {
     if (command.Length != 0)
     {
         DGPlugin.messagePlayer(caller, "Incorrect format. Format is \"/listevents\".");
     }
     else
     {
         EventScheduler.listEvents(caller);
     }
 }
Пример #17
0
 public static void ExecuteFreeze(UnturnedPlayer player)
 {
     Actions.FrozenPlayers.stop = false;
     Core.Core.FrozenPlayersList.Add(
     new FrozenPlayerConstructor
     {
         Player = player,
         FrozenPos = player.Position,
         LastPos = player.Position
     });
 }
Пример #18
0
        public static int valueOfPlayer(UnturnedPlayer player)
        {
            int minutesAlive = (int) (Time.realtimeSinceStartup-player.Player.PlayerLife.lastRespawn)/60;
            int playersKilledSinceSpawn = (killsSinceSpawn.ContainsKey(player.CSteamID) ? killsSinceSpawn[player.CSteamID] : 0);
            int valueOfPlayer = Math.Min(minutesAlive, 10) + playersKilledSinceSpawn * 5;

            if (ArenaEvent.isOccurring)
                return Math.Max(valueOfPlayer, 10);

            return valueOfPlayer;
        }
Пример #19
0
 public static bool transferCredits(UnturnedPlayer from, UnturnedPlayer to, int amount)
 {
     string src = DGPlugin.getConstantID(from), dest = DGPlugin.getConstantID(to);
     if (amount > 0 && balances[src] >= amount)
     {
         balances[src] -= amount;
         balances[dest] += amount;
         return true;
     }
     return false;
 }
 public void Trigger(UnturnedPlayer player)
 {
     if (!Global)
     {
         SDG.Unturned.EffectManager.Instance.SteamChannel.send("tellEffectPoint", player.CSteamID, ESteamPacket.UPDATE_UDP_BUFFER, new object[] { EffectID, player.Player.transform.position });
     }
     else
     {
         SDG.Unturned.EffectManager.Instance.SteamChannel.send("tellEffectPoint", ESteamCall.CLIENTS, player.Player.transform.position, 1024, ESteamPacket.UPDATE_UDP_BUFFER, new object[] { EffectID, player.Player.transform.position });
     }
 }
Пример #21
0
        private void ClearInventory(UnturnedPlayer player, EDeathCause cause, ELimb limb, CSteamID murderer)
        {
            if (!player.HasPermission ("keepinventory.keep"))
            {
                return;
            }

            var playerInventory = player.Inventory;
            List<Item> ids = new List<Item> ();
            List<Item> clothes = new List<Item> ();

            // "Remove "models" of items from player "body""
            player.Player.channel.send ("tellSlot", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, ( byte ) 0, ( byte ) 0, new byte[0]);
            player.Player.channel.send ("tellSlot", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, ( byte ) 1, ( byte ) 0, new byte[0]);

            // Remove items
            for (byte page = 0; page < 8; page++)
            {
                var count = playerInventory.getItemCount (page);

                for (byte index = 0; index < count; index++)
                {
                    ids.Add (playerInventory.getItem (page, 0).item);
                    playerInventory.removeItem (page, 0);
                }
            }

            // Unequip & remove from inventory
            player.Player.clothing.askWearBackpack (0, 0, new byte[0], true);
            clothes.Add (removeUnequipped (playerInventory));

            player.Player.clothing.askWearGlasses (0, 0, new byte[0], true);
            clothes.Add (removeUnequipped (playerInventory));

            player.Player.clothing.askWearHat (0, 0, new byte[0], true);
            clothes.Add (removeUnequipped (playerInventory));

            player.Player.clothing.askWearPants (0, 0, new byte[0], true);
            clothes.Add (removeUnequipped (playerInventory));

            player.Player.clothing.askWearMask (0, 0, new byte[0], true);
            clothes.Add (removeUnequipped (playerInventory));

            player.Player.clothing.askWearShirt (0, 0, new byte[0], true);
            clothes.Add (removeUnequipped (playerInventory));

            player.Player.clothing.askWearVest (0, 0, new byte[0], true);
            clothes.Add (removeUnequipped (playerInventory));
            clothes.AddRange (ids);
            deadAdmins.Add (player);
            adminItems.Add (player, clothes);
        }
        public void Execute(UnturnedPlayer caller, string[] command)
        {
            var party = Parties.getParty(caller);

            if (party != null)
            {
                party.removeMember(caller);
                party.tellParty(caller.CharacterName + " has left the party.");
                DGPlugin.messagePlayer(caller, "You have left the party.");
            }
            else
                DGPlugin.messagePlayer(caller, "You are not in a party.");
        }
Пример #23
0
        internal void OnPlayerDeath( UnturnedPlayer player, EDeathCause cause, ELimb limb, 
                                     CSteamID murderer )
        {
            if ( !player.HasPermission( "essentials.command.back" ) )
                return;

            var displayName = player.DisplayName;

            if ( BackDict.ContainsKey( displayName ) )
                BackDict.Remove( displayName );

            BackDict.Add( displayName, player.Position );
        }
Пример #24
0
        public Party(UnturnedPlayer leader)
        {
            //create the party's fake steam group
            var buffer = new byte[sizeof(ulong)];
            random.NextBytes(buffer);
            ulong newID = BitConverter.ToUInt64(buffer, 0);
            steamGroup = new CSteamID(newID);
            claimedIDs.Add(newID);

            //set and add the leader
            this.leader = leader;
            leader.Player.SteamChannel.SteamPlayer.playerID.SteamGroupID = steamGroup;
            members.Add(leader);
        }
 public void Execute(UnturnedPlayer caller, string[] command)
 {
     if (arenaEvent == null)
     {
         arenaEvent = new ArenaEvent(caller.Position, startItem: 1036, dropItem: 1021);
         EventScheduler.scheduleEvent(arenaEvent, 30, snapToHour:true, minimumPlayers:5, durationSeconds:60, countDownTimes:new uint[]{600, 300, 60, 10, 5, 4, 3, 2, 1});
         DGPlugin.messagePlayer(caller, "Arena scheduled and set at your location.");
     }
     else
     {
         arenaEvent.locations.Add(caller.Position);
         DGPlugin.messagePlayer(caller, "Your location has been added to the Arena location pool.");
     }
 }
Пример #26
0
        public LineText(string configText, Tps tpsMonitor, UnturnedPlayer player)
        {
            configText = configText.Replace("%servername%", Provider.serverName);
            configText = configText.Replace("%playername%", player.CharacterName);
            configText = configText.Replace("%online%", Provider.clients.Count().ToString() + "/" + Provider.maxPlayers.ToString());
            configText = configText.Replace("%adminsonline%", Admins());
            configText = configText.Replace("%mode%", Provider.mode.ToString().ToLower());
            configText = configText.Replace("%pvp/pve%", PvPorPvE());
            configText = configText.Replace("%map%", Provider.map);
            configText = configText.Replace("%uptime%", UpTime());
            configText = configText.Replace("%tps%", TPS(tpsMonitor));

            text = configText;
        }
        public void Execute(UnturnedPlayer caller, string[] command)
        {
            //check for parameter vaidity
            if (command.Length == 0)
            {
                DGPlugin.messagePlayer(caller, "Invalid amount of players. Format is \"/tp PlayerName\".");
                return;
            }

            var playerName = string.Join(" ", command);

            //check for player existence
            var player = DGPlugin.getPlayer(playerName);
            if (player == null)
            {
                DGPlugin.messagePlayer(caller, "Failed to find player named \"" + playerName + "\"");
                return;
            }

            var party = Parties.getParty(caller);
            if (party != null)
            {
                if (party.isMember(player))
                {
                    if (!player.Dead)
                    {
                        //add them to the CD list if they aren't in it
                        if (!nextTP.ContainsKey(caller.CSteamID) || Time.realtimeSinceStartup > nextTP[caller.CSteamID])
                        {
                            if(DGPlugin.teleportPlayer(caller, player))
                            {
                                nextTP[caller.CSteamID] = Time.realtimeSinceStartup + cooldownTime;
                                DGPlugin.messagePlayer(player, caller.CharacterName + " has teleported to you!");
                            }
                            else
                                DGPlugin.messagePlayer(caller, "Could not teleport to " + player.CharacterName + " because their vehicle is full.");
                        }
                        else
                            DGPlugin.messagePlayer(caller, "Teleport is on cooldown for "+(int)(nextTP[caller.CSteamID] - Time.realtimeSinceStartup)+" more seconds.");
                    }
                    else
                        DGPlugin.messagePlayer(caller, player.CharacterName + " is dead. You can't teleport to dead players.");
                }
                else
                    DGPlugin.messagePlayer(caller, player.CharacterName + " is not in your party. You can only teleport to party members.");
            }
            else
                DGPlugin.messagePlayer(caller, "You are not in a party. You can only teleport to party members.");
        }
        public static void clearInventory(UnturnedPlayer player)
        {
            //dequip anything they have equipped
            player.Player.Equipment.dequip();

            //remove items
            foreach (var items in player.Inventory.Items)
                for (int i=items.getItemCount()-1; i >= 0; --i)
                    player.Inventory.removeItem(items.page,
                        items.getIndex(items.getItem((byte)i).PositionX, items.getItem((byte)i).PositionY));

            //remove clothes
            var p = player.Player;
            if (p.Clothing.backpack != 0)
            {
                p.Clothing.askWearBackpack(0, 0, new byte[0]);
                p.Inventory.removeItem(2, 0);
            }
            if (p.Clothing.glasses != 0)
            {
                p.Clothing.askWearGlasses(0, 0, new byte[0]);
                p.Inventory.removeItem(2, 0);
            }
            if (p.Clothing.hat != 0)
            {
                p.Clothing.askWearHat(0, 0, new byte[0]);
                p.Inventory.removeItem(2, 0);
            }
            if (p.Clothing.mask != 0)
            {
                p.Clothing.askWearMask(0, 0, new byte[0]);
                p.Inventory.removeItem(2, 0);
            }
            if (p.Clothing.pants != 0)
            {
                p.Clothing.askWearPants(0, 0, new byte[0]);
                p.Inventory.removeItem(2, 0);
            }
            if (p.Clothing.shirt != 0)
            {
                p.Clothing.askWearShirt(0, 0, new byte[0]);
                p.Inventory.removeItem(2, 0);
            }
            if (p.Clothing.vest != 0)
            {
                p.Clothing.askWearVest(0, 0, new byte[0]);
                p.Inventory.removeItem(2, 0);
            }
        }
Пример #29
0
 public bool ClearClothes(UnturnedPlayer player)
 {
     bool returnv = false;
     try
     {
         player.Player.Clothing.askWearBackpack(0, 0, new byte[0]);
         for (byte p2 = 0; p2 < player.Player.Inventory.getItemCount(2); p2++)
         {
             player.Player.Inventory.removeItem(2, 0);
         }
         player.Player.Clothing.askWearGlasses(0, 0, new byte[0]);
         for (byte p2 = 0; p2 < player.Player.Inventory.getItemCount(2); p2++)
         {
             player.Player.Inventory.removeItem(2, 0);
         }
         player.Player.Clothing.askWearHat(0, 0, new byte[0]);
         for (byte p2 = 0; p2 < player.Player.Inventory.getItemCount(2); p2++)
         {
             player.Player.Inventory.removeItem(2, 0);
         }
         player.Player.Clothing.askWearMask(0, 0, new byte[0]);
         for (byte p2 = 0; p2 < player.Player.Inventory.getItemCount(2); p2++)
         {
             player.Player.Inventory.removeItem(2, 0);
         }
         player.Player.Clothing.askWearPants(0, 0, new byte[0]);
         for (byte p2 = 0; p2 < player.Player.Inventory.getItemCount(2); p2++)
         {
             player.Player.Inventory.removeItem(2, 0);
         }
         player.Player.Clothing.askWearShirt(0, 0, new byte[0]);
         for (byte p2 = 0; p2 < player.Player.Inventory.getItemCount(2); p2++)
         {
             player.Player.Inventory.removeItem(2, 0);
         }
         player.Player.Clothing.askWearVest(0, 0, new byte[0]);
         for (byte p2 = 0; p2 < player.Player.Inventory.getItemCount(2); p2++)
         {
             player.Player.Inventory.removeItem(2, 0);
         }
         returnv = true;
     }
     catch (Exception e)
     {
         Logger.Log("There was an error clearing " + player.CharacterName + "'s inventory.  Here is the error.");
         Console.Write(e);
     }
     return returnv;
 }
Пример #30
0
 public void AddAccount(UnturnedPlayer player)
 {
     try
     {
         MySqlConnection connection = CreateConnection();
         MySqlCommand command = connection.CreateCommand();
         connection.Open();
         command.CommandText = "INSERT IGNORE INTO `" + FeexRanks.Instance.Configuration.Instance.FeexRanksDatabase.DatabaseTableName + "` (`steamId`,`lastDisplayName`) VALUES ('" + player.CSteamID.ToString() + "','" + player.DisplayName + "')";
         command.ExecuteNonQuery();
         connection.Close();
     }
     catch (Exception ex)
     {
         Logger.LogException(ex);
     }
 }
 public UnturnedPlayerItemEquippedEvent(UnturnedPlayer player, UnturnedItem item) : base(player)
 {
     Item = item;
 }
Пример #32
0
        internal static void Wreck(IRocketPlayer caller, string filter, float radius, Vector3 position, WreckType type, FlagType flagtype, ulong steamID, ushort itemID)
        {
            bool pInfoLibLoaded = false;

            syncError = false;
            if (type == WreckType.Wreck)
            {
                if (DestructionProcessing.processing)
                {
                    UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_processing", originalCaller != null ? originalCaller.CharacterName : "???", (dIdxCount - dIdx), CalcProcessTime()));
                    return;
                }
                Abort(WreckType.Wreck);
            }
            else if (type == WreckType.Scan)
            {
                WreckingBall.ElementData.reportLists[BuildableType.Element].Clear();
                WreckingBall.ElementData.reportLists[BuildableType.VehicleElement].Clear();
                if (WreckingBall.Instance.Configuration.Instance.EnablePlayerInfo && WreckingBall.isPlayerInfoLibPresent && WreckingBall.isPlayerInfoLibLoaded)
                {
                    pInfoLibLoaded = true;
                }
            }
            UnturnedPlayer Player = null;

            if (!(caller is ConsolePlayer) && type != WreckType.Cleanup)
            {
                Player = (UnturnedPlayer)caller;
                if (Player.IsInVehicle)
                {
                    position = Player.CurrentVehicle.transform.position;
                }
                else
                {
                    position = Player.Position;
                }
            }

            List <char> Filter = new List <char>();

            Filter.AddRange(filter.ToCharArray());

            float           distance  = 0;
            float           vdistance = 0;
            StructureRegion structureRegion;
            BarricadeRegion barricadeRegion;

            for (int k = 0; k < StructureManager.regions.GetLength(0); k++)
            {
                for (int l = 0; l < StructureManager.regions.GetLength(1); l++)
                {
                    // check to see if the region is out of range, skip if it is.
                    if (!radius.IsNaN() && position.RegionOutOfRange(k, l, radius) && type != WreckType.Cleanup && type != WreckType.Counts)
                    {
                        continue;
                    }

                    structureRegion = StructureManager.regions[k, l];
                    ProcessElements(caller, itemID, radius, type, flagtype, Filter, pInfoLibLoaded, structureRegion, position, steamID, BuildableType.Element);
                }
            }

            for (int k = 0; k < BarricadeManager.BarricadeRegions.GetLength(0); k++)
            {
                for (int l = 0; l < BarricadeManager.BarricadeRegions.GetLength(1); l++)
                {
                    // check to see if the region is out of range, skip if it is.
                    if (!radius.IsNaN() && position.RegionOutOfRange(k, l, radius) && type != WreckType.Cleanup && type != WreckType.Counts)
                    {
                        continue;
                    }

                    barricadeRegion = BarricadeManager.BarricadeRegions[k, l];
                    ProcessElements(caller, itemID, radius, type, flagtype, Filter, pInfoLibLoaded, barricadeRegion, position, steamID, BuildableType.Element);
                }
            }


            foreach (InteractableVehicle vehicle in VehicleManager.vehicles)
            {
                bool validVehicleElements = BarricadeManager.tryGetPlant(vehicle.transform, out byte x, out byte y, out ushort plant, out barricadeRegion);
                // Process Vehicles.
                if ((Filter.Contains('V') || Filter.Contains('*')) && type != WreckType.Cleanup && type != WreckType.Counts && (flagtype == FlagType.Normal || (flagtype == FlagType.SteamID && vehicle.isLocked && vehicle.lockedOwner == (CSteamID)steamID)))
                {
                    vdistance = Vector3.Distance(vehicle.transform.position, position);
                    if ((!radius.IsNaN() && vdistance <= radius) || (radius.IsNaN() && (vehicle.transform.position.x.IsNaN() || vehicle.transform.position.y.IsNaN() || vehicle.transform.position.z.IsNaN())))
                    {
                        WreckProcess(caller, 999, vdistance, pInfoLibLoaded, BuildableType.Vehicle, type, vehicle, vehicle.transform, !validVehicleElements ? 0 : barricadeRegion.drops.Count, vehicle.isLocked ? (ulong)vehicle.lockedOwner : 0);
                    }
                    if (vehicle.asset.engine == EEngine.TRAIN && vehicle.trainCars != null && vehicle.trainCars.Length > 1)
                    {
                        for (int i = 1; i < vehicle.trainCars.Length; i++)
                        {
                            if (BarricadeManager.tryGetPlant(vehicle.trainCars[i].root, out x, out y, out plant, out BarricadeRegion barricadeRegion2))
                            {
                                float tcdistance = Vector3.Distance(vehicle.trainCars[i].root.position, position);
                                if (tcdistance <= radius)
                                {
                                    WreckProcess(caller, 999, tcdistance, pInfoLibLoaded, BuildableType.Vehicle, type, vehicle, vehicle.transform, barricadeRegion2 == null ? 0 : barricadeRegion2.drops.Count, 0, i);
                                }
                            }
                        }
                    }
                }

                if (type == WreckType.Cleanup && vehicle.asset.engine != EEngine.TRAIN && WreckingBall.Instance.Configuration.Instance.CleanupLockedCars && vehicle.isLocked && vehicle.lockedOwner == (CSteamID)steamID)
                {
                    cleanupList.Add(new Destructible(vehicle.transform, ElementType.Vehicle, vehicle.asset.id, vehicle));
                }
                // Add Locked vehicles to the top players count, if the cleanup locked vehicles feature is active.
                if (type == WreckType.Counts && vehicle.asset.engine != EEngine.TRAIN && WreckingBall.Instance.Configuration.Instance.CleanupLockedCars && vehicle.isLocked)
                {
                    ulong vOwner = (ulong)vehicle.lockedOwner;
                    if (pElementCounts.ContainsKey(vOwner))
                    {
                        pElementCounts[vOwner]++;
                    }
                    else
                    {
                        pElementCounts.Add(vOwner, 1);
                    }
                }
                // Process vehicles elements, remove distance limiting on vehicle placement for element scanning, to handle massively misplaced elements on vehicles.
                if (validVehicleElements)
                {
                    ProcessElements(caller, itemID, radius, type, flagtype, Filter, pInfoLibLoaded, barricadeRegion, position, steamID, BuildableType.VehicleElement);
                }

                if (vehicle.asset.engine == EEngine.TRAIN && vehicle.trainCars != null && vehicle.trainCars.Length > 1)
                {
                    for (int i = 1; i < vehicle.trainCars.Length; i++)
                    {
                        if (BarricadeManager.tryGetPlant(vehicle.trainCars[i].root, out x, out y, out plant, out BarricadeRegion barricadeRegion2))
                        {
                            ProcessElements(caller, itemID, radius, type, flagtype, Filter, pInfoLibLoaded, barricadeRegion2, position, steamID, BuildableType.VehicleElement);
                        }
                    }
                }
            }

            if (Filter.Contains('Z'))
            {
                for (int z = 0; z < ZombieManager.regions.Length; z++)
                {
                    foreach (Zombie zombie in ZombieManager.regions[z].zombies)
                    {
                        distance = Vector3.Distance(zombie.transform.position, position);
                        if (distance < radius)
                        {
                            WreckProcess(caller, 998, distance, pInfoLibLoaded, BuildableType.Element, type, zombie, zombie.transform);
                        }
                    }
                }
            }

            if (Filter.Contains('A'))
            {
                foreach (Animal animal in AnimalManager.animals)
                {
                    distance = Vector3.Distance(animal.transform.position, position);
                    if (distance <= radius)
                    {
                        WreckProcess(caller, 997, distance, pInfoLibLoaded, BuildableType.Element, type, animal, animal.transform);
                    }
                }
            }


            if (type == WreckType.Scan)
            {
                uint totalCount = 0;
                if (WreckingBall.ElementData.reportLists[BuildableType.Element].Count > 0 || WreckingBall.ElementData.reportLists[BuildableType.VehicleElement].Count > 0)
                {
                    foreach (KeyValuePair <BuildableType, Dictionary <char, uint> > reportDictionary in WreckingBall.ElementData.reportLists)
                    {
                        if (reportDictionary.Value.Count == 0)
                        {
                            continue;
                        }
                        foreach (KeyValuePair <char, uint> reportFilter in reportDictionary.Value)
                        {
                            totalCount += reportFilter.Value;
                        }
                    }
                }
                Logger.Log(string.Format("Player: {0}, ran scan at: {1}, with Radius: {7}, with Flag type: {2}, with Flags: {3}, with ItemID: {4}, with SteamID: {5}, number of elements scanned: {6}", caller is ConsolePlayer ? "Console" : Player.CharacterName + " [" + Player.SteamName + "] (" + Player.CSteamID.ToString() + ")", caller is ConsolePlayer ? "N/A" : Player.Position.ToString(), flagtype.ToString(), Filter.Count > 0 ? string.Join("", Filter.Select(i => i.ToString()).ToArray()) : "N/A", itemID, steamID, totalCount, radius.IsNaN() ? "NaN(NaN Check)" : radius.ToString()));
                return;
            }
            if (destroyList.Count >= 1 && type == WreckType.Wreck)
            {
                Logger.Log(string.Format("Player {0}, queued wreck at: {1}, with Radius: {7}, with Flag type: {2}, with Flags: {3}, with itemID: {4}, with StermID: {5}, number of elements queued: {6}", caller is ConsolePlayer ? "Console" : Player.CharacterName + " [" + Player.SteamName + "] (" + Player.CSteamID.ToString() + ")", caller is ConsolePlayer ? "N/A" : Player.Position.ToString(), flagtype.ToString(), Filter.Count > 0 ? string.Join("", Filter.Select(i => i.ToString()).ToArray()) : "N/A", itemID, steamID, destroyList.Count, radius.IsNaN() ? "NaN(NaN Check)" : radius.ToString()));
                dIdxCount = destroyList.Count;
                WreckingBall.Instance.Instruct(caller);
            }
            else if (type == WreckType.Cleanup)
            {
                cdIdxCount = cleanupList.Count;
            }
            else if (type != WreckType.Counts)
            {
                UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_not_found", radius));
            }
        }
Пример #33
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            if (command.Length == 0) // /jail
            {
                UnturnedChat.Say(player, $"{JailTimePlugin.Instance.Translate("jail.syntax")}", Color.red);
                return;
            }

            UnturnedPlayer toPlayer = UnturnedPlayer.FromName(command[0]);

            if (command.Length == 1) // /jail [playername]
            {
                if (toPlayer == null)
                {
                    UnturnedChat.Say(player, $"{JailTimePlugin.Instance.Translate("jail.player.not.found", command[0])}", Color.red);
                    return;
                }
                if (toPlayer.CSteamID == player.CSteamID)
                {
                    UnturnedChat.Say(player, $"{JailTimePlugin.Instance.Translate("jail.player.self")}", Color.red);
                    return;
                }
                UnturnedChat.Say(player, $"{JailTimePlugin.Instance.Translate("jail.syntax")}", Color.red);
                return;
            }

            int.TryParse(command[1], out int resultDuration);
            if (command.Length == 2) // /jail [playername] [duration]
            {
                if (toPlayer == null)
                {
                    UnturnedChat.Say(player, $"{JailTimePlugin.Instance.Translate("jail.player.not.found", command[0])}", Color.red);
                    return;
                }

                if (toPlayer.HasPermission(Permissions[0])) // есть ли у другого игрока пермишен иммунитета
                {
                    UnturnedChat.Say(player, $"{JailTimePlugin.Instance.Translate("jail.player.immune", toPlayer.CharacterName)}", Color.red);
                    return;
                }

                if (JailTimePlugin.Instance.Prison.IsPlayerContains(toPlayer.CSteamID)) // находится ли игрок в тюрьме
                {
                    UnturnedChat.Say(player, $"{JailTimePlugin.Instance.Translate("jail.player.arrested", toPlayer.CharacterName, resultDuration)}", Color.red);
                    return;
                }

                if (toPlayer.CSteamID == player.CSteamID) // проверка на само jail
                {
                    UnturnedChat.Say(player, $"{JailTimePlugin.Instance.Translate("jail.player.self")}", Color.red);
                    return;
                }

                // одеть наручники на игрока
                JailTimePlugin.Instance.Prison.HandcuffToPlayer(toPlayer.CSteamID);

                JailTimePlugin.Instance.Prison.ArrestPlayer(toPlayer.CSteamID, resultDuration);
                UnturnedChat.Say(player, $"{JailTimePlugin.Instance.Translate("jail.successful.arrested", toPlayer.CharacterName, resultDuration)}", Color.yellow);
                UnturnedChat.Say(toPlayer, $"{JailTimePlugin.Instance.Translate("jail.player.arrested.message", player.CharacterName, resultDuration)}", Color.red);
            }
        }
Пример #34
0
        //Updates the UI
        public void UpdateUI(UnturnedPlayer p, bool firstsend = false)
        {
            short effectshortID = (short)Configuration.Instance.UIEffectID;

            if (firstsend)
            {
                EffectManager.sendUIEffect(Configuration.Instance.UIEffectID, effectshortID, p.CSteamID, true);
            }

            int admin_members_integer    = 0;
            int police_members_integer   = 0;
            int mechanic_members_integer = 0;
            int medic_members_integer    = 0;

            string admin_members_string    = null;
            string police_members_string   = null;
            string mechanic_members_string = null;
            string medic_members_string    = null;

            var config = Configuration.Instance;

            RocketPermissionsManager Permissions = R.Instance.GetComponent <RocketPermissionsManager>();
            RocketPermissionsGroup   group_pol   = R.Permissions.GetGroup(config.PoliceGroup);
            RocketPermissionsGroup   group_med   = R.Permissions.GetGroup(config.MedicGroup);
            RocketPermissionsGroup   group_mec   = R.Permissions.GetGroup(config.MechanicGroup);
            RocketPermissionsGroup   group_ad    = R.Permissions.GetGroup(config.PoliceGroup);

            Provider.clients.ForEach(client =>
            {
                string clientid = client.playerID.steamID.m_SteamID.ToString();
                if (group_pol.Members.Contains(clientid))
                {
                    police_members_integer = police_members_integer + 1;
                }
                else if (group_med.Members.Contains(clientid))
                {
                    medic_members_integer = medic_members_integer + 1;
                }
                else if (group_mec.Members.Contains(clientid))
                {
                    mechanic_members_integer = mechanic_members_integer + 1;
                }
                else if (group_ad.Members.Contains(clientid) || client.isAdmin)
                {
                    admin_members_integer = admin_members_integer + 1;
                }
            });

            if (config.ShowOfflineMembersFromtheGroup)
            {
                police_members_string   = police_members_integer.ToString() + "/" + group_pol.Members.Count;
                medic_members_string    = medic_members_integer.ToString() + "/" + group_med.Members.Count;
                mechanic_members_string = mechanic_members_integer.ToString() + "/" + group_mec.Members.Count;
                admin_members_string    = admin_members_integer.ToString() + "/" + group_ad.Members.Count;
            }
            else
            {
                police_members_string   = police_members_integer.ToString();
                medic_members_string    = medic_members_integer.ToString();
                mechanic_members_string = mechanic_members_integer.ToString();
                admin_members_string    = admin_members_integer.ToString();
            }

            EffectManager.sendUIEffectText(effectshortID, p.CSteamID, true, "police_members_count_text", Translate("ui_text", Translate("police"), police_members_string));
            EffectManager.sendUIEffectText(effectshortID, p.CSteamID, true, "medic_members_count_text", Translate("ui_text", Translate("medic"), medic_members_string));
            EffectManager.sendUIEffectText(effectshortID, p.CSteamID, true, "mechanic_members_count_text", Translate("ui_text", Translate("mechanic"), mechanic_members_string));
            EffectManager.sendUIEffectText(effectshortID, p.CSteamID, true, "admin_members_count_text", Translate("ui_text", Translate("admin"), admin_members_string));
        }
Пример #35
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer plr = (UnturnedPlayer)caller;

            //plr.Player.transform.gameObject.TryAddComponent<Module.HUD_Players>();
        }
Пример #36
0
 private void OnPlayerConnected(UnturnedPlayer player)
 {
     player.Player.GetComponent <PlayerComponent>().Checker(player);
 }
Пример #37
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player = (UnturnedPlayer)caller;

            if (command.Length == 0 || command.Length > 2)
            {
                UnturnedChat.Say(player, U.Translate("command_generic_invalid_parameter"));
                throw new WrongUsageOfCommandException(caller, this);
            }

            ushort id     = 0;
            byte   amount = 1;

            string itemString = command[0].ToString();

            if (!ushort.TryParse(itemString, out id))
            {
                List <ItemAsset> sortedAssets = new List <ItemAsset>(SDG.Unturned.Assets.find(EAssetType.ITEM).Cast <ItemAsset>());
                ItemAsset        asset        = sortedAssets.Where(i => i.itemName != null).OrderBy(i => i.itemName.Length).Where(i => i.itemName.ToLower().Contains(itemString.ToLower())).FirstOrDefault();
                if (asset != null)
                {
                    id = asset.id;
                }
                if (String.IsNullOrEmpty(itemString.Trim()) || id == 0)
                {
                    UnturnedChat.Say(player, U.Translate("command_generic_invalid_parameter"));
                    throw new WrongUsageOfCommandException(caller, this);
                }
            }

            Asset a = SDG.Unturned.Assets.find(EAssetType.ITEM, id);

            if (command.Length == 2 && !byte.TryParse(command[1].ToString(), out amount) || a == null)
            {
                UnturnedChat.Say(player, U.Translate("command_generic_invalid_parameter"));
                throw new WrongUsageOfCommandException(caller, this);
            }

            string assetName = ((ItemAsset)a).itemName;

            if (U.Settings.Instance.EnableItemBlacklist && !player.HasPermission("itemblacklist.bypass"))
            {
                for (int i = 0; i < U.Settings.Instance.Items.Count; i++)
                {
                    Blacklist Item = U.Settings.Instance.Items[i];
                    if (id == Item.id)
                    {
                        UnturnedChat.Say(player, U.Translate("command_i_blacklisted"));
                        return;
                    }
                }
            }

            if (U.Settings.Instance.EnableItemSpawnLimit && !player.HasPermission("itemspawnlimit.bypass"))
            {
                if (amount > U.Settings.Instance.MaxSpawnAmount)
                {
                    UnturnedChat.Say(player, U.Translate("command_i_too_much", U.Settings.Instance.MaxSpawnAmount));
                    return;
                }
            }

            if (player.GiveItem(id, amount))
            {
                Logger.Log(U.Translate("command_i_giving_console", player.DisplayName, id, amount));
                UnturnedChat.Say(player, U.Translate("command_i_giving_private", amount, assetName, id));
            }
            else
            {
                UnturnedChat.Say(player, U.Translate("command_i_giving_failed_private", amount, assetName, id));
            }
        }
 public UnturnedPlayerReputationUpdatedEvent(UnturnedPlayer player, int reputation) : base(player)
 {
     Reputation = reputation;
 }
 public UnturnedPlayerExperienceUpdatedEvent(UnturnedPlayer player, uint experience) : base(player)
 {
     Experience = experience;
 }
        public void Execute(ICommandContext context)
        {
            UnturnedPlayer uCaller = ((UnturnedUser)context.User).Player;

            WebsiteCommandsPlugin.OpenUrl(uCaller, Url, Summary);
        }