Scripting
Dokumentacja programistyczna OpenTTD
Linki zewnętrzne

OpenTTD GitHub
Wkład w OpenTTD - wytyczne
OpenTTD Doxygen

Informacje Ogólne

Styl kodowania
Kompilowanie OpenTTD
Debugowanie
Dodanie ustawienia
Dodanie funkcji squirrel
Zrozumienie obsługi SaveGame
Wyznaczenie wersji gry zapisanej
Wykonanie wydania OpenTTD

Języki i Ciągi znaków

Podręcznik stylu
Format plików lang
Użycie ciągów OpenTTD
Lista ciągów specjalnych

System Okna

Użycie systemu okna
Kody kolorów istniejących w OpenTTD
Dodawanie pola tekstowego
Zrozumienie widget focus system
Przewodnik stylu GUI

Tryb wieloosobowy

OpenTTD TCP protokół
OpenTTD UDP protokół
Debugowanie desynchronizacji
Rozwój Portu Administratora Serwera

Konsola (w grze)

Okno konsoli
Komendy konsoli
Zmienne konsoli
Używanie skryptu konsoli
Dodanie funkcji/komend do konsoli
Dodanie zmiennych do konsoli
Historia rozwoju Konsoli

Interfejsy API (ramy modowania)

Grafika i podobne (NewGRFy)
Środowisko AI (NoAI)
Framework GS (NoGO)

Inne odniesienia

Tablica map (siatka pozioma)
Pojazdy
Wyszukiwanie trasy
Przyspieszenie pociągu

W tym dokumencie wyjaśniono, jak korzystać ze skryptów konsoli.

Jeśli chcesz przetestować poniższe skrypty, musisz je skompilować DEBUG=1.

Contents

Komendy

Komendy [also called Functions] są używane, aby umożliwić scripterowi dostęp do określonego aspektu kodu źródłowego OpenTTD. Obecnie zaimplementowano tylko niektóre podstawowe komendy. Dlatego obecnie mamy tylko pewien dostęp do funkcji OpenTTD.

]screenshot

Ta komenda powoduje, że OpenTTD robi zrzut ekranu bieżącego ekranu. Jest wykonywany natychmiast i nie zwraca wyniku.

]random
result = 41

Ta komenda powoduje, że system generuje liczbę losową. Jest wykonywany natychmiast i zwraca wynik. Jeśli wynik nie zostanie przypisany do zmiennej, zostanie zrzucony do konsoli. Jeśli chcesz dodać komendę do konsoli, przeczytaj HOWTO - Dodanie Funkcji/Komendy do Konsoli

Zmienne

Zmienne są używane do

Język skryptowy może obsługiwać następujące typy zmiennych:

Bezpośredni dostęp do pamięci? Na podstawie instancji? Uhm?
Bezpośredni dostęp do pamięci oznacza, że ​​pozycja pamięci zmiennej jest stała. Daje to możliwość zmiany zmiennych będących własnością OpenTTD bezpośrednio z konsoli. Na podstawie instancji oznacza, że ​​jeśli zmienna zostanie zmieniona z konsoli, otrzyma nowy adres pamięci, który wskazuje na nowo przydzielone miejsce w pamięci. Stare miejsce w pamięci jest zwalniane tylko wtedy, gdy zmienna jest używana tylko przez konsolę. Więc jeśli dodasz zmienną bajtową * OpenTTD do konsoli i spróbujesz zmienić jej zawartość .. nie zmienisz ciągu używanego przez OpenTTD, ale zmienisz zmienną w konsoli.

Poniżej nazwy zmiennych są oznaczone symbolem "*"

]*temp_uint16
*temp_uint16 = 0
]*temp_uint16 ++
*temp_uint16 = 1
]*temp_uint16 --
*temp_uint16 = 0
]*temp_uint16 = 32
*temp_uint16 = 32

Większość typów zmiennych ma możliwość wykonywania różnych działań:

funkcja opis
 ++ zwiększa wartość
 -- zmniejsza wartość
 = przypisuje inną wartość [nie próbuj tego używać do kopiowania wartości jednej zmiennej do innej zmiennej]

Jeśli chcesz wiedzieć, jak dodawać zmienne do konsoli, przeczytaj HOWTO - Dodawanie Zmiennych do Konsoli

Funkcje [Commands with return values]

W niektórych przypadkach konieczne jest:

skopiowanie wartości zwracanej przez komendę

]*temp_uint16 << random
*temp_uint16 = 41

Ale:

]*temp_uint32 << random
ERROR: variable type missmatch

Ten błąd wystąpi, jeśli zwrócona wartość polecenia nie będzie tego samego typu co zmienna. Dobrze zakodowana funkcja [random nie jest na to przykładem :D] może zrobić sztuczkę, aby wykryć, jaki typ zmiennej ma zwrócić. [token shifting] Czytaj HOWTO - Dodanie Funkcji/Komendy do Konsoli

przekazanie wskaźnika zmiennej do komendy

]varinfo @*temp_uint16

skopiowanie wartość jednej zmiennej do drugiej

*temp_uint16 << *temp_uint16_2