No sabía cómo generalizar este post para poder usarlo mas adelante. creo que el título es bastante apropiado. os voy a exponer, de nuevo, el problema de la basura. A ver si a alguien se le ocurre algo... una solución, u otro metodo para resolverlo sin errores. He aquí el script de la basura:
#include "scripts\base.inc"
////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
Game.Interactive = false; // Que el juego deje de ser interactivo (opcional).
switch(this.GetSprite()) // Establecemos el "sprite" de la fuente como variable a comparar.
{
case "scenes\Room\basuraclosed.sprite": // Si la fuente tiene su "sprite" por defecto.
actor.Talk("puaj, basura.");
break; // ¡Línea importante! Nunca la olvides.
case "scenes\Room\basuraopen.sprite": // Si la fuente ya tiene su otro "sprite".
actor.Talk("Antes he tocado algo muy blando... y húmedo...");
break;
}
Game.Interactive = true;
}
////////////////////////////////////////////////////////////////////////////////
on "Take"
{
actor.GoToObject(this); // Que el actor vaya a él (opcional).
Game.Interactive = false; // Que el juego deje de ser interactivo (opcional).
switch(this.GetSprite()) // Establecemos el "sprite" de la fuente como variable a comparar.
{
case "scenes\Room\basuraclosed.sprite": // Si la fuente tiene su "sprite" por defecto.
actor.Talk("A ver qué encuentro...");
actor.Talk("Un segundo.");
this.SetSprite("scenes\Room\basuraopen.sprite"); // Asignarle otro "sprite".
Game.TakeItem("albal");
actor.Talk("esto podrá serme util. A ver algo más...");
actor.Talk("...");
Game.TakeItem("martillo");
actor.Talk("¡Un martillo y un trozo de papel albal!");
break; // ¡Línea importante! Nunca la olvides.
case "scenes\Room\basuraopen.sprite": // Si la fuente ya tiene su otro "sprite".
actor.Talk("Bastante he buscado ya. ¿No crees?");
break;
}
Game.Interactive = true;
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
actor.Talk("¿saldrá el bicho de barrio sésamo?");
}
////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
actor.Talk("¡¡Ya voy!!");
actor.GoToObject(this);
}
Siempre comienzo las pruebas en la escena en la que está la basura. Pues bien:
1º- Si abandono la scene y vuelvo, la basura ha desaparecido
, con todos sus sprites, objetos y letreros en el ratón.
2º- Si no abandono la escena, la basura funciona estupendamente: La observa de diferentes formas dependiendo de su sprite, la usa y coge los objetos sin problemas, añadiendolos al inventario y no permitiéndome volver a cogerlos de la basura, cambia el sprite como debe,... en fin, todo estupendo
. Pero en cuanto salgo de la scene y vuelvo, ocurre lo mismo que en el caso 1: desaparece, y ya no puedo ni observarla, ni marcarla con el ratón ni nada.
¿Qué ocurre?