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:
[Blocked Image: 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
SoA Mod Tool
-
-
Ne x64 version macht nicht viel sinn, da alle Windows Betriebssysteme x86 32bit abwärtskompatibel sind ;P
-
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 morgenGepatchete 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:
QuoteACHTUNG, 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.
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.
CodeIf 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?
CodeFileInstall("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
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
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 ichIch hoffe, ich konnte alles gut beantworten
Mfg Fliwatt -
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?
-
Quote
Original von Fliwatt
Ich mach das schon immer so, wieso sollte ich es jetzt anders machen
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.QuoteOriginal 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
Busy Waiting ist immer Murks, merks dir für später.QuoteOriginal 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.QuoteOriginal 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.QuoteOriginal 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.
QuoteBusy 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 WegQuoteIch 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 -
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 gemachtalso, 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 -
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 -
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:
Dann wird die Mod mit allen ArtLib-Dateien die dazugekommen oder Verändert sind dorthin kopiert.
Für Maps Wird entsprechend ein Mapsordner angelegt:
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:
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 -
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 FliwattPS. 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 LustMfg Fliwatt
-
So, das neue SoA Mod Tool ist jetzt da,
weiter Infos im ersten Post
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 -
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.