Please login or register.

Login with username, password and session length
Advanced search  

News:

Latest WME version: WME 1.9.1 (January 1st, 2010) - download

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - bamyito

Pages: 1 2 [3] 4
31
Foro técnico / Re: Empezando y con problemas.
« on: January 12, 2011, 02:19:38 PM »
Vale, la explicación la he entendido (casi todo), y ya creo que voy entendiendo cómo he de pensar. Lógica e imaginación mezclados... mola. Cortarlo en modo de pizza 8 en lugar de 9 cuadrados... tomando como centro, el pixel del objeto,... ¿eso no tendría mucho mas código, al tener que dividir la pantalla de manera diagonal? Investigaré el asunto.

Y como ya te dije, conseguí que el código funcionase, tanto este como el otro que se te ocurrió. lo curioso es que me da la impresión de que el otro método que se te ocurrió a ti, queda como mas natural al avanzar un poco. Con este método, rota sobre sí mismo con sus posiciones de "parado" (parado mirando abajo, parado mirando en diagonal abajo-derecha, parado mirando a la derecha, parando mirando a derecha- arriba, parado mirando arriba) hasta que se qeuda mirando al objeto en cuestión.
Mi pregunta es: ¿podrían hacerse animaciones para que, al girarse a un lado o a otro, quedara mas natural? o sea, una animación intermedia para cuando gire de posición.

otra pregunta: Supongo que todo este código he de repetirlo en todos los objetos si quiero que haga esa función (girarse al objeto), ¿cierto? La pregunta es: ¿no podría activar un script para todas estas situaciones aparte, y enlazarlo desde los objetos para, así, tener menos código? creo que me estoy complicando demasiado por ahora...

y otra pregunta: Si quisiera que el actor tuviese alguna animación especial (Como por ejemplo dar un puñetazo), ¿cómo haría eso? Supongo que si el actor da el puñetazo al usar determinado objeto con otro personaje u objeto, (por ejemplo, martillo y bicho amarillo), en el bicho pondría el código "on martillo, go to object, actor talk o lo que sea" la pregunta es: el codigo para activar otra animación en el prota (y ya que estamos, en el otro personaje), ¿cómo se haría? creo que con el otro personaje quizá lo consiguiese, pero con el actor no estoy seguro.

Y nada, esperando un pequeño resumen sobre cómo tratar con el texto y los diálogos. No estoy repitiendome por impaciente, sino como recordatorio. Sin prisas ni agobios, ok?

Gracias de nuevo ;D

32
Foro técnico / Re: Empezando y con problemas.
« on: January 09, 2011, 12:40:55 AM »
creo que no es el mismo problema, ya que, segun tu, tus sprites se reinician y se ponen como al principio. Lo que le ocurre al mio es que, sencillamente, desaparece. Interactue o no interactue con el antes de salir de la scene, al volver, desaparecen ambos (basura abierta y cerrada). Además, no hago referencia a la basura en el scene.init, y creo que no hace falta. tampoco sé si es ahí donde te refieres que tendría que corregir la refencia. En cualquier caso, he comprobado las referencias de los sprites, y están bien escritos, asi que el error debe estar en otro lugar.

Y lo del cazzo... XD
Seguro que esa es la traducción... pero no sé si es a eso a lo que se refería Juan bonair. Supongo que si. XD

En cualquier caso, muchas gracias por tu interés.
Un abrazo.

33
Foro técnico / Re: Empezando y con problemas.
« on: January 07, 2011, 11:59:31 PM »
 ::rock Y EFECTIVAMENTE!!
En el codigo complicado, cambiando los ego por actor, funciona a las mil maravillas. Se gira hacia el objeto, y luego cumple el resto de órdenes. ;D

Voy a seguir con la basura, a ver qué descubro. Lo empezaré desde el principio, a ver si así encuentro el error. Mientras, esperaré ansioso alguna explicación más. ;)

34
Foro técnico / Re: Empezando y con problemas.
« on: January 06, 2011, 03:28:27 AM »
YEAH!! ::rock
he probado tu método (el sencillo) y funciona exactamente como me has explicado. Eso si, como emplea un tiempo en girarse el personaje, el 100 que le habias asignado inicialmente lo he cambiado por un 250 despues de probar varias opciones, por el sencillo hecho de que si estaba de espaldas, al actor no le daba tiempo a girarse completamente y miraba donde no debía. Eso si, si inicialmente el actor está mirando hacia el objeto, pues el actor da un pasito y se detiene. Que vale, lo ideal sería que solo girase, pero vamos, por ahora voy que me mato. ¡¡gracias!!

Tambien he probado el método complicado con otro objeto cualquiera, y me da este error:
Compiling script 'scenes\Room\scr\Chabolaca.script'...
3:09:58:    Error@line 42: Variable 'ego' is referenced but not defined
3:09:58:  Compiling script 'scenes\Room\scr\Chabolaca.script'...
3:09:58:    Error@line 43: Variable 'ego' is referenced but not defined


No sé si el problema radica en que "ego" se refiere al actor, y al buscarlo, no lo encuentra. Según este razonamiento, cambiando todos los "ego" por "actor" debería funcionar. ¿o no? ??? Te dejo tambien el código, por si te ayuda a ver el error:
Code: [Select]
#include "scripts\base.inc"


////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
TurnToObject();
  actor.Talk("Una chabola muy muy fea.");
}


////////////////////////////////////////////////////////////////////////////////
on "Take"
{
  actor.Direction = DI_DOWN;
  actor.Talk("¿Y despues me la guardo en el bolsillo?");
}


////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
  actor.GoToObject(this);
  actor.Talk("Hola, Chozaca fea y espantosa.");
}


////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
  actor.GoToObject(this);
}

function GoToObject()
{
  ego.GoTo(385, 420);
  ego.TurnTo(DI_UP);
}

function TurnToObject()
{
  var ActX = ego.X;
  var ActY = ego.Y;
  var Entity = Scene.GetNode(self.Name);
  var EntityX = Entity.X;
  var EntityY = Entity.Y;

  if(ActY > EntityY + 20)
  {
    if(ActX > EntityX + 30)
    {
      ego.TurnTo(DI_UPLEFT);
      return;
    }
    else if(ActX < EntityX - 30)
    {
      ego.TurnTo(DI_UPRIGHT);
      return;
    }
    else if(ActX >= EntityX)
    {
      ego.TurnTo(DI_UP);
      return;
    }
    else if(ActX <= EntityX)
    {
      ego.TurnTo(DI_UP);
      return;
    }
  }
  else if(ActY < EntityY - 20)
  {
    if(ActX > EntityX + 30)
    {
      ego.TurnTo(DI_DOWNLEFT);
      return;
    }
    else if(ActX < EntityX - 30)
    {
      ego.TurnTo(DI_DOWNRIGHT);
      return;
    }
    else if(ActX >= EntityX)
    {
      ego.TurnTo(DI_DOWN);
      return;
    }
    else if(ActX <= EntityX)
    {
      ego.TurnTo(DI_DOWN);
      return;
    }
  }
  else
  {
    if(ActX > EntityX + 30)
    {
      ego.TurnTo(DI_LEFT);
      return;
    }
    else if(ActX < EntityX - 30)
    {
      ego.TurnTo(DI_RIGHT);
      return;
    }
    else if(ActX >= EntityX)
    {
      GoToObject();
      return;
    }
    else if(ActX <= EntityX)
    {
      GoToObject();
      return;
    }
  }
}

Bueno, y ya que estamos, si me pudieras dar unas direcciones de juegos descargables que tengan el código manipulable te lo agradecería muchisimo. he probado con The white chamber, pero en lugar del código este que usamos nosotros salen unos recuadritos de 3 letras muy extraños, que puede que sean el código, pero yo de ahí no puedo copiar las lineas que me interesan ni borrar otras para probar los efectos... no sé si me explico :-\

¿y qué es un cazzo? Me lo has nombrado dos veces, pero ni idea de lo que es.

Gracias de nuevo :D

35
Foro técnico / Re: Empezando y con problemas.
« on: January 05, 2011, 07:52:22 PM »
 ;D Yeah!! ¡¡Problema de la caja solucionado!! ::rock
Soy tan paquete en esto de programar que el fallo lo he cometido al olvidar el punto y coma";" despues del (this.Active = false). Cuando he dicho: ¿llevará esto una coma aquí, como todo lo demás? y lo he probado, ha sido como... WTF? :-\
En fin, un error que no volveré a cometer. :P

Ahora mismo estoy intentando aplicar este método a la basura, para que no desaparezca y tal, pero está visto que no lo estoy haciendo bien, ya que sigue desapareciendo cuando salgo de la scene. ::slug

Y bueno... aparte del problema del bicho no-dialogante no tengo mas inquietudes por ahora. Solventemos esto y ya iré inventando mas cosas. ::)

PD: Expongo aquí los 2 problemas que aún tengo, a ver qué podemos hacer.
 ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug ::slug
Bicho amarillo no-dialogante

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


////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
  actor.Talk("¿un bicharraco amarillo flotando?");
    this.Talk("El coco.");
  actor.Talk("Qué sitio mas raro.");
}
////////////////////////////////////////////////////////////////////////////////
on "Take"
{
  actor.Talk("No llego.");
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
actor.Talk("Hola coco.");
this.Talk("Hola Tarzana, ¿cómo estás?");

Game.AddResponse(0, "Tururú");
Game.AddResponse(1, "Flufluturutú");
Game.AddResponse(2, "Debería irme");

var Res = Game.GetResponse();

actor.Talk("bueno chico, aquí te quedas.");
this.Talk("Venga Tarzana, feliz navidad.");
}
////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
  actor.GoToObject(this);
}
Este código pertenece a un bicho flotante amarillo. Pues bien, hay dos cosas que me gustaría solucionar en su código.

1º- Que, cuando le dé (por ejemplo) a observar bicho, el personaje se vuelva hacia el bicho ::)(que lo mire), pero que no avance hasta él.

2º- Con este código en el comando hablar, consigo que el personaje y el actor hablen al principio (cada uno diga una frase) y al final de la conversación. Sin embargo, no sé qué codigo poner para que puedan mantener una conversación (que el bicho conteste a mis preguntas, se habran nuevas ramas de diálogo dependiendo de la opción que yo haya escogido, etc). He intentado usar el codigo que viene en el tutorial, pero nada. No funciona ni lo mas mínimo. :'(

Basura que desaparece
Code: [Select]
#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 :D. 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. >:(


¡¡Feliz año nuevo y gracias por todo!! O0

36
Foro técnico / Re: Empezando y con problemas.
« on: December 29, 2010, 08:24:19 PM »
No me sale. Me explico:

He puesto el  this.Active = false; en todos sitios, y no veo cambio alguno. Tu dices que ha de ir en el script de la caja cuando está puesto en la scene. Voy a explicar el efecto que crea este script, por si no me he explicado bien: Cuando uso MARTILLO sobre CAJA sin haber añadido CAJA al inventario (o sea, sin cogerlo y usando martillo en el objeto CAJA que está en la scene) las situaciones se producen si error: habla, los objetos desaparecen (CAJA de la scene y MARTILLO de mi inventario), aparece un nuevo objeto en mi inventario (JARRO), y habla de nuevo. y la Caja no vuelve a aparecer en el escenario. Por eso no entiendo que tenga que poner el  this.Active = false; (que por cierto, no sé para que es exactamente) en este script, ya que funciona bien. Además, he probado a ponerlo en todos los lugares que me han parecido lógicos, y no produce cambios.

-->Script de la CAJA del inventario. Aunque no sea ahí donde me dijiste que debía ponerlo, he probado sin obtener resultados (o sea, la caja se elimina al final, colocandose antes de tiempo en su sitio de la scene):
Code: [Select]
on "martillo"
{
actor.Talk("DESTROY!!");
Game.DropItem("caja");
Game.DropItem("martillo");
this.Active = false;
Game.TakeItem("jarro");
actor.Talk("¡Bien! ahora tengo un jarrico.");
Game.DropItem("caja");
}

-->Script de la CAJA en la scene. He probado colocando el this.Active = false; en todos los sitios, cambiando el delete por el drop, pero el efecto cuando cojo la caja en el inventario y uso el martillo sobre ella en el inventario sigue siendo el mismo (la CAJA aparece en la scene, y luego desaparece). Y la verdad, no entiendo cómo cambiando este script voy a solucionarlo. Según mi lógica (que ya hemos comprobado que es errónea), este problema debería solucionarse en el otro script, no?

En fin, a ver si encontramos entre todos lo que falla... ::slug

37
Foro técnico / Re: Empezando y con problemas.
« on: December 26, 2010, 07:38:12 PM »
Lo siento, pero aparte de no entender nada de todo eso, el programa de da un error en la primera linea. Es exactamente igual que en el tutorial. Tu "function BillDialogue()" falla lo mismo que el "function MyTestDialogue()" del tutorial. :'(

Seguiré investigando. :)

38
Foro técnico / Re: Empezando y con problemas.
« on: December 24, 2010, 02:07:46 AM »
Vale, mis preguntas van a ir divididas en 3 apartados esta vez: Caja que no se borra, bicho amarillo no-dialogante y basura que desaparece.
Caja que no se borra
::rock
Code: [Select]
#include "scripts\base.inc"


////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
  actor.GoToObject(this);
  actor.Talk("Anda! una cajita azul!");
}
////////////////////////////////////////////////////////////////////////////////
on "Take"
{
  actor.GoToObject(this);
  actor.Talk("pa la saca.");
  Game.TakeItem("caja");
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
  actor.GoToObject(this);
  actor.Talk("Cajita cajita, vaya que eres feita.");
}
////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
  actor.GoToObject(this);
}
////////////////////////////////////////////////////////////////////////////////
on "martillo"
{
actor.GoToObject(this);
actor.Talk("DESTROY!!");
Game.DropItem("martillo");
Game.DeleteItem(this);
Game.TakeItem("jarro");
actor.Talk("¡Bien! ahora tengo un jarrico.");
}

Este es el código que utilizo en la caja como objeto de la scene, y me funciona estupendamente por ahora, asi que ni me planteo resumirlo.
Si utilizo el martillo sobre la caja estando ésta sobre la mesa, las acciones se realizan sin ningún problema (habla, desaparece martillo, desaparece caja, obtengo jarro y habla de nuevo).
 ::slug
Code: [Select]
#include "scripts\base.inc"


////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
  actor.Talk("Una caja azul MUY bien cerrada.");
}

////////////////////////////////////////////////////////////////////////////////
on "Take"
{
  Game.SelectedItem = "caja";
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
  actor.Talk("¿Hay alguien dentro?");
}
on "martillo"
{
actor.Talk("DESTROY!!");
Game.DropItem("martillo");
Game.TakeItem("jarro");
actor.Talk("¡Bien! ahora tengo un jarrico.");
Game.DeleteItem("caja");
}

Este es el código que tiene la caja como objeto del inventario (ya lo puse anteriormente). Como ves, la linea [Game.DeleteItem("caja");] está la última de toda la línea, ya que si no, esa es la última acción que realiza. Si, por ejemplo, la colocase antes de [Game.TakeItem("jarro");], lo cual sería ideal, las 2 lineas que quedan ([take jarro] y [actor talk]) no se realizarían ???. Lo cual, no tiene mucho sentido para mi.


Bicho amarillo no-dialogante
::slug
Code: [Select]
#include "scripts\base.inc"


////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
  actor.Talk("¿un bicharraco amarillo flotando?");
    this.Talk("El coco.");
  actor.Talk("Qué sitio mas raro.");
}
////////////////////////////////////////////////////////////////////////////////
on "Take"
{
  actor.Talk("No llego.");
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
actor.Talk("Hola coco.");
this.Talk("Hola Tarzana, ¿cómo estás?");

Game.AddResponse(0, "Tururú");
Game.AddResponse(1, "Flufluturutú");
Game.AddResponse(2, "Debería irme");

var Res = Game.GetResponse();

actor.Talk("bueno chico, aquí te quedas.");
this.Talk("Venga Tarzana, feliz navidad.");
}
////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
  actor.GoToObject(this);
}

Este código pertenece a un bicho flotante amarillo. Pues bien, hay dos cosas que me gustaría solucionar en su código.

1º- Que, cuando le dé (por ejemplo) a observar bicho, el personaje se vuelva hacia el bicho  ::)(que lo mire), pero que no avance hasta él (esto ya sé hacerlo sin problemas).

2º- Con este código en el comando hablar, consigo que el personaje y el actor hablen al principio (cada uno diga una frase) y al final de la conversación. Sin embargo, no sé qué codigo poner para que puedan mantener una conversación (que el bicho conteste a mis preguntas, se habran nuevas ramas de diálogo dependiendo de la opción que yo haya escogido, etc). He intentado usar el codigo que viene en el tutorial, pero nada. No funciona ni lo mas mínimo. :'(


Basura que desaparece
::slug
Code: [Select]
#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 :D. 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. >:(



Espero no agobiar demasiado, ni ser demasiado exigente con ustedes. Hace poco pensaba que jamás coseguiría mezclar objetos del inventario, ni encender la fuente ni poder llenar una jarra de agua con la fuente encendida. Y ahora puedo hacerlo. Asi que cualquier solución que podais encontrar a cualquiera de estos problemas es bien recibida.
Muchas gracias por vuestra paciencia.
¡Feliz navidad! ;D

39
Foro técnico / Re: Empezando y con problemas.
« on: December 20, 2010, 02:00:52 PM »
SIM EMBARGO, acabo de darme cuenta que puedo hacer la misma operación (combinar los 2 objetos y que me dé un tercero) sin coger la caja en el inventario, y combinandolas desde su lugar de la scene. Refiriendome al script de la scene de la caja (en lugar de el que tengo en el inventario) y utilizando Game.DeleteItem(this); se eliminan ambos y me dan el tercero sin problemas.
Code: [Select]
on "martillo"
{
actor.GoToObject(this);
actor.Talk("DESTROY!!");
Game.DropItem("martillo");
Game.DeleteItem(this);
Game.TakeItem("jarro");
actor.Talk("¡Bien! ahora tengo un jarrico.");
}
Este avance me mola. XD

Pero aún no consigo combinarlo adecuadamente cuando ya lo tengo en el inventario (que se elimine en el orden que yo quiera). He probado la misma fórmula (copy&paste) en el script del inventario, pero si allí me refiero a la caja como this, me da error y no se elimina.

40
Foro técnico / Re: Empezando y con problemas.
« on: December 20, 2010, 01:41:06 PM »
Vale, probado y entendido. Casi todo. Me han surgido unos problemillas (pa no perder la costumbre).
Los objetos a combinar son martillo y caja, y el nuevo objeto es jarra.

Si lo hago tal como me lo dices, la cosa funciona perfectamente, EXCEPTO porque si los combino estando en la habitación en la que he encontrado la caja, ésta vuelve a aparecer de donde mismo la he recogido.
Si los combino en otra room, no hay problema. Los objetos desaparecen y aparece el nuevo objeto en el inventario.

He intentado solucionarlo utilizando el comando (o la llamada o como se llamen estas cosas) Game.DeleteItem(""), y funciona bien única y exclusivamente cuando lo coloco en ultimo lugar de las acciones a realizar. Me explico: Si coloco este comando (Game.DeleteItem("")) antes del comando de hablar, o de eliminar objeto, o de añadir objeto al inventario, no realiza estas últimas acciones. Y claro, lo ideal sería que desapareciera del inventario justo antes de que aparezca el nuevo objeto y antes de que dijese la frase.
Os dejo el código de la caja:

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


////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
  actor.Talk("Una caja azul MUY bien cerrada.");
}

////////////////////////////////////////////////////////////////////////////////
on "Take"
{
  Game.SelectedItem = "caja";
}
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
  actor.Talk("¿Hay alguien dentro?");
}
on "martillo"
{
actor.Talk("DESTROY!!");
Game.DropItem("martillo");
Game.TakeItem("jarro");
actor.Talk("¡Bien! ahora tengo un jarrico.");
Game.DeleteItem("caja");
}

¿qué ocurre? ¿cómo consigo que desaparezcan en el orden correcto?
Muchas gracias. ::rock

41
Foro técnico / Re: Empezando y con problemas.
« on: December 20, 2010, 12:53:47 AM »
 ::thumbup Estupendo. Fuente funcionando a las mil maravillas, con su sonido y todo al salir y al entrar. ::thumbup
Pasemos a otra cosa:

He conseguido usando un script muy parecido al de la fuente (mediante swith y sprites), rebuscar entre la basura con el actor y recoger 2 objetos de allí y cambiar el sprite de la basura por otro de la basura abierta. incluso dice cosas diferentes dependiendo del estado del sprite (basura abierta o cerrada). El problema me surje al salir de la scene y luego al volver. Directamente, la basura desaparece. Aunque no la hubiera usado antes, con lo cual pierdo los objetos en el espacio-tiempo  :o. La consola tampoco da errores. No sé si el problema estará en el scene.init y debo cambiar allí algo (con la fuente no hizo falta, excepto por el sonido), pero por allí no he tocado nada. Aquí tienes el script de la basura:

Code: [Select]
#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);
}
¿Dónde está mi problema?
Sigo dándole vueltas a lo de combinar objetos del inventario, pero bueno. Poco a poco. ^^

Gracias de nuevo! :D

42
Foro técnico / Re: Empezando y con problemas.
« on: December 19, 2010, 08:08:57 AM »
 :-[ No te voy a decir la hora que es aquí porque me da verguenza :-[, pero que muchisimas gracias!!!! ::thumbup

He conseguido que la fuente se encienda, que diga distintas cosas dependiendo de si está encendida o apagada (al observar), e incluso el sonido va bien, como yo quería (se enciende y se apaga adecuadamente).
Tambien he comprobado que si salgo de la escena y vuelvo, la fuente sigue como yo la dejé (lo cual mola mucho), pero el sonido al volver no se reproduce, a menos que la apagues y la vuelvas a encender. ¿eso tiene solución?

Y tranquilo si no tienes tiempo para responder rapidamente. No me corre prisa. Mientras me contestes (aunque sea una semana después) te lo seguiré agradeciendo igual. Es mas que comprensible que tengamos que prestarle atención a nuestras vidas. ;)

de verdad, muchisimas gracias por todo. No te puedes hacer una idea de la ilusión que me hacen los grandes avances que realizo gracias a ti.
Te debo unas cervezas y un jamón, por lo menos. ::beer ;D

43
Foro técnico / Re: Empezando y con problemas.
« on: December 19, 2010, 05:45:57 AM »
Doble click funcionando a las mil maravillas, incluso con las entradas múltiples. han surgido problemas que he sabido solventar (añadir la "global entrada" de su camino correspondiente ;D).
Animado y dispuesto para más. ::rock

44
Foro técnico / Re: Empezando y con problemas.
« on: December 19, 2010, 04:45:39 AM »
Code: [Select]
#include "scripts\base.inc"


////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
  actor.GoToObject(this);
  actor.Talk("Es una fuente apagada. Tiene un botón.");
}


////////////////////////////////////////////////////////////////////////////////
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\BUS\fuente.sprite":    // Si la fuente tiene su "sprite" por defecto.
    actor.Talk("Voy a cambiar el ''sprite'' de esta fuente");
    this.PlaySound("scenes\BUS\stream-3.wav",true);    // Que la fuente reproduzca el sonido y que lo repita.
    this.SetSprite("scenes\BUS\fuenteon.sprite");    // Asignarle otro "sprite".
    break;    // ¡Línea importante! Nunca la olvides.

  case "scenes\BUS\fuenteon.sprite":    // Si la fuente ya tiene su otro "sprite".
    actor.Talk("Mejor la vuelvo a como estaba antes.");
    this.StopSound();    // Detener el sonido que estaba reproduciendo.
    this.SetSprite("scenes\BUS\fuente.sprite");    // Devolverle su "sprite" anterior.
break;
  }

  Game.Interactive = true;
 
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
  actor.GoToObject(this);
  actor.Talk("Fuentecita fuentecita, ¿quien es de todas la mas fresquita?");
}


////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
  actor.Talk("¡¡Ya voy!!");
  actor.GoToObject(this);
}

Muchas gracias por tu explicación. Creo que he entendido aproximadamente cómo funciona, pero ahora la consola me da un error tal que así:

Compiling script "scenes\BUS\scr\fuente.cript"...
Error@line 37: syntax error

Lo que supongo que quiere decir (si no he contado mal) que da un error el la linea que pone "on talk", la llamada para que el actor hable.
Y no solo eso. En la consola salen todos los scripts que tengo (en la parte superior izquierda), y el de la fuente no está. Por mas que lo he vuelto a cambiar y a sustituirlo, no aparece. ¿qué ocurre?


Y otra preguntilla rápida: ¿existe algún metodo para salir de la escena mas rápidamente, haciendo doble click en la salida? No para que el personaje corra, sino para que se salte la transición y aparezca directamente en la otra escena.

45
Foro técnico / Re: Empezando y con problemas.
« on: December 15, 2010, 06:25:53 PM »
Code: [Select]
#include "scripts\base.inc"


////////////////////////////////////////////////////////////////////////////////
on "LookAt"
{
  actor.GoToObject(this);
  actor.Talk("Es una fuente apagada. Tiene un botón.");
}


////////////////////////////////////////////////////////////////////////////////
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(scenes\BUS\fuente.sprite))    //  Establecemos el "sprite" de la fuente como variable a comparar.
  {

  case "scenes\BUS\fuente.sprite":    // Si la fuente tiene su "sprite" por defecto.
    actor.Talk("Voy a cambiar el ''sprite'' de esta fuente");
    this.PlaySound("scenes\BUS\stream-3.wav",true);    // Que la fuente reproduzca el sonido y que lo repita.
    this.SetSprite("scenes\BUS\fuenteon.sprite");    // Asignarle otro "sprite".
    break;    // ¡Línea importante! Nunca la olvides.

  case "scenes\BUS\fuenteon.sprite":    // Si la fuente ya tiene su otro "sprite".
    actor.Talk("Mejor la vuelvo a como estaba antes.");
    this.StopSound();    // Detener el sonido que estaba reproduciendo.
    this.SetSprite("scenes\BUS\fuente.sprite");    // Devolverle su "sprite" anterior.
 break;
  }

  Game.Interactive = true;
 
////////////////////////////////////////////////////////////////////////////////
on "Talk"
{
  actor.GoToObject(this);
  actor.Talk("Fuentecita fuentecita, ¿quien es de todas la mas fresquita?");
}


////////////////////////////////////////////////////////////////////////////////
on "LeftClick"
{
  actor.Talk("¡¡Ya voy!!");
  actor.GoToObject(this);
}

Así ha quedado el script de mi fuente. Pues bien, ya no puedo ni observarla, ni ir a ella, ni hablar con ella, ni por supuesto usarla.
Ojalá supiera lo que hago cuando meto código, porque luego pasan estas cosas y me quedo sin ideas... :-\

El error que me da: compiling script "scenes\BUS\scr\fuente.script"...
Error@line 18: Invalid character
compiling script "scenes\BUS\scr\fuente.script"...
Error@line 18: syntax error
 :'(

Pages: 1 2 [3] 4

Page created in 0.032 seconds with 17 queries.