Programm b.z.w Spiel mit/ohne gewünschte Dateien ausführen

  • VB.NET

Es gibt 56 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Programm b.z.w Spiel mit/ohne gewünschte Dateien ausführen

    Hallo,
    Ich bin neu hier und Entschuldigung wenn das hier der falsche Bereich ist.

    Also ich habe mal eine Frage und bin beim Googeln danach auf dieses Forum gestoßen.
    Ich würde gerne ein Programm mit oder auch ohne bestimmten Dateien ausführen können.

    Ein Beispiel:
    Wenn ich eine Datei eines Programms überschreibe mit einer neuen, verliere ich ja die alte, richtig?

    So, ich möchte aber ein Programm bauen dass mir die Wahl lässt die
    alte Datei oder die neue zu nutzen (gleichzeitig) oder mit/ohne neuen oder neuen
    Dateien.

    Das Programm soll quasi mir die Wahl geben ein Programm mit einer
    bestimmten Datei (beliebiger Dateityp) aus einen bestimmten Ordner zu starten. Die Datei ist
    mit dem Programm kompatibel nur ich will die halt nicht die alte überschreiben müssen. Ich möchte halt auch ohne diese extra Datei
    das Programm starten so als wäre die Datei garnicht da(mit einen anderen Button). Verstanden? :thumbsup:

    Es kennen sicher von Euch ein paar Mods für Spiele. Bei Mods installieren werden ja meist Dateien überschrieben, aber ich will die extern laden können und die Alten behalten können.

    Der Dateityp ist völlig egal, das Programm soll die modifizierten oder auch neue Dateien aus einem neuen Ordner der sich im Programmordner befindet, laden.

    Noch ein Beispiel: :(
    Programm A ist unverärndert.
    Datei B wird im Ordner von Programm A gelegt
    Programm A verhält sich jetzt beim ausführen anders als sonst
    Datei B hat aber eine Datei von Programm A überschrieben

    Der Benutzer von Programm A möchte aber die alte Datei auch nutzen

    Programm C hingegen startet Programm A ohne Datei B,
    Programm C hat aber einen Button das Programm A mit Datei B starten lässt also beides.


    I hoffe Ihr versteht es.
    Ich muss noch zugeben das ich jetzt nicht grad ausgebildet in VBS bin, ich weiß nicht mal ob ich es alleine hinbekomme b.z.w ob es schwer ist sowas zu basteln.
    Darum wäre ich über ein paar Vorlagen sehr erfreut
    Danke im Vorraus

    LG VBS Amatuer :whistling:

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Danke Leute,
    Ich habe jetzt schonmal hinbekommen die bestimmten Dateien auflisten zu lassen also alle Dateien mit Moddateiformat.
    Ich kann jetzt die Exe des Spiels öffnen und das Spiel starten, jetzt würde ich gerne brennend wissen vorallem weil ich im Internet nix finde, wie ich die aufgelisteten Datein aus meiner Listbox mit dem Programm starten kann, wie als würden die im Ordner des Haupverzeichnis liegen.
    Also ich muss irgendwie die Dateien übergeben aus der Listbox. Nur wie? Und wie gleichzeitig ausführen?
    Er soll den Ordner aus der Textbox um es einfacher zu erklären so behandeln als wäre das der Ordner vom Spiel, und im Spielordner sind normalerweise die Mods drin.
    Vom Prinzip her soll es wie der Minecraft Modlauncher (modloader) oder wie der heißt funktionieren.



    So ich hoffe Ihr könnt mir jetzt konkret sagen was zu tun ist

    @ChOoSeMyNaMe: Ich möchte nicht ein Spiel modbar machen sondern die Modnutzung extrem vereinfachen und verhindern dass man die orginalen Dateien verliert falls was passiert. So kann man auch unbedenklich online spielen wenn man die Wahl hat.

    Sowie der Modloader für SA nur in Programmform.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VBSAmatuer“ ()

    Ich dachte jetzt eher weniger an eine aktive Dateiauswahl durch den Benutzer, sondern erst das Verzeichnis scannen und mit allen verfügbaren Mod-Dateien eine ComboBox füttern.
    Sobald der Benutzer in der Combobox einen entsprechenden Eintrag auswählt wird im entsprechenden Event die entsprechende Modifikation geladen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @petaod:

    petaod schrieb:

    Ich
    dachte jetzt eher weniger an eine aktive Dateiauswahl durch den Benutzer, sondern erst das Verzeichnis scannen und mit allen verfügbaren Mod-Dateien eine ComboBox füttern.
    Sobald der Benutzer in der Combobox einen entsprechenden Eintrag auswählt wird im entsprechenden Event die entsprechende Modifikation geladen.


    Ja das würde ich nehmen nur brauchen ein paar Mods mehrere Dateien, die müsste man dann quasi vereinen, das würde mir alles komplizierter machen oder nicht,

    Ich habe das ja schon drin im Prinzip



    Brauche ich vielleicht eine Dll Datei zu erstellen um das umzusetzen?
    Ich möchte mit dem Programm nur so tun als seien die Datein aus der Textbox im Hauptordner des Spiels, mehr nicht. Diese Dateien sind dann Mods die man normalerweise in den Hauptordner tut damit die funktionieren. Aber wenn man ohne die spielen will muss man Sie ja normal löschen, das will ich vereinfachen

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „VBSAmatuer“ ()

    Wilkommen im Forum. :thumbup:

    VBSAmatuer schrieb:

    Brauche ich vielleicht eine Dll Datei zu erstellen um das umzusetzen?
    Das ist nicht ganz einfach zu beantworten. ZUnächst brauchst Du einen guten Plan.
    Stell Dir vor, Du steuerst eine Maschine (das ist auch nichts anderes als Dein Spiel :!: ) und musst Teile der Software auf einem Rechner schreiben, wo die komplette Hardware oder Teile der Hardware nicht zur Verfügung stehen,
    da musst Du sie halt simulieren.
    Dies geschieht z.B. über ein PlugIn-System. Beispiel: Motorsteuerung.
    Das Programm "ist es gewohnt", mit dem Motor zu kommunizieren. Wenn Du den Motor wegnimmst, will das Programm immer noch mit dem Motor kommunizieren.
    1. Da kannst Du bei jeder Codezeile, die auf die Motorsteuerung zugreift, ein If drum herum basteln und den Zugriff abfangen.
    2. Du kannst auch die Motorsteuerung kapseln (üblicherweise in einer DLL) und dieser Kapsel sagen, dass sie simulieren soll, da bleibt das Programm wie es ist und in der Kapsel steht in jeder Prozedur wieder dieses Simulations-If.
      Das ist zwar besser als Lösung 1, aber immer noch nicht gut.
    3. Du kannst die Motor-DLL durch eine Simulations-Motor-DLL ersetzen. Da bleibt das Programm wie es ist, da bleibt die Motor-DLL wie sie ist und Du hast eine zusätzliche Simulations-Motor-DLL.Der Vorteil dieser 3. Lösung besteht darin, dass, wenn die Firma Müller keine Motoren mehr liefert, kannst Du das Programm ganz einfach auf Motoren der Firma Meier umstellen.
      Motoren tauschen, Müller-DLL weg, Meier-DLL rein, feddich.
    Damit dies funktioniert, brauchst Du ein PlugIn-System "Motorsteuerung".
    Wenn Du dann ein äquivalentes PlugIn-System "Kamerasteuerung", "IO-Port-Steuerung" usw. hast, kannst Du jede Komponente einzeln und auch alle Komponenten gemeinsam simulieren.
    So wird ein Spiel draus. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @VBSAmatuer
    die vorgehensweisse mit Dateien überschreiben ist einfach komplett veraltet und sollte so auf keinster weisse benutzt werden! Die neueren Spiele die richtigen Mod-Support von Werk aus unterstützen machen das komplett anders. bei den alten Spielen als man noch nicht wusste das der Mod-Support ein Spiel am leben hält hat man an einen Mo-Support garnicht erst gedacht...
    Nachteil: Die Modder mussten es irgentwie schaffen einen Mod-Support in das Game einbauen wenn noch das Original-Game spielbar sein soll (ist oftmals nicht mehr der fall) dann werden Backupdateien erzeugt und dann wird es richtig komplex ;)

    wenn das original-Game noch Spielbar sein solll hat man immer einen art Launcher gebaut und dann konnte man vor dem Starten auswählen was man spielen wollte (mod oder original). Wenn man den Mod Spielen wollte wurde immer alle Original-Dateien in einen Backup-Ordner geschoben und die Mod-Dateien ins Spiel-Verzeichnis.
    beim Normalen-game wurde die original-Dateien (vom backup-Ordner) in das Spiel-Verzeichnis geschoebn und das spiel wurde gestartet...
    eine absolute qual! und sollte so niemals mehr in Spielen angewedet werden

    nehmen wir mal als Beispiel das Game "Supreme Commander". Dieses Game hat von Werk aus einen richtig guten Mod-Support mit einem richtigen Mod-Manager (Supreme Commander 2 dagegen hat das nicht mehr und das Game ist schrott).
    Bei SupCom wird das Game zuerst "IMMER" im Original-zustand geladen und das Hauptmenü ist immer Original.
    Das hat ein kleinen Nachteil... man kann im Hauptmenü nichts ändern- ist aber eigentlich nicht sonderlich schlimm ;)
    im Einzelspieler aktivierst du die Mods im hauptmenü (normales vorgehen Heut zu tage) und diese können "Fast Alles" im Game verändern. es wird hier nichts ersetzt!

    wenn du ein Mehrspieler-Spiel auf machst kannst du Mods in der "Lobby" aktivieren oder deaktivieren (und das ist der Grund warum SupCom1 so einen Guten Mod-Suppport hat). Diese werden aber noch nicht in der Lobby aktiviert! es bleibt immernoch alles im Original-zustand.
    erst wenn auf "Spiel-Starten" gedrückt wird passiert es.
    Die Mods liegen alle in einen Ordner
    Mods
    Mods/Mod1
    Mods/Mod2
    Mods/Mod3
    Mods/Mod4
    Mods/Mod5
    ...
    nehmen wir mal an Mod2,3,5 wurden aktiviert

    Ladebildschirm erscheint
    Schritt1: Das Game wird zuerst im Original-zustand geladen
    Schritt2: Laden der Mods. Die Mods werden nacheinander geladen. Das Game Überschreibt aber keine Dateien. Das Game weiss Mod 2,3,5 Geladen und ersetzen Daten von Panzer 2,3,4,,6,7,8,9, und erstellen neue Fahrzeuge.
    alle ersetzten Dateien werden im Ram gespeichert und das game weiss "AHH die feuerkraft von Panzer3 wurde von Mod3 geändert aber sonst nix, lade ich das mal vom Ram).
    Dadurch läuft das game nicht Langsamer (sondern bei Balance-Mods ehr schneller) und man kann so jeden Mod aktivieren ohne Probleme mit dem Original-game zu bekommen. Ein Grosser Nachteil ist allerdings das du hier nichts im Menü ändern kannst... was für viele Modder aber der Hauptgrund ist ein Mod zu machen!

    du Solltest dir überlegen was du alles ersetzen willst. Muss man das Hauptmenü ersetzen können weil vllt jemand ein neuen Gamemode erstellt hat? oder ist dein Hauptmenü schon gut genug? Bei Vielen Games werden die Mods im Hauptmenü aktiviert und das Game startet dann neu. Auch hier wird das Gam immer zuerst im Original-zustand geladen und erst dann die Mod-Dateien. Meistens werden die Mod-Dateien die Original-Dateien ersetzen wollen in den Ram geladen. aber ersetzt und überschrieben wird schon lange nichts mehr.

    Mache dir Gedanken was du alles von deiner Seite aus alles Modbar machen möchtest und jemehr es ist destro besser wird es. bei Multiplayer-Games sollte man das Game nicht neu-Starten wenn ein anderer Mod geladen sollte. sondern die Mods in der Lobby aktivieren und beim gamestart (also wenn die Map/Level geladen wird) aktiviert werden.
    bei Einzelspieler will man ja direkt mit den ausgewählten Mods Spielen und desswegen wirden die Mods öfters schon beim start des Menüs geladen...
    man Überschreibt aber keine Maps/Levels sondern man erstellt neue ;)



    Wenn du kein Game erstellen wirst kannst du es so auch auf ein Programm anwenden. Programm immer zuerst im Original-Zustand laden und dann Mod-Datei (oder Plugin) Laden. wird auch oft bei Skins oder Design so verwendet...
    und bei 8Gb Arbeitsspeicher schläg ein Mod garnich ins gewicht wenn nur MB ersetzt werden müssen und in den Ram geladen werden :D
    Danke erstmal für eure Romane @MVN050 @RodFromGermany :D

    Also ich entwickel selber Mods, nur das Spiel wovon ich rede ist GTA 5.
    Derzeit gibt es für GTA 5 mehrere Skriptloader, Asi, LUA ect.

    Der SkriptHookV Mod schließt automatisch das Spiel sobald man in den Multiplayer geht. Es gibt aber Meldungen von gebannten Spielern weil die mit den Datein Online gegangen sind.
    Vor dem Update von SkriptHookV konnte man mit dem Mod in den Multiplayer und die Skripts haben ab da nicht mehr funktioniert.
    Der SkriptHookV Mod besteht aus 2 .Dll Dateien die ins Hauptverzeichnis von V gelegt werden. Dieser Mod lädt Asi,cleo, Skripte und mit einem zusätlichen ASI Skript auch LUA Skripte.

    Derzeit gibt es noch keine Mods für das Spiel die was ersetzen.

    So und ich habe mir Gedanken gemacht wie man die Bannwelle und Die Modinstllations von künftigen Mods extreem vereinfachen könnte, Modloader.

    Die Dll Datein des SkriptHookV Mod sollen jetzt nicht mehr im Hauptverzeichnis liegen sondern in einem Unterordner des Spiels und sollen genau so geladen werden so wie dafür gemachte .Asi Skripte.

    So was ich alles bisher habe
    OpenFileDialog um GTAVLaucher.exe zu öffen und zu starten
    Listbox wo aus einem beliebigen Ordner die Asi Datein und Dll Dateien geladen werden

    Das mit der RAM Ablagerung wäre in Prinzip das Selbe wie wenn ich die Mod Dateien aus einem beliebigen Ordner lade oder nicht?

    Was mir jetzt eigentlich noch fehlt ist, die geladenen Daten aus der Listbox so mitzu starten als würden Die ganz normal im Haupverzeichnis liegen.
    Dann würde ich noch falls zwingen eine Windowsregel von dem Programm erstellen und ausführen lassen die die Internetverbindung im mit Mods Modus blockiert.

    Wenn das klappen würde, könnte ich mir ganz einfach aussuchen ob ich jetzt unbedenklich mit Freunden spielen kannn
    Oder ob ich jetzt tolle Mods haben will aber dafür nicht in den Online Modus kann.
    Dann hätte ich beides und die angeblichen Bannwelle müsste rapide runter gehen und ich wäre der King :saint:

    So das sollte jetzt für Klarheit sorgen, Ich kann ja versuchen erstmal nur die Mods mit zu laden die keine Dateien ersetzen. Nur ich weiß immer noch nicht wie ich die mitstarte.


    Danke Im Vorraus
    ohh tut mir leid... ich hab dein Beitrag nicht richtig gelesen/verstanden... ich bin davon ausgegangen das du ein Game bauen willst...

    zu GTA5 kann ich leider nicht viel sagen da ich das game leider (noch) nicht habe...
    ABER
    kontrollier doch mal ob alle Mods immer ins Hauptverzeichniss müssen? und ob die nie irgentwelche Dateien ersetzen?
    wenn das so ist dann ist es ja einfach :D

    dann nimmst du einfach ein "Mod-Ordner" und schiebst da alle Dateien und Mods rein...
    Bei Startet des Modmanagers wählst du den Mod aus den du starten willst (SkriptHookV)

    jetzt erstelst du dir eine Textbox und schreibst alle Dateien vom Mod da rein (damit du es weisst(mehr dazu später)) und schreibst auch rein welcher Mod du gestartet hast.
    Jetzt kopierst du die Moddateien vom Mod-Ordner ins Hauptverzeichnis von GTA5 und startest das Game.
    Das Game startet mit Mod und du hast spass.
    jetzt kannst du entweder den Modloader schliessen oder der Modloader überwacht jetzt den gta5 Prozess solange bis er wieder beendet wird.

    wenn GTA5 wieder beendet wird (oder du GTA5 Original Spielen willst)
    Öffnest du deine Datei und weisst genau welche Dateien zum Mod gehören und welcher Mod aktiviert wurd.
    Entweder löscht du jetzt die ModDateien oder schiebst die zurück in den Mod-Ordner

    mehr ist es eigentlich nicht ;)
    wenn der Mod Original-Dateien ersetzt dann musst du von den Original-Dateien ein Backup machen und die Original-Dateien wieder ersetzen


    ich glaube GTA5 verbietet sogar mods oder?
    @MVN050
    Danke, also im Prinzip nur die aufgelisteten Dateien aus dem Mod Ordner in den Hauptordner kopieren? Und dann beim Beeenden wieder löschen?
    Ps: R* möchte keine Mods im Multiplayer mehr nicht

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VBSAmatuer“ ()

    VBSAmatuer schrieb:

    Und dann beim Beeenden wieder löschen?
    Funktioniert dann nicht, wenn Dir das Programm abstürzt.
    Mach Dir ein ordentliches Design und gib allen Dateien einen festen Platz und lade sie von da.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VBSAmatuer schrieb:

    Wie simuliere ich den Ordner als Hauptordner?
    Wieso simulieren?
    Verwende ihn.
    Mit welchem Code lädtst Du denn Deine Dateien?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    RodFromGermany schrieb:

    VBSAmatuer schrieb:

    Wie simuliere ich den Ordner als Hauptordner?
    Wieso simulieren?
    Verwende ihn.
    Mit welchem Code lädtst Du denn Deine Dateien?


    Ja ich muss ja den bestimmten Ordner simulieren sonst läd er die Mods ja nicht mit.

    Visual Basic-Quellcode

    1. Private Sub Button1_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. ListBox1.Items.Clear()
    3. Dim directory As New System.IO.DirectoryInfo(TextBox1.Text + "\Skripts\")
    4. For Each file1 As System.IO.FileInfo In directory.GetFiles
    5. If file1.Extension = ".dll" Or file1.Extension = ".asi" Or file1.Extension = ".lua" Then
    6. ListBox1.Items.Add(file1.FullName)
    7. End If
    8. Next
    9. End Sub


    LG

    VBSAmatuer schrieb:

    VB.NET-Quellcode

    1. Dim directory As New System.IO.DirectoryInfo(TextBox1.Text + "\Skripts\")
    Arbeite mit einem FolderBrowserDialog.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @VBSAmatuer
    unser Meister @RodFromGermany geht davon aus das dein "Mod-Launcher" abkacken könnte und dann alles futsch wäre...
    das wäre aber falsch. wenn du die Dateien einfach kopierst legst du dir erstmal eine Datei ein und schreibst da rein welche Dateien kopiert wurden...
    dein Mod-Launcher kann dan ruhig abkacken oder dein pc stürzt ab... das wäre dann egal... dein Mod-Launcher liest zuerst die Datei aus und kuckt ob der Mod noch aktiv ist.
    wenn du dann im Mod-Manager auf "Original-Game" schaltest löscht er erst die Mod-Dateien. nicht früher/später...
    du musst dir nur eine Datei anlegen und reinschreiben was gerade gestartet wurde...

    auf diese art und weisse hab ich mir selber schon einige Mod-Launcher gebastelt ;)
    Ok Danke @MVN050 das ist einleuchtend, aber wenn ich die Dateien kopiere statt zu veschieben sind die Dateien ja immer da oder nicht? So müsste ich ja keine Datei mit einer Liste erstellen lassen. Problem ist aber grade irgendwie aus dem FolderDialog den Pfad abzufangen b.z.w ich weiß nicht warum er den Pfad nicht findet.
    Und danke an @RodFromGermany Er hat mir mit dem Folderdialog die Seriösität des Programms und den Platz verbessert.

    Und designt habe ich jetzt es auch schon im GTA 5 Style, ich finde das macht mir bei VBS am meisten Spaß :D

    [Ignoriert bitte die Listbox und die ganzen Buttons darin] Dient nur als Codebackup

    So bei dem Aktivierungsbutton ist der Code folgender

    Visual Basic-Quellcode

    1. Try
    2. My.Computer.FileSystem.MoveFile(Modpfad, OpenFileDialog1.FileName & Endung)
    3. Endung = System.IO.Path.GetExtension(Modpfad)
    4. SaveFileDialog1.FileName = System.IO.Path.GetFileNameWithoutExtension(Modpfad)
    5. MsgBox("Successfully activated!")
    6. Catch ex As Exception
    7. MsgBox("Fail!" & ex.Message)
    8. End Try


    Ich weiß es ist verschieben und nicht kopieren aber ich will erstmal überhaupt es zum laufen kriegen

    Der Lade Mods Button ist der folgende Code

    Visual Basic-Quellcode

    1. FolderBrowserDialog1.ShowDialog()
    2. Modpfad = FolderBrowserDialog1.SelectedPath
    3. TextBox1.Text = Modpfad


    Und der Open Button der gleichzeitig der Zielpfad sein soll, der Code

    Visual Basic-Quellcode

    1. OpenFileDialog1.Filter = "GTAVLauncher|*.exe*"
    2. OpenFileDialog1.Tag = "GTA 5 Modloader"
    3. If OpenFileDialog1.ShowDialog = DialogResult.OK Then
    4. Label1.Text = OpenFileDialog1.FileName


    So was läuft falsch?
    Wie übergebe ich die Dateien aus dem Modordner an den Open Button Ordner also dem des Spiels Hauptverzeichnis?

    Danke Im Vorraus

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VBSAmatuer“ ()

    MVN050 schrieb:

    und dann alles futsch wäre...
    Nö, Du hast nur 2 Mal die Dateien da und musst Dich beim Start der nächsten Instanz um solche Belanglosigkeiten kümmern (kopieren oder nicht, überschreiben oder nicht).
    Mach es immer so einfach wie möglich, also: Nicht kopieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!