Registrarse

[RPGXP] Generación de eventos dinámicos (Vía Marshal)

Después de mucho tiempo buscando formas de hacer funcionar esto al fin lo logré, lo he probado con pokémon essentials y con RPGmaker puro y funciona en ambos aunque con alguna diferencia minima.

Dejo el documento para descargar ya que son como 7 páginas de documentación, también dejo en un spoiler el codigo final.

PHP:
def generar_evento()

  old_map = $game_map.map_id #Guardamos el nombre del mapa actual
 
  #Deducimos el nombre del mapa
  if $game_map.map_id<=9
    map_name = "Map00#{$game_map.map_id}"
  elsif $game_map.map_id >=10 and $game_map.map_id <=99
    map_name = "Map0#{$game_map.map_id}"
  elsif $game_map.map_id > 99
    map_name = "Map#{$game_map.map_id}"
  end
   
  mapa = load_data("Data/#{map_name}.rxdata") #Cargamos los datos del mapa
 
 
  mapa.events[mapa.events.length+1] = RPG::Event.new(rand(10),rand(10)) #Generamos un nuevo evento con coordenadas X e Y aleatorias.
  mapa.events[mapa.events.length].pages[0].graphic.character_name = "ABRA" #Cambiamos el gráfico del evento.
  mapa.events[mapa.events.length].pages[0].move_type = 1 #Definimos que tenga movimiento aleatorio.
  mapa.events[mapa.events.length].id = mapa.events.length #Hacemos que su ID sea igual a su entrada en el hash de eventos.
  mapa.events[mapa.events.length].name = "Evento" #Cambiamos el nombre del evento a Evento.
  mapa.events[mapa.events.length].pages[0].move_speed = 3 #Cambiamos su velocidad a 3.
  mapa.events[mapa.events.length].pages[0].move_frequency = 4 #Cambiamos la frecuencia de movimiento a 4.
  mapa.events[mapa.events.length].pages[0].list.unshift(RPG::EventCommand.new) #Añadimos un comando al principio de la lista de comandos.
  mapa.events[mapa.events.length].pages[0].list[0].code= 101 #El comando es de tipo 101(Mostrar mensaje)
  mapa.events[mapa.events.length].pages[0].list[0].parameters= ["texto de prueba"] #Hacemos que el parámetro del comando sea un array con valor el texto a mostrar.
 
  save_data(mapa,"Data/#{map_name}.rxdata") #Guardamos los datos del mapa.
 
 
  #Si no trabajamos con pokémon essentials descomentar las siguientes líneas.
  #$game_map.setup($game_map.map_id)
  #$game_player.moveto($game_player.x, $game_player.y)
  #$game_player.refresh
  #$game_map.autoplay
  #$game_map.update
  #$scene = Scene_Map.new
 
  #Si trabajamos en pokémon essentials descomentar las siguientes líneas.
  #$MapFactory.setup(1) #Cargamos un mapa cualquiera.
  #pbWait(1) #Esperamos una centésima de segundo.
  #$MapFactory.setup(old_map) #Volvemos al mapa original.
  #$game_player.moveto($game_player.x,$game_player.y) #Ponemos al jugador en su posición original.
end
 
Última edición por un moderador:
Respuesta: [En curso] Generación de eventos vía script

No se ve en pantalla porque sólo generas datos pero no los asignas a ningún objeto. He trabajado RPG Maker pero nunca he hecho nada como tal así que ni puedo ayudar mucho.

Acabo de revisar un poco, te recomiendo trabajar esto como un módulo y no como una clase.
También asegúrate que este comience a trabajar al inicio del programa independientemente que es lo que estés haciendo (un juego, una aplicación derivada... qué sé yo)
Lo mejor que puedes hacer es, en caso de continuar trabajando cómo una clase; subordinarla a Game_Character quedando algo así:
class Automevent < Game_Character
Con ello vas a heredar todas las propiedades utilizadas.

Es raro que cómo lo tienes, trabaje. Ya que esto está mal:
Kernel.pbMessage(_INTL("{1}",event))
La forma correcta sería:
Kernel.pbMessage(_INTL("{1}"),event)

Seguiré de cerca está investigación.
 
Respuesta: [En curso] Generación de eventos vía script

Bien, después de mucho tiempo investigando y probando de cientas de formas diferentes al fin he encontrado un método capaz de hacer lo que buscaba. Se trata de editar el archivo .rxdata del mapa en el que se desean insertar los eventos.
Es un proceso un tanto enrevesado la primera vez, ya que hay que entender como funcionan las clases que RPGmaker usa para crear eventos, pero una vez le pillas el tranquillo es super sencillo crear eventos "on the go".

Ahora en un rato acuatlizaré el post con los pasos a realizar.
 

Magnaangemon

Aprendiz Scripter
Respuesta: [En curso] Generación de eventos vía script

Bien, después de mucho tiempo investigando y probando de cientas de formas diferentes al fin he encontrado un método capaz de hacer lo que buscaba. Se trata de editar el archivo .rxdata del mapa en el que se desean insertar los eventos.
Es un proceso un tanto enrevesado la primera vez, ya que hay que entender como funcionan las clases que RPGmaker usa para crear eventos, pero una vez le pillas el tranquillo es super sencillo crear eventos "on the go".

Ahora en un rato acuatlizaré el post con los pasos a realizar.
No entendi...para k sirve esto?
 
Respuesta: [En curso] Generación de eventos vía script

No entendi...para k sirve esto?
Vaya, se calló la documentación que escribí D:, luego la vuelvo a subir.

Creo que el propio título del post explica para que sirve esto pero bueno te lo explico mejor XD

Esto es un script que sirve de ejemplo para aprender a crear eventos en los mapas desde un script. Puede que así de repente no le veas utilidad pero se pueden hacer muchas cosas con él. Por ejemplo puedes introducir y eliminar entrenadores en un mapa a tu antojo.
 

Magnaangemon

Aprendiz Scripter
Respuesta: [En curso] Generación de eventos vía script

Vaya, se calló la documentación que escribí D:, luego la vuelvo a subir.

Creo que el propio título del post explica para que sirve esto pero bueno te lo explico mejor XD

Esto es un script que sirve de ejemplo para aprender a crear eventos en los mapas desde un script. Puede que así de repente no le veas utilidad pero se pueden hacer muchas cosas con él. Por ejemplo puedes introducir y eliminar entrenadores en un mapa a tu antojo.
Ahora entendi,buen aporte¡¡¡
 
Arriba