- en
- pl
OpenTTD GitHub
Wkład w OpenTTD - wytyczne
OpenTTD Doxygen
Styl kodowania
Kompilowanie OpenTTD
Debugowanie
Dodanie ustawienia
Dodanie funkcji squirrel
Zrozumienie obsługi SaveGame
Wyznaczenie wersji gry zapisanej
Wykonanie wydania OpenTTD
Podręcznik stylu
Format plików lang
Użycie ciągów OpenTTD
Lista ciągów specjalnych
Użycie systemu okna
Kody kolorów istniejących w OpenTTD
Dodawanie pola tekstowego
Zrozumienie widget focus system
Przewodnik stylu GUI
OpenTTD TCP protokół
OpenTTD UDP protokół
Debugowanie desynchronizacji
Rozwój Portu Administratora Serwera
Okno konsoli
Komendy konsoli
Zmienne konsoli
Używanie skryptu konsoli
Dodanie funkcji/komend do konsoli
Dodanie zmiennych do konsoli
Historia rozwoju Konsoli
Grafika i podobne (NewGRFy)
Środowisko AI (NoAI)
Framework GS (NoGO)
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
- Dostęp do zmiennych C zdefiniowanych w OpenTTD
- Przechowuj informacje używane przez twój skrypt
Język skryptowy może obsługiwać następujące typy zmiennych:
- BOOLEAN [direct memory access]
- BYTE [direct memory access]
- UINT16 [direct memory access]
- INT16 [direct memory access]
- UINT32 [direct memory access]
- INT32 [direct memory access]
- POINTER [direct memory access]
- STRING [instance based]
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:
- skopiuj wartość zwracaną przez komendę
- przekaż wskaźnik zmiennej do Komendy [implemented in console rev 3]
- skopiuj wartość jednej zmiennej do drugiej [implemented in console rev 3]
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