Błąd Unknown Identifier NAME 2267 2

O temacie

Autor Bogdan Zwei

Zaczęty 7.02.2014 roku

Wyświetleń 2267

Odpowiedzi 2

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
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.

Kawałek Gothic.src:
Spoiler
STORY\Log_Entries\Log_Constants_*.d
STORY\XP_Constants.d
STORY\Story_Globals.d
STORY\NPC_Globals.d
STORY\svm.d
STORY\Text.d

AI\HUMAN\B_Human\B_PrintScreenW.d
AI\HUMAN\B_Human\B_Spawn.d
STORY\Respawn.d

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);
   };
};
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
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);
};

takie krótkie coś na 3 błędy ... Nie poprawiaj na pałę jak się nie znasz ...

Błąd 1) func int oznacza ze funkcja zwróci wartość liczbową zeby to zrobiła powinieneś dać return. Gothic przyjmie ze return równa się 0 ale gdybyś programował w czymś innym już by ci wywaliło kolejne błędy do kompletu. W twoim skrypcie nie widzę return więc func int jest nie potrzebne daj na void

Błąd 2) Mówisz ze "Chodzi mi tylko o te głupie "Unknown Identifier" z klas C_NPC i C_ITEM, które wymieniłem wyżej"

a ja cie zazkocze tu nie chodzi o klase C_ITEM bo jej nie używasz tu chodzi o to ze INT nie ma pola name nie widzisz ze w parametrze przekazujesz var int Itm a nie var C_ITEM Itm ???? Właściwie zeby to działało przyda ci się w wersji int do CreateInvItems i potem musisz to rzutować na C_ITEM.

Błąd 3)wypisujesz po przecinku to co ma się wyświetli zakładam ze funkcja przyjmuje tylko 2 parametry więc musisz wszystkie teksty ze sobą połączyć nie możesz wypisywać ich po przecinku.


Analizowałem tylko ta jedną funkcje i dalej nie bede ogarnij się i jak czegoś nie wiesz to pytaj bo jak masz robić taki syf a potem krzyczeć ratunku to ja już ci więcej nie pomagam. I wrzucaj takei rzeczy małymi częściami i testuj jedną funkcje potem dopiero dodaj drugą itd.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
W sumie, dawno się nie bawiłem w Gothic'u (bo jakoś rok nic w nim nie robiłem) więc pozapominało mi się parę rzeczy. Jakbym się bawił częściej, to bym nie robił takich głupich błędów. Jestem słaby w skryptowaniu, bo przeważnie skryptuję około 3 miesiące na rok, więc nie powinieneś się dziwić. Nie mam zbyt dużo czasu na zabawę w Gothic'u, chociaż bardzo to lubię, więc często będę miał takie głupie błędy. A co do tego tam printu, to jest on zapisany w innym skrypcie. Umiem dużo zrobić, lecz często robię, z nadzieją, że mam to dobrze i nie zwracam uwagi na błędy, co się kończy głupimi tematami.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.


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