Bien, vamos por partes que si no me mareo.
¿Podría, desde la entrada X de la scene A llegar a la entrada X de la scene B y viceversa? ¿Podría hacer lo mismo con el camino Y, en ambas direcciónes (de A a B y de B a A)?
Es perfectamente posible, yo lo solucionaría con una variable global común y silvestre. Supongamos que tu entrada/salida X (de la escena A) es un objeto... cliqueable, si es que la palabra existe. Tons en su
script deberías escribir algo así:
on "LeftClick" // Al cliquear la salida...
{
global Entrada = "X"; // Declarar la variable global "Entrada" y darle el valor "X".
Game.ChangeScene("scenes\B\B.scene"); // Cambiar a la escena B.
}
Y en la entrada/salida Y (de la escena A) deberías escribir lo mismo, pero cambiando
global Entrada = "X"; por
global Entrada = "Y";. Luego, en el
script de inicialización de la escena B...
global Entrada; // Declarar la variable "Entrada". Esto es sólo para poder usarla en el resto de este script.
switch(Entrada) // Acá establecés "Entrada" como la variable a comparar.
{
case "X": // Si "Entrada" tiene el valor "X"...
actor.SkipTo(40, 267); // Llevar al personaje a la entrada X de la escena B.
actor.Direction = DI_UP;
Game.Msg("¡Está en la entrada equis!"); // Líneas adicionales que lo hacen a uno sentirse mejor cuando el código funciona bien.
actor.Talk("¡Estoy en la entrada equis!");
break; // ¡Esta línea es muy importante! Si no el código no va a saber dónde termina el "case X".
case "Y": // Si, en cambio, tiene el valor "Y"...
actor.SkipTo(303, 86);
actor.Direction = DI_DOWN;
break; // Este "break" es opcional, ya que acá termina el comando "switch", no hay necesidad real de decirle a WME que se detenga.
}
Y calculo que más o menos se entiende cómo es que se hace. Al comenzar la escena B, coloca al personaje dependiendo de si la variable
Entrada vale
X o
Y. Si el jugador ha cliqueado X, la variable valdrá X y entonces el personaje aparecerá en las coordenadas señaladas en el
case "X":. La variable Entrada tranquilamente podría llevar los valores
true y
false, pero me parece que poner el nombre de la entrada a la que nos estamos refiriendo hace el código más entendible.
Las entradas X e Y de la escena B pueden llevar exactamente el mismo código que las de la escena A. En este caso, el scene_init de la escena A debería llevar un código casi igual al de B, sólo que con otras coordenadas y direcciones. Ah, y si A es la primera escena del juego, además de
case "X": y
case "Y": deberías agregar un
default: para cuando el juego recién comienza y la variable Entrada todavía no tiene asignado ningún valor.
La pantalla empieza en la izquierda, y se desliza hasta la derecha, hasta que se encuentra con el personaje y luego sigue normal. No es que sea especialmente molesto, ya que el personaje sigue respondiendo y demás, pero me gustaría saber cómo colocar desde el comienzo la pantalla en el lugar adecuado.
Esta es fácil. En la inicialización de tu escena grande tendrías que agregar la siguiente línea:
Scene.SkipTo(actor);
No sé mucho de sonidos en WME así que no sabría qué decirte con respecto a lo de la fuente. Deberías poner acá en el foro el código que estás usando, así sería más fácil ubicar algún error, si lo hay.
El código que te mando lo escribí de memoria y no lo probé, de modo que si bien debería funcionar puede tener errores de tipeo o algo que se me haya olvidado (espero que no, cualquier cosa avisá si algo no funcionó como debía). Ojalá hayas entendido algo de lo que escribí. ¡Suerte!