Static GRF Information
Wprowadzenie
Informacje statyczne GRF
Ta akcja pozwala określić dodatkowe informacje o GRF. Każda informacja jest uważana za opcjonalną i nieistotną, dlatego OpenTTD/TTDPatch zignoruje nieznane części i nie wyświetli żadnego błędu. Działanie to ma również umożliwić interfejsowanie nieoficjalnych rozszerzeń/poprawek dla OpenTTD.
Obecnie tej akcji można użyć do zdefiniowania
- 1.1 tłumaczenia nazwy i opisu GRF. (Te z działania 8)
- 1.1 paleta (domyślnie (=DOS), starsza wersja (=Windows)), której potrzebuje GRF, lub czy paleta nie ma znaczenia.
- 1.2 głębia kolorów (8bpp, 32bpp), jakiej potrzebuje GRF
- 1.1 liczba, format i cel parametrów GRF. (dozwolone wartości, nazwy, opisy, ...)
- 1.1 informacje o wersji i zgodność ze starszymi wersjami tego samego GRF.
- 1.2 adres strony internetowej, który można otworzyć w grze.
Sama akcja jest dostępna od OpenTTD r20250. TTDPatch ignoruje działanie od r2334, więc pominięcie nie jest potrzebne. Ta akcja jest dozwolona tylko dla GRF w wersji 7 lub wyższej.
Akcja jest przetwarzana podczas skanowania w poszukiwaniu GRF i ich opisów czynności 8. To skanowanie zatrzymuje się po napotkaniu akcji 8, dlatego akcja 14 musi pojawić się wcześniej w GRF.
Syntax
Dane są dostarczane za pomocą zagnieżdżonych porcji i wyglądają następująco:
<sprite-number> * <length> 14 <chunks ...> 00
Gdzie <fragmenty ...> (<chunks ...>) to jeden lub sekwencja
"C" <identifier> <chunks ...> 00
"B" <identifier> <length> <binary-data>
"T" <identifier> <language-id> <text> 00
Te trzy typy fragmentów definiują węzły gałęzi (kontenery) oraz liście binarne i tekstowe w strukturze informacji przypominającej drzewo. Fragment informacji jest identyfikowany przez ścieżkę w drzewie informacyjnym. Na przykład. węzeł liścia tekstowego w "INFO" -> "DESC" zapewnia przetłumaczalne opisy dla GRF. Nie ma znaczenia, ile akcji 14 pojawia się w GRF i jakie informacje są zdefiniowane w którym. Informacje z różnymi ścieżkami identyfikacyjnymi lub tymi samymi ścieżkami identyfikacyjnymi (ale np. Różnymi identyfikatorami języków) można ustawić w tej samej akcji 14 lub w wielu. Jeżeli informacje są przypisane do tej samej ścieżki identyfikatora wiele razy, to sumuje się odpowiednio. ostatni zestaw informacji wygrywa.
Fragmenty o nieznanych identyfikatorach są po prostu pomijane, w tym ich podsekcje. Następujące fragmenty są jednak przetwarzane.
Element | Rozmiar | Opis |
---|---|---|
<sprite-number> | dec | Sekwencyjny numer 'sprite' |
<length> | dec | Łączna liczba bajtów w akcji |
14 | B | Action 14 |
<chunks ...> | * | Dowolna liczba fragmentów podrzędnych (sub chunks). |
"C"/"B"/"T" | B | typ porcji (kontener/binarny/text) |
<identifier> | 4*B | Unikalna identyfikacja porcji (patrz poniżej) |
<length> | W | Liczba bajtów danych binarnych. |
<binary-data> | length*B | Binary data |
<language-id> | B | W których językach TTD jest używany tekst, patrz action4. (dozwolona tylko wersja GRF >= 7 kodów językowych) |
<text> | S | Dane text |
Opisy
Informacje niestandardowe dla nieoficjalnych rozszerzeń/poprawek ("CSTM" -> <extension-id> -> ...)
-1 * -1 14 "C" "CSTM" "C" <extension-id> ... whatever suits you ... 00 00 00
Ze względu na całkowicie opcjonalny charakter akcji 14 jest szczególnie przeznaczony do nieoficjalnych rozszerzeń/łatek. Jednak, aby uniknąć konfliktów, niestandardowe dodatki powinny znaleźć się w części "CSTM" . Każde rozszerzenie może zdefiniować swój własny podrozdział z własnym niestandardowym 4-bajtowym <extension-id> poniżej fragmentu "CSTM" . Format podrozdziałów poniżej fragmentu <extension-id> można dowolnie definiować.
Informacje tam można wykorzystać np. aby powiadomić rozszerzenie, o którym GRF wie o tym. Po kolei rozszerzenie może następnie włączyć niestandardowe funkcje GRF i powiadomić GRF o ich istnieniu, np. poprzez zmienną 8D. Wersje OpenTTD bez rozszerzenia po prostu pomijają fragment "CSTM" i zwracają zwykłą wartość w zmiennej 8D.
GRF name ("INFO" -> "NAME") and description ("INFO" -> "DESC")
1.1-1 * -1 14 "C" "INFO" "T" "NAME" <language-id> "Translatable GRF name" 00 "T" "DESC" <language-id> "Translatable GRF description" 00 00 00
Poniżej fragmentu najwyższego poziomu "INFO" można użyć fragmentów liści "NAME" i "DESC" , aby zdefiniować nazwę i opis dla dodatkowych języków. Informacje podane w działaniu 8 są używane w "other" językach (id 7F).
GRF website ("INFO" -> "URL_")
1.2-1 * -1 14 "C" "INFO" "T" "URL_" <language-id> "http://www.example.org" 00 00 00
Możesz użyć fragmentu "URL_" , aby podać adres URL tego GRF. Możesz przetłumaczyć to jak nazwa i opis, aby zapewnić zlokalizowaną stronę internetową.
GRF palette ("INFO" -> "PALS")
1.1-1 * -1 14 "C" "INFO" "B" "PALS" \w1 <palette> 00 00
Określa paletę, dla której przeznaczone są 'sprites' w GRF.
<palette> | Znaczenie |
---|---|
"D" | Default (DOS) palette |
"W" | Legacy (Windows) palette |
"A" | Dowolna paleta. (np. kiedy GRF nie zawiera żadnych 'spprites') |
GRF colour depth ("INFO" -> "BLTR")
1.2-1 * -1 14 "C" "INFO" "B" "BLTR" \w1 <blitter> 00 00
Określa preferowany blitter dla NewGRF. Jeśli nie zostanie podany, domyślnie będzie to blitter 8 pz.
To tylko wskazówka, OpenTTD może nadal wybrać inny blitter, jeśli to konieczne. Gwarantowane jest działanie tylko 8 ikonek bpp z dowolnym blitterem.
<blitter> | Znaczenie |
---|---|
"8" | 8 bpp blitter |
"3" | 32 bpp blitter |
GRF version ("INFO" -> "VRSN")
1.1-1 * -1 14 "C" "INFO" "B" "VRSN" \w4 \d<version> 00 00
Określa version of the GRF . Ta wersja jest następnie używana (przez OpenTTD) do wewnętrznego zamawiania GRF z tym samym GRFID. Ta kolejność określi, który GRF ładuje się jako "compatible" GRF, a który GRF ma zostać wyświetlony na liście GRF. Domyślnie GRF ma wersję 0.
Jeśli wszystkie GRF (z tym samym GRFID) mają wersję 0, wszystkie zostaną wyświetlone na liście GRF. Jeśli najwyższa wersja jest współdzielona przez wiele GRF, jeden jest losowo wybierany jako "compatible" GRF. Dlatego ważne jest, aby nie dopuszczać do wydania wielu GRF o tym samym numerze wersji.
Jeśli ustawisz wersję dla GRF, powinieneś również ustawić MINV 'minimal compatible version' ! W przeciwnym razie domyślnie przyjmie wartość VRSN, co spowoduje, że GRF będzie uważany za zgodny tylko z sobą (odpowiednio ta sama wersja).
Minimal compatible GRF version ("INFO" -> "MINV")
1.1-1 * -1 14 "C" "INFO" "B" "MINV" \w4 \d<version> 00 00
Określa minimalny version of GRFs z tym samym GRFID, z którym GRF jest nadal kompatybilny.
Musisz ustawić MINV po VRSN, a MINV musi być mniejszy lub równy VRSN.
Podczas ładowania gry, która używała starszej wersji GRF, która nie jest już zainstalowana, wybierana jest najnowsza zainstalowana wersja GRF, która jest nadal zgodna z wersją używaną wcześniej. Starsze GRF nigdy nie są uważane za kompatybilne z GRF z nowszymi wersjami.
Jeśli nie ustawisz MINV, ale ustawisz VRSN, wówczas GRF będzie uważany za zgodny tylko z GRF z tą samą wersją.
Jeśli ustawisz MINV na 0, GRF jest również uważany za zgodny ze starymi GRF bez żadnych informacji o wersji (VRSN).
GRF parameters
W tej sekcji opisano, jak określić informacje o parametrach GRF i jakie ustawienia są w nich przechowywane. Domyślnie GRF ma 128 ustawień, co jest ustawieniem dwordowym dla każdego z 128 parametrów GRF.
Number of settings ("INFO" -> "NPAR")
1.1-1 * -1 14 "C" "INFO" "B" "NPAR" \w1 <number-of-settings> 00 00
Określa liczbę ustawień zapewnianych przez GRF. Jest to niezależne od liczby dozwolonych parametrów GRF, ponieważ wiele ustawień może przejść do tego samego parametru GRF (np. Maski bitów ~ bitmasks ).
Setting name ("INFO" -> "PARA" -> <setting-number> -> "NAME") and description ("INFO" -> "PARA" -> <setting-number> -> "DESC")
1.1-1 * -1 14 "C" "INFO" "C" "PARA" "C" \d<setting-number> "T" "NAME" <language-id> "Name of setting" 00 "T" "DESC" <language-id> "Setting description" 00 00 00 00 00
Definiuje nazwę ustawienia.
Ustawienia są ponumerowane i zidentyfikowane za pomocą <numeru>. Prawidłowe wartości to od 0 do ("INFO" -> "NPAR") - 1 .
Setting to GRF parameter mapping ("INFO" -> "PARA" -> <setting-number> -> "MASK")
1.1-1 * -1 14 "C" "INFO" "C" "PARA" "C" \d<setting-number> "B" "MASK" \w<length> \b <grf-parameter> [ \b <first-bit> [ \b <num-bit> ] ] 00 00 00 00
Określa, w którym parametrze GRF ma zostać zapisane ustawienie.
<length> | Dozwolony jest 'chunk' o długości od 1 do 3. |
<grf-parameter> | Parametr GRF (od 0 do 127) do zapisania ustawienia. Wartość domyślna jest taka sama, jak <setting-number>. |
<first-bit> | Pierwszy bit parametru GRF używany do ustawienia. Wartość domyślna to "0". |
<num-bit> | Liczba bitów używanych do ustawienia parametru GRF. Wartość domyślna to "32". |
Jeśli nie określisz <first-bit> i <num-bit> , ustawienie domyślnie wykorzystuje cały parametr GRF. Jeśli w ogóle nie określisz fragmentu "MASK" , ustawienie użyje parametru GRF o tym samym numerze, co <setting-number> .
Jeśli więc nie musisz przechowywać wielu ustawień w jednym parametrze, nie potrzebujesz fragmentów "MASK" .
Uwaga: Nie można zapisać ustawienia w / przy użyciu wielu parametrów GRF.
Setting type ("INFO" -> "PARA" -> <setting-number> -> "TYPE")
1.1-1 * -1 14 "C" "INFO" "C" "PARA" "C" \d<setting-number> "B" "TYPE" \w1 <setting-type> 00 00 00 00
Określa typ ustawienia.
<setting-type> | Znaczenie |
---|---|
0 | Liczba całkowita (bez znaku) lub wyliczenie. 'GUI' wyświetla przyciski "<" i ">", aby zmienić ustawienie odpowiednio. umożliwia wprowadzenie wartości z okna zapytania. |
1 | Boolean. GUI wyświetla przycisk przełączania służący do włączania lub wyłączania ustawienia. |
Wartość defaut wynosi "0".
Allowed value range ("INFO" -> "PARA" -> <setting-number> -> "LIMI")
1.1-1 * -1 14 "C" "INFO" "C" "PARA" "C" \d<setting-number> "B" "LIMI" \w8 \d<minimum-value> \d<maximum-value> 00 00 00 00
Ustawia minimalną i maksymalną dozwoloną wartość dla ustawień liczb całkowitych / wyliczenia.
Domyślne wartości to "0" lub (resp.) "2^32 - 1".
Enumeration values ("INFO" -> "PARA" -> <setting-number> -> "VALU")
1.1-1 * -1 14 "C" "INFO" "C" "PARA" "C" \d<setting-number> "C" "VALU" "T" \d<setting-value> <language-id> "Enumeration value" 00 ... 00 00 00 00 00
Ta porcja pozwala określić tekst do wyświetlenia zamiast surowej wartości dla liczby całkowitej / wyliczenia. Możesz także określić teksty tylko dla niektórych prawidłowych wartości. Więc jeśli ustawienie np. dopuszcza wartości od 0 do 42, możesz poinstruować GUI, aby pokazywał „brak” zamiast "0" .
1.3 Jeśli określisz teksty dla wszystkich dozwolonych wartości (zgodnie z "LIMI" ), zamiast przycisków [<][>] zostanie wyświetlone menu rozwijane.
Domyślna wartość ("INFO" -> "PARA" -> <setting-number> -> "DFLT")
1.1-1 * -1 14 "C" "INFO" "C" "PARA" "C" \d<setting-number> "B" "DFLT" \w4 \d<value> 00 00 00 00
Ustawia wartość domyślną dla ustawienia.
Jeśli ustawisz "DFLT" dla dowolnego ustawienia, zmieni się zachowanie funkcji "reset" . Zwykle rozbroiłoby wszystkie parametry. Jeśli masz dowolne pole "DFLT" w swoim NewGRF, wówczas wszystkie parametry są rozbrojone, po czym wszystkie ustawienia są ustawiane na wartości domyślne lub na 0, jeśli nie podano wartości domyślnej. Oznacza to, że użycie ActionD z opcode + 80 nie działa dla żadnego parametru zmienianego przez użytkownika, gdy używasz pola "DFLT" .
Ta funkcja "reset" ma miejsce podczas dodawania NewGRF do konfiguracji lub gdy użytkownik naciska przycisk resetowania w oknie parametrów.