- VarAction 2
- RandomAction 2
- Callbacks
Wprowadzenie
Zmienne
zmienna | Rozmiar | Wersja | Opis | Dostępne na liście zakupów |
---|---|---|---|---|
10 | D | 1.2 | Wybieranie sprite'ów dla różnych okien GUI - Zobacz Action2/Vehicles. | 1.2 |
40 | D | 0.6 2.5 | Pozycja w składzie i długość składu | nie |
41 | D | 0.6 2.5 | Pozycja i długość łańcucha kolejnych pojazdów o tym samym ID | nie |
42 | D | 0.6 2.5 | Rodzaje ładunków przewożonych | nie |
43 | D | 0.6 2.5 | Player info | 0.6 2.5 |
44 | D | 0.6 2.5 | Aircraft info | nie |
45 | D | 0.6 2.5 | 'Informacje o krzywiznach' | nie |
46 | D | 0.6 2.5 | 'Licznik ruchu' | nie |
47 | D | 0.6 2.5 | Informacje o ładunku pojazdu | 0.7 [1] |
48 | D | 0.6 2.5 | Informacje o typie pojazdu | 0.6 2.5 |
49 | D | 0.7 2.6 | Rok budowy (długi format, 0 bazowy) | 0.7 [2] |
4A | D | 1.1 | Informacje o aktualnym typie kolei/typie drogi/tramwaju | nie |
4B | D | 1.2 | Data ostatniego serwisu | 1.2 [2] |
4C | D | 1.3 | Aktualna maksymalna prędkość, w tym ograniczenia prędkości toru lub rozkładu jazdy. Ważne tylko dla pojazdu przedniego. Uwaga, jednostki różnią się dla każdego typu pojazdu[3] | nie |
4D | D | 1.4 | Położenie w pojeździe przegubowym (articulated) | nie |
60 | D | 0.6 2.5 | Liczba Veh.ID wystąpienie (occurence) | nie |
61 | -[4] | 1.2 | Kwerenda zmienna n-ty pojazdu w łańcuchu (chain) | nie |
62 | D | 1.2 | Różnica krzywizny/położenia dla pojazdu n-ty w łańcuchu | nie |
97 | B | 0.6 2.0 | Licznik 'ticków', zwiększał każdy 'tick' silnika | nie |
B2 | W | Pojazd status: bit0 = pojazd niewidoczny (w tunelu/zajezdni), bit1 = zatrzymany, bit7 = rozbity | nie | |
B4 | W | 0.6 2.0 | Aktualna prędkość. Uwaga, jednostki różnią się dla każdego typu pojazdu[3] | nie |
B9 | B | 0.6 2.0 | Typ ładunku (typ B z listy pod CargoTypes; zależne od klimatu) | nie |
C0 | W | 0.6 2.0 |
Wiek silnika w dniach 1.2 2.5 Ważne dla wagonów i części przegubowych, jak również. |
no |
C4 | B | 0.6 2.0 | Rok budowy (liczone od 1920)), Należy pamiętać, że jest to modyfikowane, gdy Cht: Year jest używany | 0.6 [2] |
C6 | W | 0.6 2.0 | ID typu pojazdu [5] (przydatne dla Callback 1D) | nie |
C8 | B | 0.6 2.0 | Typ sprite; FD dla pociągów do przodu, FE lub FF po odwróceniu | nie |
C9 | B | 0.6 2.0 | Licznik dzienny; zwiększa się codziennie | nie |
DA | W | 0.6 2.0 | Następny indeks wagonu, FFFF jeśli ostatni wagon (użyj shift-num=08 i sprawdź FF) | nie |
F2 | B | 0.6 2.5 | Cykl refit, ile razy przebudowany (refitted) do tego samego typu ładunku | 0.7 [1] |
FE | W | 0.6 2.5 | Modflags | nie |
FF | B | 0.6 2.5 | Modflags | nie |
- ↑ 1.0 1.1 Zmienna 47 odnosi się do ładunku domyślnego pojazdu, gdy znajduje się na liście zakupów. Różni się to od ładunku używanego w akcji 3, która jest 0xFF na liście zakupów. "Cykl refit" (F2) jest obecnie zawsze zerowy na liście zakupów.
- ↑ 2.0 2.1 2.2 Jest to bieżąca data
- ↑ 3.0 3.1 Zerknij train property 09, road vehicle property 08 (nie 15, nawet przy użyciu realistycznego przyspieszenia), ship property 0B i aircraft property 0C.
- ↑ Rozmiar wyniku odpowiada rozmiarowi poszukiwanej zmiennej.
- ↑ 0.7 W OpenTTD 0.7 i nowszych jest grf-lokalny ID pojazdu. Wcześniejsze wersje OpenTTD i TTDPatch zgłaszają TTD ID . W przypadku pociągów jest to samo; dla innych typów pojazdów różnią się one.
W przypadku innych 80 + x zmiennych nadaj TTD vehicle structure .
Zmienne 40, 41, 42 i 43 są buforowane. Oznacza to, że chociaż są one zasadniczo drogie obliczeniowo, mogą być używane bez wpływu na wydajność. Zmienne 45 i 60 są również drogie obliczeniowo, ale nie można ich buforować, dlatego należy ich używać oszczędnie. Jeśli to możliwe, należy preferować zmienne 80+x.
Zmienione w pamięci podręcznej zmienne są aktualizowane, gdy gra jest załadowana, kiedy konsola wjeżdża lub jest przestawiana w składzie i kiedy pociąg się cofa.
Na liście zakupów dostępnych jest tylko kilka zmiennych. W szczególności nie można uzyskać dostępu do pojazdu przedniego (obiekt powiązany) ani innych części przegubowych.
Opis
Pozycja i długość (40, 41)
Format: 00nnbbff
Zmienna | Wartość |
---|---|
ff | pozycja pojazdu w składzie liczona od silnika (przód), np. silnik miałby ff=0, pierwszy wagon lub przedział pocztowy samolotów miałby ff=1, drugi wagon lub wirnik śmigłowców miałby ff=2, trzeci wagon miałby ff=3 itd. |
bb | taki sam jak ff, ale liczony od końca, tj. ostatni wagon ma bb=0, następny wagon ma bb=1 itd.. |
nn |
Łączna liczba pojazdów w składzie, w tym cień i wirnik do samolotu.
|
W przypadku zmiennej 40 liczby te odnoszą się do całości, ale w przypadku zmiennej 41 odnoszą się tylko do łańcucha kolejnych pojazdów o tym samym identyfikatorze co obecny wagon (w tym sam, ale być może z wyłączeniem silnika):
Należy odnotować, że dostęp do "pokrewnego" (related) obiektu (tj. Lokomotywy) nie ma większego sensu w przypadku pojazdów Vars 40/41, z wyjątkiem var40 w łańcuchu callback 1D .
Skład ładunku (42)
Format: uuiicctt
Zmienna | Wartość |
---|---|
tt | maska bitowa wszystkich cargo classes transportowanych przez skład |
cc | najczęściej cargo type (z kolumny dla typu A) |
ii | najczęstszy cykl 'refit' (wariant F2) ładunku typu cc |
uu | wynik 'ORing' bitów 'prop.' 25 ze wszystkich pojazdów w pociągu |
W przypadku użycia z VarAction2 typ 81 (pojazd) zwraca on tylko ładunek z tego pojazdu, przy typie 82 (silnik), na który składa się całość. Zobacz także zmienną 47, aby uzyskać więcej informacji na temat ładunku przewożonego przez pojazd.
- GRFv≤7 'Dla wersji GRF 7' i wcześniejszych „cc” to nieprzetłumaczony numer bitu z cargo property 8 .
- GRFv≥8 'W wersji 8 GRF' zmienia się znaczenie „cc”. Jeśli plik grf zainstalował cargo translation table , wartość w "cc" jest indeksem ładunku w tej tabeli; lub FF, jeżeli ładunku nie ma w tabeli.
Informacje o graczu (43)
Format: Ccttmmnn
0.6 2.5 Od r1497, kiedy 'sprite' pojazdu jest wyświetlana w oknie ekskluzywnej oferty lub wiadomości z nowym pojazdem, lub w innych okolicznościach, gdy z pojazdem nie jest powiązany żaden gracz, nn będzie FF.
Info o samolocie (44)
Format: xxxxhhtt
hh jest wysokością statku powietrznego nad ziemią, a właściwie wysokością jego cienia. Budynki, w tym lądowisko dla śmigłowców, nie liczą się jako "ziemia" (ground) , tj. Aby uzyskać wysokość nad lądowiskiem dla śmigłowców, należy odjąć wysokość lądowiska dla śmigłowców od hh.
tt jest rodzajem bieżącego lotniska: 0=mały, 1=duży, 2=lądowisko dla śmigłowców, 3=platforma wiertnicza. Obecne lotnisko to lotnisko docelowe dla samolotów, które zakończyły wynurzanie i są w locie.
Informacje o krzywiznach (45)
Format: xxxTxBxF
Zwraca to krzywiznę między sąsiednimi parami wagonów. Jest to przydatne w przypadku pojazdów kolejowych, które zwykle przechylają się na zakrętach. Krzywizna to różnica w kierunku między otaczającymi pojazdami:
F = dla przedniej pary (poprzedni wagon do obecnego wagonu, 0, jeśli pojazd jest pierwszy)
B = dla tylnej pary (aktualny wagon na następny, 0 jeśli wagon jest ostatni)
T = dla tripletu (poprzedni wagon do następnego wagonu; zero na zakręcie S)
Możliwa wartość:
Decimal | Hex | Znaczenie |
---|---|---|
-4 | C | 180° 'krzywa' w lewo (tylko T.) |
-3 | D | Zakręt 135 ° w lewo (tylko T) |
-2 | E | Zakręt 90° w lewo |
-1 | F | 45° krzywa w lewo |
0 | 0 | brak krzywej |
1 | 1 | 45° zakręt w prawo |
2 | 2 | Zakręt 90° w prawo |
3 | 3 | 135° zakręt w prawo (tylko T.) |
4 | 4 | Zakręt 180° w prawo (tylko T.) |
Licznik ruchu (46)
Format: 32-bit value
Ta zmienna zlicza ruch, który wykonał pojazd. Dotyczy tylko pierwszego pojazdu w składzie (tzn. Należy użyć VarAction2 typ 82!). Jego wartość wynosi 1/4096 płytki. Pojazd faktycznie porusza się w sposób widoczny za każdym razem, gdy licznik ruchu wzrasta o 256, a ponieważ płytka składa się z 16 takich podjednostek, 16 * 256 = 4096 jednostek ruchu oznacza ruch na jednej płytce.
Najbardziej przydatnym sposobem dostępu jest prawdopodobnie <shiftnum>=08 i odpowiedni <andmask>. Na przykład, aby uzyskać animację z jedną klatką na ruch pojazdu i łącznie 16 klatek dla ruchu na całej płytce, należy użyć <shiftnum>=08 i <andmask>=0F. Aby uzyskać animację z jedną klatką co dwa ruchy pojazdu i łącznie 4 klatki, użyj <shiftnum>=09 i <andmask>=03.
Jeśli pojazd jedzie bardzo szybko (>160 mph dla trains), może przesuwać się o kilka 1/16 części kafla jednocześnie, dlatego niektóre klatki mogą być pomijane, ale animacja nadal będzie zsynchronizowana z ruchem.
Pamiętaj, że grafika pojazdu jest aktualizowana tylko za każdym razem, gdy pojazd faktycznie się porusza, więc sprawdzenie dolnego bajtu jest prawdopodobnie bezcelowe i potrzebne tylko wewnętrznie, aby osiągnąć wystarczającą precyzję.
Informacje o ładunku pojazdu (47)
Format: ccccwwtt
Zmienna | Wartość |
---|---|
tt | cargo typ przewożony przez pojazd (z kolumny dla typu A); 'translacja', jeśli została zainstalowana tablica translacji |
ww | masa jednostki ładunkowej w 1/16 ton, taka sama jak cargo prop. 0F |
cccc | wartość cargo class ładunku przewożonego przez pojazd |
Zauważ, że jeśli GRF zainstalował cargo translation table , wartość w „tt” jest numerem szczeliny w tej tabeli, niezależnie od tego, która faktyczna szczelina lub bit ładunek wykorzystuje w gra. Jeśli tabela została zainstalowana, ale aktualny ładunek nie jest tam wymieniony, „tt” zostanie ustawione na FF.
W przeciwieństwie do zmiennej 42, zmienna ta zwraca informacje tylko o bieżącym pojeździe, a nie konsystencję.
Informacje o typie pojazdu (48)
Format: xxxxxxff
Bity FF są:
Bit | Wartość | Znaczenie |
---|---|---|
0 | 1 | Na rynku dostępny jest typ pojazdu |
1 | 2 | Typ pojazdu jest w fazie testów |
2 | 4 | Ekskluzywna oferta testowa dla aktywnego gracza |
Wszystkie inne bity w ff są niezdefiniowane i muszą zostać zamaskowane.
Informacje o aktualnym typie szyny/typie drogi/typie tramwaju (4A)
Format: xxxxFFrr
Dolny bajt (rr) zawiera (przetłumaczony) typ szyny/typ drogi/typ tramwaju, na którym pojazd jedzie.
Jeśli typ szyny/typ drogi/typ tramwaju (railtype/roadtype/tramtype) nie ma wpisu w tabeli translacji typu szyna/droga/typ tramwaju GRF, wartość ta będzie wynosić 0xFF.
Jeśli nie ma tabeli translacji, zwracana jest surowa wartość.
Pociągi zwrócą typ szyny. 1.10 Pojazdy drogowe (z wyjątkiem tramwajów) zwracają typ drogi. Tramwaje zwrócą kolej.
Tylko dla pociągów następny bajt (FF) zawiera następujące flagi:
Bit | Wartośc | Znaczenie |
---|---|---|
0 | 1 | Pojazd jest/byłby zasilany na obecnym typie szyny (jest to niezależne od wagonów z napędem/bez zasilania lub cokolwiek ) |
Wszystkie pozostałe bity są niezdefiniowane.
Wszystkie pozostałe bajty i wynik dla pojazdów innych niż kolejowe są niezdefiniowane.
Pozycja w pojeździe przegubowym (4B)
Format: xxxxbbff
Zmienna | Wartość |
---|---|
ff | Pozycja pojazdu (części przegubowej) w pojeździe przegubowym, liczona od pierwszej części, zaczynając od 0. |
bb | Pozycja pojazdu (część przegubowa) w pojeździe przegubowym, liczona od ostatniej części, zaczynając od 0. |
xx | Zarezerwowane, 'nie korzystaj'. |
Całkowita liczba przegubowych części pojazdu wynosi ff + 1 + bb.
Dla pojazdów drogowych "ff" i "bb" są obecnie równe var 40, ponieważ nie ma jeszcze wagonów pojazdów drogowych.
Policz wystąpienie Vehicle.ID (60)
Format: xxxxxxnn
Parametr 60+x to szukany identyfikator pojazdu, a zwracana nn to liczba pojazdów w konsolach, które mają ten identyfikator. W przypadku użycia z VarAction2 typu 81, sprawdzany będzie tylko bieżący pojazd i nowsze, przy VarAction2 typu 82 wszystkie pojazdy w składzie zostaną policzone.
Zapytanie o zmienną n-tego pojazdu w łańcuchu (61)
Jest to specjalna zmienna, aby uzyskać zawartość innej zmiennej innego pojazdu w łańcuchu pojazdu. Jest obsługiwany tylko w pociągach i pojazdach drogowych. Nie jest obsługiwany podczas wywołania zwrotnego używanego do modyfikowania właściwości pojazdu w celu uniknięcia zależności kołowych, co obecnie ogranicza tę zmienną do wywołań zwrotnych 1D, 2D, 31 i 32 oraz poza zakresem oddzwaniania.
Rejestr tymczasowy 10F jest interpretowany jako liczba całkowita ze znakiem i określa przesunięcie w łańcuchu od bieżącego pojazdu. Wartości dodatnie są interpretowane jako w kierunku końca, wartości ujemne w kierunku do przodu. Jeśli przesunięcie znajduje się poza łańcuchem pojazdu, wartość wyniku wyniesie 0.
Parametr 60 + x określa zmienną dostępową, a rejestr tymczasowy 10E jest przekazywany jako nowy parametr 60 + x. Przekazanie 61 jako zmiennej jest niedozwolone. Obecnie tylko zmienne specyficzne dla pojazdu wymienione na tej stronie oraz zmienna globalna 25 i 1.3 5F są dostępne poprzez var 61.
Wynikowa wartość będzie miała wielkość dowolnej zmiennej, której dotyczy zapytanie.
Różnica krzywizny/położenia n-tego pojazdu w łańcuchu (62)
Format: zzyyxxFD
Ta zmienna jest obsługiwana tylko dla pociągów i pojazdów drogowych.
Parametr 60+x jest interpretowany jako liczba całkowita ze znakiem i określa przesunięcie w łańcuchu (chain) od bieżącego pojazdu. Wartości dodatnie są interpretowane jako w kierunku końca, wartości ujemne w kierunku do przodu. Jeśli przesunięcie znajduje się poza łańcuchem pojazdu, wartość wyniku wyniesie 0.
Najniższa 'skórka' ~nibble (D) zawiera różnicę kierunku między wybranym pojazdem a tym pojazdem, możliwe wartości są identyczne z wartościami variable 45 .
Następny 'skubek' ~nibble (F) ma następujące znaczenie:
Bit | Wartośc | Znaczenie |
---|---|---|
3 | 8 | Pojazd jest obecnie ukryty |
Trzy górne bajty zawierają podpisaną różnicę pozycji X/Y/Z między wybranym pojazdem a tym pojazdem.
Modflags (FE i FF)
Bity w FE dotyczą głównie ładowania stopniowego. Kilka przydatnych bitów dla autorów grf;
Bit | Wersja | Wartość bitu |
---|---|---|
1 | 1.5 2.5 | Pojazd wciąż rozładowuje i nie rozpoczął jeszcze załadunku nowego ładunku na obecnej stacji. |
5 | 0.6 2.5 | Pojazd jest napędzany (silnik lub wagon napędzany, przydatne głównie do tego ostatniego)) |
6 | 0.6 2.5 | Pojazd byłby napędzany (silnik lub wagon), gdyby istniał odpowiedni tor. (Np. Pociąg elektryczny w pociągu mieszanym na normalnym torze) |
8[1] | 0.6 2.5 | Ten bit jest odwracany za każdym razem, gdy pociąg zmienia kierunek |
10 | 0.6 2.5 | Pojazd został zbudowany podczas ekskluzywnej wersji zapoznawczej |
- ↑ Ten bit jest dokładny tylko dla pierwszego pojazdu w składzie.
zmienna FF jest tak naprawdę wysokim bajtem zmiennej FE, więc bit FE 8 jest taki sam jak bit FF 0.
Inne bity są zastrzeżone; większość z nich jest faktycznie wykorzystywana w stanach wewnętrznych TTDPatch.