Mógłby mi ktoś powiedzieć, w których plikach były potrzebne zmiany, aby działała aktualizacja danej zdolności w menu statystyk? Bo pamiętam, że kiedyś Chicken lub Sawik zrobili dla mnie skrypt, jednak prawdę powiedziawszy nie pamiętam, co tam było zmieniane. Przy pomocy DecDat wyciągnąłem skrypty ze starszej wersji swojego moda, jednak jest tam taki chaos, że nie wiem, co za co odpowiada. To, co teoretycznie wyciągnąłem(i dodałem) wygląda następująco(skrypty i Lego zainstalowałem od zera):
Menu_Status:
items[58] = "MENU_ITEM_TALENT_9_TITLE";
items[59] = "MENU_ITEM_TALENT_9_SKILL";
instance MENU_ITEM_TALENT_9_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_9_SKILL(C_MENU_ITEM_DEF)
{
posx = STAT_B_X2;
posy = STAT_TAL_Y + (16 * STAT_DY);
fontname = STAT_FONT_DEFAULT;
flags = flags & ~IT_SELECTABLE;
};
Do pliku startup dodałem takie coś:
hookenginef(4707920, 6, update_character_menu);
func void update_menu_item(var string name, var string val) {
var int itptr;
const int SetText = 5114800;
itptr = mem_getmenuitembystring(name);
if(!itptr) {
return;
};
call_intparam(true);
call_intparam(0);
call_zstringptrparam(val);
call__thiscall(itptr, settext);
};
func void update_character_menu() {
var string s;
if(npc_gettalentskill(hero, npc_talent_regenerate) == 1) {
s = concatstrings("Początkujący - ", inttostring(hero.attribute[6]));
}
else {
s = concatstrings("Brak - ", inttostring(0));
};
s = concatstrings(s, " sekund");
update_menu_item("MENU_ITEM_TALENT_9_SKILL", s);
if(npc_gettalentskill(hero, npc_talent_firemaster) == 1) {
s = concatstrings("Początkujący", inttostring(hero.attribute[7]));
}
else {
s = concatstrings("Brak", inttostring(0));
};
s = concatstrings(s, "sekund");
update_menu_item("MENU_ITEM_TALENT_10_SKILL", s);
};
No i w pliku Text:
Pod CONST STRING TXT_TALENTS [NPC_TALENT_MAX] =
"Reg. życia", //raus //NPC_TALENT_REGENERATE = 9;
"Reg. many", //raus //NPC_TALENT_FIREMASTER = 10;
Pod CONST STRING TXT_TALENTS_SKILLS [NPC_TALENT_MAX] =
"-|Uczony", //raus //NPC_TALENT_REGENERATE = 9;
"-|Uczony", //raus //NPC_TALENT_FIREMASTER = 10;
Tak jak na wstępie zaznaczyłem - próbowałem to przekopiować z DecDat, jednak problem jest taki, że teoretycznie na starcie gry powinienem mieć napis "Brak", jeśli chodzi o regenerację życia, a mam po prostu "-". Po rozmowie z npc'em powinno mi zaaktualizować tekst przy regeneracji życia na zasadzie "Reg. życia | Początkujący | x sekund".
A u mnie pokazuje po rozmowie tylko "Uczony".
Skrypt dialogu(w razie czego):
// ************************************************************
// EXIT
// ************************************************************
INSTANCE DIA_Trump_EXIT (C_INFO)
{
npc = WAR_5000_Trump;
nr = 999;
condition = DIA_Trump_EXIT_Condition;
information = DIA_Trump_EXIT_Info;
permanent = TRUE;
description = DIALOG_ENDE;
};
FUNC INT DIA_Trump_EXIT_Condition()
{
return TRUE;
};
FUNC VOID DIA_Trump_EXIT_Info()
{
AI_StopProcessInfos (self);
};
// ************************************************************
// Bauernaufstand
// ************************************************************
INSTANCE DIA_Trump_Test (C_INFO)
{
npc = WAR_5000_Trump;
nr = 1;
condition = DIA_Trump_Test_Condition;
information = DIA_Trump_Test_Info;
permanent = FALSE;
description = "Test regeneracji.";
};
FUNC INT DIA_Trump_Test_Condition()
{
return TRUE;
};
FUNC VOID DIA_Trump_Test_Info()
{
AI_Output (other, self, "DIA_Trump_Test_15_00"); //Test regeneracji.
AI_Output (self, other, "DIA_Trump_Test_12_01"); //Niech tak będzie.
Npc_SetTalentSkill (hero, NPC_TALENT_REGENERATE, 1);
hero.attribute[ATR_REGENERATEHP] = 5;
hero.attribute[ATR_REGENERATEMANA] = 10;
};
PS. Z tym dialogem zresztą mam problem, że nie pokazuje mi się tekst w grze(istnieje description, ale po jego kliknięciu nie widać tych 2 zdań), a reparsowałem skrypty przy pomocy GothicStarter_mod, natomiast dialogi poprzez redefix(usunąłem pliku OU).