Jump to content

Brad Copp

Creator
  • Posts

    582
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by Brad Copp

  1. Brad Copp

    Config Being Reset

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

    Stacking barrels /nodes

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

    Loading

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

    New Update - Killing CPU.

    Changed Status from Work in Progress to Cant Reproduce Changed Fixed In to 1.0.6
  5. 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
  6. @SlayersRust minimal patch, checks if planter is in deepsea and not owned by a real player.
  7. //#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
  8. 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 :
  9. Brad Copp

    New Update - Killing CPU.

    Changed Status from Pending to Work in Progress
  10. Thanks manky , i've let him know in support, should be good hopefully!
  11. 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.
  12. Changed Status from Pending to Closed
  13. Brad Copp

    Stacking barrels /nodes

    Changed Fixed In to 1.0.5
  14. 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.
  15. Brad Copp

    decay

    Changed Status from Pending to Feature Request
  16. Brad Copp

    decay

    Hey WarKingz Player Boat decay is in a separate plugin from the deep sea stuff
  17. "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
  18. 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
  19. Brad Copp

    Ez BoomBox

    안타깝게도 붐박스가 스폰될 때 자동으로 라디오 방송 목록이 열리도록 하는 것은 불가능합니다. 방송국 목록 UI는 클라이언트 측 동작이기 때문에 서버에서 강제로 표시할 수 없습니다. 목록을 열려면 플레이어가 직접 라디오와 상호작용해야 합니다.
  20. Hi @BaluDog Gaming Updated download links { "Enabled: ": true, "Chance for NPC to become wounded: ": 100.0, "Wounded timer: ": 20.0, "Chance to die after wounded timer: ": 25, "Do not allow looting of wounded NPC: ": true, "NPC Prefab paths to exclude: ": [ "assets/prefabs/clothes/halloween.scarecrow/scarecrow.prefab", "assets/prefabs/npc/scarecrow/scarecrow.prefab" ], "Exclude NPC where their displayname contains: ": [ "Marauder", "Pirate", "Scarecrow", "scarecrow_dungeon", "Zombie", "Murderer" ], "Boombox Prefab Path: ": "assets/prefabs/voiceaudio/boombox/boombox.deployed.prefab", "Wounded Sounds URLs: ": [ "https://files.serena.gg/files/ogg/pain1.ogg", "https://files.serena.gg/files/ogg/pain2.ogg", "https://files.serena.gg/files/ogg/pain3.ogg", "https://files.serena.gg/files/ogg/pain4.ogg", "https://files.serena.gg/files/ogg/pain5.ogg", "https://files.serena.gg/files/ogg/pain6.ogg" ], "Enable Debug Messages: ": false } let me know if they're accessible
  21. Brad Copp

    Stacking barrels /nodes

    I think this is very close. I was actually testing this today, but could not get it to happen. Added some debugging to the code and will let it run naturally until scheduled restart on a live server, hopefully learn more and then see about preventing it.
  22. Brad Copp

    Stacking barrels /nodes

    Changed Status from Pending to Work in Progress

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
3.1m
Total downloads
Customers
12.1k
Customers served
Files Sold
172k
Total sales
Payments
3.7m
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.