Witam. (Gothic mi dalej nie działa, nie mogę odpalić nowej gry, ale tylko reparsować mogę)
Ostatnio załączyłem Gothic 2 NK przez GothicStarter_MOD dostałem dziwne błędy w moich skryptach, a mianowicie "Unknown Identifier NAME".
Otóż pomyślałem, że źle coś wpisałem, przejrzałem skrypty, przenosiłem plik w Gothic.src we wszystkie miejsca (nawet przed StartUp.d), ale dalej występował błąd. Postanowiłem zatem pozbyć się wszystkich "name" w tych skryptach, po czym był błąd "Unknown Identifier MAINFLAG". Zamieszczam skrypty, które sam zrobiłem (i niestety dużo osób się nimi pożywi...), bo naprawdę nie wiem, co jest nie tak. Zmieniałem także wszystkie "FUNC VOID" ... na "FUNC INT" z nadzieją, że to coś da - bez skutku.
Wiem, że to będzie coś daremnego, coś spierdzielonego z mojej strony, lecz nie wiem dokładnie co.
Błędów typu "Expected" ani nic takiego nie ma. Nie interesujcie się regułkami, że coś jest źle napisane, bo nie na tym polega problem. Chodzi mi tylko o te głupie "Unknown Identifier" z klas C_NPC i C_ITEM, które wymieniłem wyżej. Pierwszy raz spotykam się z czymś takim, że po przeniesieniu skryptów byle gdzie, dalej występuje ten sam problem.
Podkreślę, że w klasach nic nie robiłem, nic nie zmieniałem ani nic nie dopisywałem.
Spoiler
//Spawn()
const int SpawnRange = 500;
const int HerdSpawn_01 = 95;
const int HerdSpawn_02 = 84;
const int BonusSpawn = 35;
const int BlackChances = 50;
const int MaxPercent = 100;
const int HerdBonusExp = 10;
const string TheHerdAppeard = "Pojawiło się całe stado!";
const string HerdMember = " - członek stada";
const string Darkness = "Ciemność...";
const string IsOn = "NPC jest na WP (w zasięgu <500)";
const string IsNotOn = "NPC nie jest na WP (w zasięgu <500)";
var int SpawnRate;
//CreateInvItems ()
const string DoesIt = "Kategoria: Broń i Zbroje.";
const string ItDoes = "Kategoria: Pozostałe.";
const int MaxWeaponAmount = 1;
const int NoWeapons = 0;
//CII, RII, B_Remove
const int SLOT_NUMBER_ZERO = 0;
const int CAT_MAX_MINUS_PLUS = 1;
const string ArmorLasts = "Zbroja zostaje!";
const string NextCategory = "Zmiana kategorii";
func int Npc_IsOnWP (var C_NPC NPC, var string WP)
{
if (Npc_GetDistToWP (NPC, WP) < SpawnRange)
{
SndPrint (IsOn, Col_Green, hero, "LevelUp");
return true;
}
else
{
SndPrint (IsNotOn, Col_Red, hero, "OCEAN_WARN");
return false;
};
};
func int B_Wld_InsertNpc (var C_NPC NPC, var string WP)
{
SpawnRate = Hlp_Random(MaxPercent);
if ((NPC.guild > GIL_SEPERATOR_HUM && NPC.guild < GIL_SEPERATOR_ORC) && NPC.guild != GIL_DRAGON)
{
if !(Npc_IsOnWP (NPC, WP))//(Npc_GetDistToWP (NPC, WP) > SpawnRange)
{
Wld_InsertNpc (NPC, WP);
if ((NPC.level < hero.level)
|| (NPC.guild == GIL_SCAVENGER) || (NPC.guild == GIL_WOLF) || (NPC.guild == GIL_BLOODFLY)
|| (NPC.guild == GIL_GIANT_RAT) || (NPC.guild == GIL_MOLERAT))
/*|| (Hlp_GetInstanceID(NPC) == Hlp_GetInstanceID(Scavenger)) || (Hlp_GetInstanceID(NPC) == Hlp_GetInstanceID(Giant_Rat))
|| (Hlp_GetInstanceID(NPC) == Hlp_GetInstanceID(Wolf)) || (Hlp_GetInstanceID(NPC) == Hlp_GetInstanceID(Keiler))
|| (Hlp_GetInstanceID(NPC) == Hlp_GetInstanceID(Bloodfly)) || (Hlp_GetInstanceID(NPC) == Hlp_GetInstanceID(Molerat))
|| (Hlp_StrCmp(NPC.name, "Krwiopijca") || Hlp_StrCmp(NPC.name, "Olbrzymi szczur") || Hlp_StrCmp(NPC.name, "Kretoszczur")
|| Hlp_StrCmp(NPC.name, "Ścierwojad") || Hlp_StrCmp(NPC.name, "Wilk") || Hlp_StrCmp(NPC.name, "Dzik")))*/
{
if (SpawnRate < BonusSpawn)
{
Wld_InsertNpc (NPC, WP);
Wld_InsertNpc (NPC, WP);
}
else if (SpawnRate > HerdSpawn_02 && SpawnRate < HerdSpawn_01)
{
Wld_InsertNpc (NPC, WP);
Wld_InsertNpc (NPC, WP);
Wld_InsertNpc (NPC, WP);
Wld_InsertNpc (NPC, WP);
Wld_InsertNpc (NPC, WP);
Wld_InsertNpc (NPC, WP);
if (Hlp_GetInstanceID(NPC) == Hlp_GetInstanceID(Wolf)
&& (Hlp_StrCmp(NPC.name, /*Black*/ Wolf.name) && SpawnRate > BlackChances))// && (hero.guild == GIL_NOV || hero.guild == GIL_KDF)
{
Wld_InsertNpc (BlackWolf, WP);
PrintCol (Darkness, Col_White);
};
NPC.level = NPC.level + HerdBonusExp;
//NPC.name = NPC.name + HerdMember; //Trzeba wymyśleć, jak dodać dwa stringi...
PrintCol (TheHerdAppeard, Col_Red);
};
Wld_InsertNpc (NPC, WP);
Wld_InsertNpc (NPC, WP);
};
xPrintCol ("Pojawił(a) się ", NPC.name, " poziomu", IntToString(NPC.level), " na ", WP, "!", COL_White);
};
}
else
{
if !(Npc_IsOnWP (NPC, WP))//(Npc_GetDistToWP (NPC, WP) > SpawnRange)
{
Wld_InsertNpc (NPC, WP);
};
};
};
func int CII (var C_NPC NPC, var int Itm, var int Amount)
{
CreateInvItems (NPC, Itm, Amount);
xPrintCol (NPC.name, " otrzymał(a) ", Itm.name, " ", "w ilości ", IntToString(Amount), "!", COL_Green);
};
func int RII (var C_NPC NPC, var int Itm, var int Amount)
{
Npc_RemoveInvItems (NPC, Itm, Amount);
xPrintCol (NPC.name, " utracił(a) ", Itm.name, " ", "w ilości ", IntToString(Amount), "!", COL_Red);
};
func void B_Remove (var C_NPC Remove, var C_NPC Get, var int Itm, var int Amount, var int Category)
{
if (Itm.mainflag != ITEM_KAT_ARMOR)
{
Itm = Npc_GetInvItemBySlot (Remove, Category, 0);
RII (Remove, Hlp_GetInstanceID (Itm), Amount);
CII (Get, Hlp_GetInstanceID (Itm), Amount);
};
};
func int B_CreateInvItems (var C_NPC NPC, var int Itm, var int Amount)
{
if (Itm.mainflag == ITEM_KAT_NF || Itm.mainflag == ITEM_KAT_FF || Itm.mainflag == ITEM_KAT_ARMOR)
{
//PrintCol (DoesIt, Col_White);
SndPrint (DoesIt, Col_White, NPC, "Geldbeutel");
if !(Npc_HasItems (NPC, Itm) >= MaxWeaponAmount) // (Npc_HasItems (NPC, Itm) == NoWeapons) ........*brain dies*........ -.-
{
CreateInvItems (NPC, Itm, Amount);
xPrintCol ("Przedmiot ", Itm.name, " dodano do ekwipunku handlarza ", NPC.name, " w ilości ", IntToString(Amount), "!", COL_Green);
};
}
else
{
//PrintCol (ItDoes, Col_White);
SndPrint (ItDoes, Col_White, NPC, "Geldbeutel");
CreateInvItems (NPC, Itm, Amount);
xPrintCol ("Przedmiot ", Itm.name, " dodano do ekwipunku handlarza ", NPC.name, " w ilości ", IntToString(Amount), "!", COL_Green);
};
};