Files
Rex-EMoolator-docs/docs/pl/reference/MULTIARRAY.md
Patryk Gensch df6cf2f3d3
Some checks failed
docs / deploy (push) Has been cancelled
docs / build (push) Has been cancelled
Added part of docs
2026-05-19 20:51:59 +02:00

108 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MULTIARRAY
Tablica wielowymiarowa, indeksowana od `0`. Domyślnie tworzona jako tablica dwuwymiarowa o wymiarach `16 × 16`; liczba wymiarów może być zmieniona w skrypcie polem `DIMENSIONS`. Każdy wymiar rozszerza się automatycznie (podwajając rozmiar) przy próbie zapisu do pozycji wykraczającej poza bieżący zakres.
## Pola
### DIMENSIONS
```
INTEGER DIMENSIONS
```
Liczba wymiarów tablicy. Pole odczytywane podczas inicjalizacji zmiennej; domyślnie `2`. Każdy wymiar jest tworzony z początkowym rozmiarem `16`.
## Metody
### GET
```
mixed GET(INTEGER index1, [INTEGER index2, ..., INTEGER indexN])
```
Zwraca wartość z komórki o podanych współrzędnych. Liczba argumentów musi być równa liczbie wymiarów zadeklarowanej polem `DIMENSIONS`. Dla komórki, do której nie zapisano wartości, lub gdy współrzędne są poza zakresem, zwracany jest `NULL`.
**Parametry**
- `index1, …, indexN` — współrzędne komórki (numerowane od `0`), po jednej na każdy wymiar.
**Zwraca**: wartość komórki lub `NULL`.
**Przykłady**
```
ARRMAPA^GET(IKRETMOVEONMAPAX, IKRETPOSMAPAY);
ARRMAPA^GET([IPLAYERPOSX-1], IPLAYERPOSY);
ARRMAPA^GET(_I_, I1);
```
### SET
```
void SET(INTEGER index1, [INTEGER index2, ..., INTEGER indexN], mixed value)
```
Zapisuje wartość w komórce o podanych współrzędnych. Liczba argumentów musi być równa liczbie wymiarów + 1; ostatni argument to zapisywana wartość. Jeżeli którakolwiek współrzędna wykracza poza bieżący zakres wymiaru, tablica jest automatycznie powiększana (rozmiar wymiaru jest podwajany aż do objęcia współrzędnej).
**Parametry**
- `index1, …, indexN` — współrzędne komórki.
- `value` — zapisywana wartość.
**Przykłady**
```
ARRMAPA^SET(ITMPX, ITMPY, 0);
ARRMAPA^SET(IX, IY, SPOLE);
ARRMAPA^SET(IPLAYERGOONX, IPLAYERGOONY, "PLAYER");
ARRMAPA^SET([IPLAYERPOSX+ILASTDIRX], [IPLAYERPOSY+ILASTDIRY], IPLAYER);
```
### GETSIZE
```
INTEGER GETSIZE(INTEGER dimension)
```
Zwraca rozmiar podanego wymiaru tablicy.
**Parametry**
- `dimension` — indeks wymiaru (numerowany od `0`).
**Zwraca**: rozmiar wymiaru lub `0` dla nieprawidłowego indeksu.
### LOAD
```
void LOAD(STRING path)
```
Zastępuje zawartość tablicy danymi wczytanymi z pliku binarnego. Format obejmuje wymiary tablicy oraz wartości komórek.
**Parametry**
- `path` — ścieżka pliku w VFS gry.
### SAVE
```
void SAVE(STRING path)
```
Zapisuje zawartość tablicy do pliku binarnego.
**Parametry**
- `path` — ścieżka docelowego pliku w VFS gry.
## Sygnały
### ONINIT
Wywoływany w momencie inicjalizacji zmiennej; w tym momencie odczytywana jest wartość pola `DIMENSIONS` i alokowane są wymiary tablicy.
### ONSIGNAL
Wywoływany po otrzymaniu sygnału (zobacz [Zdarzenia i sygnały](../engine/events.md#onsignal)).