![]() |
|
INNE Podstawy kodowania NewGRF-ów - Wersja do druku +- OpenTTD #Polska - Polskie forum gry OpenTTD [ARCHIWUM] (https://forum.openttd.pl) +-- Dział: OpenTTD (https://forum.openttd.pl/forumdisplay.php?fid=1) +--- Dział: Dodatki (https://forum.openttd.pl/forumdisplay.php?fid=27) +--- Wątek: INNE Podstawy kodowania NewGRF-ów (/showthread.php?tid=788) |
Podstawy kodowania NewGRF-ów - bvader95 - 21-02-2011 Cześć wszystkim. Ktoś prosił o kurs pisania NewGRF. Ja troszkę tego liznąłem i chyba jestem gotów na przekazanie tej wiedzy innym osobom. Uwaga: tutorial traktuje o języku NML. Jeśli nie przeraża cię natłok liczb heksadecymalnych, spróbuj NFO. Kurs po angielsku na TTDPatch Wiki: http://wiki.ttdpatch.net/tiki-index.php?page=NewGraphicsSpecs 1. Instalacja Po pierwsze, musisz przygotować sobie środowisko do pracy. Niestety, to trochę skomplikowane. Musisz pobrać: - Interpreter języka Python: http://python.org UWAGA/WARNING/ACHTUNG! - Pobierz wersję 2.7, na wersji 3.3 NML nie zadziała. - Dodatkowe biblioteki do interpretera Python Image Library (PIL): http://www.pythonware.com/products/pil/ PLY: http://www.dabeaz.com/ply/ -No i oczywiście NML: http://bundles.openttdcoop.org/nml/nightlies/LATEST/ Wybierasz nml-r_tu.jest.jakaś.liczba.src.tar.gz i pobierasz. Każdy archiwizator to otworzy. Jeśli nie masz, pobierz 7-zip http://7-zip.org Jeśli już pobrałeś instalator Pythona, zainstaluj go, a PIL i PLY wrzuć do folderu C:/tu_zainstalowałem_pythona/lib Następnie kliknij prawym przyciskiem na ikonę Mój Komputer, wybierz Właściwości... ![]() W okienku "Właściwości systemu" wybieramy zakładkę "Zaawansowane" i przycisk "Zmienne środowiskowe". Jeśli w zmiennych systemowych znajduje się zmienna PATH, edytujemy ją, dodając po średniku ścieżkę do Pythona. Jeśli takiej zmiennej nie ma, tworzymy ją. Jeśli masz Linuksa, pobierz wszystko co trzeba używając wbudowanego menedżera pakietów i możesz od razu przystąpić do pracy. (dlatego lubię Pingwiny). 2. Od czegoś trzeba zacząć Uwaga - na tym etapie zakładam, że nie rozwaliłeś monitora, nie połamałeś klawiatury i nie wyrzuciłeś komputera przez okno próbując zainstalować wszystko co trzeba pod Windowsem. Odpal dowolny edytor tekstu. Napisz w nim takie coś: Kod: grf {A więc teraz rozłóżmy to na kawałki. grfid: - czterobajtowy identyfikator GRF-u. "Cztery bajty" tu oznacza "cztery znaki". Z reguły pierwsze dwa znaki są inicjałami bądź skrótem nicku twórcy (tu: BV - BarthVader), zaś trzeci i czwarty są dowolne. name: - nazwa GRF-u zapisana w postaci łańcucha znaków, wyświetlana w oknie wyboru GRFu - więcej niżej desc: - skrót od description - opis GRF-u, wyświetlany w oknie wyboru GRF-u version: - wersja GRF-u, w połączeniu z min_compatible_version informuje o wstecznej kompatybilności z poprzednimi wersjami GRF-u. Generalnie unika się stosowania tych parametrów. No to napisałeś swój pierwszy GRF, który na razie nie robi nic. Zapisz efekt pracy, z rozszerzeniem .pnml lub .nml Następna lekcja - budowanie GRF-u. RE: Podstawy kodowania NewGRF-ów - bvader95 - 22-02-2011 3. Stringi zwykłe i stringi dosłowne. Tłumaczenie Jeśli uważałeś na poprzedniej lekcji, zauważyłeś w kodzie dwa rodzaje stringów - łańcuchów znaków. Kod: grfid: "BV01";To jest przykład stringa dosłownego, ang. literal string. Jest on niezmienny bez względu na język. Raczej rzadko stosowany. Podawany w cudzysłowie. Kod: name: string(STR_GRF_NAME);Kod: ##grflangid 0x01Dalej znajdują się brzmienia stringów w danym języku, podane w taki sposób: Kod: PAX_WAGON_BDNU :Wagon pasażerski Bdnu---------------- @Mouse - Ja bym wolał, żeby można było się wypowiedzieć na temat kursu, żebym wiedział jak go pisać, żeby wszystkim odpowiadało. RE: Podstawy kodowania NewGRF-ów - Rysh - 22-02-2011 (21-02-2011, 23:29)mouse napisał(a): (22-02-2011, 17:58)bvader95 napisał(a): @Mouse - Ja bym wolał, żeby można było się wypowiedzieć na temat kursu, żebym wiedział jak go pisać, żeby wszystkim odpowiadało.Burdel się zrobił. Wątek podzielony. RE: Podstawy kodowania NewGRF-ów - bvader95 - 23-02-2011 Popełniłem błąd - napisałem zanim pomyślałem. Od nowa. Kod: grf {grfid: czteroznakowe ID, dzięki któremu GRF jest odróżniany od innych i nie można go wczytać dwa razy name: nazwa GRF-u desc: opis GRF-u, wyświetlany w Ustawieniach NewGRF version: wersja GRF-u, w postaci numerka min_compatible_version: najstarsza wersja GRF-u, z którą zgodna jest wersja obecna. Wszystkie nazwy (pojazdów, budynków, przedsiębiorstw), a także opis GRF-u nie są podane bezpośrednio w kodzie. W kodzie podaje się tylko odsyłacz do osobnego pliku językowego. Kod: name: string(STR_GRF_NAME);Przykład pliku językowego. Kod: ##grflangid 0x01Najwygodniej zrobić osobny podfolder na pliki językowe w tym samym folderze, w którym znajduje się projekt. Pierwsza linijka informuje kompilator, że to jest plik językowy. Dwie ostatnie cyfry mówią jaki to język. Lista możliwych dwóch ostatnich cyfr: http://hg.openttdcoop.org/nml/raw-file/tip/docs/language-files.html#language-files (na stronie jest tabelka po angielsku). UWAGA!
Kod: nmlc: The default language file ("./POLSKIE_DROGI/lang/english.lng") contains non-utf8 charactersGeneralnie to podsumowanie lekcji 2 i 3. Wypowiedzcie się w dyskusji, czy może być. Jeśli tak, dalsza część będzie utrzymana w tym stylu, i poproszę admina o wywalenie wszystkich części poza tą o instalacji. |