Personalizzazione
Quasi tutto si trova in un unico file, config.lua. Anche i due file del bridge e i file delle lingue sono aperti.
Quale file controlla cosa
Sezione intitolata “Quale file controlla cosa”| File | Cosa controlla | Aperto? |
|---|---|---|
config.lua | Lingua, valuta, interazione, limite di posizionamento e ogni cabinato fisso con il relativo prezzo | Sì |
locales/*.lua | Gli avvisi, le notifiche e le etichette del target | Sì |
bridge/client_bridge.lua | Rilevamento del framework, lettura del denaro, notifiche, testo di aiuto e zone ox-target / qb-target / drawtext | Sì |
bridge/server_bridge.lua | Prelievo e accredito di denaro o gettoni, nomi e ID dei personaggi, notifiche e oggetti cabinato utilizzabili | Sì |
items/ | Definizioni degli oggetti per ox, qb ed ESX, e le icone in items/images/ | Sì |
ui/ | Il menu del cabinato e i sette giochi, una cartella ciascuno in ui/games/ | Non in escrow |
client/data.lua | Posizione della telecamera e dello schermo per ogni modello di cabinato | In escrow |
mic_arcade_props/ | I modelli dei cabinati e il renderer dello schermo | Solo asset |
Generale — config.lua
Sezione intitolata “Generale — config.lua”| Opzione | Cosa fa | Predefinito |
|---|---|---|
Config.Locale | Quale file in locales/ viene utilizzato | 'en' |
Config.PaymentType | Quanto costa una partita: cash, bank, both o item | 'item' |
Config.PaymentItem | L’oggetto usato come valuta quando PaymentType è item | 'arcade_coin' |
Config.Interaction | ox-target (con il trattino), qb-target o drawtext | 'ox-target' |
Config.MaxArcadesPerPlayer | Quanti cabinati posizionati può avere contemporaneamente un singolo personaggio | 3 |
Tipi di pagamento
Sezione intitolata “Tipi di pagamento”| Valore | Cosa succede |
|---|---|
cash | Pagato in contanti (su ESX, il conto money) |
bank | Pagato dal conto bancario |
both | Prima in contanti; se non bastano, il resto viene prelevato dalla banca |
item | Pagato con Config.PaymentItem, un oggetto per ogni unità di prezzo |
La stessa valuta viene utilizzata per le puntate e le vincite di DuoFight.
Cabinati e prezzi — Config.Arcades
Sezione intitolata “Cabinati e prezzi — Config.Arcades”Una voce per ogni modello di cabinato. Ogni voce ha un Price e, facoltativamente, un numero qualsiasi di posizioni fisse (vec4 con x, y, z e heading) — in ciascuna viene generato un cabinato.
| Cabinato | Modello | Gioco | Prezzo | Fisso di base |
|---|---|---|---|---|
| DuoFight | mic_arcade_duofight | Picchiaduro per due giocatori o contro il computer | 0 | No (commentato) |
| Alien | mic_arcade_alien | Alien | 100 | No (commentato) |
| Breakout | mic_arcade_brick | Breakout | 100 | No (commentato) |
| Pixel | mic_arcade_pixel | Pixel | 100 | Sì |
| Race | mic_arcade_race | Race | 100 | Sì |
| Tower | mic_arcade_tower | Tower | 100 | Sì |
| Road | mic_arcade_road | Road | 100 | Sì |
- Per aggiungere un cabinato fisso, aggiungi una posizione all’elenco sotto quel modello. Mettiti nel punto desiderato, prendi coordinate e heading e inseriscili.
- Per rimuoverne uno, elimina o commenta la sua posizione. Il
Pricecontinua ad applicarsi ai cabinati posizionati di quel modello. - Un prezzo pari a
0rende il cabinato gratuito. - L’origine del cabinato Breakout si trova più in basso rispetto agli altri — la posizione predefinita di Breakout è circa 0.7 più bassa sull’asse z rispetto ai cabinati vicini. Fai lo stesso quando ne aggiungi uno.
Il Price è anche quanto fa pagare un cabinato posizionato di quel modello.
Cabinati posizionati
Sezione intitolata “Cabinati posizionati”Un oggetto cabinato (arcade_alien, arcade_race…) avvia il posizionamento:
| Tasto | Cosa fa |
|---|---|
| Guardarsi intorno | Sposta l’anteprima nel punto in cui stai guardando |
| Rotellina del mouse | Lo ruota |
| E | Lo posiziona e rimuove l’oggetto dall’inventario |
| ESC / Backspace | Annulla; conservi l’oggetto |
Il proprietario — e solo il proprietario — vede l’opzione Pick Up Arcade sul cabinato (con drawtext, il secondo tasto mostrato nell’avviso). Raccoglierlo restituisce l’oggetto. Un cabinato che qualcuno sta usando non può essere raccolto.
Config.MaxArcadesPerPlayer conta i cabinati che un personaggio ha attualmente posizionato.
Puntate su DuoFight
Sezione intitolata “Puntate su DuoFight”Scegliendo due giocatori su DuoFight viene richiesta una puntata: 1, 5, 25, 50 o 100, nella tua valuta. Chi ospita la partita paga la quota e attende al cabinato; al giocatore successivo che usa il cabinato viene proposta la sfida e paga lo stesso importo per partecipare.
| Risultato | Cosa succede |
|---|---|
| Vittoria | Il vincitore riceve entrambe le puntate |
| Pareggio | Ogni giocatore riottiene la propria puntata |
| Un giocatore si allontana a partita in corso | Si ritira: l’altro giocatore vince entrambe le puntate |
| Chi ospita si allontana prima che qualcuno si unisca | La partita viene annullata; la puntata dell’host non è rimborsata |
| Un giocatore si disconnette | La partita viene annullata, senza alcun pagamento |
Classifiche
Sezione intitolata “Classifiche”Ogni gioco tranne DuoFight salva il miglior punteggio di ciascun personaggio in mic_arcade_leaderboard e mostra i primi dieci sul cabinato. I nomi sono quelli del personaggio presi dal tuo framework. Per azzerare una classifica, svuota quella tabella (o le righe relative a un singolo gioco) mentre il server è spento.
Dieci lingue sono incluse in locales/: en, es, fr, de, it, pt, nl, ja, ru, zh. Imposta Config.Locale sul codice corrispondente.
Per aggiungerne una, copia locales/en.lua in un nuovo file rinominato con il tuo codice lingua, cambia Locales['en'] con il tuo codice, traduci la parte destra di ogni riga e imposta Config.Locale. Una chiave mancante viene mostrata come Translation [xx][key] does not exist — non c’è fallback all’inglese.
I file della lingua coprono ciò che viene mostrato nel mondo di gioco: le etichette del target, gli avvisi di aiuto e le notifiche. Il testo all’interno dei giochi fa parte di ui/games/.
Il bridge
Sezione intitolata “Il bridge”| File | Cosa copre |
|---|---|
bridge/client_bridge.lua | Rilevamento del framework, la quantità di denaro o gettoni mostrata al giocatore, Bridge.Notify, il testo di aiuto e la zona di interazione su ogni cabinato per ox-target, qb-target o drawtext |
bridge/server_bridge.lua | Rilevamento del framework, prelievo e accredito di denaro o oggetti (Bridge.RemoveMoney, Bridge.AddMoney), gli oggetti cabinato, nome e ID del personaggio, notifiche server e l’elenco dei cabinati utilizzabili |
Una risorsa di notifiche diversa: modifica Bridge.Notify nel file client e Bridge.ServerNotify nel file server. I messaggi di denaro insufficiente vengono inviati da Bridge.RemoveMoney.
Una risorsa target diversa: Bridge.RegisterArcadeInteraction e Bridge.RemoveArcadeInteraction nel file client sono gli unici punti in cui viene toccato il target.
Un altro inventario: gettoni e oggetti cabinato vengono letti e rimossi tramite le funzioni giocatore del framework stesso in server_bridge.lua. Indirizza Bridge.RemoveMoney, Bridge.AddMoney, Bridge.RemoveSpecificItem, Bridge.AddSpecificItem e Bridge.GetMoney al tuo inventario se non risponde a quelle funzioni.
Un nuovo oggetto utilizzabile per un cabinato: la tabella UsableArcades in fondo a server_bridge.lua associa ogni oggetto al rispettivo modello di cabinato.