CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 16 Jul 2020 06:03

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 32 mensajes ]  Ir a página 1, 2, 3  Siguiente
Autor Mensaje
NotaPublicado: 29 Jun 2010 16:15 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Pues creo que es un buen momento para hacerlo.:)
¿Me explicas el método?

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 29 Jun 2010 16:39 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Vale, vamos allá.

En primer lugar, échale un ojo al fichero "messages.lan" que está dentro del .jar (como el verbos.lan, etc.)

Ese fichero *no* lo tienes que editar para cambiar los mensajes por defecto de tu aventura (ya que tiene mensajes por defecto del AGE en general, no de una aventura específica). Pero el fichero sí te da los datos que necesitas para cambiar los mensajes. Por ejemplo, verás entradas como

Código:
#Cuando no puedes coger un item porque no es cogible (fijo en el sitio)
denial.get.ungettable=No tiene mucho sentido intentar coger $item.\n


La línea que empieza con # es simplemente un comentario que explica de qué va el mensaje. El texto "denial.get.ungettable" es el nombre que identifica ese mensaje por defecto. El texto "No tiene mucho sentido intentar coger $item" es el mensaje en sí, donde las cosas que tienen el símbolo del dólar se van a sustituir por nombres de entidades (normalmente debería ser obvio por el contexto cuáles: en este caso, por ejemplo, por el Item que el jugador intentaba coger).

Una vez que sabes el nombre de los mensajes que quieres cambiar y las variables "dólar" que soportan, hay varias formas de cambiarlos:

1. Para cambiar un mensaje individual, por ejemplo, si quisieras que el parser dijera ese mensaje con acento chino peliculero:

Código:
world.getMessages().setMessage( "denial.get.ungettable" , "No tiene mucho sentido intental cogel $1" );


2. Para cambiar todos los mensajes en bloque:

- Primero, creas un fichero como el messages.lan (lo más fácil, por supuesto, es hacer una copia del messages.lan y modificarlo).
- Lo metes en el directorio del mundo.
- Haces que el mundo ejecute el siguiente código:

Código:
world.loadMessages(world.getResource("nombrefichero.lan"));


Y se cargarán todos los mensajes por defecto de ese fichero.

El segundo método es el mejor para personalizar una aventura completa. El primero te puede ser útil si quieres cambiar sólo unos pocos mensajes.

Si vas a cambiar los mensajes a lo largo de toda la aventura, como sería lo más común, lo normal sería que ejecutes uno de estos códigos en el método intro (ya que se ejecuta al principio de todo). Si quisieras tener diferentes mensajes en distintas partes de la historia, podrías ejecutarlo en cualquier punto de la misma para cambiarlos a partir de entonces (y podrías tener varios ficheros de mensajes, etc.)

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 30 Jun 2010 13:50 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Una pregunta más, que el parser imprima la descripción del objeto cuando se coge no tiene nada que ver con esto ¿no?
Es que es un poco molesto que se imprima la descripción l coger cosas, sobre todo si dichas descripciones son largas.
¿Se puede evitar eso de alguna manera?

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 30 Jun 2010 14:10 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
No, lo de la descripción no es un mensaje por defecto, así que no lo puedes cambiar de esta manera.

Creo recordar que sí que se puede quitar, porque me parece que esto ya me lo habías dicho hace tiempo y entonces había implementado una forma de quitarlo (cuando me dijiste también que no te gustaba lo de "pesará unos 2 kilos", etc, que quité aquello por defecto y lo de la descripción no lo quité por defecto pero sí di la opción de quitarlo, si no recuerdo mal). Pero ahora mismo no recuerdo cuál es esa forma. Ahora mismo no tengo acceso al AGE, esta noche miro y te lo digo.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 01 Jul 2010 15:49 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
V
- Primero, creas un fichero como el messages.lan (lo más fácil, por supuesto, es hacer una copia del messages.lan y modificarlo).
- Lo metes en el directorio del mundo.
- Haces que el mundo ejecute el siguiente código:

Código:
world.loadMessages(world.getResource("nombrefichero.lan"));




¿En qué parte del objeto mundo debo introducirlo?
He probado fuera de los métodos como un include y dentro de la intro y en ambos casos me da error.

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 01 Jul 2010 15:58 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
jenesis escribió:
¿En qué parte del objeto mundo debo introducirlo?
He probado fuera de los métodos como un include y dentro de la intro y en ambos casos me da error.


Fuera de los métodos no, en la intro debería funcionar... pero esto es la típica funcionalidad que lleva tiempo implementada pero que yo nunca he usado, así que, aunque el otro día hice alguna prueba pequeñita, no me extrañaría que pudiese haber algún bug. ¿Cuál es el error que te da?

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 01 Jul 2010 16:38 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Este es el error dentro de la intro.

Error: java.lang.NullPointerException
Location: inline evaluation of: ``//objeto mundo include("lib/noaccents.bsh"); //world.loadMessages(world.getReso . . . ''
Line: 27
Offending text: world .loadMessages ( world .getResource ( "guerrero.lan" ) )
Message: Sourced file: inline evaluation of: ``intro( arg0);'' : Method Invocation world.loadMessages
Detailed trace: Sourced file: inline evaluation of: ``intro( arg0);'' : Method Invocation world.loadMessages : at Line: 27 : in file: inline evaluation of: ``//objeto mundo include("lib/noaccents.bsh"); //world.loadMessages(world.getReso . . . '' : world .loadMessages ( world .getResource ( "guerrero.lan" ) )

Called from method: intro : at Line: 1 : in file: inline evaluation of: ``intro( arg0);'' : intro ( arg0 )
Target exception: java.lang.NullPointerException

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 01 Jul 2010 16:56 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Creo que ya he localizado el problema. Es culpa mía, un bug en lo de cargar el fichero de mensajes que no lo adapté bien a la nueva forma de acceder a ficheros desde que hice lo del applet. Arreglarlo debería ser cosa de un par de líneas de código, así que a ver si esta noche (o última hora de la tarde) lo hago y te mando una versión con el arreglo aunque no sea versión "oficial".

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 01 Jul 2010 20:51 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Versión con el problema arreglado, y que al menos aquí he comprobado que funciona:

http://dl.dropbox.com/u/1941813/AgeDeve ... 012146.zip

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 02 Jul 2010 09:23 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
Versión con el problema arreglado, y que al menos aquí he comprobado que funciona:

http://dl.dropbox.com/u/1941813/AgeDeve ... 012146.zip


Pues me da error, y lo malo es que me lo da esté la línea comentada o no.


void intro( Player aCreature )
{
world.loadMessages(world.getResource("guerrero.lan"))

Spoiler: Mostrar
Syntax error in BeanShell code in object: [World: guerrer, internal handle eu.irreality.age.World@1b6d0c7]
Loaded to call method assignPlayer
With arguments: eu.irreality.age.ColoredSwingClient@144e6d4
File: inline evaluation of: ``//objeto mundo include("lib/noaccents.bsh"); String preprocessCommand ( Pl . . . ''
Stack trace: Parse error at line 28, column 1. Encountered: mobile
at bsh.Parser.generateParseException(Unknown Source)
at bsh.Parser.jj_consume_token(Unknown Source)
at bsh.Parser.Statement(Unknown Source)
at bsh.Parser.BlockStatement(Unknown Source)
at bsh.Parser.Block(Unknown Source)
at bsh.Parser.MethodDeclaration(Unknown Source)
at bsh.Parser.BlockStatement(Unknown Source)
at bsh.Parser.Line(Unknown Source)
at bsh.Interpreter.Line(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at eu.irreality.age.ObjectCode.run(ObjectCode.java:304)
at eu.irreality.age.World.execCode(World.java:2050)
at eu.irreality.age.World.runAssignPlayerCode(World.java:2411)
at eu.irreality.age.World.loadWorldFromXML(World.java:794)
at eu.irreality.age.World.loadWorldFromStream(World.java:1416)
at eu.irreality.age.World.<init>(World.java:1502)
at eu.irreality.age.filemanagement.WorldLoader.loadWorldFromPath(WorldLoader.java:35)
at eu.irreality.age.filemanagement.WorldLoader.loadWorld(WorldLoader.java:150)
at eu.irreality.age.swing.sdi.SwingSDIInterface$LoaderThread.run(SwingSDIInterface.java:257)

Cause report: [no exception]
Inicializando habitaciones...
101 entidades cargadas.
Completando cargas diferidas...



void intro( Player aCreature )
{
//world.loadMessages(world.getResource("guerrero.lan"))

Spoiler: Mostrar
bsh.TargetError found at intro routine
**
Error: java.lang.NullPointerException
Location: inline evaluation of: ``//objeto mundo include("lib/noaccents.bsh"); String preprocessCommand ( Pl . . . ''
Line: 43
Offending text: theClient .useImage ( world .getWorldPath ( ) + "foto.jpg" , ImageConstants .FRAME , ImageConstants .TOP , ImageConstants .NO_SCALING )
Message: Sourced file: inline evaluation of: ``intro( arg0);'' : Method Invocation theClient.useImage
Detailed trace: Sourced file: inline evaluation of: ``intro( arg0);'' : Method Invocation theClient.useImage : at Line: 43 : in file: inline evaluation of: ``//objeto mundo include("lib/noaccents.bsh"); String preprocessCommand ( Pl . . . '' : theClient .useImage ( world .getWorldPath ( ) + "foto.jpg" , ImageConstants .FRAME , ImageConstants .TOP , ImageConstants .NO_SCALING )

Target exception: java.lang.NullPointerException

at bsh.BSHMethodInvocation.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHBlock.evalBlock(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BSHIfStatement.eval(Unknown Source)
at bsh.BSHBlock.evalBlock(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BshMethod.invokeImpl(Unknown Source)
at bsh.BshMethod.invoke(Unknown Source)
at bsh.BshMethod.invoke(Unknown Source)
at bsh.Name.invokeLocalMethod(Unknown Source)
at bsh.Name.invokeMethod(Unknown Source)
at bsh.BSHMethodInvocation.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at eu.irreality.age.ObjectCode.run(ObjectCode.java:196)
at eu.irreality.age.World.execCode(World.java:2039)
at eu.irreality.age.World.executePlayerIntro(World.java:2540)
at eu.irreality.age.GameEngineThread.run(GameEngineThread.java:269)

Target report: java.lang.NullPointerException
at eu.irreality.age.ColoredSwingClient.showImageInFrame(ColoredSwingClient.java:1183)
at eu.irreality.age.ColoredSwingClient.showImageInFrame(ColoredSwingClient.java:1195)
at eu.irreality.age.ColoredSwingClient.useImage(ColoredSwingClient.java:1228)
at eu.irreality.age.ColoredSwingClient.useImage(ColoredSwingClient.java:1232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at bsh.Reflect.invokeMethod(Unknown Source)
at bsh.Reflect.invokeObjectMethod(Unknown Source)
at bsh.Name.invokeMethod(Unknown Source)
at bsh.BSHMethodInvocation.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHBlock.evalBlock(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BSHIfStatement.eval(Unknown Source)
at bsh.BSHBlock.evalBlock(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BshMethod.invokeImpl(Unknown Source)
at bsh.BshMethod.invoke(Unknown Source)
at bsh.BshMethod.invoke(Unknown Source)
at bsh.Name.invokeLocalMethod(Unknown Source)
at bsh.Name.invokeMethod(Unknown Source)
at bsh.BSHMethodInvocation.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at eu.irreality.age.ObjectCode.run(ObjectCode.java:196)
at eu.irreality.age.World.execCode(World.java:2039)
at eu.irreality.age.World.executePlayerIntro(World.java:2540)
at eu.irreality.age.GameEngineThread.run(GameEngineThread.java:269)
**

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 02 Jul 2010 10:25 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Te está dando errores en otras cosas totalmente distintas de los mensajes por defecto. El primero es de sintaxis (¿poner mobile en vez de Mobile?), el segundo es en un frame. A lo mejor el del frame es algo que he metido yo por tener el soporte de SVG a medias y me he cargado algo. Supongo que lo mejor será calmarse y que esperes a la siguiente versión "oficial" más estable y donde me dé tiempo a hacer todos los tests de regresión con calma.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 02 Jul 2010 11:39 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
Te está dando errores en otras cosas totalmente distintas de los mensajes por defecto. El primero es de sintaxis (¿poner mobile en vez de Mobile?),


Sí, eso parece, pero no es una sintaxis que haya metido yo o me daría el mismo error en la versión anterior, y ahí no se queja.

Citar:
el segundo es en un frame. A lo mejor el del frame es algo que he metido yo por tener el soporte de SVG a medias y me he cargado algo. Supongo que lo mejor será calmarse y que esperes a la siguiente versión "oficial" más estable y donde me dé tiempo a hacer todos los tests de regresión con calma.


Sí, será lo mejor
Yo mientras seguiré trabajando en la versión anterior.

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 02 Jul 2010 11:52 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Lo de la sintaxis estoy seguro de que fue despiste tuyo, porque yo no he cambiado nada de la sintaxis de BeanShell ni de su intérprete (¡Dios me libre de tener que hacer eso alguna vez! :D)

El otro error en cambio estoy seguro de que fue mío, porque anteayer para meter el soporte de SVG tuve que cambiar por dentro clases relacionadas con frames, cambios que afectan también al dibujado de imágenes que no son SVG. Hice algunas pruebas pero no exhaustivas. Así que sí, a ver si hoy o mañana saco una versión más probada y estable.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 02 Jul 2010 11:53 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
Te está dando errores en otras cosas totalmente distintas de los mensajes por defecto. El primero es de sintaxis (¿poner mobile en vez de Mobile?),


Aquí está la línea de la que se queja, como ves no tiene nada de inusual, salvo que se está usando un método de conveniencia.

mobile("guerrero").playAudioIfAvailable(world.getWorldPath()+"multimedia/intro.ogg");

Fíjate en el hecho de que cuando se queja de un error no se queja del otro, o sea, si comento me sale el del frame. Si la descomento me sale el del mobile.

Y si la juego con la versión anterior, no me sale nada.

Saludos

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 02 Jul 2010 11:55 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
Seguro que es que terminaste mal la línea anterior, la que comentas. Por ejemplo, no tendrá un punto y coma al final. Un error de sintaxis es un error de sintaxis, créeme. A veces pueden pasar cosas inesperadas debido a bugs y tal, pero eso nunca cambia, yo le paso el código al intérprete de BeanShell y él es el encargado de detectar los errores de sintaxis.

De todas formas es igual, tampoco merece la pena comerse mucho el coco con esto porque por desgracia el del frame te seguirá saliendo hasta que yo no arregle el tema.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 32 mensajes ]  Ir a página 1, 2, 3  Siguiente

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM