el índice de la tabla es nil
Un script intentó archivar algo bajo un nombre vacío, normalmente un id de jugador que todavía no estaba listo.
Haz esto primero
Suele pasar mientras alguien todavía está conectando. Fíjate si salta al entrar.
Qué significa
Se GUARDÓ algo en una tabla bajo una clave nil: t[k] = v donde k es nil. Leer con una clave nil es legal y devuelve nil; escribir con una es un error.
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
Una clave que vino de una búsqueda que falló
cache[GetPlayerIdentifier(src)] = datadonde el identificador es nil porque el jugador todavía no está conectado del todo. - 2
Una variable de bucle usada más allá del final
Guardar bajo
items[i]cuandoise salió de la lista. - 3
Un campo que no existe en el objeto
byJob[player.job.name] = xdonde el trabajo no tiene nombre. - 4
Una clave numérica que se volvió NaN
Dividir por cero o un
tonumber()sobre algo que no se puede analizar, y después usarlo como índice. Eso da «table index is NaN».
Cómo saber cuál es el tuyo
Imprimí la clave, no la tabla:
print('clave =', tostring(laClave))La línea es corta y la clave suele ser una sola expresión, así que esto la identifica de inmediato.
Dónde mirar
La asignación de la línea que nombra, concretamente lo que está dentro de los corchetes.
Cómo arreglarlo
Protegé la clave en el punto donde se produce:
local id = GetPlayerIdentifier(src, 0) if not id then return end cache[id] = data
¿Sigues atascado en tu propio código?
Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.
bug_reportAbrir el Server FixerPara este tipo de error, el Script Optimizer lee el script y repara el código que hay detrás.