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: Arrancar un evento cuando el actor rebasa cierta coordenada  (Read 5894 times)

0 Members and 1 Guest are viewing this topic.

dp

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 3
    • View Profile

Hola,
me gustaria saber como puedo hacer que cuando el actor pisa una coordenada concreta, que otro personaje venga a hablar con el como en el monkey2 cuando cruzas el primer puente y viene largo lagrande.
en mi juego cuando vas a abadonar una pantalla con scroll quiero que venga otro personaje a hablar contigo antes de pasar a la pantalla siguiente.
supongo que tengo que almacenar en una variable la posicion x del personaje al inicio de la room pero mi pregunta es que si cuando use el if (XPos==xxx); actor2.Active=true)....el script de la room se chequea constantemente para comprobar esto o tengo que hacer otro script con do while que comience cuando el actor entre en la room y finalice cuando salga de ella.

gracias por poner en nuestras manos este gran motor.
Logged

dp

  • Lurker
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 3
    • View Profile
Re: Arrancar un evento cuando el actor rebasa cierta coordenada
« Reply #1 on: May 11, 2010, 08:10:43 AM »

holaa,
al final he arrancado el evento de otra manera asi que no hace falta ya ayuda. nada como complicarse poco.

gracias de todas maneras.
Logged

bamyito

  • Occasional poster
  • **
  • Karma: 0
  • Offline Offline
  • Posts: 53
  • Aprendoaprendoaprendo...
    • View Profile
Re: Arrancar un evento cuando el actor rebasa cierta coordenada
« Reply #2 on: January 30, 2011, 10:34:03 PM »

Vale, ahora me ha surgido a mi esta duda, y como no hubo respuesta ni dp dijo cómo lo solucionó, pues no me ha servido de mucho el hilo.

Tengo un pajaro en mitad de un camino, y una región alrededor de él. Pues bien, me gustaría que cuando el actor entre en esa región, cambie el sprite del pájaro y salga volando hasta perdierse y, cuando el actor deje de pisar esa región, el pájaro vuelva a cambiar de sprite, vuelva volando y acabe de nuevo con el sprite inicial (pájaro andando por el suelo).

Pensaba resolverlo de igual manera que se hace cuando le cambias el color al actor, con una región decorativa, pero me di cuenta de que eso lo hace wintermute automáticamente y no mediante scripts. por lo tanto, no puedo copiar y cambiar el código a mi antojo, y me he quedado sin ideas.

¿alguna sugerencia?
Gracias de antemano.
Logged

Jose

  • Regular poster
  • ***
  • Karma: 2
  • Offline Offline
  • Posts: 134
    • View Profile
Re: Arrancar un evento cuando el actor rebasa cierta coordenada
« Reply #3 on: January 31, 2011, 11:01:50 AM »

Cuando queráis hacer ese tipo de cosas sólo tenéis que definiros una Region (ojo las Region Entities no valen) y usar los eventos ActorEntry y ActorLeave. Por ejemplo bamyito en tu caso sería algo así:

Code: [Select]
on "ActorEntry"
{
    // Poner aquí las instrucciones necesarias para que el pájaro se vaya volando.
}

on "ActorLeave"
{
    // Poner aquí las instrucciones necesarias para que el pájaro vuelva volando.
}

Un saludo.
Logged

bamyito

  • Occasional poster
  • **
  • Karma: 0
  • Offline Offline
  • Posts: 53
  • Aprendoaprendoaprendo...
    • View Profile
Re: Arrancar un evento cuando el actor rebasa cierta coordenada
« Reply #4 on: January 31, 2011, 02:34:50 PM »

Vale, lo he intentado con una region normal y me dice que no tengo definido el metodo llamado pajaro.
Para ser mas exactos dice:
Quote
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

He probado a poner var pajaroEntity = Scene.GetNode("pajaro"); para definirlo, pero está visto que este no es el método de definirlo.
¿cual sería entonces? ::slug
Code: [Select]
#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.
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: Arrancar un evento cuando el actor rebasa cierta coordenada
« Reply #5 on: January 31, 2011, 06:36:34 PM »

A ver, tio, que me pierdes el norte

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

Esto quiere decir que no existe el metodo al que llamas en el objeto pajaro

Y lo que tu pones: var pajaroEntity = Scene.GetNode("pajaro");

Esta creando un objeto que se llama pajaroEntity de tipo pajaro

Eso no hará que automagicamente exista el metodo que estes llamando, solo tendras un objeto mas de ese tipo, sin método, por supuesto.

El problema real es que no tienes una base de programación y menos de orientación a objetos y confundes clase, objeto, metodo y evento, afortrunadamente WME es de alto nivel y aqui no entran cosas como polimorfismo, sobrecarga de operadores, herencia multiple ni cosas de esas, porque si no te suicidabas.

Insisto en que antes de meterte con esto le des una vuelta a algun tutorial de fundamentos de programación, el ideal sería C / C++ aunque igual es demasiado heavy y puedes empezar con algo mas liviano, tipo Basic con .net o algo asi.

Es que si no, te van a surgir problemas y gordos cuando avances en el juego y empieces a tener estructuras de datos globales o tengas que manejar arrays o hacer puzzles ams complejos que no sean solo de intercambio, como estros que estas haciendo ahora.

Logged
Regards,

    Fernando

bamyito

  • Occasional poster
  • **
  • Karma: 0
  • Offline Offline
  • Posts: 53
  • Aprendoaprendoaprendo...
    • View Profile
Re: Arrancar un evento cuando el actor rebasa cierta coordenada
« Reply #6 on: February 01, 2011, 01:22:55 PM »

Lo sé, y tengo unos amigos que me tienen prometidas unas clases rapidas y basicas. Pero de mientras, no me gusta estar parado, por eso os voy pidiendo ayuda con ejemplos concretos y (por qué no decirlo) algunas explicaciones básicas sobre programación.

Precisamente por esto os pedía en otro post algun juego de ejemplo con códigos basicos y sencillos, para ir probando cómo funcionan e intentar entender algo. Y si supierais de algun manual muy básico que me ayude a empezar, os agradecería ambos links.

Gracias por la información y por los ánimos.
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: Arrancar un evento cuando el actor rebasa cierta coordenada
« Reply #7 on: February 01, 2011, 06:50:28 PM »

Yo empezaría por leerme esto:

http://www.programacion.com/articulo/introduccion_a_la_programacion_205

Me parece una introducción cojonuda para alguien que empieza.

Despues echale un vistazo a esto: http://luis.izqui.org/resources/ProgOrientadaObjetos.pdf

Con eso te familiarizaras con la orientación a Objetos y entonces veras muy, muy claro, donde te estas liando ultimamente. Comprenderas porque para manejar cosas del juego se usa Game.loquesea o en la escena Scene.loquesea, que es lo que está haciendo un GetControl y todo eso, no hará falta que nadie te lo intente explicar, se te va a abrir un mundo.

Particularmente, yo haría una parada de una semanita, me miraría esto bien y luego me pondría a cacharrear con el WME, ya veras la diferencia, pero bueno, eso como tu lo veas.
Logged
Regards,

    Fernando

bamyito

  • Occasional poster
  • **
  • Karma: 0
  • Offline Offline
  • Posts: 53
  • Aprendoaprendoaprendo...
    • View Profile
Re: Arrancar un evento cuando el actor rebasa cierta coordenada
« Reply #8 on: February 02, 2011, 02:49:18 PM »

Muchas gracias por la info. Te haré caso, a ver si aprendo y entiendo.
1 abrazo. ::rock
Logged
 

Page created in 0.25 seconds with 18 queries.