[Module API] Errores |
Thetroz « Citoyen » 1380994920000
| 0 | ||
Hilo re-traducido al español, tema original en idioma inglés por Shamousey (Topic-458983) Este tema describe los diversos tipos de errores que LUA puede devolver y cubre brevemente cómo arreglarlos o evitar que suceda. Si encuentras un error en tu código, lee este tema y trata de resolverlo, si de veras necesitas ayuda puedes postear acá el código con etiqueta [spoiler] o subirlo a una web externa de códigos, como Pastebin, postea el error y los demás te ayudarán a resolverlo. Algunos mensajes de error contienen el número de línea, esto puede ser utilizado para encontrar donde está el errror. El error puede no estar en la línea exacta dada en el mensaje, pero puede encontrarse cerca. Un buen consejo es para saber cual es el error, es hacer print con las variables u otra información en diferentes lugares del código. Le puede resultar útil para saber si algo que usted hizo sirve o no. Esto no arreglará el código, pero puede servir para que veas que está mal. Un error común cuando algo no funciona correctamente es que se ha redefinido. La última definición de código reemplaza la primera, por ejemplo aquí hay dos eventPlayerEmotes e indica que solo la última función funcionará. function eventEmotePlayed(name,emote) tfm.exec.giveCheese(name) end function eventEmotePlayed(name,emote) print("Éste ha redefinido la función anterior, tan sólo éste funcionará.") end Para solucionarlo, combina el contenido de ambas funciones. function eventEmotePlayed(name) tfm.exec.giveCheese(name) print("Esto funciona.") end Debajo de todos los errores hay un ejemplo de los diferentes tipos de errores y una breve descripción. Init es una abreviación de "inicialización" y significa que el código no conseguía ejecutar correctamente como se cargó. [•] Attempt to call nil. Este error se produce cuando una línea está intentando utilizar una variable que es nil (nula, nada). Esto ocurre a menudo cuando las cosas todavía no han sido creadas y están en el orden equivocado o una cierta función no ha sido ejecutada. print(test) test="Hola." Otro ejemplo que puede causar este error es incorrecta capitalización. LUA es sensible a mayúsculas, para escribir una función o el nombre de variable sin la capitalización correcta intentará llamar a uno de la misma capitalización. Print("Test.")[ [•] Index expected, got nil. Tratando de definir o llamar a un elemento en una tabla que no existe causará un error como este. tbl[1] = "Esto se romperá, ya que no existe "tbl"." [•] ')' expected (to close '(' at line [num]) Si se produce este error, es por que falta un paréntesis que cierre los argumentos de la función. print("Hola [•] '' expected. Este error puede aparecer en varias situaciones diferentes, el más común es cuando se utiliza una instrucción elseif cuando no tiene ninguna abertura correspondiente if. elseif < then print("No hay ninguna apertura if.") end [•] Multiple points. Los números sólo pueden tener un único punto decimal, tratando de tener múltiples puntos decimales en un número dará error. --Único punto decimal, esto está bien. 20.43 --Múltiples puntos decimales, esto está mal. 20.43.9.1 [•] Unfinished (long) comment/string. Los operadores de la cadena deben estar cerrados cuando se utilizan. Si el mensaje de error se refiere a un "long" comment/string, usando el operador multilínea [[...]] fue la causa del error. text="Esto es una definición de variable que nunca termine --[[ Este comentario que no está cerrado, por ejemplo. [•] Nesting of [[...]] is deprecated. Strings multi-línea no pueden tener más líneas múltiples dentro. --[[Esto es un comentario [[esto es dentro del comentario.]] Este es el final del comentario.]] [•] Attempt to index ? (a nil value). Este error ocurre cuando se trata de usar un elemento de una tabla que no existe. tbl={} print(tbl[1]) [•] Null Este es un error causado en el Module API y no puede ser resuelto. En ocasiones no se puede ejecutar algunos comando en una sala. [•] Attempt to concatenate [data] and [data]. Diferentes tipos de datos no pueden ser concatenados junto con el operador, con la excepción de los strings y los números. --Esto funcionará "Text "..34 --Esto no funcionará {"Esto","es","una","tabla"}.."string" nil..{"tabla"} nil.."string" function().."string" [•] Attempt to perform arithmetic on a [data] value. Diferentes tipos de datos no pueden tener ninguna aritmética realizada en ellos a menos que sean números. {"tabla"}+4 [•] Attempt to compare [data] with [data]. Tanto cómo la aritmética no se puede realizar en diferentes tipos de datos, ellos no pueden compararse con los operadores de comparación. if {"tabla"} > 4 then print("Esto le dará un error.") end [•] [data] expected, got [data]. Cuando se espera un cierto tipo de datos en una función, pero se da otro, se producirá este error. for key,value in pairs("string") do print("El de bucle anterior está esperando una tabla") end [•] Lua destroyed : Runtime can't exceed 40 ms in 4 seconds ! function eventLoop() for i=1,1000000 do --Esta es la causa del error. end end [•] Lua destroyed: Runtime too long! for i=1,10000000000 do --Esto causa el error. end Errores de argumento raramente dejan que el script deje de trabajar, y actuan con mas precaución cuando la propiedad no funciona. [•] Argument must be integer. Este error se produce cuando un argumento en una función está esperando un número entero pero está recibiendo otro tipo de datos. Por ejemplo, tfm.exec.movePlayer(name,"text",200) espera un número en el segundo argumento. [•] vm error: java.lang.ArrayIndexOutOfBoundsException: 256 Este error puede ser causado por varias cosas, pero es más comúnmente cuando algo se repite indefinidamente. Un ejemplo podría ser una función que llama a sí mismo. function a() a() end a() [•] You don't have the right to use this function. Algunas funciones están deshabilitadas en la casa de la tribu, incluyendo las siguientes. tfm.exec.chatMessage() system.newTimer() system.removeTimer() system.saveFile() system.loadFile() Dernière modification le 1434329760000 |
Mitsnara « Citoyen » 1380995040000
| 0 | ||
errores, errores everywhere ------- buen hilo troz :D |
Alejocapocr « Citoyen » 1380997500000
| 0 | ||
a nadie le interesa imprimir de 1000 maneraaaaaaaas :D |
Phyrra « Citoyen » 1381012200000
| 0 | ||
Gracias por la traduccion, ahora la comunidad hispana tenemos tutorial para que podamos aprender sin limitaciones por no comprender el idioma (Ya que el otro estaba en ingles y tal) con tu traduccion y la de gastuu. Saludos |
Norsewolf « Citoyen » 1381054200000
| 0 | ||
Buen hilo, pero te digo lo mismo que a Gastuu, te recomiendo releer lo que has escrito y editar algunas expresiones que suenan mal. Gracias por el aporte!! |
Thetroz « Citoyen » 1381071360000
| 0 | ||
Phyrra a dit : Gracias^^' Norsewolf a dit : Listo, cualquier cosa mala, me avisan y se los agradecería! Gracias^^' |
0 | ||
google traductor doesnt work my friend |
Thetroz « Citoyen » 1381075200000
| 0 | ||
Moderar post Dernière modification le 1434327840000 |
0 | ||
no necesito pruebas tu mismo lo sabes |
Thetroz « Citoyen » 1381076340000
| 0 | ||
Moderar post Dernière modification le 1434327900000 |
0 | ||
es lo mismo, lo hiciste con traductor, so tenia razon |
Thetroz « Citoyen » 1381076460000
| 0 | ||
Moderar post Dernière modification le 1434327900000 |
Superclubss 1382409960000
| | ||
[Modéré par Mintflowers, raison : Insultos / Spam] |
Thetroz « Citoyen » 1434329820000
| 0 | ||
Se ha corregido un poco lo que es la traducción y diseño. Errores o algo que no entiendan avisarme. |
Bbrando « Citoyen » 1587346740000
| 0 | ||
k = { type = 0, -- Cambialo por la ID de un suelo. width = 100, height = 30, friction = 1, restitution = 1, } x = { type = 0, -- Cambialo por la ID de un suelo. width = 100, height = 30, friction = 1, restitution = 0, } como ago para que funsione los 2 |