Oto co zrobiłem do tej pory:
W pliku : Scripts/Content/Intern/Constants.d Dodałem:
const int ATR_KNOWSLEDGE = 9;
Następnie w pliku: Scripts/Content/AI/AI_Intern/AI_Constants.d dodałem:
const int REAL_KNOWSLEDGE = 89;
Kolejny plik: Scripts/Content/Story/B_Story/B_BlessAttribute dodałem:
// ------ KWL steigern ------
if (attrib == ATR_KNOWSLEDGE)
{
oth.attribute[ATR_KNOWSLEDGE] = oth.attribute[ATR_KNOWSLEDGE] + points; //bzw. Npc_ChangeAttribute (oth, attrib, points);
oth.aivar[REAL_KNOWSLEDGE] = oth.aivar[REAL_KNOWSLEDGE] + points;
concatText = ConcatStrings(PRINT_BlessSTR, IntToString(points));
PrintScreen (concatText, -1, -1, FONT_SCREEN, 2);
};
Kolejny plik: Scripts/Content/Story/B_Story/B_GetLearnCostAttribute Dodałem:
// ------ Kosten für Knowsledge ------
if (attribut == ATR_DEXTERITY)
{
if (oth.aivar[REAL_KNOWSLEDGE] >= 600) { kosten = (1); }
else if (oth.aivar[REAL_KNOWSLEDGE] >= 250) { kosten = (1); }
else if (oth.aivar[REAL_KNOWSLEDGE] >= 150) { kosten = (1); }
else if (oth.aivar[REAL_KNOWSLEDGE] >= 75) { kosten = (1); }
else { kosten = (1); };
};
Kolejny plik: Scripts/Content/Story/B_Story/B_RaiseAttribute Dodałem na samej górze:
func void B_RaiseRealAttributeLearnCounter (var C_NPC oth, var int attrib, var int points)
{
if (attrib == ATR_STRENGTH) { oth.aivar[REAL_STRENGTH] = oth.aivar[REAL_STRENGTH] + points; }
else if (attrib == ATR_DEXTERITY) { oth.aivar[REAL_DEXTERITY] = oth.aivar[REAL_DEXTERITY] + points; }
else if (attrib == ATR_KNOWSLEDGE) { oth.aivar[REAL_KNOWSLEDGE] = oth.aivar[REAL_KNOWSLEDGE] + points; }
else if (attrib == ATR_MANA_MAX) { oth.aivar[REAL_MANA_MAX] = oth.aivar[REAL_MANA_MAX] + points; };
};
I nieco niżej, tak jak było dla każdej umiejętności osobno:
// ------ STR steigern ------
if (attrib == ATR_KNOWSLEDGE)
{
oth.attribute[ATR_KNOWSLEDGE] = oth.attribute[ATR_KNOWSLEDGE] + points; //bzw. Npc_ChangeAttribute (oth, attrib, points);
concatText = ConcatStrings(PRINT_LearnKWL, IntToString(points));
PrintScreen (concatText, -1, -1, FONT_SCREEN, 2);
};
Kolejny plik: Scripts/Content/Story/B_Story/B_TeachAttributePoints Dodałem:
// ------ falscher Parameter ------
if (attrib!=ATR_STRENGTH) && (attrib!=ATR_DEXTERITY) && (attrib!=ATR_MANA_MAX) && (attrib!=ATR_KNOWSLEDGE)// Dodałem tutaj swój atrybut Knowsledge.
Następny plik:
Scripts/Content/Story/G_Functions/G_CanNotUse.d tu dodałem:
else if (nAttribute == ATR_KNOWSLEDGE) { strAttributeMissing = PRINT_KNOWSLEDGE_MISSING ; nAttributeValue = self.attribute[ATR_KNOWSLEDGE]; }
Dodałem też nowy atrybut postacią ze zmiennymi w pliku Scripts/Content/Story/Npc_Scripts/B_SetAttributesToChapter
oraz naszemu Npc w pliku: NPC_Default w tej samej lokalizacji co poprzedni plik.
No i ostatni plik: Scripts/Content/Story/Text.d Następujące linijki:
const string NAME_KWL_needed = "Wymagana wiedza:";
const string NAME_Bonus_KWL = "Premia do wiedzy:";
const string PRINT_LearnKWL = "Wiedza + ";
const string PRINT_LearnKWL1 = "Wiedza + 1";
const string PRINT_LearnKWL5 = "Wiedza + 5";
const string PRINT_BlessKWL = "Innos zwiększył twoją wiedzę o + ";
const string PRINT_KNOWSLEDGE_MISSING = "pkt. wiedzy za mało";
Póki co zostawiam w spokoju dodanie atrybutu do okna statystyk. Nie znalazłem więcej plików, które były związane z atrybutami, więc wydaje mi się, że wszystkie pliki potrzebne do stworzenia atrybutu to te które wymieniłem, jeśli coś robię źle, proszę mnie poprawić. Podczas reparsowania wyskakuje mi następujące błędy:
U:PAR:
/_WORK/DATA/SCRIPTS/CONTENT/STORY/B_STORY/B_RAISEATTRIBYTE.D Buuuuuuuhhhh, Pfiffe, Unmut : Array- Index out of Range: C_NPC.AIVAR[401]
następny:
U:PAR:
/_WORK/DATA/SCRIPTS/CONTENT/STORY/B_STORY/B_RAISEATTRIBYTE.D Buuuuuuuhhhh, Pfiffe, Unmut : Array- Index out of Range: C_NPC.ATTRIBUTE [9]
następny:
U:PAR:
/_WORK/DATA/SCRIPTS/CONTENT/STORY/B_STORY/B_BLESSATTRIBUTE.D Buuuuuuuhhhh, Pfiffe, Unmut : Array- Index out of Range: C_NPC.AIVAR[401]
następny:
U:PAR:
/_WORK/DATA/SCRIPTS/CONTENT/STORY/NPC_SCRIPTS/B_SETATTRIBUTESTOCHAPTER.D Buuuuuuuhhhh, Pfiffe, Unmut : Array- Index out of Range: C_NPC.ATTRIBUTE [9]
następny:
U:PAR:
/_WORK/DATA/SCRIPTS/CONTENT/STORY/NPC_SCRIPTS/B_SETATTRIBUTESTOCHAPTER.D Buuuuuuuhhhh, Pfiffe, Unmut : Array- Index out of Range: C_NPC.AIVAR[401] //<---U npc_Deafult to samo
Następnie to samo w pliku G_CANNOTUSE.d -->C_NPC.ATTRIBUTE [9] oraz C_NPC.AIVAR[401] i to samo w Getlearncostattribute.
Co to za błąd? Jak go naprawić, wydaje mi się, że albo liczby są zbyt duże, albo trzeba jeszcze to dodać w jakimś innym pliku.