コード例 #1
0
 public void VehicleBuyBack(InteractableVehicle vehicle)
 {
     try
     {
         if (vehicle.isLocked && vehicle.lockedOwner != CSteamID.Nil)
         {
             VehicleInfo info     = DShop.Instance.Database.GetVehicleInfo((ulong)vehicle.lockedOwner, vehicle.id);
             ShopObject  svehicle = DShop.Instance.Database.GetItem(ItemType.Vehicle, vehicle.id);
             if (info != null && svehicle.ItemID == vehicle.id && svehicle.RestrictBuySell != RestrictBuySell.BuyOnly)
             {
                 Uconomy.Instance.Database.CheckSetupAccount(vehicle.lockedOwner);
                 Uconomy.Instance.Database.IncreaseBalance(vehicle.lockedOwner.ToString(), Math.Round(decimal.Multiply(svehicle.BuyCost, svehicle.SellMultiplier), 2));
                 DShop.Instance.Database.DeleteVehicleInfo(info);
                 bool getPInfo = WreckingBall.isPlayerInfoLibLoaded;
                 Logger.Log(string.Format("Vehicle buyback successfull for: InstanceID: {0}, and Type: {1}({2}), at position: {3} , Sign By: {4}, Locked By: {5}.",
                                          vehicle.instanceID,
                                          vehicle.asset.vehicleName,
                                          vehicle.id, vehicle.transform.ToString(),
                                          DestructionProcessing.HasFlaggedElement(vehicle.transform, out ulong vFlagOwner) ? (getPInfo ? Instance.PInfoGenerateMessage(vFlagOwner) : vFlagOwner.ToString()) : "N/A",
                                          vehicle.isLocked ? (getPInfo ? Instance.PInfoGenerateMessage((ulong)vehicle.lockedOwner) : vehicle.lockedOwner.ToString()) : "N/A"));
             }
         }
     }
     catch (Exception ex)
     {
         Logger.LogException(ex, "There was an error with trying to process a vehicle buyback.");
     }
 }
コード例 #2
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            UnturnedPlayer player      = (UnturnedPlayer)caller;
            Ray            ray         = new Ray(player.Player.look.aim.position, player.Player.look.aim.forward);
            RaycastInfo    raycastInfo = DamageTool.raycast(ray, 10f, RayMasks.VEHICLE);

            if (raycastInfo.vehicle != null)
            {
                bool getPInfo = false;
                if (WreckingBall.Instance.Configuration.Instance.EnablePlayerInfo && WreckingBall.isPlayerInfoLibPresent && WreckingBall.isPlayerInfoLibLoaded)
                {
                    getPInfo = true;
                }
                if (!raycastInfo.vehicle.isDead)
                {
                    bool showSignOwner = false;
                    showSignOwner = DestructionProcessing.HasFlaggedElement(raycastInfo.transform, out ulong signOwner);
                    string signmsg   = getPInfo ? WreckingBall.Instance.PInfoGenerateMessage(signOwner) : signOwner.ToString();
                    string lockedmsg = raycastInfo.vehicle.isLocked ? (!getPInfo || raycastInfo.vehicle.lockedOwner == CSteamID.Nil ? raycastInfo.vehicle.lockedOwner.ToString() : WreckingBall.Instance.PInfoGenerateMessage((ulong)raycastInfo.vehicle.lockedOwner)) : "N/A";
                    string msg       = string.Format("Dropping elements off of vehicle: {0}({1}), InstanceID: {2}, Locked Owner: {3}, SignOwner {4}.", raycastInfo.vehicle.asset.name, raycastInfo.vehicle.id, raycastInfo.vehicle.instanceID,
                                                     lockedmsg,
                                                     showSignOwner ? signmsg : "N/A");
                    UnturnedChat.Say(caller, msg);
                    Logger.Log(msg);
                    WreckingBall.Instance.VehicleElementDrop(raycastInfo.vehicle, true, raycastInfo.transform);
                }
            }
            else
            {
                UnturnedChat.Say(caller, "Couldn't find a vehicle in the direction you're looking, or too far away, within 10 units.");
            }
        }
コード例 #3
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            // Get player elements list.
            DestructionProcessing.Wreck(caller, "", 0, Vector3.zero, WreckType.Counts, FlagType.SteamID, 0, 0);
            // Grab what we need from the list.
            Dictionary <ulong, int> shortenedList = DestructionProcessing.pElementCounts.Where(r => r.Value >= WreckingBall.Instance.Configuration.Instance.PlayerElementListCutoff).OrderBy(v => v.Value).ToDictionary(k => k.Key, v => v.Value);

            DestructionProcessing.pElementCounts.Clear();

            bool getPInfo = false;

            if (WreckingBall.Instance.Configuration.Instance.EnablePlayerInfo && WreckingBall.isPlayerInfoLibPresent && WreckingBall.isPlayerInfoLibLoaded)
            {
                getPInfo = true;
            }

            foreach (KeyValuePair <ulong, int> value in shortenedList)
            {
                string msg = string.Format("Element count: {0}, Player: {1}", value.Value, !getPInfo || value.Key == 0 ? value.Key.ToString() : WreckingBall.Instance.PInfoGenerateMessage(value.Key));
                if (caller is ConsolePlayer)
                {
                    Logger.Log(msg, ConsoleColor.Yellow);
                }
                else
                {
                    UnturnedChat.Say(caller, msg, Color.yellow);
                }
            }
        }
コード例 #4
0
 protected override void Unload()
 {
     if (DestructionProcessing.processing)
     {
         if (DestructionProcessing.originalCaller != null)
         {
             UnturnedChat.Say(DestructionProcessing.originalCaller, Translate("wreckingball_reload_abort"), Color.yellow);
         }
         Logger.LogWarning(Translate("wreckingball_reload_abort"));
         DestructionProcessing.Abort(WreckType.Wreck);
     }
     if (DestructionProcessing.cleanupProcessingBuildables || DestructionProcessing.cleanupProcessingFiles)
     {
         DestructionProcessing.Abort(WreckType.Cleanup);
     }
     ElementData              = null;
     Level.onPostLevelLoaded -= _PostLevelLoaded;
 }
コード例 #5
0
 internal void Confirm(IRocketPlayer caller)
 {
     if (DestructionProcessing.destroyList.Count <= 0)
     {
         UnturnedChat.Say(caller, Instance.Translate("wreckingball_help"));
     }
     else
     {
         DestructionProcessing.processing = true;
         if (!(caller is ConsolePlayer))
         {
             DestructionProcessing.originalCaller = (UnturnedPlayer)caller;
         }
         UnturnedChat.Say(caller, Translate("wreckingball_initiated", DestructionProcessing.CalcProcessTime()));
         Logger.Log(string.Format("Player {0} has initiated wreck.", caller is ConsolePlayer ? "Console" : ((UnturnedPlayer)caller).CharacterName + " [" + ((UnturnedPlayer)caller).SteamName + "] (" + ((UnturnedPlayer)caller).CSteamID.ToString() + ")"));
         DestructionProcessing.dIdxCount = DestructionProcessing.destroyList.Count;
         DestructionProcessing.dIdx      = 0;
     }
 }
コード例 #6
0
 // Changed timer to Update(), to attempt to fix ghost objects bug by syncing the destructions to the game frame/tic.
 public void Update()
 {
     if (Instance.State == PluginState.Loaded)
     {
         if ((DateTime.Now - DestructionProcessing.lastRunTimeWreck).TotalSeconds > (1 / Instance.Configuration.Instance.DestructionRate))
         {
             DestructionProcessing.lastRunTimeWreck = DateTime.Now;
             if (DestructionProcessing.processing)
             {
                 try
                 {
                     DestructionProcessing.DestructionLoop(WreckType.Wreck);
                 }
                 catch
                 {
                     DestructionProcessing.Abort(WreckType.Wreck);
                 }
             }
             if (DestructionProcessing.cleanupProcessingBuildables)
             {
                 try
                 {
                     DestructionProcessing.DestructionLoop(WreckType.Cleanup);
                 }
                 catch
                 {
                     DestructionProcessing.Abort(WreckType.Cleanup);
                 }
             }
         }
         if (Instance.Configuration.Instance.EnableCleanup)
         {
             DestructionProcessing.HandleCleanup();
         }
         if (Instance.Configuration.Instance.EnableVehicleCap)
         {
             DestructionProcessing.HandleVehicleCap();
         }
     }
 }
コード例 #7
0
 internal void Scan(IRocketPlayer caller, string filter, float radius, Vector3 position, FlagType flagType, ulong steamID, ushort itemID)
 {
     DestructionProcessing.Wreck(caller, filter, radius, position, WreckType.Scan, flagType, steamID, itemID);
     if (ElementData.reportLists[BuildableType.Element].Count > 0 || ElementData.reportLists[BuildableType.VehicleElement].Count > 0)
     {
         foreach (KeyValuePair <BuildableType, Dictionary <char, uint> > reportDictionary in ElementData.reportLists)
         {
             if (reportDictionary.Value.Count == 0)
             {
                 continue;
             }
             string report     = "";
             uint   totalCount = 0;
             foreach (KeyValuePair <char, uint> reportFilter in reportDictionary.Value)
             {
                 report     += " " + ElementData.categorys[reportFilter.Key].Name + ": " + reportFilter.Value + ",";
                 totalCount += reportFilter.Value;
             }
             if (report != "")
             {
                 report = report.Remove(report.Length - 1);
             }
             string type = reportDictionary.Key == BuildableType.VehicleElement ? "Vehicle Element" : "Element";
             if (radius.IsNaN())
             {
                 UnturnedChat.Say(caller, Translate("wreckingball_scan_nan_check"));
             }
             UnturnedChat.Say(caller, Translate("wreckingball_scan", totalCount, type, radius.ToString(), report));
             if (Instance.Configuration.Instance.LogScans && !(caller is ConsolePlayer))
             {
                 Logger.Log(Translate("wreckingball_scan", totalCount, type, radius.ToString(), report));
             }
         }
     }
     else
     {
         UnturnedChat.Say(caller, Translate("wreckingball_not_found", radius));
     }
 }
コード例 #8
0
        public void Execute(IRocketPlayer caller, string[] command)
        {
            float          radius = 0;
            UnturnedPlayer player = null;

            if (!(caller is ConsolePlayer))
            {
                if (command.GetFloatParameter(0) == null)
                {
                    UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_lv_help"));
                    return;
                }
                player = (UnturnedPlayer)caller;
                radius = (float)command.GetFloatParameter(0);
            }
            foreach (InteractableVehicle vehicle in VehicleManager.vehicles)
            {
                int  count    = 0;
                bool getPInfo = false;
                // skip the vehicle in the list if it is destroyed or drowned.
                if (vehicle.isDead || vehicle.isDrowned)
                {
                    continue;
                }
                if (WreckingBall.Instance.Configuration.Instance.EnablePlayerInfo && WreckingBall.isPlayerInfoLibPresent && WreckingBall.isPlayerInfoLibLoaded)
                {
                    getPInfo = true;
                }
                string lockedBy   = getPInfo ? WreckingBall.Instance.PInfoGenerateMessage((ulong)vehicle.lockedOwner) : vehicle.lockedOwner.ToString();
                ulong  signOwner  = 0;
                string signBy     = string.Empty;
                bool   showSignBy = false;
                if (BarricadeManager.tryGetPlant(vehicle.transform, out byte x, out byte y, out ushort plant, out BarricadeRegion barricadeRegion))
                {
                    count = barricadeRegion.drops.Count;
                }
                if (caller is ConsolePlayer || Vector3.Distance(vehicle.transform.position, player.Position) <= radius)
                {
                    showSignBy = DestructionProcessing.HasFlaggedElement(vehicle.transform, out signOwner);
                    if (showSignBy)
                    {
                        signBy = getPInfo ? WreckingBall.Instance.PInfoGenerateMessage(signOwner) : signOwner.ToString();
                    }
                    ProcessMessages(caller, vehicle.transform, vehicle.asset, vehicle.instanceID, count, lockedBy, vehicle.isLocked, signBy, showSignBy);
                }
                // Handle train cars too, if in range.
                if (vehicle.asset.engine == EEngine.TRAIN && vehicle.trainCars != null && vehicle.trainCars.Length > 1)
                {
                    for (int i = 1; i < vehicle.trainCars.Length; i++)
                    {
                        if (caller is ConsolePlayer || Vector3.Distance(vehicle.trainCars[i].root.transform.position, player.Position) <= radius)
                        {
                            if (BarricadeManager.tryGetPlant(vehicle.trainCars[i].root, out x, out y, out plant, out barricadeRegion))
                            {
                                count = barricadeRegion.drops.Count;
                            }
                            showSignBy = DestructionProcessing.HasFlaggedElement(vehicle.trainCars[i].root, out signOwner);
                            if (showSignBy)
                            {
                                signBy = getPInfo ? WreckingBall.Instance.PInfoGenerateMessage(signOwner) : signOwner.ToString();
                            }
                            ProcessMessages(caller, vehicle.trainCars[i].root, null, vehicle.instanceID, count, lockedBy, false, signBy, showSignBy, true, i);
                        }
                    }
                }
            }
        }
コード例 #9
0
 internal void Instruct(IRocketPlayer caller)
 {
     UnturnedChat.Say(caller, Translate("wreckingball_queued", DestructionProcessing.dIdxCount, DestructionProcessing.CalcProcessTime()));
     if (DestructionProcessing.syncError)
     {
         UnturnedChat.Say(caller, Translate("wreckingball_sync_error"));
     }
     UnturnedChat.Say(caller, Translate("wreckingball_prompt"));
 }
コード例 #10
0
        public void Execute(IRocketPlayer caller, string[] cmd)
        {
            string command = String.Join(" ", cmd);

            if (!caller.IsAdmin && !WreckingBall.Instance.Configuration.Instance.Enabled)
            {
                return;
            }

            if (!caller.IsAdmin && !caller.HasPermission("wreck"))
            {
                return;
            }

            UnturnedPlayer player   = null;
            Vector3        position = Vector3.zero;

            if (!(caller is ConsolePlayer))
            {
                player   = (UnturnedPlayer)caller;
                position = player.Position;
            }


            if (String.IsNullOrEmpty(command.Trim()))
            {
                if (DestructionProcessing.processing)
                {
                    DestructionProcessing.Wreck(caller, "", 0, position, WreckType.Wreck, FlagType.Normal, 0, 0);
                }
                else
                {
                    UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help"));
                    return;
                }
            }
            else
            {
                string[] oper = command.Split(' ');

                if (oper.Length >= 1)
                {
                    switch (oper[0])
                    {
                    case "confirm":
                        if (!(caller.HasPermission("wreck.wreck") || caller.HasPermission("wreck.*")) && !(caller is ConsolePlayer))
                        {
                            UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_wreck_permission"), Color.red);
                            return;
                        }
                        WreckingBall.Instance.Confirm(caller);
                        break;

                    case "abort":
                        if (!(caller.HasPermission("wreck.wreck") || caller.HasPermission("wreck.*")) && !(caller is ConsolePlayer))
                        {
                            UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_wreck_permission"), Color.red);
                            return;
                        }
                        if (!(caller is ConsolePlayer))
                        {
                            UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_aborted"));
                        }
                        Logger.Log(WreckingBall.Instance.Translate("wreckingball_aborted"));
                        DestructionProcessing.Abort(WreckType.Wreck);
                        break;

                    case "scan":
                        if (!(caller.HasPermission("wreck.scan") || caller.HasPermission("wreck.*")) && !(caller is ConsolePlayer))
                        {
                            UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_scan_permission"), Color.red);
                            return;
                        }
                        if ((oper.Length == 3 && !(caller is ConsolePlayer)) || (oper.Length == 6 && caller is ConsolePlayer))
                        {
                            if (caller is ConsolePlayer)
                            {
                                if (!cmd.GetVectorFromCmd(3, out position))
                                {
                                    UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help_scan_console"));
                                    break;
                                }
                            }
                            ushort itemID = 0;
                            if (ushort.TryParse(oper[1], out itemID))
                            {
                                WreckingBall.Instance.Scan(caller, oper[1], Convert.ToSingle(oper[2]), position, FlagType.ItemID, 0, itemID);
                            }
                            else
                            {
                                if (oper[2].ToLower() == "nan")
                                {
                                    WreckingBall.Instance.Scan(caller, oper[1], float.NaN, position, FlagType.Normal, 0, 0);
                                }
                                else
                                {
                                    WreckingBall.Instance.Scan(caller, oper[1], Convert.ToSingle(oper[2]), position, FlagType.Normal, 0, 0);
                                }
                            }
                        }
                        else if ((oper.Length == 4 && !(caller is ConsolePlayer)) || (oper.Length == 7 && caller is ConsolePlayer))
                        {
                            ulong steamID = 0;
                            if (caller is ConsolePlayer)
                            {
                                if (!cmd.GetVectorFromCmd(4, out position))
                                {
                                    UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help_scan_console"));
                                    break;
                                }
                            }
                            if (oper[1].isCSteamID(out steamID))
                            {
                                WreckingBall.Instance.Scan(caller, oper[2], Convert.ToSingle(oper[3]), position, FlagType.SteamID, (ulong)steamID, 0);
                            }
                            else
                            {
                                UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help_scan"));
                            }
                        }
                        else
                        {
                            UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help_scan"));
                        }

                        break;

                    case "teleport":
                        if (!(caller.HasPermission("wreck.teleport") || caller.HasPermission("wreck.*")) && !(caller is ConsolePlayer))
                        {
                            UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_teleport_permission"), Color.red);
                            return;
                        }
                        ulong ulSteamID    = 0;
                        bool  firstSteamID = false;
                        if (oper.Length > 1 && oper[1].isCSteamID(out ulSteamID))
                        {
                            firstSteamID = true;
                        }
                        if (oper.Length > 1)
                        {
                            if (caller is ConsolePlayer)
                            {
                                UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_teleport_not_allowed"));
                                break;
                            }
                            string ch = string.Empty;
                            if (firstSteamID && oper.Length > 2)
                            {
                                ch = oper[2];
                            }
                            else if (!firstSteamID)
                            {
                                ch = oper[1];
                            }
                            switch (ch)
                            {
                            case "b":
                                WreckingBall.Instance.Teleport(player, TeleportType.Barricades, ulSteamID);
                                break;

                            case "s":
                                WreckingBall.Instance.Teleport(player, TeleportType.Structures, ulSteamID);
                                break;

                            case "v":
                                WreckingBall.Instance.Teleport(player, TeleportType.Vehicles, ulSteamID);
                                break;

                            default:
                                UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help_teleport2"));
                                break;
                            }
                        }
                        else
                        {
                            UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help_teleport2"));
                            break;
                        }
                        break;

                    default:
                        if (!(caller.HasPermission("wreck.wreck") || caller.HasPermission("wreck.*")) && !(caller is ConsolePlayer))
                        {
                            UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_wreck_permission"), Color.red);
                            return;
                        }
                        if ((oper.Length == 2 && !(caller is ConsolePlayer)) || (oper.Length == 5 && caller is ConsolePlayer))
                        {
                            if (caller is ConsolePlayer)
                            {
                                if (!cmd.GetVectorFromCmd(2, out position))
                                {
                                    UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help_console"));
                                    break;
                                }
                            }
                            ushort itemID = 0;
                            if (ushort.TryParse(oper[0], out itemID))
                            {
                                DestructionProcessing.Wreck(caller, oper[0], Convert.ToSingle(oper[1]), position, WreckType.Wreck, FlagType.ItemID, 0, itemID);
                            }
                            else
                            {
                                if (oper[1].ToLower() == "nan")
                                {
                                    DestructionProcessing.Wreck(caller, oper[0], float.NaN, position, WreckType.Wreck, FlagType.Normal, 0, 0);
                                }
                                else
                                {
                                    DestructionProcessing.Wreck(caller, oper[0], Convert.ToSingle(oper[1]), position, WreckType.Wreck, FlagType.Normal, 0, 0);
                                }
                            }
                        }
                        else if ((oper.Length == 3 && !(caller is ConsolePlayer)) || (oper.Length == 6 && caller is ConsolePlayer))
                        {
                            if (caller is ConsolePlayer)
                            {
                                if (!cmd.GetVectorFromCmd(3, out position))
                                {
                                    UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help_console"));
                                    break;
                                }
                            }
                            ulong steamID = 0;
                            if (oper[0].isCSteamID(out steamID))
                            {
                                DestructionProcessing.Wreck(caller, oper[1], Convert.ToSingle(oper[2]), position, WreckType.Wreck, FlagType.SteamID, steamID, 0);
                            }
                            else
                            {
                                UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help"));
                            }
                        }
                        else
                        {
                            UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help"));
                            break;
                        }
                        break;
                    }
                    return;
                }
                else
                {
                    UnturnedChat.Say(caller, WreckingBall.Instance.Translate("wreckingball_help"));
                }
            }
        }
コード例 #11
0
        internal void Report(IRocketPlayer caller, ushort itemId, float range, bool printConsole, bool getPinfo, object data, BuildableType type = BuildableType.Element, int count = 0, ulong lockedOwner = 0, int vindex = 0)
        {
            Category cat;

            if (!elements.ContainsKey(itemId))
            {
                if (type == BuildableType.VehicleElement)
                {
                    if (reportLists[BuildableType.VehicleElement].ContainsKey('!'))
                    {
                        reportLists[BuildableType.VehicleElement]['!'] += 1;
                    }
                    else
                    {
                        reportLists[BuildableType.VehicleElement].Add('!', 1);
                    }
                    cat = categorys['!'];
                }
                else
                {
                    if (reportLists[BuildableType.Element].ContainsKey('!'))
                    {
                        reportLists[BuildableType.Element]['!'] += 1;
                    }
                    else
                    {
                        reportLists[BuildableType.Element].Add('!', 1);
                    }
                    cat = categorys['!'];
                }
            }
            else
            {
                if (type == BuildableType.VehicleElement)
                {
                    if (reportLists[BuildableType.VehicleElement].ContainsKey(elements[itemId].CategoryId))
                    {
                        reportLists[BuildableType.VehicleElement][elements[itemId].CategoryId] += 1;
                    }
                    else
                    {
                        reportLists[BuildableType.VehicleElement].Add(elements[itemId].CategoryId, 1);
                    }
                    cat = categorys[elements[itemId].CategoryId];
                }
                else
                {
                    if (reportLists[BuildableType.Element].ContainsKey(elements[itemId].CategoryId))
                    {
                        reportLists[BuildableType.Element][elements[itemId].CategoryId] += 1;
                    }
                    else
                    {
                        reportLists[BuildableType.Element].Add(elements[itemId].CategoryId, 1);
                    }
                    cat = categorys[elements[itemId].CategoryId];
                }
            }
            if (printConsole || !elements.ContainsKey(itemId))
            {
                string stype = type == BuildableType.VehicleElement ? "Vehicle Element: " : "Element: ";
                string msg   = string.Empty;
                ulong  owner = 0;
                InteractableVehicle vehicle = null;
                StructureData       sData   = null;
                BarricadeData       bData   = null;
                string eName = string.Empty;
                if (data is BarricadeData)
                {
                    bData = data as BarricadeData;
                    owner = bData.owner;
                    eName = bData.barricade.asset.itemName;
                }
                else if (data is StructureData)
                {
                    sData = data as StructureData;
                    owner = sData.owner;
                    eName = sData.structure.asset.itemName;
                }
                else if (data is InteractableVehicle)
                {
                    vehicle = data as InteractableVehicle;
                    itemId  = vehicle.id;
                    eName   = vehicle.asset.vehicleName;
                }
                if (type == BuildableType.Vehicle)
                {
                    DestructionProcessing.HasFlaggedElement(vindex > 0 ? vehicle.trainCars[vindex].root : vehicle.transform, out ulong signOwner);
                    msg = string.Format("{0}{1} (Id: {6}:{2}, Instance ID: {8}) @ {3}m, Barricade Count: {4}, Sign by: {7}, Locked By: {5}", stype, cat.Name, itemId, Math.Round(range, 2), count, lockedOwner > 0 ? getPinfo ? WreckingBall.Instance.PInfoGenerateMessage(lockedOwner) : lockedOwner.ToString() : "N/A", vindex > 0 ? "Train car#" + vindex : eName, signOwner > 0 ? getPinfo ? WreckingBall.Instance.PInfoGenerateMessage(signOwner) : signOwner.ToString() : "N/A", vehicle.instanceID.ToString());
                }
                else
                {
                    // Generate the message in another method, as the Player info one requires special data types that have to be loaded before executing a method.
                    msg = string.Format("{0}{1} (Id: {5}:{2}) @ {3}m, Owner: {4}", stype, cat.Name, itemId, Math.Round(range, 2), owner > 0 ? getPinfo ? WreckingBall.Instance.PInfoGenerateMessage(owner) : owner.ToString() : "N/A", eName);
                }


                if (WreckingBall.Instance.Configuration.Instance.LogScans)
                {
                    Logger.Log(msg, cat.Color);
                }
                else
                {
                    Console.ForegroundColor = cat.Color;
                    Console.WriteLine(msg);
                    Console.ResetColor();
                    if (R.Settings.Instance.RCON.Enabled)
                    {
                        RCONServer.Broadcast(msg);
                    }
                }
                if (WreckingBall.Instance.Configuration.Instance.PrintToChat && !(caller is ConsolePlayer))
                {
                    UnturnedChat.Say(caller, msg, Color.yellow);
                }
            }
        }
コード例 #12
0
 internal void Instruct(IRocketPlayer caller)
 {
     UnturnedChat.Say(caller, Translate("wreckingball_queued", DestructionProcessing.dIdxCount, DestructionProcessing.CalcProcessTime()), "https://i.imgur.com/yP6buzW.png");
     if (DestructionProcessing.syncError)
     {
         UnturnedChat.Say(caller, Translate("wreckingball_sync_error"), "https://i.imgur.com/FeIvao9.png");
     }
     UnturnedChat.Say(caller, Translate("wreckingball_prompt"), "https://i.imgur.com/yP6buzW.png");
 }