ElRaulxX

[GU�A] Problemas más comunes en quests

Hace un rato vi esta guía, aporte (o como queráis llamarlo) que me pareció muy interesante. Se trata de los errores más comunes en la inserción de quests en nuestros servidores (errores de sintaxis, errores de compilación...).

Esta guía la veo yo más enfocada hacia los más novatos, pues con la práctica aprendes el significado de estos errores y su solución. Aún así, estoy seguro que muchas personas aprenderán algo que no sabían.

 

RECALCO que esta guía no es creada por mí, sino que tan solo es traducida al español y un poco ampliada con mis conocimientos.

Aquí os dejo el post original de .Alessa en elitepvpers:

 

 

Bueno, pues vamos al lío xd

 

Antes de empezar:

Como esta guía es general para cualquier quest, utilizaremos variables [X]. Es decir, esta variable puede ser diferente en cada caso y substituida por cualquier cosa.

 

 

1. when doesn't have begin-end clause

 

Error de sintaxis: when doesn't have begin-end clause. ([X])

[X]:[X]: Error occured on compile [X]

Significado: "when" no sigue la estructura begin-end

Análisis: Este error se produce cuando el conjunto del "when" no sigue la sintaxis apropiada. Seguramente, la razón de este error es un error de escritura o falta de un "begin". Es también común intercambiar un "begin" por un "then". Debemos recordar siempre que un when sigue la estructura: when [X] begin - end.

Corrección: Buscar los "when" en nuestra quest y asegurarnos que sigue la sintaxis apropiada.

when [X] begin

[acción]

end

Imagen ejemplo: Imagen enviada

Imagen ejemplo - solución: Hemos cometido un error de escritura: ha sido intercambiado el "begin" por "begn"

 

 

2.`[X]' expected near `[X]'

 

Error de sintaxis: syntax error : [string "[X]"]:[X]: `[X]´ expected near `[x]´

[X]:[X]: Error occured on compile [X]

Significado: No ha sido especificado algo requerido por la sintaxis (acostumbra a ser especificado en el lugar de nuestras variables [X]).

Análisis: Este error es similar anterior, pero acostumbra a darse en condiciones (if). La sintaxis es incorrecta: el servidor espera encontrar un "then" después de la condición, pero no lo encuentra. Como en el caso anterior, acostumbra a darse por fallos en la escritura o intercambio del "then" por "begin".

Corrección: Corregir la sintaxis. Podemos saber aproximadamente donde esta el error por "expected near". Estos errores acostumbran a estar relacionados con los "if". Recordemos que la sintaxis apropiada es:

if [X] == [X] then

[acción]

end

*A veces es posible que los operadores estén invertidos. Recuerda que en todos los operadores que utilizamos que contienen más de un signo (>=, <=, !=, ==,...), el último signo siempre es es el "=".

Imagen ejemplo: Imagen enviada

Imagen ejemplo - solución: Hemos cometido un error de sintaxis: el servidor espera encontrar un "then", pero no lo encuentra. La solución sería especificar el "then" junto a nuestra condición.

 

 

3. Calls undeclared function!

 

Error de sintaxis: Calls undeclared function!

[X]

Error occured on compile [X].[X]

Significado: El servidor no detecta una función.

Análisis: El servidor ha encontrado en nuestra quest una función que no ha sido especificada. Por lo tanto, no posee esa información y no puede realizar ninguna acción.

Corrección: Debemos revisar la sintaxis: es posible que la función no esté bien escrita. También debemos revisar que nuestra función se encuentre en el archivo quest_functions (recordemos que si queremos crear una nueva función, debemos crearla en questlib.lua y especificarla en quest_functions para que la reconozca el servidor). Si queremos especificar una función que ha sido escrita dentro de una quest, tenemos que utilizar la siguiente sintaxis:

nombredelaquest.nombredelafuncion (en vez de escribir tan solo la función)

Imagen ejemplo: Imagen enviada

Imagen ejemplo - solución: Debemos especificar en el archivo quest_functions la función say_item_vnum

 

 

4. assertion failure

 

Error de sintaxis: assertion failure : nested==0

[X]:[X]:Error occured on compile [X]

Significado: Estructura equivocada.

Análisis:La sintaxis general de la quest no es correcta. Este error puede darse en muchas ocasiones. Por ejemplo, este error se da cuando hay demasiados "end" o falta alguno.

Corrección:

  • Revisar que la sintaxis "quest [X] begin" está cerrada con un "end".
  • Revisar que todos los "when" están cerrados con un "end".
  • Revisar que todas las condiciones (if) están cerradas por un "end".
  • Revisar que todos los "state" están cerrados por un "end".
Imagen ejemplo: Imagen enviada

Imagen ejemplo - solución: Nuestro "when" no está cerrado con un "end".

 

 

5. expecting state

 

Error de sintaxis: expecting 'state'

[X]:[X]:Error occured on compile [X]

Significado: Es necesario un state: la estructura de "state" no es correcta.

Análisis: Hay un error de sintaxis o es necesario un state. Este error sucede, por ejemplo, cuando un "when" está fuera de un "state".

Corrección: Revisar que todos los "when" y "if" están dentro de un state. Revisar que los "state" están bien colocados y cerrados con un "end".

Imagen ejemplo: Imagen enviada

 

 

6. state name not found

 

Error de sintaxis: [X]:[X]:state name not found : [X]

Error occured on compile [X]

Significado: El servidor no encuentra un "state".

Análisis: El uso o búsqueda de un "state" no es encontrado. Este error se da, por ejemplo, cuando utilizamos la función "set_state()" y el "state" definido en esta función no se encuentra dentro de la quest.

Corrección: Asegúrate que todos los "state" definidos son correctos, la función que los utiliza está el "state" bien escrito y que todos los "state" están cerrados con un "end".

Imagen ejemplo: Imagen enviada

 

 

7. must start with 'quest'

 

Error de sintaxis: must start with 'quest'

[X]:[X]:Error occured on compile [X]

Significado: La quest debe empezar con 'quest'.

Análisis: Toda quest debe ser iniciada con "quest [X] begin" y cerrada con un "end".

Corrección:

  • Asegúrate que la quest empieza con la sintaxis "quest [X] begin".
  • Asegúrate que no hay nada fuera de el bloque "quest [X] begin" - end.
  • Asegúrate que no has cometido un error de escritura en la forma típica de inicio de la quest.
Imagen ejemplo: Imagen enviada

 

 

 

8. Trying/attempt to compare number with nil

 

Error de sintaxis: Trying/attempt to compare number with nil (se muestra en el Syserr)

Significado: Al servidor le es imposible comparar un dato con nil.

Análisis: Nil es lo que se le da a algo que no tiene valor. Es similar al 0, es decir, la nada, algo que no existe. Teniendo esto en cuenta, es lógico pensar que el servidor no pueda comparar algo con la nada.

Corrección:

Revisar que todas las variables o funciones que se comparen (a través de una sentencia if) tengan un valor definido previamente.

 

 

Y eso es todo.

Si os aparece algún otro error relacionado con quest, decírmelo. Ampliaré la guía sin ayuda de Alessa xd

 

Un saludo ;)

KeKo, UnavaRicneape, Migcia y a 2 mas les gusta esto

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

Muy buena raul, ya habia visto la guia en epvp y tmbn pensaba en tradcirla pero te me adelantaste xd.

 

Sobre el nil es el unico que solo me salio una vez escribiendo quests. Un nil representa un conjunto vacio y las pocas veces que lo tengo visto haciendo quests es cuando aparece in input y se quiere poner la restriccion de si no escribes nada. Si a alguien le sale este error que revisen la quest porque lo mas seguro es que esten intentando mostrar un dato que no existe, cosas como un local que se muestra pero al que no se le asigna valor.

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

Disculpen, podrían reparar lo de las tildes, es un poco incomodo leer la guía así.

Compartir esta publicación


Enlace a la publicación
Compartir en otros sitios

Crear una cuenta o conéctate para comentar

Tienes que ser miembro para dejar un comentario

Crear una cuenta

Regístrese para obtener una cuenta nueva en nuestra comunidad. ¡Es fácil!


Registrar una nueva cuenta

Conectar

¿Ya tienes una cuenta? Conéctate aquí.


Conectar ahora

  • Recientemente navegando por este tema   0 miembros

    No hay usuarios registrados visitando esta página.