Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[RMXP] Disc Changer script (Cambio de Disco)

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] Disc Changer script (Cambio de Disco)

Mensaje por AsFzKakarotto el 2018-01-23, 02:22

Superar los 999 en mapas es una locura, bueno con este script se puede hacer algo al respecto.

Este script permite hacer que un proyecto se pase inmediatamente a otro proyecto, es digamos un cambio de disco.
Antes existían juegos con dicho sistema, como en Metal Gear Solid de la Play Station, ya que carecía de espacio
suficiente como para que cayera todo recurso en un CD o simplemente se invertía la calidad gráfica o el sonido
hasta sacarle el Jugo al CD XD.

Bueno esto de superar los 999 mapas es resuelto ya que en un proyecto puedes hacer esos 999 mientras que en otro proyecto puedes continuar con 999 mapas más, aunque como digo es prácticamente una locura XD.

Características

• Permite ser transportado de un proyecto a otro.
• Permite disponer de más de 999 mapas.
• No se nota la transición entre proyectos.

Instrucciones

Para crear un disco, se debe crear una subcarpeta en la carpeta Data del proyecto llamada Disc1 para el disco 1, Disc2 para el disco 2 y así sucesivamente hasta donde se necesite.

Luego ponga los mapas que desea en esa subcarpeta.

Cuando haya hecho esto, puede usar las instrucciones de el script para cambiar el disco. (Se hace mediante Llamar Script desde evento)

Nótese que el "disco 0" es especial porque usa los mapas directamente de la carpeta Data, no hay Disc0. Esos son los mapas que se pueden ver en el editor.

Podrías tener un proyecto para cada disco. De esta manera es más fácil cambiar los mapas en cada disco cuando quieras. Sólo copiar y pegar los cambios
en el proyecto principal cuando haya realizado los cambios.

También se pueden copiar los otros .rxdata del proyecto principal al proyecto del disco para asegurarse de que la base de datos y scripts son los mismos en cada proyecto.

Compatibilidad

Probablemente no es compatible con secuencias de comandos que leen MapInfos.rxdata y muestran los nombres de cada mapa.
En esos casos se deberán modificar los scripts para que se lea la MapInfos.rxdata para el disco correspondiente.
Para ello puedes probar de buscar esto en los scripts:

[line]load_data("Data/MapInfos.rxdata")[/line]

y cambiarlo por esto:

[line]load_data(sprintf("Data/%sMapInfos.rxdata", $game_system.disc))[/line]

Insertar script

Pon el script encima de main. Si estás usando el SDK, ya no tienes que hacer nada más.
Si no estás usando el SDK, ve al script Game_Map, al método setup dentro de la línea 50 aproximadamente

Hay una parte que dice lo siguiente

[line]  # Load map from file and set @map
  @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))[/line]

Debes cambiar la segunda línea de modo que se vea así

[line]  # Load map from file and set @map
  @map = load_data(sprintf("Data/%sMap%03d.rxdata", $game_system.disc, @map_id))[/line]

La demo está en inglés pero básicamente se trata de usar las siguientes llamadas de script (sacado de las instrucciones):

[line]change_disc(n)[/line]

En donde n: es el número de disco al que se quiere cambiar.
Con ésta llamada de script el personaje se transporta al mapa de misma ID pero del otro proyecto.

Se puede detallar más específicamente la ruta, aquí un ejemplo:

[line]change_disc(2, 10, 6, 13)[/line]

En donde 2: El disco en el que te quieres transportar.
En donde 10: ID del mapa del nuevo disco (si vale nil, se transporta en el de mismo ID)
En donde 6: Coordenada X del mapa donde transportarse.
En donde 13: Coordenada Y del mapa donde transportarse.

También se puede añadir un último valor adicional que será la dirección del héroe tras su transporte.

0: Ningún cambio (por defecto)
2: Mirar abajo
4: Mirar izquierda
6: Mirar derecha
8: Mirar arriba

Ejemplo:

[line]change_disc(2, nil, 6, 8, 8)[/line]

Si se quiere volver al primer proyecto, hay que poner 0 en el primer valor.

Aquí el script:

Código:
#==============================================================================
# ** Disc Changer script (Designed for Legend of Harpine)
#------------------------------------------------------------------------------
# Zeriab
# 1.05
# 2008-09-20
#------------------------------------------------------------------------------
# Allows you to change the disc, where each disc can contain 999 maps
#==============================================================================
=begin
INSTRUCTIONS
------------
If you do not have the SDK then you have to change Game_Map
In the Game_Map setup method change the load_data line to this: (Line 50)

  # Load map from file and set @map
  @map = load_data(sprintf("Data/%sMap%03d.rxdata", $game_system.disc, @map_id))

After you have done this the below will work.

This script enables the change_disc command. Use script calls to change the disc.
For disc 1 create a subfolder in your data folder called 'disc1' and place the
map files for disc 1 in there.
For disc 2 you should create a subfolder called 'disc2' and place the map files
for disc 2 in there. And so on for each of your discs.
The syntax is:

  change_disc(number, id = nil, x = nil, y = nil, direction = nil)

The nil numbers mean that those arguments are optional. When you don't use them
then they are set to whatever the current map_id, x, y and direction are at the
moment.

If you want to change to disc 2 then you can put this in a script call:

  change_disc(2)
  
You will then be transfered to disc 2 with the same map id and coordinates as
what the player currently has.
If you want to be more precise and say you want to change to disc 2 on the map
with id 10 and the player must be placed at the tile with x = 6 and y = 13 then
you should put this in a call script:

  change_disc(2, 10, 6, 13)
  
Note that when you start the game the maps directly in the data folder is used.
You can back to them by changing to disc number 0.
Basically, disc number 0 is the maps directly in the data folder and not in any
of the sub folders.

The final argument is the direction. By default the player retains the current
direction. You can put 6 different values as direction:

0, 10 : No change
2     : Turn Down
4     : Turn Left
6     : Turn Right
8     : Turn Up

If you for example want to transfer the player to disc 1, map 43 at x = 30 and
y = 4 with the player looking down you should put this in a call script:

  change_disc(1, 43, 30, 4, 2)
  
*hugs*
 - Zeriab
=end

class Game_System
  attr_writer :disc
  def disc
    @disc ||= ''
    @disc
  end
end

class Game_Temp
  attr_accessor :disc_changing
end

class Game_Map
  attr_writer :map_id
  if Module.constants.include?('SDK')
    def setup_load
      # Load map from file and set @map
      @map = load_data(sprintf("Data/%sMap%03d.rxdata", $game_system.disc, @map_id))
    end
  end
end

def change_disc(number, id = nil, x = nil, y = nil, direction = nil)
  # Change disc
  if number.is_a?(Integer)
    $game_system.disc = "disc#{number}/"
  else
    disc = number.to_s
    disc += '/' unless disc[-1] = 47
    $game_system.disc = disc
  end
  # Process arguments
  map_id = id.is_a?(Integer) ? id : $game_map.map_id
  x = $game_player.x unless x.is_a?(Integer)
  y = $game_player.y unless y.is_a?(Integer)
  direction = $game_player.direction unless direction.is_a?(Integer)
  # Set transferring player flag
  $game_temp.player_transferring = true
  # Set transferring player flag
  $game_temp.disc_changing = true
  # Set player move destination
  $game_temp.player_new_map_id = map_id
  $game_temp.player_new_x = x
  $game_temp.player_new_y = y
  $game_temp.player_new_direction = direction
  # Change the current map id in case the new and old are identical.
  $game_map.map_id = 0
end

Y aquí la Demo para entender Mejor su sistema :) (recomiendo descargarla) (Requiere el RTP)
http://share.cherrytree.at/showfile-30867/changedisc.rar

Creditos: Zeriab
Link: Chaos Project - Disc Changer


Última edición por AsFzKakarotto el 2018-01-30, 16:15, editado 1 vez
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 171

Gracias : 35

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Disc Changer script (Cambio de Disco)

Mensaje por Wecoc el 2018-01-25, 02:49

Cambié un poco el texto porque se ve que lo has traducido directamente con un traductor en algunos casos y había algunos problemas, especialmente en las llamadas de script.

Estaría bien poner algo de formato BBCode al post... pero bueno, no es importante xD
Lo que sí importa es que la demo no funciona. Sweat

No está mal el script, pero como decías es una locura un proyecto con tantos mapas. El proyecto más largo que he visto no llegaba a 500... Al menos está bien para mirar como se ha montado, aunque es más sencillito de lo que puede parecer al principio.

Ya hablando a parte del script pero sobre lo que se quiere lograr, al igual que subí un script que permitía romper los límites de listas de la base de datos, técnicamente debería ser posible hacer lo mismo con la lista de mapas, si es el que el límite está solo en la lista del editor. Si eso es factible preferiría esa opción a la del cambio de disco, porque todo se mantiene en el proyecto como siempre. Habría que hacer adaptaciones a Game_Map como pasa con éste, eso sí.
avatar
Wecoc
Administrador
Administrador



Créditos 12286

Gracias : 564

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Disc Changer script (Cambio de Disco)

Mensaje por AsFzKakarotto el 2018-01-30, 04:00

Como es que no funciona?, te creo wecoc, pero si quieres lo vuelvo a subir lo he probado ahora y me funciona. Acaso será la versión o algo?

¿Quieres que lo vuelva a subir? lo he testeado
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 171

Gracias : 35

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Disc Changer script (Cambio de Disco)

Mensaje por Wecoc el 2018-01-30, 15:47

Lo que no va es el link, ni antes ni ahora. ¿Es posible que lo hayas puesto como archivo privado o algo así? ¿O que de la lista de links a insertar que te da, usaras el que no es? Probé a ponerle .zip detrás y tampoco va. Si no hay más remedio usa otro alojador de archivos.
avatar
Wecoc
Administrador
Administrador



Créditos 12286

Gracias : 564

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Disc Changer script (Cambio de Disco)

Mensaje por AsFzKakarotto el 2018-01-30, 16:17

Solucionado ahora funciona el link... perdonen las molestias
avatar
AsFzKakarotto
Soñador
Soñador

0/3

Créditos 171

Gracias : 35

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Disc Changer script (Cambio de Disco)

Mensaje por orochii el 2018-01-31, 21:43

No lo he probado, pero se ve bien el aporte. Como Wecoc lo revisó supongo que ya él habrá tirado quejas de qué cosas podrían hacerse mejor o eso xDDD. Y bueno, eso básicamente. Es bueno tener aportes en el foro, total son como lo que le da más valor. :^) Aparte de gente haciendo juegos en lugar de haciendo el vago xD (a menos que tu juego se llame el vago (?)).

EN FIN SALUDOS xjaskldjalskdj.
avatar
orochii
Reportero

0/3

Créditos 7583

Gracias : 403

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Disc Changer script (Cambio de Disco)

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.