I've made a fix to v2.2.75 to get the mining quarries (this includes pump jacks) and the excavator working with regard to their tick rates. Everyone is welcome to use it :)
I've also figured out some other setting and things that I've been able to change (such as inventory size) so I'll probably be back with further updates. @Ryan is there a GitHub repo or something where I submit my changes?
Fix for Quarries and ExcavatorSuggestion
Please do not post random versions of plugins in threads. If you have a fix for it, please use the code block to show the affected portion.
Here's the patch:
diff --git "a/GatherManager.cs" "b/GatherManager.cs"
index aaa5748..e81da1b 100644
--- "a/GatherManager.cs"
+++ "b/GatherManager.cs"
@@ -124,46 +124,14 @@ namespace Oxide.Plugins
validDispensers.Add("corpse", ResourceDispenser.GatherType.Flesh);
validDispensers.Add("flesh", ResourceDispenser.GatherType.Flesh);
- foreach (var excavator in UnityEngine.Object.FindObjectsOfType<ExcavatorArm>())
- {
- if (ExcavatorResourceTickRate != DefaultMiningQuarryResourceTickRate)
- {
- excavator.CancelInvoke("ProcessResources");
- excavator.InvokeRepeating("ProcessResources", ExcavatorResourceTickRate, ExcavatorResourceTickRate);
- }
-
- if (ExcavatorBeltSpeedMax != DefaultExcavatorBeltSpeedMax)
- {
- excavator.beltSpeedMax = ExcavatorBeltSpeedMax;
- }
-
- if (ExcavatorTimeForFullResources != DefaultExcavatorTimeForFullResources)
- {
- excavator.timeForFullResources = ExcavatorTimeForFullResources;
- }
- }
+ updateQuarries();
+ updateExcavators();
}
private void Unload()
{
- foreach (var excavator in UnityEngine.Object.FindObjectsOfType<ExcavatorArm>())
- {
- if (ExcavatorResourceTickRate != DefaultMiningQuarryResourceTickRate)
- {
- excavator.CancelInvoke("ProcessResources");
- excavator.InvokeRepeating("ProcessResources", DefaultMiningQuarryResourceTickRate, DefaultMiningQuarryResourceTickRate);
- }
-
- if (ExcavatorBeltSpeedMax != DefaultExcavatorBeltSpeedMax)
- {
- excavator.beltSpeedMax = DefaultExcavatorBeltSpeedMax;
- }
-
- if (ExcavatorTimeForFullResources != DefaultExcavatorTimeForFullResources)
- {
- excavator.timeForFullResources = DefaultExcavatorTimeForFullResources;
- }
- }
+ restoreQuarries();
+ restoreExcavators();
}
protected override void LoadDefaultConfig() => PrintWarning("New configuration file created.");
@@ -431,11 +399,34 @@ namespace Oxide.Plugins
MiningQuarryResourceTickRate = modifier;
SetConfigValue("Options", "MiningQuarryResourceTickRate", MiningQuarryResourceTickRate);
arg.ReplyWith(string.Format(ModifySpeed, modifier));
+ updateQuarries();
+ }
+
+ private void updateQuarries()
+ {
var quarries = UnityEngine.Object.FindObjectsOfType<MiningQuarry>();
- foreach (var quarry in quarries.Where(quarry => quarry.IsOn()))
+ foreach (var quarry in quarries)
{
- quarry.CancelInvoke("ProcessResources");
- quarry.InvokeRepeating("ProcessResources", MiningQuarryResourceTickRate, MiningQuarryResourceTickRate);
+ if (quarry.IsOn() && quarry.processRate != MiningQuarryResourceTickRate)
+ {
+ quarry.CancelInvoke(quarry.ProcessResources);
+ quarry.InvokeRepeating(quarry.ProcessResources, MiningQuarryResourceTickRate, MiningQuarryResourceTickRate);
+ }
+ quarry.processRate = MiningQuarryResourceTickRate;
+ }
+ }
+
+ private void restoreQuarries()
+ {
+ var quarries = UnityEngine.Object.FindObjectsOfType<MiningQuarry>();
+ foreach (var quarry in quarries)
+ {
+ if (quarry.IsOn() && quarry.processRate != DefaultMiningQuarryResourceTickRate)
+ {
+ quarry.CancelInvoke(quarry.ProcessResources);
+ quarry.InvokeRepeating(quarry.ProcessResources, DefaultMiningQuarryResourceTickRate, DefaultMiningQuarryResourceTickRate);
+ }
+ quarry.processRate = DefaultMiningQuarryResourceTickRate;
}
}
@@ -464,11 +455,42 @@ namespace Oxide.Plugins
ExcavatorResourceTickRate = modifier;
SetConfigValue("Options", "ExcavatorResourceTickRate", ExcavatorResourceTickRate);
arg.ReplyWith(string.Format(ModifySpeed, modifier));
- var excavators = UnityEngine.Object.FindObjectsOfType<MiningQuarry>();
- foreach (var excavator in excavators.Where(excavator => excavator.IsOn()))
+ updateExcavators();
+ }
+
+ private void updateExcavators()
+ {
+ var excavators = UnityEngine.Object.FindObjectsOfType<ExcavatorArm>();
+ foreach (var excavator in excavators)
{
- excavator.CancelInvoke("ProcessResources");
- excavator.InvokeRepeating("ProcessResources", ExcavatorResourceTickRate, ExcavatorResourceTickRate);
+ if (excavator.IsOn() && excavator.resourceProductionTickRate != MiningQuarryResourceTickRate)
+ {
+ excavator.CancelInvoke(excavator.ProduceResources);
+ excavator.InvokeRepeating(excavator.ProduceResources, ExcavatorResourceTickRate, ExcavatorResourceTickRate);
+ }
+ excavator.resourceProductionTickRate = MiningQuarryResourceTickRate;
+
+ excavator.beltSpeedMax = ExcavatorBeltSpeedMax;
+
+ excavator.timeForFullResources = ExcavatorTimeForFullResources;
+ }
+ }
+
+ private void restoreExcavators()
+ {
+ var excavators = UnityEngine.Object.FindObjectsOfType<ExcavatorArm>();
+ foreach (var excavator in excavators)
+ {
+ if (excavator.IsOn() && excavator.resourceProductionTickRate != MiningQuarryResourceTickRate)
+ {
+ excavator.CancelInvoke(excavator.ProduceResources);
+ excavator.InvokeRepeating(excavator.ProduceResources, DefaultExcavatorResourceTickRate, DefaultExcavatorResourceTickRate);
+ }
+ excavator.resourceProductionTickRate = MiningQuarryResourceTickRate;
+
+ excavator.beltSpeedMax = DefaultExcavatorBeltSpeedMax;
+
+ excavator.timeForFullResources = DefaultExcavatorTimeForFullResources;
}
}
@@ -583,9 +605,12 @@ namespace Oxide.Plugins
private void OnMiningQuarryEnabled(MiningQuarry quarry)
{
- if (MiningQuarryResourceTickRate == DefaultMiningQuarryResourceTickRate) return;
- quarry.CancelInvoke("ProcessResources");
- quarry.InvokeRepeating("ProcessResources", MiningQuarryResourceTickRate, MiningQuarryResourceTickRate);
+ if (quarry.IsOn() && quarry.processRate != MiningQuarryResourceTickRate)
+ {
+ quarry.CancelInvoke(quarry.ProcessResources);
+ quarry.InvokeRepeating(quarry.ProcessResources, MiningQuarryResourceTickRate, MiningQuarryResourceTickRate);
+ }
+ quarry.processRate = MiningQuarryResourceTickRate;
}
private void LoadConfigValues()
Or view here: https://www.diffchecker.com/LukK1PUT
Merged post
Update - Small fix to my fix:
diff --git "a/D:\\plugins\\GatherManager.cs" "b/D:\\rustserver\\oxide\\plugins\\GatherManager.cs"
index aaa5748..83a4ce1 100644
--- "a/D:\\plugins\\GatherManager.cs"
+++ "b/D:\\rustserver\\oxide\\plugins\\GatherManager.cs"
@@ -124,46 +124,14 @@ namespace Oxide.Plugins
validDispensers.Add("corpse", ResourceDispenser.GatherType.Flesh);
validDispensers.Add("flesh", ResourceDispenser.GatherType.Flesh);
- foreach (var excavator in UnityEngine.Object.FindObjectsOfType<ExcavatorArm>())
- {
- if (ExcavatorResourceTickRate != DefaultMiningQuarryResourceTickRate)
- {
- excavator.CancelInvoke("ProcessResources");
- excavator.InvokeRepeating("ProcessResources", ExcavatorResourceTickRate, ExcavatorResourceTickRate);
- }
-
- if (ExcavatorBeltSpeedMax != DefaultExcavatorBeltSpeedMax)
- {
- excavator.beltSpeedMax = ExcavatorBeltSpeedMax;
- }
-
- if (ExcavatorTimeForFullResources != DefaultExcavatorTimeForFullResources)
- {
- excavator.timeForFullResources = ExcavatorTimeForFullResources;
- }
- }
+ updateQuarries();
+ updateExcavators();
}
private void Unload()
{
- foreach (var excavator in UnityEngine.Object.FindObjectsOfType<ExcavatorArm>())
- {
- if (ExcavatorResourceTickRate != DefaultMiningQuarryResourceTickRate)
- {
- excavator.CancelInvoke("ProcessResources");
- excavator.InvokeRepeating("ProcessResources", DefaultMiningQuarryResourceTickRate, DefaultMiningQuarryResourceTickRate);
- }
-
- if (ExcavatorBeltSpeedMax != DefaultExcavatorBeltSpeedMax)
- {
- excavator.beltSpeedMax = DefaultExcavatorBeltSpeedMax;
- }
-
- if (ExcavatorTimeForFullResources != DefaultExcavatorTimeForFullResources)
- {
- excavator.timeForFullResources = DefaultExcavatorTimeForFullResources;
- }
- }
+ restoreQuarries();
+ restoreExcavators();
}
protected override void LoadDefaultConfig() => PrintWarning("New configuration file created.");
@@ -431,11 +399,34 @@ namespace Oxide.Plugins
MiningQuarryResourceTickRate = modifier;
SetConfigValue("Options", "MiningQuarryResourceTickRate", MiningQuarryResourceTickRate);
arg.ReplyWith(string.Format(ModifySpeed, modifier));
+ updateQuarries();
+ }
+
+ private void updateQuarries()
+ {
var quarries = UnityEngine.Object.FindObjectsOfType<MiningQuarry>();
- foreach (var quarry in quarries.Where(quarry => quarry.IsOn()))
+ foreach (var quarry in quarries)
{
- quarry.CancelInvoke("ProcessResources");
- quarry.InvokeRepeating("ProcessResources", MiningQuarryResourceTickRate, MiningQuarryResourceTickRate);
+ if (quarry.IsOn() && quarry.processRate != MiningQuarryResourceTickRate)
+ {
+ quarry.CancelInvoke(quarry.ProcessResources);
+ quarry.InvokeRepeating(quarry.ProcessResources, MiningQuarryResourceTickRate, MiningQuarryResourceTickRate);
+ }
+ quarry.processRate = MiningQuarryResourceTickRate;
+ }
+ }
+
+ private void restoreQuarries()
+ {
+ var quarries = UnityEngine.Object.FindObjectsOfType<MiningQuarry>();
+ foreach (var quarry in quarries)
+ {
+ if (quarry.IsOn() && quarry.processRate != DefaultMiningQuarryResourceTickRate)
+ {
+ quarry.CancelInvoke(quarry.ProcessResources);
+ quarry.InvokeRepeating(quarry.ProcessResources, DefaultMiningQuarryResourceTickRate, DefaultMiningQuarryResourceTickRate);
+ }
+ quarry.processRate = DefaultMiningQuarryResourceTickRate;
}
}
@@ -464,11 +455,42 @@ namespace Oxide.Plugins
ExcavatorResourceTickRate = modifier;
SetConfigValue("Options", "ExcavatorResourceTickRate", ExcavatorResourceTickRate);
arg.ReplyWith(string.Format(ModifySpeed, modifier));
- var excavators = UnityEngine.Object.FindObjectsOfType<MiningQuarry>();
- foreach (var excavator in excavators.Where(excavator => excavator.IsOn()))
+ updateExcavators();
+ }
+
+ private void updateExcavators()
+ {
+ var excavators = UnityEngine.Object.FindObjectsOfType<ExcavatorArm>();
+ foreach (var excavator in excavators)
{
- excavator.CancelInvoke("ProcessResources");
- excavator.InvokeRepeating("ProcessResources", ExcavatorResourceTickRate, ExcavatorResourceTickRate);
+ if (excavator.IsOn() && excavator.resourceProductionTickRate != ExcavatorResourceTickRate)
+ {
+ excavator.CancelInvoke(excavator.ProduceResources);
+ excavator.InvokeRepeating(excavator.ProduceResources, ExcavatorResourceTickRate, ExcavatorResourceTickRate);
+ }
+ excavator.resourceProductionTickRate = ExcavatorResourceTickRate;
+
+ excavator.beltSpeedMax = ExcavatorBeltSpeedMax;
+
+ excavator.timeForFullResources = ExcavatorTimeForFullResources;
+ }
+ }
+
+ private void restoreExcavators()
+ {
+ var excavators = UnityEngine.Object.FindObjectsOfType<ExcavatorArm>();
+ foreach (var excavator in excavators)
+ {
+ if (excavator.IsOn() && excavator.resourceProductionTickRate != DefaultExcavatorResourceTickRate)
+ {
+ excavator.CancelInvoke(excavator.ProduceResources);
+ excavator.InvokeRepeating(excavator.ProduceResources, DefaultExcavatorResourceTickRate, DefaultExcavatorResourceTickRate);
+ }
+ excavator.resourceProductionTickRate = DefaultExcavatorResourceTickRate;
+
+ excavator.beltSpeedMax = DefaultExcavatorBeltSpeedMax;
+
+ excavator.timeForFullResources = DefaultExcavatorTimeForFullResources;
}
}
@@ -583,9 +605,12 @@ namespace Oxide.Plugins
private void OnMiningQuarryEnabled(MiningQuarry quarry)
{
- if (MiningQuarryResourceTickRate == DefaultMiningQuarryResourceTickRate) return;
- quarry.CancelInvoke("ProcessResources");
- quarry.InvokeRepeating("ProcessResources", MiningQuarryResourceTickRate, MiningQuarryResourceTickRate);
+ if (quarry.IsOn() && quarry.processRate != MiningQuarryResourceTickRate)
+ {
+ quarry.CancelInvoke(quarry.ProcessResources);
+ quarry.InvokeRepeating(quarry.ProcessResources, MiningQuarryResourceTickRate, MiningQuarryResourceTickRate);
+ }
+ quarry.processRate = MiningQuarryResourceTickRate;
}
private void LoadConfigValues()
Gather Manager v2.2.75 - Quarry Patch
Merged post
Another update to this patch:
So that this thread doesn't end up massive with more and more updates, I've push the changes to my own GitHub repo. Any addition changes will be made there until I here back from @Ryan.I'll also be making other changes on other branches to add aditional features.