Tablica 3196 10

O temacie

Autor mateo658

Zaczęty 1.01.2012 roku

Wyświetleń 3196

Odpowiedzi 10

mateo658

mateo658

Użytkownicy
posty10
  • Użytkownicy
Mam taki mały problem. Przepraszam za to jeśli źle coś nazwę. Czy w adresie tablicy (chodzi mi o [] po jej nazwie) można używać zmiennych?

Przypuśćmy że mam coś takiego:
items_tablica[2] = ItFo_Cheese;

lub:
const int i = 3;
items_tablica = ItFo_Cheese;

Wtedy wszystko jest ok, nie wywala żadnych błędów. Ale gdy "i" nie jest stałą, tak jak tu:
var int i = 3;
items_tablica = ItFo_Cheese;

Wtedy wywala błąd "Expected integer constant". Chciałbym osiągnąć coś takiego że do "i" w każdym obiegu pętli zostanie dodane 1, by tym samym przejrzeć cała tablicę. A przecież stałych nie można zmieniać. Proszę o pomoc.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Tablica
#1 2012-01-01, 13:51(Ostatnia zmiana: 2012-01-01, 13:57)
Właśnie nie można, i to jest największa wada tablic w Daedalusie. Przez to są prawie bezużyteczne, bo nie można korzystać z rekurencji przy sprawdzaniu kolejnych pozycji (chodzi właśnie o tą czynność którą próbujesz wykonać i która jest najlepszym rozwiązaniem mnóstwa problemów).


Chociaż z drugiej strony mógłbyś użyć stałej i ją zmieniać (bo w Daedalusie stałe są tak naprawdę zmiennymi - kolejny popis progerów z pb), ale nie jestem pewien czy to przepuści:
const int index;i w pętli
items_tablica[index] = ItFo_Cheese;
index += 1;
Nigdy nie sprawdzałem czy to by zadziałało, jeśli tak, to będzie mały przełom xD

Aha, musisz pamiętać też o tym że w Daedalusie nie ma pętli, a wywoływanie funkcji przez nią samą potrafi crashować silnik przy wielu powtórzeniach (zwłaszcza g1).

eto

eto

Użytkownicy
-Banany pod pokładem? -SĄĄĄĄĄĄ
posty1741
Propsy1793
ProfesjaLvl designer
  • Użytkownicy
  • -Banany pod pokładem? -SĄĄĄĄĄĄ
Cytuj
w Daedalusie stałe są tak naprawdę zmiennymi
co kvrwa? jeszcze sie okaze ze spacer to nie edytor a przegladarka internetowa :lol2:
 
Niespełniony Level Designer z ambicjami, zmęczeniem i brakiem czasu...

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Tablica
#3 2012-01-01, 13:59(Ostatnia zmiana: 2012-01-01, 13:59)
Serio, różnią się tylko nazwą i tym że przy stałych wartość musisz zdefiniować od razu, a przy zmiennych nie możesz i musisz robić to oddzielnie.
const int eto = 0;
eto *= 2;
var int eto; eto = 0;

eto

eto

Użytkownicy
-Banany pod pokładem? -SĄĄĄĄĄĄ
posty1741
Propsy1793
ProfesjaLvl designer
  • Użytkownicy
  • -Banany pod pokładem? -SĄĄĄĄĄĄ
a co to "*="
 
Niespełniony Level Designer z ambicjami, zmęczeniem i brakiem czasu...

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Tablica
#5 2012-01-01, 14:01(Ostatnia zmiana: 2012-01-01, 14:04)
To "pomnóż przez" (chciałem pokazać że wartość stałych da się normalnie zmieniać ;d )

eto *= 2;to to samo co
eto = eto * 2;Niestety, pomimo tego pozostajesz zerem :lol:

Tutaj masz listę operatorów w Daedalusie jeśli jesteś tym zainteresowany: http://themodders.org/index.php?/topic/13231-daedalus-operatory/

Leinnan

Leinnan

Administrator
torsonic polarity syndrome
posty2651
Propsy3600
ProfesjaProgramista
  • Administrator
  • torsonic polarity syndrome
Może napisz coś na temat tych i innych spierdolonych rzeczy aby inni nie musieli sami do tego dochodzić że np stałe są zmiennymi
 
Mit der Dummheit kämpfen die Götter selbst vergebens

steam | slavic castles |  last.fm | moddb.com | Stary, najlepszy lider Sclavinii

eto

eto

Użytkownicy
-Banany pod pokładem? -SĄĄĄĄĄĄ
posty1741
Propsy1793
ProfesjaLvl designer
  • Użytkownicy
  • -Banany pod pokładem? -SĄĄĄĄĄĄ

eto

Tablica
#7 2012-01-01, 14:04(Ostatnia zmiana: 2012-01-01, 14:04)
ale spamer ze mniee
Cytuj
Niestety, pomimo tego pozostajesz zerem
:lol:

Cytuj
listę operatorów w Daedalusie jeśli jesteś tym zainteresowany:
hahaha
 
Niespełniony Level Designer z ambicjami, zmęczeniem i brakiem czasu...

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Tablica
#8 2012-01-01, 14:18(Ostatnia zmiana: 2012-01-01, 14:23)
Chociaż z drugiej strony mógłbyś użyć stałej i ją zmieniać (bo w Daedalusie stałe są tak naprawdę zmiennymi - kolejny popis progerów z pb), ale nie jestem pewien czy to przepuści:
const int index;i w pętli
items_tablica[index] = ItFo_Cheese;
index += 1;
Nigdy nie sprawdzałem czy to by zadziałało, jeśli tak, to będzie mały przełom xD

Aha, musisz pamiętać też o tym że w Daedalusie nie ma pętli, a wywoływanie funkcji przez nią samą potrafi crashować silnik przy wielu powtórzeniach (zwłaszcza g1).
Jeśli robić by na samym dedalusie to taki sposób powinien działać
const int index = 0;//stała musi mieć przypisaną wartość na wstępie inaczej nie przepuści i będzie błądfunc void petla(){
items_tablica[index] = ItFo_Cheese;
index += 1;
};
func void wykonanie(){
petla();
petla();
petla();
petla();
petla();
}

P.S. zaraz sprawdzę czy działa ;d
Jak dobrze pamiętam kiedyś ktoś pytał o tablice i wszystko działało lecz zmuszony był do prasowanie skryptów przez gothic Soucer

Demonical Monk

Demonical Monk

Użytkownicy
posty145
Propsy152
  • Użytkownicy

Demonical Monk

Tablica
#9 2012-01-01, 15:41(Ostatnia zmiana: 2012-01-01, 15:43)
Zaraz... consty przechodzą przy używaniu tablicy? To raczej podstawia za tą stałą liczbę w momencie samej kompilacji (wtedy takie rozwiązanie nie urządza), chociaż jeśli faktycznie zmiana consta w runtime będzie oznaczała zmianę indeksu tablicy to będzie to WTF roku...

Cytuj
wywoływanie funkcji przez nią samą potrafi crashować silnik przy wielu powtórzeniach (zwłaszcza g1).
Za mały stos parsera na takie zabawy.
 

mateo658

mateo658

Użytkownicy
posty10
  • Użytkownicy
Rzeczywiście stałą da się zmienić. Ale niestety moja funkcja nie działa tak jak powinna, a powinna zabrać mi wszystkie itemy tego typu (sery).


items_tablica[2] = ItFo_Cheese;
   
   
   c_i_nr = 2;
   
   item_ilosc =     Npc_HasItems (hero, items_tablica[2]);
   f_ekwipunek_zabierz(items_tablica[c_i_nr],item_ilosc);

func int f_ekwipunek_zabierz (VAR int przedmiot_z, VAR int item_ilosc_z)
{
   
   Npc_RemoveInvItems (hero, przedmiot_z, item_ilosc_z);
};

Nie wiem czy dobrze myślę, ale z postu Pana wyżej wywnioskowałem że w tym przypadku pod "c_i_nr" podstawiana jest wartość początkowa? (w moim przypadku 0)
 


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