1
					Błędy podczas parsowania / Tablice jednowymiarowe
« dnia: 2011-04-01, 18:49 »
					Wiem już tak zrobiłem... Tylko hm.... ładniej by to wyglądało ^.^ Dobra temat to zamknięcia. Dzięki wszystkim za pomoc!
					
				Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.
GIL_NONE to wbrew pozorom nie jest "prawdziwa" stała. W Gothicu w ogóle takich nie ma, "const" oznacza po prostu zmienną o z góry zdefiniowanej wartości. Jednak nadal można ją w dowolnym momencie zmieniać - gdyby na takich stałych działało, to to co napisał Adanos nie miałoby sensu.A kolejnej wersji GothicSourcera (większej niż 3.14) się nie doczekam ^.^
Indeksy tablic muszą być po prostu konkretnymi liczbami.
instance DIA_CH_Dex(C_Info), siły instance DIA_CH_Strength(C_Info). Spacerem nie pomoże, bo zanim używałem GothicSourcer'a to miałem podobny, problem, ale myślałem, że to wynikało z mojej (nie) umiejętności tworzenia dialogów.//Akrobatyka
instance DIA_CH_ACR(C_INFO)
{
	npc = ch;
	nr = 4;
	condition = DIA_CH_ACR_Condition;
	information = DIA_CH_ACR_Info;
	permanent = TRUE;
	description = "Nauka akrobatyki";
};
func int DIA_CH_ACR_Condition()
{
	return true;
};
func void DIA_CH_ACR_Info()
{
	ExitGame();
};i dalej nie pokazuje się...AI_Output(other,self,"DIA_Xardas_AWAY_15_04");	//Pier*olisz...Linijka działa poprawnie. Czyli kompilacja przebiega w sukcesie.((hero.attribute[ATR_DEXTERITY] >= 90) && (Npc_GetTalentSkill(hero, NPC_TALENT_ACROBAT) == 0))oraz jak go nauczyćNpc_SetTalentSkill(hero, NPC_TALENT_ACROBAT, 1);Do Characterhelpera, dodałem opcję dialogową: //Akrobatyka
instance DIA_CH_ACR(C_INFO)
{
	npc = ch;
	nr = 4;
	condition = DIA_CH_ACR_Condition;
	information = DIA_CH_ACR_Info;
	permanent = TRUE;
	description = "Nauka akrobatyki";
};
func int DIA_CH_ACR_Condition()
{
	if ((AttributeStart == true)
	&& (hero.attribute[ATR_DEXTERITY] >= 90) 
	&& (Npc_GetTalentSkill(hero, NPC_TALENT_ACROBAT) == 0))
	{
		return true;
	};
	return false;
};
func void DIA_CH_ACR_Info()
{
	Info_ClearChoices(DIA_CH_ACR);
	Npc_SetTalentSkill(hero, NPC_TALENT_ACROBAT, 1);
	PrintScreen(PRINT_Addon_AcrobatBonus, -1, 55, FONT_Screen, 2);
};
No i nie działa ;/ Nie wiem co może być źle. Parser skryptów Gothica nie został napisany pod tym kątem, żeby wykorzystywać w argumencie funkcji tablicęTo też nie działa:
var string TEXT;
TEXT = TXT_GUILDS[GIL_NONE];
Info_AddChoice(CH_Guild, TEXT, CH_NONE);Czyli w ogóle nie został stworzony, by czytać z tablic ^.^:idea: to może by sprasować to Gothic SouceremNo nareszcie. Dzięki koleś! Teraz jest problem mniejszej wagi...
Info_AddChoice(CH_Guild, TXT_GUILDS[1], CH_PAL);To wszystko działa, ale w przypadku:Info_AddChoice(CH_Guild, TXT_GUILDS[GIL_PAL], CH_PAL);Wywala błąd: Error: Index = 1 out of bounds array #msg142430GIL_PAL#msg142430.Info_AddChoice(CH_Guild, TXT_GUILDS[GIL_NONE], CH_NONE);Normalnie się kompiluje.
					to akurat jest źleponieważ elementy w tablicy numeruje się od n-1 tak mi się zdaje przynajmniej
czyli powinno być tak
Kod: [Zaznacz]var string TEXT[2];albo tak
TEXT[0] = "brak";
TEXT[1] = "cos";
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE);Kod: [Zaznacz]var string TEXT[1];zobacz dla przykładu czy będzie ok
TEXT[0] = "brak";
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE);
...Indeksy tablic muszą być po prostu konkretnymi liczbami.No tak, ale w pierwszym poście napisałem (pierwszy i drugi edit), że z konkretnymi liczbami też nie działa. Sprawdziłem teraz drugi raz dla pewności i to samo ;/
var int GILed;
GILed = 0;
Info_AddChoice(CH_Guild, TXT_GUILDS[GILed], CH_NONE);Tutaj jest ten sam błąd, więc jeden grzyb czy zmienna czy stała.Info_AddChoice(CH_Guild, TXT_GUILDS[GIL_NONE], CH_NONE);Ciągle uważa, że zapomniałem ','. Więc najpierw sprawdziłem, o co mu biega, więc zamieniłem tą linijkę na:var string TEXT;
TEXT = TXT_GUILDS[GIL_NONE];
Info_AddChoice(CH_Guild, TEXT, CH_NONE);Odpaliłem i teraz? Ma problem z linijką:TEXT = TXT_GUILDS[GIL_NONE];Tym razem gada że zapomniałem średnika. Nie mam pojęcia o co mu chodzi. Dałem mu nawet dwa średniki i to samo. Dałem odstęp między ']', a ';' i dalej do samo. Zabrałem mu nawet ten średnik i dalej to samo. Więc jak mam odczytać zmienną z tej tablicy?TEXT = TXT_GUILDS[0];Problem też występuje.var string TEXT[1];
TEXT[0] = "brak";
TEXT[1] = "cos";
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE);
I dalej pisze, że wInfo_AddChoice(CH_Guild, TEXT[0], CH_NONE); brakuje przecinka...
					while (hero.exp >= hero.exp_next)
{
	hero.level = hero.level+1;
	hero.exp_next = hero.exp_next + ((hero.level+1)*500);
		
	hero.attribute[ATR_HITPOINTS_MAX] = hero.attribute[ATR_HITPOINTS_MAX] + HP_PER_LEVEL;
	hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS] + HP_PER_LEVEL;
		
	hero.LP = hero.LP + LP_PER_LEVEL;
	PrintScreen (PRINT_LevelUp, -1, YPOS_LevelUp, FONT_Screen, 2);
	Snd_Play ("LevelUp");
} do;
Na razie mam to zrobione rekurencyjnie, ale wiedza o pętli też by się przydała, poza tym lepiej to będzie wyglądać.