Repository navigation
VXCore v0.10.25
VXCore v0.10.25
Los jugadores no podían entrar al servidor
Síntoma: el servidor arranca perfecto, se ve en la lista, responde — y al
conectar el cliente muere con
[json.exception.type_error.305] cannot use operator[] with a string argument with number
justo en Handshaking with server.... Un error que no menciona ni el binario ni
el build, a kilómetros de su causa.
La causa era nuestra. VXCore decidía qué ejecutable lanzar mirando el
sv_enforceGameBuild del server.cfg, y la comprobación era esta:
/sv_enforceGameBuild\s+(372|\d{4})/O sea: el build 372 o cualquier número de cuatro cifras se tomaban por GTA V
Enhanced. El razonamiento escrito al lado era «que un Legacy pida 3788 no tiene
sentido, ese build no existe para Legacy». Sí existe: 3788 es un build de
Legacy, como 1604, 2372, 2802, 3095, 3258, 3407 o 3570. Las dos numeraciones
no se solapan — Legacy lleva años en cuatro cifras y Enhanced empezó de cero y
va por tres.
Resultado: a cualquier servidor Legacy moderno que fijara su build se le
arrancaba el binario de Enhanced. El servidor levantaba sin quejarse y eran
los jugadores los que no entraban.
Lo que cambia
- La comprobación acepta ahora sólo builds de tres cifras o menos como
Enhanced. Con un test de regresión que recorre 1604, 2372, 2802, 3095, 3258,
3407, 3570 y 3788 y exige que todos elijanFXServer.exe. - El cfg manda sobre el marcador. Si el
server.cfgfija un build de cuatro
cifras, el servidor es Legacy aunque el marcador.vxcore-gamediga Enhanced:
el marcador dice con qué se creó, el cfg dice con qué puede arrancar hoy. Quien
pasó su servidor a Legacy y se dejó el marcador viejo ya no acaba con el
binario equivocado.
Además: dos fallos en la conexión de jugadores
En sv_agent.lua, el recurso in-game:
- Fantasmas en «conectándose». Los dos atajos del
playerConnecting—el de
la caché de whitelist y el del agente caído— dejaban entrar al jugador pero
nunca mandaban el aviso de fin, así que en el panel seguía apareciendo como que
estaba cargando hasta que la limpieza automática lo tiraba minuto y medio
después. El staff veía gente conectándose que ya estaba dentro. deferrals.done(nil)no esdeferrals.done(). Quien cuenta los argumentos
al otro lado los distingue, y de ahí salen los rechazos con motivo vacío. Ahora
todas las salidas pasan por el mismo sitio, con su rama explícita.
Instalación: la app se auto-actualiza en el próximo chequeo. Tras actualizar,
comprueba en la consola del agente que la línea de arranque dice
FXServer.exe y no cfx-server.exe.