Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Page 1 of 2 12 Last »
Results 1 to 20 of 21
  1. View Forum Posts #1 Reply With Quote
    General neocromicon's Avatar
    Join Date
    Jan 2019
    Posts
    3,166
     
    neocromicon is offline

    [Patch] PatchMenu - Ein eigenes Menü für Patches

    Info Spieler
    Dieser Patch bietet anderen Patches ein eigenes Menü um die Übersichtlichkeit zu erhöhen. Alleine bietet er keine weiteren Funktionen.

    Info Entwickler
    Spoiler:(zum lesen bitte Text markieren)

    platzhalter

    Download[Bild: flagDE.png] [Bild: flagEN.png]
    PatchMenu_1.0.2.zip
    Auch über Spine erhältlich
    Auch auf Nexus zu haben

    Voraussetzungen
    Version 1.08k_mod (Gothic 1)
    Reportversion 2.6.0.0 (Gothic 2 DNDR)
    Ninja 2.4.09 oder höher

    Installation
    Einfach die PatchMenu.vdf aus dem ZIP Archiv, in den Ordner [Gothic]\Data\\ kopieren. Zur Deinstallation die Datei einfach entfernen.

    Versionsgeschichte
    Spoiler:(zum lesen bitte Text markieren)

    1.0.2
    • Bugfixes:
      - Selten auftretener Absturz behoben (Danke and Roland54)

    1.0.1
    • Neuerungen:
      - PatchMenu verwendet als Hintergrund das Menübild der L'Hiver RU, für bessere Lesbarkeit
    • Sonstiges:
      - Kleinere Optimierungen

    1.0
    • - Release


    Donate
    Dir gefällt meine Arbeit und du möchtest mich etwas unterstützen? Das kannst du gerne hier tun: https://ko-fi.com/neocromicon Vielen lieben dank!
    Last edited by neocromicon; 13.09.2023 at 10:44.

  2. View Forum Posts #2 Reply With Quote
    Knight Draxes's Avatar
    Join Date
    Aug 2007
    Location
    Mainz
    Posts
    1,920
     
    Draxes is offline
    #HYPE (Ich benötige den ersten Kommentar)

  3. View Forum Posts #3 Reply With Quote
    Ritter Kirides's Avatar
    Join Date
    Jul 2009
    Location
    Norddeutschland
    Posts
    1,827
     
    Kirides is offline
    Ich hatte vor einiger Zeit mal sowas gebaut

    Die Anwendung ist recht einfach:
    Ein Patch erstellt einen Menüeintrag, welcher sein entsprechendes Menü aufruft und trägt diesen Eintrag im "Patch Menu" ein

    Spoiler:(zum lesen bitte Text markieren)
    Code:
    func int MyPatch_Ninja_GetPatchNum() {
        if (!NINJA_PATCHES) {
            return 0;
        };
        var zCArray arr; arr = _^(NINJA_PATCHES);
        return arr.numInArray;
    };
    
    func int MyPatch_Ninja_GetPatchObj(var int index) {
        if (index >= MyPatch_Ninja_GetPatchNum()) {
            MEM_Error("Ninja_GetPatchObj: Index out of bounds!");
            return 0;
        };
        return MEM_ArrayRead(NINJA_PATCHES, index);
    };
    
    func string MyPatch_Ninja_GetPatchName(var int index) {
        var int patch; patch = MyPatch_Ninja_GetPatchObj(index);
        if (patch) {
            return STR_FromChar(patch+4);
        } else {
            return "";
        };
    };
    
    func int MyPatch_PatchMenu_AddPatch(var string openMenuItem) {
        const int once = 1;
        const int supported = 0;
        if (once) {
            repeat(i, MyPatch_Ninja_GetPatchNum()); var int i;
                if (Hlp_StrCmp(MyPatch_Ninja_GetPatchName(i), "PATCHMENU")) {
                    // The patch "PATCHNAME" is installed!
                    supported = 1;
                    break;
                };
            end;
            once = 0;
        };
    
        if (!supported) { return 0; };
    
        MEM_PushStringParam(openMenuItem);
        MEM_CallByString("PatchMenu_AddPatch");
        var int success; success = MEM_PopIntResult();
        return success;
    };
    
    /*
    * Menu initialization function called by Ninja every time a menu is opened
    * Source: https://github.com/szapp/Ninja/wiki/Inject-Changes
    */
    func void Ninja_MyPatch_Menu(var int menuPtr) { // Adjust name
        MEM_InitAll();
    
        // Get menu and menu item list, corresponds to C_MENU_DEF.items[]
        var zCMenu menu; menu = _^(menuPtr);
        var int items; items = _@(menu.m_listItems_array);
    	
        if (Hlp_StrCmp(menu.name, "PATCHMENU_PATCHES")) {
            MyPatch_PatchMenu_AddPatch("MYPATCH_MENU_OPEN");
        };
        // ...
    };


    Hier ist die "PatchMenu.vdf" drin, die kümmert sich darum, das das PatchMenu existiert.
    Jeder Patch muss dann für sich, sich selbst zum PatchMenu hinzufügen.
    Theoretisch könnte man das umbauen, sodass das PatchMenu eigenständig nach sowas wie "PATCHNAME_MENU_OPEN" sucht, und wenn das exisitiert selbst hinzufügen. Aber das wollte ich dann nicht, weil das "zu magisch" gewesen wäre

    PatchMenu.zip

    Im Endeffekt schaut das ganze so aus:
    Ein Patch prüft ob das "PatchMenu" installiert ist und fügt sich anschließend der Patch Liste hinzu.

    So ein "Patch Menüeintrag" sieht dann z.B. so aus:
    "MYPATCH_MENU_OPEN" ist dabei der Eintrag der über "PatchMenu_AddPatch" hinzugefügt wird.

    Spoiler:(zum lesen bitte Text markieren)
    Code:
    INSTANCE MYPATCH_MENU(C_MENU_DEF) // <-- The actual Menu for your Patch
    {
        backpic		= PATCHMENU_BACK_PIC;
    
        items[0]	= "MYPATCH_MENU_HEADING";
    
        items[1]	= "MENUITEM_OPT_BACK";
    
        defaultOutGame	= 0;	// PERFORMANCE-SETTINGS
        defaultInGame	= 0;	// PERFORMANCE-SETTINGS
    
        flags = flags | MENU_SHOW_INFO;
    };
    
    INSTANCE MYPATCH_MENU_HEADING(C_MENU_ITEM_DEF) // <-- Heading for your patches Menu
    {
        text[0]		=	"EXAMPLE PATCH";
        type		=	MENU_ITEM_TEXT;
        // Position und Dimension
        posx		=	0;		posy		=	0;
        dimx		=	8192;
    
        flags		= flags & ~IT_SELECTABLE;
        flags		= flags | IT_TXT_CENTER;
    };
    
    
    INSTANCE MYPATCH_MENU_OPEN(C_MENU_ITEM) // <-- Entry added to PatchMenu
    {
        backpic		= PATCHMENU_ITEM_BACK_PIC;
    
        fontName	= PATCHMENU_PATCH_FONT;
        text[0]		= "Beispiel Patch";
        text[1]		= "Beispiel Patch einstellen";
    
        alphaMode		=	"BLEND";
        alpha			=	254;
        type			=	MENU_ITEM_TEXT;
        // Position und Dimension
        posx = PATCHMENU_PATCHES_COL3;  posy = 1200 + 350 * 0; // 1200 -> XPos, 350 Font Height, will be overriden by PatchMenu
        dimx = 2048; // maximum supported width, will be overriden by PatchMenu
        dimy = 350;  // Font Height, will be overriden by PatchMenu
    
        flags			=	IT_CHROMAKEYED|IT_TRANSPARENT|IT_SELECTABLE|IT_TXT_CENTER;
    	
        openDelayTime	=	0;
        openDuration	=	-1;	
    	
        sizeStartScale  = 	1;
    	
        userFloat[0]    =	100;	
        userFloat[1]	=	200;
    	
        onChgSetOption  			=	"";
        onChgSetOptionSection 		= "INTERNAL";
        hideIfOptionSectionSet		= "";
        hideIfOptionSet				= "";
        hideOnValue					= -1;
    	
        frameSizeX		= 0;
        frameSizeY		= 0;
    
            // Aktionen
        onSelAction[0]	= SEL_ACTION_STARTMENU;
        onSelAction_S[0]= "MYPATCH_MENU";
    
    };
    Last edited by Kirides; 13.11.2021 at 16:31.

  4. View Forum Posts #4 Reply With Quote
    Waldläufer
    Join Date
    Sep 2013
    Posts
    116
     
    BeLiaRN1 is offline
    Gute Idee, könnte man auch die Patch Einstellung unter den Menüpunkt Einstellungen packen und nicht im Hauptmenü?

  5. View Forum Posts #5 Reply With Quote
    Ehrengarde mud-freak's Avatar
    Join Date
    Dec 2005
    Posts
    2,329
     
    mud-freak is offline
    Das Einklinken ins bereits existierende Plugin-Menu hat nicht funktioniert?

    Ich finde es, wie beschrieben, hinfällig alles doppelt zu erstellen und dass Plugins und Patches in zwei verschiedenen Welten leben, ständig die selben Ideen fast identisch nachbauen, und der Eindruck erweckt wird “was ist besser, als Patch oder als Plugin??”. Warum hier ein eigenes Menü.

    Elegant wäre wirklich, wenn ein Patch sich in das Plugin Menü einklinken, wenn es dieses findet, und ansonsten trotzdem funktioniert - nur halt ohne Menu, nur über die Ini erreichbar. Optional, ohne diese Abhängigkeit.

    Die, meiner Meinung nach, tatsächlich schlechteste Variante ist es, wie hier, neue Abhängigkeiten zu erstellen, sodass keiner deiner Patches mehr ohne diesen mehr läuft. Das geht in gewisser Hinsicht genau entgegen der Idee, dass Patches unabhängig und ohne weitere Vorraussetzungen laufen.

    Deshalb gibt es auch keine extra Ikarus-LeGo Patches. Wenn mal ein Bug auftritt oder ein Update nötig wird, werden die Leute verrückt, wenn man ständig irgendwelche sekundären Ressourcen aktualisieren muss, die man evtl. nicht mal will oder weiß was sie machen. Und wenn sich jemand von der Moddingszene zurückzieht, laufen alle Patches mit ein solcher Abhängigkeit den Bach runter, wenn die Software nicht länger unterstützt, gepflegt und aktualisiert wird.

    Ich hatte mir erhofft, jemand würde sich mit dem Plugin Untermenü etwas auseinandersetzen, damit ich das nicht auch noch machen muss (oder zumindest die Forumsuche betätigen, um auf den oben verlinkte Diskussion zu stoßen).

  6. View Forum Posts #6 Reply With Quote
    Ritter Kirides's Avatar
    Join Date
    Jul 2009
    Location
    Norddeutschland
    Posts
    1,827
     
    Kirides is offline
    Quote Originally Posted by mud-freak View Post
    Das Einklinken ins bereits existierende Plugin-Menu hat nicht funktioniert?

    Ich finde es, wie beschrieben, hinfällig alles doppelt zu erstellen und dass Plugins und Patches in zwei verschiedenen Welten leben, ständig die selben Ideen fast identisch nachbauen, und der Eindruck erweckt wird “was ist besser, als Patch oder als Plugin??”. Warum hier ein eigenes Menü.
    Das war der Grund warum ich "mein" PatchMenu nirgends eingebaut habe und auch nicht selbst "offiziell" veröffentliche. Das Beispiel weiter oben ist nur das, ein Beispiel wie so ein PatchMenu aussehen kann und funktionieren kann.

    Quote Originally Posted by mud-freak View Post
    Elegant wäre wirklich, wenn ein Patch sich in das Plugin Menü einklinken, wenn es dieses findet, und ansonsten trotzdem funktioniert - nur halt ohne Menu, nur über die Ini erreichbar. Optional, ohne diese Abhängigkeit.
    ...
    Ich hatte mir erhofft, jemand würde sich mit dem Plugin Untermenü etwas auseinandersetzen, damit ich das nicht auch noch machen muss (oder zumindest die Forumsuche betätigen, um auf den oben verlinkte Diskussion zu stoßen).
    Damit habe ich mich ehrlich gesagt noch überhaupt nicht auseinander gesetzt. Das Menü habe ich auch noch nie gesehen.

    Spiele einfach ohne Union Plugins.
    Das liegt aber nicht daran, dass diese "schlecht" sind - im Gegenteil, mit Union kann man echt super schön aufwändiges Zeug sicher umsetzen für G1 und G2.

    Der Grund warum ich mich damit bisher nicht weiter befasst habe, ist ganz einfach:
    Es gibt immer noch eine menge Spieler die Union einfach nicht benutzen wollen und bei z.B. Systempack 1.7 bleiben wollen.

  7. View Forum Posts #7 Reply With Quote
    Abenteurerin Butter12's Avatar
    Join Date
    Oct 2021
    Location
    Kühlschrank
    Posts
    70
     
    Butter12 is offline
    Quote Originally Posted by Kirides View Post
    Es gibt immer noch eine menge Spieler die Union einfach nicht benutzen wollen und bei z.B. Systempack 1.7 bleiben wollen.
    Weil du gerade die version 1.7 erwähnst, gibt es einen Unterschied oder vielleicht etwas warum man darauf bleiben sollte oder ist das 1.8/1.9 auch gut?
    Ich frage nur, weil ich keine Ahnung von den ganzen Einträgen und somit Fixes davon habe.

  8. View Forum Posts #8 Reply With Quote
    General neocromicon's Avatar
    Join Date
    Jan 2019
    Posts
    3,166
     
    neocromicon is offline
    Eins vorne weg, selbst wenn ich mal wirklich nicht mehr das Forum öffnen sollte, so bin ich über zig Kanäle erreichbar und würde bei Änderungen sofort einen Fix raushauen.
    Wenn ich etwas Scripte/Programmiere, fühle ich mich dessen auch verpflichtet das es läuft solange ich auf Erden wandere.

    Ich habe das ganze so transparent und einfach wie möglich gestaltet. Der User bekommt sogar einen bit.ly Download Link, auf Spine wird einem auch direkt gesagt was man herunterladen muss, Nexus das selbe Spiel. Ich habe auch ein paar vorrab Test's gemacht ob die Leute verstehen was zu tun ist und keiner hatte damit Probleme, auch nicht Gothic Spieler.

    Wenn ich da andere Mods in anderen Spielen sehe, mit ihren 10+ Abhängigkeiten, ist das hier wirklich "lächerlich".

    Genau deshalb habe ich nicht das Union Menü gewählt, aus dem Grund den Kirides schon schreibt. Ich bin sehr aktiv in der Gothic Com außerhalb von WoG und es gibt unglaublich viele Union Gegner, die Union aus seinen schlechten Tagen noch kennen und daher bis heute nicht anrühren. Deshalb will ich diesen Leuten aber nicht den Komfort, den ich ihn gebe, verwehren. Eine Ini verwirrt die Leute wesentlich mehr als irgend ein Zusatz Patch damit sie es schön haben. Ich habe es oft genug auf Twitch und in verschiedenen Discords gesehen.

    Wie oft kam die frage, wie stelle ich bei Autosave den die Minuten ein usw. x100 ? "Ja da steht was mit Gothic.ini, aber ich habe doch kein Plan was ich da machen soll" oder "Ne hab angst da was Falsch zu machen, mach du mal bitte neo". Es ist wie es ist, heutzutage sitzen nun mal größtenteils keine versierten User mehr vorm PC. Sich aber etwas zusätzlich zu Installieren, wenn es gut erklärt ist, das schaffen so gut wie alle, sie kennen es schließlich von anderen Spielen wie Skyrim usw. und wer es nicht schafft kann mich jederzeit anschreiben.

  9. View Forum Posts #9 Reply With Quote
    Abenteurerin Butter12's Avatar
    Join Date
    Oct 2021
    Location
    Kühlschrank
    Posts
    70
     
    Butter12 is offline
    Quote Originally Posted by neocromicon View Post
    ...
    Und es ist auch gut, dass du nicht Union gewählt hast. Denn nach 13 Versuchen das Teil zum Laufen zu bringen, kann ich wohl zu Recht sagen, es ist absolut grauenvoll (Kenne Union erst seit Version 1.0i).

    Danke also für deine Patches! A+
    Einen Durchlauf ohne jene, kann ich mir gar nicht mehr vorstellen!

  10. View Forum Posts #10 Reply With Quote
    Provinzheld TopLayer's Avatar
    Join Date
    Nov 2020
    Posts
    291
     
    TopLayer is offline
    Quote Originally Posted by Butter12 View Post
    Denn nach 13 Versuchen das Teil zum Laufen zu bringen, kann ich wohl zu Recht sagen, es ist absolut grauenvoll (Kenne Union erst seit Version 1.0i).
    From what I understood from your posts in the Union thread, it follows that you can run Union and Ninja separately, but you cannot run them together. Then the question arises: why are you blaming Union and not Ninja or some third source of evil?

  11. View Forum Posts #11 Reply With Quote
    Ehrengarde mud-freak's Avatar
    Join Date
    Dec 2005
    Posts
    2,329
     
    mud-freak is offline
    Es hätte Spaß gemacht, erst die Diskussion von hier (ff.) weiterzuführen. Ich bin mir sicher wir hätten zusammen eine gute Lösung gefunden. Die Ansätze von dort und auch die, die Kirides hier geteilt hat, hätten zu einer schönen Implementierung führen können. Schade.

  12. View Forum Posts #12 Reply With Quote
    General neocromicon's Avatar
    Join Date
    Jan 2019
    Posts
    3,166
     
    neocromicon is offline
    Ich bin sicher nicht davor abgeneigt das ganze besser lösbar zu machen, es ist ja nicht so das mir die ganze Sache beim erstellen keine Bauchschmerzen bereitet hatte, ich sah aber erstmal mit meinen Fähigkeiten keine andere Lösung für das Problem

    Daher habe ich ein bisschen gegrübelt, das einzige was mir jetzt so eingefallen ist wäre, das Ninja von Haus aus ein Menü mitbringt was man benutzen kann wenn der User kein Union benutzt. Man könnte dann eine if {} else Abfrage einbauen und so entweder bei Benutzung des Systempacks sich in das Ninja Menü einklinken oder halt in das Union Menü, so müsste der User erstmal nix weiteres Installieren. Ja dabei bliebe natürlich das Problem der "Zwei Universen", am ende des Tages interessiert das aber nur den Entwickler, aber nicht den User. Dem ist es am ende doch egal, Hauptsache es geht einfach

    Es gibt aber sicher noch wesentlich besseres, ohne das Ninja selbst da eingreifen muss, aber da fällt mir beim besten willen nix ein.

  13. View Forum Posts #13 Reply With Quote
    Abenteurer
    Join Date
    Nov 2018
    Posts
    71
     
    wahoonie is offline

    Verschieben des Menü-Eintrages

    Hey @neocromicon,

    ich versuche mich gerade an der L'Hiver-Original-Mod (von hier) und da bei dieser das Menü nach rechts verschoben ist, erscheint der Menüeintrag Deines PatchMenüs etwas verloren in der Bildschirmmitte:

    [Bild: attachment.php?s=0bc5a611979d1f8b621e78463027b2d5&attachmentid=51946&d=1657218247&thumb=1]

    Siehst Du eine Möglichkeit, diesen wieder in das Menü nach rechts zu integrieren?

    [Bild: attachment.php?s=0bc5a611979d1f8b621e78463027b2d5&attachmentid=51947&d=1657218485&thumb=1]

    Liebe Grüsse

    wahoonie

  14. View Forum Posts #14 Reply With Quote
    General neocromicon's Avatar
    Join Date
    Jan 2019
    Posts
    3,166
     
    neocromicon is offline
    Schau mal obs damit läuft. Da bei mir das Menü generell fast ausserhalb des Bildschirms ist, kann ich nicht sagen obs 100% geht.


    PatchMenu_Lhiver.zip

  15. View Forum Posts #15 Reply With Quote
    Abenteurer
    Join Date
    Nov 2018
    Posts
    71
     
    wahoonie is offline
    ja, funktioniert.

    Ich hatte in der Zwischenzeit mich selbst probiert und bei mir lieferte
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    [..]
    // Position und Dimension
        posx = 5150; posy = 0;
        dimx = 8192; dimy= 750;
    [..]

    in der MENU_OPT_PATCH.D das gewünschte Ergebnis.

    Wäre es möglich an dieser Stelle eine Abfrage einzubauen, ob die L'Hiver-Mod läuft und dann posx entsprechend auf den Wert zu setzen resp. 0?
    Ich hatte das hier probiert, es kommt beim Start aber immer die Fehlermeldung [..]Undefind Function HLP_STRCMP[..]:
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    [..]
    // Position und Dimension
        if (!Hlp_StrCmp(NINJA_MODNAME, "LHIVER")) { posx = 5150; }; else { pos   = 0; };
        posy = 0;
        dimx = 8192; dimy = 750;
    [..]


    wahoonie

  16. View Forum Posts #16 Reply With Quote
    General neocromicon's Avatar
    Join Date
    Jan 2019
    Posts
    3,166
     
    neocromicon is offline
    In Menüs Code einzusetzen ist nicht vorgesehen. Das ich das mit der Sprache mache ist auch nurn Workaround.
    Leider kann ich diese LHIver Version auch nicht unterscheiden, das sie keine eigene Ini hat. Jedenfalls die Originale Russische.

  17. View Forum Posts #17 Reply With Quote
    Abenteurer
    Join Date
    Nov 2018
    Posts
    71
     
    wahoonie is offline
    Danke Dir.

    Ich hatte mir eine eigene .ini für L'Hiver geschrieben, da ich mit dem GothicStarter spiele (die L'Hiver-vdfs als .mod umbenannt und in den MODVDF-Ordner abgelegt).

    Habe es gerade ausprobiert: Deine angepasste PatchMenu.vdf in eine .mod umbenannt, in den modvdf-Ordner gepackt und den Zeitstempel erhöht (2039) und entsprechend noch in der LHiver.ini ergänzt.
    Es läuft. Die anderen Mods greifen auf Deine Patchmenu.vdf zurück und L'Hiver auf die veränderte (.mod).

    Gruss

    wahoonie

  18. View Forum Posts #18 Reply With Quote
    Ehrengarde mud-freak's Avatar
    Join Date
    Dec 2005
    Posts
    2,329
     
    mud-freak is offline
    Ich halte ja nicht viel von diesem Patch, aber die mögliche Verschiebung von Menüs kann doch ganz leicht berücksichtigt werden. Neu ist das nicht.
    Quote Originally Posted by Ninja Dokumentation
    To integrate new menu entries more seamlessly, more elaborate code is necessary. The example below shows how to add a new entry to the key bindings menu while mimicking the existing entries in position, font and size.
    Quelle

    Der Patch ließe sich an so einigen Stellen etwas "intelligenter" machen, so dass er einige Dinge übernimmt bzw. automatisiert.

  19. View Forum Posts #19 Reply With Quote
    General neocromicon's Avatar
    Join Date
    Jan 2019
    Posts
    3,166
     
    neocromicon is offline
    Update 1.0 -> 1.0.1
    • Neuerungen:
      - PatchMenu verwendet als Hintergrund das Menübild der L'Hiver RU, für bessere Lesbarkeit
    • Sonstiges:
      - Kleinere Optimierungen

    Wie immer viel Spaß!

  20. View Forum Posts #20 Reply With Quote
    Drachentöter Roland54's Avatar
    Join Date
    Aug 2018
    Location
    In Sachsen- Anhalt
    Posts
    4,124
     
    Roland54 is offline
    Ich habe gerade die 1.0.1 getestet, mit Destiny, und Destiny ist bei jedem Start mit Access Violation abgestürzt. Erst nachdem ich wieder die 1.0 genommen habe, ging Destiny wieder. Ich weiß nicht, ob das am PatchMenu liegt oder an anderen Patches/Plugins bzw. an Destiny selbst. Aber ich wollte es wenigstens hier einmal erwähnen.
    Meine Übersetzungen und wo sie zu finden sind

    Die Summe der Intelligenz auf unserem Planeten ist konstant, aber die Bevölkerung wächst.
    (unbekannt)

Page 1 of 2 12 Last »

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide