¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Últimos temas
» Necesito Script
por Elian84 Hoy a las 04:44

» Holaaa a tod@s!!!
por chronoMxx Hoy a las 03:41

» [AYUDA]Hootshot de moghunter
por Rudy_kinneas Hoy a las 01:06

» El poder oculto (Segunda entrega)
por alex1633 Ayer a las 23:18

» Tutorial Interactivo [Uso de interruptores]
por alex1633 Ayer a las 19:39

» Hola mucho gusto
por Hk Diamond Ayer a las 13:49

» SoraDeathss se presenta!
por chronoMxx Ayer a las 07:50

» {AYUDA}Blizz-ABS Script
por chronoMxx Ayer a las 06:45

» las cosas como son...
por Bleuw Ayer a las 04:18

» Busco artistas graficos para proyecto serio
por Rudy_kinneas 2016-12-02, 20:52

Afiliados
Estadísticas
Tenemos 3381 miembros registrados.
El último usuario registrado es Hk Diamond.

Nuestros miembros han publicado un total de 79767 mensajes en 11247 argumentos.
Navega con Google Chrome
[DESCARGA]

Duda con variables y coordenadas

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Duda con variables y coordenadas

Mensaje por Avenger_K el 2014-05-11, 12:37

El otro día me surgió un problema con un puzzle que estoy intentando hacer. Mi duda es como hacer para mover hacia una dirección el evento que este en cierta coordenada.
Digamos que al pulsar un botón quiero mover hacia la derecha lo que este en la coordenada x 10, y 8. ¿Seria eso posible? He estado trasteando un poco pero como las variables no son mi fuerte igual se me ha escapado algo.
Gracias de antemano.
Bye Bye!


Última edición por Avenger_K el 2014-05-11, 12:45, editado 1 vez

Avenger_K
Soñador
Soñador

0/3

Créditos 336

Gracias : 15

Volver arriba Ir abajo

RPG Maker XP Re: Duda con variables y coordenadas

Mensaje por rpgmanumaker el 2014-05-11, 12:41

Um... por lo que creo, no tiene fácil solución.

Lo único que se me ocurre es que si sabes que evento estará en esas coordenadas, en vez de intentar mover lo que esté en esas coordenadas simplemente muevas al evento. No sé si me entiendas XD.

Otra cosa que se me ha ocurrido es que hagas un condicional que verifique dónde está cada evento que pueda estar en esas coordenada y que si alguno está en las coordenadas indicadas lo muevas. Esto plantea el problema de que si son muchos eventos, el engine se te hará muy largo y complicado, pero no le veo otra solución...

rpgmanumaker
Veterano
Veterano

1/3

Créditos 678

Gracias : 23

Volver arriba Ir abajo

RPG Maker XP Re: Duda con variables y coordenadas

Mensaje por Avenger_K el 2014-05-11, 14:10

Al final pude encontrar otro modo de hacerlo, aun que variando un poco el modo de ver el puzzle.
Gracias de todos modos :)
Bye Bye!

Avenger_K
Soñador
Soñador

0/3

Créditos 336

Gracias : 15

Volver arriba Ir abajo

RPG Maker XP Re: Duda con variables y coordenadas

Mensaje por Wecoc el 2014-05-11, 16:47

Por si alguna vez alguin más tiene la duda, y a modo más general. Obtener un evento que cumpla cierta restricción en el mapa se puede hacer con el método select.

Éste código simplifica la llamada desde Llamar evento:

Código:
class Game_Map
  def get_events(hash)
    array = $game_map.events.values.clone
    for i in 0...hash.keys.size
      array = array.select do |event|
        if event.methods.include?(hash.keys[i].to_s)
          event.send(hash.keys[i]) == (hash.values[i])
        end
      end
    end
    array.sort!{|a, b| a.id <=> b.id}
    return array
  end
 
  def get_event(hash)
    get_events(hash)[0]
  end
 
  def get_evcoord(x, y)
    hash = {:x => x, :y => y}
    get_event(hash)
  end
end


El problema es que si solo lo haces por coordenadas puede haber problemas cuando dos eventos estén en la misma.

La llamada va por hash, por ejemplo {:x => 10, :y => 11} lo cual permite ir más allá de las coordenadas; :direction, :through, :bush_depth, :terrain_tag, :trigger ......

Entonces se puede hacer

$game_map.get_events({:x => 10, :y => 11})

y obtendrá una array con todos los eventos que haya en esa restricción (vacía si no hay ninguno)

Muy similarmente haciendo

$game_map.get_event({:x => 10, :y => 11})

Hace lo mismo pero devuelve solo el primero de la lista. Si no hay ninguno devuelve nil (es más práctico pero tiene el problema que dije antes de más de un evento que lo cumpla)

Finalmente se puede usar

$game_map.get_evcoord(10, 11)

Para abreviar el caso concreto de las coordenadas x, y.

Edito:

Ya decía yo que lo había visto en otra parte xDD
Hay una manera alternativa similar de hacer lo mismo para el caso de las coordenadas, que es usar el Engine Basics que Eron hizo para RPG maker - La historia Tutorial (ver apartado 1)

Código:
#==============================================================================
# ** Engine Basics - Autor: Eron
#==============================================================================

class Coords
  def initialize(x, y)
    @data = [x, y]
  end
 
  def x
    return @data[0]
  end
 
  def y
    return @data[1]
  end
 
  def x=(value)
    @data[0] = value
  end
 
  def y=(value)
    @data[1] = value
  end
 
  def inspect
    "Coords: (#{x}, #{y})"
  end
 
  def to_a
    return @data
  end
end

class Array
  def to_coord
    Coords.new(self[0], self[1])
  end
end

module Engine_Basics
  def get_coords(x, y)
    return Coords.new(x, y)
  end
 
  def under_coords(event = $game_player)
    get_coords(event.x, event.y)
  end

  def front_coords(event = $game_player)
    coords = get_coords(event.x, event.y)
    case event.direction
      when 2 then coords.y += 1 # Abajo
      when 4 then coords.x -= 1 # Izquierda
      when 6 then coords.x += 1 # Derecha
      when 8 then coords.y -= 1 # Arriba
    end
    return coords
  end

  def get_tile(x, y, layer = 0)
    coords = get_coords(x, y)
    return $game_map.data[coords.x, coords.y, layer] - 384
  end
 
  def under_tile(layer = 0, event=$game_player)
    coords = under_coords(event)
    return $game_map.data[coords.x, coords.y, layer] - 384
  end

  def front_tile(layer = 0, event = $game_player)
    coords = front_coords(event)
    return $game_map.data[coords.x, coords.y, layer] - 384
  end

  def get_terrain(x, y, layer = 0)
    coords = get_coords(x, y)
    return $game_map.terrain_tag_by_layer(coords.x, coords.y, layer)
  end
 
  def under_terrain(layer = 0, event = $game_player)
    coords = under_coords(event)
    return $game_map.terrain_tag_by_layer(coords.x, coords.y, layer)
  end

  def front_terrain(layer = 0, event = $game_player)
    coords = front_coords(event)
    return $game_map.terrain_tag_by_layer(coords.x, coords.y, layer)
  end

  def get_event(x, y, through = true)
    coords = get_coords(x, y)
    x, y = coords.x, coords.y
    result = $game_map.events.values.select{|ev| ev.x == x and ev.y == y}
    if through
      for i in 0...result.size
        if result[i].through == true
          result[i] = nil
        end
      end
    end
    return result.compact[0]
  end
 
  def under_event(through = true, event = $game_player)
    coords = under_coords(event)
    x, y  = coords.x, coords.y
    result = $game_map.events.values.select{|ev| ev.x == x and ev.y == y}
    if through
      for i in 0...result.size
        if result[i].through == true
          result[i] = nil
        end
      end
    end
    return result.compact[0]
  end

  def front_event(through = true, event = $game_player)
    coords = front_coords(event)
    x, y  = coords.x, coords.y
    result = $game_map.events.values.select{|ev| ev.x == x and ev.y == y}
    if through
      for i in 0...result.size
        if result[i].through == true
          result[i] = nil
        end
      end
    end
    return result.compact[0]
  end
end


Wecoc
Administrador
Administrador



Créditos 8263

Gracias : 372

Volver arriba Ir abajo

RPG Maker XP Re: Duda con variables y coordenadas

Mensaje por Contenido patrocinado Hoy a las 06:09


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

Permisos de este foro:
No puedes responder a temas en este foro.