RunAction wykonuje akcję.
Jak brama i lada sklepowa zachowują się w grze, opisano w sekcji
Systemy rozgrywki.
myserver:give_map w panelu na tych NPC, które mają ją mieć. Klucze są
poprzedzone przestrzenią nazw po sieci (myserver:give_map) i lokalne w
RunAction (give_map). RunAction otrzymuje params modelu scalone z
fixed oraz player_id:
Deklaracja
Parametry
- Typy to
string,integerlubboolean. enumzawiera do 16 pojedynczych słów lub liczb całkowitych.requiredidescriptionsą opcjonalne.player_idjest zawsze dodawane przez Humalike.- Tag, którego wartości nie pasują do deklaracji, jest odrzucany, zanim zostanie wypowiedziany lub zapamiętany.
Warunki
Zużyte fakty znikają dla każdej akcji i dla lady sklepowej.
Parametry z faktów
- Wartości pochodzą z faktów policzonych przez pierwszy wpis
requiresna tej obserwacji. - Liczby są sumowane po tych faktach. Wszystko inne to najnowsza wartość.
Zapasy
- Do 32 przedmiotów na NPC.
- Nazwy przedmiotów pasują do
^[a-z][a-z0-9_]*$, co najwyżej 48 znaków. - Liczby to liczby całkowite od 0 do 1 000 000 lub
'unlimited'.
{ ok = true, value = { stock } } lub { ok = false, error = code }:
Lada sklepowa
Dla NPC, które sprzedają, zadeklarujCatalog zamiast jednej akcji na produkt.
Humalike przyjmuje zamówienie, wycenia je i pobiera płatność, a następnie
wywołuje deliver i refund na Twoim RunAction.
NPC sprzedaje przedmioty z katalogu, które Twój skrypt dodał do zapasów.
deliver i refund
Obie są deklarowane za Ciebie wraz z Catalog. Nie wymieniaj ich w Actions.
Zamówienia z menu
{ ok = true, value = { lines } } lub
{ ok = false, error = code }:
Klucze zarezerwowane
order,cancel_order,order_placed,order_refused: nie można ich deklarować jako akcji ani obserwacji.deliver,refund: nie można ich deklarować jako obserwacji.- Żaden klucz nie może być jednocześnie akcją i obserwacją.
spentjest zarezerwowanym polem obserwacji.
Kontrakt RunAction
- Zwróć dokładnie
true, gdy akcja została wykonana.falseodrzuca wywołanie i nie jest ponawiane. - Odpowiedz w ciągu 5 sekund. Utracona odpowiedź (timeout, zerwane połączenie, HTTP 5xx) jest ponawiana od razu, do trzech prób, pod tym samym id wywołania.
- Zachowuj przyjęte id i odpowiadaj na powtórzenie z tego zapisu, aby utracona odpowiedź nigdy nie wykonała akcji dwukrotnie.
Debugowanie
- Odrzuconą deklarację wypisuje
RegisterProviderwraz z wadliwym polem. Nic nie zostaje zarejestrowane. - Strona NPC w panelu wymienia zadeklarowane akcje z ich warunkami. Widok transkrypcji pokazuje obserwacje i akcje.
humalike_debug 1loguje każdy przychodzący push i jego wynik.

