Here you go: using MSCLoader; using UnityEngine; using System.Linq; using HutongGames.PlayMaker; using HutongGames.PlayMaker.Actions; using RaycastCore;
namespace AutoFuel { public class FuelingTrigger : MonoBehaviour { public PistolAutoFuelController pistolController; public PlayMakerFSM fuelingFsm; public FsmFloat fuelLevel; public FsmString fuelType; public FsmString fluidType; public FsmString name; public FsmGameObject fluidTrigger; public FsmGameObject vehicleGUI; public FsmGameObject vehicleTank; public FsmBool pouring; public FsmFloat maxCapacity;
public FsmFloat tankFuelLevel; public FsmFloat tankFluidSpecific;
public FsmFloat fluidTriggerFluidLevel; public float fillSpeed; public SphereCollider collider; public Transform pouringSound; public Transform disabledAudioParent; public Transform enabledAudioParent; public PlayMakerFSM screwFsm;
public bool filling; public bool wasFilling;
public PlayMakerFSM fluidTriggerFsm; public FsmGameObject pump; public PlayMakerFSM tankFsm; public FsmString fuelType2;
public FsmBool pour; public Vector3 nozzlePlace; public Vector3 nozzleRotation;
public class PistolHandTriggerController : MonoBehaviour { public PistolAutoFuelController autoFuelController; public PlayMakerFSM useFsm; public FsmBool guiUse = PlayMakerGlobals.Instance.Variables.GetFsmBool("GUIuse"); public FsmString guiText = PlayMakerGlobals.Instance.Variables.GetFsmString("GUIinteraction"); public FsmBool handLeft = PlayMakerGlobals.Instance.Variables.GetFsmBool("PlayerHandLeft"); public delegate void ContinueAutoMode(); public event ContinueAutoMode continueAutoMode;
useFsm.enabled = false; } public FsmBool storeOpen; public FsmBool switchLock; public float distanceThreshold = 1f; public FsmGameObject pistolOnPump; public FsmGameObject pistolInHand; public FsmGameObject hand;
public FsmFloat fuel; public FsmFloat fuelPrice; public FsmFloat cost; public float previousPrice; public FsmFloat fuelPurchaseCost;
public TextMesh literText; public TextMesh priceText; public Animation fuelingAnim; public bool calculateFuel; public FsmFloat gasStatistic; public float previousLiters; public FsmFloat distanceFromPump; public float maxDistance = 3f; public void Update() { if (calculateFuel) { cost.Value = fuel.Value * fuelPrice.Value; literText.text = $"{(fuel.Value * 10f):0000}"; priceText.text = $"{cost.Value:0000}";
Oh wow, thank you. It is too hard for you to fix? I'm sort of getting my head around how it works but it's all those getchild's that are quite confusing amongst, well, all of it haha.
It is impossible for me to fix it because I never experience the problems with the mod that get reported. I'm almost starting to think the modloader is sabotaging some of my mods for other players but that's just narcissistic nope it doesn't seem like it
MSCLoader ERROR: Mod AutoFuel throw an error! Details: Transform child out of bounds in AutoFuel.FuelingTrigger AddFuelTrigger(UnityEngine.Transform) UnityEngine.UnityException: Transform child out of bounds at (wrapper managed-to-native) UnityEngine.Transform:GetChild (int) at AutoFuel.AutoFuel.AddFuelTrigger (UnityEngine.Transform fuelFiller) [0x00000] in <filename unknown>:0 at AutoFuel.AutoFuel.SecondPassOnLoad () [0x00000] in <filename unknown>:0 at MSCLoader.ModLoader+<LoadModsAsync>d__40.MoveNext () [0x00000] in <filename unknown>:0
Does that not help at all? Its aas though its trying to find a non-existant child. I poked around the hierachy and to my zero experience eye is looks like the line switchLock = GameObject.Find("STORE").transform.GetChild(6).GetChild(25).GetChild(2).GetChild(1).GetComponent().FsmVariables.FindFsmBool("SwitchOn");
could be an issue. I couldn't find the SwitchOn thing anywhere. I'm really wanting to help out I'm just not very good at this lol.
Well I looked into it, and I don't know why this stuff runs for me. That object indeed isn't there, the object it should reference is switch_pumps instead
I guess I just have the mojo version of the modloader, the one that makes it work anyway :D
72 comments
Having saved the game at Teimo's Toilet with your vehicle you want to fill at the pumps:
1. Freshly loaded up MSC.
2. Load your save.
3. Teimo's shop is open.
It will work. If you reload a save without first closing MSC and then reloading MSC and then reloading your save, the mod won't work.
I'm trying to work out why but it's testing the limits of my brain's abilities due to my being a casual tinkerer.
DO NOT CLICK ON PUMPS IF TAIMO IS NOT OPEN - WILL BUG your hands
using MSCLoader;
using UnityEngine;
using System.Linq;
using HutongGames.PlayMaker;
using HutongGames.PlayMaker.Actions;
using RaycastCore;
namespace AutoFuel
{
public class FuelingTrigger : MonoBehaviour
{
public PistolAutoFuelController pistolController;
public PlayMakerFSM fuelingFsm;
public FsmFloat fuelLevel;
public FsmString fuelType;
public FsmString fluidType;
public FsmString name;
public FsmGameObject fluidTrigger;
public FsmGameObject vehicleGUI;
public FsmGameObject vehicleTank;
public FsmBool pouring;
public FsmFloat maxCapacity;
public FsmFloat tankFuelLevel;
public FsmFloat tankFluidSpecific;
public FsmFloat fluidTriggerFluidLevel;
public float fillSpeed;
public SphereCollider collider;
public Transform pouringSound;
public Transform disabledAudioParent;
public Transform enabledAudioParent;
public PlayMakerFSM screwFsm;
public bool filling;
public bool wasFilling;
public PlayMakerFSM fluidTriggerFsm;
public FsmGameObject pump;
public PlayMakerFSM tankFsm;
public FsmString fuelType2;
public FsmBool pour;
public Vector3 nozzlePlace;
public Vector3 nozzleRotation;
public void Start()
{
fuelingFsm = GetComponent();
fuelLevel = fuelingFsm.FsmVariables.FindFsmFloat("FuelLevel");
fuelType = fuelingFsm.FsmVariables.FindFsmString("FuelType");
fuelType2 = fuelingFsm.FsmVariables.FindFsmString("FuelType2");
fluidType = fuelingFsm.FsmVariables.FindFsmString("FluidType");
name = fuelingFsm.FsmVariables.FindFsmString("Name");
fluidTrigger = fuelingFsm.FsmVariables.FindFsmGameObject("FluidTrigger");
vehicleGUI = fuelingFsm.FsmVariables.FindFsmGameObject("VehicleGUI");
vehicleTank = fuelingFsm.FsmVariables.FindFsmGameObject("VehicleTank");
pouring = fuelingFsm.FsmVariables.FindFsmBool("Pouring");
maxCapacity = fuelingFsm.FsmVariables.FindFsmFloat("MaxCapacity");
GameObject.Find("FuelPouringSound");
tankFsm = vehicleTank.Value.GetComponent();
tankFuelLevel = tankFsm.FsmVariables.FindFsmFloat("FuelLevel");
fuelingFsm.enabled = false;
collider = transform.GetComponent();
pouringSound = (fuelingFsm.FsmStates.FirstOrDefault((FsmState state) => state.Name == "Jerry can").Actions[1] as SetParent).gameObject.GameObject.Value.transform;
enabledAudioParent = (fuelingFsm.FsmStates.FirstOrDefault((FsmState state) => state.Name == "Jerry can").Actions[1] as SetParent).parent.Value.transform;
disabledAudioParent = (fuelingFsm.FsmStates.FirstOrDefault((FsmState state) => state.Name == "State 4").Actions[0] as SetParent).parent.Value.transform;
screwFsm = transform.parent.GetComponent();
}
public void Update()
{
if (tankFuelLevel.Value >= (maxCapacity.Value - ((pistolController != null && pistolController.autoMode) ? 0.4f : 0)) || !(pouring == null || pouring.Value))
filling = false;
if (filling)
{
if(!wasFilling && pour != null)
pour.Value = true;
wasFilling = true;
tankFuelLevel.Value += fillSpeed * Time.deltaTime;
if (fluidTriggerFluidLevel != null)
fluidTriggerFluidLevel.Value -= fillSpeed * Time.deltaTime;
if (tankFluidSpecific != null)
tankFluidSpecific.Value += fillSpeed * Time.deltaTime;
fuelLevel.Value = tankFuelLevel.Value;
if (cInput.GetButtonDown("Use") && pistolController?.autoMode == false)
SetupAutoMode();
}
else if (wasFilling)
{
wasFilling = false;
if (pour != null)
pour.Value = false;
if(pump != null)
{
MasterAudio.StopAllOfSound("Store");
MasterAudio.PlaySound3DAndForget("Store", pump.Value.transform, false, 1f, null, 0f, "fueling_3");
}
pouringSound.parent = disabledAudioParent;
pouringSound.localPosition = Vector3.zero;
pouringSound.localEulerAngles = Vector3.zero;
}
}
public void SetupAutoMode()
{
pistolController.Setup(transform.parent.parent, nozzlePlace, nozzleRotation, Vector3.one, (LayerMask)0);
collider.radius = 0.1f;
vehicleGUI.Value.SetActive(false);
if (screwFsm != null)
screwFsm.enabled = false;
}
public void ResetAutoMode()
{
collider.radius = 0.03f;
OnTriggerExit();
if (screwFsm != null)
screwFsm.enabled = true;
}
public void OnTriggerEnter(Collider col)
{
if (col.tag == "Trigger")
{
fluidTrigger.Value = col.gameObject;
fluidTriggerFsm = fluidTrigger.Value.GetComponent();
fluidType.Value = "Fluid" + fluidTriggerFsm?.FsmVariables.FindFsmString("FluidType")?.Value;
name.Value = fluidTrigger.Value.name;
if (fluidType.Value == fuelType.Value || (fuelType2 != null && fluidType.Value == fuelType2.Value))
{
switch (name.Value)
{
case "FluidTrigger":
// sounds
pouring = fluidTriggerFsm.FsmVariables.GetFsmBool("Pouring");
pump = null;
fluidTriggerFluidLevel = fluidTriggerFsm.FsmVariables.FindFsmFloat("Fluid");
fillSpeed = 0.7f;
tankFluidSpecific = tankFsm.FsmVariables.FindFsmFloat(fluidType.Value);
filling = true;
vehicleGUI.Value.SetActive(true);
pouringSound.parent = enabledAudioParent;
pouringSound.localPosition = Vector3.zero;
pouringSound.localEulerAngles = Vector3.zero;
break;
case "FuelNozzle":
// sounds
pistolController = fluidTrigger.Value.GetComponent();
pistolController.currentTrigger = this;
pour = fluidTriggerFsm.FsmVariables.GetFsmBool("Pour");
pouring = null;
pump = fluidTriggerFsm.FsmVariables.FindFsmGameObject("Pump");
fluidTriggerFluidLevel = fluidTriggerFsm.FsmVariables.FindFsmFloat("Fluid");
fillSpeed = 0.85f;
tankFluidSpecific = tankFsm.FsmVariables.FindFsmFloat(fluidType.Value);
filling = true;
if(pistolController?.autoMode == false)
vehicleGUI.Value.SetActive(true);
break;
}
}
}
}
public void OnDisable()
{
wasFilling = false;
filling = false;
if (pour != null)
pour.Value = false;
if (pump != null)
{
MasterAudio.StopAllOfSound("Store");
MasterAudio.PlaySound3DAndForget("Store", pump.Value.transform, false, 1f, null, 0f, "fueling_3");
}
vehicleGUI.Value.SetActive(false);
pouringSound.parent = disabledAudioParent;
pouringSound.localPosition = Vector3.zero;
pouringSound.localEulerAngles = Vector3.zero;
}
public void OnTriggerExit()
{
vehicleGUI.Value.SetActive(false);
filling = false;
}
}
public class PistolAutoFuelController : MonoBehaviour
{
public PistolHandTriggerController handTrigger;
public Transform ogParent;
public GameObject hand;
public float distanceThreshold = 0.8f;
public FsmBool guiUse = PlayMakerGlobals.Instance.Variables.GetFsmBool("GUIuse");
public FsmString guiText = PlayMakerGlobals.Instance.Variables.GetFsmString("GUIinteraction");
public FsmBool handLeft = PlayMakerGlobals.Instance.Variables.GetFsmBool("PlayerHandLeft");
public GameObject nozzleObject;
public bool autoMode;
public CapsuleCollider collider;
public FuelingTrigger currentTrigger;
public void Start()
{
nozzleObject = transform.parent.gameObject;
collider = transform.GetComponent();
handTrigger.continueAutoMode += SetupNozzle;
}
public void Setup(Transform newParent, Vector3 position, Vector3 rotation, Vector3 scale, LayerMask layer)
{
this.newParent = newParent;
this.position = position;
this.rotation = rotation;
this.scale = scale;
this.layer = layer;
handTrigger.EnterAutoMode();
}
public Transform newParent;
public Vector3 position;
public Vector3 rotation;
public Vector3 scale;
public LayerMask layer;
public void SetupNozzle()
{
collider.radius = 0.25f;
gameObject.layer = layer;
autoMode = true;
nozzleObject.transform.parent = newParent;
nozzleObject.layer = layer;
nozzleObject.transform.localScale = scale;
nozzleObject.transform.localEulerAngles = rotation;
nozzleObject.transform.localPosition = position;
}
public void Reset()
{
collider.radius = 0.08f;
gameObject.layer = (LayerMask)16;
autoMode = false;
nozzleObject.transform.parent = ogParent;
nozzleObject.layer = (LayerMask)20;
nozzleObject.transform.localScale = new Vector3(-1f, 1f, 1f);
nozzleObject.transform.localEulerAngles = Vector3.zero;
nozzleObject.transform.localPosition = Vector3.zero;
handTrigger.ExitAutoMode();
if(currentTrigger != null)
currentTrigger.ResetAutoMode();
}
public void OnRaycastEnter(RaycastHit hit) => PlayerRaycast.Instance.IsInRange(hit, distanceThreshold);
public void OnRaycastStay(RaycastHit hit)
{
if (PlayerRaycast.Instance.IsInRange(hit, distanceThreshold) && autoMode)
{
if (!handLeft.Value)
{
guiUse.Value = true;
guiText.Value = "PICK NOZZLE";
if (Input.GetMouseButtonDown(0))
{
Reset();
OnRaycastExit(hit);
}
}
if(!didSetActive)
currentTrigger.vehicleGUI.Value.gameObject.SetActive(true);
didSetActive = true;
}
}
public bool didSetActive;
public void OnRaycastExit(RaycastHit hit)
{
if(PlayerRaycast.Instance.IsInRange(hit, distanceThreshold))
{
guiUse.Value = false;
guiText.Value = "";
if(didSetActive)
currentTrigger.vehicleGUI.Value.gameObject.SetActive(false);
didSetActive = false;
}
}
}
public class PistolHandTriggerController : MonoBehaviour
{
public PistolAutoFuelController autoFuelController;
public PlayMakerFSM useFsm;
public FsmBool guiUse = PlayMakerGlobals.Instance.Variables.GetFsmBool("GUIuse");
public FsmString guiText = PlayMakerGlobals.Instance.Variables.GetFsmString("GUIinteraction");
public FsmBool handLeft = PlayMakerGlobals.Instance.Variables.GetFsmBool("PlayerHandLeft");
public delegate void ContinueAutoMode();
public event ContinueAutoMode continueAutoMode;
public GameObject cops;
public void Start()
{
useFsm = GetComponent();
fuelingAnim = GameObject.Find("PLAYER/Pivot/AnimPivot/Camera/FPSCamera/FPSCamera/Fuel").transform.GetChild(0).GetComponent();
cost = useFsm.FsmVariables.FindFsmFloat("Cost");
distanceFromPump = useFsm.FsmVariables.FindFsmFloat("Distance");
fuel = useFsm.FsmVariables.FindFsmFloat("Fuel");
fuelPrice = useFsm.FsmVariables.FindFsmFloat("FuelPrice");
cops = (useFsm.FsmStates.FirstOrDefault((FsmState state) => state.Name == "Check lock").Actions[0] as IsActive).gameObject.Value;
storeOpen = GameObject.Find("STORE").GetComponents()[1].FsmVariables.FindFsmBool("OpenStore");
switchLock = GameObject.Find("STORE").transform.GetChild(6).GetChild(25).GetChild(2).GetChild(1).GetComponent().FsmVariables.FindFsmBool("SwitchOn");
fuelPurchaseCost = useFsm.FsmVariables.FindFsmGameObject("CashRegister").Value.GetComponent().FsmVariables.FindFsmFloat("FuelPurchase");
pistolOnPump = useFsm.FsmVariables.FindFsmGameObject("Pistol");
pistolInHand = useFsm.FsmVariables.FindFsmGameObject("PistolInHand");
hand = useFsm.FsmVariables.FindFsmGameObject("FuelHand");
literText = transform.parent.GetChild(1).GetChild(0).GetComponent();
priceText = transform.parent.GetChild(1).GetChild(1).GetComponent();
useFsm.enabled = false;
}
public FsmBool storeOpen;
public FsmBool switchLock;
public float distanceThreshold = 1f;
public FsmGameObject pistolOnPump;
public FsmGameObject pistolInHand;
public FsmGameObject hand;
public FsmFloat fuel;
public FsmFloat fuelPrice;
public FsmFloat cost;
public float previousPrice;
public FsmFloat fuelPurchaseCost;
public TextMesh literText;
public TextMesh priceText;
public Animation fuelingAnim;
public bool calculateFuel;
public FsmFloat gasStatistic;
public float previousLiters;
public FsmFloat distanceFromPump;
public float maxDistance = 3f;
public void Update()
{
if (calculateFuel)
{
cost.Value = fuel.Value * fuelPrice.Value;
literText.text = $"{(fuel.Value * 10f):0000}";
priceText.text = $"{cost.Value:0000}";
if(cost.Value > previousPrice)
fuelPurchaseCost.Value += (cost.Value - previousPrice);
previousPrice = cost.Value;
if(gasStatistic != null && fuel.Value > previousLiters)
gasStatistic.Value += (fuel.Value - previousLiters);
previousLiters = fuel.Value;
distanceFromPump.Value = Vector3.Distance(transform.position, pistolInHand.Value.transform.position);
if(distanceFromPump.Value >= maxDistance)
DropNozzle();
}
if (!animationPlayed && !fuelingAnim.IsPlaying("fueling_pistol_drop"))
{
animationPlayed = true;
if (!intoAutoMode)
FinishDroppingNozzle();
else
FinishAutoMode();
intoAutoMode = false;
}
}
public bool animationPlayed;
public bool intoAutoMode;
public void FinishDroppingNozzle()
{
MasterAudio.PlaySound3DAtTransformAndForget("Store", transform, 1f, null, 0f, "fueling_nozzle");
calculateFuel = false;
pistolInHand.Value.SetActive(false);
pistolOnPump.Value.SetActive(true);
hand.Value.SetActive(false);
handLeft.Value = false;
}
public void FinishAutoMode()
{
hand.Value.SetActive(false);
handLeft.Value = false;
continueAutoMode?.Invoke();
}
public void EnterAutoMode()
{
intoAutoMode = true;
fuelingAnim.Play("fueling_pistol_drop", AnimationPlayMode.Stop);
animationPlayed = false;
}
public void ExitAutoMode()
{
handLeft.Value = true;
hand.Value.SetActive(true);
}
public void PickNozzle()
{
handLeft.Value = true;
hand.Value.SetActive(true);
pistolOnPump.Value.SetActive(false);
pistolInHand.Value.SetActive(true);
}
public void DropNozzle()
{
if (autoFuelController.autoMode)
{
autoFuelController.Reset();
FinishDroppingNozzle();
}
else
{
fuelingAnim.Play("fueling_pistol_drop", AnimationPlayMode.Stop);
animationPlayed = false;
}
}
public void OnRaycastEnter(RaycastHit hit) => PlayerRaycast.Instance.IsInRange(hit, distanceThreshold);
public void OnRaycastStay(RaycastHit hit)
{
if (PlayerRaycast.Instance.IsInRange(hit, distanceThreshold))
{
if(!autoFuelController.autoMode)
{
if (calculateFuel)
{
guiUse.Value = true;
guiText.Value = "DROP NOZZLE";
if (Input.GetMouseButtonDown(0))
{
guiUse.Value = false;
guiText.Value = "";
DropNozzle();
}
}
else
{
if (!handLeft.Value)
{
guiUse.Value = true;
guiText.Value = "PICK NOZZLE";
if (Input.GetMouseButtonDown(0))
{
if ((storeOpen.Value || !switchLock.Value) && !cops.activeSelf)
{
MasterAudio.PlaySound3DAtTransformAndForget("Store", transform, 1f, null, 0f, "fueling_nozzle");
PickNozzle();
guiUse.Value = false;
guiText.Value = "";
calculateFuel = true;
}
else
MasterAudio.PlaySound3DAtTransformAndForget("Store", transform, 0.4f, null, 0f, "door_locked");
}
}
}
}
}
}
public void OnRaycastExit(RaycastHit hit)
{
if (PlayerRaycast.Instance.IsInRange(hit, distanceThreshold))
{
guiUse.Value = false;
guiText.Value = "";
}
}
}
public class AutoFuel : Mod
{
public override string ID => "AutoFuel";
public override string Name => "AutoFuel";
public override string Author => "ELS";
public override string Version => "1.1";
public override bool UseAssetsFolder => false;
public FuelingTrigger AddFuelTrigger(Transform fuelFiller)
{
FuelingTrigger ft = fuelFiller?.GetChild(fuelFiller.childCount - 1).GetChild(1)?.gameObject?.AddComponent();
if (ft != null)
{
switch (ft.gameObject.name)
{
case "CapTrigger_FuelSatsuma":
ft.nozzlePlace = new Vector3(-0.012f, 0.1f, 0.019f);
ft.nozzleRotation = new Vector3(90f, 0f, 0f);
break;
case "CapTrigger_FuelHayosiko":
ft.nozzlePlace = new Vector3(-0.09f, 0.1f, 0.01f);
ft.nozzleRotation = new Vector3(70f, 180f, 0);
break;
case "CapTrigger_FuelGifu":
ft.nozzlePlace = new Vector3(-0.13f, -0.05f, -0.05f);
ft.nozzleRotation = new Vector3(30f, 270f, 180f);
break;
case "CapTrigger_FuelRuscko":
ft.nozzlePlace = new Vector3(0.11f, 0f, -0.05f);
ft.nozzleRotation = new Vector3(0f, 300f, 270f);
break;
case "CapTrigger_FuelKekmet":
ft.nozzlePlace = new Vector3(-0.09f, -0.03f, -0.05f);
ft.nozzleRotation = new Vector3(30f, 270f, 180f);
break;
case "CapTrigger_FuelCombine":
ft.nozzlePlace = new Vector3(0.07f, -0.028f, -0.01f);
ft.nozzleRotation = new Vector3(0f, 270f, 180f);
break;
case "CapTrigger_FuelFerndale":
ft.nozzlePlace = new Vector3(-0.13f, 0.02f, 0f);
ft.nozzleRotation = new Vector3(90f, 90f, 0);
break;
}
}
return ft;
}
public PistolAutoFuelController AddAutoFuelController(GameObject fuelingTrigger, GameObject pumpTrigger, Transform hand, FsmFloat statistic = null)
{
try
{
PlayMakerFSM pumpTriggerFsm = pumpTrigger.GetComponent();
pumpTriggerFsm.FsmStates.Initialize();
(pumpTriggerFsm.FsmStates[3].Actions[11] as GetDistance).target = fuelingTrigger.transform.parent.gameObject;
PistolAutoFuelController autoFuelController = fuelingTrigger.AddComponent();
autoFuelController.hand = hand.gameObject;
autoFuelController.ogParent = fuelingTrigger.transform.parent.parent;
PistolHandTriggerController handTrigger = pumpTrigger.AddComponent();
handTrigger.gasStatistic = statistic;
handTrigger.autoFuelController = autoFuelController;
autoFuelController.handTrigger = handTrigger;
return autoFuelController;
}
catch
{
return null;
}
}
public override void SecondPassOnLoad()
{
Transform hand = GameObject.Find("PLAYER/Pivot/AnimPivot/Camera/FPSCamera/FPSCamera/Fuel").transform.GetChild(0);
Transform nozzles = hand.GetChild(0).GetChild(0).GetChild(0).GetChild(0).GetChild(5);
FsmVariables statistics = GameObject.Find("System")?.transform.GetChild(12)?.GetComponent().FsmVariables;
AddAutoFuelController(nozzles.GetChild(0).GetChild(0).gameObject, GameObject.Find("Trigger98"), hand, statistics?.FindFsmFloat("PumpGas"));
AddAutoFuelController(nozzles.GetChild(1).GetChild(0).gameObject, GameObject.Find("TriggerD"), hand, statistics?.FindFsmFloat("PumpDiesel"));
AddAutoFuelController(nozzles.GetChild(2).GetChild(0).gameObject, GameObject.Find("TriggerPÖ"), hand);
Transform[] fuelFillers = (from x in Resources.FindObjectsOfTypeAll() where x.name.Contains("FuelFiller") select x)?.ToList()?.ToArray();
foreach (Transform fuelFiller in fuelFillers)
AddFuelTrigger(fuelFiller);
}
public override bool SecondPass => true;
}
}
It is too hard for you to fix? I'm sort of getting my head around how it works but it's all those getchild's that are quite confusing amongst, well, all of it haha.
I'm almost starting to think the modloader is sabotaging some of my mods for other players but that's just narcissistic
nope it doesn't seem like itDetails: Transform child out of bounds in AutoFuel.FuelingTrigger AddFuelTrigger(UnityEngine.Transform)
UnityEngine.UnityException: Transform child out of bounds
at (wrapper managed-to-native) UnityEngine.Transform:GetChild (int)
at AutoFuel.AutoFuel.AddFuelTrigger (UnityEngine.Transform fuelFiller) [0x00000] in <filename unknown>:0
at AutoFuel.AutoFuel.SecondPassOnLoad () [0x00000] in <filename unknown>:0
at MSCLoader.ModLoader+<LoadModsAsync>d__40.MoveNext () [0x00000] in <filename unknown>:0
Does that not help at all? Its aas though its trying to find a non-existant child. I poked around the hierachy and to my zero experience eye is looks like the line
switchLock = GameObject.Find("STORE").transform.GetChild(6).GetChild(25).GetChild(2).GetChild(1).GetComponent().FsmVariables.FindFsmBool("SwitchOn");
could be an issue. I couldn't find the SwitchOn thing anywhere. I'm really wanting to help out I'm just not very good at this lol.
That object indeed isn't there, the object it should reference is switch_pumps instead
I guess I just have the mojo version of the modloader, the one that makes it work anyway :D