Scripting
http://it.lfsmanual.net/index.php?title=Scripting&action=edit&redlink=1
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 [Wheels#Logitech_G25 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ù (< >) o (, .) a seconda delle tue impostazioni locali
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ì:
- Button 0 -> Ctrl+F12 -> viewF9 -> press F9 + riassocia Ctrl+F12 per eseguire viewF10
- Button 0 -> Ctrl+F12 -> viewF10 -> press F10 + riassocia Ctrl+F12 per eseguire viewF11
- Button 0 -> Ctrl+F12 -> viewF11 -> press F11 + riassocia Ctrl+F12 per eseguire viewF12
- Button 0 -> Ctrl+F12 -> viewF12 -> press F12 + riassocia Ctrl+F12 per eseguire viewOff
- 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 ^8Off
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, mentre, 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 massimizza 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