Tablice jednowymiarowe 6577 13

O temacie

Autor Hacker

Zaczęty 26.03.2011 roku

Wyświetleń 6577

Odpowiedzi 13

Hacker

Hacker

Użytkownicy
posty19
  • Użytkownicy

Hacker

Tablice jednowymiarowe
2011-03-26, 13:17(Ostatnia zmiana: 2011-03-26, 13:24)
W skrypcie '\_Work\data\Scripts\Content\Story\Text.d' jest domyślnie tablica TXT_GUILDS zawierająca nazwy wszystkich dostępnych gildii (ludzkich i zwierzęcych). Jako, że bawię się w 'ulepszanie' CharacterHelper'a, postanowiłem w dialogu, w którym wybiera się gildię dać odwołania bezpośrednio do tej tablicy (by nie zmieniać nazwy gildii kilka razy). Jednak kompilator ma wielki problem z linijkami typu:
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?

//EDIT:
Przy:
TEXT = TXT_GUILDS[0];Problem też występuje.

//EDIT2:
Dla testów zadeklarowałem nową tablicę
var string TEXT[1];
TEXT[0] = "brak";
TEXT[1] = "cos";
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE);
I dalej pisze, że w
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE); brakuje przecinka...
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Ja raczej nie dostrzegam tu żadnych błędów. Może gdzie indziej tkwi błąd? Jeśli nie, to tablice w Gothicu są dość problematyczne... Chyba największą ich wadą jest to, że indeksy nie mogą być zmiennymi, tylko MUSZĄ być stałymi, przez co stają się niepraktyczne.

Hacker

Hacker

Użytkownicy
posty19
  • Użytkownicy

Hacker

Tablice jednowymiarowe
#2 2011-03-27, 09:13(Ostatnia zmiana: 2011-03-27, 09:16)
Błędów wcześniej na 100% nie ma, bo po wywaleniu linijek korzystających z tablic wszystko kompiluje się normalnie. Z tego co widzę to te tablice w ogóle nie działają. Tablica TXT_GUILDS jest stała. GIL_NONE itp. też są stałe. Indeks 0 też jest w sumie stały...
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.

//EDIT: W sumie to jest tablica dwuwymiarowa (bo string jest tablicą znaków), ale próba pobrania tylko jednego znaku TXT_GUILDS[0][0]; Też kończy się błędem.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
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.
Indeksy tablic muszą być po prostu konkretnymi liczbami.

Hacker

Hacker

Użytkownicy
posty19
  • Użytkownicy
...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 ;/
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Tablice jednowymiarowe
#5 2011-03-29, 17:38(Ostatnia zmiana: 2011-03-29, 17:38)
//EDIT2:
Dla testów zadeklarowałem nową tablicę
var string TEXT[1];
TEXT[0] = "brak";
TEXT[1] = "cos";
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE);
I dalej pisze, że w
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE); brakuje przecinka...
to akurat jest źle :D  ponieważ elementy w tablicy numeruje się od n-1 tak mi się zdaje przynajmniej :D  czyli powinno być tak
var string TEXT[2];
TEXT[0] = "brak";
TEXT[1] = "cos";
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE);
albo tak
var string TEXT[1];
TEXT[0] = "brak";
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE);
zobacz dla przykładu czy będzie ok

Hacker

Hacker

Użytkownicy
posty19
  • Użytkownicy
to akurat jest źle :D  ponieważ elementy w tablicy numeruje się od n-1 tak mi się zdaje przynajmniej :D  czyli powinno być tak
var string TEXT[2];
TEXT[0] = "brak";
TEXT[1] = "cos";
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE);
albo tak
var string TEXT[1];
TEXT[0] = "brak";
Info_AddChoice(CH_Guild, TEXT[0], CH_NONE);
zobacz dla przykładu czy będzie ok

Z C++ to wiem jak się robi. Jednak jak zaczęło się sypać, to najpierw przeglądnąłem na szybko to: http://themodders.org/index.php?/topic/5456-tablice-jednowymiarowe
Po za tym, jeżeli moje by było źle to by #msg142378inaczej#msg142378 to nie działało. Możliwości:
1. Kompilator wysypał by po prostu błąd
2. Skompilowało by się, ale przy próbie zapisu/odczytu by Windows wyrzucił błąd i zamknął program.
3. Raz by poszło a raz nie.

No ale spróbowałem twoją metodę i dalej nie działa. Poza tym wpisując TXT_GUILDS[0] korzystam z dobrej tablicy i efekt jest ten sam. Już nie mam pojęcia o co mu chodzi.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Parser skryptów Gothica nie został napisany pod tym kątem, żeby wykorzystywać w argumencie funkcji tablicę :D

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Parser skryptów Gothica nie został napisany pod tym kątem, żeby wykorzystywać w argumencie funkcji tablicę :D
:idea:  to może by sprasować to Gothic Soucerem

Hacker

Hacker

Użytkownicy
posty19
  • Użytkownicy
Parser skryptów Gothica nie został napisany pod tym kątem, żeby wykorzystywać w argumencie funkcji tablicę :D
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 Soucerem
No nareszcie. Dzięki koleś! Teraz jest problem mniejszej wagi...
Gdy napiszę:
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.

Najlepsze, że wywala tak tylko kiedy GIL_coś jest większe od 0. W przypadku:Info_AddChoice(CH_Guild, TXT_GUILDS[GIL_NONE], CH_NONE);Normalnie się kompiluje.
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
a jak dużą zdeklarowałeś tablice TXT_GUILDS ? czy to jest ta z Gothic`a ?

bo
out of bounds array 'GIL_PAL'
znaczy ze
GIL_PAL jest poza granicami tablicy

Hacker

Hacker

Użytkownicy
posty19
  • Użytkownicy

Hacker

Tablice jednowymiarowe
#11 2011-04-01, 18:41(Ostatnia zmiana: 2011-04-01, 18:44)
Tyle to wiem ^.^
To jest ta z gothica i ona domyślnie ma 66.
GIL_PAL jest równy 1.

I wywala error, że indeks 1 jest poza granicami tablicy. Jednak jak wpisze samo 1. To działa ^.^
Uważam, że prawidłowa odpowiedź już padła:
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.
Indeksy tablic muszą być po prostu konkretnymi liczbami.
A kolejnej wersji GothicSourcera (większej niż 3.14) się nie doczekam ^.^
 

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Tablice jednowymiarowe
#12 2011-04-01, 18:48(Ostatnia zmiana: 2011-04-01, 19:47)
ale właściwie to w czym problem ? i tak musisz dla każdej gildia zrobić osobnego addchoica wiec możesz od razu wpisać liczby ?

jak by co to
Scripts\Content\_Intern\constants.d
tam masz wartości tych zmiennych czy stałych (sam już nie wiem jak mam mówić :D )

EDIT :
Widze ze z ciebie będzie ciekawy użytkownik ;d  Hacker
he he rejestracja w dzień kobiet ;d

Hacker

Hacker

Użytkownicy
posty19
  • Użytkownicy
Wiem już tak zrobiłem... Tylko hm.... ładniej by to wyglądało ^.^ Dobra temat to zamknięcia. Dzięki wszystkim za pomoc!
 


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