1
Foro técnico / Re: Arrancar un evento cuando el actor rebasa cierta coordenada
« on: February 02, 2011, 02:49:18 PM »
Muchas gracias por la info. Te haré caso, a ver si aprendo y entiendo.
1 abrazo.
1 abrazo.

IRC channel - server: waelisch.de channel: #wme (read more)
14:21:21: Compiling script 'scenes\BUS\scr\vuelapajaro.script'...
14:21:21: Error@line 24: Method is called for 'pajaro' which is not defined
#include "scripts\base.inc"
////////////////////////////////////////////////////////////////////////////////
on "ActorEntry"
{
// Poner aquí las instrucciones necesarias para que el pájaro se vaya volando.
switch(pajaro.GetSprite()) // Establecemos el "sprite" de la fuente como variable a comparar.
{
case "scenes\BUS\pajaro\suelo.sprite": // Si la fuente tiene su "sprite" por defecto.
pajaro.SetSprite("scenes\BUS\pajaro\volando.sprite");
break; // ¡Línea importante! Nunca la olvides.
case "scenes\BUS\pajaro\volviendo.sprite": // Si la fuente ya tiene su otro "sprite".
pajaro.SetSprite("scenes\BUS\pajaro\volando.sprite");
break;
}
}
////////////////////////////////////////////////////////////////////////////////
on "ActorLeave"
{
// Poner aquí las instrucciones necesarias para que el pájaro vuelva volando.
pajaro.SetSprite("scenes\BUS\pajaro\volviendo.sprite");
pajaro.SetSprite("scenes\BUS\pajaro\suelo.sprite");
}
Thanks.
#include "scripts\base.inc"
////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
Game.Msg(this.GetSprite()); //Nos muestra en la parte superior izquierda del juego el nombre del sprite asignado a esta entidad
Game.Interactive = false;
switch(this.GetSprite()) // Establecemos el "sprite" de la fuente como variable a comparar.
{
case "scenes\new_scene\fuegoon.sprite": // Si la fuente tiene su "sprite" por defecto.
actor.TurnTo(this);
actor.Talk("El fuego ese está muy fuerte.");
break; // ¡Línea importante! Nunca la olvides.
case "scenes\new_scene\fuegooff.sprite": // Si la fuente ya tiene su otro "sprite".
actor.TurnTo(this);
actor.Talk("Solo han quedado algunas ascuas en el fondo.");
break;
default: //Si el sprite asignado no es ni fuegoon ni fuegooff
actor.Talk("Parece que el sprite asignado no es ninguno de los anteriores.");
}
Game.Interactive = true;
}
////////////////////////////////////////////////////////////////////////////////
on "Take"
{
actor.TurnTo(this);
actor.Talk("Si, claro que si. ahora mismo lo cojo.");
actor.Talk("¿Con la mano o con la boca, Torrente?");
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
actor.TurnTo(this);
actor.Talk("Fueguecito fueguecito, mira que estás calentito.");
}
////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
actor.GoToObject(this);
}
on "jarrolleno"
{
Game.Interactive = false;
actor.GoToObject(this);
switch(this.GetSprite()) // Establecemos el "sprite" de la fuente como variable a comparar.
{
case "scenes\new_scene\fuegoon.sprite": // Si la fuente tiene su "sprite" por defecto.
actor.Talk("Ahí va.");
actor.PlayAnim("actors\molly\ur\take1.sprite");
this.SetSprite("scenes\new_scene\fuegooff.sprite"); // Asignarle otro "sprite".
Game.DropItem("jarrolleno");
Game.TakeItem("jarro");
actor.PlayAnim("actors\molly\ur\take2.sprite");
actor.Talk("Ala, el fuego apagado.");
break; // ¡Línea importante! Nunca la olvides.
case "scenes\new_scene\fuegooff.sprite": // Si la fuente ya tiene su otro "sprite".
actor.Talk("Ya está suficientemente bien apagado.");
break;
}
Game.Interactive = true;
}
on "jarro"
{
actor.Talk("El jarro está vacío. No serviría de mucho.");
}
////////////////////////////////////////////////////////////////////////////////
on "tenazas"
{
var albalEntity = Scene.GetNode("albalvacio");
Game.Interactive = false;
switch(this.GetSprite()) // Establecemos el "sprite" de la fuente como variable a comparar.
{
case "scenes\new_scene\fuegoon.sprite": // Si la fuente tiene su "sprite" por defecto.
actor.TurnTo(this);
actor.Talk("El fuego está muy fuerte. No puedo usar las tenazas ahí.");
break; // ¡Línea importante! Nunca la olvides.
case "scenes\new_scene\fuegooff.sprite": // Si la fuente ya tiene su otro "sprite".
switch(albalEntity.GetSprite()) // Establecemos el "sprite" de la fuente como variable a comparar.
{
case "scenes\new_scene\albalvacio.sprite": // Si la fuente ya tiene su otro "sprite".
actor.GoToObject(this);
actor.Talk("Voy a sacar unas ascuas en el papel albal.");
actor.Talk("Y espero que el papel albal esté en su sitio.");
break;
default: // Si la fuente tiene su "sprite" por defecto.
actor.TurnTo(this);
actor.Talk("No tengo dónde colocar las ascuas una vez cogidas.");
break; // ¡Línea importante! Nunca la olvides.
}
}
Game.Interactive = true;
}
Un abrazo.
17:03:27: Compiling script 'scenes\new_scene\scr\estreves.script'...¿por qué no está definido? ¿cómo lo defino? os dejo los 3 scripts, el de la estreves, el del item albal, y el del objeto de la escena albalvacio.
17:03:27: Error@line 33: Variable 'albalvacio' is referenced but not defined
#include "scripts\base.inc"
////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
actor.TurnTo(this);
actor.Talk("Es una estreves.");
actor.Talk("Suele usarse para poner cosas calientes encima.");
}
////////////////////////////////////////////////////////////////////////////////
on "Take"
{
actor.TurnTo(this);
actor.Talk("Está bien ahí.");
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
actor.Talk("No me da la gana.");
}
////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
actor.GoToObject(this);
}
////////////////////////////////////////////////////////////////////////////////
on "albal"
{
actor.TurnTo(this);
Game.DropItem("albal");
albalvacio.Active = true;
}
#include "scripts\base.inc"
////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
actor.Talk("Papel albal. Del coco.");
}
////////////////////////////////////////////////////////////////////////////////
on "Take"
{
Game.SelectedItem = "albal";
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
actor.Talk("paso.");
}
#include "scripts\base.inc"
this.Active = false;
////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
actor.TurnTo(this);
actor.Talk("El trozo de papel albal está colocado encima de la estreves.");
}
////////////////////////////////////////////////////////////////////////////////
on "Take"
{
actor.GoToObject(this);
actor.PlayAnim("actors\molly\ur\take1.sprite");
Game.TakeItem("albal");
this.Active = false;
actor.PlayAnim("actors\molly\ur\take2.sprite");
actor.Talk("pa la saca.");
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
actor.Talk("No.");
}
////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
actor.GoToObject(this);
}
Lo peor del asunto es que seguro que es una tontada donde está el fallo... #include "scripts\base.inc"
var hablar_coche = false;
var hablar_barco = false;
var hablar_mar = false;
var hablar_viento = false;
////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
actor.GoToObjectAsync(this); // comenzar a caminar hacia él,
Sleep(250); // esperar una décima de segundo
actor.Reset(); // y dejar de caminar.
actor.Talk("Si tenemos suerte, estoy mirando hacia el bicho en cuestión.");
actor.Talk("¡¡Y EFESTIVAMENTE!!");
}
////////////////////////////////////////////////////////////////////////////////
on "Take"
{
actor.Talk("No llego.");
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
actor.TurnTo(this);
actor.Talk("Hola coco.");
this.Talk("hola Tarzana.");
Dialogo();
}
////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
actor.GoToObject(this);
}
////////////////////////////////////////////////////////////////////////////////
function Dialogo()
{
var Responses;
var Selected;
var Loop = true;
while(Loop)
{
// preparamos las frases, hablar_barco y hablar_coche lo usamos para saber si ya ha hecho la pregunta con anterioridad y cambiar la foma de hacerla
// en función de si se ha hablado o no
// Se entiende que previamente estas variables estan declaradas globalmente e inicializadas a false, o sea:
// global hablar_barco = false; // y lo mismo con hablar_coche
// De esta forma, la primera vez que se ejecute el código, se dice la primera frase y se indica que ya se ha hablado para que las sucesivas veces
// Salga lo de "Vuelveme a contar"
if (!hablar_barco)
Responses[0] = "Hablame del barco";
else
Responses[0] = "Vuelveme a contar lo del barco";
if (!hablar_coche)
Responses[1] = "Hablame del coche";
else
Responses[1] = "Vuelveme a contar lo del coche";
Responses[2] = "Hablemos de más cosas";
Responses[3] = "Hasta luego, Lucas";
Responses[4] = "Dime algo bonito";
// Creamos el cuadro de conversación con las frases que hemos preparado
Game.AddResponse(0, Responses[0]);
Game.AddResponse(1, Responses[1]);
Game.AddResponse(2, Responses[2]);
Game.AddResponse(3, Responses[3]);
Game.AddResponseOnce(4, Responses[4]);
// Ahora lo presentamos en pantalla para que el jugador seleccione una, el resultado se almacena en Selected
Selected = Game.GetResponse();
// El actor repite lo que hemos seleccionado
actor.Talk(Responses[Selected]);
// Ahora el personaje contesta en función de la pregunta que se ha hecho y si ya se habia hecho antes o no
if(Selected==0) // Pregunta de los barcos
{
if (!hablar_barco)
{
this.Talk("Los barcos flotan");
hablar_barco=true;
}
else
{
this.Talk("Como ya te dije, los barcos flotan, excepto si tienen un agujero, claro");
}
}
if(Selected==1) // Pregunta de los coches
{
if (!hablar_coche)
{
this.Talk("Los coches van rodando");
hablar_coche=true;
}
else
{
this.Talk("Como ya te dije, los coches van rodando, excepto por cuestiones de gasolina, pinchazos y similares, por supuesto");
}
}
if(Selected==2) // mas opciones
{
this.Talk("Deacuerdo. hablemos de otra cosa.");
Loop = false;
Dialogo2();
}
if(Selected==3) // Despedida
{
this.Talk("Ta luego, cocodrilo");
Loop = false;
}
if(Selected==4) // Solo sale una vez
{
this.Talk("Solo te lo diré una vez:");
this.Talk("¡Tonta!");
actor.Talk("Mierda bicho...");
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////
function Dialogo2()
{
var Responses;
var Selected;
var Loop = true;
while(Loop)
{
// preparamos las frases, hablar_barco y hablar_coche lo usamos para saber si ya ha hecho la pregunta con anterioridad y cambiar la foma de hacerla
// en función de si se ha hablado o no
// Se entiende que previamente estas variables estan declaradas globalmente e inicializadas a false, o sea:
// global hablar_barco = false; // y lo mismo con hablar_coche
// De esta forma, la primera vez que se ejecute el código, se dice la primera frase y se indica que ya se ha hablado para que las sucesivas veces
// Salga lo de "Vuelveme a contar"
if (!hablar_mar)
Responses[0] = "Hablame del mar, marinero";
else
Responses[0] = "Vuelveme a contar lo del mar";
if (!hablar_viento)
Responses[1] = "Hablame del viento";
else
Responses[1] = "Vuelveme a contar lo del viento";
Responses[2] = "me encantaría que me dieras un objeto";
Responses[3] = "mejor hablemos de lo que hablabamos antes";
Responses[4] = "¡Dame un objeto ya!";
// Creamos el cuadro de conversación con las frases que hemos preparado
Game.AddResponse(0, Responses[0]);
Game.AddResponse(1, Responses[1]);
Game.AddResponse(2, Responses[2]);
Game.AddResponse(3, Responses[3]);
Game.AddResponseOnce(4, Responses[4]);
// Ahora lo presentamos en pantalla para que el jugador seleccione una, el resultado se almacena en Selected
Selected = Game.GetResponse();
// El actor repite lo que hemos seleccionado
actor.Talk(Responses[Selected]);
// Ahora el personaje contesta en función de la pregunta que se ha hecho y si ya se habia hecho antes o no
if(Selected==0) // Pregunta de los barcos
{
if (!hablar_mar)
{
this.Talk("Los barcos flotan en el mar");
hablar_mar=true;
}
else
{
this.Talk("Como ya te dije, los barcos flotan en el mar...");
actor.Talk("...a menos que tengan un agujero.");
this.Talk("Claro.");
}
}
if(Selected==1) // Pregunta de los coches
{
if (!hablar_viento)
{
this.Talk("El viento silba.");
hablar_viento=true;
}
else
{
this.Talk("¿Qué mas quires saber del viento?");
actor.Talk("Su nombre.");
this.Talk("Lo siento, no lo conozco.");
}
}
if(Selected==2) // mas opciones
{
this.Talk("un poco de paciencia, mi querido padawan.");
}
if(Selected==3) // Despedida
{
this.Talk("Como prefieras.");
Loop = false;
Dialogo();
}
if(Selected==4) // Solo sale una vez
{
this.Talk("Vaaale, llorica.");
this.Talk("¡Pero no me pidas nada más!");
actor.Talk("Ok. Prometido.");
actor.PlayAnim("actors\molly\ur\take1.sprite");
Game.TakeItem("albal");
actor.PlayAnim("actors\molly\ur\take2.sprite");
actor.Talk("Menuda caca. Papel albal.");
}
}
}