Scripting

Da LFS Manual.

Introduzione

Col rilascio della patch V a dicembre 2006, gli sviluppatori di LFS hanno introdotto un nuovo sistema di scripting, molto simile a quello che si trova implementato nella maggior parte dei cosiddetti "FPS" (first person shooters). A grandi linee, permette l'automazione di compiti comuni, la personalizzazione delle opzioni per ogni singola macchina così come la creazione di semplici "interruttori" per modificare l'associazione dei comandi ai tasti (ed altro). Scopo di questa guida è darti una comprensione generale del sistema di scripting di LFS e di fornirti anche qualche semplice esempio di script.

Come si usa

Le basi

I file di script hanno estensione ".lfs" e si trovano nella cartella <tua_installazione_LFS>\data\script. Per modificare questi file, aprili semplicemente con l'editor di testo che preferisci (Notepad, ecc). Puoi anche creare nuovi file di script, devi solo preoccuparti che abbiano l'estensione corretta. Se vuoi, puoi addirittura organizzare i tuoi script in sottocartelle per tenerli ordinati.

In generale, ogni linea nel file di script rappresenta un comando che viene eseguito da LFS, dall'alto in basso. L'unica eccezione sono le linee vuote, e quelle che iniziano per "//", che sono trattate come commenti e quindi ignorate. Fondamentalmente puoi immaginare questo sistema pensando ad LFS che legge ogni linea e la digita nella finestra di chat premendo alla fine INVIO. Ovviamente non è esattamente così, ma questo ti dovrebbe dare un'idea generica.

Nomi di file riservati

Mentre puoi generalmente dare ai tuoi nuovi script i nomi che preferisci, alcuni di questi hanno un significato speciale per LFS. Tutti i file con questi nomi speciali già esistono nella sottocartella degli script, quindi finchè non sposti o sovrascrivi questi file, tutto andrà bene.

  • autoexec.lfs
Come suggerito dal suo nome, questo script viene automaticamente eseguito ogni volta che lanciamo LFS, ed è quindi il punto ideale in cui inizializzare i tuoi script.
  • CAR.lfs
"CAR" assume il valore del codice identificativo abbreviato di tre lettere (vedi qui o più giù), questi script sono eseguiti ogni volta che scegliamo la macchina corrispondente nel garage - per esempio se scegli la XR GT Turbo, LFS eseguirà lo script "XRT.lfs". Sono normalmente usati per impostare alcune specifiche caratteristiche della macchina, come un angolo di visuale (FOV) personalizzato o per regolare l'intensità del force-feedback.
  • road.lfs, sequential.lfs, paddle.lfs
Anche se questi nomi di file non sono nè riservati, nè automaticamente eseguiti, vale la pena di menzionarli perchè, per default, sono eseguiti da dento gli script CAR.lfs. Il loro scopo principale riguarda l'applicazione di impostazioni personalizzate a macchine che hanno un certo tipo di cambio. Road.lfs è lo script per macchine con cambio ad "H", sequential.lfs quello per macchine con cambio sequenziale e paddle.lfs quello per macchine con cambio a paletta. Se hai un volante che supporta questi tipi di cambi (come il Logitech G25 per esempio) questi script possono esserti utili per cambiare automaticamente il setup del cambio in modo da adattarlo alla macchina selezionata.
Per associare la giusta macchina al giusto tipo di cambio, queste dovrebbero essere assegnate come segue:
Road: UF1, XFG, XRG, XRT, RB4, FXO, LX4, LX6, FZ5, FZR, UFR, RAC
Sequential: FBM, FOX, FO8, MRT, XFR, XRR, FXR
Paddle: BF1

Comandi

I seguenti comandi sono solo un estratto tr quelli più comunemente usati.
Per la lista completa di tutti i comandi disponibili, vedi il file <tua_installazione_LFS>\docs\Commands_Italiano.txt.

Opzioni & Miscellanea

/run        [nomescript]    - esegue uno script (data\script\nomescript.lfs), 
                              per es.: "/run mioScript" o "/run miaCartella\mioScript"
/say        [messaggio]     - come digitare un messaggio di chat
/echo       [testo]         - mostra del testo (solo sullo schermo locale)
/fov        [gradi]         - angolo di visuale
/ff         [0-200]         - intensità force feedback
/wheel_turn [gradi]         - specifica angolo di rotazione del controller
/autoclutch [0-1]           - frizione automatica off / on
/gccut      [0-1]           - throttle cut su cambiata **
/gcblip     [0-1]           - throttle blip su scalata **
/shifter    [auto/sequential/shifter]    - tipo di cambio
/view       [fol/heli/cam/driver/custom] - seleziona punto di visuale
/view       [save/reload]  - salva o ricarica la visuale personalizzata corrente ***
**NB: gccut and gcblip sono stati rimossi da una patch recente (patch Y).
***NB: comando introdotto dalla patch Z19

Associazioni ed Esecuzione Comandi

Associazioni
/axis   [asse]    [funzione] - per es.: "/axis 2 throttle"   (per disassociare, usa -1)
/invert [0/1]     [funzione] - per es.: "/invert 1 brake"    
/button [pulsante] [funzione] - per es.: "/button 5 shift_up" (per disassociare, usa -1)
/key    [tasto]   [funzione] - per es.: "/key Q handbrake"
/ctrlf  [numero]  [testo]    - cambia scorciatoia testo, per es.: "/ctrlf 1 Ciao"
/altf   [numero]  [testo]    - cambia scorciatoia testo, per es.: "/altf 1 Arrivederci"

Simulare la pressione di un tasto
/press [tasto]                - preme il tasto definito in [tasto]
/shift [tasto]                - SHIFT + tasto
/ctrl  [tasto]                - CTRL + tasto
/alt   [tasto]                - ALT + tasto

Parametri di riferimento

Nomi delle funzioni per i comandi /button e /key
steer_left, steer_right, steer_fast, steer_slow
throttle, brake, shift_up, shift_down
clutch, handbrake, left_view, right_view, rear_view
horn, flash, reset, pit_speed, tc_disable, zoom_in, zoom_out
reverse, gear_1 - gear_7, ctrl_f1 - ctrl_f12, ignition

Per trovare il codice numerico di un certo pulsante del tuo controller, vai a Opzioni > Controlli
e premi il pulsante in questione. Vedrai il numero del pulsante e la funzione
correntemente assegnata al sulla parte destra dello schermo.

Nomi delle funzioni per i comandi /axis e /invert
steer, combined, throttle, brake
lookh, lookp, lookr
clutch, handbrake, shiftx, shifty

Parametri per i comandi di pressione tasto (press / shift / ctrl / alt)
Lettere da A a Z
Numeri da 0 a 9
Tasti funzione da F1 a F12
Tasti freccia su, giù, sinistra, destra
spazio, enter, esc, tab
meno (-), più (+)

Esempi

Come avrai notato dalla lista dei comandi, è attualmente impossibile assegnare via script altri comandi ad un pulsante: per esempio, "/button 1 /say hello" non funzionerebbe. Fortunatamente possiamo usare le scorciatoie ai tasti (Ctrl+F1-F12, Alt+F1-F12), così possiamo usare "/ctrlf 1 /say hello" (che associa "/say hello" a Ctrl+F1) e quindi "/button 1 ctrl_f1" (che associa la pressione di Ctrl+F1 al pulsante numero 1 del controller). Ma ciò significa anche che dovrai sacrificare qualcuna delle tue scorciatoie per gli script, che non dovrebbe essere un problema considerando che abbiamo a disposizione 32 scorciatoie in totale (di cui 24 associabili via script).

Interruttori "F9 > F10 > F11 > F12 > Off"

Scorciatoia usata: Ctrl+F12

L'idea di base di questo script è di avere un pulsante (per esempio sul volante) che cicla tutti i menù da F9 a F12. Per ottenere ciò, abbiamo bisogno di 5 script, oltre ad una voce in autoexec.lfs.

Per questo script useremo la scorciatoia Ctrl+F12 per il ciclo, ed associeremo il pulsante numero 0 (qualunque esso sia sul tuo controller) per eseguirlo. L'uso multiplo del comando /press assicura che il menù venga correttamente visualizzato, nel caso che uno dei menù fosse già stato aperto a schermo manualmente. Per esempio, se il menu F11 fosse già aperto e noi lanciassimo viewF11.lfs senza premere il tasto F9 contenuto in esso, questo chiuderebbe invece il menù F11, che è qualcosa che non vogliamo proprio che accada nei momenti caldi di una gara.

Funziona così:

  1. Button 0 -> Ctrl+F12 -> viewF9 -> press F9 + riassocia Ctrl+F12 per eseguire viewF10
  2. Button 0 -> Ctrl+F12 -> viewF10 -> press F10 + riassocia Ctrl+F12 per eseguire viewF11
  3. Button 0 -> Ctrl+F12 -> viewF11 -> press F11 + riassocia Ctrl+F12 per eseguire viewF12
  4. Button 0 -> Ctrl+F12 -> viewF12 -> press F12 + riassocia Ctrl+F12 per eseguire viewOff
  5. Button 0 -> Ctrl+F12 -> viewOff -> chiude i menù + riassocia Ctrl+F12 per eseguire viewF9
...

viewF9.lfs

/press F10
/press F9
/ctrlf 12 /run viewF10

viewF10.lfs

/press F9
/press F10
/ctrlf 12 /run viewF11

viewF11.lfs

/press F9
/press F11
/ctrlf 12 /run viewF12

viewF12.lfs

/press F9
/press F12
/ctrlf 12 /run viewOff

viewOff.lfs

/press F10
/press F9
/press F9
/ctrlf 12 /run viewF9

autoexec.lfs

/button 0 ctrl_f12
/ctrlf 12 /run viewF9

Controllo degli Indicatori di Direzione

Scorciatoie usate: Ctrl+F10, Ctrl+F11

Questo esempio mostra come controllare semplicemente gli indicatori di direzione con due pulsanti. Avrai bisogno di 3 script ed alcune linee in autoexec.lfs, le scorciatoie usate saranno Ctrl+F10 e Ctrl+F11. Gli indicatori funzioneranno così: la prima pressione del tasto sinistro attiva la freccia sinistra, la seconda pressione la disattiva, viceversa per il pulsante destro. Si possono scambiare destro e sinistro. Per facilità d'uso, lo script genererà come output nell'area di chat delle frecce verdi che indicheranno lo stato attuale.

Usando la stessa logica e aggiungendo un altro script, diventa semplice implementare anche il controllo delle luci di emergenza mediante un terzo pulsante.

indicateLeft.lfs

/press 7
/ctrlf 11 /run indicateStop
/ctrlf 10 /run indicateRight
/echo ^2‹ ‹ ‹

indicateRight.lfs

/press 8
/ctrlf 10 /run indicateStop
/ctrlf 11 /run indicateLeft
/echo ^2› › ›

indicateStop.lfs

/press 0
/ctrlf 10 /run indicateRight
/ctrlf 11 /run indicateLeft
/echo ^8Off

autoexec.lfs

/button 16 ctrl_f11
/button 18 ctrl_f10 
/ctrlf 10 /run indicateRight
/ctrlf 11 /run indicateLeft

Configurazione del cambio automatico (per possessori di Logitech G25/G27)

Scorciatoie usate: Nessuna

Per adattare automaticamente le associazioni del controller al meccanismo di cambio usato dalla macchina attualmente selezionata, tutto quello che devi fare è modificare gli esistenti file road.lfs, sequential.lfs e paddle.lfs come mostrato di seguito.

Opzionalmente puoi anche aggiungere altre associazioni per la leva del cambio o le sue palette, se le hai libere. Per esempio, quando uso la leva del cambio sequenziale, la mia paletta destra è configurata come freno a mano e la sinistra come clackson, ma se uso le palette come cambio, tirando a me la leva del cambio sequenziale aziono il freno a mano e spingendola suono il clackson. Facendo così si riesce a massimizzare la capacità di quei pochi pulsanti del G25 difficilmente raggiungibili; queste ultime associazioni non sono presenti tra questi script di esempio.

road.lfs

/button 8 gear_1
/button 9 gear_2
/button 10 gear_3
/button 11 gear_4
/button 12 gear_5
/button 13 gear_6
/button 14 reverse

/shifter shifter
/autoclutch 0

/echo Shiftmode: H-Gate

sequential.lfs

/button 9 shift_up
/button 8 shift_down

/shifter sequential
/autoclutch 0

/echo Shiftmode: Sequential

paddle.lfs

/button 4 shift_up
/button 5 shift_down

/shifter sequential
/autoclutch 1

/echo Shiftmode: Paddles