Skip to content

Instantly share code, notes, and snippets.

@xvw
Created February 2, 2018 04:01
Show Gist options
  • Save xvw/26fd4bbcb1728e44d14b524ec3d9eadf to your computer and use it in GitHub Desktop.
Save xvw/26fd4bbcb1728e44d14b524ec3d9eadf to your computer and use it in GitHub Desktop.
=begin
Attention, l'utilisation de ce script rend le jeu injouable. Il n'est
utile QUE pour générer un fichier compatible avec RPGMaker XP et l'AMS
Ultimate (et rendre le mapping des hauteurs un peu plus sexy :) )
## Installation
- Copier le script "au dessus de Main" (dans la rubrique Material par exemple)
## Utilisation
Au démarrage du jeu, une fois le script installé, le jeu va générer directement
un fichier "rxdata" compatible avec le script de Zeus.
(Il est conseillé d'activer l'affichage de la console "Jeu > Afficher la console"
histoire de voir "ce que le script est en train de faire")
Le script va toujours générer la carte sur laquelle est définie la position de
départ de l'équipe. Donc il est possible de générer plusieurs cartes.
Il faut créer une carte, mettre le point de départ de l'équipe dessus. Il faut
que la carte ait exactement la même taille que celle dans XP (pour laquelle on
voudra générer les hauteurs).
Ensuite, il suffit de mapper avec les régions les hauteurs. Les régions vont de
1 à 59, pas de région = 0 et 63 = -1, 62 = -2, 61 = -3 et 60 = -4, donc les donnees
pour les directions de saut.
Il est possible en faisant clique droit sur le nom de la carte, de spécifier la
gravité, en l'ajoutant dans les notes de la carte. Attention, il faut impérativement
qu'il n y ait que ça dans les notes. Si jamais la gravité n'est pas définie,
le script considérera que c'est 10 (soit 1.0 dans l'éditeur de Zeus).
Une fois le jeu lancé, un message sera affiché quand le calcul sera terminé. Sur
une map de 500x500, il faut tout de même compter un peu de temps (+- 2, 3 secondes
en fonction du PC). Une fois que la procédure est terminée, un message s'affichera
et donnera le nom du fichier dans lequel les données ont étés crées.
En général un fichier créé à cette forme:
"Map[ID de la map]H.rxdata"
Ensuite, il suffit de copier ce fichier dans le répertoire "Data/Data System" du
projet XP avec l'AMS Ultimate et d'accorder son ID en renommant le fichier collé.
Pour éviter de "devoir renommer" le fichier généré après l'avoir collé, il suffit
simplement de générer via une map RVXACE qui a le même ID que celle de XP.
Bonne chance, hésite pas à me contacter si tu as un soucis et bonne chance pour
ton projet ;)
=end
module SceneManager
def self.first_scene_class
Scene_AMS
end
end
class Scene_AMS < Scene_Base
def start
setup
get_gravity
build_table
perform_rxdata
finalize
end
def setup
@map_id = $data_system.start_map_id
@map = load_data(sprintf("Data/Map%03d.rvdata2", @map_id))
@target = sprintf("Map%03dH.rxdata", @map_id)
@info = $data_mapinfos[@map_id]
puts "Process for Map[#{@map_id}] (#{@info.name}) [#{@map.width}x#{@map.height}]"
end
def get_gravity
@gravity = 1.0
f = @map.note
@gravity = f.to_f unless f.empty?
@gravity = (@gravity * 10).to_i
puts "Selected gravity is #{@gravity}\n\n"
end
def build_table
@table = Table.new(@map.width, @map.height)
(0...@table.xsize).each do |x|
puts "Process line #{x+1}/#{@map.width}"
(0...@table.ysize).each do |y|
@table[x, y] = get_region_data(x, y)
end
end
end
def get_region_data(x, y)
region = @map.data[x, y, 3] >> 8
return region if region < 60
region - 64
end
def perform_rxdata
puts "\n\n"
data = [@gravity, @table]
save_data(data, @target)
end
def finalize
puts "Press [ENTER] to close"
msgbox("Map #{@map_id} was generated in #{@target}")
exit
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment