AddFunctions
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 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