-
Posts
582 -
Joined
-
Last visited
-
Days Won
8
Content Type
Profiles
Warranty Claims
Downloads
Forums
Store
Services
Downloads Plus Support
DOWNLOADS EXTRA
Reels
Support Center
Everything posted by Brad Copp
-
Hello @Junk Rat Rust Sorry about this, please try the updated version
-
Changed Status from Work in Progress to Fixed
-
Changed Status from Pending to Work in Progress
-
Changed Status from Work in Progress to Cant Reproduce Changed Fixed In to 1.0.6
-
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
- 477 comments
-
- 11
-
-
Hello can you please fix this to ignore the Deep Sea Floating city Planters?
Brad Copp replied to SlayersRust's Support Report in Support
@SlayersRust minimal patch, checks if planter is in deepsea and not owned by a real player. -
Hello can you please fix this to ignore the Deep Sea Floating city Planters?
Brad Copp replied to SlayersRust's Support Report in Support
//#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); } } } -
- 2 comments
-
- #karuza
- #karuza vehicle
-
(and 1 more)
Tagged with:
-
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 :
-
Changed Status from Pending to Work in Progress
-
- 1 comment
-
- 1
-
-
- #escape from tarkov
- #eft
- (and 11 more)
-
Changed Status from Pending to Closed
-
Changed Fixed In to 1.0.5
-
@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.
-
"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
-
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
-
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
-
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.
-
Changed Status from Pending to Work in Progress