Articole despre training

Fișiere adiționale la articol
Lesson1.cdp (18,5 kb) - un pachet cu un script de antrenament.
Lesson1.gs (5 kB) - codul sursă al scriptului
SP3S1DCC.gs (27,7 kB) - Codul sursă scenariu Highland Valley (DCC)






WriteScript1.rar (90,6 kB) - arhiva cu textul articolului pentru imprimare în format MS Word 97

Cum de a scrie scripturi pentru Trainz
partea 1

Cum de a scrie scripturi pentru Trainz

Aceasta este prima versiune a articolului, destinată în special celor care sunt deja familiarizați cu programarea, pentru că nu voi explica conceptele de bază. Aceasta este, se crede că aveți deja o idee despre ce tipuri de date, proceduri, funcții, precum și programarea orientată pe obiecte sunt. Toată lumea care a auzit despre asta pentru prima dată, trimit la cărțile despre limbile de programare, unde sunt explicați toți acești termeni.

Scripturile pentru Trainz sunt scrise în limba internă, care este similară în multe privințe cu limbile de programare precum C ++ sau Java, deși este limba proprie a lui Auran. Fișierul scriptului original este un fișier text obișnuit ASCII, care în mod prestabilit are extensia .gs

Din acest fișier, folosind compilatorul gsc.exe, veți obține un fișier executabil cu extensia .gsc, care va fi deja executată în mediul Trainz. În măsura în care înțelegeam, Trainz are un interpret special cu mai multe fire. Cu multe șanțuri înseamnă că puteți executa mai multe procese în paralel, care se vor desfășura independent unul de celălalt. De exemplu, puteți scrie un fir separat pentru fiecare tren din scriptul dvs. care va controla complet comportamentul acestuia, apoi executa toate aceste fire de execuție și fiecare dintre ele va fi executat independent. Mai exact, aproape în mod independent, deoarece simularea a fost efectuată în modulul multifuncțional în Trainz, în măsura în care am aflat. Adică, dacă începeți să executați o anumită procedură lungă în interiorul uneia dintre fire, fără a apela subrutinele de așteptare, de exemplu, crearea trenurilor, atunci toate procesele, inclusiv jocul principal, sunt suspendate până la finalizarea acestei proceduri.

De asemenea, vreau să rețin că fișierul .gsc care rezultă nu conține comenzile procesorului, ci octetul intern al interpreterului Trainz.

De asemenea, în acest director este fișierul makecript.bat, pe care Auran îl recomandă să îl copiați în directorul în care veți scrie scriptul și îl rulați cu compilația. Acest fișier conține următoarele comenzi ale comenzilor shell comandă OS:

pentru %% a în (* .gs) nu% gsc %%% a -i% include%

se presupune că scriptul dvs. de script este în lume \ custom \ scenarios \<имя сценария>\

Cu alte cuvinte, setați două variabile, în care am ajuns mai întâi înapoi la directorul sursă de joc, și apoi, în primul caz, du-te la compilator fișier gsc.exe, care este în directorul bin, iar în a doua cale prescrisă la directorul script dosar, de asemenea situate în directorul de joc , în cazul în care fișierele antet sunt localizate la toate obiectele interne ale jocului Trainz în sine și la care ne vom referi când scriem scenariile proprii.

O linie care începe cu pentru repetă apelul de compilator pentru toate fișierele care sunt listate pe linia de comandă după cele mai multe makecript.bat

În principiu, puteți utiliza acest fișier copiindu-l într-un dosar cu scriptul dvs. de script, și vă puteți scrie propriul dacă doriți.

Dacă chemați gsc.exe fără parametri, veți primi următorul text pe ecran:

AURAN GameScript Compiler V1.01

gsc.exe returnează numărul de erori de compilare

gsc.exe

unde

<-d> documentație de imprimare, u ar putea să o conduci într-un document text =)

<-bfilename> arunca informația despre construire (jurnalul de compilare) în fișier

<-ppathname> calea de ieșire

<-ofilename> ieșire nume fișier bibliotecă

fișier sursă de intrare

<-ipathname> suplimentare includ calea

care oferă o descriere foarte cuprinzătoare a sintaxei liniei de comandă și a acelor chei care pot fi setate în program. În acest moment, suntem cei mai interesați de comanda -d, care vă permite să obțineți documentația privind limbajul de programare AURAN GameScript.

Doar tastați următoarele la promptul de comandă:

Gsc.exe -d> gsc.txt

Apăsați enter și veți primi o descriere completă și detaliată a sintaxei limbii în fișierul gsc.txt. Este de dorit să-l imprimați și prima dată, în timp ce sunteți confortabil cu limba, păstrați-l la îndemână. Cu toate acestea, după cum era de așteptat, această descriere este din nou în limba engleză. )

Sinopsisul sintaxei AURAN GameScript

Cuvintele limbii rezervate sunt descrise în detaliu în gsc.txt, nu voi repeta, totul este clar.

Sintaxa declarațiilor de bază, inclusiv instrucțiunile de condiție, buclele și selecțiile, este copiată din limba C, inclusiv parantezele curbate care formează blocurile de cod. Adică, cine nu poate înțelege descrierea din fișierul gsc.txt, să ia o carte pe limbajul C sau C și să înțeleagă. Dar vă avertizez imediat că trebuie mai întâi să vă concentrați asupra fișierului gsc.txt, deoarece există unele diferențe.







Identificatorii sunt setați ca standard, ca în multe alte limbi de programare. Orice identificator trebuie să înceapă cu o literă a alfabetului latin (A..Za..z_) sau cu o subliniere și apoi aceleași litere sau numere pot fi. Vreau doar să menționez că literele mari și mici sunt considerate DIFERITE! Adică, compilatorul DIFEREAZĂ REGISTRUL, spre deosebire de multe alte limbi de programare.

Tipurile de date acceptate de limbă

Void # 9; - un tip de date gol care este utilizat numai pentru funcții

Int # 9; - întregul număr semnat pe 32 de biți

Float # 9; - număr de virgulă mobilă de 32 de biți

Bool # 9; - tip logic de 32 de biți, 0 - fals sau NU 0 - adevărat (în general, ca în C)

String # 9; - șir de text

Obiect # 9; - obiectul uneia dintre clasele declarate în joc, în același timp, atunci când declarăm o variabilă, scrieți, desigur, numele clasei, nu obiectul, pentru că obiectul este clasa de baza din care sunt generate toate celelalte

int [] # 9; - array integer

float [] # 9; - matrice de numere în virgulă mobilă

bool [] # 9; - matrice de variabile booleene

șir [] # 9; - șir de șiruri de caractere

obiect [] # 9; - o serie de obiecte

După cum puteți vedea, setul de tipuri de date este mic, dar de fapt suficient pentru scrierea celor mai complexe scripturi. În același timp, în contrast cu limbajul de programare universală, nu putem declara noi tipuri de date de bază în AURAN GameScropt, inclusiv o structură sau uniune, dar poate declara noi clase, care, în practică, este de ajuns.

Toate instrucțiunile de limbă de bază care pot fi folosite în expresii pot fi găsite în secțiunea 2.6 a fișierului gsc.txt. Ele repetă în mare măsură operatorii limbajului C și vă voi spune câteva diferențe importante mai târziu, când vom analiza exemplele.

Vreau să stau puțin pe modelul programării orientate pe obiecte pe care AURAN a implementat-o ​​în limba sa.

Mai întâi, toate funcțiile declarate în cadrul clasei sunt virtuale. În acest caz, dacă declarați o funcție cu același nume în clasa descendentă, ea întotdeauna suprascrie automat funcția din clasa strămoșilor. Nu sunt necesare instrucțiuni speciale. Dacă aveți nevoie de o funcție independentă, atunci o vom scrie cu un nume nou.

De asemenea, limba acceptă moștenire multiplă, când mai multe clase părinte sunt specificate ca strămoși pentru noua clasă. Astfel, într-o nouă clasă, toate domeniile și funcțiile care au fost împreună cu toți strămoși împreună (unificarea) vor fi accesibile.

Bine, iată sfârșitul părții introductive și se îndreaptă spre dezvoltarea directă a scenariilor.

Fișierele necesare și pregătirea preliminară

Bogeys # 9; - cărucioare pentru material rulant

- descrierea parametrilor motorului pentru locomotive, inclusiv caracteristicile de tracțiune

Enginesound # 9; - sunetele motoarelor de locomotive care funcționează în funcție de puterea curentă

Sol # 9; - texturi de suprafață

Hornsound # 9; - sunete de semnal de locomotivă

Html # 9; # 9; - paginile cu html, cu toate acestea, într-o versiune trunchiată pentru minisweb intern. Cu ajutorul lui se creează dialoguri complexe, care permit primirea datelor de la utilizator.

Pantaloni # 9; - pantografe (colectoare de curent) pentru locomotivele electrice

Produse # 9; # 9; - produse pentru noi instalații industriale. Ce puteți purta apoi. Adevărat, trebuie să facem multe lucruri pentru a funcționa, inclusiv pentru instalațiile de producție și recepție, precum și pentru vagoanele care le pot transporta.

Profilurile # 9; # 9; - acestea sunt așa-numitele profiluri de joc - poziția compozițiilor pe hartă. În acest caz, fiecare profil din fișierul config.txt se va referi la una din hărțile disponibile în Trainz.

Scenarii # 9; # 9; - bine, acesta este directorul de care avem nevoie. ) Aici sunt scripturile.

Scenery # 9; # 9; - diverse obiecte unice pe care le plasăm pe hartă.

Spline # 9; # 9; - diverse spline pe care le putem plasa pe hartă. Acestea sunt drumurile, gardurile de poduri, liniile electrice, etc. cu excepția celor care conțin căi ferate

Track # 9; # 9; - dar aceasta este deja calea ferată în sine și tot ceea ce conține traseele feroviare.

Trackside # 9; - obiecte care sunt plasate de-a lungul căii ferate, cum ar fi săgeți, semafoare, semne etc.

Trenuri # 9; - material rulant, și anume locomotive și vagoane

Din toate secțiunile de mai sus, suntem acum interesați în primul rând de scenarii, precum și de hărți, dacă scriptul este făcut pentru propria dvs. hartă.

Mergem la directorul world \ custom \ scenarios (dacă nu este, apoi creați) și creați un director nou în interiorul acestuia, pe care îl dăm numele în care ne dorește ca scenariul nostru să fie văzut în Trainz. De exemplu, lecția1. Primul lucru pe care trebuie să-l creăm este fișierul config.txt, care este creat pentru orice obiect Trainz.

f7_sfred - această linie și trei mai jos servesc pentru a descrie identificatorii și KUID-ul locomotivei și vagoanelor. Ele pot fi obținute și cu ajutorul TrainzObjectz. Pentru obiectele încorporate, ele pot fi vizualizate și în aplicația de la sfârșitul CCG. Am folosit următoarea metodă. Mai întâi a aranjat pe hartă toate locomotivele și pășunile necesare, apoi a păstrat-o, a ieșit din Trenz și a lansat TrainzObjectz. În TrainzObjectz, atunci când numit de descrierea hărții (în fila Hărți, selectați numele hartă în ComboBox), apoi în cele din urmă este o listă a tuturor materialului rulant care a fost utilizat, indicând numele și KUID lor.

> - sfârșitul tabelului KUID

descriere "Lecția 1 Trainz Script

Marcatorul servește ca punct în care puteți pune trenul din programul nostru. În acest caz, direcția de mișcare va corespunde direcției piramidei. În principiu, fiecare marcator sau de declanșare trebuie să fie dat un nume unic, cu unul care va fi vorba despre numirea sa, astfel încât să nu te confuz în timp ce scrierea programului. De asemenea, este de dorit să alocați nume semnificative tuturor comutatoarelor, sau cel puțin celor implicate în program. Pentru a specifica un nume, trebuie să selectați un buton cu un semn de întrebare și apoi să selectați obiectul dorit de pe hartă.

Declanșatorul este un obiect de serviciu care poate genera evenimente în programul asociat mișcării trenului. În același timp, el poate reacționa la trenul care intră în zona de declanșare, oprind trenul în zona de declanșare și ieșind din tren din zona de declanșare. Zona de declanșare (raza de declanșare) este setată utilizând un buton special, care se află pe fila avansată, pe care este desenată săgeata cu două fețe. De asemenea, puteți specifica raza declanșatorului sub formă numerică în metri. Da, pentru a deschide pagina avansată, trebuie să dați clic pe cuvântul "avansat" în partea de jos a panoului de trasee de editare deschis (a se vedea imaginea).

Articole despre training

Da, vreau doar să avertizeze că, chiar dacă trebuie să lucreze în mod normal, comuta între Trainz și alte programe, în caz de schimbare a scenariului pe care nu le vor vedea în joc, atâta timp cât repornirea Trainz, deoarece înainte de lansarea programului de script-ul se va afla în Trainz în cache-ul intern.

Cu stimă,
Dmitri Mylnikov







Articole similare

Trimiteți-le prietenilor: