- 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 dodawać funkcje konsoli.
Contents |
pierwszy krok
pierwszą rzeczą, której potrzebujesz, jeśli chcesz coś zrobić w konsoli, jest
include "console.h"
daje to dostęp do wszystkich funkcji i struktur IConsole, z których będziesz musiał korzystać, jeśli zamierzasz dodawać komendy/funkcje/zmienne (Commands/Functions/Variables) do konsoli.
tworzenie komend funkcji c++
static _iconsole_var * MyLittleConsoleFunction(byte argc, byte* argv[], byte argt[]) { if (argc<2) return NULL; // i am a dummy :D return NULL; }
parametr | znaczenie |
argc | liczba parametrów przeciążonych przez parser do funkcji |
argv | parametry itself (samo) |
argt | typy parametrów (ICONSOLE_VAR_UNKNOWN, ICONSOLE_VAR_BYTE, ICONSOLE_VAR_STRING, ...) |
parametry przekazywane bezpośrednio z konsoli mają domyślnie typ ICONSOLE_VAR_UNKNOWN. ICONSOLE_VAR_UNKNOWN jest łańcuchem, ale może zawierać liczbę całkowitą lub coś w tym rodzaju. zależy to od sposobu, w jaki obsługuje to funkcja c++. jeśli ktoś użył czegoś takiego:
]printf "%i" *temp_uint_16 31291
pierwszy parametr jest przekazywany jako ICONSOLE_VAR_UNKNOWN, a drugi jest przekazywany jako ICONSOLE_VAR_UINT16. tylko zmienne, które zostały przekazane do komend , mogą być innego typu, jak ICONSOLE_VAR_UNKNOWN.
używanie preferencji zmiennych
jeśli ktoś przekazał zmienną przez jej odwołanie:
]dosomething @*temp_uint_16 did something with temp_uint_16
typ tego pierwszego parametru to ICONSOLE_VAR_REFERENCE. przykład jak napisać polecenie dosomething:
static _iconsole_var * IConsoleStdLibRandom(byte argc, byte* argv[], byte argt[]) { if (argt[1]==ICONSOLE_VAR_REFERENCE) { _iconsole_var * item; item = (_iconsole_var *) argv[1]; IConsolePrintF("did something with %s",item->name); } return NULL; }
zwracanie wartości w ramach funkcji
static _iconsole_var * IConsoleStdLibRandom(byte argc, byte* argv[], byte argt[]) { _iconsole_var * result; result = IConsoleVarAlloc(ICONSOLE_VAR_UINT16); IConsoleVarSetValue(result,rand()); return result; }
_iconsole_var * IConsoleVarAlloc(byte type);
służy do przydzielania pamięci dla struktury _iconsole_var.
void IConsoleVarSetValue(_iconsole_var * var, int value);
służy do łatwego ustawiania wartości struktury _iconsole_var
void IConsoleVarSetString(_iconsole_var * var, byte * string);
IConsoleVarSetString służy do przypisania ciągu do wartości
rejestracja komendy
gdzieś w kodzie powinieneś dodać taką linię ... należy to zrobić podczas inicjalizacji openttd: [przejrzyj pierwszy przykład]
IConsoleCmdRegister("mylittlefunction",MyLittleConsoleFunction);
rejestruje to polecenie jako polecenie konsoli o nazwie mylittlefunction. możesz także dodać jedną funkcję c++ z różnymi nazwami poleceń konsoli ... po prostu spróbuj ... jeśli wszystko poszło dobrze, powinieneś zobaczyć następujące informacje:
]list_cmds echo echof printf mylittlefunction