Cada jugador recibe los espacios libres que configures. Además de esos, puedes añadir espacios bloqueados: aparecen en la sala de selección con un candado, un botón Buy slot que abre tu tienda de Tebex y un campo donde el jugador pega el ID de transacción de su compra. El staff también puede desbloquearlos a mano con /addslot.
Cómo funcionan los espacios#
Espacio | Se configura con | Quién puede usarlo |
|---|---|---|
Libre |
| Todos. |
Bloqueado |
| Los jugadores que canjearon una compra de Tebex o a quienes el staff les dio el espacio. |
Los desbloqueos pertenecen a la licencia de Rockstar del jugador, no a un personaje, y se guardan en qs_multicharacter_slots. Los espacios bloqueados se abren en orden: la primera compra desbloquea el espacio bloqueado más bajo. Cuando todos los espacios bloqueados están abiertos, los canjes adicionales se rechazan con You have reached the maximum number of slots.
El espacio 0 siempre es libre. Si configuras
tebex = trueen el primer espacio, la consola imprime un error y el ajuste se ignora: todos los jugadores necesitan al menos un personaje.
Bloquear espacios#
En config/main.lua, activa tebex en cada espacio que quieras vender. Este ejemplo mantiene dos espacios libres y bloquea dos:
Config.CharacterPositions = {
[0] = { coords = vec3(-1009.08, -475.67, 48.49), heading = 201.25, lookAt = vec3(-1005.92, -478.54, 50.02),
animation = { [0] = { dict = 'anim@amb@office@boardroom@boss@male@', anim = 'base' }, [1] = { dict = 'anim@amb@office@boardroom@boss@male@', anim = 'base' } },
tebex = false },
[1] = { --[[ ... ]] tebex = false },
[2] = { --[[ ... ]] tebex = true }, -- locked
[3] = { --[[ ... ]] tebex = true }, -- locked
}Añadir más espacios#
El número de espacios es igual al número de entradas de Config.CharacterPositions. Un espacio nuevo necesita tres entradas, o su tarjeta nunca aparece:
Coloca el personaje
Añade
Config.CharacterPositions[4]con sus coordenadas, orientación, punto de mira, animaciones y el indicadortebex.Encuádralo con una cámara
Añade
4a la listaslotsde una cámara existente enConfig.CharacterCameraPositions, o añade una cámara nueva que lo enfoque.lua [2] = { coords = vec3(-1005.28, -476.46, 50.02), pointAt = vec3(-1004.95, -476.04, 50.02), slots = { 3, 4 } },Coloca la tarjeta
Añade una quinta entrada a
Config.CharacterSlotscon la posición de la tarjeta en pantalla:lua { position = 'fixed', left = '50vw', top = '40vh' },
Vender espacios en Tebex#
Multicharacter comprueba cada ID de transacción con la API de Tebex, así que primero tu servidor tiene que estar conectado a tu tienda de Tebex.
Abre Game Servers
En el panel de creador de Tebex, abre Integrations en el menú de la izquierda y luego Game Servers.

Tebex panel Integrations menu with the Game Servers option Conecta un servidor de juego
Pulsa Connect Game Server y elige Plugin.

Tebex Connect Game Server button 
Tebex plugin option for connecting a FiveM server Ponle nombre y copia el secreto
Dale un nombre al servidor y omite la parte de Packages. Tebex muestra entonces un comando con tu clave secreta: cópialo en
server.cfgy reinicia el servidor:bash sv_tebexSecret your-secret-keyCuando el indicador se ponga verde y diga Connected, pulsa Continue.

Naming the Tebex game server plugin 
Tebex secret command for server.cfg and connected indicator Crea el paquete del espacio
Ve a Packages, pulsa Add New → Package y dale un título, una descripción, una imagen y un precio. Una compra desbloquea un espacio.

Tebex Packages menu 
Tebex Add New Package button 
Tebex package details for a FiveM character slot Vincula la tienda
Pon la dirección de tu tienda en
Config.TebexUrlpara que el botón Buy slot la abra:lua Config.TebexUrl = 'https://your-store.tebex.io'
El paquete no necesita ningún comando de servidor de juego. El espacio se desbloquea cuando el comprador canjea su ID de transacción, así que un comando
addslot {transaction}que haya quedado de una guía antigua solo imprime un error en la consola: quítalo del paquete.
Cómo canjea el jugador#
Después de pagar, el jugador recibe en su recibo de Tebex un ID de transacción que empieza por tbx-. Puede canjearlo de dos formas:
En la sala de selección — en una tarjeta bloqueada, en Have a transaction ID?, pégalo y pulsa Redeem. El espacio se abre al instante.
En el juego — escribe
/addslot tbx-XXXXXXXXen el chat.
Cada ID funciona una sola vez. Un pago que no está completo, ya se usó o tu tienda no reconoce se rechaza, y el menú permite un intento cada tres segundos.
Paquetes únicos y mensuales#
Un espacio de un paquete único es permanente. Un espacio de un paquete mensual (recurrente) se vuelve a comprobar con Tebex y se bloquea solo cuando termina la suscripción: el personaje se conserva y la tarjeta muestra un candado hasta que se renueva la suscripción.
Tebex no indica si un paquete es mensual, así que enumera tú mismo los IDs de tus paquetes recurrentes:
Config.TebexAccess = {
SubscriptionPackageIds = {
[123456] = true, -- your monthly slot package
},
CheckCacheSeconds = 300, -- re-check a subscription at most every 5 minutes
FailOpenOnApiError = true, -- keep access if Tebex is down, instead of locking everyone out
}Para encontrar el ID de un paquete, abre creator.tebex.io, ve a Webstore → Packages, abre el paquete y copia el número al final de la URL (.../package/123456).
Dar espacios por comando#
Sin Tebex, o como regalo, reembolso o premio de un evento, un administrador desbloquea el siguiente espacio bloqueado de cualquier jugador conectado:
/addslot [server id]Ambos jugadores reciben un mensaje en el chat, y el desbloqueo se registra en qs_multicharacter_transactions con el tipo admin. Los desbloqueos de administrador son permanentes. Quién cuenta como administrador se indica en Comandos y exports.
¿Bloqueaste un espacio pero no usas Tebex? La consola te recuerda que falta
sv_tebexSecret. No pasa nada mientras solo desbloquees espacios con/addslot [server id]— el mensaje menciona/giveslot, pero el comando es/addslot.



