Please login or register.

Login with username, password and session length
Advanced search  

News:

IRC channel - server: waelisch.de  channel: #wme (read more)

Author Topic: Di??logos  (Read 6237 times)

0 Members and 1 Guest are viewing this topic.

bamyito

  • Occasional poster
  • **
  • Karma: 0
  • Offline Offline
  • Posts: 53
  • Aprendoaprendoaprendo...
    • View Profile
Di??logos
« on: January 14, 2011, 06:16:37 PM »

Quote
18:15:02:  Compiling script 'scenes\Room\scr\entitiprueba.script'...
18:15:02:    Error@line 57: Variable 'hablar_barco' is referenced but not defined
18:15:02:  Compiling script 'scenes\Room\scr\entitiprueba.script'...
18:15:02:    Error@line 61: Variable 'hablar_coche' is referenced but not defined
18:15:02:  Compiling script 'scenes\Room\scr\entitiprueba.script'...
18:15:02:    Error@line 79: Variable 'hablar_barco' is referenced but not defined
18:15:02:  Compiling script 'scenes\Room\scr\entitiprueba.script'...
18:15:02:    Error@line 83: Variable 'hablar_barco' is referenced but not defined
18:15:02:  Compiling script 'scenes\Room\scr\entitiprueba.script'...
18:15:02:    Error@line 92: Variable 'hablar_coche' is referenced but not defined
18:15:02:  Compiling script 'scenes\Room\scr\entitiprueba.script'...
18:15:02:    Error@line 96: Variable 'hablar_coche' is referenced but not defined

Code: [Select]
#include "scripts\base.inc"


////////////////////////////////////////////////////////////////////////////////
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"
{
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";

    // Creamos el cuadro de conversaci??n con las frases que hemos preparado
    Game.AddResponse(0, Responses[0]);
    Game.AddResponse(1, Responses[1]);

    // 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");
}

}
}
}
actor.Talkt(Responses[Selected]); eliminando la T despues de Talk (que supuse que estaba de m??s), e hice la llamada a la funci??n dialogo en la opci??n Talk
Logged

Jose

  • Regular poster
  • ***
  • Karma: 2
  • Offline Offline
  • Posts: 134
    • View Profile
Re: Di??logos
« Reply #1 on: January 15, 2011, 12:31:57 PM »

El problema es que necesitas definir las variables hablar_barco y hablar_coche como globales al inicio del script.

Code: [Select]
#include "scripts\base.inc"

var hablar_coche = false;
var hablar_barco = false;

////////////////////////////////////////////////////////////////////////////////

Es lo que pone exactamente en los comentarios de la rutina Dialogo()

// 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

 ;D
« Last Edit: January 15, 2011, 12:40:01 PM by Jose »
Logged

bamyito

  • Occasional poster
  • **
  • Karma: 0
  • Offline Offline
  • Posts: 53
  • Aprendoaprendoaprendo...
    • View Profile
Re: Di??logos
« Reply #2 on: January 15, 2011, 03:33:31 PM »

Logged

HelLRaiseR

  • I don't want to make a Monkey Island clone :(
  • Moderator
  • Frequent poster
  • *****
  • Karma: 4
  • Offline Offline
  • Posts: 270
    • View Profile
    • Adventure Box Studios
Re: Di??logos
« Reply #3 on: January 15, 2011, 04:34:15 PM »

Logged
Regards,

    Fernando

bamyito

  • Occasional poster
  • **
  • Karma: 0
  • Offline Offline
  • Posts: 53
  • Aprendoaprendoaprendo...
    • View Profile
Re: Di??logos
« Reply #4 on: January 16, 2011, 08:56:50 PM »

Code: [Select]
#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);
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";

    // 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]);

    // 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;
   }
}
}

//////////////////////////////////////////////////////////////////////////////////////////
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";

    // 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]);

    // 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();
   }
}
}
Logged

bamyito

  • Occasional poster
  • **
  • Karma: 0
  • Offline Offline
  • Posts: 53
  • Aprendoaprendoaprendo...
    • View Profile
Re: Di??logos
« Reply #5 on: January 19, 2011, 03:20:52 PM »

Game.AddResponseOnce(4, Responses[4]); que, seg??n pone, sirve para que una vez usada esa frase, no vuelva a aparecer hasta que empieces de nuevo el di??logo. Hay una frase de estas en cada una de la rama de di??logos (que, como ya he dicho, est??n conectados en el mismo dialogo). Pues bien, adem??s de no volver a aparecer una vez usado (ni aunque reinicie el dialogo), cuando desaparece una, desaparece tambien la otra,
Code: [Select]
#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.");
   }
}
}

Gracias de antemano.
« Last Edit: January 30, 2011, 05:26:42 PM by bamyito »
Logged

HelLRaiseR

  • I don't want to make a Monkey Island clone :(
  • Moderator
  • Frequent poster
  • *****
  • Karma: 4
  • Offline Offline
  • Posts: 270
    • View Profile
    • Adventure Box Studios
Re: Di??logos
« Reply #6 on: February 01, 2011, 07:06:04 PM »

SetInteractive a falso, con eso el jugador pierde el control del juego, deszpues de que termine de hablar a true y que el jugador haga lo que quiera.
Logged
Regards,

    Fernando

bamyito

  • Occasional poster
  • **
  • Karma: 0
  • Offline Offline
  • Posts: 53
  • Aprendoaprendoaprendo...
    • View Profile
Re: Di??logos
« Reply #7 on: February 02, 2011, 02:27:44 PM »

Game.AddResponseOnce(4, Responses[4]);
Logged

HelLRaiseR

  • I don't want to make a Monkey Island clone :(
  • Moderator
  • Frequent poster
  • *****
  • Karma: 4
  • Offline Offline
  • Posts: 270
    • View Profile
    • Adventure Box Studios
Re: Di??logos
« Reply #8 on: February 04, 2011, 10:15:34 PM »

Explicate mejor porque no entiendo nada :P
Logged
Regards,

    Fernando
 

Page created in 0.138 seconds with 24 queries.