Witamy w pierwszym samouczku TrainzScript. TrainzScript to język skryptowy, opracowany na potrzeby Auran Trainz. Niniejszy dokument ma na celu nauczenie jak stworzyć bardzo prosty scenariusz - nie ma nauczyć Was programowania, ani założeń programowania. TrainzScript może być używany w grze, w wersji 1 po instalacji 3 pakietu serwisowego i nowszych, celem stworzenia zawartości scenariusza. Jeżeli nie rozumiesz podstawowych pojęć związanych z programowaniem, możliwe, że będziesz musiał przeczytać dalsze samouczki, 212r1723c zanim będziesz w stanie tworzyć scenariusze do Trainz. W późniejszej wersji wydamy przyjazny dla użytkownika interfejs, dzięki któremu będzie można kompilować złożone skrypty.
Proszę poświęcić czas na wykonanie wszystkich kroków opisanych w niniejszym dokumencie. Samouczek przygotowano w systemie nieformalnym (nie napisano go stylem książkowym). Więcej informacji można znaleźć na forum Scenariuszy pod adresem: https://www.auran.com/trainz/forum/default.htm
TrainzScript to język skryptowy, używany do prowadzenia scenariuszy. Każdy z nich będzie miał jeden lub więcej plików TrainzScript (.gs), umieszczonych w swoim katalogu w folderze: World\Custom\Scenarios. Dodatkowe pliki TrainzScript można znaleźć w folderze \Scripts. Pliki skryptów umieszczone w tym folderze zawierają wszystkie obsługiwane funkcje, dzięki którym można sterować grą Trainz. Z czasem uda Ci się opanować większość funkcji zawartych w tych plikach. Kompilator TrainzScript (gsc.exe) znajduje się w folderze \Bin.
Przejdź do foldera Bin w DOS i uruchom kompilator z przełącznikiem -d, tak jak to opisano poniżej.
gsc -d > reference.txt
W ten sposób dokumentacja TrainzScript zostanie skopiowana do pliku reference.txt. Korzystaj z tego dokumentu jako podręcznika pomocy do języka TrainzScript.
Stwórzmy nasz pierwszy scenariusz. W ten sposób nauczysz się jak używać kompilatora TrainzScript i dowiesz się jak wygląda proces tworzenia prostego scenariusza, który pozwala tylko wczytać mapę.
Uruchom Trainz i korzystając z Geodety stwórz nową mapę. Umieść na niej niewielką pętlę i znak "START", gdzieś na torach. Upewnij się, że nazwałeś znacznik toru korzystając z WIELKICH LITER, bo TrainzScript rozróżnia wielkość liter w nazwach obiektów. Umieść gdzieś przy torze jakąś dźwignię, żeby kamera mogła się na czymś skupić i zapisz mapę pod nazwą "Tutorial1".
Zanim wyjdziesz z Geodety wybierz z głównego menu Trainz opcję "Eksportuj TSO scenariusza" i wpisz "Tutorial1".
Wyjdź z Trainz i przejdź do swojego foldera Trainz\World. Znajdź plik config.txt, który znajduje się w folderze World\Custom\Maps\Tutorial1.
Otwórz plik config.txt swojej mapy Tutorial1. Powinien on wyglądać mniej więcej tak.:
kuid <KUID:-2:2023211879>
kind map
username Tutorial1
workingscale
workingunits
water <KUID:-1:110015>
region
Zapisz KUID swojej mapy. W tym przypadku jest to .
Teraz przejdź do foldera World\Custom\Scenarios\Tutorial1\ i otwórz plik config.txt swojego scenariusza o nazwie Tutorial1. Powinien on wyglądać mniej więcej tak:
kind activity
username Tutorial1
scriptlibrary Tutorial1
scriptclass MyTutorial1
kuid <KUID:-2:2023211880>
kuid-table
description "Tutorial1"
Kilka uwag odnośnie jego zawartości. Tabela kuid to nazwa tabeli translacji KUID wykorzystywanej przez scenariusz. Wszystkie obiekty wczytywane przez scenariusz muszą być w niej wpisane. Scenariusz będzie korzystał z KUID opierając się na nazwach, w których wielkość liter ma znaczenie. Na przykład: kiedy skrypt będzie wczytywał mapę, będzie jej szukał opierając się na jej nazwie "Tutorial1", której będzie szukał w tabeli kuid, i znajdzie jako KUID . Odnośniki do pociągów, taboru itd. są wpisywane w taki sam sposób. Zauważysz także, że scenariusz posiada własny unikalny KUID. Tekst opisu jest wyświetlany w ekranie wyboru scenariusza.
Teraz zaczniemy edycję pliku TrainzScript. Otwórz plik Tutorial1.gs za pomocą swojego edytora. Plik ten został stworzony z szablonu template.gst (znajduje się on w folderze scripts\), kiedy eksportujesz TSO. Składnia poniższego skryptu została wyjaśniona w dokumentacji kompilatora, ale nie musisz jej czytać, bo jest dość oczywista. Plik wygląda tak.
include "trainz.gs"
// class MyTutorial1
// brief This is the scenario class. Modify this class with
// your own gameplay.
game class MyTutorial1 isclass Scenario
// load the map
if(!World.LoadMap(World.FindKUID("Tutorial1")))
return true;
// Save will be called by Trainz when the user presses Ctrl-S.
// return the save game string, such that load will be able to restor the save game
// from the last save check point.
string Save()
// TrainDerailed will be called by Trainz when a train derails
void TrainDerailed(int trainId)
// TrainCollided will be called by Trainz when a train collides
void TrainCollided(int trainId)
// TrainSpeedingFine ) is called by Trainz every second your trains speed exceeds the floating limit
void TrainSpeedingFine()
// TrainBadCouple ) is called by Trainz when vehicles couple greater than 8KPH.
void TrainBadCouple(int vehicleId)
// main thread
// brief main is executed automatically after Load() is called. edit
// main to contain your scenarios gameplay.
thread void main(void)
Ostatnim krokiem jest kompilacja scenariusza. Skopiuj plik makescript.bat z foldera Scripts\Docs do foldera World\Custom\Scenarios\Tutorial1. Uruchom ten plik i upewnij się, że nie ma żadnych komunikatów o błędach (pomoc znajdziesz na forum). Zauważ, że ten plik przetwarzania korzysta z kompilatora TrainzScript (gsc), aby stworzyć plik Tutorial1.gsl.
Teraz jesteś gotowy, żeby uruchomić swój pierwszy scenariusz. Powinien wczytać mapę Tutorial1 map. Zauważysz, że kamera będzie pokazywać dźwignię, którą umieściliśmy na mapie. Gdybyśmy tego nie zrobili, mapa nie byłaby widoczna, bo gra Trainz nie miałaby na czym skupić kamery.
Udało ci się stworzyć pierwszy scenariusz. Dalsze informacje odnośnie TrainzScript można znaleźć studiując scenariusze Highland Valley i pliki skryptów .gs. Odpowiedzi na pytania odnośnie skryptów można także znaleźć na forach.
Powodzenia, mamy nadzieję, że będziecie się dobrze bawić pisząc własne skrypty.
|