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

 

Ergebnis 1 bis 8 von 8
  1. Beiträge anzeigen #1 Zitieren
    Schwertmeister Avatar von Inspirate
    Registriert seit
    Aug 2012
    Beiträge
    959
     
    Inspirate ist offline

    Wie oder wo werden die Einträge für das Statusfenster in G1 eingestellt?

    Das Statusfenster in G1 möchte ich gerne etwas umändern. Ich brauche einige wenige Zeilen mehr für erlernte Attribute bzw. Ansehen in der Kolonie.

    So soll es später einmal aussehen:

    [Bild: 9rugbqn9.jpg]

    Dann möchte ich für G1 Sammler & Jäger weitere Anreize schaffen. Es sind zwei Bücher vom Start an im Inventar. Eines zählt gepflückte Pflanzen und das andere erlegte Tiere/Bestien/Monster.

    So sieht das z.B. aus:

    [Bild: thcbofrp.jpg]

    Je nach Anzahl erlegter/gepflückter Bestien/Pflanzen wird im Statusfenster das Ansehen in der Kolonie anders angezeigt. Für das höchste Ansehen muss da allerdings schon fast alles an Bestien und Pflanzen geschafft worden sein. Es soll einen besonderen Anreiz in der GothicTime dem Spieler geben.



    Aber mein Problem ist nun folgendes. Ich habe mir unter scripts/system/menu die Dateien mal angeschaut. Aber so wirklich verstehe ich den Aufbau der menu_status.d nicht.
    Kann mich da wer mit einer kleiner Erklärung wie das aufgebaut ist weiterhelfen?
    Geändert von Inspirate (11.09.2020 um 15:51 Uhr)

  2. Beiträge anzeigen #2 Zitieren
    Ritter Avatar von Kirides
    Registriert seit
    Jul 2009
    Ort
    Norddeutschland
    Beiträge
    1.780
     
    Kirides ist offline
    Zitat Zitat von Inspirate Beitrag anzeigen
    Aber mein Problem ist nun folgendes. Ich habe mir unter scripts/system/menu die Dateien mal angeschaut. Aber so wirklich verstehe ich den Aufbau der menu_status.d nicht.
    Kann mich da wer mit einer kleiner Erklärung wie das aufgebaut ist weiterhelfen?
    Um in meiner Mod eigene Statusbildschirm informationen darzustellen, habe ich das Script von Sektenspinner verwendet -> https://forum.worldofplayers.de/foru...1#post20906914

    In dem Script sind aber nur die Gothic 2 dNdR Engine-Adressen hinterlegt.
    Hier müsste man also mit IDA (oder ähnlicher software) die Engine Adressen für Gothic 1 rausfinden.

    Diese Adressen "könnten" die richtigen sein für Gothic 1. Ich habe die mal eben rausgesucht, aber nicht getestet.
    die oberste Adresse (SetLearnPoints) ist für den "HookEngineF" und die untere für den "CALL__thiscall"
    Code:
    oCMenu_Status::SetLearnPoints
    4678400 | (hex:0x00476300)
    
    void __thiscall zCMenuItem::SetText(zSTRING*, int, int)
    5061760 | (hex:0x004D3C80)

    Mit dem Script reicht es, in der Status_Menu.d paar neue Einträge zu machen, diese dem Status Menu haupteintrag zuordnen und dann durch dieses Script mit Texten zu befüllen.

    Ich benutze das Script um > 30 zusätzliche Informationen im Statusbildschirm darzustellen und es funktioniert tadellos.


    bzgl der Menu_Status.d:

    deine neuen Menu-Items müssen in der MENU_STATUS-Instanz "angemeldet" werden, d.h. die Instanz-Namen als String in einen freien Slot des "items"-Arrays setzen

    Code:
    // ********************************
    // Anmeldung der MenuItem-Instanzen
    // ********************************
    instance MENU_STATUS (C_MENU_DEF) 
    {
    	// Gilde, Level, XP und Magiekreis
    	
    	items[0]	= "MENU_ITEM_STATUS_HEADING";
    	// ---------------------------------------------
    	items[1]	= "MENU_ITEM_PLAYERGUILD";
    	items[2]	= "MENU_ITEM_LEVEL_TITLE";
    	items[3]	= "MENU_ITEM_LEVEL";
    	// ---------------------------------------------
    	items[4]	= "MENU_ITEM_TALENT_7_TITLE"; 		//Magie
    	items[5]	= "MENU_ITEM_TALENT_7_CIRCLE";		//Kreis
    	items[6]	= "MENU_ITEM_TALENT_7_SKILL";
    	// ---------------------------------------------
    	items[7]	= "MENU_ITEM_EXP_TITLE";
    	items[8]	= "MENU_ITEM_EXP";
    
    
    	// ... rest
    };
    für die Anordnung der Texte müssen bei den Instanzen entsprechend die "posx = ... ;" & "posy = ...;" entsprechend angpasst werden.
    Geändert von Kirides (11.09.2020 um 16:18 Uhr)

  3. Beiträge anzeigen #3 Zitieren
    Schwertmeister Avatar von Inspirate
    Registriert seit
    Aug 2012
    Beiträge
    959
     
    Inspirate ist offline
    Danke, das hat mir sehr geholfen.

    Ich habe heute alles soweit vorbereiten können um morgen den entscheidnden Schritt, die "Verdrahtung" mit der engine, zu scripten.

    Zunächst habe ich das bisherige Statusfenster für neue Einträge ein wenig aufgeräumt. Dabei habe ich fast graue Haare bekommen bis ich endlich kapiert hatte wie das mit den Startpositionen und Reihen /Spalten gehandhabt wird. Hat man es aber dann mal kapiert ist es zwar gewöhnungsbedürftig... aber simpel.

    So sieht das Statusfenster jetzt aus. Die Schutzwerte sind etwas hoch gewandert und die Magie unten drunter gesetzt. Dadurch konnte ich rechts die Spezialfähigkeiten etwas hoch schieben und so Platz für insgesamt 10 Fähigkeiten bzw. 6 weitere Fähigkeiten schaffen. Ich werde einige "FREIE" gleich mitverbinden.

    So sieht das Statusfenster umstrukturiert aus.

    [Bild: 6osgx3np.jpg]

    Dafür waren bislang insgesamt 3 Scripte anzupacken:

    ...Gothic\_work\DATA\scripts\content\_Intern\CONSTANTS.D

    Code:
    // Talents//
    
    
    const int NPC_TALENT_UNKNOWN        = 0;
    // Skilled Talents
    const int NPC_TALENT_1H                = 1;
    const int NPC_TALENT_2H                = 2;
    const int NPC_TALENT_BOW            = 3;
    const int NPC_TALENT_CROSSBOW        = 4;
    const int NPC_TALENT_PICKLOCK        = 5;
    const int NPC_TALENT_PICKPOCKET        = 6;
    const int NPC_TALENT_MAGE            = 7;
    // Special-Talents
    const int NPC_TALENT_SNEAK            = 8;
    const int NPC_TALENT_REGENERATE        = 9;
    const int NPC_TALENT_FIREMASTER        = 10;
    const int NPC_TALENT_ACROBAT        = 11;
    const int NPC_TALENT_COOK            = 12;
    const int NPC_TALENT_ALCHEMY        = 13;
    const int NPC_TALENT_SMITH            = 14;
    //Frei
    const int NPC_TALENT_FREI_01        = 15;
    const int NPC_TALENT_FREI_02        = 16;
    const int NPC_TALENT_FREI_03        = 17;
    
    
    const int NPC_TALENT_MAX            = 18;

    ... dann folgt die

    ...Gothic\_work\DATA\scripts\content\Story\TEXT.D

    Code:
    //CONST STRING TXT_TALENTS [NPC_TALENT_MAX] =    CONST STRING TXT_TALENTS [18] =    
    {
        "",
        "Einhänder",
        "Zweihänder",
        "Bogen",
        "Armbrust",
        "Schlösser öffnen",
        "Taschendiebstahl",
        "Magie",
        "Schleichen",
        "Regeneration",
        "Meister des Feuers",    
        "Akrobatik",
        "Kochen",
        "Alchemie",
        "Schmieden",
        "",                //FREI
        "",                //FREI
        ""                //FREI
        
    };
    
    
    /* SN: wird laut Bert nicht mehr benötigt. Ich kommentier es erst mal eine Version lang aus
    CONST STRING TXT_TALENTS_DESC [NPC_TALENT_MAX] = 
    // FIXME: wo werden die benutzt?
    {
        "",    
        "NPC_TALENT_1H",
        "NPC_TALENT_2H",
        "NPC_TALENT_BOW",
        "NPC_TALENT_CROSSBOW",
        "NPC_TALENT_PICKLOCK",
        "NPC_TALENT_PICKPOCKET",
        "NPC_TALENT_MAGE",
        "NPC_TALENT_SNEAK",
        "NPC_TALENT_REGENERATE",
        "NPC_TALENT_FIREMASTER",
        "NPC_TALENT_ACROBAT"
    //    "NPC_TALENT_COOK",
    //    "NPC_TALENT_ALCHEMY"  
    };
    */
    
    
    
    
    //CONST STRING TXT_TALENTS_SKILLS [NPC_TALENT_MAX] = 
    CONST STRING TXT_TALENTS_SKILLS [18] = 
    {
        "",
        "ungeübt|ausgebildet|gemeistert",                            //NPC_TALENT_1H
        "ungeübt|ausgebildet|gemeistert",                            //NPC_TALENT_2H
        "ungeübt|ausgebildet|gemeistert",                            //NPC_TALENT_BOW
        "ungeübt|ausgebildet|gemeistert",                            //NPC_TALENT_CROSSBOW  
        "ungeübt|ausgebildet|gemeistert",                            //NPC_TALENT_PICKLOCK
        "ungeübt|ausgebildet|gemeistert",                            //NPC_TALENT_PICKPOCKET
        "nein|1.Kreis|2.Kreis|3.Kreis|4.Kreis|5.Kreis|6.Kreis",        //NPC_TALENT_MAGE
        "nein|ja",                                                    //NPC_TALENT_SNEAK
        "nein|ja",                                                    //NPC_TALENT_REGENERATE 
        "nein|ja",                                                    //NPC_TALENT_FIREMASTER
        "nein|ja",                                                    //NPC_TALENT_ACROBAT
        "nein|ja",                                                     //NPC_TALENT_COOK
        "nein|ja",                                                     //NPC_TALENT_ALCHEMY
        "nein|ja",                                                     //NPC_TALENT_SMITH
        "nein|ja",                                                    //NPC_TALENT_FREI_01
        "nein|ja",                                                     //NPC_TALENT_FREI_02
        "nein|ja"                                                     //NPC_TALENT_FREI_03
    };
    ... und als letztes dann

    ...Gothic\_work\DATA\scripts\system\MENU\MENU_STATUS.D

    Code:
    instance MENU_STATUS(C_MENU_DEF) {
        // Spielername und Gilde        
        
        //items[0]    = "MENU_ITEM_PLAYERNAME_TITLE";
        //items[2]    = "MENU_ITEM_PLAYERNAME";
        
        items[0]    = "MENU_ITEM_PLAYERGUILD_TITLE";        
        items[1]    = "MENU_ITEM_PLAYERGUILD";                    
                
        //
        // Level und Erfahrung
        //
        
        items[2]    = "MENU_ITEM_LEVEL_TITLE";
        items[3]    = "MENU_ITEM_EXP_TITLE";
        items[4]    = "MENU_ITEM_LEVEL_NEXT_TITLE";
        items[5]    = "MENU_ITEM_LEARN_TITLE";
    
    
        items[6]    = "MENU_ITEM_LEVEL";
        items[7]    = "MENU_ITEM_EXP";
        items[8]    = "MENU_ITEM_LEVEL_NEXT";
        items[9]    = "MENU_ITEM_LEARN";
        
        
        //
        // Attribute
        //
            
        
        
        items[10]    = "MENU_ITEM_ATTRIBUTE_HEADING";
                       
        items[11]    = "MENU_ITEM_ATTRIBUTE_1_TITLE";
        items[12]    = "MENU_ITEM_ATTRIBUTE_2_TITLE";
        items[13]    = "MENU_ITEM_ATTRIBUTE_3_TITLE";
        items[14]    = "MENU_ITEM_ATTRIBUTE_4_TITLE";
        
        items[15]    = "MENU_ITEM_ATTRIBUTE_1";
        items[16]    = "MENU_ITEM_ATTRIBUTE_2";
        items[17]    = "MENU_ITEM_ATTRIBUTE_3";
        items[18]    = "MENU_ITEM_ATTRIBUTE_4";
    
    
        // Schutz
        
        items[19]    = "MENU_ITEM_ARMOR_HEADING";
        
        items[20]    = "MENU_ITEM_ARMOR_1_TITLE";
        items[21]    = "MENU_ITEM_ARMOR_2_TITLE";
        items[22]    = "MENU_ITEM_ARMOR_3_TITLE";
        items[23]    = "MENU_ITEM_ARMOR_4_TITLE";
        
        items[24]    = "MENU_ITEM_ARMOR_1";
        items[25]    = "MENU_ITEM_ARMOR_2";
        items[26]    = "MENU_ITEM_ARMOR_3";
        items[27]    = "MENU_ITEM_ARMOR_4";
        
        //
        // Waffentalente
        //
        
        // Ueberschriften
        items[28]    = "MENU_ITEM_TALENTS_WEAPON_HEADING";
        items[29]    = "MENU_ITEM_TALENTS_THIEF_HEADING";
        items[30]    = "MENU_ITEM_TALENTS_SPECIAL_HEADING";
        
        // Talent-Liste (Weapons)
        items[31]    = "MENU_ITEM_TALENT_1_TITLE";
        items[32]    = "MENU_ITEM_TALENT_1_SKILL";
        items[33]    = "MENU_ITEM_TALENT_1";
        
        items[34]    = "MENU_ITEM_TALENT_2_TITLE";
        items[35]    = "MENU_ITEM_TALENT_2_SKILL";
        items[36]    = "MENU_ITEM_TALENT_2";
        
        items[37]    = "MENU_ITEM_TALENT_3_TITLE";
        items[38]    = "MENU_ITEM_TALENT_3_SKILL";
        items[39]    = "MENU_ITEM_TALENT_3";
        
        items[40]    = "MENU_ITEM_TALENT_4_TITLE";
        items[41]    = "MENU_ITEM_TALENT_4_SKILL";
        items[42]    = "MENU_ITEM_TALENT_4";
        
        // Talent-Liste  Fortsetzung (Thief)
        items[43]    = "MENU_ITEM_TALENT_5_TITLE";
        items[44]    = "MENU_ITEM_TALENT_5_SKILL";
        items[45]    = "MENU_ITEM_TALENT_5";
        
        items[46]    = "MENU_ITEM_TALENT_6_TITLE";
        items[47]    = "MENU_ITEM_TALENT_6_SKILL";
        items[48]    = "MENU_ITEM_TALENT_6";
        
        // Talent-Liste Fortsetzung (Mage)
        items[49]    = "MENU_ITEM_TALENT_7_TITLE";
        items[50]    = "MENU_ITEM_TALENT_7_SKILL";
        
        // Talent-Liste Fortsetzung (Special)
        items[51]    = "MENU_ITEM_TALENT_8_TITLE";
        items[52]    = "MENU_ITEM_TALENT_8_SKILL";
    
    
        items[53]    = "MENU_ITEM_TALENT_9_TITLE";
        items[54]    = "MENU_ITEM_TALENT_9_SKILL";
        
        items[55]    = "MENU_ITEM_TALENT_10_TITLE";
        items[56]    = "MENU_ITEM_TALENT_10_SKILL";
        
        items[57]    = "MENU_ITEM_TALENT_11_TITLE";
        items[58]    = "MENU_ITEM_TALENT_11_SKILL";
        
        items[59]    = "MENU_ITEM_TALENT_12_TITLE";
        items[60]    = "MENU_ITEM_TALENT_12_SKILL";
        
        items[61]    = "MENU_ITEM_TALENT_13_TITLE";
        items[62]    = "MENU_ITEM_TALENT_13_SKILL";
    
    
    
    
    // hinzugefügt by Inspirate
    
    
    
    
        items[63]    = "MENU_ITEM_TALENT_14_TITLE";
        items[64]    = "MENU_ITEM_TALENT_14_SKILL";
        
        items[65]    = "MENU_ITEM_TALENT_15_TITLE";
        items[66]    = "MENU_ITEM_TALENT_15_SKILL";    
        
        items[67]    = "MENU_ITEM_TALENT_16_TITLE";
        items[68]    = "MENU_ITEM_TALENT_16_SKILL";
        
        items[69]    = "MENU_ITEM_TALENT_17_TITLE";
        items[70]    = "MENU_ITEM_TALENT_17_SKILL";    
        
        //
        // Eigenschaften
        //
            
        dimx        = 8192;
        dimy        = 8192;
        flags        = flags | MENU_OVERTOP|MENU_NOANI;    
        backPic        = STAT_BACK_PIC;
    };
    
    
    const int STAT_DY =  300;
    
    
    
    
    //
    // Spiel- und Spielerdaten
    //
    
    
    const int STAT_PLY_Y  = 1000;
    const int STAT_ATR_Y  = 2800;
    const int STAT_ARM_Y  = 5200;
    const int STAT_TAL_Y  = 1000;
    
    
    
    
    const int STAT_A_X1 =  500;
    const int STAT_A_X2 = 1300;
    const int STAT_A_X3 = 2300;
    const int STAT_B_X1 = 3500;
    const int STAT_B_X2 = 5700;
    const int STAT_B_X3 = 7200;
    
    
    instance MENU_ITEM_PLAYERGUILD_TITLE(C_MENU_ITEM_DEF)
    {
        text[0]     = "Gilde:";
        posx     = STAT_A_X1;    posy = STAT_PLY_Y+STAT_DY*0;    
        fontName    =    STAT_FONT_DEFAULT;
        flags        =    flags & ~IT_SELECTABLE;
    };
    
    
    instance MENU_ITEM_PLAYERGUILD(C_MENU_ITEM_DEF)
    {
        posx =    STAT_A_X2;    posy = STAT_PLY_Y+STAT_DY*0;
        dimx =  STAT_B_X1 - STAT_A_X2;
        dimy =  STAT_DY;
        fontName    =    STAT_FONT_DEFAULT;
        flags        =    flags & ~IT_SELECTABLE;
    };
    
    
    /*
    INSTANCE MENU_ITEM_PLAYERNAME_TITLE(C_MENU_ITEM_DEF)
    {
        text[0]     = "Name:";
        posx     = STAT_A_X1;    posy = STAT_PLY_Y+STAT_DY*1;    
        fontName    =    STAT_FONT_DEFAULT;
        flags        =    flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_PLAYERNAME(C_MENU_ITEM_DEF)
    {
        posx =    STAT_A_X2;    posy = STAT_PLY_Y+STAT_DY*1;
        dimx =  STAT_B_X1 - STAT_A_X2;
        dimy =  STAT_DY;
        fontName    =    STAT_FONT_DEFAULT;
        flags        =    flags & ~IT_SELECTABLE;
    };
    */
    
    
    
    
    
    
    //
    // Sonderattribute-Werte
    //
    
    
    
    
    // Texte
    INSTANCE MENU_ITEM_LEVEL_TITLE(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X1;    posy = STAT_PLY_Y + 1*STAT_DY;
        text[0]    = "Stufe";    
        fontName= STAT_FONT_DEFAULT;        
        flags    = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_EXP_TITLE(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X1;    posy = STAT_PLY_Y + 2*STAT_DY;    
        text[0]    = "Erfahrung"; 
        fontName = STAT_FONT_DEFAULT;    
        flags    = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_LEVEL_NEXT_TITLE(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X1;    posy = STAT_PLY_Y + 3*STAT_DY;    
        text[0]    = "Nächste Stufe";
        fontName = STAT_FONT_DEFAULT;
        flags    = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_LEARN_TITLE(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X1;    posy = STAT_PLY_Y + 4*STAT_DY;    
        text[0]    = "Lernpunkte";    
        fontName = STAT_FONT_DEFAULT;
        flags    = flags & ~IT_SELECTABLE;
    };
    
    
    // Werte
    INSTANCE MENU_ITEM_LEVEL(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X3;    posy = STAT_PLY_Y + 1*STAT_DY;    
        fontName= STAT_FONT_DEFAULT;
        flags    = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_EXP(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X3;    posy = STAT_PLY_Y + 2*STAT_DY;    
        fontName = STAT_FONT_DEFAULT;
        flags    = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_LEVEL_NEXT(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X3;    posy = STAT_PLY_Y + 3*STAT_DY;    
        fontName = STAT_FONT_DEFAULT;
        flags    = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_LEARN(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X3;    posy = STAT_PLY_Y + 4*STAT_DY;    
        fontName = STAT_FONT_DEFAULT;
        flags    = flags & ~IT_SELECTABLE;
    };
    
    
    
    
    //
    // Attribute
    //
    
    
    
    
    // Titel
    INSTANCE MENU_ITEM_ATTRIBUTE_HEADING(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X1;    posy = STAT_ATR_Y + 0*STAT_DY;
        text[0]        =  "ATTRIBUTE";    
        fontName    =    STAT_FONT_TITLE;
        flags        = flags & ~IT_SELECTABLE;
    };
    
    
    // Texte
    INSTANCE MENU_ITEM_ATTRIBUTE_1_TITLE(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X1;    posy = STAT_ATR_Y + 1*STAT_DY;
        text[0]        =     "Stärke";
        fontName    =     STAT_FONT_DEFAULT;
        flags        =     flags & ~IT_SELECTABLE;
    };
    INSTANCE MENU_ITEM_ATTRIBUTE_2_TITLE(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X1;    posy = STAT_ATR_Y + 2*STAT_DY;
        text[0]        =    "Geschick";
        fontName    =    STAT_FONT_DEFAULT;
        flags        =    flags & ~IT_SELECTABLE;
    };
    INSTANCE MENU_ITEM_ATTRIBUTE_3_TITLE(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X1;    posy = STAT_ATR_Y + 3*STAT_DY;
        text[0]        =    "Mana";
        fontName    =    STAT_FONT_DEFAULT;
        flags        =    flags & ~IT_SELECTABLE;
    };
    INSTANCE MENU_ITEM_ATTRIBUTE_4_TITLE(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X1;    posy = STAT_ATR_Y + 4*STAT_DY;
        text[0]        =    "Lebensenergie";
        fontName    =    STAT_FONT_DEFAULT;
        flags        =    flags & ~IT_SELECTABLE;
    };
    
    
    // Werte
    INSTANCE MENU_ITEM_ATTRIBUTE_1(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X3;    posy = STAT_ATR_Y + 1*STAT_DY;
        fontName    =    STAT_FONT_DEFAULT;    
        flags        =    flags & ~IT_SELECTABLE;
    };
    INSTANCE MENU_ITEM_ATTRIBUTE_2(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X3;    posy = STAT_ATR_Y + 2*STAT_DY;
        fontName    =    STAT_FONT_DEFAULT;    
        flags        =    flags & ~IT_SELECTABLE;
    };
    INSTANCE MENU_ITEM_ATTRIBUTE_3(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X3;    posy = STAT_ATR_Y + 3*STAT_DY;
        fontName    =    STAT_FONT_DEFAULT;    
        flags        =    flags & ~IT_SELECTABLE;
    };
    INSTANCE MENU_ITEM_ATTRIBUTE_4(C_MENU_ITEM_DEF)
    {
        posx = STAT_A_X3;    posy = STAT_ATR_Y + 4*STAT_DY;
        fontName    =    STAT_FONT_DEFAULT;    
        flags        =    flags & ~IT_SELECTABLE;
    };
    
    
    
    
    /*
    //
    // Schutz - originale Parameter gesichert by Inspirate
    //
    
    
    INSTANCE MENU_ITEM_ARMOR_HEADING(C_MENU_ITEM_DEF)
    {
        text[0]    = "SCHUTZ";
        fontName    =    STAT_FONT_TITLE;
        posx =  STAT_A_X1; posy = STAT_ARM_Y + 0*STAT_DY;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_1_TITLE(C_MENU_ITEM_DEF)
    {
        text[0]    = "vor Waffen";
        posx =  STAT_A_X1; posy = STAT_ARM_Y + 1*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_2_TITLE(C_MENU_ITEM_DEF)
    {
        text[0]    = "vor Geschossen";
        posx =  STAT_A_X1; posy = STAT_ARM_Y + 2*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_3_TITLE(C_MENU_ITEM_DEF)
    {
        text[0]    = "vor Feuer";
        posx =  STAT_A_X1; posy = STAT_ARM_Y + 3*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    
    
    INSTANCE MENU_ITEM_ARMOR_4_TITLE(C_MENU_ITEM_DEF)
    {
        text[0]    = "vor Magie";
        posx =  STAT_A_X1; posy = STAT_ARM_Y + 4*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    
    
    INSTANCE MENU_ITEM_ARMOR_1(C_MENU_ITEM_DEF)
    {
        posx =  STAT_A_X3; posy = STAT_ARM_Y + 1*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_2(C_MENU_ITEM_DEF)
    {
        posx =  STAT_A_X3; posy = STAT_ARM_Y + 2*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_3(C_MENU_ITEM_DEF)
    {
        posx =  STAT_A_X3; posy = STAT_ARM_Y + 3*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_4(C_MENU_ITEM_DEF)
    {
        posx =  STAT_A_X3; posy = STAT_ARM_Y + 4*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    */
    
    
    
    
    //
    // Schutz nach oben verschoben by Inspirate
    //
    
    
    INSTANCE MENU_ITEM_ARMOR_HEADING(C_MENU_ITEM_DEF)
    {
        text[0]    = "SCHUTZ";
        fontName    =    STAT_FONT_TITLE;
        posx =  STAT_A_X1; posy = STAT_ARM_Y - 2*STAT_DY;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_1_TITLE(C_MENU_ITEM_DEF)
    {
        text[0]    = "vor Waffen";
        posx =  STAT_A_X1; posy = STAT_ARM_Y - 1*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_2_TITLE(C_MENU_ITEM_DEF)
    {
        text[0]    = "vor Geschossen";
        posx =  STAT_A_X1; posy = STAT_ARM_Y + 0*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_3_TITLE(C_MENU_ITEM_DEF)
    {
        text[0]    = "vor Feuer";
        posx =  STAT_A_X1; posy = STAT_ARM_Y + 1*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    
    
    INSTANCE MENU_ITEM_ARMOR_4_TITLE(C_MENU_ITEM_DEF)
    {
        text[0]    = "vor Magie";
        posx =  STAT_A_X1; posy = STAT_ARM_Y + 2*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    
    
    INSTANCE MENU_ITEM_ARMOR_1(C_MENU_ITEM_DEF)
    {
        posx =  STAT_A_X3; posy = STAT_ARM_Y - 1*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_2(C_MENU_ITEM_DEF)
    {
        posx =  STAT_A_X3; posy = STAT_ARM_Y + 0*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_3(C_MENU_ITEM_DEF)
    {
        posx =  STAT_A_X3; posy = STAT_ARM_Y + 1*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_ARMOR_4(C_MENU_ITEM_DEF)
    {
        posx =  STAT_A_X3; posy = STAT_ARM_Y + 2*STAT_DY;    fontName = STAT_FONT_DEFAULT;
        flags = flags & ~IT_SELECTABLE;
    };
    
    
    
    
    //
    // Talente
    //
    
    
    
    
    // Headings
    INSTANCE MENU_ITEM_TALENTS_WEAPON_HEADING(C_MENU_ITEM_DEF)
    {
        text[0]    = "WAFFENTALENTE / VOLLTREFFER-CHANCE";
        posx    = STAT_B_X1; posy = STAT_TAL_Y + STAT_DY*0;
        fontName    =    STAT_FONT_TITLE;    
        flags        =    flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_TALENTS_THIEF_HEADING(C_MENU_ITEM_DEF)
    {
        text[0]    = "DIEBESTALENTE / CHANCE DES VERSAGENS";
        posx    = STAT_B_X1; posy = STAT_TAL_Y + STAT_DY*6;
        fontName    =    STAT_FONT_TITLE;    
        flags        =    flags & ~IT_SELECTABLE;
    };
    
    
    INSTANCE MENU_ITEM_TALENTS_SPECIAL_HEADING(C_MENU_ITEM_DEF)
    {
        text[0]    = "SPEZIALFÄHIGKEITEN";
    //    posx    = STAT_B_X1; posy = STAT_TAL_Y + STAT_DY*14;
        posx    = STAT_B_X1; posy = STAT_TAL_Y + STAT_DY*10;
        fontName    =    STAT_FONT_TITLE;
        flags        =    flags & ~IT_SELECTABLE;
    };
    
    
    //
    // Liste der Talente
    //
    
    
    // Waffentalente...
    
    
    // Talent 1
    INSTANCE MENU_ITEM_TALENT_1_TITLE(C_MENU_ITEM_DEF) { posx = STAT_B_X1;posy = STAT_TAL_Y +  1*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    INSTANCE MENU_ITEM_TALENT_1_SKILL(C_MENU_ITEM_DEF) { posx = STAT_B_X2;posy = STAT_TAL_Y +  1*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    INSTANCE MENU_ITEM_TALENT_1(C_MENU_ITEM_DEF)        { posx = STAT_B_X3;posy = STAT_TAL_Y +  1*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 2
    INSTANCE MENU_ITEM_TALENT_2_TITLE(C_MENU_ITEM_DEF) { posx = STAT_B_X1;posy = STAT_TAL_Y +  2*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_2_SKILL(C_MENU_ITEM_DEF) { posx = STAT_B_X2;posy = STAT_TAL_Y +  2*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    INSTANCE MENU_ITEM_TALENT_2(C_MENU_ITEM_DEF)        { posx = STAT_B_X3;posy = STAT_TAL_Y +  2*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 3
    INSTANCE MENU_ITEM_TALENT_3_TITLE(C_MENU_ITEM_DEF) { posx = STAT_B_X1;posy = STAT_TAL_Y +  3*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_3_SKILL(C_MENU_ITEM_DEF) { posx = STAT_B_X2;posy = STAT_TAL_Y +  3*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    INSTANCE MENU_ITEM_TALENT_3(C_MENU_ITEM_DEF)       { posx = STAT_B_X3;posy = STAT_TAL_Y +  3*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 4
    INSTANCE MENU_ITEM_TALENT_4_TITLE(C_MENU_ITEM_DEF) { posx = STAT_B_X1;posy = STAT_TAL_Y +  4*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_4_SKILL(C_MENU_ITEM_DEF) { posx = STAT_B_X2;posy = STAT_TAL_Y +  4*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    INSTANCE MENU_ITEM_TALENT_4(C_MENU_ITEM_DEF)       { posx = STAT_B_X3;posy = STAT_TAL_Y +  4*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Diebestalente
    
    
    // Talent 5
    INSTANCE MENU_ITEM_TALENT_5_TITLE(C_MENU_ITEM_DEF) { posx = STAT_B_X1;posy = STAT_TAL_Y +  7*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_5_SKILL(C_MENU_ITEM_DEF) { posx = STAT_B_X2;posy = STAT_TAL_Y +  7*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    INSTANCE MENU_ITEM_TALENT_5(C_MENU_ITEM_DEF)        { posx = STAT_B_X3;posy = STAT_TAL_Y +  7*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 6
    INSTANCE MENU_ITEM_TALENT_6_TITLE(C_MENU_ITEM_DEF) { posx = STAT_B_X1;posy = STAT_TAL_Y +  8*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_6_SKILL(C_MENU_ITEM_DEF) { posx = STAT_B_X2;posy = STAT_TAL_Y +  8*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    INSTANCE MENU_ITEM_TALENT_6(C_MENU_ITEM_DEF)       { posx = STAT_B_X3;posy = STAT_TAL_Y +  8*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    /*
    // Magie - originale Parameter gesichert by Inspirate
    
    
    // Talent 7
    INSTANCE MENU_ITEM_TALENT_7_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y +  10*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_7_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y +  10*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    */
    
    
    // Magie auf links Seite verschoben by Inspirate
    
    
    // Talent 7
    INSTANCE MENU_ITEM_TALENT_7_TITLE(C_MENU_ITEM_DEF)  { posx =  STAT_A_X1; posy = STAT_ARM_Y + 4*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_7_SKILL(C_MENU_ITEM_DEF)  { posx =  STAT_A_X3; posy = STAT_ARM_Y + 4*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    
    
    
    
    // Spezial
    
    
    
    
    // Talent 8 SCHLEICHEN
    INSTANCE MENU_ITEM_TALENT_8_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y +  11*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_8_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y +  11*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 9 REGENERATION
    INSTANCE MENU_ITEM_TALENT_9_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y +  12*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_9_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y +  12*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 10 MEISTER DES FEUERS
    INSTANCE MENU_ITEM_TALENT_10_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y + 13*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_10_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y + 13*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 11 AKROBATIK
    INSTANCE MENU_ITEM_TALENT_11_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y + 14*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_11_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y + 14*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    
    
    
    
    //freigeschaltet by Inspirate
    
    
    // Talent 12 KOCHEN
    INSTANCE MENU_ITEM_TALENT_12_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y + 15*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_12_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y + 15*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 13 ALCHEMIE
    INSTANCE MENU_ITEM_TALENT_13_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y + 16*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_13_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y + 16*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    
    
    
    
    //hinzugefügt als leere Platzhalter by Inspirate
    
    
    // Talent 14 SCHMIEDEN
    INSTANCE MENU_ITEM_TALENT_14_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y + 17*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_14_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y + 17*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 15 FREI_01
    INSTANCE MENU_ITEM_TALENT_15_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y + 18*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_15_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y + 18*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 16 FREI_02
    INSTANCE MENU_ITEM_TALENT_16_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y + 19*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_16_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y + 19*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    
    
    // Talent 17 FREI_03
    INSTANCE MENU_ITEM_TALENT_17_TITLE(C_MENU_ITEM_DEF)  { posx = STAT_B_X1;posy = STAT_TAL_Y + 20*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };
    instance MENU_ITEM_TALENT_17_SKILL(C_MENU_ITEM_DEF)  { posx = STAT_B_X2;posy = STAT_TAL_Y + 20*STAT_DY;    fontName = STAT_FONT_DEFAULT;flags=flags & ~IT_SELECTABLE; };

    Heute war ein erfolgreicher und lehrreicher Tag. Aber morgen wirds bestimmt noch besser wenn der zweite Teil des "engine Verbinden" dran ist.
    Geändert von Inspirate (12.09.2020 um 00:09 Uhr)

  4. Beiträge anzeigen #4 Zitieren
    Abenteurer Avatar von Senlax
    Registriert seit
    Jan 2021
    Ort
    HH
    Beiträge
    92
     
    Senlax ist offline
    Kirides oder auch gerne jemand anderes der sich damit auskennt,
    weißt du durch Zufall auch wie ich z.B. folgendes erweitern kann?

    Code:
    const string TXT_TALENTS_SKILLS[12] =
    {
        "",
        "Ungeübt|Kämpfer|Meister",
    
    ...
    In G1 habe ich ja oben erwähnte Punkte,
    Ungeübt, wenn ich ja kein Waffentalent habe,
    Kämpfer, wenn ich es ja auf Stufe 1 habe
    und
    Meister, wenn ich es auf Stufe 2 habe.

    Nun würde ich es gerne so anzeigen lassen,
    wenn ich z.B. bei einem Crit-Chance von, siehe Code, steht.

    Code:
    (Npc_GetTalentValue(self,NPC_TALENT_1H) == 0)
    
    "Ungeübt"
    
    (Npc_GetTalentValue(self,NPC_TALENT_1H) >= 0)
    
    "Neuling"
    
    (Npc_GetTalentValue(self,NPC_TALENT_1H) >= 15)
    
    "Anfänger"
    
    (Npc_GetTalentValue(self,NPC_TALENT_1H) >= 30)
    
    "Fortgeschritten"
    
    (Npc_GetTalentValue(self,NPC_TALENT_1H) >= 45)
    
    "Talentiert"
    
    (Npc_GetTalentValue(self,NPC_TALENT_1H) >= 60)
    
    "Kämpfer"
    
    (Npc_GetTalentValue(self,NPC_TALENT_1H) >= 75)
    
    ""
    
    (Npc_GetTalentValue(self,NPC_TALENT_1H) >= 90)
    
    "Krieger"
    
    (Npc_GetTalentValue(self,NPC_TALENT_1H) >= 100)
    
    "Meister"
    Gibt es da eine möglich das so in etwa zu erweitern?

    Oder ist dies auf beide Engines hardcoded und lässt sich nicht verändern?

  5. Beiträge anzeigen #5 Zitieren
    Ritter Avatar von Kirides
    Registriert seit
    Jul 2009
    Ort
    Norddeutschland
    Beiträge
    1.780
     
    Kirides ist offline
    Zitat Zitat von Senlax Beitrag anzeigen
    Kirides oder auch gerne jemand anderes der sich damit auskennt,
    weißt du durch Zufall auch wie ich z.B. folgendes erweitern kann?

    Code:
    const string TXT_TALENTS_SKILLS[12] =
    {
        "",
        "Ungeübt|Kämpfer|Meister",
    
    ...
    In G1 habe ich ja oben erwähnte Punkte,
    Ungeübt, wenn ich ja kein Waffentalent habe,
    Kämpfer, wenn ich es ja auf Stufe 1 habe
    und
    Meister, wenn ich es auf Stufe 2 habe.

    Nun würde ich es gerne so anzeigen lassen,
    wenn ich z.B. bei einem Crit-Chance von, siehe Code, steht.

    Code:
    (Npc_GetTalentValue(self,NPC_TALENT_1H) == 0)
    
    "Ungeübt"
    
    (Npc_GetTalentValue(self,NPC_TALENT_1H) >= 0)
    
    "Neuling"
    
    (Npc_GetTalentValue(self,NPC_TALENT_1H) >= 15)
    
    "Anfänger"
    ...
    ""
    Gibt es da eine möglich das so in etwa zu erweitern?

    Oder ist dies auf beide Engines hardcoded und lässt sich nicht verändern?
    Über das Script von Sektenspinner kannst du alle dargestellten werte komplett überschreiben und bist nicht auf festgeschriebene Engine werte angewiesen.
    Wobei der Hook vielleicht zu früh ist und deshalb von der Engine überschrieben wird.
    Aber das kannst du ja mal erstmal probieren.

  6. Beiträge anzeigen #6 Zitieren
    Abenteurer Avatar von Senlax
    Registriert seit
    Jan 2021
    Ort
    HH
    Beiträge
    92
     
    Senlax ist offline
    Ich versuche mal mein Glück,
    ob ich da durchsteige, sprich es an den richtigen Orten platziere.
    Da stell ich mich so manches Mal leicht dämlich an.

    *edit*

    Ich bin langsam am Verzweifeln ...

    Code:
    func void INIT_Global() 
    {
       // Initialize LeGo
       LeGo_Init(LeGo_All);
        //Call this is INIT_GLOBAL after LeGo_Init.
        func void Install_Character_Menu_Hook() {
            //at oCMenu_Status::SetLearnPoints
            const int done = false;
            if(!done) {
                HookEngineF(4707920, 6, Update_Character_Menu);
                done = true;
            };
        };
    };
    
    // [INTERAL]
        func void Update_Menu_Item(var string name, var string val) {
            var int itPtr;
            itPtr = MEM_GetMenuItemByString(name);
            
            if (!itPtr) {
                MEM_Error(ConcatStrings("Update_Menu_Item: Invalid Menu Item: ", name));
                return;
            };
            
            //void __thiscall zCMenuItem::SetText(val = val, line = 0, drawNow = true)
            const int SetText = 5114800;
            
            CALL_IntParam(true);
            CALL_IntParam(0);
            CALL_zStringPtrParam(val);
            CALL__thiscall(itPtr, SetText);
        };
        
    
    // [/INTERNAL]
    Das kommt in die Startup.d rein, nach LeGo_Init. (Codebox hier drüber)

    Code:
    func void Update_Character_Menu() {
        /* Usage:
            Update_Menu_Item([Name of the Menu Item],
                             [new String value]);
        */
        
        //Replace heading with number of coins
        var int gold;
        gold = Npc_HasItems(hero, ItMiNugget);
        var string s;
        s = ConcatStrings(IntToString(gold), " Coins");
        Update_Menu_Item("MENU_ITEM_STATUS_HEADING", s);
    };
    Das kann ich in jeder Datein werfen, da es automatisch abgerufen wird oder nicht? (Codebox hier drüber)

    Soweit denke ich ist alles klar.

    Wie, und da bitte ein fertiges Beispiel - muss der Script im Menu_Status.d aussehen?

    Code:
        items[64] = "MENU_ITEM_STATUS_HEADING";
    
    [...]
    
    INSTANCE MENU_ITEM_STATUS_HEADING(C_MENU_ITEM_DEF)   { posx = STAT_B_X1;posy = STAT_TAL_Y + 20*STAT_DY;    fontName = MENU_FONT_SMALL_WHITE;flags=flags & ~IT_SELECTABLE; };
    So würde ich das Ding nun schreiben. (Codebox hier drüber)

    PS: Es ist für G1 gedacht - also wenn ich irgendwas falsch mache, sagt es mir bitte.
    Der Senlax war's

    ein Modder-Krüppel schlecht hin
    Geändert von Senlax (03.04.2021 um 20:26 Uhr)

  7. Beiträge anzeigen #7 Zitieren
    Abenteurer Avatar von Senlax
    Registriert seit
    Jan 2021
    Ort
    HH
    Beiträge
    92
     
    Senlax ist offline
    So, nach langen ansehen / probieren etc. und auch durch Hilfe von Lehona, die mir sagte, dass ich es damals falsch initialisiert habe,
    geht die Version von Sekti leider nicht mit G1. Ich habe auch die Adressen, die Kirides oben geschrieben hat verwendet und auch
    weitere mit in der Nähe befindlichen Adressen mit IDA nachgesehen und verwendet (wobei ich mir nicht sicher bin, ob diese überhaupt
    richtig waren).

    Gibt es also eine andere Möglichkeit das für G1 umzusetzen?

    Sprich wenn ich in der Constant.d
    Code:
    const int NPC_Talent_MakeRunes = 12;
    hinzufüge, dann die Max. auf 13 setze, die in der Text.d die Zeilen erweitere,
    in der Menu_status.d die Talente dort einbinde, werden sie leider nicht ausgelesen.

    Firemage / Regeneration sind bereits verwendet, bevor einer fragt.
    Daher würde ich gerne neues einbringen.

    Hat jemand eine Idee oder kann, weil ich bin dafür zu nennen wir es unfähig,
    es für G1 umschreiben?

    Vielen Dank und schönen Abend wünsch ich (:
    Der Senlax war's

    ein Modder-Krüppel schlecht hin

  8. Beiträge anzeigen #8 Zitieren
    Abenteurer Avatar von Senlax
    Registriert seit
    Jan 2021
    Ort
    HH
    Beiträge
    92
     
    Senlax ist offline
    Habe meinen Fehler gefunden, wieso es nicht ging.

    Hatte beim erneuten hinzufügen nicht auf die von Kirides Adressen geachtet
    und diese dann vertauscht und ich hatte auch den falschen Menu-Punkt
    ausgewählt.

    Fazit, die Adressen oben stimmen.

    Danke Kirides
    Der Senlax war's

    ein Modder-Krüppel schlecht hin

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
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