Files
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

11 KiB

ARRAY

Tablica indeksowana od 0, przechowująca wartości dowolnego typu. Pełna obsługa zapisu i operacji arytmetycznych dotyczy czterech typów prymitywnych: INTEGER, DOUBLE, STRING i BOOL. Mieszane typy w pojedynczej tablicy są dozwolone, ale niektóre metody mogą interpretować elementy niezgodnie z intuicją (patrz uwagi przy FIND, CONTAINS i GETSUMVALUE).

Pola

TOINI

BOOL TOINI

Określa, czy zawartość tablicy jest serializowana do pliku INI i przywracana po ponownym uruchomieniu.

Metody

ADD

void ADD(mixed value1, [mixed value2, ..., mixed valueN])

Dodaje przekazane wartości na koniec tablicy. Typy argumentów nie muszą być jednakowe.

Parametry

  • value1, …, valueN — wartości do dodania.

Przykłady

G_ARRSETTINGS^ADD(0, 600);
G_ARRDATAS^ADD("PODWIECZOREK1", "PODWIECZOREK2", "PODWIECZOREK3");
ARRFLAMESDIR^ADD("R", "R", "R", "L", "L");
ARR_JOINTS^ADD(FALSE, 6, "B", 10, "A", 4);

ADDAT

void ADDAT(INTEGER index, mixed value)

Dodaje argument do elementu na pozycji index. Operacja konwertuje element i argument do DOUBLE, dodaje, i zapisuje wynik jako DOUBLE — typ elementu na tej pozycji po wywołaniu zawsze jest DOUBLE. Wywołanie z index poza zakresem nie zmienia tablicy.

Parametry

  • index — pozycja elementu (numerowana od 0).
  • value — wartość do dodania.

Przykłady

ARRIDLETIME^ADDAT(0, 1);
ARRENEMYY^ADDAT(VARITMPINDEX, VARITMP1);
ARRSPEED^ADDAT(0, 2.0);

CHANGEAT

void CHANGEAT(INTEGER index, mixed value)

Zastępuje element na pozycji index przekazaną wartością. Typ nowego elementu jest zachowywany dokładnie taki, jaki został przekazany. Wywołanie z index poza zakresem nie zmienia tablicy.

Parametry

  • index — pozycja elementu (numerowana od 0).
  • value — nowa wartość.

Przykłady

ARRIDLETIME^CHANGEAT(0, 0);
G_ARRREXSPELLS^CHANGEAT(VARIREPEATSPELL, 1);
ARRAYPLAYERSSTATE^CHANGEAT([VARCLONE-1], "NULL");

CLAMPAT

void CLAMPAT(INTEGER index, mixed rangeMin, mixed rangeMax)

Sprowadza wartość na pozycji index do przedziału [rangeMin, rangeMax]. Typ elementu jest zachowywany — wartości INTEGER pozostają INTEGER, wartości DOUBLE pozostają DOUBLE. Dla elementów innych typów (oraz dla index poza zakresem) wywołanie nie zmienia tablicy.

Parametry

  • index — pozycja elementu (numerowana od 0).
  • rangeMin — dolna granica (włącznie).
  • rangeMax — górna granica (włącznie).

Przykłady

ARRSPEED^CLAMPAT(VARPLAYER, 0.0, 100.0);
ARRSPEED^CLAMPAT(0, 0.0, 17.0);

CONTAINS

BOOL CONTAINS(mixed needle)

Sprawdza, czy tablica zawiera element o podanej wartości. Porównanie wykonywane jest na poziomie tekstowej reprezentacji elementów — wartość needle jest rzutowana do STRING i porównywana z wynikiem toDisplayString każdego elementu. To różni się od FIND, które porównuje wartości zgodnie z regułami arytmetyki silnika.

Parametry

  • needle — szukana wartość.

Zwraca: BOOLTRUE, jeżeli element został znaleziony.

Przykłady

ART0^CONTAINS(ICIK);
ARRAYWARSZTATPRZEDMIOTY^CONTAINS(ARRAYTEMP^GET($1));

COPYTO

void COPYTO(STRING arrayVarName)

Dokleja zawartość bieżącej tablicy na koniec tablicy o nazwie podanej w argumencie. Tablica docelowa musi już istnieć i być typu ARRAY. Tablica docelowa nie jest czyszczona przed kopiowaniem.

Parametry

  • arrayVarName — nazwa docelowej zmiennej tablicowej.

Przykłady

ARAG^COPYTO("ARTMP");

FIND

INTEGER FIND(mixed needle)

Wyszukuje w tablicy pierwszy element równy podanej wartości. Porównanie wykonywane jest zgodnie z regułami arytmetyki silnika — typ elementu w tablicy wyznacza, do jakiego typu rzutowana jest wartość needle w danej iteracji. Skutkuje to nieintuicyjnymi wynikami w tablicach mieszanych typów, np. wyszukiwanie 240 w tablicy zawierającej TRUE zwróci indeks elementu TRUE, ponieważ 240 zostaje rzutowane do BOOL (wartość różna od zera, czyli TRUE).

Parametry

  • needle — szukana wartość.

Zwraca: indeks pierwszego dopasowanego elementu, lub -1, jeżeli element nie został znaleziony.

Przykłady

G_ARRCUTSCENES^FIND(G_SCUTSCENE);
ARRSTARTNAME0^FIND("NULL");
ARRCLONES^FIND(-1);

GET

mixed GET(INTEGER index)

Zwraca element na pozycji index. Dla index poza zakresem zwracana jest wartość NULL.

Parametry

  • index — pozycja elementu (numerowana od 0).

Zwraca: wartość elementu lub NULL.

Przykłady

ARRIDLETIME^GET(0);
ARRACTIVESPELLS^GET(_I_);
ARRAYPLAYERSSTATE^GET([VARCLONE-1]);

GETSIZE

INTEGER GETSIZE()

Zwraca liczbę elementów w tablicy.

Zwraca: rozmiar tablicy.

Przykłady

G_ARRSETTINGS^GETSIZE();
ARRENEMYROUTEX^GETSIZE();

GETSUMVALUE

DOUBLE GETSUMVALUE()

Zwraca sumę wartości wszystkich elementów tablicy. Każdy element jest rzutowany do DOUBLE zgodnie z regułami konwersji; elementy nienumeryczne mogą wnosić niespodziewane wartości (BOOL1.0 lub 0.0, STRING nie będący liczbą → 0.0).

Zwraca: suma wartości jako DOUBLE.

Przykłady

ARCONTAINER^GETSUMVALUE();

INSERTAT

void INSERTAT(INTEGER index, mixed value)

Wstawia wartość na pozycji index, przesuwając istniejące elementy w prawo. Dopuszczalne wartości index to [0, rozmiar] — wstawienie na pozycji równej rozmiarowi tablicy dokleja element na koniec. Wywołanie z index poza tym zakresem nie zmienia tablicy.

Parametry

  • index — pozycja wstawienia.
  • value — wstawiana wartość.

Przykłady

ARRTURNIEJ^INSERTAT(I3, I1);
ARRTURNIEJ^INSERTAT(4, I1);

LOAD

void LOAD(STRING path)

Zastępuje zawartość tablicy danymi wczytanymi z binarnego pliku .ARR. Plik zapisany jest w little-endian: 4-bajtowa liczba elementów, a następnie dla każdego elementu 4-bajtowy znacznik typu (1=INTEGER, 2=STRING, 3=BOOL, 4=DOUBLE) i odpowiadająca mu reprezentacja wartości.

Parametry

  • path — ścieżka pliku .ARR w VFS gry.

Przykłady

G_ARRSETTINGS^LOAD("$COMMON\SETTINGS.ARR");
ARRPATH^LOAD(["MAPA"+ILEVEL+".ARR"]);

LOADINI

void LOADINI()

Zastępuje zawartość tablicy danymi zserializowanymi w pliku INI gry pod kluczem o nazwie tej zmiennej. Format zapisu w INI to lista wartości oddzielonych przecinkami:

NAZWA_TABLICY=wartość1,wartość2,wartość3,...

Każdy element jest interpretowany kolejno jako INTEGER, DOUBLE, BOOL lub STRING — pierwszy pasujący typ zostaje przyjęty.

Przykłady

ARRAYWARSZTATMENUPRZEDMIOTY^LOADINI();

MODAT

void MODAT(INTEGER index, mixed divisor)

Zapisuje resztę z dzielenia elementu na pozycji index przez argument. Operacja konwertuje element i argument do DOUBLE, wykonuje modulo, i zapisuje wynik jako DOUBLE. Dzielenie przez zero oraz wywołanie z index poza zakresem nie zmieniają tablicy.

Parametry

  • index — pozycja elementu.
  • divisor — dzielnik.

Przykłady

ARRANGLE^MODAT(VARPLAYER, 360);

MULAT

void MULAT(INTEGER index, mixed multiplier)

Mnoży element na pozycji index przez argument. Operacja konwertuje element i argument do DOUBLE, mnoży, i zapisuje wynik jako DOUBLE. Wywołanie z index poza zakresem nie zmienia tablicy.

Parametry

  • index — pozycja elementu.
  • multiplier — mnożnik.

Przykłady

ARRDIRY^MULAT(VARPLAYER, -1.0);
ARRDIRX^MULAT(VARPLAYER, -1);

REMOVEALL

void REMOVEALL()

Usuwa wszystkie elementy z tablicy.

Przykłady

G_ARRSETTINGS^REMOVEALL();
ARRTEMP^REMOVEALL();

REMOVEAT

void REMOVEAT(INTEGER index)

Usuwa element na pozycji index, przesuwając pozostałe w lewo. Wywołanie z index poza zakresem nie zmienia tablicy.

Parametry

  • index — pozycja usuwanego elementu.

Przykłady

ARRTEMP^REMOVEAT(VARITEMP2);
ARRENEMYROUTEX^REMOVEAT(0);

REVERSEFIND

INTEGER REVERSEFIND(mixed needle)

Działa jak FIND, ale przeszukuje tablicę od końca. Stosują się te same reguły porównań zależnych od typu elementu.

Parametry

  • needle — szukana wartość.

Zwraca: indeks ostatniego dopasowanego elementu, lub -1, jeżeli element nie został znaleziony.

Przykłady

ARRAYKURNIKFREESLOTS^REVERSEFIND(0);

SAVE

void SAVE(STRING path)

Zapisuje zawartość tablicy do binarnego pliku .ARR w formacie opisanym przy LOAD.

Parametry

  • path — ścieżka docelowego pliku .ARR w VFS gry.

Przykłady

G_ARRSETTINGS^SAVE("$COMMON\SETTINGS.ARR");
ARRPATH^SAVE(["MAPA"+ILEVEL+".ARR"]);

SAVEINI

void SAVEINI()

Serializuje zawartość tablicy do pliku INI gry pod kluczem o nazwie tej zmiennej, w formacie listy wartości rozdzielonych przecinkami (opisany przy LOADINI).

Przykłady

ARRAYPLATFORMOWKAPRZEDMIOTY^SAVEINI();

SUB

void SUB(mixed value)

Odejmuje argument od każdego elementu tablicy. Operacja konwertuje każdy element do DOUBLE przed odjęciem; wszystkie elementy po wywołaniu mają typ DOUBLE.

Parametry

  • value — wartość odejmowana.

Przykłady

ARRAYBKGA^SUB([0-VARINT2]);

SUBAT

void SUBAT(INTEGER index, mixed value)

Odejmuje argument od elementu na pozycji index. Operacja konwertuje element i argument do DOUBLE, odejmuje, i zapisuje wynik jako DOUBLE. Wywołanie z index poza zakresem nie zmienia tablicy.

Parametry

  • index — pozycja elementu.
  • value — wartość odejmowana.

Przykłady

ARRBUTTONPRESSED^SUBAT(IBUTTONNR, 1);
ARRSPEED^SUBAT(VARPLAYER, 0.15);

SUM

void SUM(mixed value)

Dodaje argument do każdego elementu tablicy. Operacja konwertuje każdy element do DOUBLE przed dodaniem; wszystkie elementy po wywołaniu mają typ DOUBLE.

Parametry

  • value — wartość dodawana.

Przykłady

ARRCHICKENX^SUM(-60);
ARRCHICKENY^SUM(-110);

Sygnały

ONCHANGE

Wywoływany po dokonaniu zmiany w tablicy.

ONINIT

Wywoływany w momencie inicjalizacji zmiennej.

ONDONE

Wywoływany w momencie wychodzenia ze sceny, do której należy zmienna.

ONSIGNAL

Wywoływany po otrzymaniu sygnału (przez wywołanie metody SEND — zobacz Zdarzenia i sygnały).