Jump to content
Game-Labs Forum

[1.6.0.6] [Code] Tweaks and Fixes v3.10.0: bugfixes, new features for players, support for modders (including new nations and better AI ship generation!)


Recommended Posts

16 minutes ago, NathanKell said:

The current version shouldn't be taking that away? I changed the way I handle things to try to avoid that. If it's not reliable I'll try to fix this evening.

I did make sure that it's exactly what happens. For all barbettes, everywhere, from 1950 down to old ships where the barbettes weren't accessible in vanilla either, while every other ship part works just as intended.

  • Like 1
Link to comment
Share on other sites

1 hour ago, XerMGGW-2 said:

I did make sure that it's exactly what happens. For all barbettes, everywhere, from 1950 down to old ships where the barbettes weren't accessible in vanilla either, while every other ship part works just as intended.

Well that's annoying :D

Ok I'll figure out a way to make it work. If necessary I'll just implement the rotation myself if for some reason I can't managed to hack up the function.

(It's very annoying this is in Il2Cpp so you can't transpile, it'd save so much effort.)

Link to comment
Share on other sites

  • NathanKell changed the title to [1.6] [Code] Tweaks and Fixes v3.4.6: Mark 6+ guns, Keep old-Mark guns/torps on Refit, Map modding, Better Shared Design handling, Custom Flags, redone scrapping behavior, fixed sub range checks, and more
16 hours ago, XerMGGW-2 said:

I did make sure that it's exactly what happens. For all barbettes, everywhere, from 1950 down to old ships where the barbettes weren't accessible in vanilla either, while every other ship part works just as intended.

So, this took a bunch of work because there's a variety of issues patching Il2Cpp games--approaches various threw or crashed or did nothing. But I figured out an approach that seems to work ok in my testing. There's a few oddities (rotation can occasionally get reset when moving parts; sometimes the barbette stays highlighted green when it should be red; think that's it?) but it basically works. Just don't look under the hood. :D

3.4.6 is out now. Apologies that this took so much time and iteration, we're about to ship a big gameplay update at (real work) so I've been pretty busy.

  • Like 3
Link to comment
Share on other sites

Getting this on loading the game, TaF 3.4.6. As far as I can tell, game works fine, loading a save, and playing a few turns, and a battle. Though it might crash at a critical point I guess.
[14:02:09.784] [TweaksAndFixes] HarmonyLib.HarmonyException: Patching exception in method null
 ---> System.ArgumentException: Undefined target method for patch method static void TweaksAndFixes.Patch_Ui_c::Postfix_17()
   at HarmonyLib.PatchClassProcessor.PatchWithAttributes(MethodBase& lastOriginal)
   at HarmonyLib.PatchClassProcessor.Patch()
   --- End of inner exception stack trace ---
   at HarmonyLib.PatchClassProcessor.ReportException(Exception exception, MethodBase original)
   at HarmonyLib.PatchClassProcessor.Patch()
   at HarmonyLib.Harmony.<PatchAll>b__11_0(Type type)
   at HarmonyLib.CollectionExtensions.Do[T](IEnumerable`1 sequence, Action`1 action)
   at HarmonyLib.Harmony.PatchAll(Assembly assembly)
   at MelonLoader.MelonMod.HarmonyInit() in D:\a\MelonLoader\MelonLoader\MelonLoader\Melons\MelonMod.cs:line 40
   at MelonLoader.MelonEvent.<>c.<Invoke>b__1_0(LemonAction x) in D:\a\MelonLoader\MelonLoader\MelonLoader\Melons\Events\MelonEvent.cs:line 174
   at MelonLoader.MelonEventBase`1.Invoke(Action`1 delegateInvoker) in D:\a\MelonLoader\MelonLoader\MelonLoader\Melons\Events\MelonEvent.cs:line 143


Loading a save, though this could be me messing up the genarmordata(?)
Sorry for the spam. Isn't there a spoiler tag here?

[14:06:38.504] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:38.518] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:38.552] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.027] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.032] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.109] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.147] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.513] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.542] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )

Edited by MDHansen
  • Like 1
Link to comment
Share on other sites

5 hours ago, MDHansen said:

Getting this on loading the game, TaF 3.4.6. As far as I can tell, game works fine, loading a save, and playing a few turns, and a battle. Though it might crash at a critical point I guess.
[14:02:09.784] [TweaksAndFixes] HarmonyLib.HarmonyException: Patching exception in method null
 ---> System.ArgumentException: Undefined target method for patch method static void TweaksAndFixes.Patch_Ui_c::Postfix_17()
   at HarmonyLib.PatchClassProcessor.PatchWithAttributes(MethodBase& lastOriginal)
   at HarmonyLib.PatchClassProcessor.Patch()
   --- End of inner exception stack trace ---
   at HarmonyLib.PatchClassProcessor.ReportException(Exception exception, MethodBase original)
   at HarmonyLib.PatchClassProcessor.Patch()
   at HarmonyLib.Harmony.<PatchAll>b__11_0(Type type)
   at HarmonyLib.CollectionExtensions.Do[T](IEnumerable`1 sequence, Action`1 action)
   at HarmonyLib.Harmony.PatchAll(Assembly assembly)
   at MelonLoader.MelonMod.HarmonyInit() in D:\a\MelonLoader\MelonLoader\MelonLoader\Melons\MelonMod.cs:line 40
   at MelonLoader.MelonEvent.<>c.<Invoke>b__1_0(LemonAction x) in D:\a\MelonLoader\MelonLoader\MelonLoader\Melons\Events\MelonEvent.cs:line 174
   at MelonLoader.MelonEventBase`1.Invoke(Action`1 delegateInvoker) in D:\a\MelonLoader\MelonLoader\MelonLoader\Melons\Events\MelonEvent.cs:line 143


Loading a save, though this could be me messing up the genarmordata(?)
Sorry for the spam. Isn't there a spoiler tag here?

[14:06:38.504] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:38.518] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:38.552] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.027] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.032] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.109] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.147] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.513] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )
[14:06:39.542] [TweaksAndFixes] During invoking native->managed trampoline
Il2CppInterop.Runtime.Il2CppException: System.NullReferenceException: Object reference not set to an instance of an object.
--- BEGIN IL2CPP STACK TRACE ---
System.NullReferenceException: Object reference not set to an instance of an object.
  at Ship.MaxArmorForZone (Ship+A armorA, PartData gunPartData) [0x00000] in <00000000000000000000000000000000>:0
--- END IL2CPP STACK TRACE ---

   at Il2CppInterop.Runtime.Il2CppException.RaiseExceptionIfNecessary(IntPtr returnedException) in /home/runner/work/Il2CppInterop/Il2CppInterop/Il2CppInterop.Runtime/Il2CppException.cs:line 36
   at Il2Cpp.Ship.MaxArmorForZone(A armorA, PartData gunPartData)
   at TweaksAndFixes.GenArmorData.GenArmorInfo.UpdateForLerp(Ship ship, Single t)
   at TweaksAndFixes.ShipM.GenerateArmorNew(Single armorMaximal, Ship shipHint)
   at DMD<Il2Cpp.Ship::GenerateArmor>(Single armorMaximal, Ship shipHint)
   at (il2cpp -> managed) GenerateArmor(Single , IntPtr , Il2CppMethodInfo* )

1.6.0.3R changed some function signatures. Pushed 3.4.7 with a fix.

  • Like 1
Link to comment
Share on other sites

  • NathanKell changed the title to [1.6.0.3] [Code] Tweaks and Fixes v3.4.7: Mark 6+ guns, Keep old-Mark guns/torps on Refit, Map modding, Better Shared Design handling, Custom Flags, redone scrapping behavior, fixed sub range checks, and more
21 hours ago, NathanKell said:

So, this took a bunch of work because there's a variety of issues patching Il2Cpp games--approaches various threw or crashed or did nothing. But I figured out an approach that seems to work ok in my testing. There's a few oddities (rotation can occasionally get reset when moving parts; sometimes the barbette stays highlighted green when it should be red; think that's it?) but it basically works. Just don't look under the hood. :D

3.4.6 is out now. Apologies that this took so much time and iteration, we're about to ship a big gameplay update at (real work) so I've been pretty busy.

Have a good news:
Another issue arises with the new system, everything about the ship in the shipyard starts out with 0 armour thickness, including each placed down turret.

This is a problem because AI has no idea how to change amount of armour on it's turrets, so it runs with completely unarmoured guns.

Ah also doesn't the barbette only rotate when it's snapping itself to an attachment port, or when is off ship's deck entirely for you?

Edited by XerMGGW-2
  • Like 1
Link to comment
Share on other sites

48 minutes ago, XerMGGW-2 said:

Have a good news:
Another issue arises with the new system, everything about the ship in the shipyard starts out with 0 armour thickness, including each placed down turret.

This is a problem because AI has no idea how to change amount of armour on it's turrets, so it runs with completely unarmoured guns.

Ah also doesn't the barbette only rotate when it's snapping itself to an attachment port, or when is off ship's deck entirely for you?

Oof ok I guess 1.6.0.3R broke more than I thought. I'll deal with that tonight.

Link to comment
Share on other sites

14 hours ago, XerMGGW-2 said:

Have a good news:
Another issue arises with the new system, everything about the ship in the shipyard starts out with 0 armour thickness, including each placed down turret.

This is a problem because AI has no idea how to change amount of armour on it's turrets, so it runs with completely unarmoured guns.

Ah also doesn't the barbette only rotate when it's snapping itself to an attachment port, or when is off ship's deck entirely for you?

3.4.8 is up, I believe it's fixed the armor issue.

 

For me the barbettes rotate fine. I select a barbette and hover it over the hull and press R and T and it rotates fine. It does snap back to its original orientation on moving, like other parts do.

You are:

* On 1.6.0.3R?
* Have TAF 3.4.8? (Well, presumably you had 3.4.7 when you reported :D - but try again maybe? Fingers crossed)
* Using which hull, and can you screenshot showing the barbette in a position where pressing R or T doesn't rotate it?

  • Like 1
Link to comment
Share on other sites

  • NathanKell changed the title to [1.6.0.3R] [Code] Tweaks and Fixes v3.4.8: Mark 6+ guns, Keep old-Mark guns/torps on Refit, Map modding, Better Shared Design handling, Custom Flags, redone scrapping behavior, fixed sub range checks, and more
54 minutes ago, NathanKell said:

3.4.8 is up, I believe it's fixed the armor issue.

 

For me the barbettes rotate fine. I select a barbette and hover it over the hull and press R and T and it rotates fine. It does snap back to its original orientation on moving, like other parts do.

You are:

* On 1.6.0.3R?
* Have TAF 3.4.8? (Well, presumably you had 3.4.7 when you reported :D - but try again maybe? Fingers crossed)
* Using which hull, and can you screenshot showing the barbette in a position where pressing R or T doesn't rotate it?

It's fine if it's just a me-problem but not for others people. Thanks a lot.

  • Like 1
Link to comment
Share on other sites

TaF just opens up the game for editing. You can do whatever you want with the files, either resources.assets or loose files as described in the Readme top on the first page.
so yes, compatible with NAR/DIP/etc :)

Edit: I did also mean to say it does change things, and add if you plonk it in to the files. But not so it, initially, interferes with resource.assets mods.
See Nathans answer under

Edited by MDHansen
  • Like 1
Link to comment
Share on other sites

8 hours ago, XerMGGW-2 said:

It's fine if it's just a me-problem but not for others people. Thanks a lot.

You're welcome, but I definitely want to make sure it works for you too!! Can you post a screenshot of where the barbette is positioned with it not responding to rotation, the hull you're using (and any mods), and the output from the MelonLoader console so I can see if there are any errors there?

5 hours ago, Peksern said:

Perhaps answered a thounds of time now... is it compatible with NAR? I'm primarily interested in the higher gun marks. :)

Greetings!

Depends what you mean by compatible. Like, when I play I use NAR myself so it definitely works with NAR. And the basic fixes take effect regardless. But I  don't believe @o Barão has enabled any of the optional features yet? (The mines rework I did for NAR etc). And they've said they don't plan to add more gun marks, so that's on you (or others) to do.

1 hour ago, MDHansen said:

TaF just opens up the game for editing. You can do whatever you want with the files, either resources.assets or loose files as described in the Readme top on the first page.
so yes, compatible with NAR/DIP/etc :)

It does indeed have some stuff that's enabled by default (the barbette thing I just did for example, some fixes to some obvious mistakes in the ship generator, the submarine range fix, etc) but yeah, most of it is modder support.

 

Which reminds me, I need to actually hook up the override support I wrote, so you can do something like parts_override.csv and it will add anything from the file that isn't already in the game, and update any entries based on what you have there. So you can selectively override/change stuff from resource.assets.

Should make for easier modding, and in particular should make for easier modding _of mods_. :)

  • Like 2
Link to comment
Share on other sites

51 minutes ago, NathanKell said:

It does indeed have some stuff that's enabled by default (the barbette thing I just did for example, some fixes to some obvious mistakes in the ship generator, the submarine range fix, etc) but yeah, most of it is modder support.

Yes, yes it definately changes stuff.

53 minutes ago, NathanKell said:

Which reminds me, I need to actually hook up the override support I wrote, so you can do something like parts_override.csv and it will add anything from the file that isn't already in the game, and update any entries based on what you have there. So you can selectively override/change stuff from resource.assets.

Should make for easier modding, and in particular should make for easier modding _of mods_. :)

This... this is sexy!

  • Like 1
Link to comment
Share on other sites

I know your limited by the code you have access to but is it possible to change bulkhead positions to be more realistic?

at the moment we have bulkheads dividing ships from top to bottom and from bow to stern  but there's no bulk heads separating the ship from port to starboard, if this could be changed then sinking ships would be far more difficult and I think it will aid the ai survivability even When there building ships with ridiculously thin armour schemes.

Link to comment
Share on other sites

12 hours ago, MDHansen said:

Yes, yes it definately changes stuff.

This... this is sexy!

Done.

 

Revised docs:

TAF will look in the Mods folder (where its dll lives) for any csv files named the same as game data TextAssets (for example parts.csv or shipTypes.csv). If such a file exists, it will be loaded rather than the data in resource.assets. This allows modders to distribute just text files rather than an entire resource.assets file. In addition, TAF will look for files named assetname_override.csv (for example parts_override.csv). Data in these files will override and extend the existing data (which was loaded either from resource.assets or from csv). Note that the header row (starting with @) and the Default row must be included in addition to any actual data rows. Any rows with the same name as existing rows will override, and any new rows will be added in addition.

This means you can for example include technologies.csv, parts.csv, parts_override.csv, and shipTypes_override.csv. Technologies will be completely replaced by data in parts.csv. Parts will be completely replaced by data in parts.csv and then that data will be in turn overridden and extended by any data in parts_override.csv. Data for ship types will be pulled from resources.assets but then overridden/extended by data any data in shipTypes_override.csv.

The reason why both are supported is so that modders can release their mods as csv files (so they don't have to ship huge assets files), but other modders (or end users!) can in turn modify those mods.

The fact that locally overriding is now supported means that modders can release, say, a params_override.csv that includes only changed params, so if a game update changes other params, the game's changes won't be replaced.

  • Like 2
Link to comment
Share on other sites

10 hours ago, rossi191 said:

I know your limited by the code you have access to but is it possible to change bulkhead positions to be more realistic?

at the moment we have bulkheads dividing ships from top to bottom and from bow to stern  but there's no bulk heads separating the ship from port to starboard, if this could be changed then sinking ships would be far more difficult and I think it will aid the ai survivability even When there building ships with ridiculously thin armour schemes.

The game thinks of ships in 2 dimensions, as shown by the visualization. Sections are given Y and Z coordinates, but not X. While I wouldn't at all say it's impossible to do what you're asking, it would be a pretty mammoth undertaking. You'd have to basically create a parallel data structure that tracked each section's subdivision into its various subsections, patch all the methods that deal with sections so that they would deal with that new paradigm, figure out a way to save and load that data...

Link to comment
Share on other sites

  • NathanKell changed the title to [1.6.0.3R] [Code] Tweaks and Fixes v3.4.9: Mark 6+ guns, Keep old-Mark guns/torps on Refit, Map modding, Better Shared Design handling, Custom Flags, redone scrapping behavior, fixed sub range checks, and more

When you get some time, could you have a look at the accuracies.asset?
I can not for the life of me get it to work as a .csv, not even a vanilla clean file, it will not read it. In fact, once in a battle graphics gets all jiggy and no control of the ships.
However, using and editing the file as a textasset and put it back in to the resource file works fine 🤔

  • Like 1
Link to comment
Share on other sites

14 hours ago, NathanKell said:

Note that the header row (starting with @) and the Default row must be included in addition to any actual data rows. Any rows with the same name as existing rows will override, and any new rows will be added in addition.

Could you please provide a short example of how that's supposed to be formatted by the end user?

  • Like 1
Link to comment
Share on other sites

13 hours ago, MDHansen said:

When you get some time, could you have a look at the accuracies.asset?
I can not for the life of me get it to work as a .csv, not even a vanilla clean file, it will not read it. In fact, once in a battle graphics gets all jiggy and no control of the ships.
However, using and editing the file as a textasset and put it back in to the resource file works fine 🤔

Rewrote asset overriding in a much cleaner way. It should hopefully fix the issue you encountered.

The revised docs are as follows:

TAF can replace existing data with csv files, override data with csv files, or do both. TAF will look in the Mods folder (where its dll lives) for any csv files named the same as game data TextAssets (for example parts.csv or shipTypes.csv). If such a file exists, it will be loaded rather than the data in resource.assets. This allows modders to distribute just text files rather than an entire resource.assets file. In addition, TAF will look for files named assetname_override.csv (for example parts_override.csv). Data in these files will override and extend the existing data (which was loaded either from resource.assets or from csv). Any lines with the name column matching an original entry will override that entry; other lines will be appended to the end of the asset before loading. Note that the "default" line can also be overridden in this way, since it has a valid name. Note that all filenames are case sensitive!

9 hours ago, SpardaSon21 said:

Could you please provide a short example of how that's supposed to be formatted by the end user?

I rewrote it so that's no longer needed. Now you only need to include the rows you're changing or adding. (You can include the header, i.e. the row starting with @, if you like, or leave it out; and all comments, i.e. rows starting with #, will be ignored.)

So this is a valid parts_override.csv:

@name,enabled,type,nameUi,order,weight,cost,costMod,crew,model,scale,group,mountPoints,countries,param,stats,caliber,#caliberInch,barrels,hullWeightRatio,sectionsMin,sectionsMax,tonnageMin,tonnageMax,maxAllowedCaliber,beamMin,beamMax,draughtMin,draughtMax,beamCoef,draughtCoef,speedLimiter,minMainTurrets,minMainBarrels,#comment,#comment2,#cost_base,#cost_base_mod
#id,enabled / disabled,type of part,name for human,order in ui,used tonnage,part's cost,cost multiplier (after auto-calc),crew for part,visual model name,scaling of model,grouping (for guns etc),allowed mount points types (empty means free),available to countries (or all),various params: todo: document,,gun: caliber in mm,gun: caliber in inches,gun: amount of barrels,hull: basic ratio of hull weight,hull: min amount of sections,hull: max amount of sections,hull: max allowed tonnage,hull: max allowed tonnage,guns limi,,,,,,,,,,"comment, shown only here",,part's cost,
##,,hull,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
b_1_usa_var,,hull,Small Battleship XXX,,-1,-1,,3000,maine_hull_a,1.3,,,"usa, britain","type(bb), B_Indiana_var, old_predread, earlybb_sideguns, bb, g1","hsize(450), hull_form(57), stability(68), floatability(47), endurance(64), spot(0), turn(15), vis(3900), beam(0), draught(0)",,,,0.12,5,7,8050,10700,18,-5,20,-5,15,,,16.7,2,2,,16.2,-1,
ca_1_naniwa_3mast,,hull,Hybrid Light Cruiser,,-1,-1,0.65,300,irresistible_hull_b_var4,0.79,,,"spain, france","type(ca), CA_Naniwa, CA_Super_Gun, ca, g1","hsize(1250), hull_form(55), stability(52), floatability(51), endurance(50), spot(0), turn(49), vis(3800), beam(0), draught(0)",,,,0.28,1,3,2900,4100,18,,,,,,,16.9,1,2,,16.4,-1,
b_1_usa_test,,hull,Small Battleship Test2,,-1,-1,,3,maine_hull_a,1.3,,,japan,"type(bb), B_Indiana_var, old_predread, earlybb_sideguns, bb, g1","hsize(450), hull_form(57), stability(68), floatability(47), endurance(64), spot(0), turn(15), vis(3900), beam(0), draught(0)",,,,0.12,5,7,8050,10700,18,-5,20,-5,15,,,16.7,2,2,,16.2,-1,
###

as is just this (they are loaded identically--they replace b_1_usa_var and ca_1_naniwa_3mast, and add b_1_usa_test):

b_1_usa_var,,hull,Small Battleship XXX,,-1,-1,,3000,maine_hull_a,1.3,,,"usa, britain","type(bb), B_Indiana_var, old_predread, earlybb_sideguns, bb, g1","hsize(450), hull_form(57), stability(68), floatability(47), endurance(64), spot(0), turn(15), vis(3900), beam(0), draught(0)",,,,0.12,5,7,8050,10700,18,-5,20,-5,15,,,16.7,2,2,,16.2,-1,
ca_1_naniwa_3mast,,hull,Hybrid Light Cruiser,,-1,-1,0.65,300,irresistible_hull_b_var4,0.79,,,"spain, france","type(ca), CA_Naniwa, CA_Super_Gun, ca, g1","hsize(1250), hull_form(55), stability(52), floatability(51), endurance(50), spot(0), turn(49), vis(3800), beam(0), draught(0)",,,,0.28,1,3,2900,4100,18,,,,,,,16.9,1,2,,16.4,-1,
b_1_usa_test,,hull,Small Battleship Test2,,-1,-1,,3,maine_hull_a,1.3,,,japan,"type(bb), B_Indiana_var, old_predread, earlybb_sideguns, bb, g1","hsize(450), hull_form(57), stability(68), floatability(47), endurance(64), spot(0), turn(15), vis(3900), beam(0), draught(0)",,,,0.12,5,7,8050,10700,18,-5,20,-5,15,,,16.7,2,2,,16.2,-1,

 

  • Like 2
Link to comment
Share on other sites

  • NathanKell changed the title to [1.6.0.3R] [Code] Tweaks and Fixes v3.5.0: Mark 6+ guns, Keep old-Mark guns/torps on Refit, Map modding, Better Shared Design handling, Custom Flags, redone scrapping behavior, fixed sub range checks, and more
On 8/23/2024 at 8:48 PM, NathanKell said:

(and any mods)

You can bet I always am and only using my HIP (still preparing the 1.6 for 1.6), if I even play UAD's campaign.

But regardless, I've checked on Replacement Scrapping Behavior which I would love to use for people to experience,
with 

taf_scrap_useOnlyShipAge,1,,,,,,,,

Firstly, does this use total port capacity instead of only shipyard, for to accurately regard navies of different sizes with those having a lot of big ports being proportionally bigger?
In case if it does use Ports capacity,
I really need to make a suggestion of having there a system that makes sure that when scrapping the oldest ships first, AI won't be scrapping their highest tonnage ships which it managed to build after so long ago. While other values there do make scrapping of large ships less likely, it's occurence theoretically becomes more and more non-zero as port capacities inevitably rise to hundreds of thousands tons. It's thus best to have it tolerate the older humongous ships, having them open for refit, and scrap the smaller old ships first, unless the big ship is absolutely ancient. Maybe a couple of suggestions?:

1) Tie an age-to-size priority via taking the Ship's Age, and taking the Ship's Build Time in months (pretty sure this should be embedded into design's property, which ignores if the actual ship's building was delayed and whatnot) into a priorities formula: Priority=Age-(BuildTime^[new params value])

example, 8 year old ship normally built in 12 months, with 0.8 being an extra exponent (to account for differing ship building times on average in different mods, in mine them building quite a bit quicker, to reduce the weight of buildtime compared to age, as well as increasing the steepness of preference for preserving larger ships)
8-(12^0.8)=8-7.3=0.7 priority, must be a simple cruiser resulting in a decent priority.
Though a torpedo boat of same age that only took 7 months is something nobody will feel sorry about, at 8-4.75=3.25 priority. They're made to be cycled through quickly.

A 20-year old 80000t battleship that took 30months to build  will have 20-15,2=4,8 priority, a same priority as a 12000t cruiser with 12months build time that is 12 years old. In this instance, allowing battleship to shine for 8 additional years without even fearing an unlucky chance.

2) Tie an age-to-size priority via taking Ship's Age and (designed) Tonnage instead.
Similar numbers but tonnage should probably be measured in thousands of tons, to have have age have a chance to be significant. Due to there not being game's own exponent built into build time calcualtions, I expect to use extra exponent as a much smaller one, maybe 0.3 (for kilotons), haven't checked or compared with the aforementioned example yet to find the most identical one.

That would be a massive deal-breaker, for port-capacity-dependent ship scrapping behaviour.

Edited by XerMGGW-2
  • Like 1
Link to comment
Share on other sites

9 hours ago, XerMGGW-2 said:

You can bet I always am and only using my HIP (still preparing the 1.6 for 1.6), if I even play UAD's campaign.

But regardless, I've checked on Replacement Scrapping Behavior which I would love to use for people to experience,
with 

taf_scrap_useOnlyShipAge,1,,,,,,,,

Firstly, does this use total port capacity instead of only shipyard, for to accurately regard navies of different sizes with those having a lot of big ports being proportionally bigger?
In case if it does use Ports capacity,
I really need to make a suggestion of having there a system that makes sure that when scrapping the oldest ships first, AI won't be scrapping their highest tonnage ships which it managed to build after so long ago. While other values there do make scrapping of large ships less likely, it's occurence theoretically becomes more and more non-zero as port capacities inevitably rise to hundreds of thousands tons. It's thus best to have it tolerate the older humongous ships, having them open for refit, and scrap the smaller old ships first, unless the big ship is absolutely ancient. Maybe a couple of suggestions?:

1) Tie an age-to-size priority via taking the Ship's Age, and taking the Ship's Build Time in months (pretty sure this should be embedded into design's property, which ignores if the actual ship's building was delayed and whatnot) into a priorities formula: Priority=Age-(BuildTime^[new params value])

example, 8 year old ship normally built in 12 months, with 0.8 being an extra exponent (to account for differing ship building times on average in different mods, in mine them building quite a bit quicker, to reduce the weight of buildtime compared to age, as well as increasing the steepness of preference for preserving larger ships)
8-(12^0.8)=8-7.3=0.7 priority, must be a simple cruiser resulting in a decent priority.
Though a torpedo boat of same age that only took 7 months is something nobody will feel sorry about, at 8-4.75=3.25 priority. They're made to be cycled through quickly.

A 20-year old 80000t battleship that took 30months to build  will have 20-15,2=4,8 priority, a same priority as a 12000t cruiser with 12months build time that is 12 years old. In this instance, allowing battleship to shine for 8 additional years without even fearing an unlucky chance.

2) Tie an age-to-size priority via taking Ship's Age and (designed) Tonnage instead.
Similar numbers but tonnage should probably be measured in thousands of tons, to have have age have a chance to be significant. Due to there not being game's own exponent built into build time calcualtions, I expect to use extra exponent as a much smaller one, maybe 0.3 (for kilotons), haven't checked or compared with the aforementioned example yet to find the most identical one.

That would be a massive deal-breaker, for port-capacity-dependent ship scrapping behaviour.

Right now I use neither max shipyard size nor sum of port capacities, but shipbuilding capacity limit. Which according to the game is that times shipbuilding_capacity_ratio times some kind of penalty multiplier (haven't dug into that one), plus the shipyard size. So...broadly a function of total port capacity, yes. I do this because I felt like that was a much better proxy for "how big a fleet can this nation support" than max shipyard size (i.e. individual ship tonnage limit), since it takes both ability to support ships in ports, as well as GDP -> money to support ships with maintenance, into account.

 

Your weighted priority stuff sounds great! I'll make that change, and leave things tunable. Thanks!!

 

Regarding barbettes: Ok, I'll try with your mod and see if I can reproduce the problem. If I still can't, I really need a screenshot showing exactly the circumstance you're in where you're hitting the problem.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...