RVGLUE - FILE DI COMANDO - SINTASSI
In questa sezione approfondiremo
il discorso sul File di Comando, fornendo alcuni esempi e studiando la sintassi
di scrittura del file.
Il file di comando non può essere scritto come ci pare e piace, ma ha una sua struttura che va rispettata. Le varie parti del File di Comando vengono chiamate DICHIARAZIONI, e ce ne sono 5 categorie.
Ogni Dichiarazione è formata da una parola chiave o dal nome di un file, eventualmente seguito da un blocco di istruzioni comprese tra due parentesi tonde (...). Soltanto i commenti possono essere inseriti in qualsiasi posizione.
1. Parola chiave CREATE
La Dichiarazione CREATE deve essere seguita da una parentesi aperta, il
nome di un file di base e una parentesi chiusa. Esempio:
Fondamentalmente questa Dichiarazione dice a Rvglue quali file deve
creare. Il programma aggiunge i suffissi .w e .ncp in automatico al nome del
file di base. Questa Dichiarazione normalmente è necessaria per far funzionare
Rvglue. In alternativa si possono usare le opzioni della linea di comando -o= e
-output= (Vedi File di comando - ESEMPI - Es. 1).
2. Sezione GLOBAL
La sezione GLOBAL è un Gruppo Opzioni Instance (Vedi Punto 7) speciale
che viene utilizzato per le Instances non menzionate nel Gruppo Opzioni Instance
reale (Vedi File di comando - ESEMPI - Es. 8).
3. Sezione DEFINE
Anche la sezione DEFINE è un Gruppo Opzioni Instance speciale, che
viene usato per archiviare liste di opzioni per un uso successivo.
4. Nome file.w
La presenza del nome di un file.w comporta che Rvglue legga questo file
e lo includa nei files di uscita. Può essere seguito da un Set di opzioni (Vedi
Punto 6, Vedi File di comando - ESEMPI - Es. 1).
5. Nome file.fin
La presenza del nome di un file.fin comporta che Rvglue legga questo
file e includa tutte le Instences menzionate in questo nei files di uscita. Può
essere seguito da un Gruppo Opzioni Instance. (Vedi File di comando - ESEMPI - Es. 4)
6. Set di opzioni
E' una lista di Opzioni, racchiuse da parentesi tonde (Vedi File di comando - ESEMPI -
Es. 2).
Questo è l'elenco alfabetico delle Opzioni disponibili:
- color: definisce un colore fisso per tutti i poligoni senza
texture, sovrascrivendo l'ombreggiatura. Se vuoi preservare l'ombreggiatura
presente, usa l'opzione colorize. L'argomento è la definizione del colore. Sono
ammessi solo valori positivi compresi tra 0 e 255. Se vuoi indicare i colori
tramite il nome, dai un'occhiata alla tabella Named Colors, che trovi nella
guida ufficiale del RVTMOD7 che hai scaricato.
Esempio:
stuff.fin (
metal( color 128 128 128 )
thing( color turquoise )
)
- colorize: definisce un colore ombra per
tutti i poligoni senza texture. Il colore risultante sarà più scuro di quanto
specificato, quindi usa colori brillanti. L'argomento è la definizione del
colore. Sono ammessi solo valori positivi.
Esempio:
stuff.fin (
metal( colorize 400 500 600 )
thing( colorize turquoise )
)
- doublesided: mostra un secondo lato dei
poligoni. In questo modo potrai rendere visibile il lato posteriore dei
poligoni. Non utilizza argomenti.
- envmap: imposta il valore di mappatura
dell'ambiente e il suo colore. L'argomento è la definizione del colore. Sono
ammessi solo valori positivi compresi tra 0 e 255. Attenzione: questa opzione
funziona solo sui file.w. Le Instances possono avere una mappatura d'ambiente,
ma è definita all'interno del file.fin della pista e non nell'Instance medesima.
Esempio:
stuff.fin (
metal( envmap 128 128 128 )
thing( envmap turquoise )
)
- invisible: nasconde le Instances, creando
parti invisibili. Usalo per creare sponde che evitino alle auto di finire fuori
dal tracciato. Ad esempio se vuoi creare una finestra attraverso la quale si
possa vedere ma non si possa attraversare (effetto vetro), puoi inserire un'Istance
da nascondere con questa opzione (ricorda che NON deve avere nessun tipo di
superficie)
Esempio:
bounds.fin (
bwall( surface(notracks) invisible )
)
- legosplit: divide i tracciati creati con il
Track Editor e ti permette di specificare opzioni per i singoli componenti. Gli
argomenti di questa opzione sono una lista di componenti che si riferiscono a
certe parti di pista:
|
ARGOMENTI LEGOSPLIT
|
|
Componente |
Descrizione |
pwall |
Il muro blu che sostiene i vari moduli della pista |
rwall |
I muri della stanza, escluse le immagini che stanno su un muro |
carimg |
Le immagini che stanno su quel muro |
floor |
Il pavimento verde |
lamp |
Le lampade sul soffitto |
box |
La pila di scatole nell'angolo della stanza |
track |
La pista |
|
Attenzione: usa queste opzioni solo su una pista Non modificata
(il programma che riconosce le parti è abbastanza complicato). Usarla su piste
già modificate o sulle Instances può dare risultati imprevedibili.
- lower_coll: abbassa i valori di collisione
dei poligoni quadrati verticali. Può essere utile per eliminare gli ostacoli
invisibili che qualche volta crea Rvglue. Alcuni pezzi del Track Editor hanno
dei muri verticali blu che vanno esattamente a finire all'altezza del piano
della pista. Qualche volta per piccoli bug di rotazione che non sono evitabili
questi muri diventano leggermente più alti. Questa opzione serve per abbassare
leggermente questi muri e farli tornare sotto il piano della pista, perchè trova
gli assi verticali di tutti i poligoni quadrati (all'interno dell'input
ricevuto) e li abbassa di 0.1 unità. Gli altri poligoni non quadrati e l'effetto
visuale restano inalterati. Lower_coll lavora molto bene con legosplit. Il
cambiamento dei valori di collisione viene applicato solo ai muri blu (nei quali
di solito non dovresti scontrarti). L'opzione non necessita di argomenti.
Esempio:
user018.w (
legosplit (
pwall ( lower_coll )
)
)
- nocoll: esclude i valori di collisione,
creando parti che sei in grado di vedere ma che non sono solide. Usalo per gli
oggetti fuori dalla pista che non puoi raggiungere (e che quindi non dovrai
evitare di attraversare). L'opzione non necessita di argomenti.
- off: disattiva gli oggetti, ed è uguale
all'opzione (nocoll invisible). Usalo per oggetti di cui hai bisogno durante la
costruzione della pista (come ad esempio Instances che possono servire per
marcare posizioni speciali) o per escludere parti del tracciato creato con il
Track Editor. L'opzione non necessita di argomenti.
- setshade: imposta la texture ombra. I
poligoni che non hanno texture non vengono modificati. L'argomento è la
definizione del colore. Sono ammessi solo valori positivi compresi tra 0 e 255.
Esempio:
stuff.fin (
metal( setshade 128 128 128 )
thing( setshade white )
)
- shade: crea l'ombra agli oggetti aumentando
o diminuendo l'ombreggiatura dei poligoni con texutre rispetto al colore di
poligoni senza texture. E' l'effetto equivalente delle impostazioni "Model RGB"
nella modalità edit Instance del MIG. L'argomento è la definizione del colore.
Sono ammessi solo valori positivi compresi tra 0 e 255.
Esempio:
stuff.fin (
metal( shade 0 0 -40 )
thing( shade +100 +100 -255 )
)
- surface(...) o s(...): imposta le proprietà
delle superfici. Se usi un valore numerico non verrà controllato come "valido" e
quindi puoi provare a cercare tipi di superfici ancora sconosciuti. La lista qui
presente potrebbe essere poco esplicativa o non chiara quindi ti consigliamo
caldamente di scaricare la Surface Test Track nella pagina principale del
RVTMOD7 tutorial e di visitare la più completa tabella nel Tutorial del
Trackmk, che fa parte dei Tools di Srmalloy.
I valori tutt'oggi conosciuti sono questi:
|
PROPRIETA' SUPERFICI
|
|
Valore |
Parola chiave |
Descrizione |
0, 1, 2 |
standard |
Standard |
3 |
- |
Segni delle gomme grigi |
4 |
- |
Segni delle gomme verdi, scivoloso, particelle gialle |
5 |
- |
Segni delle gomme grigi, scivoloso |
6 |
- |
Segni delle gomme molto leggeri |
7 |
- |
Segni delle gomme sottili |
8 |
notracks |
Nessun segno delle gomme |
9 |
- |
Segni delle gomme grigi |
10 |
ice |
Come il pavimento della ghiacciaia in Supermarket 2 |
11 |
- |
Abbastanza scivoloso |
12 |
grass |
Segni delle gomme verdi, scivoloso, particelle verdi |
13 |
- |
Abbastanza scivoloso |
14 |
verybump |
Molto sconnesso, particelle di terra e ghiaia |
15 |
bump |
Sconnesso, particelle di terra e
ghiaia |
16 |
- |
Spinge l'auto in una direzione |
17 |
- |
Spinge l'auto in un'altra direzione |
18, 19, 20 |
mud |
Segni delle gomme marroni, scivoloso |
21, 22 |
slippery |
Segni delle gomme sottili, scivoloso |
24 |
- |
Spinge l'auto |
25 |
- |
Spinge l'auto in maniera casuale (Toytanic 1 e 2) |
|
Esempio:
ground.fin (
mymud( surface mud )
mymeadow ( s 12 )
)
- tazsplit: divide l'input ricevuto dai
file.taz e ti permette di specificare opzioni diverse per ogni singolo
componente. I componenti sono nominati dopo i numeri delle Track Zone.
Esempio:
user018.w (
tazsplit (
zones.taz [ Read zones.taz ]
0 ( off ) [ Delete everything in zone 0 ]
1 ( transparency(128) ) [ Everything in zone 1 becomes transparent ]
)
)
- tecolor: vecchio comando, una combinazione
di legosplit e colorize ottiene lo stesso risultato. Se una vecchia
Dichiarazione era ad esempio tecolor (ff0000), puoi convertirla in questo
esempio:
user018.w (
legosplit (
pwall ( colorize 255 0 0 )
)
)
- tedelete: vecchio comando, una combinazione
di legosplit e off ottiene lo stesso risultato. Se una vecchia Dichiarazione era
ad esempio tedelete (pwall), puoi convertirla in questo esempio:
user018.w (
legosplit (
pwall ( off )
)
)
- texmap(...): rimappa una texture su altri
fogli, posizioni e orientamento. E' simile al programma Rvtexmap della raccolta
Rvminis. Richiede un argomento, come ad esempio
texmap (da-texture=a-texture [rot])
Il parametro di identificazione b:128,0:64x32 identifica il foglio texture B
(file xxxxb.bmp), la sezione di 64x32 pixel presa a partire dalla posizione
128,0 (come riferimento sempre l'angolo in alto a sinistra). Se viene
specificata l'opzione rot, la texture di destinazione sarà ruotata di +90°
(anti-orario). Questo è utile per ottimizzare le texture sui fogli.
Si può utilizzare il carattere * per i seguenti valori di default:
|
CARATTERE *
|
|
* in... |
Da-texture |
A-texture |
Foglio texture |
Rimappa da ogni foglio |
Non altera i fogli |
In alto a sinistra |
0,0 |
Stessa posizione Da-texture |
Dimensione texture |
All'angolo in basso a destra dell'immagine |
Stessa dimensione Da-texture |
|
Esempi:
user018.w (
[ 1. Remap a.bmp to j.bmp: ]
texmap a:*:*=j:*:*
[ 2. Remap the Cougar's image on the lego track walls
to the start grid's texture: ]
texmap h:0,64:64x64=c:0,0:192x192
[ 3. Rescale every texture to use only the upper-right half of the bitmaps: ]
texmap *:*:*=*:128,0:128x128
[ 4. Remap a (landscape) texture from sheet A to its rotated (portrait) and
half-sized correspondence on sheet B: ]
texmap a:0,0:128x32=B:0,0:16x64 rot
)
Esempi di rotazione:
|
ROTAZIONE
|
|
Comando |
Da-texture |
A-texture |
[1. without rotation]
texmap a:0,0:128x192=b:0,64:64x192
|
|
|
[2. with rotation]
texmap a:0,0:128x192=b:0,64:64x192 rot
|
|
|
|
- texturefloor: assegna una texture al
pavimento verde della stanza. L'argomento è la definizione della texture, nel
formato foglio:posizione:dimensione (Esempio: c:0,128:64x64). Può essere usata
solo nella lista delle Opzioni per un file.w (quindi non per le Instances o per
altre opzioni).
- transparency(...) o t(...): imposta una
trasparenza. L'argomento deve essere compreso tra 0 e 255 dove 0 è completamente
trasparente e 255 è completamente opaco. Non usare la trasparenza a 0 se vuoi
rendere un oggetto invisibile. C'è l'opzione invisible apposta.
- wall_*: assegna una texture ai muri. * può
essere single o double, a seconda di come è stata esportata la pista.
L'argomento è la definizione della texture, nel formato
foglio:posizione:dimensione (Esempio: c:0,128:64x64). Può essere usata solo
nella lista delle Opzioni per un file.w (quindi non per le Instances o per altre
opzioni).
7. Gruppo Opzioni Instance
Definisce specifiche opzioni per specifiche Instances, racchiuse da
parentesi tonde. Per lavorare sulle Instances bisogna inserirne il nome senza l'estensione.prm
e associare a questa un Set di opzioni. Eventualmente può anche contenere un Set
speciale, che è indicato dalla parola chiave Default. Quando legge il file.fin,
e include le sue Instances, il programma controlla se esiste un Set di opzioni e
se esiste:
- una specifica Instance nel Gruppo Opzioni Instance corrente
- una specifica Instance nel Gruppo Opzioni Instance GLOBAL
- un'opzione Default nel Gruppo corrente
- un'opzione Default nel Gruppo GLOBAL
- nessuna opzione
(Vedi File di comando - ESEMPI - Es. 5) |