[PC] Mod manager - 7thHeaven (v1.54)

  • Thread starter Thread starter Iros
  • Start date Start date
Status
Not open for further replies.
New update v1.52: https://mega.nz/#!aQdXiZYA!aJnVbQH5kWSi5sC6QMdgPmjKmhfUdsP-87R70j90ub4

-Support audio preview (e.g. for music mod) in config screen
-Support tags in XML to specify load order rules, to say a mod should come before/after other mods


1) Audio preview files:

Add a attribute 'PreviewAudio' to your Option tags, e.g.

Code: [Select]
Code:
<Option Value="0" Name="Orchestral" PreviewFile="preview\orchestral.png" PreviewAudio="orch\jukai.ogg"/><Option Value="1" Name="Lifestream" PreviewFile="preview\lifestream.png" PreviewAudio="ls\ayasi.ogg"/>
The file must exist in the mod of course. The audio does not play automatically, but the user can click a button to preview what that music sounds like.


2) Specify mod ordering:

Add tags to the mod like this:

Code: [Select]
Code:
  <OrderConstraints>    <Before>73271161-6402-46a9-8cd8-72bf3c19a9c5</Before>    <After>bc6f1dec-5cef-4f16-934e-4959aca1ea57</After>  </OrderConstraints>
This sets the mod to say it must come AFTER a particular other mod in the load order, and BEFORE another mod in the load order.

If the other mods are not active, it will not complain at all. But if they are, it will warn the user if the order is not correct.

For now, it will only warn, not try and correct the order. That may come later. It is not super simple because if lots of mods have order constraints, there may not be a correct order, and it can be complicated to calculate.

@EQ2Alyza: I expect you will make the most use of these tags, let me know if you have any questions :)


@Insight: I would not suggest changing any of the XML formats as the core 7H libraries use them internally. Of course perhaps we will add new fields in the future.


@Eeketh: Not sure there is much to be done right now? Thank you for the offer of help though. There are probably many other tools that could use some coding help though. Perhaps it is a good idea to ask mod authors what tools would help them.
 
New update v1.52: https://mega.nz/#!aQdXiZYA!aJnVbQH5kWSi5sC6QMdgPmjKmhfUdsP-87R70j90ub4

-Support audio preview (e.g. for music mod) in config screen
-Support tags in XML to specify load order rules, to say a mod should come before/after other mods


1) Audio preview files:

Add a attribute 'PreviewAudio' to your Option tags, e.g.

Code: [Select]
Code:
<Option Value="0" Name="Orchestral" PreviewFile="preview\orchestral.png" PreviewAudio="orch\jukai.ogg"/><Option Value="1" Name="Lifestream" PreviewFile="preview\lifestream.png" PreviewAudio="ls\ayasi.ogg"/>
The file must exist in the mod off course. The audio does not play automatically, but the user can click a button to preview what that music sounds like.


2) Specify mod ordering:

Add tags to the mod like this:

Code: [Select]
Code:
  <OrderConstraints>    <Before>73271161-6402-46a9-8cd8-72bf3c19a9c5</Before>    <After>bc6f1dec-5cef-4f16-934e-4959aca1ea57</After>  </OrderConstraints>
This sets the mod to say it must come AFTER a particular other mod in the load order, and BEFORE another mod in the load order.

If the other mods are not active, it will not complain at all. But if they are, it will warn the user if the order is not correct.

For now, it will only warn, not try and correct the order. That may come later. It is not super simple because if lots of mods have order constraints, there may not be a correct order, and it can be complicated to calculate.

@EQ2Alyza: I expect you will make the most use of these tags, let me know if you have any questions :)


@Insight: I would not suggest changing any of the XML formats as the core 7H libraries use them internally. off course perhaps we will add new fields in the future.


@Eeketh: Not sure there is much to be done right now? Thank you for the offer of help though. There are probably many other tools that could use some coding help though. Perhaps it is a good idea to ask mod authors what tools would help them.
Hm,i think that the current used XML structure (and the code behindert itself i guess) is not efficient and could be optimized (no offence!). Also in the current form, i find it quite hard to create a new UI with certain mechanism (in WPF) without optimizing the code itself. I could wait until you have finished 7th heaven completely and then continue the overhaul.
 
@Iros

Just want to let you know of multiple reports (including myself) where SharpCompressU.dll fails to download during the update. I have advised everyone to download v1.52 and manually replace the files for now.
 
When I start 7th heaven 1.50 it asks if I want to update to 1.52 I say yes, then a permissions box pops up I click run, and nothing happens it doesn't update.
 
-Support tags in XML to specify load order rules, to say a mod should come before/after other mods
I think it would be better to make a global list for the mod's loadorder. It seems to me much easier this way to provide support for a false load order (if a new mod will be released - also what does happen if two mods have the same conditions?). Maybe a list from paste.bin or a local xml?
 
I think it would be better to make a global list for the mod's loadorder. It seems to me much easier this way to provide support for a false load order (if a new mod will be released - also what does happen if two mods have the same conditions?). Maybe a list from paste.bin or a local xml?
If mods have the same conditions, then I would set them to disable the opposite when you activate one through the Configure Mod window. This would prevent both from ever being being active together.
 
When I start 7th heaven 1.50 it asks if I want to update to 1.52 I say yes, then a permissions box pops up I click run, and nothing happens it doesn't update.
Download 1.52 in this thread, unzip and copy and paste them over the old files.
 
@Iros
Does 7H have the function to make 7H own custom variables? I think of something like a timer based mod. Let's say I want to create a mod for an Avalanche minigame with a member and mission design as in Assassins Creed Brotherhood, I would need a global timer which is independent from the game.

Here is the last and probably impossible question is possible to inject the field texts created by toughscript into the game?
@Eeketh
 It might be a really useful if we have a tool which can replace the text on the fly with the info ordinary text files. If we can bring it down to string system we would get a really mod friendly game.
As example imagine we would use text strings already. The text strings of Beacause would simply overwrite the identical strings of the NT mod and leave the new created strings intact.
Well it's only an idea.

If mods have the same conditions, then I would set them to disable the opposite when you activate one through the Configure Mod window. This would prevent both from ever being being active together.
You get me wrong, I want to know what happens if two mods want to be before Mod B but after Mod A. Is there a priority to order these mods in a way? I personally like it more to have a optional list which does order the mods in the correct manner. Mod authors can't test every mod is compatible, but the community can. And a list can be fast shared. This was actually my idea, when I wanted to merge the organization of Bootleg with the much wider possibilities of 7th Heaven.

Btw. I have taken a look at the new catalog finally. Why not request a batch file support to rename the different exe's when a mod is active? On the otherside when I have time I could try to to make hext patches of them if possible. I knew that a few things doesn't work.
 
Last edited:
Hext patches for the different exe would be nice. It's so much easier to stick them in the hext folder and add the enable/disable compatibility into them.
 
Hey guys, i dont know where to post this q but is there a mod equivalent to this for psx? Are there mods for psx like this 7h tool or reunion or anything similar quality? Tried google but no success except for few minor, incomplete mods...
 
I got always an error when I want to activate my Chaos Base mod.
Code: [Select]
Code:
System.IndexOutOfRangeException: Der Index war außerhalb des Arraybereichs.   bei System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)   bei System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)   bei System.Windows.Forms.Control.Invoke(Delegate method)   bei Iros._7th.Workshop.fDownloads.CompleteIProc(DownloadItem item, AsyncCompletedEventArgs e) in c:\Iros\7thWorkshop\fDownloads.cs:Zeile 56.   bei Iros._7th.Workshop.fDownloads.<>c__DisplayClass13.<ProcessDownloadComplete>b__11() in c:\Iros\7thWorkshop\fDownloads.cs:Zeile 187.   bei Iros._7th.Workshop.Install.InstallModProcedure.ProcessDownload(Object state) in c:\Iros\7thWorkshop\Install.cs:Zeile 385.   bei System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)   bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)   bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)   bei System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()   bei System.Threading.ThreadPoolWorkQueue.Dispatch()   bei System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
And this when I want to use the loose files
Code: [Select]
Code:
System.IndexOutOfRangeException: Der Index war außerhalb des Arraybereichs.   bei _7thWrapperLib.RuntimeVar.MakeRuntimeVar(String spec, String value) in c:\Iros\7thWrapperLib\RuntimeVar.cs:Zeile 0.   bei _7thWrapperLib.CRuntimeVar.Init(XmlNode source, LoaderContext ctx) in c:\Iros\7thWrapperLib\Profile.cs:Zeile 705.   bei _7thWrapperLib.Conditional.Load(XmlNode source, LoaderContext ctx) in c:\Iros\7thWrapperLib\Profile.cs:Zeile 687.   bei _7thWrapperLib.ConditionalFolder..ctor(XmlNode node, LoaderContext ctx) in c:\Iros\7thWrapperLib\Profile.cs:Zeile 663.   bei _7thWrapperLib.ModInfo.Load(XmlDocument doc, LoaderContext ctx) in c:\Iros\7thWrapperLib\Profile.cs:Zeile 520.   bei _7thWrapperLib.ModInfo..ctor(String filePath, LoaderContext ctx) in c:\Iros\7thWrapperLib\Profile.cs:Zeile 510.   bei Iros._7th.Workshop.fLibrary.GetModInfo(InstalledItem ii) in c:\Iros\7thWorkshop\fLibrary.cs:Zeile 893.   bei Iros._7th.Workshop.fLibrary.ToggleActivateMod(Guid modID) in c:\Iros\7thWorkshop\fLibrary.cs:Zeile 799.   bei Iros._7th.Workshop.fLibrary.DoModBarAction(pMod pm, ModBarAction a) in c:\Iros\7thWorkshop\fLibrary.cs:Zeile 913.   bei Iros._7th.Workshop.pMod.bActivate_Click(Object sender, EventArgs e) in c:\Iros\7thWorkshop\pMod.cs:Zeile 195.   bei System.Windows.Forms.Control.OnClick(EventArgs e)   bei System.Windows.Forms.Button.OnClick(EventArgs e)   bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)   bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)   bei System.Windows.Forms.Control.WndProc(Message& m)   bei System.Windows.Forms.ButtonBase.WndProc(Message& m)   bei System.Windows.Forms.Button.WndProc(Message& m)   bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)   bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
 
Last edited:
I've got this error when trying to start 7thheaven  :o

Code: [Select]
Code:
System.TypeInitializationException: O inicializador de tipo de 'Iros._7th.Workshop.Sys' acionou uma exceção. ---> System.InvalidOperationException: Erro no documento XML (0, 0). ---> System.Xml.XmlException: Elemento raiz inexistente.   em System.Xml.XmlTextReaderImpl.Throw(Exception e)   em System.Xml.XmlTextReaderImpl.ParseDocumentContent()   em System.Xml.XmlTextReaderImpl.Read()   em System.Xml.XmlTextReader.Read()   em System.Xml.XmlReader.MoveToContent()   em Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderSettings.Read8_Settings()   --- Fim do rastreamento de pilha de exceções internas ---   em System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)   em System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream)   em Iros._7th.Util.Deserialize[T](Stream s) na c:\Iros\7thWrapperLib\Util.cs:linha 10   em Iros._7th.Util.Deserialize[T](String file) na c:\Iros\7thWrapperLib\Util.cs:linha 14   em Iros._7th.Workshop.Sys..cctor() na c:\Iros\7thWorkshop\Sys.cs:linha 100   --- Fim do rastreamento de pilha de exceções internas ---   em Iros._7th.Workshop.Sys.get_Catalog()   em Iros._7th.Workshop.pTags.Init() na c:\Iros\7thWorkshop\pTags.cs:linha 20   em Iros._7th.Workshop.pTags..ctor() na c:\Iros\7thWorkshop\pTags.cs:linha 29   em Iros._7th.Workshop.fLibrary.InitializeComponent() na c:\Iros\7thWorkshop\fLibrary.Designer.cs:linha 44   em Iros._7th.Workshop.fLibrary..ctor() na c:\Iros\7thWorkshop\fLibrary.cs:linha 17   em Iros._7th.Workshop.Program.Main() na c:\Iros\7thWorkshop\Program.cs:linha 18
 
Nobody's told me the test version I compiled earlier this week worked ... but nobody's said it didn't work either, so.

http://www.ficedula.co.uk/7H_1.53.zip

This only contains a few bug fixes, specifically;

-7H won't crash out when loading if the settings or library file is corrupt
-7H won't crash if the ff7.exe is missing / not found, or if permission is denied trying to run it

This update won't show up via the auto update mechanism since I don't have access to Iros' mega account; perhaps longer term, the auto update mechanism should be changed. For now, you'll have to download it manually.

If 7H is working fine for you - there's probably no point applying this update, unless you feel like testing it out. Might be worthwhile using this version if you're setting up from scratch, though, since it'll behave a bit better if you configure things incorrectly.
 
Doesn't run at all for me on Windows 10, not even an error message.
 
hey

is there anyway to play the lost wing mod without using 7th for the ff7 on the pc version
 
Hm :/ It's not being blocked due to being a downloaded file, is it? If you right click on the 7thHeaven.exe file and choose Properties, does it say at the bottom of the properties that it's blocked (& give you the option to unblock it)?

Can anyone else confirm?
 
That did the trick! It looks like it was auto flagged despite coming from within a downloaded archive. I was able to get it up and running just fine, although I don't have ff7 on it to test. I'll have to dig out a copy
 
So far I've opened it and just fiddled around with the UI. Everything seems to be working ok atm.

Could you look into the memory usage during downloads? It's possible that the larger downloads are freezing for some users because the memory usage reaches too high of an amount before finishing.
 
Status
Not open for further replies.
Back
Top