RandomAction2
en
EN
pl
PL

nfo

Contents

Wprowadzenie

W przeciwieństwie do VariationalAction2, którego wyniki są zawsze określane na podstawie przewidywalnej decyzji, RandomAction2 może wykorzystać losowe wyniki do wybrania jednego z kilku wpisów Action2.

Format

Dane wyglądają następująco:

<Sprite-number> * <Length> 02 <feature> <set-id> [80|83] <random-triggers> <randbit> <nrand> <set-ids>

Od TTDPatch 2.6 r1850 i OpenTTD r12452, i tylko dla pojazdów:

<Sprite-number> * <Length> 02 <feature> <set-id> 84 <count> <random-triggers> <randbit> <nrand>
<set-ids>
Element Rozmiar Opis
<Sprite-number> dec Sekwencyjny numer 'sprite'
<length> dec Łączna liczba bajtów użytych w tej akcji.
02 B Definiuje action 02
<feature> B Do jakiego rodzaju pojazdu/stacji/... należy zastosować tę definicję?
<set-id> B ID tej akcji 2 (używany jak ID ładunku)
80, 83, 84 B Rodzaj losowej akcji, patrz poniżej.
<count> B (gdy jest obecny) Lokalizacja pojazdu kontrolującego.
<random-triggers> B Kiedy ponownie randomizować
<randbit> B Jakiego losowego bitu użyć do tego działania 2
<nrand> B Liczba zestawów identyfikatorów do wyboru, musi być potęgą 2
<set-ids> W Action 2 set-ids do wyboru z.

Opis

Sprite-numer

To tylko numer, na którym jesteś.

Długość

Policz liczbę bajtów w tej akcji.

Cecha

Ustawia to rodzaj feature , który chcesz zmienić. Ustaw na:

00 Koleje
01 Pojazdy Drogowe
02 Statki
03 Samoloty
04 Stacje
05 Canały/Rzeki
07 Domy
09 Kafle Przemysłowe
0A Przedsiębiorstwa
0D Lądowiska
0F Obiekty
10 Koleitypy
11 Kafle Lotniska
12 Drogitypy
13 Tramtypy

set-ID

Określa liczbę tego działania 2.  ID można następnie wykorzystać jako cel w akcji 3 lub innej akcji wariacyjnej/losowej 2.

80/83/84

Użyj 80, aby randomizować obiekt (pojazd, stację, budynek, przemysł, obiekt) na podstawie własnych wyzwalaczy i bitów.

Użyj 83, aby randomizować obiekt na podstawie jego "pokrewnego" (related) obiektu (s.b.).

Użyj 84, aby losowo wybrać pojazd na podstawie dowolnego pojazdu w składzie.

'Cecha'' Powiązany obiekt
Vehicles (00-03) Pierwszy pojazd składu
Stations (04) N/A
Houses (07) N/A
Industry tiles (09) Przemysł zawierający kafel
Industries (0A) N/A
Objects (0F) N/A

liczenie

W przypadku typu 84 określa to losowe bity pojazdu, których ten pojazd będzie używał i/lub modyfikował.

Niski kąsek (bity 0-3) określa, jak daleko należy liczyć od pojazdu wyjściowego. Jeśli wynosi zero, licznik zostanie odczytany z rejestru GRF 100h zamiast tego.

Wysokie skubanie (w rzeczywistości bity 6-7) określa, który pojazd jest pojazdem wyjściowym i jaki kierunek należy liczyć:

Wartość Znaczenie
0 odliczać (z dala od silnika), zaczynając od tego pojazdu
4 liczyć do przodu (w kierunku silnika), zaczynając od tego pojazdu.
8 odliczać, zaczynając od silnika
C odliczaj, zaczynając od pierwszego pojazdu w tym łańcuchu pojazdów o tym samym ID, jak dla zmiennej pojazdu 41

Bity 4-5 są zarezerwowane i muszą wynosić zero, więc inne wartości wysokiego skryptu nie są dozwolone.

wyzwalacze-losowe

Jest to nieco maska ​​wyzwalaczy, które powodują ponowną randomizację. Zwykle dowolny dopasowany wyzwalacz powoduje, że grafika jest ponownie losowa, ale jeśli dodasz 80 do maski bitowej, ponowna randomizacja nastąpi tylko wtedy, gdy wystąpią wyzwalacze wszystkie.

Bity wyzwalające są specyficzne dla funkcji, patrz poniżej.

Należy pamiętać, że ponowne losowanie występuje tylko w łańcuchu graficznym, a nie w przypadku wywołań zwrotnych. Tak więc, jeśli używasz losowej akcji tylko w ramach wywołania zwrotnego i chcesz ponownie losowo zaszyfrować bity, musisz dodać "sztuczną" remandomizacje RA2 do łańcucha graficznego.

Przykład:

 -1 * -1   02 04 02
           80                         	// losowo w callback
           00                         	// bez wyzwalaczy
           00                         	// pierwszy losowy bit do użycia
           \b 16                      	// Liczba 'przypadków' (cases)
           \w 10 \w 11 \w 12 \w 13    	// losowe przypadki
           \w 14 \w 15 \w 16 \w 17
           \w 18 \w 19 \w 20 \w 21
           \w 22 \w 23 \w 24 \w 25
 
 -1 * -1   02 04 01
           85 0C 00 \wx FFFF
           01
           \w 2 \w 14 \w 14           	// callback 14
           \w 3                       	// 'łańcuch' (chain} graficzny
 
 -1 * -1   02 04 00
           80                         	// 'fałszywe' (dummy) losowe callback z zewnątrz
           04                         	// przyjazd pociągu
           00                         	// pierwszy bit do rerandomise
           \b 16                      	// Liczba przypadków
           \w 1 \w1 \w 1 \w1          	// we wszystkich przypadkach takie same, 
 					// tylko w wyzwoleniu  rerandomisation
           \w 1 \w1 \w 1 \w1
           \w 1 \w1 \w 1 \w1
           \w 1 \w1 \w 1 \w1
 
 -1 * -1   03 04 01 00 00 \w 0        	// action 3

randbit

Nieobsługiwane przez OpenTTD Obsługiwane przez TTDPatch <2.5 (alpha30)<2.5 W przypadku wersji wcześniejszych niż TTDPatch 2.0.1 alpha 30 pozostaw tę wartość na 00. Nie działa to tak, jak zamierzono (miało to umożliwić niezależne losowe łańcuchy, ale obecnie wszystko jest ponownie losowe w tym samym czasie, tym samym pokonując ten mechanizm ).

Obsługiwane przez OpenTTD Obsługiwane przez TTDPatch 2.5 (alpha 30)2.5 Od wersji TTDPatch 2.0.1 alpha 30 tylko te bity, które zostaną uruchomione, zostaną ponownie zrandomizowane. Poprzednie wersje zawsze randomizowały wszystkie bity. Umożliwi to posiadanie niezależnych zestawów bitów dla niezależnych wyzwalaczy (lub bitów niesprawdzonych, ustawianych tylko w momencie zakupu). Ustawienie randbit określa pierwszy bit, który ma zostać ponownie zrandomizowany, a także opiera się na losowej grafice. Łączna liczba użytych bitów to 2-logarytm liczby nr i poniżej (np. Dla nrand = 16 używane są 4 bity).

nrand

Liczba różnych zestawów do wyboru.  Musi to być potęga 2, tj. 2, 4, 8, 16 etc.

set-ids

ID`y Akcji 2 do losowego wyboru

Wyzwalacze

'Feature' Losowe bity 'Wyzwalacze'
'Self' 'Powiązane'
Pojazdy 8 8 tylko-odczyt tak
Stacje 16 + 4 [1][2] nie tak
Kanały 8 nie nie
Domy 8 nie tak
Kafle Przedsiębiorstw 8 16 tak
Przedsiębiorstwa 16 nie nie
Lotniska 16 [1] nie nie
Obiekty 8 nie nie
Railtypy 2 nie nie
Roadtypes 2 nie nie
Tramtypes 2 nie nie
Kafle lotniskowe 16 + 4 [1] nie nie
  1. 1.0  1.1  1.2  16 bitów współdzielonych dla całej stacji/lotniska (lotnisko i stacja dzielą te same bity). 4 bity na kafel.
  2.  TTDPatch faktycznie implementuje tylko 8 współdzielonych losowych bitów (plus 4 na kafel). Bity 8-15 są zawsze zerowe.

Pojazdy

Pojazdy mają 8 losowych bitów i następujące wyzwalacze:

Bit Wartość Wersja 'Wyzwalacz' (Trigger)
0 01 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.02.0 Pojazd otrzymuje nowy ładunek ładunku (dopiero po opróżnieniu)
1 02 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.02.0 Pojazd wjeżdża do depotu i jest serwisowany
2 04 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 Skład (consist) rozładował cały ładunek
3 08 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 Każdy pojazd składający się z odbiorcy przyjmuje ładunek
4 10 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 Callback 32 returned 1

Bity wyzwalające konsolę 2 i 3 umożliwiają ponowną randomizację za każdym razem, gdy konsola otrzymuje ładunek po pełnym rozładowaniu. Powinny być używane z działaniem 2 typu 80, a nie 83, a zmienna losowych wyzwalaczy powinna mieć 80 dodanych do niej, aby ponowna randomizacja miała miejsce tylko wtedy, gdy konsola była pusta, a następnie (then)' otrzymał nowy ładunek.

Pojazdy mogą odczytywać losowe fragmenty innych pojazdów (przy użyciu akcji losowej typu 83 lub 84), ale mogą jedynie uruchamiać reandandomizacja ich własnych bitów. Nie określaj żadnych wyzwalaczy ponownej randomizacji podczas uzyskiwania dostępu do losowych bitów innych pojazdów (via typ 83 lub 84), nie zrobi to, co myślisz.

Stacje

Stacje mają 16 + 4 losowych bitów. Bity od 0 do 15 są własnością stacji jako całości, a bity od 16 do 19 są różne dla każdego kafla.  Aby uzyskać losowość opartą na kaflach, dlatego użyj randbit=10 i nrand nie więcej niż 16 (ponieważ tylko 4 losowe bity są dostępne na kafla).

Bit Wartość Wersja Wyzwalacz
0 01 Obsługiwane przez OpenTTD 1.31.3 Obsługiwane przez TTDPatch 2.52.5 nowy ładunek czeka
1 02 Obsługiwane przez OpenTTD 1.31.3 Obsługiwane przez TTDPatch 2.52.5 nigdy więcej ładunku
2 04 Obsługiwane przez OpenTTD 1.31.3 Obsługiwane przez TTDPatch 2.52.5 train przyjeżdża (rozpoczyna rozładunek / załadunek)
3 08 Obsługiwane przez OpenTTD 1.31.3 Obsługiwane przez TTDPatch 2.52.5 train odjeżdża (rozładunek i załadunek)
4 10 Obsługiwane przez OpenTTD 1.31.3 Obsługiwane przez TTDPatch 2.52.5 train ładuje lub rozładowuje ładunek
5 20 Obsługiwane przez OpenTTD 1.31.3 Obsługiwane przez TTDPatch 2.52.5 platforma rezerwuje 'train' (przy użyciu PBS)

Zauważ też, że żaden z powyższych wyzwalaczy nie uruchomi się, chyba że zostanie podparty. 12 ma co najmniej jeden ustawiony bit.  Wyzwalacze 01 zostaną uruchomione dla dowolnego rodzaju ładunku ustawionego w rekwizytach. 12, ale wyzwalacz 02 zostanie aktywowany tylko wtedy, gdy wszystkie typy ładunków nie będą już czekały na ładunek. Wyzwalacze 04, 08 i 20 są uruchamiane bez względu na rodzaj ładunku przewożonego przez pociąg, o ile podpora. 12 nie jest zerem.

Wyzwalacze 04, 08, 10 i 20 wpływają tylko na platformę, na której występują, a także na losowe bity stacji, ale nie na inne platformy.

Ponieważ 'występujące wyzwalacze' (occured triggers) są przechowywane tylko raz na stację (bez rozróżniania rodzajów kafli lub rodzajów ładunku), co dodaje 80 do losowe wyzwalacze nie mają większego sensu.

Wyzwalacze budowy miejscowości

Budynki miejskie mają 8 losowych bitów.

Bit Wartość Wersja Wyzwalacz
0 01 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 kafel budowlany jest przetwarzany w cyklicznej pętli przetwarzania kafli
1 02 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 górny kafel budynku jest przetwarzany w cyklicznej pętli przetwarzania kafli

Okresowa pętla przetwarzania kafli nieprzerwanie przetwarza kafle mapy, przetwarzając każdy kafel co 256 tyknięć (ok. 3,5 dnia TTD). Ponieważ żadne "prawdziwe" (real) wydarzenie nie zdarzyło się w budynkach miejskich, masz tylko tę okazję, aby ponownie 'randomizować' wygląd swojego budynku.

Jeśli każde 3,5 dnia jest dla Ciebie za szybkie, możesz pomnożyć limit czasu, ustawiając właściwość 16 dla danego kafla. Limit czasu wynosi 256 ticks*(prop. 16+1), więc 0 oznacza co 3,5 dni, 1 oznacza co 7 dni, 2 oznacza co 10,5 dnia i tak dalej.

Jeśli aktywowany jest wyzwalacz 02, wszystkie części budynku, które mają ten zestaw wyzwalaczy, otrzymają te same losowe bity, co pozwoli ci na losowanie budynku z wieloma kaflami jako jednej jednostki. Z drugiej strony, jeśli kafle budynku 'wielokaflowego' mają wyzwalacz 1 zestaw, wszystkie kafle zostaną losowo wybrane indywidualnie. Zauważ, że wszystkie kafle budynku 'wielokaflowego' mają tę samą wartość podczas budowania budynku.

Aktywatory kafli przemysłu

Kafle przemysłowe mają 8+16 losowych bitów. Dostęp do akcji losowej 2 typu 80 daje 8 bitów specyficznych dla kafli, a dostęp do akcji losowej 2 typu 83 , - 16 bitów branżowych. Wyzwalacze są takie same dla obu. Wyzwalacze 02 i 04 są uruchamiane jednocześnie dla wszystkich kafli branży. Każdy kafel może zmienić losowo zarówno swoje losowe bity, jak i te z branży. Oznacza to, że każdy kafel może określać niektóre bity branży do ponownego losowania, a unia wszystkich tych bitów zostanie ponownie przypisana na końcu.

Bit Wartość Wersja 'Wyzwalacz'
0 01 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 kafel budowlany jest przetwarzany w cyklicznej pętli przetwarzania kafli[1]
1 02 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 uruchamia się jednocześnie dla wszystkich kafli branży co 256 tyknięć. Jeśli branża jest podstawowa, ładunek wyjściowy jest generowany w tym samym czasie.
2 04 Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5 ładunek jest dostarczany do przemysłu. Jeśli przemysł jest przetwórczy, ładunek wyjściowy jest generowany w tym samym czasie.
  1.  Nieobsługiwane przez OpenTTD Obsługiwane przez TTDPatch Randandomizacja współdzielonych bitów przemysłu nie przebiega prawidłowo w obecnym TTDPatch.

Trigger 1 działa podobnie do wyzwalacza 1 dla domów, tyle że nie można pomnożyć limitu czasu: zawsze jest to 256 tyknięć.

Kafle branżowe mogą przeklasyfikować zarówno swoje losowe bity, jak i losowe bity branży (za pomocą losowego typu akcji 83). Zapamiętane wyzwalacze dla ponownej randomizacji z 80 dodanymi do wyzwalaczy są w obu przypadkach takie same na kafel.

Branże mają losowe bity. Można je jednak ponownie przypisać tylko za pomocą kafli.

Kanały

Kanały / Rzeki mają 8 losowych bitów.

Obecnie nie ma sposobu wpływania na losowe tworzenie bajtów za pomocą wyzwalaczy, wewnętrznie bity są przesyłane z VarAction2Canals var 83, który jest ustawiany podczas budowania kanału. Id funkcji nie obsługiwane przez VarAction2Canals są niezdefiniowane i nigdy nie powinny być używane.

Obiekty

Obiekty mają 8 losowych bitów na kafel obiektu.

Jednak nie ma żadnych wyzwalaczy dla obiektów.

Należy również pamiętać, że losowe bity są unikalne dla każdego kafla w obiekcie i nie są wspólne dla całego obiektu.

Railtypy

Kafle szynowe mają 2 pseudolosowe bity, w zależności od ich położenia.

Brak 'wyzwalaczy' .

Typy dróg

Kafle drogowe mają 2 pseudolosowe bity, w zależności od położenia kafli.

Brak wyzwalaczy.

Tramtypy

Kafle tramwajowe mają 2 pseudolosowe bity, w zależności od położenia kafli.

Brak wyzwalaczy.

Inne cechy

Wszystkie funkcje niewymienione na powyższej liście nie mają ani losowych bitów, ani wyzwalaczy, w tym miast (które byłyby dostępne przy użyciu losowej akcji 2 typu 83 dla stacji i branż).

Przykład