Gym Creator 2.0 sustituye a Realistic Gym (qs-gym 1.x). Es una reescritura, no una actualización: el único gimnasio definido en la configuración antigua se convierte en cualquier número de gimnasios construidos en el juego, y los datos de los jugadores pasan de la antigua tabla gym_data a la nueva qs_gym_player_data. Las consultas de esta página trasladan la fuerza y resistencia de tus jugadores, para que nadie pierda su progreso.
Desde 1.x | En 2.0 |
|---|---|
Fuerza y resistencia | Se trasladan con la consulta de migración. |
Membresías activas | Opcional: el sistema antiguo tenía un único gimnasio global, el nuevo tiene una membresía por gimnasio. Consulta el paso 5. |
Ubicación del gimnasio, NPCs de recepción y puntos de ejercicio en | No se trasladan. Vuelve a construirlos con |
La tabla | Se mantiene intacta hasta que la elimines tú. |
Actualizar paso a paso#
Detén el servidor y haz una copia de seguridad de la base de datos
Exporta toda la base de datos, o al menos
gym_data, con HeidiSQL, phpMyAdmin o la herramienta de copias de seguridad de tu panel.Elimina Realistic Gym
Borra la antigua carpeta
qs-gymde tus recursos y quita su líneaensuredeserver.cfg. Dos versiones ejecutándose a la vez generarían NPCs y escribirían las mismas estadísticas nativas.Instala Gym Creator
Sigue Instalación: copia la nueva carpeta, añádela a
server.cfgdespués de tu framework e importadatabase/database.sql.Copia la fuerza y la resistencia
Realistic Gym guardaba cada personaje en una fila de
gym_data: el id del personaje encitizenidy todo lo demás como JSON endata. Ejecuta esta consulta en la misma base de datos: lee ambas estadísticas del JSON, las redondea hacia abajo y las mantiene entre 0 y 100:sql INSERT IGNORE INTO `qs_gym_player_data` (identifier, strength, stamina, last_decay) SELECT citizenid, LEAST(100, GREATEST(0, FLOOR(CAST(COALESCE(JSON_UNQUOTE(JSON_EXTRACT(`data`, '$.strength')), '0') AS DECIMAL(10,2))))), LEAST(100, GREATEST(0, FLOOR(CAST(COALESCE(JSON_UNQUOTE(JSON_EXTRACT(`data`, '$.stamina')), '0') AS DECIMAL(10,2))))), 0 FROM `gym_data` WHERE citizenid IS NOT NULL AND `data` IS NOT NULL;Es seguro ejecutarla más de una vez: se omiten los jugadores que ya tienen una fila. Ambas versiones identifican a un personaje de la misma forma, el
identifierde ESX o elcitizenidde QBCore / Qbox, así que cada fila llega al personaje correcto.Opcional: conserva las membresías activas
Inicia el servidor, construye tu primer gimnasio con
/gymcreatory anota su id: aparece en el título del editor, Edit gym #1. Después ejecuta esta consulta con@default_gym_idigual a ese id. Todos aquellos cuya membresía de 1.x aún no ha vencido conservan la misma fecha de vencimiento, en ese gimnasio:sql SET @default_gym_id = 1; UPDATE `qs_gym_player_data` p INNER JOIN `gym_data` g ON p.identifier = CONVERT(g.citizenid USING utf8mb4) COLLATE utf8mb4_unicode_ci SET p.membership_gym_id = @default_gym_id, p.membership_expiry = CAST(JSON_UNQUOTE(JSON_EXTRACT(g.`data`, '$.membershipExpiry')) AS UNSIGNED) WHERE CAST(COALESCE(JSON_UNQUOTE(JSON_EXTRACT(g.`data`, '$.membershipExpiry')), '0') AS UNSIGNED) > UNIX_TIMESTAMP();Vuelve a construir tus gimnasios
Usa
/gymcreatorpara colocar los gimnasios que tenías: el blip, la recepcionista, una estación por ejercicio y, si no usas ningún MLO, los bancos y pesas a su alrededor. Uso explica cada panel.Elimina la tabla antigua
Cuando hayas comprobado a algunos jugadores en el juego (
F10muestra sus estadísticas), elimina la tabla antigua:sql DROP TABLE gym_data;
Ambas consultas necesitan funciones JSON, disponibles en MySQL 5.7+ y MariaDB 10.2+, todas las versiones que admite oxmysql. Si obtienes
Unknown column 'identifier', ejecutaste una consulta escrita para otra estructura de tabla; usa las de esta página.
Qué cambió para los jugadores#
Un gimnasio es ahora un lugar en el mapa con su propia recepcionista, precio y duración de membresía: un servidor puede tener un gimnasio público barato y otro premium caro.
Una membresía pertenece a un gimnasio. Comprar una en otro gimnasio la traslada allí.
Las estadísticas siguen yendo de 0 a 100 y siguen alimentando la fuerza y la resistencia nativas de GTA, pero cada gimnasio decide cuánto da un entrenamiento y si sus miembros pierden estadísticas durante la noche.
Una serie completada da una recompensa fija, definida por ejercicio o por estación, en lugar de un rango aleatorio.
Los ejercicios de 1.x bench y dumbbells no están en el catálogo de 2.0. Las flexiones, los abdominales, las dominadas y los curls con barra sí lo están, junto con el nuevo saco de boxeo y la cinta de correr, y puedes añadir los tuyos en
config/exercises.lua(consulta Uso).F10activa o desactiva un pequeño HUD con ambas estadísticas.



