SoA Mod Tool

  • Hallo liebe SoAmigos,
    wie ihr sicher schon wisst habe ich vor etwa einem Jahr ein Mod Tool für Siege of Avalon entwickelt, welches ein Wechseln zwischen den einzelnen Mods ermöglichte, da ich es aber unsauber programmiert habe ist es nie wirklich fertig geworden.
    Ich habe mich dann vor kurzem noch einmal drangesetzt und von neuem begonnen.
    Herausgekommen ist das SoA Mod Tool, ein relativ simpel gehaltener Modmanager, der aber seine Arbeit tut.
    Die Mods werden nicht vom Programm selber heruntergeladen sondern müssen vom Nutzer von http://poamigos.yooco.de/p.modpakete.html heruntergeladen werden.
    Das Importieren und Aktivieren funktioniert danach mit einem Klick.
    Hier ist ein Screenshot von dem Programm:
    [Blockierte Grafik: https://dl.dropbox.com/s/dzphyqeg6gdmcc9/screenshot%20soamodtool.JPG]
    Und hier ist natürlich der Downloadlink:
    https://dl.dropbox.com/s/e8gngdz3xzhkraq/Siege of Avalon ModTool.exe
    Und hier der Sourcecode:
    http://pastebin.com/bJevddu3
    Vielen Dank an Falker und Raptor für die tatkräftige Unterstützung
    Ich freue mich auf euer Feedback
    Fliwatt

  • voldemort13 Aber eine x64 Version ist leistungsstärker und das DLLCall funktioniert auf den verschiedenen Architekturen in AutoIT unterschiedlich,falls ich nochmal DLL-Call einfügen will . @Topic

    Das installieren von dem SoAmigos Patch funktioniert aus Buggründen noch nicht, neue, gepatchte Version kommt morgen

    Gepatchete Version ist ab jetzt verfügbar

  • Gleich vorweg, gute Sache, falls sich noch mehr Mods ergeben sollten.


    Mir sind da so ein paar Dinge am Code aufgefallen:


    Zitat

    ACHTUNG, BITTE FÜR KURZE ZEIT NICHTS AUF DER TASTATUR DRÜCKEN UND NICHT DIE MAUS BENUTZEN!!!! WICHTIG; SONST FUNKTIONIERT DAS PROGRAMM NICHT!


    Den Teil finde ich genial. :P
    Da lässt sich doch sicherlich was dran ändern.


    Ohne jetzt viel Ahnung von AutoIT zu haben, aber ergibt "While 1" nicht eine Endlosschleife? Sowas sollte man doch tunlichst vermeiden.


    Code
    If Not FileExists($path & "config.dat")Then _ExtractAll($sSavePath,$path) If Not FileExists($path & "config.dat") Then _ExtractAll($sSavePath,$path) If Not FileExists($path & "config.dat") Then MsgBox(0,"ERROR","COULD NOT EXTRACT AFTER 3 RETRIES") Exit EndIf EndIf Endif


    Was ist denn der tiefere Sinn hiervon? Innerhalb von Mikrosekunden versuchen eine Datei zu erstellen? Sehr fragwürdig, ob das nicht einfach reicht. ;)


    Die Progressbar hat ja auch erfundene Werte, ob die nötig sind? ;)


    Code
    FileInstall("7z.dll",@TempDir & "\7z.dll") FileInstall("7z.exe",@TempDir & "\7z.exe") FileInstall("7z.sfx",@TempDir & "\7z.sfx") FileInstall("7zCon.sfx",@TempDir & "\7zCon.sfx") FileInstall("7zFM.exe",@TempDir & "\7zFM.exe") FileInstall("7zG.exe",@TempDir & "\7zG.exe") FileInstall("7-zip.dll",@TempDir & "\7-zip.dll")


    Warum greifst du nicht auf die Standard-ZIP-Version von Windows zu?

  • Ich mach das schon immer so, wieso sollte ich es jetzt anders machen :D
    1.Nein, Fact ist, dass der Original SoA Installer besser ist, da ich dann von Hand die Registry Einträge setzten müsste und das wäre sehr fehlerlastig.
    2. Da hast du etwas falsch verstanden, Endlosschleifen sind sehr gut, vor allem weil man mit ExitLoop die Schleife sehr gut verlassen kann, ohne eine Variable umschalten zu müssen. Der Grund, warum Endlosschleifen "verachtet" sind ist, dass manche Leute dem Aberglauben aufsitzen eine Endlosschleife ohne sleep(250) oder GuiGetMsg() würde den Prozessor zerstören. Aber ich habe ja nur meist sehr kurz verwendete Endlosschleifen drin (zB. der Delay, bis nach der Installation der Digital Tome Launcher ausgeführt wird) und andere Sachen, diese gehen mit Schleifen sehr gut zb. Do Until ProcessExists("DTLoader.exe") ProcessClose("DTLoader.exe") Das wartet bis DTLoader.exe da ist und schließt es dann automatisch, Endlosschleifen sind nicht böse :P
    3. Da hast du tatsächlich einen Fehler gefunden, in meiner Version ist das schon behoben, aber da kommt noch ein bischen was dazu, der Code funktioniert nur manchmal wegen dem Delay von Autoit, da Autoit in VB gecodet ist und das auch schon nicht die schnellste Sprache ist. Und hat wiederum Java Einfluss und C# etc. da kann man lange bis Assembler rückverfolgen, deshalb ist die Sprache so langsam.
    4.Die Progressbar ist nur für den PanicUser, damit er nicht denkt, das Programm macht nix, klar sind die Werte willkürlich rausgesucht, aber sie stimmen so etwa.
    5.Weil es dafür keine gute UDF gibt, 7zip ist sehr zuverlässig, die UDF die ich benutze ist auch nicht optimal, aber die anderen waren sehr schwierig zu bedienen und diese UDF kapiere selbst ich


    Ich hoffe, ich konnte alles gut beantworten
    Mfg Fliwatt

    • Offizieller Beitrag

    Mich interessiert, wie du die Mods switchen willst?
    Über die Siege.ini kann man ja für die meisten Ordner die Pfade angeben,
    so dass man mehrere Resource Ordner etc für jede Mod anlegen kann.


    Wie machst dus mit dem Maps Ordner? Dieser ist nicht in der Siege.ini definiert. Bennent das Programm den Ordner dann entsprechend um?

  • Zitat

    Original von Fliwatt
    Ich mach das schon immer so, wieso sollte ich es jetzt anders machen :D
    1.Nein, Fact ist, dass der Original SoA Installer besser ist, da ich dann von Hand die Registry Einträge setzten müsste und das wäre sehr fehlerlastig.


    SoA kommt komplett ohne Registry Einträge aus, einzig ChaptEd hat da so seine Probleme mit. Weshalb du allerdings mit dem Download von SoA beginnst ist mir schleierhaft, setze das doch einfach voraus. Und das du den Patch von hier irgendwo auf einer Dropbox hochlädst, finde ich etwas mies, immerhin ist das ein Fanprojekt, durch das unser Forum hier am Leben erhalten bleibt.


    Zitat

    Original von Fliwatt
    2. Da hast du etwas falsch verstanden, Endlosschleifen sind sehr gut, vor allem weil man mit ExitLoop die Schleife sehr gut verlassen kann, ohne eine Variable umschalten zu müssen. Der Grund, warum Endlosschleifen "verachtet" sind ist, dass manche Leute dem Aberglauben aufsitzen eine Endlosschleife ohne sleep(250) oder GuiGetMsg() würde den Prozessor zerstören. Aber ich habe ja nur meist sehr kurz verwendete Endlosschleifen drin (zB. der Delay, bis nach der Installation der Digital Tome Launcher ausgeführt wird) und andere Sachen, diese gehen mit Schleifen sehr gut zb. Do Until ProcessExists("DTLoader.exe") ProcessClose("DTLoader.exe") Das wartet bis DTLoader.exe da ist und schließt es dann automatisch, Endlosschleifen sind nicht böse :P


    Busy Waiting ist immer Murks, merks dir für später. ;)


    Zitat

    Original von Fliwatt
    3. Da hast du tatsächlich einen Fehler gefunden, in meiner Version ist das schon behoben, aber da kommt noch ein bischen was dazu, der Code funktioniert nur manchmal wegen dem Delay von Autoit, da Autoit in VB gecodet ist und das auch schon nicht die schnellste Sprache ist. Und hat wiederum Java Einfluss und C# etc. da kann man lange bis Assembler rückverfolgen, deshalb ist die Sprache so langsam.


    Ich weiß jetzt nicht, ob das einfach eine absolut sinnlos aneinander gereihte Ansammlung von Programmiersprachen darstellen soll, um irgendwie schlau zu klingen, aber AutoIt wurde und wird seit dem kompletten Rewrite vom Mai 2001 in C++ gecodet, wie du da auf VB, Java, C# etc. kommst, ist mir schleierhaft, zumal C# auch erst 2001 erschienen ist. ;)
    Warum du das bis zu Assembler zurückverfolgen willst, weiß ich jetzt auch nicht, das ändert ja nichts am Ausgangsproblem.


    Zitat

    Original von Fliwatt
    4.Die Progressbar ist nur für den PanicUser, damit er nicht denkt, das Programm macht nix, klar sind die Werte willkürlich rausgesucht, aber sie stimmen so etwa.


    Prozentrechnung ergibt hier bestimmt mehr Sinn, aber - geschenkt. ;)


    Zitat

    Original von Fliwatt
    5.Weil es dafür keine gute UDF gibt, 7zip ist sehr zuverlässig, die UDF die ich benutze ist auch nicht optimal, aber die anderen waren sehr schwierig zu bedienen und diese UDF kapiere selbst ich


    Simples Batchscript und so, warum immer irgendwie extrem umständlich, wenns auch einfach geht? ;)

  • Nitemare Das Programm soll für jeden den Zugang zu Mods schaffen und deshalb kann der User auch wahlweise SoA installieren. Ich kann gerne vorraussetzen, dass der User im soamigos.de Forum registriert sein muss, um die Datei herunterzuladen, das wäre aber schwachsinning. Wenn einer der Entwickler des Patches es so will, kann ich das auch so machen, aber der Patch ist ja sowieso schon auf PatchesScroll.com Ausserdem erfährt der User ja dann auch in SoA, dass der Patch von SoAmigos ist.


    Zitat

    Busy Waiting ist immer Murks, merks dir für später.


    Ich habe den Code schon jetzt so geschrieben, wenn du ihn umschreiben willst, gerne dir steht nichts im Weg


    Zitat

    Ich weiß jetzt nicht, ob das einfach eine absolut sinnlos aneinander gereihte Ansammlung von Programmiersprachen darstellen soll, um irgendwie schlau zu klingen, aber AutoIt wurde und wird seit dem kompletten Rewrite vom Mai 2001 in C++ gecodet, wie du da auf VB, Java, C# etc. kommst, ist mir schleierhaft, zumal C# auch erst 2001 erschienen ist.


    Ich habe schon mehrmals im AutoIt Forum von den VB Wurzeln gelesen, und von da aus bin ich von Wikipedia auf die anderen Sprachen gekommen. Kann sein, dass meine Infos falsch sind. Warum Assembler? Assembler ist einfach mal eine sehr schnelle Sprache, da man es schon fast als die "Ursprache" bezeichnen kann und es effizent geschriebenen Code sehr gut in Maschinensprache überträgt. Es ist halt eben auch schwer zu bedienen.


    Das mit der Prozentrechnung, ja, könnte ich einbauen, wäre aber unnötig


    Das mit dem Batchscript ist wirklich umständlich, ich werde am besten die 7z.exe mit Paramtern starten, das ist viel effizenter. *WIP*
    @Topic
    Ich arbeite hart an dem Rest des Programmes, mal sehen, ob ich vor Montag(Schulanfang) fertig werde.
    Mfg Fliwatt

    • Offizieller Beitrag

    Zum Thema Fremdhosting:


    Der Patch steht auf Patches Scrolls, weil ich ihn dort platziert habe.
    Generell wäre es zumindest angebracht gewesen, nachzufragen ob
    es ok ist den Patch fremdzuhosten.


    Zumal man nun darüber diskutieren kann, wie sinnig es ist, den Patch
    auf irgendeiner Dropbox zu platzieren.


    Außerdem hast du meine Frage nicht beantwortet ;P

  • Hallo voldemort, du hast du schon recht, ich habe nur PiroMaster gefragt, ob er mir die Dateien gibt und ihn dann gefragt, ob ich sie auf meiner Dropbox hochladen soll, damit er sie nicht auf elfentraeume.eu lassen muss. Das habe ich dann auch getan,das Problem ist, wenn ich das Archiv Password protecten müsste oder sonst eine Sperre einbauen müsste, dann dürfte es nicht mehr OpenSource sein.
    Und ich dachte, ich hätte deine Frage schon beantwortet, dann habe ich es wohl nur in Gedanken gemacht :P also, das Script verschiebt alle Dateien von dem Mod, checkt die MD5 Checksums und verschiebt die Dateien dementsprechend und erstellt ein Backup von den Dateien, sodass alles bei Umstellung wieder beim gleichen bleibt, die Saves werden selbstverständlich auch gerettet (trotzdem keine Garantie bei Save-Verlust :P)
    Mfg Fliwatt

    • Offizieller Beitrag

    Das klingt ziemlich unpraktisch wenn du mich fragst, diese hin und herkopiererei. Zumal du ja bald den ganzen ArtLib Ordner kopieren
    müsstest. Außer dem Maps ordner, weiß ich, das du per Siege.ini einfach
    die Location ändern kannst. Das würde einiges an Kopiereei ersparen..^^




    Und es geht beim Patch weniger um Copyright oder Open Source.
    Es ist eher der Anstand. Aber Piro ist ebenso schuld, das er ihn einfach
    rausgibt. Er sollte auch nicht auf Elfenträume liegen. -.- Wozu hostet das
    Amigos ihn denn? Naja. Da sich der Herr hier eh kaum noch blicken lässt..

  • Das Problem ist, das die Mods teilweise Maps wie z.b. OKeep1 (oder so) verändern und ich dann Probleme mit den Mods hätte, es werden ja nicht so viele Dateien verändert, er verringert das Dateiaufkommen unter anderem mit MD5 Checksum Vergleich.
    Vol, was schlägst du denn stattdessen vor? Eine manuelle Installation von dem User? Das würde die Benutzerfreundlichkeit stark schmälern.
    Mfg Fliwatt

    • Offizieller Beitrag

    Mein Vorschlag steht doch da....


    Daten Kopieren, MD5 Checksummen prüfen, Daten hin und Herkopieren... scheiße Aufwändig all das.


    Mit der Installation der Mod könntest du einfach eine 2. Ordnerstruktur anlegen (sprich den Ordner ArtLib Kopieren) Das seähe Sturkturmäßig dann so aus:


    Code
    ...\SoA\ArtLib...\SoA\Mod1\ArtLib...\SoA\Mod2\ArtLib


    Dann wird die Mod mit allen ArtLib-Dateien die dazugekommen oder Verändert sind dorthin kopiert.


    Für Maps Wird entsprechend ein Mapsordner angelegt:


    Code
    ...\SoA\Maps...\SoA\Maps_Mod1...\SoA\Maps_Mod2


    Und um die Mod zu wechseln müssen nun nurnoch 2 Dinge passieren:


    1. Die Siege.ini muss umgeschrieben werden für die ArtLib Pfade und die Startmap --> Das müsste dein ModChanger schon wegen der Startmap und der Journale sowieso tun


    2. Der Maps-Ordner muss umbenannt werden. Für Mod1 Also:


    Code
    ...\SoA\Maps_Original
    ...\SoA\Maps
    ...\SoA\Maps_Mod2


    Die Strukturen von verschiedenen Mods und dem Originalspiel sind stets getrennt, entfernen einer Mod is Easy Going und Kopieraufwand gibts nur bei der Erstinstallation der mod.

  • Hallo Vol, mein Projekt ist nicht so auffwändig, die UDF, die ich gerade für das Projekt schreibe wird so etwa 10 Zeilen haben (dafür sehr kompakt)
    Vor allem ist dieses Prinzip von dir sehr Speicherplatzaufwändig und genau das will ich nicht. Ich schreibe jetzte erstmal mein Prinzip zu Ende und du kannst dich am Ende ja immer noch überzeugen lassen
    ;)
    Mfg Fliwatt

    • Offizieller Beitrag

    Die Größe des Codes interessiert doch niemanden.
    Dein System ist wesentlich komplizierter, ergo fehleranfälliger.
    Außerdem musst du sehrwohl mehrere Instanzen der selben Datei haben,
    du sparst dir zwar die, die nicht doppelt vorkommen, musst aber
    bei jedem Wechsel der Mod kopieren.
    Und ca. 500MB pro Mod ist doch heutzutage kein Ding mehr, zumindest
    nicht was Festplattenspeicher anbelangt.


    Aber mach mal. Ich bin gespannt. Wenn du Speicherplatz sparen willst,
    arbeite doch mit Hardlinks.

  • Ich habe während der Schulzeit nicht alle Zeit der Welt zum entwickeln und hatte auch so schon einige Frustration, zum Beispiel muss ich gerade erst einmal komplett die GUI neuschreiben, da diese sehr unsauber und fehlerhaft war
    Aktueller Entwicklungsstand:
    Bisher erledigt:
    -Kleinere Bugfixes im Installer
    -Grundlage für Kopiersystem geschaffen (DirCopyBackup Funktion programmiert)
    -IniSystem ausgearbeitet
    Gerade in Arbeit:
    -GUI Funktion und Ausarbeitung (20% Done)
    -Verschiedene Kopiermöglichkeiten(2% Done)


    Noch zu tuen:
    -Die GUI mit dem Kopiersystem in Einklang bringen
    -System Idiotensicher machen"


    Plan für spätere Updates:
    -Besser Design
    -Autoupdate Funktion
    Mfg Fliwatt


    PS. Ich muss leider aus Copyrighttechnischen Gründen den Standard SoA Installer für die Installation von Kapitel 1 nehmen.

  • So, damit ihr nicht denkt, dass ich faul bin:
    Aktueller Entwicklungsstand:
    Bisher erledigt:
    -System Idiotensicher gemacht(sollte klappen, wenn da irgendein Idiot mit CE rumpfuscht oder die ini's verändert, wie es ihm gerade passt dann kann ich da auch nichts machen)
    -Installer vervollständigt
    -Langsame(Speicherplatzsparende) Installationsmethode fertiggestellt
    -GUI beendet (hässliches Design, funktioniert aber)
    Gerade in Arbeit:
    -Kopiersysteme perfektionieren (50%)
    -Kopiersysteme testen (30%)
    Noch zu erledigen bis zum ersten Release:
    -PoA Kapitel 4 und Days of Ahoul Kapitel 3 integrieren
    -Entwickler in GUI richtig würdigen
    -Kein Erzwungener "Games" Pfad, muss nicht im Siege of Avalon Ordner sein
    Zukünftige Sachen:
    -Besseres Design
    -Autoupdate Funktion
    -Einfügen von externen Mods via ZIP
    So weit die Arbeit, ich hoffe ich werde nach den Osterferien fertig sein, in letzter Zeit hatte ich wegen dem Schulstress nicht sonderlich viel Zeit und Lust


    Mfg Fliwatt

  • Moin moin,


    nachdem ich letztes Jahr SoA nochmal komplett durchgespielt habe, habe ich jetzt großes Intersse mir die Mods mal zu Gemüte zu führen. =)


    Um das Ganze zu erleichtern will ich mit dem SoA Mod Tool arbeiten.
    Leider ist die Dropbox Datei wegen zu viel Traffic gesperrt und scheint auch sobald nicht wieder freigeschaltet zu werden.


    Hat jemand hier einen funktionierenden Link für mich, oder kann mir das Programm per Mail schicken?


    Das wäre super, vielen Dank!


    LG,
    The annoying Neese ;)

    • Offizieller Beitrag

    Die einzelnen Modpakete sind auch nicht mehr vorhanden. Wird also nicht funktionieren.
    Ich sage dir: Nimm doch einfach die Setups, wenn du sie spielen willst. Ist eigentlich sehr einfach, genau wie SoA zu installieren. Das einzige worauf man achten muss, ist den Ordnerpfad bei den Mod-Setups zu beachten und bei Bedarf - wenn er nicht mit dem SoA-Pfad übereinstimmt - ändern.