-
Notifications
You must be signed in to change notification settings - Fork 0
railTypeFunctions
extrazi edited this page Jun 4, 2021
·
8 revisions
EN PL |
Introduction |
W m4nfo typy szyn używają tylko dwóch typów funkcji:
- funkcje do definiowania układu sprite'ów na podstawie ich grafiki, współrzędnych i informacji 3D, zobacz funkcje dotyczące definicji układu 'sprites'
- funkcje, aby uzyskać informacje o właściwościach bieżącego kafla, takie jak typ terenu, wysokość, właściciel itp., a także funkcje dostępu do zmiennych związanych z grą, takich jak aktualna data, klimat itp. Zobacz funkcje dotyczące wydajności typu szyny
Format |
spriteset(<number>) |
Przykład 1 (defining rail type features):
def(6) spriteset(0) // level crossing open def(7) spriteset(1) // level crossing closed |
Funkcja | Opis |
---|---|
depotage(block>) | Wiek zajezdni w latach |
depotdate(<block>) | Data budowy zajezdni |
displaymode(<block>) | Ustaw tryb wyświetlania dla niestandardowych 'sprites' sygnałowych |
gatesclosed(<block>) | Stan przejazdu kolejowego: "0" = otwarte (lub nie przejazd), "1" = zamknięte. |
terrain(<block>) | Typ terenu: NORMAL (0), DESERT (1), RAINFOREST (2), SNOW (4, na lub powyżej linii śniegu). |
townzone(<block>) | Town zone przejazdu kolejowego lub zajezdni (od OTTD r23866) |
tunneltype(<block>) | Typ tunelu (0 = zwykły portal) (od OTTD r23952) |
signaltype(<block>), signalvariant(<block>), signalstate(<block>), signal(<block>) | Informacje o sprite'ach sygnału niestandardowego (od OTTD r24367) |
randomrel(0, <randombit> <List::ref()>) | Uzyskaj losowe odniesienie |
Przykład 1 (check a depot's age): |
def(1) depotage( |
Przykład 2 (check a depot's building date): |
def(2) depotdate( |
ref(7) if(<date(1-1-1970)) // built before 1970 |
ref(6) else
) |
Wartość | Znaczenie |
---|---|
DP_VIEWPORT | Sygnał jest rysowany w rzutni, czyli na mapie |
DP_SIGNALGUI | Sygnał jest pobierany w graficznym interfejsie użytkownika sygnału. Zwrócony zestaw 'sprites' musi nadal zawierać 8 'sprites', ale OpenTTD będzie używać tylko siódmego 'sprite', więc wszystkie inne sprites mogą być puste. |
Wartość | Etykieta | Znaczenie |
---|---|---|
4 | TZ_CENTRE | Strefa najbardziej wewnętrzna, światła uliczne |
3 | TZ_COMMERCIAL | Drzewa |
2 | TZ_RESIDENTIAL | Drogi utwardzone |
1 | TZ_PERIPHERY | Strefy zewnętrzne, zwykłe drogi |
0 | TZ_OUTSKIRTS |
Funkcja | |
---|---|
Wartość | Opis |
signaltype(<block>) | |
0 | Normal block signal |
1 | Entry pre-signal |
2 | Exit pre-signal |
3 | Combo pre-signal |
4 | Two-way path signal |
5 | One-way path signal |
signalvariant(<block>) | |
0 | Light signal |
1 | Semaphore signal |
signalstate(<block>) | |
0 | Red signal |
1 | Green signal |
Light signals | Semaphore signals | |||
---|---|---|---|---|
opis | etykieta | wartość | etykieta | wartość |
block | BLK_LIT_RED | 0 | BLK_SEM_RED | 64 |
BLK_LIT_GRN | 128 | BLK_SEM_GRN | 192 | |
entry | ENT_LIT_RED | 1 | ENT_SEM_RED | 65 |
ENT_LIT_GRN | 129 | ENT_SEM_GRN | 193 | |
exit | EXT_LIT_RED | 2 | EXT_SEM_RED | 66 |
EXT_LIT_GRN | 130 | EXT_SEM_GRN | 194 | |
combo | CMB_LIT_RED | 3 | CMB_SEM_RED | 67 |
CMB_LIT_GRN | 131 | CMB_SEM_GRN | 195 | |
PBS 2-way | PBS2_LIT_RED | 4 | PBS2_SEM_RED | 68 |
PBS2_LIT_GRN | 132 | PBS2_SEM_GRN | 196 | |
PBS 1-way | PBS1_LIT_RED | 5 | PBS1_SEM_RED | 69 |
PBS1_LIT_GRN | 133 | PBS1_SEM_GRN | 197 |
Przykłady |
Przykład 1 (handling level crossings): |
def(2) townzone( ref(4) if(TZ_PERIPHERY) ref(5) if(TZ_RESIDENTIAL) ref(6) if(TZ_COMMERCIAL) ref(7) if(TZ_CENTRE) ref(8) else // TZ_OUTSKIRTS ) Przykład 3 (custom signals): def(3) signalvariant( ref(5) if(1) // semaphores ref(6) else // light signals ) Przykład 4 (custom signals): def(4) signal( ref(0) if(PBS2_SEM_RED) // PBS german semaphores 2-way RED ref(2) if(PBS1_SEM_RED) // PBS german semaphores 1-way RED ref(1) if(PBS2_SEM_GRN) // PBS german semaphores 2-way GREEN ref(3) if(PBS2_SEM_GRN) // PBS german semaphores 1-way GREEN ref(0) else ) |
Opis |
Nie ma wyzwalaczy dla obiektów, dlatego zawsze należy zdefiniować 0 (lub CONSTRUCT).
Ustawienie randombit określa pierwszy bit do 'ponownego losowania', a także oparcie losowej grafiki. Całkowita liczba użytych bitów to 2-logarytm liczby użytych odniesień, np. W przypadku 16 odniesień używane są 4 bity.
'Kafle' kolejowe mają 2 pseudolosowe bity, w zależności od położenia kafla.
Liczba przywoływanych zestawów do wyboru musi być potęgą 2, czyli 2, 4, 8, 16 etc.
Przykład (old/modern level crossing transition in-game): |
def(5) year( ref(10) if(<_YEAR) // wszystko stare ref(12) if(_YEAR .. _YEAR+4) // 25% modern ref(13) if(_YEAR+5 .. _YEAR+9) // 50% modern ref(14) if(_YEAR+10 .. _YEAR+14) // 75% modern ref(11) else // wszystko nowoczesne ) |