[G2NK] Jak zwiększyć maksymalną ilość umiejętności? 3823 2

O temacie

Autor Czudak

Zaczęty 18.04.2020 roku

Wyświetleń 3823

Odpowiedzi 2

Czudak

Czudak

Użytkownicy
posty144
Propsy61
ProfesjaSkrypter
  • Użytkownicy
[G2NK] Jak zwiększyć maksymalną ilość umiejętności?

Joł.

Ostatnimi czasy zacząłem dodawać "nowe seksi skille" do moda, ale natrafiłem na przeszkodę. Mianowicie, skończyły mi się nowe miejsca na umiejętności, wykorzystując te wolne, których twórcy nie wykorzystali. Potrzebuję jeszcze trzy nowe, ale zgaduję, że nie wystarczy sobie dopisać te plus 3 do const int NPC_TALENT_MAX, żeby było łącznie 25, a potem odpowiednio zmodyfikować stringi w odpowiednich miejscach jak TEXT.D i MENU_STATUS.D, żeby to wszystko grało? No bo tak zrobiłem i nie wyszło. xD Czy to jest zakodowane "na twardo" gdzieś w silniku?

Pytanie więc: czy ktoś to już kiedyś z czytających jakoś obszedł? Może którymś ze znanych pakietów skryptów?
 

Parzival

Parzival

Użytkownicy
CEO (Itharu Team)
posty104
Propsy25
ProfesjaProducent
  • Użytkownicy
  • CEO (Itharu Team)
Zakodowane w silniku, Ikarus&LeGo starczy.

Do Gothic II/_Work/Data/Scripts/Content/Pakets/LeGo/Scripts/HookEngine.d na samym dole wklej to:

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);
    };
   



    //Call this is INIT_GLOBAL after LeGo_Init.
    func void Install_Character_Menu_Hook() {
        //at oCMenu_Status::SetLearnPoints
        const int done = 0;
        if(!done) {
            HookEngineF(4707920, 6, Update_Character_Menu);
            done = true;
        };
    };
// [/INTERNAL]

// Fill in this function according to your needs:
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 gold1;
    gold1 = reputation[REP_PAL];
    var string se1;
    se1 = ConcatStrings(IntToString(gold1), "%"); // se1 = ConcatStrings(IntToString(gold1), " Coins")
Update_Menu_Item("MENU_ITEM_TALENT_22_TITLE", "Rep. u Ogoriestyjczyków:");
    Update_Menu_Item("MENU_ITEM_TALENT_22_SKILL", se1);

var int gold2;
    gold2 = reputation[REP_KDW]; //Npc_HasItems(hero, ItMi_Gold)
    var string se2;
    se2 = ConcatStrings(IntToString(gold2), "%"); //
Update_Menu_Item("MENU_ITEM_TALENT_23_TITLE", "Rep. u Archeologów:");
    Update_Menu_Item("MENU_ITEM_TALENT_23_SKILL", se2);

var int gold3;
    gold3 = reputation[REP_DJG];
    var string se3;
    se3 = ConcatStrings(IntToString(gold3), "%"); // se3 = ConcatStrings(IntToString(gold3), " Coins")
Update_Menu_Item("MENU_ITEM_TALENT_24_TITLE", "Rep. u Alegonyjczyków:");
    Update_Menu_Item("MENU_ITEM_TALENT_24_SKILL", se3);

var int gold4;
    gold3 = reputation[REP_PIR];
    var string se4;
    se4 = ConcatStrings(IntToString(gold4), "%"); // se3 = ConcatStrings(IntToString(gold3), " Coins")
Update_Menu_Item("MENU_ITEM_TALENT_25_TITLE", "Rep. u Piratów:");
    Update_Menu_Item("MENU_ITEM_TALENT_25_SKILL", se4);
};

A później w Startup.d wywołaj:

Install_Character_Menu_Hook();

Oczywiście będziesz musiał to trochę przerobić, bo ja dodawałem reputację jako umiejętność, ale jak masz wiedzę to sobie easy poradzisz :lol: Powodzenia.
 

Czudak

Czudak

Użytkownicy
posty144
Propsy61
ProfesjaSkrypter
  • Użytkownicy
Zakodowane w silniku, Ikarus&LeGo starczy.

Zajebistycznie.

Dzięki wielkie, siadam i sprawdzam aplikowanie w modzie, no i czytam tutoriale do Ikarusa und LeGo.
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry