Mundo Maker
¡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
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3811 miembros registrados.
El último usuario registrado es aLKi.

Nuestros miembros han publicado un total de 86181 mensajes en 12282 argumentos.

Algunas dudas resueltas por MP

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Algunas dudas resueltas por MP

Mensaje por Wecoc el 2017-07-08, 18:50

No me gusta demasiado que la gente haga dudas genéricas por MP.
Está bien pedir ayuda sobre algunas cosas por MP si es para casos puntuales de tu proyecto, pero si es algo más genérico es mejor abrir un tema, porque a parte de que te ayudarán más rápido también será ayudada más gente que pueda tener el mismo problema.
De esa premisa parte éste topic, en el que responderé algunas dudas frecuentes que me han llegado por MP.

¿Cómo puedo hacer Parallax Mapping en RPG maker XP?

Qué es el Parallax Mapping:
La idea principal de un Parallax Mapping es la siguiente: Usar los panoramas como parte del mapa, y los tiles reservarlos para las cosas que quedan por encima de los charas.
Esos panoramas se hacen con el Photoshop o programas similares, muchas veces partes de tiles pero sin seguir estrictamente una rejilla de 32 x 32 (vaya, que te permite total libertad) Si buscas en Google Imagenes "RPG maker Parallax Mapping" verás cómo quedan los mapas.

En VX y Ace es totalmente factible ese sistema porque puedes poner la opción en el editor de ver el panorama, y así mapear las pasabilidades y los tiles que quedan por encima del chara fácilmente. En XP es un caos porque no se ve el panorama en el editor, a la hora de definir lo demás vas totalmente a ciegas. Además panorama y tileset scrollean a diferente velocidad, por lo que usar el sistema de parallax mapping en XP requiere retocar scripts y es un jaleo.

Pero lo importante del mapeado de XP es que los tilesets son ilimitados; usando esa ventaja se puede hacer Parallax Mapping sin requerir ningún cambio de script, viendo el mapa en el editor, y controlando la pasabilidad como siempre.

Lo único que hay que hacer una vez se ha creado el gráfico que se usaría como panorama es en vez de eso pasarlo a un tileset tal cual, sabiendo que el único requerimiento es que haga 256px de ancho, así que habrá que recortar la imagen varias veces para que quepa todo. Pasado todo el fondo en el tileset, también debajo se pasan las partes que quedan encima del personaje. Hecho eso luego "mapear" en el programa es un momento. Ese método también te deja la ranura libre de panorama, que puedes usarlo como siempre.

Esa es por lo tanto sin duda la forma más fácil de hacer parallax en RPG maker XP.

¿Cómo obtener el evento actual mediante script?

Hay dos modos, el primero es usar @event_id en la llamada de script en vez de la id normal así que quedará así, le pongo de ejemplo usarlo para comprobar si se está moviendo:
$game_map.events[@event_id].moving?

El segundo modo no es tan elegante ni intuitivo y aprovecha el modo como el intérprete entiende donde aplicar una ruta, siendo -1 el personaje, 0 el evento actual y 1,2,3... el ID del evento. Sería así:
get_character(0).moving?

Hay que comentar que si es un evento común que ha sido llamado desde un evento sigue siendo efectivo para obtener el ID de ese vento, mientras que si ha sido llamado con un objeto o habilidad o desde script, luego @event_id vale 0.

¿Qué diferencias hay entre los distintos tipos de Llamar Script?

Tanto el Llamar Script como la opción Script de Condiciones y Efectos se evalúan sobre la clase Interpreter.
Eso significa que se pueden controlar desde allí las variables de la clase Interpreter, las principales son @map_id, @event_id, @wait_count; y también se puede llamar a sus métodos directamente, lo que a veces en scripts se usa para crear atajos.

El Llamar Script del Mover Evento en cambio se aplica sobre el propio evento o personaje, es decir sobre su clase Game_Event o Game_Player (que ámbas son Game_Character). Eso significa que desde ahí nuevamente se pueden controlar las variables de esa clase, como @pattern, @direction, @animation_id... hay un montón, la mayoría se pueden ver al principio de cada uno de esos scripts. También, nuevamente, se pueden llamar métodos de esas clases.

En resumen, cuando haces un llamar script es como si insertaras tu pedazo de código dentro de una clase de script; Interpreter en los principales y Game_Event o Game_Player en los de Mover Evento / Ruta de Evento.

Creo que además es importante decir que solo Llamar Script parece que soporte más de una línea, pero en realidad en todos los casos se soportan más, solo hay que tener en cuenta que para marcar cambio de línea se usa el carácter ;
Por ejemplo, en Condiciones y Efectos podrías poner en el script:
a = $game_variables[1] ; b = ((a**2)/(a+1)) ; b > 10
Eso sería lo mismo que la versión en una línea:
(($game_variables[1] ** 2) / ($game_variables[1] + 1)) > 10

¿En qué orden se dibujan las capas y prioridades en RPG maker XP?

Capa 1 es la de más abajo, y Capa 3 la de más arriba.
Pese a estar en la capa baja, un tile que tiene prioridad más alta queda por encima de la siguiente capa.

Las pseudo-capas de VX y Ace funcionan más o menos así:
1) Capa 1 - Prioridades 0-5
2) Capa 2 - Prioridades 0-5
3) Capa 3 - Prioridades 0-5


Las capas de XP en cambio estan planteadas al revés:
1) Prioridad 0 - Capas 1-3
2) Prioridad 1 - Capas 1-3
3) Prioridad 2 - Capas 1-3
4) Prioridad 3 - Capas 1-3
5) Prioridad 4 - Capas 1-3
6) Prioridad 5 - Capas 1-3


Por defecto todas las capas se dibujan allí mismo (en la misma viewport), lo que cambia es la Z, y esta se define por la propiedad en el órden que he puesto.
Los charas, el panorama, la fog y el clima también van en la misma viewport, solo cambia la Z de cada cosa para dar el efecto "capa".

Todo eso viene definido en Spriteset_Map.

Ojalá le sirva a alguien alguna de éstas directrices.
avatar
Wecoc
Administrador
Administrador



Créditos 12101

Gracias : 522

Volver arriba Ir abajo

RPG Maker XP Re: Algunas dudas resueltas por MP

Mensaje por Producciones The Golden el 2017-07-08, 19:36

Todo esto me hace preguntar: ¿por qué hay Prioridad y Capas a la vez? con la forma en la que te lo dicen te hace pensar que te da variedad, pero al fin y al cabo es lo mismo ¿no? quieres poner un tile sobre otro: lo pones en la siguiente capa, y listo, ¿no? la única diferencia que hallo es que la prioridad la configuras en el tileset teniendo... ¿cuánto? ¿una o dos "capas" (prioridades) más? mientras que las capas son menos y más prácticas de manejar.

Edit: el pedido ya lo realizó Newold, que por cierto... muchas gracias Newold! saludos.
Eso fue todo... hasta pronto!  Warrior


Última edición por Producciones The Golden el 2017-07-08, 20:07, editado 1 vez
avatar
Producciones The Golden
Veterano
Veterano

0/3

Créditos 637

Gracias : 60

Volver arriba Ir abajo

RPG Maker XP Re: Algunas dudas resueltas por MP

Mensaje por newold el 2017-07-08, 19:47

Pedido:
Mostrar imagen por engine o script que quede estática en un lugar, ya lo he hecho y queda "bien", me muevo y la imagen queda en las coordenadas que indiqué pero se ve que por momentos el juego falla al cargar las coordenadas y la imagen se mueve un tile para el lado en el que se mueve el personaje, parece un error del proceso, el resto va perfectamente.
Eso fue todo... hasta pronto!  Warrior

por código con el comando llamar script:

Código:
$una_variable_global = Sprite.new
$una_variable_global.bitmap = Bitmap.new("Ruta de la imagen")
$una_variable_global.x = 0 # Coordenada x de la imagen
$una_variable_global.y = 0 # Coordenada y de la imagen
$una_variable_global.z = 0 # priorida para mostrar esta imagen antes que otras

y para borrar esa imagen con otro comando de llamar script

Código:
$una_variable_global.dispose

Por supuesto hacer que el evento que ejecute ese código solo lo haga una vez (por ejemplo en la primera página de inicio automático ese código, y después activar interruptor local A. Crear una segunda página en el evento y como condición de inicio poner el interruptor local A)

Con ese código creas una imagen estática donde tu quieras y no se mueve
avatar
newold
Principiante
Principiante

0/3

Créditos 1097

Gracias : 72

Volver arriba Ir abajo

RPG Maker XP Re: Algunas dudas resueltas por MP

Mensaje por Wecoc el 2017-07-08, 21:38

Producciones The Golden:

Sobre la duda que has puesto sobre por qué hay tanto capas como prioridades en el maker.

Es difícil decir un solo motivo porque para poder construir bien los mapas desde el editor y que también todo se vea bien en el juego es básico que existan ambas cosas. Es de esas cosas que cuanto más las piensas más ventajas le ves, pero bueno te dejo las principales que se me ocurren.

Ventajas:
Lo que marca las diferencias de altura entre los tiles son las prioridades pero también se necesita algún modo de controlar dentro de una misma prioridad qué queda encima o debajo, y ahí entran en juego las capas. De ahí que los tiles de suelo de capas superiores queden por encima del tile de suelo de la capa de abajo, pese a tener la misma prioridad.

Además a nivel de editor es mucho más cómodo trabajar con capas tal como vienen montadas, que tener que hacerlo siempre pensando en la prioridad de cada tile.

Eso por otra parte no le quita relevancia a las prioridades, que a la hora de dibujar los tiles como ya se indicó son el modo principal de ordenar su altura.

Las prioridades además son imprescindibles para la interacción entre tiles y eventos. Piénsalo así, si los eventos estuvieran “anclados” en la capa de más abajo para tener solo el suelo debajo suyo, ya no podrías luego usar tiles (o autotiles) de suelo en una capa superior como se hace ahora, porque quedarían encima del evento.

La pasabilidad y el terreno se calculan usando ambas cosas de modo combinado, para esos cálculos los dos parámetros son necesarios a la vez.

En definitiva, sería muy difícil mapear si no existieran ambas cosas de modo separado. Por eso incluso en el sistema de pseudo-capas de los maker superiores siguen estando ambas.

Por cierto, por si fuera poco el lío, la “Z de pantalla” de eventos y tiles también depende de la coordenada Y. Eso es importante para poder hacer que la prioridad 1 quede encima o debajo del evento según si se encuentra delante o detrás. Nuevamente si el mapa solo fuera por capas eso difícilmente sería viable.

Sobre la duda que ha citado newold.

No la entiendo mucho... Parece que te la ha solucionado, así que bien por tí. A mí lo de crear un sprite mediante una global en Llamar Script nunca me gustó mucho, porque ese sprite no está siendo updateado. Hay quien dice que cuando creas un sprite hay que updatearlo siempre, sea estático o no, porque si no luego el maker a veces hace cosas raras (como borrarlo pasados unos frames). Hasta donde yo sé eso es falso y por ejemplo el sprite de la imagen de título no se updatea xD pero updatearlo óbviamente siempre te da más opciones luego, como cambiarle su visibilidad, posición y esas cosas cuando quieras.

Puedes en otro evento en proceso paralelo updatear el sprite siempre que la global no valga nil, o bien crearlo por script en una clase a parte.
Yo lo que haría en éste caso concreto sería crear una variable dentro de $game_system que indique si éste sprite está activo o no. Luego crearía el sprite en Scene_Map dependiendo de esa variable, o bien mejor dicho lo crearía a priori nada más iniciar Scene_Map y la variable controlaría su visiblidad dentro del update. De ese modo el sprite solo se ve cuando estás en el mapa y no en las escenas (creo que es lo que necesitas) y además queda guardado su estado cuando guardas partida y vuelves a cargarla.
avatar
Wecoc
Administrador
Administrador



Créditos 12101

Gracias : 522

Volver arriba Ir abajo

RPG Maker XP Re: Algunas dudas resueltas por MP

Mensaje por Producciones The Golden el 2017-07-08, 21:43

Bien, gracias por todo... ahora si que le veo algo útil a las Prioridades XD.
Respecto a la imagen... updatearla o no... bah, en verdad mi duda es si no hay forma de hacerlo por engine, ya que muestro una imagen por engine y queda ahí estática mas al moverme se mueve sola un poco, como dije antes, como si hubiera un problema mientras te mueves para localizar las coordenadas o el evento, pero creo que me conformaré con hacerlo vía script...
Repito, gracias, y quitaré mi firma para no spamear devuelta en tu post. Saludos.
avatar
Producciones The Golden
Veterano
Veterano

0/3

Créditos 637

Gracias : 60

Volver arriba Ir abajo

RPG Maker XP Re: Algunas dudas resueltas por MP

Mensaje por Wecoc el 2017-08-12, 12:50

Nuevamente, me han hecho un pedido interesante por MP así que lo pongo aquí.
Intentad no hacerme trabajar más de lo necesario, haced los pedidos en el foro porfa n_n"
En fin, al menos éste fue muy simple así que da igual. El pedido fue parar absolutamente todo el mapa cuando está funcionando la ventana de mensaje. Es un arreglo que puede ser interesante en varios proyectos.

Hay que usar éste pequeño script. Es compatible con todo, de hecho funciona en XP, VX y Ace.

Código:
#==============================================================================
# ** [XP/VX/Ace] Message Map Freeze
#==============================================================================

for Klass in [Game_Map, Spriteset_Map, Spriteset_Battle]
  class Klass
    alias message_window_freeze_upd update unless $@
    def update
      return if $game_temp.message_window_showing
      message_window_freeze_upd
    end
  end
end

Como ésto como aporte es algo soso os paso también éste script que hice, son compatibles entre ellos y todo. Éste permite acelerar el juego en modo Debug si pulsas una tecla (en el ejemplo F5), lo cual puede venir bien para testear. Lo acelera solo Scene_Map y Scene_Battle pero si miráis el código veréis que se puede poner en más escenas si os interesa.

Código:
#==============================================================================
# ** [XP/VX/Ace] Debug Speed Up
#==============================================================================

# Velocidad acelerada n veces
DEBUG_SPEED_SPEED = 3
# Opción "Mantener pulsado" (recomendado)
DEBUG_SPEED_PRESS = true
# Tecla a pulsar
DEBUG_SPEED_KEY = Input::F5

for Klass in [Scene_Map, Scene_Battle]
  class Klass
    unless $@
      alias debug_speed_ini initialize
      alias debug_speed_upd update
    end
    def initialize
      debug_speed_ini
      @speed_factor = 1
    end
    def update
      return debug_speed_upd unless $DEBUG || $TEST
      @speed_factor.times {debug_speed_upd}
      if DEBUG_SPEED_PRESS == false
        if Input.trigger?(DEBUG_SPEED_KEY)
          array = [1, 2, 3, 5, 10, DEBUG_SPEED_SPEED]
          array.uniq! ; array.sort!
          index = array.index(@speed_factor)
          new_index = (index + 1) % array.size
          @speed_factor = array[new_index]
          print "Speed Factor: #{@speed_factor}"
          return
        end
      end
      @speed_factor = Input.press?(DEBUG_SPEED_KEY) ? DEBUG_SPEED_SPEED : 1
    end
  end
end

En realidad ámbos son dos snippets bien sencillos pero viene bien tenerlos.
avatar
Wecoc
Administrador
Administrador



Créditos 12101

Gracias : 522

Volver arriba Ir abajo

RPG Maker XP Re: Algunas dudas resueltas por MP

Mensaje por Wecoc el 2017-10-22, 01:13

Me ha llegado una pregunta interesante por MP.

¿Es posible asignar una música en el menú en XP?

Para hacer eso se requiere un pequeño script que memorice la música actual antes de entrar en menú y la recupere después.

Código:
#==============================================================================
# ** [XP] Music in Menu
#==============================================================================

class Game_System
  
  # Música del menú
  MENU_BGM = RPG::AudioFile.new("017-Theme06", 80, 100)
  
  # Sonido del menú (recomiendo no asignar ninguno)
  MENU_BGS = RPG::AudioFile.new("")
  
  def bgm_memorize_map
    @memorized_map_bgm = @playing_bgm
  end
  
  def bgm_restore_map
    bgm_play(@memorized_map_bgm)
  end
  
  def bgs_memorize_map
    @memorized_map_bgs = @playing_bgs
  end
  
  def bgs_restore_map
    bgs_play(@memorized_map_bgs)
  end
end

#==============================================================================

class Scene_Map
  # Memorizar música al salir del mapa
  alias music_back_main main unless $@
  def main
    music_back_main
    $game_system.bgm_memorize_map
    $game_system.bgs_memorize_map
  end
end

#==============================================================================

class Scene_Menu
  # Iniciar Menú
  alias music_back_ini main unless $@
  def main
    $game_system.bgm_play(Game_System::MENU_BGM)
    $game_system.bgs_play(Game_System::MENU_BGS)
    music_back_ini
  end
end

#==============================================================================

# Volver al mapa (asignar aquí las escenas internas del menú)
for Klass in [Scene_Menu, Scene_Item, Scene_Skill, Scene_File]
  class Klass
    alias music_back_main main unless $@
    def main
      music_back_main
      case $scene
      when Scene_Map
        $game_system.bgm_restore_map
        $game_system.bgs_restore_map
      end
    end
  end
end

Además no es difícil asignar que ocurra lo mismo con otras escenas, por ejemplo la de tienda.

Donde pone [line]class Scene_Menu[/line] en vez de eso pondría [line]class Scene_Shop[/line], el resto de esa parte igual.

Luego en la parte final que hay la lista de escenas [line][Scene_Menu, Scene_Item, Scene_Skill, Scene_File][/line] simplemente estaría la de tienda [line][Scene_Shop][/line], puesto que desde esa no se puede acceder a ninguna otra escena interna desde la que se pueda retornar al mapa.

____________________

Esta pregunta me la hicieron hace mucho tiempo y creo que se me olvidó responderla al final... No estoy seguro. Si es así, lo siento u_u"
Nuevamente es una pregunta que puede interesar a muchos, por eso la pongo aquí.

¿Se puede hacer que al equipar algo concreto se reproduzca un sonido?

Sí, es posible, y se puede hacer también al desequiparlo.
Es necesario un script que puse aquí:
Add-Ons de la Base de Datos usando scripts cortos

Concretamente el del último apartado, que es ¿Cómo modifico algo especial al cambiar el equipamento?

Hacia el final del script donde pone esto

[line]    if new_weapon == 1 and old_weapon != 1 # ID de arma
     # Aquí haces lo que quieras cuando equipes el arma
   end[/line]

Solo hay que definir la ID bien ahí en vez de los dos 1 que aparecen, y poner dentro lo que quieras que ocurra al equipar el arma,
por ejemplo si quieres un sonido de fuego:
Audio.se_play("Audio/SE/117-Fire01", 80, 100) (nombre, volumen, frecuencia)

Justo abajo hay otra condición similar para cuando se desactiva.
Se pueden añadir condiciones similares en cadena y en cada ID de arma o armamento poner lo que se quiera.

En vez de weapon puedes usar armor1 (escudo), armor2 (casco), armor3 (armadura) o armor4 (accesorio).

A parte de sonidos puedes poner los efectos que queiras por ejemplo si usas:
self.learn_skill(20) Aprende la habilidad 20
self.forget_skill(20) Desaprende la habilidad 20

Ale, creo que ya tengo esas dudas no resueltas al día otra vez xD
avatar
Wecoc
Administrador
Administrador



Créditos 12101

Gracias : 522

Volver arriba Ir abajo

RPG Maker XP Re: Algunas dudas resueltas por MP

Mensaje por Wecoc el 2017-10-23, 19:43

Vuelvo a postear aquí...
Es que me llegan varias preguntas últimamente que lo mejor que puedo es responderlas por aquí. Sweat

¿Hay alguna manera sencilla de lograr que un evento sea transpasable para el escenario pero no para el personaje?

Hace años Pokepik hizo un script que hacía justo lo contrario, los eventos respetaban la pasabilidad del mapa pero el personaje y los eventos podían atraverarlo.
Lo pongo aquí: Eventos cucaracha

En el caso de la pregunta el edit sigue siendo similar, es cuestión de alterar el método de pasabilidad para que funcione solo parcialmente en algunos casos. De hecho ampliaré el script de Pokepik para soportar otras opciones.
Eso ya se hizo en una ocasión anterior, en el Sistema Momotaro (primer código) pero era un sistema algo especialito así que mejor rehacer ese edit.

Código:
#==============================================================================
# ** [XP] Passable 'Unpass' Edits
#------------------------------------------------------------------------------
# Autor: Wecoc (no requiere créditos)
#==============================================================================

class Game_Character
  
  attr_accessor :unpass_tiles, :unpass_events, :unpass_player
  
  alias unpass_system_ini initialize unless $@
  def initialize(*args)
    unpass_system_ini(*args)
    @through = false
    @through_cloned = false
    @unpass_tiles = true
    @unpass_events = true
    @unpass_player = true
  end
  
  alias unpass_system_upd update unless $@
  def update
    if @through != @through_cloned
      @through_cloned = @through
      @unpass_tiles  = !@through
      @unpass_events = !@through
      @unpass_player = !@through
    end
    unpass_system_upd
  end
  
  def passable?(x, y, d)
    new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
    new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
    # El personaje/evento no puede salir de los límites del mapa
    return false unless $game_map.valid?(new_x, new_y)
    if @unpass_tiles
      # El personaje/evento no puede atravesar tiles no pasables
      return false unless $game_map.passable?(x, y, d, self)
      return false unless $game_map.passable?(new_x, new_y, 10 - d)
      for event in $game_map.events.values
        if event.x == new_x and event.y == new_y
          if event.tile_id > 0
            if (self.is_a?(Game_Player) && event.unpass_player) or
              (self.is_a?(Game_Event) && event.unpass_events)
              # El personaje/evento no puede atravesar eventos tile no pasables
              return false
            end
          end
        end
      end
    end
    if @unpass_events
      for event in $game_map.events.values
        if event.x == new_x and event.y == new_y
          if event.tile_id == 0
            if (self.is_a?(Game_Player) && event.unpass_player) or
              (self.is_a?(Game_Event) && event.unpass_events)
              # El evento no puede atravesar al personaje
              return false if self != $game_player
              # El evento no puede atravesar eventos sin gráfico
              return false if event.character_name != ""
            end
          end
        end
      end
    end
    # El personaje no puede atravesar eventos excepto si no tienen gráfico
    if $game_player.x == new_x and $game_player.y == new_y
      if $game_player.unpass_events
        return false if @character_name != ""
      end
    end
    return true
  end  
end

La pasabilidad va como siempre pero tienes nuevos controles por script para afinar más.
[line]$game_map.events[ID].unpass_tiles  = VALOR  # Si el evento puede atravesar o no los tiles
$game_map.events[ID].unpass_events = VALOR  # Si el evento puede atravesar o no los eventos
$game_map.events[ID].unpass_player = VALOR  # Si el evento puede atravesar o no al personaje[/line]

ID es la id del evento, pero en vez de $game_map.events[ID] puede usarse $game_player para el personaje o bien $game_map.events[@event_id] para el evento actual.
VALOR puede ser true o false. En las llamadas de script si igualas algo a false puede trabarse el evento así que recomiendo poner return true en la línea siguiente o bien usar el bugfix que lo arregla.

En principio el script irá bien, probadlo a ver si os sirve.

¿Se puede cambiar la hue de una picture con comandos de script?

Se necesita un pequeño script que pongo a continuación. Ya había hecho algún otro similar para algún engine, hay varias formas de afrontarlo pero en todo caso es un script muy corto y compatible con prácticamente todo.

Código:
#==============================================================================
# ** [XP] Picture Hue Addon
#==============================================================================

class Interpreter
  #--------------------------------------------------------------------------
  def get_picture_sprite(id)
    id -= 50 if id > 50
    spriteset = $scene.instance_eval("@spriteset")
    spriteset.update
    picture = spriteset.instance_eval("@picture_sprites[#{id - 1}]")
    return picture
  end
  #--------------------------------------------------------------------------
  def set_picture_hue(id, hue)
    return unless $scene.is_a?(Scene_Map) || $scene.is_a?(Scene_Battle)
    picture = get_picture_sprite(id)
    filename = picture.instance_eval("@picture_name")
    picture.bitmap = RPG::Cache.load_bitmap("Graphics/Pictures/", filename, hue)
  end
  #--------------------------------------------------------------------------
end

Hecho esto una vez cargada una imagen puede usarse la siguiente llamada de script para cambiar la hue de la picture.

[line]set_picture_hue(Picture ID, HUE)[/line]

Por ejemplo: set_picture_hue(1, 20)
Picture ID es el número de picture que definiste al crearle. HUE va de 0 a 360.
avatar
Wecoc
Administrador
Administrador



Créditos 12101

Gracias : 522

Volver arriba Ir abajo

RPG Maker XP Re: Algunas dudas resueltas por MP

Mensaje por Eron el 2017-11-14, 20:09

No conocía esto, se me había pasado totalmente por alto o al menos no me acordaba de haberlo visto. Y alguna de esas dudas creo que fue mía de hace mucho tiempo x'DD
A mí también me hicieron algunas dudas por MP hace tiempo, tardo bastante en responder pero siempre intento acabar resolviendo.
Si no te importa, pondré alguna. No son tan complicadas como las que has puesto, no sé quien te pregunta esas cosas Wec x'D

A mí las que me llegaron fueron:

¿Cual es el comando de script para cambiar interruptores locales?

Es este:
$game_self_switches[MAP ID, EVENT ID, NAME] = true / false

Por ejemplo:
$game_self_switches[$game_map.map_id, 1, 'A'] = true

Normalmente interesa cambiar el del propio evento en ese caso es así:
$game_self_switches[$game_map.map_id, @event_id, 'A'] = true

Haciéndolo por llamada de script puedes:
- Cambiarlos desde otro evento e incluso desde otro mapa
- Cambiarlos desde ruta de evento
- Asignar más, con otros nombres, pero solo servirá con Condiciones no para las páginas de evento

Para hacerlo funcionar en Condiciones y efectos es igual pero usando == (comprobar si es ese valor) en vez de solo =

Otra duda que me han hecho, esta aún no la he sabido responder, a ver si tú puedes iluminarnos x'D

¿Cómo hago que al interactuar con un evento no se gire hacia el personaje? ¿Y se puede hacer que el mismo evento pueda hacer a la vez cosas distintas si pulsas C, topas con él o él colisiona contigo?

Pongo más:

¿Cómo hago un fade in o fade out a un evento?

Hay un script por ahí que permite hacer fade entre gráficos pero creo que se refiere a simplemente aparecer o desaparecer lentamente.
Solo hay que usar el Cambiar opacidad en Mover Evento varias veces encadenado con un Esperar 1 frames y dará el efecto fade. No hace falta script.

Otra un poco rara:

¿Cómo activo un evento por script?

Normalmente usarás un interruptor o algo parecido para que se cumpla el evento y así activarlo, así que no hace falta hacer cosas raras por script para
activar un evento ajeno. Aún así, se puede hacer:

$game_map.events[EVENT ID].start

Cambiando EVENT ID por el ID del evento a iniciar.

No encuentro nada más =)
avatar
Eron
Principiante
Principiante

0/3

Créditos 3593

Gracias : 56

Volver arriba Ir abajo

RPG Maker XP Re: Algunas dudas resueltas por MP

Mensaje por Wecoc el 2017-11-21, 01:09

Gracias por comentar las que tenías guardadas. Me alegra ver que no soy el único a quien le han preguntado cosas de esas por MP xD

¿Cómo hago que al interactuar con un evento no se gire hacia el personaje?

¿Sin asignarlo como Dirección fija? Curioso... No le veo mucha utilidad, pero bueno.
Se le puede asignar una variable especial para ello.

Código:
class Game_Event < Game_Character
  attr_accessor :dont_turn
  alias dont_turn_ini initialize unless $@
  def initialize(*args)
    dont_turn_ini(*args)
    @dont_turn = false
  end
  def lock
    return if @locked
    @prelock_direction = @direction
    turn_toward_player unless @dont_turn
    @locked = true
  end  
end

Prueba con $game_map.events[ID].dont_turn = true
Cambiando como siempre ID por el id del evento.

¿Y se puede hacer que el mismo evento pueda hacer a la vez cosas distintas si pulsas C, topas con él o él colisiona contigo?

Eso sí que ya requiere un script propiamente dicho y no solo un añadido de estos. Intentaré dar con alguna solución.
avatar
Wecoc
Administrador
Administrador



Créditos 12101

Gracias : 522

Volver arriba Ir abajo

RPG Maker XP Re: Algunas dudas resueltas por MP

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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