ПредишенСледващото

Допълнителни файлове към статията
Lesson1.cdp (18.5 KB) - опаковат със сценария на обучение.
Lesson1.gs (5 KB) - изходния код на скрипта
SP3S1DCC.gs (27.7 KB) - изходния код на скрипта Highland Valley (DCC)
WriteScript1.rar (90.6 KB) - архив с текста на статията, за да бъдат отпечатани във формат MS Word 97

Как се пише сценарии за Trainz
част 1

Как се пише сценарии за Trainz

Това е първата версия на статията, е предназначен предимно за тези, които вече са запознати с програмирането, тъй като няма да обяснявам основните понятия. Това означава, че се предполага, че вече имате представа за това какъв вид данни, процедури, функции и обектно-ориентираното програмиране. Всички, които за първи път чух за това, че трябва да започне да изпраща до книгите на езици за програмиране, където са обяснени тези условия.

Скриптове за Trainz написани на вътрешен език, която в много отношения е подобен на програмни езици като C ++ или Java, въпреки че това е вашата собствена компания Auran език. Източникът е обичайната ASCII скрипт файл е текстов файл, който по подразбиране е дадено .gs на разширението

От този файл посредством програма gsc.exe-компилатор изпълним файл с .gsc разширение, което вече се извършва в околната среда Trainz. Доколкото можах да разбера, в обичая Trainz вграден многонишковите преводач. Многонишковата означава, че можете да стартирате множество паралелни процеси, за да се извършва самостоятелно. Например, можете да напишете за всеки влак в скриптовете си отделна нишка, която ще контролира изцяло поведението си, а след това всички тези потоци се движат, за да изпълни, и всяка от тях ще се извършва самостоятелно. По-точно, почти независимо, както и в резби на Trainz, както разбрах, тя се симулира. Това означава, че ако в една от нишките започват да се извършват някои дълга процедура, без да чака покана съчетания събитие, като например създаването на композиции, всички процеси, включително основната игра е спряно преди приключването на тази процедура.

Бих искал също така да се отбележи, че в резултат на изходния файл не съдържа .gsc команден процесор, и вътрешен байткод преводач Trainz.

Също така в тази директория е makescript.bat файл, който Auran компанията препоръчва да копирате в директорията, където ще напише сценария и изпълнява с помощта на компилация. Този файл съдържа следната команда OS командния процесор:

за %% а в (* .gs) се% GSC% %% на -i% включват%

Предполага се, че скрипта ви е скрипт в каталог свят \ обичай \ сценарии \<имя сценария>\

С други думи, се определят две променливи, в която за първи път се върнем към източник директория на играта, а след това в първия случай, отидете на компилатора на файла gsc.exe, който е в директорията на бин, а във втория предписано пътя към директорията на папката скриптове, което също се намира в директорията на играта къде са заглавните файлове за всички вътрешни обекти на играта Trainz и на които ние ще се отнасят до когато пишете ваши собствени скриптове.

Низ, който започва с за, повтаря призива на компилатор за всички файлове, които са изброени в командния ред, след като най-makescript.bat

По принцип е възможно да използвате този файл, да го копирате в папка с скрипт си сценарий, но можете да напишете свой собствен, ако някой иска.

Ако се обадите gsc.exe програма без параметри, вие ще получите следния текст на екрана:

Auran GameScript Compiler V1.01

gsc.exe връща номера на съставяне на грешки

gsc.exe

където

<-d> печат документация, ф може да искате да го прибирайте на текстов документ =)

<-bfilename> зареже инфо натрупване (съставяне на регистър) да подадат

<-ppathname> изходен път

<-ofilename> изход библиотека име на файла

входен източник файл

<-ipathname> допълнително да включва път

която предоставя изчерпателно описание на синтаксиса на командния ред и клавишите, които можете да зададете на програмата. В момента ние сме най-заинтересовани отбор -d, която ви позволява да получите документация на езика Auran GameScript програмиране.

Трябва само да въведете в командния ред:

Gsc.exe -d> gsc.txt

Натиснете влиза, и ще получите в gsc.txt файл пълно и подробно описание на синтаксиса. Желателно е да се печата и за първи път, докато свикнете с езика, имайте под ръка. Въпреки това, както може да се очаква, това описание е отново на английски. )

Кратко описание на синтаксиса език Auran GameScript

Запазените думите на езика, са описани подробно в gsc.txt, аз няма да се повтори, всичко е ясно.

Синтаксисът на основни оператори, включително условията на оператори, цикли, подбор се копира на езика C, включително скоби, които се изпълняват кодови блокове. Това е, което не мога да разбера на описанието във файла gsc.txt вземе книга за C или C ++ език и разбиране. Но веднъж предупреждавам, че трябва да продължава да се фокусира предимно върху gsc.txt файл, тъй като има някои разлики.

Документи за самоличност са определени като стандарт, както и в много други езици за програмиране. Всеки идентификатор трябва да започва с буква от латинската азбука (A..Za..z_) или долна черта, а след това същото може да бъде букви или цифри. Само искам да отбележа, че големи и малки букви се счита за различно! Това означава, че компилаторът буквите е от значение, за разлика от много други програмни езици.

Типовете данни, които се поддържат от езика

Void # 9 - празен тип данни, която се използва само, когато се описват функциите,

Int # 9-32 битово число

Float # 9-32 битово число с плаваща запетая

Булева # 9-32 малко Булева, 0 - фалшив или не 0 - вярно (обикновено като в C)

String # 9 - текстов низ

Обект # 9 - обект на една от обявените класове в играта, в същото време, когато ние декларираме променлива, пишете, разбира се, името на класа, а не на обекта, тъй като обектът е базов клас, от които се генерират всички останали

Int [] # 9 - число масив

поплавък [] # 9 - набор от числа с плаваща запетая

BOOL [] # 9 - масив от логически променливи

низ [] # 9 - множество линии

възражение [] # 9 - масив от обекти

Както можете да видите, малък набор от типове данни, но в действителност съвсем достатъчни за написването на най-сложните скриптове. В същото време, за разлика от универсалния език за програмиране, не можем да декларираме нови основни типове данни в Auran GameScropt, включително структура или обединение, но може да обяви нови класове, което на практика е достатъчно.

Всички големи оператори на език, който може да се използват в изрази, вижте точка 2.6 gsc.txt файл. Те до голяма степен повтаря оператори C, език и някои важни различия, казвам малко по-късно, когато обсъждаме примери.

Искам да се спра малко по модела на обектно-ориентираното програмиране, което Auran реализира в своя собствен език.

На първо място, всички класове обявени вътре функции са виртуални. В същото време, ако декларират в зависимост потомък клас със същото име, винаги е автоматично включва функцията в клас-прародител. Не е нужно да правите специални инструкции. Ако имате нужда от независима функция, просто го пиша с ново име.

език също така поддържа множествено наследяване, когато като родител за новия клас няколко класа родители. В този случай, новата класа ще се предлага във всички области и функции, които са били всички предци заедно (произведени съюз).

Е, в тази уводна част покритие и преминете към насочи развитието на сценарии.

Необходими файлове и предварително третиране

Bogeys # 9; # 9 - талиги за подвижен състав

Двигатели # 9, # 9 - Описание на параметрите на двигателя за локомотиви, включително тяга

Enginesound # 9 - звукът на двигателите на локомотивите в зависимост от текущото власт

Приземен # 9; # 9 - повърхностната структура

Hornsound # 9 - сигнал звучи локомотиви

Html # 9, # 9 - страница с HTML, макар и в по-олекотена версия за вътрешна мини-браузър. С негова помощ се създават сложни диалози, което позволява да се получат данни от страна на потребителя.

Панталони # 9; # 9 - пантографи (текущата колектор) за електрически локомотиви

Продукти # 9; # 9; - продукти за нови промишлени съоръжения. Какво тогава ще се извърши. Въпреки това, има много трябва да направите е да се работи, включително и производството на самите и получаващи продукти, както и автомобили, които могат да носят предмети.

Профилите # 9; # 9 - т.нар профила на играта - позицията на влакове по картата. В допълнение, всеки профил в config.txt файл ще се отнасят до някои от наличните карти в Trainz.

Сценарии на # 9; # 9 - добре, това е директорията, която искаме. ) Има сценарии.

Природа # 9; # 9; - различни единични обекти, които са поставени на картата.

Каналите # 9, # 9 - Различни шлици, че можем да се поставят върху картата. Т.е. пътища, мостове, огради, електропроводи и т.н. с изключение на тези, които съдържат жп пътя

Track на # 9; # 9 - но това е самата железопътни пътища и всичко, което тя съдържа жп коловоз.

Трасето # 9; # 9; - обекти, които са разположени по протежение на жп пътя, стрелка тип, светофари, знаци и т.н.

Влаковете # 9; # 9; - подвижен състав, т.е. локомотиви и вагони

От всички тези теми, ние сме заинтересовани главно Сценарии и Карти, ако скриптът е направено за собствените си карти.

Отиди в света на директория \ обичай \ сценарии (ако не, да създаде) и вътре в нея създадете нова директория, която тя даде името, с което искаме след нашия скрипт се вижда в Trainz. Например, Lesson1. Първото нещо, което трябва да се създаде този файл config.txt, който е създаден за всеки обект Trainz.

f7_sfred - тази линия и три-долу, се използва за описание на данни и KUID локомотив и вагони. Те могат също така да бъдат получени чрез TrainzObjectz. За вградените обекти, те могат да изглеждат в приложението в края на контактната група на ЦДЦК. I използва следният метод. Първо залязваше всички локомотиви и пасищата на картата и я съхранява на Trainz и се затича TrainzObjectz. В TrainzObjectz, когато бъде призован от описанието на картата (в раздела Карти, изберете името на картата в ComboBox), а след това в края на краищата е списък на всички подвижен състав, който е използван, като посочва техните имена и KUID.

> - край на KUID на маса

описание "Lesson1 Trainz Script

Маркерът е точката, в която влакът може да се изкара от нашата програма. В този случай, посоката на движение съответства на посоката на пирамидата. По принцип, всеки маркер или задействане трябва да се дава уникално име, с едно, че ще се говори за назначаването му, така че да не се бърка, докато пишете на програмата. Желателно е също така да зададете смислени имена на всички стрелки, или поне тези, които са включени в програмата. За да посочите име, вие трябва да изберете бутона на въпросителен знак, а след това изберете желания обект от картата.

Trigger е обект на услуга, която може да генерира събития в програмата, свързана с движението на влака. По този начин тя може да отговори на влак въвеждане на спусъка зона за спиране на влака в зоната на спусъка и обучават изход от зоната на спусъка. тригер зона (спусък диапазон) са определени с бутон, който е в раздела, напредна, след което изготвя на двупосочна стрелка. Можете също да зададете диапазона спусъка в цифрова форма в метри. Да, за да отворите страницата за разширено, вие трябва да кликнете върху думите "напреднали" в долната част на отворените пътища в панела за редактиране (вж. Фигура).

Статии - Trainz

Да, просто искам да предупредя, че дори и да трябва да работят нормално превключване между Trainz и други програми, в случай на промяна на сценарий няма да ги видите в играта толкова дълго, колкото рестарта Trainz, тъй като преди излизането на програмата за скрипт ще лежат в Trainz във вътрешния кеш паметта.

С уважение,
Дмитрий Myl'nikov

Свързани статии

Подкрепете проекта - споделете линка, благодаря!