Contents |
Produkcja Przemysłowa Callback
Branże nie mają bezpośrednio z nimi grafiki (mają grafikę poprzez kafle), więc nie mogą mieć tradycyjnej akcji 2. Jednak nadal mogą używać akcji 2 do specjalnego celu: wywołań produkcyjnych. Oddzwonienie produkcyjne może dokładnie określić, w jaki sposób przemysł produkuje ładunek, ale wymaga to więcej niż 15 bitów, które może zwrócić normalny oddzwonienie.
Gdy w branży 21 są ustawione bity 1 lub 2, jego produkcja jest zmieniana. Zamiast natychmiastowego przetwarzania przychodzącego ładunku, pamięta, ile jednostek czeka i korzysta z mechanizmu zwrotnego produkcji, aby zdecydować, ile ładunku należy wyprodukować.
Oddzwonienie produkcyjne jest obsługiwane w łańcuchu akcji 2. Zazwyczaj będzie istniał podłańcuch (sub-chain) wielu wariantów 2 dla logiki przed ostateczną wersją 2 obsługującą produkcję cb. ID pierwszej odmiany 2 w łańcuchu podrzędnym powinien być jawnie obsługiwany przez sprawdzenie produkcji cb przy użyciu var 0C. Nie polegaj na traktowaniu podrzędnego łańcucha produkcyjnego cb jako domyślnego ID dla wariantu 2 sprawdzającego 0C, może to mieć nieoczekiwane wyniki. Jednak ID wariantu 2 obsługującego samą produkcyjną cb powinien być domyślnym ID dla kontroli 0C. Ma sens?
Format
W przypadku wywołania zwrotnego produkcji dane działania 2 wyglądają następująco:
Format version 00
<Sprite-number> * <Length> 02 0A <set-id> <version> <subtract-in-1> <subtract-in-2> <subtract-in-3> <add-out-1> <add-out-2> <again>
Element | Rozmiar | Opis |
---|---|---|
<Sprite-number> | dec | Kolejny sprite numer |
<length> | dec | Całkowita liczba bajtów użytych w tym działaniu |
02 | B | Definiuje action 02 |
0A | B | feature 0A=industries |
<set-id> | B | ID dla tej definicji |
<version> | B | wersja produkcji-callback format, 00 |
<subtract-in-1..3> | W | Kwoty, które należy odjąć od przychodzących ładunków oczekujących na przetworzenie. (Podpisane) ~Signed |
<add-out-1/2> | W | Kwoty, które należy dodać do wyprodukowanych ładunków. (Niepodpisane) ~Unsigned |
<again> | B | Powtórzyć wywołanie zwrotne, jeśli nie jest zerowe, nie powtarzać, jeśli 00. [1] |
- ↑ Przypis.Przed TTDPatch 2.0.1 alfa 73 jedynymi ważnymi wartościami były 01 i 00..
Format version 01
<Sprite-number> * <Length> 02 0A <set-id> <version> <subtract-in-1> <subtract-in-2> <subtract-in-3> <add-out-1> <add-out-2> <again>
Element | Rozmiar | Opis |
---|---|---|
<Sprite-number> | dec | Kolejny numer 'sprite' |
<length> | dec | Całkowita liczba bajtów użytych w tej akcji |
02 | B | Definiuje akcję 02 |
0A | B | funkcja 0A=branże |
<set-id> | B | ID tej definicji |
<version> | B | wersja formatu produkcji-callback, 01 |
<subtract-in-1..3> | B | Liczba rejestrów zawierających kwoty do odjęcia od przychodzących ładunków oczekujących na przetworzenie. |
<add-out-1/2> | B | Numery rejestrów, które zawierają kwoty, które należy dodać do wyprodukowanych ładunków. |
<again> | B | Numer rejestru <again> . Powtórz 'callback', jeśli wartość rejestru nie jest zerem, inaczej nie powtarzaj |
Format version 02
<Sprite-number> * <Length> 02 0A <set-id> <version> <numinputs> (<inputcargo> <subtract-in>)* <numoutputs> (<outputcargo> <add-out>)* <again>
Element | rozmiar | Opis |
---|---|---|
<Sprite-number> | dec | Kolejny numer 'sprite' |
<length> | dec | Całkowita liczba bajtów użytych w tej akcji |
02 | B | Definiuje akcję 02 |
0A | B | funkcja 0A=branże |
<set-id> | B | ID tej definicji |
<version> | B | wersja formatu produkcja-callback, 02 |
<numinput> | B | Liczba (<inputcargo> <subtract-in>) par do 'naśladowania'. |
<inputcargo> | B | Cargotyp z tabeli translacji ładunku. |
<subtract-in> | B | Numer rejestru zawierającego kwoty do odjęcia od przychodzących ładunków oczekujących na przetworzenie. |
<numoutput> | B | Liczba (<outputcargo> <add-out>) par do 'naśladowania'. |
<outputcargo> | B | Cargotyp z tabeli translacji ładunku. |
<add-out> | B | Numer rejestru przechowującego kwoty, które mają być dodane do wyprodukowanych ładunków. |
<again> | B | Numer rejestru <again> . Powtórz wywołanie zwrotne, jeśli wartość rejestru jest różna od zera, w przeciwnym razie nie powtarzaj |
Details
Całkowita liczba oczekujących ładunków nie może być ujemna. Jeśli podasz więcej niż faktycznie czekającą kwotę, przychodząca kwota zostanie wyzerowana. Możesz użyć ujemnych wartości odejmowania, aby zwiększyć ilość oczekującego ładunku.
Podczas tego wywołania zwrotnego najniższy bajt zmiennej 18 zawiera przyczynę wywołania, wywołania zwrotnego: 0, jeśli zostało wywołane z powodu przychodzącego ładunku, 1, jeśli zostało wywołane podczas przetwarzania okresowego. Bity 8-23 zawierają liczbę wywołań zwrotnych w tej pętli, tj. 0 dla pierwszego połączenia, 1 dla drugiego etc.)
0.6 2.5 Dla TTDPatch 2.0.1 alfa 73 i wyższych bity 24-31 zmiennej 18 zawierają <again> wartość poprzedniego wywołania (najniższy bajt tylko w przypadku wersji 1) lub 0, jeśli jest to pierwsze wywołanie. Można to wykorzystać do uzyskania informacji o stanie podczas pętli, ponieważ można przekazać informacje do następnej iteracji.
0.6 2.5 Od wersji TTDPatch 2.5 beta 5 można zażądać losowych bitów w zmiennej 10, ustawiając bit 15 właściwości 1A. Te bity nie zostaną ponownie zrandomizowane, gdy ponownie oddzwonisz, ustawiając niezerową wartość "ponownie" (again) ; są losowe tylko dla pierwszego połączenia.
0.6 2.6 Korzystając z formatu wersji 1, dostępnego od TTDPatch 2.6 r1307, możesz dynamicznie decydować o instrukcjach. Zamiast stałych podajesz numery rejestrów zawierające potrzebne wartości; możesz obliczyć te wartości wcześniej w łańcuchu akcji2. Rejestry mają długość 4 bajtów i są uważane za podpisane. Ujemne wartości dodatków nie mają sensu i są ignorowane. Wyniki są zaciśnięte w dozwolonym zakresie (0..65535 zarówno dla przychodzących, jak i wychodzących ilości ładunku).
1.9 Korzystając z formatu wersji 2, można wyświetlić więcej ładunków wejściowych i wyjściowych niż w wersji 1. Rodzaje ładunków są określone zgodnie z tabelą translacji ładunków; kwoty są określone w rejestrach jak w wersji 1. Wymienione typy ładunków, które nie są akceptowane / produkowane przez przemysł (właściwości 10..11, 25..26, oddzwanianie 14B..14C) są ignorowane.
- Nie musisz wymieniać wszystkich rodzajów ładunków produkowanych/akceptowanych przez przemysł. Kwoty dla rodzajów ładunków nienotowanych pozostają niezmienione.
- Możesz podać więcej rodzajów ładunku niż faktycznie wyprodukowano/przyjęto (na przykład, gdy oddzwonienie 14B..14C wybrało podzbiór ładunków). Nadmiar przedmiotów jest ignorowany.
- Nie wymieniaj dwukrotnie tego samego rodzaju ładunku.