Contents |
Wprowadzenie
Zdefiniuj nowe style nazw miejscowości
Tej akcji można użyć do zdefiniowania nowych stylów nazw miejscowości dla losowych gier i losowych miast umieszczonych w edytorze scenariuszy.
Syntax
Dane wyglądają następująco:
<Sprite-number> * <Length> 0F <ID> <stylenames> <num-parts> <parts>...
Element | Rozmiar | Opis |
---|---|---|
<Sprite-number> | dec | Sekwencyjny numer 'sprite' |
<length> | dec | Łączna liczba bajtów użytych w tej akcji. |
<ID> | B | ID tej definicji w dolnych 7 bitach. Jeśli bit 7 jest ustawiony, jest to ostateczna definicja (zostanie wyświetlona w oknie Opcje), jeśli jest jasna, jest to definicja pośrednia, której można użyć do stworzenia bardziej złożonych łańcuchów (chains) decyzyjnych, patrz poniżej. Definicje końcowe i pośrednie mają takie same 128 ID, więc 01h i 81h definiują ten sam ID dla różnych zastosowań, a nie dwa oddzielne ID. |
<style-names> | V | Jest to obecne tylko w definicjach końcowych, patrz format poniżej |
<num-parts> | B | Z ilu części składa się ta nazwa. |
<parts> | V | Dane dotyczące różnych części, patrz poniżej |
Style names
Ten element jest obecny tylko wtedy, gdy bit 7 jest ustawiony w identyfikatorze. Jego zawartość jest w formacie:
[<langs> <name>]... 00
Element | Rozmiar | Znaczenie |
---|---|---|
langs | B | Definicja 'ID' języka, patrz poniżej |
name | S | Nazwa stylu 'zakończona-zerem', która ma być wyświetlana w oknie Opcje. |
Może istnieć dowolna liczba nazw stylów, dopóki dosłowne "00" nie zakończy definicji nazwy stylu. Jeśli nie znaleziono odpowiedniej nazwy, w oknie Opcje pojawi się "(unnamed style)" .
Wybór języka działa tak samo jak action 4 language ID , włączając różnicę dla wersji 7 i wyższych GRF, jednak bit 7 jest ignorowany. Oznacza to, że istnieje dwuznaczność, czy wartość „00” jest terminatorem listy lub identyfikatorem języka amerykańskiego. Aby rozwiązać ten problem, pierwsza definicja nazwy stylu nigdy nie jest terminatorem listy (poczynając od TTDPatch 2.5 beta 4). Oznacza to, że definicja nazwy języka amerykańskiego musi być pierwsza na liście. Alternatywnie, ponieważ bit 7 jest ignorowany, warto również użyć wartości „80” dla identyfikatora języka amerykańskiego, ale umieszczenie go na pierwszym miejscu na liście jest preferowanym sposobem jego zdefiniowania.
Części
Następujące pola są powtarzane dla każdej części (liczba części razy):
<textcount> <firstbit> <bitcount> [ <probability> <part/ID> ]...
Element | Rozmiar | Znaczenie |
---|---|---|
textcount | B | Liczba możliwych wartości dla tej części |
firstbit | B | Numer najniższego bitu, który jest brany pod uwagę przy określaniu wartości części |
bitcount | B | Ile bitów jest używanych do określenia wartości tej części |
Każde miasto ma 32 losowe bity do losowego nazywania. Możesz użyć pola <firstbit> , aby podejmować decyzje dla każdej części liniowo niezależne lub przynajmniej tak niezależne, jak to możliwe.
Minimalna liczba dla pola <bitcount> powinna być najniższą potęgą 2, która jest większa niż suma wszystkich prawdopodobieństw (np. 2, jeśli suma wynosi <=4, 3, jeśli jest <=8, 4, jeśli <=16 itd. on), ale zezwolenie na więcej bitów może sprawić, że rozdział decyzji będzie płynniejszy.
Następujące pola są powtarzane dla każdego tekstu (razy licznik tekstu) w każdej części:
Element | Rozmiar | Znaczenie |
---|---|---|
probability | B | Względne prawdopodobieństwo pojawienia się następującej nazwy na 7 ostatnich bitach. Bit 7 decyduje o znaczeniu następnego pola. |
part | S | Jeśli bit 7 prawdopodobieństwa jest czysty, następujące pole jest łańcuchem 'zakończonym znakiem null', zawierającym samą część nazwy. Może to być pusty ciąg (zwykły bajt zerowy), aby uniknąć generowania tej części. (Może to być przydatne w przypadku części opcjonalnej: daj wysokie prawdopodobieństwo pojawienia się pustej części i niskie prawdopodobieństwo wielu 'niepustych' części, aby skutecznie zmniejszyć szansę, że część w ogóle się pojawi) |
ID | B | Jeśli ustawiony jest bit 7 prawdopodobieństwa, to następny bajt jest 'ID' akcji pośredniej F. Generowana jest losowa nazwa zdefiniowana przez dany ID, a następnie wstawiana do bieżącej nazwy jako część nazwy. Podanie 'ID', który nie został jeszcze zdefiniowany, powoduje błąd, a tym samym wyłączenie wszystkich definicji nazw miast w pliku. |
Notes
Te style nazw miast są wyjątkowe, ponieważ muszą być dostępne również na ekranie tytułowym, gdzie pliki graficzne nie są jeszcze aktywowane. Oznacza to, że są przetwarzane tylko na etapie inicjalizacji i mogą zostać pominięte tylko przez akcję 9, ale spowoduje to, że nie będą działać przez resztę gry. Jedynym sposobem na wyłączenie nowego stylu nazwy miasta po załadowaniu jest wyłączenie całego pliku GRF, w którym się on znajduje (za pomocą okna "New GRF status" lub umieszczając wykrzyknik obok nazwy pliku w newgrf(w).txt ).
Nazwa miasta wygenerowana w ten sposób musi spełniać pewne wymagania, aby mogła zostać zaakceptowana przez TTD: nie może być pusta (więc nie musisz się martwić, nawet jeśli Twój łańcuch może wygenerować pusty ciąg znaków), nie może być nazwą, która już jest podana miastu (aby uniknąć zduplikowanych nazw miejscowości), nie może być dłuższa niż 31 znaków, a wyświetlana postać nie może być szersza niż 130 pikseli. Jeśli wygenerowana nazwa nie spełnia wszystkich tych wymagań, TTD próbuje ponownie z inną losową wartością. Z tego powodu styl nazwy miasta musi być w stanie wygenerować co najmniej 70 różnych akceptowalnych kombinacji, ponieważ jest to maksymalna możliwa liczba miast na mapie, a TTD może zostać zakleszczone, jeśli nie będzie w stanie znaleźć różnych nazw dla każdego miasta w mapa.
Menu rozwijane stylu nazwy miasta nie obsługuje więcej niż 19 pozycji, a ponieważ sześć pozycji jest już zarezerwowanych dla starych stylów, pozostało tylko 13 dla nowych stylów. Jeśli dostępnych jest więcej niż 13 ostatecznych definicji stylów, tylko pierwsze 13 zostanie wyświetlonych w menu rozwijanym, a zatem będzie można je wybrać. Pozostałe definicje będą nadal dostępne (np. Pojawią się w grach, które się z nimi rozpoczęły), ale nie można ich wybrać w interfejsie użytkownika.
Jeśli twój GRF nie jest dostępny, gdy jego nazwa stylu jest używana w grze zapisanej, styl nazwy miasta powraca do Niemieckiego, ale miasta otrzymują zarówno Angielską, jak i Niemiecką nazwę; pojawiają się w niewłaściwej kolejności na liście miast i mogą pojawiać się zduplikowane nazwy miast. Jednak nie następuje utrata danych, więc poprawne nazwy zostaną przywrócone, gdy tylko definicja będzie ponownie dostępna.
Przykład
2 * 52 0F 80 7F "Mars" 00 00 02
02 00 02 03 "Alpha" 00 01 "Beta" 00 03 02 04 01 " Andromedæ" 00 01 " Carinæ" 00 81 01
Bajt(y) | Znaczenie |
---|---|
0F | Action F |
80 | <ID> Finalna definicja; pokaż na liście nazw miast. |
7F | <lang-id>: Poniżej podano nazwy wszystkich języków |
"Mars" 00 | Nazwa stylu |
00 | Koniec nazw stylów |
02 | <num-parts>: Następują dwa pola <parts>: Pierwsze 'pole' <parts>: |
02 | <textcount>: dwie opcje w tej części. |
00 | <firstbit>: start od bitu 0 i |
02 | <bitcount>: użyj dwóch bitów (suma prawdopodobieństw to 04; minimalna liczba bitów to 2) |
03 | <probability> (prawdopodobieństwo wynosi 3/4) |
"Alpha" 00 | <part>: Pierwsza opcja dla pierwszej części |
01 "Beta" 00 | <probability>/<part>: Druga opcja dla pierwszej części, prawdopodobieństwo 1/4 Drugie pole <parts>: |
03 | <textcount>: trzy opcje dla tej części: |
02 | <firstbit>: start od bitu 2 i |
04 | <bitcount>: użyj czterech bitów (suma prawdopodobieństw to 3; minimalna liczba bitów to 2) |
01 " Andromedæ" 00 | <probability>/<part>: Pierwsza opcja dla drugiej części, prawdopodobieństwo ~1/3 |
01 " Carinæ" 00 | <probability>/<part>: Druga opcja dla drugiej części, prawdopodobieństwo ~1/3 |
81 01 | <probability>/<ID>: Trzecia opcja, przejdź do akcji F z ID 01, prawdopodobieństwo ~1/3 |
Notes:
- ID 01 (a każda akcja F powiązana z ID 01 powinna mieć <pierwsze> (<firstbit>) 06 lub wyższe, ponieważ bity 00..05 były używane przez ID 00, a jeśli zostaną użyte ponownie, decyzja będzie związana z decyzją w ID 00.
- O ile ID 01 nie wygeneruje co najmniej 33 (dek) różnych ciągów znaków, nie zapewni to wystarczającej liczby nazw miejscowości.
- Drugi <parts> wykorzystuje cztery bity; prawdopodobieństwa dla każdego <part> wynoszą 5/16, 5/16 i 6/16, które są rozsądnie zbliżone do 1/3 i znacznie lepsze niż 1/4, 1/4, 1/2, które spowodowałyby gdyby zastosowano tylko dwa bity. Nie ma wiarygodnego określenia, które <part> uzyska dodatkowe prawdopodobieństwo; jeśli chcesz wiedzieć na pewno, które będą miały dodatkowe prawdopodobieństwo, zakoduj działanie F, aby niektóre <part> miały wyższe lub niższe prawdopodobieństwo niż inne.
- <probability>/<ID> para 81 01 może również połączyć się (chain) z działaniem F o ID 81, ale prawdopodobnie nie jest to pożądany wynik.