Guía para un asistente de IA
Receta para montar una tienda con MCES en una misión de Arma Reforger (Enforce Script).
Dónde está todo
- Workshop: https://reforger.armaplatform.com/workshop/AE9A7FAB88A56E07 (GUID
AE9A7FAB88A56E07, versión publicada 1.0.0) - Código y documentación en Markdown: https://github.com/victoryil/MCES (rama
main, carpetadocs/) - Resumen para modelos: https://github.com/victoryil/MCES/blob/main/llms.txt
- Web: https://victoryil.github.io/MCES/
Pasos
- Dependencias. Añade
"B8DFCB8639E9DA37"(MCUIK) y"AE9A7FAB88A56E07"(MCES) aladdon.gproj. - Catálogo. Elige cómo darlo:
.conf: crea unMCES_ShopConfig(formato en Empezar) y regístralo conMCES_Shop.RegisterConfig(shopId, ruta).- Script: sobrescribe
GetCatalog.
Copia los prefabs de prefabs reales: busca rutas
{GUID}Prefabs/...eten el proyecto o en los mods instalados. Nunca inventes un GUID. - Proveedor. Hereda
MCES_ShopProvider:GetBalance(): el saldo del jugador local. Tiene que ser un valor replicado, por ejemplo un[RplProp()]de tu componente del modo de juego.Buy(...): se ejecuta en el servidor. Valida el artículo, el bloqueo, el precio del servidor, el saldo y la distancia al vendedor; cobra, entrega y devuelvetruecon un mensaje.
- Registro. Llama a
MCES_Shop.SetProvider(new MiProveedor())en servidor y clientes. Un buen sitio esOnPostInitdel componente del modo de juego, que corre en ambos. - Abrir. En el cliente, desde una
ScriptedUserAction(PerformAction, solo sipUserEntityes el jugador local) o desde un menú:MCES_Shop.Open(shopId, vendedor). - Probar.
- Compila en servidor dedicado.
- En un cliente: abre la tienda,
RequestBuypor código y comprueba que el saldo baja. - Busca «Virtual Machine Exception» en el log.
Reglas
| Regla | Por qué |
|---|---|
Buy es la única fuente de verdad: nunca confíes en el precio ni en el saldo que ve el cliente. | Un cliente modificado podría pedir lo que quisiera. |
| El proveedor se registra en ambos lados. | Sin él en el servidor, la compra responde «Esta tienda no tiene proveedor». |
m_sId de cada artículo, único y estable. | Es lo que viaja por red. |
Los bloqueos (m_bLocked) son visuales: vuelve a comprobarlos en Buy. | Ídem. |
Si tu misión ya avisa de las compras, deja OnResult vacío. | Si no, el jugador ve el aviso dos veces. |
Las reglas de Enforce Script de la guía de MCUIK también valen aquí: Color en variable local, palabras reservadas, % en Format. | Errores reales que ya han pasado. |
Archivos
| Archivo | Qué es |
|---|---|
Scripts/Game/MCES/MCES_Data.c | MCES_Category, MCES_Item, MCES_Extra y MCES_ShopConfig. |
Scripts/Game/MCES/MCES_Shop.c | MCES_ShopProvider (lo que heredas) y MCES_Shop (registro y apertura). |
Scripts/Game/MCES/MCES_Net.c | RPC de compra (modded SCR_PlayerControllerGroupComponent). |
Scripts/Game/MCES/MCES_ShopDialog.c | La ventana. |
Scripts/Game/MCES/MCES_Res.c | GUIDs de layouts y presets (generado). |
tools/build.py | Genera layouts, presets, metas y MCES_Res.c. |