Jump to content

Brad Copp

Creator
  • Posts

    500
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by Brad Copp

  1. Can try mine. { "Control - Schedule (plugin manages open/close mode and timers)": true, "Control - Content (plugin sets island/ghost ship/RHIB spawn settings)": true, "Control - Travel Rules (plugin changes what can pass through the portal)": true, "Control - Building (plugin enforces allow/deny building while in deep sea)": true, "Force apply change on plugin reload? (closes + reopens deep sea to apply spawn changes immediately. Recommend manual close/open instead.)": false, "Schedule": { "Mode (Vanilla | AlwaysOpen | Disabled)": "AlwaysOpen", "Open Time Seconds (vanilla wipeDuration)": 9999999.0, "Cooldown Seconds (time until next opening after closing)": 5400.0, "Final Phase Seconds (used for end weather/ramp)": 1800.0, "Radiation Warning Phase Seconds (entry blocked when time left is below this)": 300.0, "AlwaysOpen - Keep Time Left Around Seconds": 3600.0, "AlwaysOpen - Refill When Below Seconds": 600.0, "Disabled - Push Next Opening To Seconds": 9999999.0, "Set DeepSea Enabled Flag (restart may be required)": true, "DeepSea Enabled": true }, "Content": { "Islands": { "Count": 6, "Spacing Size (bigger = more spread out)": 300.0, "Edge Buffer (bigger = further from outer edge)": 750.0, "Minimum Spacing (hard minimum distance)": 600.0 }, "Ghost Ships": { "Count": 4, "Spacing Size (bigger = more spread out)": 80.0, "Edge Buffer (bigger = further from outer edge)": 450.0, "Minimum Spacing (hard minimum distance)": 400.0 }, "RHIB Groups": { "Count": 4, "Spacing Size (bigger = more spread out)": 10.0, "Edge Buffer (bigger = further from outer edge)": 1150.0, "Minimum Spacing (hard minimum distance)": 300.0 } }, "Travel Rules": { "Allow Any Vehicle": true, "Allowed Vehicle Prefabs (If not all vehicles)": [], "If any vehicle, require boat type only?": false, "Allow Players Without Vehicle": false, "Allow Noclip Players": true, "Allow Non-Player Passengers (npcs)": false, "Allow Non-Player Entity Teleport (npcs)": false, "Allow Entry During Radiation Warning Phase": false, "Ignore Extra Vehicle Onboard Check (eg copter transported on boat": false, "Log entry/exit": false }, "Building": { "Allow Building In Deep Sea": false, "DeepSea - Limit Foundations": false, "DeepSea - Max Foundations Per Player": 20, "DeepSea - GameTip: Show remaining on successful place": true, "DeepSea - GameTip: Show message when denied": true }, "Notifications": { "GameTip - Deep Sea Opening": true, "GameTip - Deep Sea Opened": true, "GameTip - Deep Sea Closing": true, "GameTip - Deep Sea Closed": true }, "Respawn (Crates/NPCs/Hackables)": { "Enable Respawn System": true, "Check Interval Minutes": 15, "Min Distance From Players To Allow Respawn": 200.0, "Respawn Hackable Crates Via Ghostship": true, "Hackable Crates Count": 1 } }
  2. Some sweet screenshots for you @J4V1
  3. Upload the custom map file here as an example - https://mapstr.gg/ It will give you direct download link to the map file which is needed in server.levelurl
  4. Brad Copp

    Config Being Reset

    Hello @Junk Rat Rust Sorry about this, please try the updated version
  5. Brad Copp

    Stacking barrels /nodes

    Changed Status from Work in Progress to Fixed
  6. Brad Copp

    Loading

    Changed Status from Pending to Work in Progress
  7. Brad Copp

    New Update - Killing CPU.

    Changed Status from Work in Progress to Cant Reproduce Changed Fixed In to 1.0.6
  8. Brad Copp

    New Update - Killing CPU.

    Hi Zim, there's not much in the plugin that could put so much stress on the CPU (and doesn't in tests), but i've removed some unnecessary overhead - settings only enforce on server and plugin startup, rather than at a default interval. Hopefuilly this will help.
    It was fine when it was simply an api for spawning npcs. Now it takes away most of the configuration from the plugins that actally use it and stuff it all in one folder. As an example in better npc, the monument configs now only store npc positions, and for every npc, settings have been removed and separated into individual files, all stuffed into the npcspawn folder, with many duplicates and no indication which monument preset they came from. eg if same NPC name in oil rig and large oil rig, you now have two files with the same npc name, and some randomised string for the duplicate, no indication which is from small and large rig . Now i have to spend time figuring out which monument Scientist-56e34e comes from, and which npc is from which oil rig . Bonus star for the new AI brains
  9. @SlayersRust minimal patch, checks if planter is in deepsea and not owned by a real player.
  10. //#define Debug using HarmonyLib; using Oxide.Core.Plugins; using System.Collections.Generic; using UnityEngine; using System; using Oxide.Core; namespace Oxide.Plugins { [Info("Planterbox Defender", "kaucsenta", "3.0.0")] [Description("Only owner, owner team or if clans plugin present, clan can harvest grownable entities")] public class PlanterboxDefender : RustPlugin { [PluginReference] private Plugin Clans, Friends; private static PlanterboxDefender _instance; [AutoPatch] [HarmonyPatch(typeof(GrowableEntity), "TakeClones", new Type[] { typeof(BasePlayer) })] public class Patch_TakeClones { public static bool Prefix(GrowableEntity __instance, BasePlayer player) { return _instance.CanLootGrowableEntity(__instance, player) == null; } } [AutoPatch] [HarmonyPatch(typeof(GrowableEntity), "PickFruit", new Type[] { typeof(BasePlayer), typeof(bool) })] public class Patch_PickFruit { public static bool Prefix(GrowableEntity __instance, BasePlayer player, bool eat) { return _instance.CanLootGrowableEntity(__instance, player) == null; } } private void OnServerInitialized() { _instance = this; permission.RegisterPermission("planterboxdefender.admin", this); } private void OnEntityBuilt(Planner plan, GameObject seed) { var player = plan.GetOwnerPlayer(); var isSeed = seed.GetComponent<GrowableEntity>(); if (player == null || isSeed == null) { return; } var held = player.GetActiveItem(); NextTick(() => { if (isSeed.GetParentEntity() == null || !(isSeed.GetParentEntity() is PlanterBox)) { return; } else { if (!(isSeed.GetParentEntity() is PlanterBox)) { return; } else { if (held == null) { return; } PlanterBox temp = (PlanterBox)isSeed.GetParentEntity(); ulong plantowner = temp.OwnerID; if (plantowner == player.userID) { #if Debug PrintToChat("You can harvest0"); #endif return; } if (SameTeam(plantowner, player.userID)) { #if Debug PrintToChat("You can harvest1"); #endif return; } if (SameClan(plantowner, player.userID)) { #if Debug PrintToChat("You can harvest2"); #endif return; } if (HasFriend(plantowner, player.userID)) { #if Debug PrintToChat("You can harvest3"); #endif return; } BuildingPrivlidge PrivlidgeToHarvest = temp.GetBuildingPrivilege(); if (PrivlidgeToHarvest?.IsAuthed(player) == true) { #if Debug PrintToChat("You can harvest4"); #endif return; } player.ChatMessage(lang.GetMessage("Noharvest", this, player.UserIDString)); #if Debug PrintToChat(player.userID.ToString()); #endif var refund = ItemManager.CreateByName(held.info.shortname, 1); if (refund != null) { player.inventory.GiveItem(refund); } return; } } }); } object CanLootGrowableEntity(GrowableEntity plant, BasePlayer player) { if (player == null) { Puts("Player error"); return true; } if (plant == null) { Puts("Plant error"); #if Debug PrintToChat(player.userID.ToString()); #endif return true; } if (player != null && permission.UserHasPermission(player.UserIDString, "planterboxdefender.admin")) return null; var planter = plant.GetPlanter(); if (planter != null) { ulong plantowner = planter.OwnerID; if (!plantowner.IsSteamId() && DeepSeaManager.IsInsideDeepSea(planter.transform.position)) { #if Debug PrintToChat("DeepSea non-player-owned planter: allow harvest"); #endif return null; } if (plantowner == player.userID) { #if Debug PrintToChat("You can harvest0"); #endif return null; } if (SameTeam(plantowner, player.userID)) { #if Debug PrintToChat("You can harvest1"); #endif return null; } if (SameClan(plantowner, player.userID)) { #if Debug PrintToChat("You can harvest2"); #endif return null; } if (HasFriend(plantowner, player.userID)) { #if Debug PrintToChat("You can harvest3"); #endif return null; } BuildingPrivlidge PrivlidgeToHarvest = planter.GetBuildingPrivilege(); if (PrivlidgeToHarvest?.IsAuthed(player) == true) { #if Debug PrintToChat("You can harvest4"); #endif return null; } player.ChatMessage(lang.GetMessage("Noharvest", this, player.UserIDString)); #if Debug PrintToChat(player.userID.ToString()); #endif return true; } #if Debug PrintToChat("missing planter"); #endif return null; } private bool SameTeam(ulong playerID, ulong friendID) { if (!RelationshipManager.TeamsEnabled()) return false; var playerTeam = RelationshipManager.ServerInstance.FindPlayersTeam(playerID); if (playerTeam == null) return false; var friendTeam = RelationshipManager.ServerInstance.FindPlayersTeam(friendID); if (friendTeam == null) return false; return playerTeam == friendTeam; } private bool HasFriend(ulong playerID, ulong friendID) { if (Friends == null) return false; return (bool)Friends.Call("HasFriend", playerID, friendID); } private bool SameClan(ulong playerID, ulong friendID) { if (Clans == null) return false; //Clans var isMember = Clans.Call("IsClanMember", playerID.ToString(), friendID.ToString()); if (isMember != null) return (bool)isMember; //Rust:IO Clans var playerClan = Clans.Call("GetClanOf", playerID); if (playerClan == null) return false; var friendClan = Clans.Call("GetClanOf", friendID); if (friendClan == null) return false; return (string)playerClan == (string)friendClan; } protected override void LoadDefaultMessages() { lang.RegisterMessages(new Dictionary<string, string> { ["Noharvest"] = "You can't harvest this." }, this); } } }
    Great value and simple for players to use. Will definitely reduce the amount of "i dont remember where i parked" requests
  11. Brad Copp

    New Update - Killing CPU.

    hi zim, will investigate asap. would recommend closing deepsea before the update. Can you please also share your config so can test with the same settings if not defaults. If you need older version, they can be accessed from the updates section by clicking see changelog drop down. Link will be at the bottom :
  12. Brad Copp

    New Update - Killing CPU.

    Changed Status from Pending to Work in Progress
  13. Thanks manky , i've let him know in support, should be good hopefully!
  14. This sounds like vanilla behavior. I recommend submitting a report to facepunch (F7 key) but will think about some built in restrictions. Hi M.Frutos, sorry i missed this for current update but will be added for you.
  15. Changed Status from Pending to Closed
  16. Brad Copp

    Stacking barrels /nodes

    Changed Fixed In to 1.0.5
  17. Brad Copp

    Stacking barrels /nodes

    @Stormo@Kobani@Ac3 Please try with the new version, introduced some cleanups and changed the respawning logic . I was able to replicate the duplication without the plugin active, raised this with FP devs, hopefully something will come of it.
  18. Brad Copp

    decay

    Changed Status from Pending to Feature Request
  19. Brad Copp

    decay

    Hey WarKingz Player Boat decay is in a separate plugin from the deep sea stuff
  20. "Set DeepSea Enabled Flag (restart may be required)": true, "DeepSea Enabled": false above should do the job and you can close existing deepsea with /deepsea forceclose
  21. Brad Copp

    Stacking barrels /nodes

    Still working on this, but i have been able to replicate this without the plugin being loaded between restarts. I hope i'm not sweating over something which is a game bug Will follow up as soon as I have any more findings
  22. Brad Copp

    Ez BoomBox

    안타깝게도 붐박스가 스폰될 때 자동으로 라디오 방송 목록이 열리도록 하는 것은 불가능합니다. 방송국 목록 UI는 클라이언트 측 동작이기 때문에 서버에서 강제로 표시할 수 없습니다. 목록을 열려면 플레이어가 직접 라디오와 상호작용해야 합니다.

About Us

Codefling is the largest marketplace for plugins, maps, tools, and more, making it easy for customers to discover new content and for creators to monetize their work.

Downloads
2.5m
Total downloads
Customers
11.3k
Customers served
Files Sold
161.1k
Total sales
Payments
3.5m
Processed total
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.