Trata la carpeta del recurso como un paquete de publicación, no como tu directorio de trabajo. Debe contener los archivos listos para el juego y un manifiesto claro. Las copias de Blender, los proyectos del editor y las exportaciones sin convertir deben estar aparte.
Empieza con un directorio limpio
Para un interior personalizado pequeño, usa una estructura como esta:
cw_workshop/
fxmanifest.lua
stream/
cw_workshop.ymap
cw_workshop.ytyp
cw_workshop_shell.ydr
cw_workshop_col.ybn
Es un inventario de ejemplo, no una lista exhaustiva para todos los proyectos. Añade las texturas y demás dependencias reales de tus exportaciones. Los nombres deben coincidir con tus assets y referencias, no solo parecerse al ejemplo.
Escribe el manifiesto del recurso
Para el único YTYP del ejemplo:
fx_version 'cerulean'
game 'gta5'
this_is_a_map 'yes'
files {
'stream/cw_workshop.ytyp'
}
data_file 'DLC_ITYP_REQUEST' 'stream/cw_workshop.ytyp'
Cfx.re documenta las directivas de recursos en su referencia de manifiestos y el tipo de registro YTYP en su referencia de archivos de datos.
Para varios YTYP personalizados, enumera archivos y registros coherentemente o usa los patrones glob documentados de forma deliberada. No registres archivos que no entregarás. Un mapa que solo coloca arquetipos existentes puede usar un manifiesto menor, como en el tutorial del primer YMAP.
El herramienta de manifiestos genera este pequeño ejemplo en el navegador. No inspecciona tus assets ni valida un MLO completo.
No confundas los manifiestos
Un manifiesto de mapa del juego generado por CodeWalker no es fxmanifest.lua. Del mismo modo, un archivo .cwproj no es un mapa del juego y no puede transmitirse en lugar de sus exportaciones.
Usa las salidas nativas producidas por tus herramientas. Cambiar una extensión no es convertir. Mantén la carpeta de intercambio fuera de la publicación para detectar copias accidentales.
Inícialo en un servidor de desarrollo
Coloca el recurso en el directorio de recursos del servidor. Las carpetas de categorías, como [maps] organizan proyectos; el nombre del comando debe seguir coincidiendo con la carpeta real del recurso.
Desde la consola del servidor:
refresh
ensure cw_workshop
Guarda la línea adecuada ensure en la configuración del servidor para los próximos inicios. Comprueba la salida del servidor; escribir un comando no demuestra que cargue correctamente. La documentación de comandos del servidor es la referencia para el comportamiento de los comandos.
Visita las coordenadas de prueba registradas. Un recurso puede iniciarse sin colocar el contenido donde esperabas; comprueba la colocación aparte del inicio.
Prueba el paquete entregado, no tu espacio de trabajo
Copia solo la carpeta candidata a una ubicación de prueba limpia. Compara su lista de archivos con las exportaciones previstas. Si el mapa solo funciona con otro recurso experimental activo, identifica esa dependencia en lugar de dejarla implícita.
Prueba la reconexión, la aproximación desde fuera y el inicio del servidor con el recurso configurado desde el principio. Para un MLO, repite también las rutas de habitaciones, portales y colisión de las lecciones correspondientes.
Mantén separadas las salidas Legacy y Enhanced. La nota sobre ediciones explica por qué una prueba Legacy anterior correcta no demuestra compatibilidad con Enhanced.
Haz reversibles las actualizaciones
Asigna una versión a la carpeta o archivo de publicación y conserva el paquete funcional anterior. Registra los cambios exactos y la ruta probada. En un servidor compartido, sigue el mantenimiento del operador en lugar de experimentar con jugadores conectados.
Tras un despliegue fallido, restaura junto todo el conjunto funcional conocido. Mezclar un YMAP antiguo con un YTYP o colisión nuevos complica la reversión. Una publicación reproducible se identifica, reproduce y sustituye como una unidad.
Instala un YMAP que use solo objetos del juego
Usa una carpeta de recurso nueva, por ejemplo cw_three_props, con fxmanifest.lua en su raíz y el nativo YMAP dentro de stream/. Mantén el JSON del proyecto y el XML de intercambio fuera del directorio stream entregado. Para el ejemplo sencillo, el manifiesto puede ser:
fx_version 'cerulean'
game 'gta5'
this_is_a_map 'yes'
Esto supone que todos los arquetipos ya estén disponibles en el juego y DLC de destino. Un modelo personalizado puede necesitar su definición y dependencias incluso con una sola colocación YMAP. Usa el generador con la opción personalizada desactivada solo cuando se cumpla esa condición.
Registra un YTYP personalizado con su nombre de archivo real
Si proporcionas stream/cw_workshop_types.ytyp, el recurso debe declarar ese archivo real. El nombre de la carpeta no obliga al YTYP a usar el mismo nombre base:
files {
'stream/cw_workshop_types.ytyp'
}
data_file 'DLC_ITYP_REQUEST' 'stream/cw_workshop_types.ytyp'
Añade esto al manifiesto del mapa, no al XML YMAP. La referencia de archivos de datos de Cfx.re identifica este tipo de registro. Varias definiciones necesitan declaraciones correspondientes; los assets entre recursos requieren también un plan documentado de dependencias e inicio. El generador maneja un YTYP opcional, no todo un grafo de dependencias.
Aísla los fallos de inicio del recurso
Ejecuta refresh después de añadir una carpeta de recurso y después ensure cw_three_props con el nombre real de tu carpeta. Revisa la consola antes del mapa. Si no se reconoce el recurso, comprueba las carpetas anidadas y el nombre del manifiesto; ante un error de análisis Lua, comprueba la sintaxis. Guarda sin un sufijo oculto .txt .
El mensaje «ensure succeeded» demuestra el inicio, no la validez de los assets. Reconéctate, visita las coordenadas exactas y comprueba todas las colocaciones. Para contenido invisible o parpadeos ligados a puertas, continúa con el diagnóstico basado en síntomas. Mantén los ejemplos fuente fuera de producción hasta realizar sus etapas independientes nativas y dentro del juego.