Noo witam

Na wstępie chciałbym dodać że gdyby nie pomoc Splash'a oraz SiemaczyS'a ten tutek wgl by nie powstał.
Podziękowania też dla Rafała Budzis'a, będziemy używać jego przeźroczystej czcionki z BudzisSkryptMod'a
Do napisania tego samouczka skłonił mnie ten temat:
http://themodders.org/index.php?topic=26035.0Darkmodders'a głowiłem się, doszedłem do wniosku że się nie da i trzeba napisać nowe menu. Jak się później okazało niepotrzebnie bo w tamtym temacie jest podany sposób na edycję standardowego Menu_Status.d
Ale to nic, może ktoś uzna że mój sposób jest mu wygodniejszy, ja się nauczyłem przynajmniej czegoś nowego..
Zaczynamy, do tego sposobu jak i tego który podał SiemaczyS w temacie powyzej wymagany jest ikarus oraz lego. więc jeśli ich nie macie odsyłam was do :
http://themodders.org/index.php?topic=16580Jest? ok:
idziemy do: _work\data\Scripts\System\Menu\Menu_Status.d
i zamieniamy jego zawartość na:
instance MENU_STATUS (C_MENU_DEF)
{
items[0] = "MENU_ITEM_STATUS_HEADING";
// ---------------------------------------------
items[2] = "MENU_ITEM_LEVEL";
items[4] = "MENU_ITEM_EXP";
items[6] = "MENU_ITEM_LEVEL_NEXT";
};
instance MENU_ITEM_STATUS_HEADING(C_MENU_ITEM_DEF)
{
};
instance MENU_ITEM_LEVEL(C_MENU_ITEM_DEF)
{
posx = 60; posy = 60;
fontName = STAT_FONT_BRAK;
flags = flags & ~IT_SELECTABLE;
};
INSTANCE MENU_ITEM_EXP(C_MENU_ITEM_DEF)
{
posx = 60; posy = 60;
fontName = STAT_FONT_BRAK;
flags = flags & ~IT_SELECTABLE;
};
INSTANCE MENU_ITEM_LEVEL_NEXT(C_MENU_ITEM_DEF)
{
posx = 60; posy = 60;
fontName = STAT_FONT_BRAK;
flags = flags & ~IT_SELECTABLE;
};
To trzeba zostawić, bo są to rzeczy jakoś chyba zakodowane w silniku gry

teraz idziemy do: _work\data\Scripts\System\Menu\Menu_Defines.d
Pod linijką:
const string MENU_FONT_BRIGHT = "font_old_10_white_hi.tga";
wklejamy:
const string STAT_FONT_BRAK = "100.tga";
To poprostu przeźroczysta czcionka aby nam nie wyświetlało ilości lvl/exp/nextexp z orginalnego menu statystyk.
Okej to by bylo tyle z folderem system, idziemy teraz do:
_work\data\scripts\content\story\text.d
szukamy tabeli:
CONST STRING TXT_TALENTS
I zmieniamy jej zawartość na:
CONST STRING TXT_TALENTS [23] =
{
"", //NPC_TALENT_UNKNOWN = 0;
"", //NPC_TALENT_1H = 1;
"", //NPC_TALENT_2H = 2;
"", //NPC_TALENT_BOW = 3;
"", //NPC_TALENT_CROSSBOW = 4;
"", //NPC_TALENT_PICKLOCK = 5; //wird jetzt per DEX geregelt UND es gibt nur noch Level 0 und 1 (nicht mehr 2)
"", //altes Pickpocket aus Gothic 1 - NICHT benutzen! Bleibt als Relikt im Code = 6;
"", //NPC_TALENT_MAGE = 7; // Magiekreis
"", //NPC_TALENT_SNEAK = 8;
"", //raus //NPC_TALENT_REGENERATE = 9;
"", //raus //NPC_TALENT_FIREMASTER = 10;
"", //NPC_TALENT_ACROBAT = 11;
"", //NPC_TALENT_PICKPOCKET = 12; //NEUES Pickpocket
"", //NPC_TALENT_SMITH = 13;
"", //NPC_TALENT_RUNES = 14;
"", //NPC_TALENT_ALCHEMY = 15;
"", //NPC_TALENT_TAKEANIMALTROPHY = 16;
"", //NPC_TALENT_FOREIGNLANGUAGE = 17;
"", //NPC_TALENT_WISPDETECTOR = 18;
"", //NPC_TALENT_C = 19;
"", //NPC_TALENT_D = 20;
"", //NPC_TALENT_E = 21;
"" //NPC_TALENT_F = 22;
};
Szukamy też:
CONST STRING TXT_TALENTS_SKILLS
I zmieniamy jej zawartość na:
CONST STRING TXT_TALENTS_SKILLS [23] =
{
"", //NPC_TALENT_UNKNOWN = 0;
"", //NPC_TALENT_1H = 1;
"", //NPC_TALENT_2H = 2;
"", //NPC_TALENT_BOW = 3;
"", //NPC_TALENT_CROSSBOW = 4;
"", //NPC_TALENT_PICKLOCK = 5; //wird jetzt per DEX geregelt UND es gibt nur noch Level 0 und 1 (nicht mehr 2)
"", //altes Pickpocket aus Gothic 1 - NICHT benutzen! Bleibt als Relikt im Code = 6;
"", //NPC_TALENT_MAGE = 7; // Magiekreis
"", //NPC_TALENT_SNEAK = 8;
"", //raus //NPC_TALENT_REGENERATE = 9;
"", //raus //NPC_TALENT_FIREMASTER = 10;
"", //NPC_TALENT_ACROBAT = 11;
"", //NPC_TALENT_PICKPOCKET = 12; //NEUES Pickpocket
"", //NPC_TALENT_SMITH = 13;
"", //NPC_TALENT_RUNES = 14;
"", //NPC_TALENT_ALCHEMY = 15;
"", //NPC_TALENT_TAKEANIMALTROPHY = 16;
"", //NPC_TALENT_FOREIGNLANGUAGE = 17; //ADDON
"", //NPC_TALENT_WISPDETECTOR = 18;
"", //NPC_TALENT_C = 19;
"", //NPC_TALENT_D = 20;
"", //NPC_TALENT_E = 21;
"" //NPC_TALENT_F = 22;
};
Mamy? Noo to już jesteśmy blisko końca

Teraz tak Tworzymy sobię plik o nazwie: Zmienne_MenuStatus.d
w folderze _work/data/content/story
i definiujemy go w pliku gothic.src pod Story_Globals.d
Zawartość Zmienne_MenuStatus:
// --------------------------------------------//
// ---------- ZMIENNE LICZBOWE ----------------//
// --------------------------------------------//
// ---- Zmienna MenuStatus ---- //
var int StatusScreenOpen;
// ---- Reputacja ---- //
var int RepKDW;
// ---- VIEW ---- //
var int View;
// ---- Zmienne pos x atr.mana ----//
var int ManaX;//x, x2, x3 zmienne pozycji many
var int ManaX2;// czyli są to zmienne liczbowe które wyświetlimy w menu :)
var int ManaX3;
// -- Zmienne pos x atr.hp --//
var int HpX;//jak wyżej z maną. Tylko tutaj z hp
var int HpX2;
var int HpX3;
// ------------------------------------------ //
// ---------- ZMIENNE ----------------------- //
// ------------------------------------------ //
// ---- LVL ----//
var int lvl;//Zmienna liczbowa poziomu.
// ---- MANA-KRĘGI ---- //
var int manakreise;
// ---- EXP ---- //
var int exp;
// ---- N.EXP ---- //
var int nexp;
// ---- LP ---- //
var int lp;
// --------------------------------------- //
// ------------- ATRYBUTY ---------------- //
// --------------------------------------- //
// ---- Siła ---- //
var int str;
// ---- Zręka ---- //
var int dex;
// ---- Mana ---- //
var int mana;// zmienna liczbowa many
var int mmana;// zmienna liczbowa max many
// ---- PŻ ---- //
var int hp; // zmienna hp
var int mhp;// max hp
// ------------------------------------- //
// ---------- OCHRONA ------------------ //
// ------------------------------------- //
// ---- Przed bronią ---- //
var int edgw;
// ---- Przed strzałami ---- //
var int edgp;
// ---- Przed ogniem ---- //
var int edgf;
// ---- Przed magią ---- //
var int edgm;
// ---------------------------------- //
// --------- UMIEJĘTNOŚCI ----------- //
// ---------------------------------- //
// ---- 1H ---- //
var int posX1h; //zmienna pozycji było to już wyjaśniane
var int posX1h2;
var int posX1h3;
var int posX1h4; // "%"
var int JedenH; // Procent szansy trafienia 1h
// ---- 2H ---- //
var int posX2h; //zmienna pozycji było to już wyjaśniane
var int posX2h2;
var int posX2h3;
var int posX2h4; // "%"
var int DwaH; // Procent szansy trafienia 2h
// ---- Łuk ---- //
var int posXbow; //zmienna pozycji było to już wyjaśniane
var int posXbow2;
var int posXbow3;
var int posXbow4; // "%"
var int BoW; // Procent szansy trafienia Łuk
// ---- Kusza ---- //
var int posXCboW; //zmienna pozycji było to już wyjaśniane
var int posXCboW2;
var int posXCboW3;
var int posXCboW4; // "%"
var int CboW; // Procent szansy trafienia Kusza
// --------------------------------------------//
// ---------- ZMIENNE TEKSTOWE ----------------//
// --------------------------------------------//
var string guild;//zmienna tekstowa gildii
// ------------------------------------------ //
// ---------- ZMIENNE ----------------------- //
// ------------------------------------------ //
// ---- LVL ----//
var string lvlt;//Zmienna tekstowa lvl.
// ---- MANA-KRĘGI ---- //
var string manakreiseT;
// ---- EXP ---- //
var string expt;
// ---- N.EXP ---- //
var string nexpt;
// ---- LP ---- //
var string lpt;
// --------------------------------------- //
// ------------- ATRYBUTY ---------------- //
// --------------------------------------- //
// ---- Siła ---- //
var string strt;
// ---- Zręka ---- //
var string dext;
// ---- Mana ---- //
var string manat;// zmienna tekstowa many
var string mmanat;// zmienna tekstowa max many
// ---- PŻ ---- //
var string hpt;
var string mhpt;
// ------------------------------------- //
// ---------- OCHRONA ------------------ //
// ------------------------------------- //
// ---- Przed bronią ---- //
var string edgwt;
// ---- Przed strzałami ---- //
var string edgpt;
// ---- Przed ogniem ---- //
var string edgft;
// ---- Przed magią ---- //
var string edgmt;
// ---------------------------------- //
// --------- UMIEJĘTNOŚCI ----------- //
// ---------------------------------- //
// ---- 1H ---- //
var string skill1h; //zielony|wojownik|Mistrz
var string JedenHtext;
// ---- 2H ---- //
var string skill2h; //zielony|wojownik|Mistrz
var string DwaHtext;
// ---- Łuk ---- //
var string skillbow; //zielony|wojownik|Mistrz
var string BowText;
// ---- Kusza ---- //
var string skillCboW; //zielony|wojownik|Mistrz
var string CboWText;
// ---- Skradanie się ---- //
var string SkillSneak; // -|Uczony
// ---- Włamywanie się ---- //
var string SkillPicklock; // -|Uczony
// ---- Kradzież ---- //
var string SkillPickpocket;
// ---- Tworzenie run ---- //
var string SkillRunes;
// ---- Alchemia ---- //
var string SkillAlchemy;
// ---- Kowalstwo ---- //
var string SkillSmith;
// ---- Patroszenie ---- //
var string SkillTakeAnimalTrophy;
// ---- REPUTACJA ---- //
var string RepKdwT;
Mamy? ok.
ja zwykłem w _work/data/scripts/content tworzyć folder o nazwie _misc i taki też tworzymy
Potem w Gothic.src dopisujemy prawie że na końcu tuż przed Startup.d taki wpis:
_Misc\*.d
Mamy? ok
To wchodzimy do folderu _misc i tworzymy plik o nazwie np: Menu.d
a w tym pliku wklejamy:
func void OpenStatusScreenHook () // Otwórz menu status
{
if(hero.attribute[ATR_MANA]<=9)// Oznacza że jeśli hero ma mniej lub równo: "9" many
{
ManaX = 1800; // pozycja/zmienna wyświetlania many to 1800
ManaX2 = ManaX + 100; // pozycja/zmienna ukośnika pomiędzy to 1800 z wyżej plus 100
ManaX3 = ManaX + 150; // pozycja/zmienna max many to 1800 plus 150
}else if(hero.attribute[ATR_MANA]<=99) // jeśli ma mniej bądź równo 99 many
{
ManaX = 1800; // x = 1400 trzeba dodać żeby wiedział czym jest mana x gdy np wczytasz grę czy coś :D
ManaX2 = ManaX + 150; // plus 150
ManaX3 = ManaX + 200; // plus 200 tu już jak wyżej tylko większe liczby
}else if(hero.attribute[ATR_MANA]<=999) // mniej bądź równo 999
{
ManaX = 1800; //wiadomo
ManaX2 = ManaX + 200;// plus 200
ManaX3 = ManaX + 250;// plus 250
}else if(hero.attribute[ATR_MANA]<=9999)// wiadomo
{
ManaX = 1800;//wiadomo
ManaX2 = ManaX + 300;//wiadomo
ManaX3 = ManaX + 350;//wiadomo
// UWAGA!! czemu zwiększamy pozycję "X" ? a no bo liczba 100 zajmuję więcej miejsca niż 10 i nie mogą na siebie nachodzić
};
if(hero.attribute[ATR_HITPOINTS]<=9)
{
HpX = 1800;// Tutaj to samo co było z maną
HpX2 = HpX + 100;
HpX3 = HpX + 150;
}else if(hero.attribute[ATR_HITPOINTS]<=99)
{
HpX = 1800;
HpX2 = HpX + 150;
HpX3 = HpX + 200;
}else if(hero.attribute[ATR_HITPOINTS]<=999)
{
HpX = 1800;
HpX2 = HpX + 200;
HpX3 = HpX + 250;
}else if(hero.attribute[ATR_HITPOINTS]<=9999)
{
HpX = 1800;
HpX2 = HpX + 250;
HpX3 = HpX + 300;
}; // aż dotąd.
if (hero.guild == 0)//jeśli hero ma gildie zerową
{
guild = "Brak";// to wyświetl jej nazwę (BRAK)
} else if (hero.guild == 1)//jesli ma gildię nr 1
{
guild = "Palladyn"; // wyświetli (PALLADYN)
}else if (hero.guild == 2) // i tak dalej.
{
guild = "Strażnik";
}else if (hero.guild == 3)
{
guild = "Obywatel";
}else if (hero.guild == 4)
{
guild = "Mag Ognia";
}else if (hero.guild == 5)
{
guild = "Nowicjusz";
}else if (hero.guild == 6)
{
guild = "Łowca Smoków";
}else if (hero.guild == 7)
{
guild = "Najemnik";
}else if (hero.guild == 8)
{
guild = "Farmer";
}else if (hero.guild == 9)
{
guild = "Bandyta";
}else if (hero.guild == 10)
{
guild = "Skazaniec";
}else if (hero.guild == 11)
{
guild = "Poszukiwacz";
}else if (hero.guild == 12)
{
guild = "Mieszkaniec";
}else if (hero.guild == 13)
{
guild = "Pirat";
}else if (hero.guild == 14)
{
guild = "Mag Wody";
}else if (hero.guild == 17)
{
guild = "Chrząszcz";
}else if (hero.guild == 18)
{
guild = "Owca";
}else if (hero.guild == 19)
{
guild = "Goblin";
}else if (hero.guild == 20)
{
guild = "Szkielet-goblin";
}else if (hero.guild == 21)
{
guild = "Prz. Szkielet Goblin";
}else if (hero.guild == 22)
{
guild = "Ścierwojad";
}else if (hero.guild == 23)
{
guild = "Olbrzymi szczur";
}else if (hero.guild == 24)
{
guild = "Polna bestia";
}else if (hero.guild == 25)
{
guild = "Krwiopijca";
}else if (hero.guild == 26)
{
guild = "Jaszczór";
}else if (hero.guild == 27)
{
guild = "Wilk";
}else if (hero.guild == 28)
{
guild = "Prz. Wilk";
}else if (hero.guild == 29)
{
guild = "Pełzacz";
}else if (hero.guild == 30)
{
guild = "Topielec";
}else if (hero.guild == 31)
{
guild = "Szkielet";
}else if (hero.guild == 32)
{
guild = "Prz. Szkielet";
}else if (hero.guild == 33)
{
guild = "Szkielet-Mag";
}else if (hero.guild == 34)
{
guild = "Zombie";
}else if (hero.guild == 35)
{
guild = "Zębacz";
}else if (hero.guild == 36)
{
guild = "Cieniostwór";
}else if (hero.guild == 37)
{
guild = "Szkielet-potwór";
}else if (hero.guild == 38)
{
guild = "Harpia";
}else if (hero.guild == 39)
{
guild = "Kamienny golem";
}else if (hero.guild == 40)
{
guild = "Ognisty golem";
}else if (hero.guild == 41)
{
guild = "Lodowy golem";
}else if (hero.guild == 42)
{
guild = "Prz. golem";
}else if (hero.guild == 43)
{
guild = "Demon";
}else if (hero.guild == 44)
{
guild = "Prz. demon";
}else if (hero.guild == 45)
{
guild = "Troll";
}else if (hero.guild == 46)
{
guild = "Wąż błotny";
}else if (hero.guild == 47)
{
guild = "Smok";
}else if (hero.guild == 48)
{
guild = "Kretoszczur";
}else if (hero.guild == 49)
{
guild = "Aligator";
}else if (hero.guild == 50)
{
guild = "Błotny golem";
}else if (hero.guild == 51)
{
guild = "Strażnik";
}else if (hero.guild == 52)
{
guild = "Kamienna puma";
}else if (hero.guild == 54)
{
guild = "Prz. Strażnik";
}else if (hero.guild == 55)
{
guild = "Prz.Zombie";
}else if (hero.guild == 59)
{
guild = "Ork";
}else if (hero.guild == 60)
{
guild = "Ork";
}else if (hero.guild == 61)
{
guild = "Ork-ożywieniec";
}else if (hero.guild == 62)
{
guild = "Smokowiec";
};//nooo kurwa wszystkie :)
// ------------------------------------------ //
// ---------- ZMIENNE ----------------------- //
// ------------------------------------------ //
// ---- LVL ----------------------------------//
lvl = hero.level;//zmienna liczbowa lvl(var int lvl) to aktualny level hero.
lvlt = IntToString(lvl);// Zamień zmienną tekstową (var string lvlt) na zmienną liczbową lvl (var int lvl).
// ---- MANA-KRĘGI ----------------------- //
manakreise = Npc_GetTalentSkill(hero, NPC_TALENT_MAGE);// zmienna liczbowa manakreise to aktualny krąg magii hero.
manakreiseT = IntToString(manakreise);// zamień zmienną tekstową na liczbę kręgu magii.
// ---- EXP ----------------------------- //
exp = hero.exp; // zmienna liczbowa (var int exp) to doświadczenie hero.
expt = IntToString(exp); // zamień zmienną tekstową na liczbową aby ją wyświetlić
// ---- N.EXP ---- //
nexp = hero.exp_next; // zmienna liczbowa (var int nexp).
nexpt = IntToString(nexp); // zamiana zmiennej tekstowej (var string nexpt).
// ---- LP ---- //
lp = hero.lp; // Noo i to się tak ciągnie
lpt = IntToString(lp);
// --------------------------------------- //
// ------------- ATRYBUTY ---------------- //
// --------------------------------------- //
// ---- Siła ----------------------------- //
str = hero.attribute[ATR_STRENGTH]; // było tłumaczone z tymi zmiennymi i zamianą.
strt = IntToString(str);
// ---- Zręka ---- //
dex = hero.attribute[ATR_DEXTERITY]; // też
dext = IntToString(dex);
// ---- Mana ---- // -- TUTAJ!!!!.... Mana i pż jest nieco bardziej skomplikowane:
mana = hero.attribute[ATR_MANA];// mana to aktualna ilość many hero
mmana = hero.attribute[ATR_MANA_MAX];// mmana to maxymalna ilość many hero
manat = IntToString(mana);// manat wyżej jako zmienna tekstowa. Teraz zmieniamy ją na zmienną liczbową
mmanat = IntToString(mmana);// jak wyżej chodzi o to aby wyświetlało ( CYFRĘ )
// ---- PŻ ---- //
hp = hero.attribute[ATR_HITPOINTS];
mhp = hero.attribute[ATR_HITPOINTS_MAX];
hpt = IntToString(hp);
mhpt = IntToString(mhp); // To samo co z maną i (max maną).
// ------------------------------------- //
// ---------- OCHRONA ------------------ //
// ------------------------------------- //
// ---- Przed bronią ------------------- //
edgw = hero.protection[PROT_EDGE];// tutaj standard było wyjaśnione
edgwt = IntToString(edgw);
// ---- Przed strzałami ---- //
edgp = hero.protection[PROT_POINT];
edgpt = IntToString(edgp);
// ---- Przed ogniem ---- //
edgf = hero.protection[PROT_FIRE];
edgft = IntToString(edgf);
// ---- Przed magią ---- //
edgm = hero.protection[PROT_MAGIC];
edgmt = IntToString(edgm);
// ---------------------------------- //
// --------- UMIEJĘTNOŚCI ----------- //
// ---------------------------------- //
// ---- 1H -------------------------- //
if (Hero.HitChance[NPC_TALENT_1H] >=0) // jeśli szansa trafienia 1h hero jest wieksz bądź równa 0
{
skill1h = "Łamaga";// Wyświetli (Łamaga).
posX1h = 4200;// ustalenia pozycji dla tekstu
posX1h2 = posX1h+1400;
posX1h3 = posX1h2+600;
posX1h4 = posX1h3+100;
};
if (Hero.HitChance[NPC_TALENT_1H] >=30)// jeśli większa bądź równa 30
{
skill1h = "Wojownik"; // to wojownik
posX1h = 4200; // ustalenia pozycji tekstu
posX1h2 = posX1h+1400;
posX1h3 = posX1h2+700;
posX1h4 = posX1h3+150;
};
if (Hero.HitChance[NPC_TALENT_1H] >=60) // jesli większa bądź równa 60
{
skill1h = "Mistrz";// mistrz
posX1h = 4200;// jak wyżej
posX1h2 = posX1h+1400;
posX1h3 = posX1h2+500;
posX1h4 = posX1h3+150;
};
if (Hero.HitChance[NPC_TALENT_1H] ==100)// jesli równa 100 ponieważ to już 3 cyfry pozycje są inne
{
posX1h = 4200;
posX1h2 = posX1h+1400;
posX1h3 = posX1h2+500;
posX1h4 = posX1h3+200;
};
JedenH = Hero.HitChance[NPC_TALENT_1H]; // zmienna liczbowa (var int JedenH) to procent szansy trafienia 1h
JedenHtext = IntToString(JedenH);// Zamiana banana na ananasy.
// ---- 2H ---- //
if (Hero.HitChance[NPC_TALENT_2H] >=0) // jeśli szansa trafienia 2h hero jest wieksz bądź równa 0
{
skill2h = "Łamaga";// to zielony
posX2h = 4200;// ustalenia pozycji dla tekstu
posX2h2 = posX2h+1400;
posX2h3 = posX2h2+600;
posX2h4 = posX2h3+100;
};
if (Hero.HitChance[NPC_TALENT_2H] >=30)// jeśli większa bądź równa 30
{
skill2h = "Wojownik"; // to wojownik
posX2h = 4200; // ustalenia pozycji tekstu
posX2h2 = posX2h+1400;
posX2h3 = posX2h2+700;
posX2h4 = posX2h3+150;
};
if (Hero.HitChance[NPC_TALENT_2H] >=60) // jesli większa bądź równa 60
{
skill2h = "Mistrz";// mistrz
posX2h = 4200;// jak wyżej
posX2h2 = posX2h+1400;
posX2h3 = posX2h2+500;
posX2h4 = posX2h3+150;
};
if (Hero.HitChance[NPC_TALENT_2H] ==100)// jesli równa 100 ponieważ to już 3 cyfry pozycje są inne
{
posX2h = 4200;
posX2h2 = posX2h+1400;
posX2h3 = posX2h2+500;
posX2h4 = posX2h3+200;
};
DwaH = Hero.HitChance[NPC_TALENT_2H]; // jak w 1h
DwaHtext = IntToString(DwaH);
// ---- Łuk ---- //
if (Hero.HitChance[NPC_TALENT_BOW] >=0) // jeśli szansa trafienia Łukiem hero jest wieksz bądź równa 0
{
skillbow = "Ślepy";
posXbow = 4200;
posXbow2 = posXbow+1400;
posXbow3 = posXbow2+600;
posXbow4 = posXbow3+100;
};
if (Hero.HitChance[NPC_TALENT_BOW] >=30)// jeśli większa bądź równa 30
{
skillbow = "Strzelec";
posXbow = 4200;
posXbow2 = posXbow+1400;
posXbow3 = posXbow2+700;
posXbow4 = posXbow3+150;
};
if (Hero.HitChance[NPC_TALENT_BOW] >=60) // jesli większa bądź równa 60
{
skillbow = "Myśliwy";
posXbow = 4200;
posXbow2 = posXbow+1400;
posXbow3 = posXbow2+500;
posXbow4 = posXbow3+150;
};
if (Hero.HitChance[NPC_TALENT_BOW] ==100)// jesli równa 100 ponieważ to już 3 cyfry pozycje są inne
{
posXbow = 4200;
posXbow2 = posXbow+1400;
posXbow3 = posXbow2+500;
posXbow4 = posXbow3+200;
};
BoW = Hero.HitChance[NPC_TALENT_BOW];// jak w 1h i 2h
BowText = IntToString(BoW);
// ---- Kusza ---- //
if (Hero.HitChance[NPC_TALENT_CROSSBOW] >=0) // jeśli szansa trafienia Łukiem hero jest wieksz bądź równa 0
{
skillCboW = "Ślepy";
posXCboW = 4200;
posXCboW2 = posXCboW+1400;
posXCboW3 = posXCboW2+600;
posXCboW4 = posXCboW3+100;
};
if (Hero.HitChance[NPC_TALENT_CROSSBOW] >=30)// jeśli większa bądź równa 30
{
skillCboW = "Strzelec";
posXCboW = 4200;
posXCboW2 = posXCboW+1400;
posXCboW3 = posXCboW2+700;
posXCboW4 = posXCboW3+150;
};
if (Hero.HitChance[NPC_TALENT_CROSSBOW] >=60) // jesli większa bądź równa 60
{
skillCboW = "Myśliwy";
posXCboW = 4200;
posXCboW2 = posXCboW+1400;
posXCboW3 = posXCboW2+500;
posXCboW4 = posXCboW3+150;
};
if (Hero.HitChance[NPC_TALENT_CROSSBOW] ==100)// jesli równa 100 ponieważ to już 3 cyfry pozycje są inne
{
posXCboW = 4200;
posXCboW2 = posXCboW+1400;
posXCboW3 = posXCboW2+500;
posXCboW4 = posXCboW3+200;
};
CboW = Hero.HitChance[NPC_TALENT_CROSSBOW]; // jak w 1h i 2h i łuku.
CboWText = IntToString(CboW);
// ---- Skradanie się ---- //
if (Npc_GetTalentSkill (hero,NPC_TALENT_SNEAK) == TRUE)// Jeśli nauczył się skradania.
{
SkillSneak = "Uczony"; // wyświetli że uczony
} else { // a jak nie
SkillSneak = "-"; // to myślnik.
};
// ---- Włamywanie się ---- //
if (Npc_GetTalentSkill (hero,NPC_TALENT_PICKLOCK) == TRUE)
{
SkillPicklock = "Uczony";
} else {
SkillPicklock = "-"; // jak ze skradaniem.
};
// ---- Kradzież ---- //
if (Npc_GetTalentSkill (hero,NPC_TALENT_PICKPOCKET) == TRUE)
{
SkillPickpocket = "Uczony";
} else {
SkillPickpocket = "-"; // jak ze skradaniem.
};
// ---- Tworzenie run ---- //
if (Npc_GetTalentSkill (hero,NPC_TALENT_RUNES) == TRUE)
{
SkillRunes = "Uczony";
} else {
SkillRunes = "-"; // jak ze skradaniem.
};
// ---- Alchemia ---- //
if (Npc_GetTalentSkill (hero,NPC_TALENT_ALCHEMY) == TRUE)
{
SkillAlchemy = "Uczony";
} else {
SkillAlchemy = "-"; // jak ze skradaniem.
};
// ---- Kowalstwo ---- //
if (Npc_GetTalentSkill (hero,NPC_TALENT_SMITH) == TRUE)
{
SkillSmith = "Uczony";
} else {
SkillSmith = "-"; // jak ze skradaniem.
};
// ---- Patroszenie ---- //
if (Npc_GetTalentSkill (hero,NPC_TALENT_TAKEANIMALTROPHY) == TRUE)
{
SkillTakeAnimalTrophy = "Uczony";
} else {
SkillTakeAnimalTrophy = "-"; // jak ze skradaniem
};
// ---- REPUTACJA ---- //
RepKdwT = IntToString(RepKDW);
// RepKdwT (var string RepKdwT) zmienna tekstowa reputacji aby ją wyświetlić.
// RepKDW (var int RepKDW) zmienna liczbowa reputacji.
StatusScreenOpen = true; // menu status = true
View = View_Create(0, 0, PS_VMax, PS_VMax);//Stwórz View
View_Open(View);// Otwórz View
View_SetTexture(View, "Menu_Staty.tga");// Dodaj Teksturkę
// ---- Postać ---- //
View_AddText(View, 800, 1400, "POSTAĆ:", "FONT_OLD_10_WHITE.TGA" );
// ---- Gildia ---- //
View_AddText(View, 500, 1800, "Gildia:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 1800, guild, "FONT_OLD_10_WHITE.TGA" );
// ---- Poziom ----//
View_AddText(View, 500, 2000, "Poziom:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 2000, lvlt, "FONT_OLD_10_WHITE.TGA" );
// ---- Kręgi Magii ---- //
View_AddText(View, 500, 2200, "Magia:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 2200, "Krąg", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 2200, 2200, manakreiseT, "FONT_OLD_10_WHITE.TGA" );
// ---- Doświadczenie ---- //
View_AddText(View, 500, 2400, "Exp:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 2400, expt, "FONT_OLD_10_WHITE.TGA" );
// ---- Doświadczenie do następnego poziomu ---- //
View_AddText(View, 500, 2600, "N.Poziom:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 2600, nexpt, "FONT_OLD_10_WHITE.TGA" );
// ---- Punkty Nauki ---- //
View_AddText(View, 500, 2800, "Lp:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 2800, lpt, "FONT_OLD_10_WHITE.TGA" );
// ---- Atrybuty ---- //
View_AddText(View, 800, 3100, "ATRYBUTY:", "FONT_OLD_10_WHITE.TGA" );
// ---- Siła ---- //
View_AddText(View, 500, 3500, "Siła:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 3500, strt, "FONT_OLD_10_WHITE.TGA" );
// ---- Zręczność ---- //
View_AddText(View, 500, 3700, "Zręczność:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 3700, dext, "FONT_OLD_10_WHITE.TGA" );
// ---- Mana ---- //
View_AddText(View, 500, 3900, "Mana:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, ManaX, 3900, manat, "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, ManaX2, 3900, "/", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, ManaX3, 3900, mmanat, "FONT_OLD_10_WHITE.TGA" );
// ---- Hp ---- //
View_AddText(View, 500, 4100, "Pż:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, HpX, 4100, hpt, "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, HpX2, 4100, "/", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, HpX3, 4100, mhpt, "FONT_OLD_10_WHITE.TGA" );
// ---- OCHORONA ---- //
View_AddText(View, 800, 4400, "OCHRONA:", "FONT_OLD_10_WHITE.TGA" );
// ---- Broń ---- //
View_AddText(View, 500, 4800, "Przed Bronią:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 4800, edgwt, "FONT_OLD_10_WHITE.TGA" );
// ---- Pociski ----//
View_AddText(View, 500, 5000, "Przed Pociskami:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 5000, edgpt, "FONT_OLD_10_WHITE.TGA" );
// ---- Ogień ---- //
View_AddText(View, 500, 5200, "Przed Ogniem:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 5200, edgft, "FONT_OLD_10_WHITE.TGA" );
// ---- Magia ---- //
View_AddText(View, 500, 5400, "Przed Magią:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 1800, 5400, edgmt, "FONT_OLD_10_WHITE.TGA" );
// ---- UMIEJĘTNOŚCI ---- //
View_AddText(View, 4500, 1400, "UMIEJĘTNOŚCI:", "FONT_OLD_10_WHITE.TGA" );
// ---- Br. Jednoręczna ---- //
View_AddText(View, posX1h, 1800, "Broń jednoręczna:", "FONT_OLD_10_WHITE.TGA" );//broń 1h
View_AddText(View, posX1h2, 1800, skill1h, "FONT_OLD_10_WHITE.TGA" );// skill tekst
View_AddText(View, posX1h3, 1800, JedenHtext, "FONT_OLD_10_WHITE.TGA" );// skill procent
View_AddText(View, posX1h4, 1800, "%", "FONT_OLD_10_WHITE.TGA" );// "%" znaczek
// ---- Br. Dwóręczna ---- //
View_AddText(View, posX2h, 2000, "Broń dwuręczna:", "FONT_OLD_10_WHITE.TGA" );//broń 2h
View_AddText(View, posX2h2, 2000, skill2h, "FONT_OLD_10_WHITE.TGA" );// skill tekst
View_AddText(View, posX2h3, 2000, DwaHtext, "FONT_OLD_10_WHITE.TGA" );// skill procent
View_AddText(View, posX2h4, 2000, "%", "FONT_OLD_10_WHITE.TGA" );// "%" znaczek
// ---- Łuk ---- //
View_AddText(View, posXbow, 2200, "Cel. Łuk:", "FONT_OLD_10_WHITE.TGA" );//broń 2h
View_AddText(View, posXbow2, 2200, skillbow, "FONT_OLD_10_WHITE.TGA" );// skill tekst
View_AddText(View, posXbow3, 2200, BowText, "FONT_OLD_10_WHITE.TGA" );// skill procent
View_AddText(View, posXbow4, 2200, "%", "FONT_OLD_10_WHITE.TGA" );// "%" znaczek
// ---- Kusza ---- //
View_AddText(View, posXbow, 2400, "Cel. Kusza:", "FONT_OLD_10_WHITE.TGA" );//broń 2h
View_AddText(View, posXbow2, 2400, skillcbow, "FONT_OLD_10_WHITE.TGA" );// skill tekst
View_AddText(View, posXbow3, 2400, CboWText, "FONT_OLD_10_WHITE.TGA" );// skill procent
View_AddText(View, posXbow4, 2400, "%", "FONT_OLD_10_WHITE.TGA" );// "%" znaczek
// ---- Skradanie się ---- //
View_AddText(View, 4200, 2700, "Skradanie się:", "FONT_OLD_10_WHITE.TGA" );//Skradanie się
View_AddText(View, 5600, 2700, SkillSneak, "FONT_OLD_10_WHITE.TGA" );//uczony|-
// ---- Włamywanie się ---- //
View_AddText(View, 4200, 2900, "Włamywanie się:", "FONT_OLD_10_WHITE.TGA" );//Włamywanie się
View_AddText(View, 5600, 2900, SkillPicklock, "FONT_OLD_10_WHITE.TGA" );// Uczony|-
// ---- Kradzież ---- //
View_AddText(View, 4200, 3100, "Kradzież:", "FONT_OLD_10_WHITE.TGA" );//Kradzież
View_AddText(View, 5600, 3100, SkillPickpocket, "FONT_OLD_10_WHITE.TGA" );// Uczony|-
// ---- Tworzenie run ---- //
View_AddText(View, 4200, 3400, "Tworzenie run:", "FONT_OLD_10_WHITE.TGA" );//Kradzież
View_AddText(View, 5600, 3400, SkillRunes, "FONT_OLD_10_WHITE.TGA" );// Uczony|-
// ---- Alchemia ---- //
View_AddText(View, 4200, 3600, "Alchemia:", "FONT_OLD_10_WHITE.TGA" );//Kradzież
View_AddText(View, 5600, 3600, SkillAlchemy, "FONT_OLD_10_WHITE.TGA" );// Uczony|-
// ---- Kowalstwo ---- //
View_AddText(View, 4200, 3800, "Kowalstwo:", "FONT_OLD_10_WHITE.TGA" );//Kradzież
View_AddText(View, 5600, 3800, SkillSmith, "FONT_OLD_10_WHITE.TGA" );// Uczony|-
// ---- Patroszenie ---- //
View_AddText(View, 4200, 4100, "Patroszenie:", "FONT_OLD_10_WHITE.TGA" );//Kradzież
View_AddText(View, 5600, 4100, SkillTakeAnimalTrophy, "FONT_OLD_10_WHITE.TGA" );// Uczony|-
// ---- Reputacja ---- //
View_AddText(View, 4500, 4400, "REPUTACJA:", "FONT_OLD_10_WHITE.TGA" );
// ---- Reputacja u magów Wody ---- //
View_AddText(View, 4200, 4800, "Magowie wody:", "FONT_OLD_10_WHITE.TGA" );
View_AddText(View, 5600, 4800, RepKdwT, "FONT_OLD_10_WHITE.TGA" );
};
func void CloseScreenHook () //Zamknij menu status
{
if (StatusScreenOpen) // jeśli menu status == true
{
View_Delete(View);// Usuń view
StatusScreenOpen = false; // menu status = false
};
};
// Skrypt napisany przez Splash'a z forum Themodders.org:
func void StatusScreenHookInit () // funkcja hook'a
{
const int done = false;// stała hooka, dowiedziałem się że jest ona wymagana przy niektórych hook'ah
// inaczej mogą być problemy że hook się aktywuje, a gdy zapiszesz i wczytasz grę aktywuje się po raz drugi.
if (!done) // jeśli stała done nie jest sobą ^^
{
HookEngineF (4707920, 6, OpenStatusScreenHook); // spełnij warunki jesli menu status jest aktywne
HookEngineF (5102048, 7, CloseScreenHook); // spełnij warunki jesli menu status jest nieaktywne funkcje z warunkami są wyżej.
done = true; // don zamień na true
};
};
jak to zwykle w moich Samouczkach bywa, skrypty są wytłumaczone zgrubnie w komentarzach i daje wam przykładowy skrypt do modyfikacji wedle uznania.
Wejdźmy jeszcze do _work/data/content/story/startup.d i pod linijką:
LeGo_Init (LeGo_All);
wklejcie:
StatusScreenHookInit ();
Wiecie chyba jak się wkleja tekstury co? noo tego nie tłumaczę. Avallah pisał że jak jest darmowy to można wrzucić chomika i tak też zrobię, aby nie zginęły te pliki. posłużyłem się teksturą menu z g1 oto link:
http://chomikuj.pl/ToWoRiSh/Gothic/Gothic+2/Tekstury+MenuHasło to menustatus
Aha. Aby zwiększyć reputację gdzie przykładowo dałem magów wody trzeba zwiększyć zmienną RepKDW
Np w jakimś dialogu po wykonaniu misjii dodać RepKDW = RepKDW+1;
można też zrobić procentowo dodając np 5 a znaczek procentu robimy tak jak przy 1h macie to wyżej objaśnione

Aa screen jakby co:
http://zapodaj.net/41ae26a21f291.jpg.htmlAaa btw. Zapomniałem dodać ze to jest do G2 bo jak się nie mylę to w g1 niema chyba LeGo czy cóś. Nawet jeśli jest to skrypt wymagałby modyfikacji.