3.6 KiB
BEHAVIOUR
Procedura. Wykonuje kod zapisany w polu CODE, opcjonalnie obwarowany warunkiem wskazanym w polu CONDITION. Argumenty wywołania dostępne są wewnątrz kodu jako $1, $2, …, opisane szerzej w Argumenty procedur.
Pola
CODE
STRING CODE
Treść procedury — blok kodu w nawiasach klamrowych, zgodny ze składnią opisaną w rozdziale Skrypty.
Przykład:
BEHGOTOTITLE:CODE={BEHSETSCENE^RUN();G_SARCADESCENE^SET("EGIPTLEJ");BEHCSSTART^RUN();}
CONDITION
STRING CONDITION
Nazwa zmiennej typu CONDITION lub COMPLEXCONDITION, używana przez metodę RUNC oraz przez RUNLOOPED jako warunek przerwania pętli. Jeżeli pole nie jest ustawione, metody działają bezwarunkowo.
Metody
RUN
mixed RUN([mixed param1, ..., mixed paramN])
Wykonuje kod procedury. Przekazane argumenty są dostępne w kodzie jako $1, $2, …. Wartość zwracana to wynik wyrażenia @RETURN w ciele procedury, lub NULL, jeżeli @RETURN nie został wywołany.
Parametry
param1, …, paramN— argumenty procedury (opcjonalne, dowolnego typu).
Zwraca: wartość zwrócona przez procedurę lub NULL.
Przykłady
__LOAD_SETTINGS__^RUN();
BEHSELECTOBJ^RUN(VARITER);
BEHADDITEM^RUN(SOBJECT|SPARAM0, VARITER);
BEHENTERRABBIT^RUN("ANNHILL0", -1);
RUNC
mixed RUNC([mixed param1, ..., mixed paramN])
Wywołuje procedurę pod warunkiem, że warunek wskazany w polu CONDITION jest spełniony. Jeżeli CONDITION nie jest ustawione, zachowuje się jak RUN. Argumenty i wartość zwracana — jak w RUN.
Parametry
param1, …, paramN— argumenty procedury.
Zwraca: wartość zwróconą przez procedurę lub NULL (również, gdy warunek nie był spełniony).
Przykłady
BEHREMOVEMENUITEM^RUNC("CHOMIK");
BEHREMOVEMENUITEM^RUNC(VARSTRINGTEMP);
BEH_HERO_FINISHED_0^RUNC();
RUNLOOPED
void RUNLOOPED(INTEGER start, INTEGER length)
void RUNLOOPED(INTEGER start, INTEGER length, INTEGER step, [mixed extraArg1, ..., mixed extraArgN])
Wywołuje procedurę w pętli for z licznikiem przekazywanym jako $1. Dodatkowe argumenty (od czwartego włącznie) trafiają do procedury jako $2, $3, … . Jeżeli pole CONDITION jest ustawione, jego warunek jest sprawdzany przed każdą iteracją — jeżeli warunek nie jest spełniony, pętla się kończy.
Pętla jest równoważna następującemu pseudokodowi:
for (int i = start; i < start + length; i += step) {
// wywołanie procedury z $1 = i, $2..$N = extraArgs
}
Jeżeli step jest pomijany lub przekazany jako 0, używana jest wartość 1. Operator @BREAK w ciele procedury kończy pętlę RUNLOOPED (ale nie procedurę wywołującą).
Parametry
start— wartość początkowa licznika.length— liczba iteracji do wykonania (startVal < endValtostartVal + length).step— (opcjonalnie) krok licznika. Domyślnie1.extraArg1, …, extraArgN— (opcjonalnie) dodatkowe argumenty przekazywane do procedury.
Przykłady
BEHSHOWMENU^RUNLOOPED(0, ARRAYWARSZTATMENUPRZEDMIOTY^GETSIZE());
BEHSHOWPIONEK^RUNLOOPED(1, 9);
BEHINITZASLONAX^RUNLOOPED(0, 7, 1, "[80*$1]");
Sygnały
ONINIT
Wywoływany w momencie inicjalizacji procedury.
ONDONE
Wywoływany po zakończeniu wywołania procedury.
ONSIGNAL
Wywoływany po otrzymaniu sygnału (zobacz Zdarzenia i sygnały).