Salta ai contenuti

Personalizzazione

Quasi tutto si trova in un unico file, config.lua. Anche i due file del bridge e i file delle lingue sono aperti.


FileCosa controllaAperto?
config.luaLingua, valuta, interazione, limite di posizionamento e ogni cabinato fisso con il relativo prezzoSì
locales/*.luaGli avvisi, le notifiche e le etichette del targetSì
bridge/client_bridge.luaRilevamento del framework, lettura del denaro, notifiche, testo di aiuto e zone ox-target / qb-target / drawtextSì
bridge/server_bridge.luaPrelievo e accredito di denaro o gettoni, nomi e ID dei personaggi, notifiche e oggetti cabinato utilizzabiliSì
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.luaPosizione della telecamera e dello schermo per ogni modello di cabinatoIn escrow
mic_arcade_props/I modelli dei cabinati e il renderer dello schermoSolo asset

OpzioneCosa faPredefinito
Config.LocaleQuale file in locales/ viene utilizzato'en'
Config.PaymentTypeQuanto costa una partita: cash, bank, both o item'item'
Config.PaymentItemL’oggetto usato come valuta quando PaymentType è item'arcade_coin'
Config.Interactionox-target (con il trattino), qb-target o drawtext'ox-target'
Config.MaxArcadesPerPlayerQuanti cabinati posizionati può avere contemporaneamente un singolo personaggio3
ValoreCosa succede
cashPagato in contanti (su ESX, il conto money)
bankPagato dal conto bancario
bothPrima in contanti; se non bastano, il resto viene prelevato dalla banca
itemPagato con Config.PaymentItem, un oggetto per ogni unità di prezzo

La stessa valuta viene utilizzata per le puntate e le vincite di DuoFight.


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.

CabinatoModelloGiocoPrezzoFisso di base
DuoFightmic_arcade_duofightPicchiaduro per due giocatori o contro il computer0No (commentato)
Alienmic_arcade_alienAlien100No (commentato)
Breakoutmic_arcade_brickBreakout100No (commentato)
Pixelmic_arcade_pixelPixel100Sì
Racemic_arcade_raceRace100Sì
Towermic_arcade_towerTower100Sì
Roadmic_arcade_roadRoad100Sì
  • 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 Price continua ad applicarsi ai cabinati posizionati di quel modello.
  • Un prezzo pari a 0 rende 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.


Un oggetto cabinato (arcade_alien, arcade_race…) avvia il posizionamento:

TastoCosa fa
Guardarsi intornoSposta l’anteprima nel punto in cui stai guardando
Rotellina del mouseLo ruota
ELo posiziona e rimuove l’oggetto dall’inventario
ESC / BackspaceAnnulla; 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.


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.

RisultatoCosa succede
VittoriaIl vincitore riceve entrambe le puntate
PareggioOgni giocatore riottiene la propria puntata
Un giocatore si allontana a partita in corsoSi ritira: l’altro giocatore vince entrambe le puntate
Chi ospita si allontana prima che qualcuno si uniscaLa partita viene annullata; la puntata dell’host non è rimborsata
Un giocatore si disconnetteLa partita viene annullata, senza alcun pagamento

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/.


FileCosa copre
bridge/client_bridge.luaRilevamento 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.luaRilevamento 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.