Personalización
Casi todo está en un solo archivo, config.lua. Los dos archivos del bridge y los locales también están abiertos.
Qué archivo decide qué
Sección titulada «Qué archivo decide qué»| Archivo | Qué decide | ¿Abierto? |
|---|---|---|
config.lua | Idioma, moneda, interacción, límite de colocación, y cada máquina fija con su precio | Sí |
locales/*.lua | Los avisos, las notificaciones y las etiquetas del target | Sí |
bridge/client_bridge.lua | Detección del framework, lectura del dinero, notificaciones, texto de ayuda, y las zonas de ox-target / qb-target / drawtext | Sí |
bridge/server_bridge.lua | Cobrar y pagar dinero o fichas, nombres e ids de personaje, notificaciones, y los ítems de máquina usables | Sí |
items/ | Definiciones de ítems para ox, qb y ESX, y los iconos en items/images/ | Sí |
ui/ | El menú de la máquina y los siete juegos, cada uno en su carpeta dentro de ui/games/ | Sin escrow |
client/data.lua | Posición de la cámara y de la pantalla para cada modelo de máquina | Con escrow |
mic_arcade_props/ | Los modelos de máquina y el renderizador de pantalla | Solo assets |
General — config.lua
Sección titulada «General — config.lua»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.Locale | Qué archivo de locales/ se usa | 'en' |
Config.PaymentType | Con qué se paga una partida: cash, bank, both o item | 'item' |
Config.PaymentItem | El ítem que se usa como moneda cuando PaymentType es item | 'arcade_coin' |
Config.Interaction | ox-target (con guion), qb-target o drawtext | 'ox-target' |
Config.MaxArcadesPerPlayer | Cuántas máquinas colocadas puede tener un personaje a la vez | 3 |
Tipos de pago
Sección titulada «Tipos de pago»| Valor | Qué ocurre |
|---|---|
cash | Se paga en efectivo (en ESX, la cuenta money) |
bank | Se paga desde la cuenta bancaria |
both | Primero en efectivo; si no hay suficiente, el resto sale del banco |
item | Se paga en Config.PaymentItem, un ítem por cada unidad de precio |
La misma moneda se usa para las apuestas y los premios de DuoFight.
Máquinas y precios — Config.Arcades
Sección titulada «Máquinas y precios — Config.Arcades»Una entrada por modelo de máquina. Cada entrada tiene un Price y, opcionalmente, cualquier número de posiciones fijas (vec4 con x, y, z y heading) — se genera una máquina en cada una.
| Máquina | Modelo | Juego | Precio | Fija de serie |
|---|---|---|---|---|
| DuoFight | mic_arcade_duofight | Juego de lucha a dos jugadores, o contra la máquina | 0 | No (comentada) |
| Alien | mic_arcade_alien | Alien | 100 | No (comentada) |
| Breakout | mic_arcade_brick | Breakout | 100 | No (comentada) |
| 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í |
- Para añadir una máquina fija, añade una posición a la lista de ese modelo. Ponte donde la quieras, toma tus coordenadas y tu heading, y escríbelos.
- Para quitar una, borra o comenta su posición. El
Pricese sigue aplicando a las máquinas colocadas de ese modelo. - Un precio de
0hace que la máquina sea gratuita. - El origen de la máquina Breakout está más bajo que el de las demás — la posición de Breakout incluida está unos 0.7 más abajo en el eje z que sus vecinas. Haz lo mismo cuando añadas una.
El Price es también lo que cobra una máquina colocada de ese modelo.
Máquinas colocadas
Sección titulada «Máquinas colocadas»Un ítem de máquina (arcade_alien, arcade_race…) inicia la colocación:
| Tecla | Qué hace |
|---|---|
| Mirar alrededor | Mueve la vista previa adonde estás mirando |
| Rueda del ratón | La gira |
| E | La coloca y retira el ítem |
| ESC / Retroceso | Cancela; conservas el ítem |
El dueño — y solo el dueño — tiene la opción Pick Up Arcade (Recoger Arcade en es) sobre ella (con drawtext, la segunda tecla que aparece en el aviso). Recogerla devuelve el ítem. Una máquina que alguien está usando no se puede recoger.
Config.MaxArcadesPerPlayer cuenta las máquinas que un personaje tiene colocadas en ese momento.
Apuestas de DuoFight
Sección titulada «Apuestas de DuoFight»Al elegir dos jugadores en DuoFight se pide una apuesta: 1, 5, 25, 50 o 100, en tu moneda. El anfitrión la paga y espera en la máquina; al siguiente jugador que usa la máquina se le ofrece el combate y paga lo mismo para unirse.
| Resultado | Qué ocurre |
|---|---|
| Victoria | El ganador recibe las dos apuestas |
| Empate | Cada jugador recupera su apuesta |
| Un jugador se va a mitad del combate | Pierde por abandono: el otro jugador gana las dos apuestas |
| El anfitrión se va antes de que alguien se una | El combate se cancela; la apuesta del anfitrión no se devuelve |
| Un jugador se desconecta | El combate se cancela, sin pago |
Clasificaciones
Sección titulada «Clasificaciones»Todos los juegos menos DuoFight guardan la mejor puntuación de cada personaje en mic_arcade_leaderboard y muestran el top diez en la máquina. Los nombres son el nombre del personaje en tu framework. Para reiniciar una clasificación, vacía esa tabla (o las filas de un juego) con el servidor parado.
Idiomas
Sección titulada «Idiomas»Vienen diez en locales/: en, es, fr, de, it, pt, nl, ja, ru, zh. Pon el código en Config.Locale.
Para añadir uno, copia locales/en.lua a un archivo nuevo con el nombre de tu código, cambia Locales['en'] por tu código, traduce la parte derecha de cada línea y configura Config.Locale. Una clave que falta se muestra como Translation [xx][key] does not exist — no hay respaldo en inglés.
Los archivos de idioma cubren lo que muestra el mundo del juego: las etiquetas del target, los avisos de ayuda y las notificaciones. El texto dentro de los juegos forma parte de ui/games/.
El bridge
Sección titulada «El bridge»| Archivo | Qué cubre |
|---|---|
bridge/client_bridge.lua | Detección del framework, la cantidad de dinero o fichas que se muestra al jugador, Bridge.Notify, el texto de ayuda, y la zona de interacción de cada máquina para ox-target, qb-target o drawtext |
bridge/server_bridge.lua | Detección del framework, cobrar y pagar dinero o ítems (Bridge.RemoveMoney, Bridge.AddMoney), los ítems de máquina, nombre e id del personaje, notificaciones de servidor, y la lista de ítems de máquina usables |
Otro recurso de notificaciones: cambia Bridge.Notify en el archivo de cliente y Bridge.ServerNotify en el de servidor. Los mensajes de dinero insuficiente se envían desde Bridge.RemoveMoney.
Otro recurso de target: Bridge.RegisterArcadeInteraction y Bridge.RemoveArcadeInteraction en el archivo de cliente son los únicos sitios donde se toca el target.
Otro inventario: las fichas y los ítems de máquina se leen y se retiran a través de las funciones de jugador del propio framework en server_bridge.lua. Apunta Bridge.RemoveMoney, Bridge.AddMoney, Bridge.RemoveSpecificItem, Bridge.AddSpecificItem y Bridge.GetMoney a tu inventario si no responde a esas.
Un nuevo ítem usable para una máquina: la tabla UsableArcades al final de server_bridge.lua asocia cada ítem con su modelo de máquina.