Skip to main content
Dostawca akcji deklaruje akcje obok obserwacji, które zgłasza. Model wybiera zadeklarowaną akcję jak każdą akcję z katalogu, Humalike przyjmuje tag dopiero po zgłoszeniu wymaganych obserwacji, a Twoje RunAction wykonuje akcję. Jak brama i lada sklepowa zachowują się w grze, opisano w sekcji Systemy rozgrywki.
Włącz 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:
Akcje są deklarowane ponownie przy każdym raporcie możliwości. Zmieniona lub usunięta akcja zaczyna obowiązywać przy następnym uruchomieniu zasobu.

Deklaracja

Parametry

  • Typy to string, integer lub boolean.
  • enum zawiera do 16 pojedynczych słów lub liczb całkowitych.
  • required i description są opcjonalne.
  • player_id jest 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 requires na tej obserwacji.
  • Liczby są sumowane po tych faktach. Wszystko inne to najnowsza wartość.

Zapasy

Zastępuje całe zapasy NPC. Przedmiot niewymieniony to taki, którego NPC nie ma wcale. Panel pokazuje zapasy tylko do odczytu na stronie NPC.
  • 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'.
Zwraca { ok = true, value = { stock } } lub { ok = false, error = code }:

Lada sklepowa

Dla NPC, które sprzedają, zadeklaruj Catalog 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

Wysyła pozycje wybrane w Twoim własnym menu sklepu. Do 16 pozycji, każda w ilości od 1 do 1000. Zwraca { 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ą.
  • spent jest zarezerwowanym polem obserwacji.

Kontrakt RunAction

  • Zwróć dokładnie true, gdy akcja została wykonana. false odrzuca 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 RegisterProvider wraz 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 1 loguje każdy przychodzący push i jego wynik.

Dalej