Advertisement
biward

[VXAce] Ajisaive

Sep 11th, 2013
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 8.45 KB | None | 0 0
  1. ################################################################################
  2. ################################# AJISAIVE #####################################
  3. ################################################################################
  4. # Auteur : Biward
  5. # Date : 07/09/2013 2h27
  6. # Pour : Ajisai <3
  7. #
  8. # Ce script permet de modifier d'ajouter des chapitres à son jeu
  9. # Pour définir un chapitre, modifier la variable sur le chapitre que vous avez
  10. # choisi ou utiliser cette commande en appel de script :
  11. # chapitre(id_chapitre)
  12. #
  13. module AJISAIVE
  14.      
  15.   # Indiquez ici la variable qui va enregistrer le chapitre !
  16.   V = 5
  17.      
  18.   # Indiquez ici le nombre de sauvegarde possible
  19.   Max_Save = 5
  20.      
  21.   # Indiquez ici le fond
  22.   # Back = false pour aucun fond (c'est à dire le fond de l'écran titre et/ou la map)
  23.   # Back = "nom" pour une seule image
  24.   # Back = [nombre de frame, "image1", "image2", etc] pour plusieurs images
  25.   # Le nombre de frame correspond au nombre de frame entre chaque image.
  26.   Back = [60, "Back", "Back1", "Back2", "Back3", "Back4"]
  27.      
  28.   # Indiquez ici la police du men ude sauvegarde !
  29.   # Mettez false pour garder celle de base
  30.   Font = "Comic Sans MS"
  31.      
  32.   # Indiquez ici le son que vous voulez jouer durant le menu de sauvegarde
  33.   # Mettez false pour ne pas jouer de son
  34.   # Mettez true pour jouer le son de la scène précédente (map ou écran titre)
  35.   # Mettez ["nom", volume, tempo] pour jouer une musique personnalisée
  36.   Sound = ["Town1", 100, 100]
  37.      
  38.   # Indiquez ici le temps de transition (fondu des images et de la musique)
  39.   TimeTransition = 120
  40. end
  41.      
  42. ################################################################################
  43. ############################## DEBUT DU SCRIPT #################################
  44. ################################################################################
  45. ##### DataManager #####
  46. #~ module DataManager
  47. #~   #  chapter = $game_variables[AJISAIVE::V]
  48. #~ end
  49.      
  50. ##### Game_Interpreter #####
  51. class Game_Interpreter
  52.   def chapitre(id)
  53.     $game_variables[AJISAIVE::V] = id
  54.   end
  55. end
  56.      
  57. ##### Scene_File #####
  58. class Scene_File < Scene_MenuBase
  59.      
  60.   class << self
  61.     attr_accessor :back
  62.   end
  63.      
  64.   def start
  65.     super
  66.     initialize_toshow
  67.     initialize_index
  68.     create_back
  69.     create_sprite
  70.     create_window
  71.     update_toshow
  72.     @window_save[@index].selected = true
  73.     RPG::BGM.fade(1200) if AJISAIVE::Sound.is_a?(Array) || ! AJISAIVE::Sound
  74.     Graphics.transition(AJISAIVE::TimeTransition)
  75.     sound if AJISAIVE::Sound
  76.     RPG::BGM.stop if ! AJISAIVE::Sound
  77.   end
  78.      
  79.   def sound
  80.     Audio.bgm_play("Audio/BGM/" + AJISAIVE::Sound[0], AJISAIVE::Sound[1], AJISAIVE::Sound[2]) if AJISAIVE::Sound.is_a?(Array)
  81.   end
  82.      
  83.   def initialize_toshow
  84.     @toshow = [0, 1, 2, 3]
  85.   end
  86.        
  87.   def initialize_index
  88.     @index = 0    
  89.     @index_back = 0
  90.   end
  91.      
  92.   def item_max
  93.     AJISAIVE::Max_Save
  94.   end  
  95.      
  96.   def back
  97.     return AJISAIVE::Back[@index_back + 1] if Scene_File.back
  98.     AJISAIVE::Back
  99.   end
  100.      
  101.   def create_window
  102.     @window_save ||= Array.new
  103.     @window_save = Array.new(item_max) { |i| Window_SaveFile.new(50, i) }
  104.     @window_save.size.times do |i|
  105.       @window_save[i].opacity = 0 if back
  106.       @window_save[i].x = 9 + ((i % 2).to_i * 268)
  107.       @window_save[i].y = @sprite_chapter.height + 30 + (((i % 4).to_i / 2).to_i * 54)
  108.     end
  109.   end
  110.      
  111.   def id_chapter    
  112.     return @gv[AJISAIVE::V] if ex
  113.     return 0
  114.   end
  115.      
  116.   def create_sprite
  117.     @sprite_chapter = Sprite.new
  118.     @sprite_chapter.bitmap = Cache.system("cap#{id_chapter.to_s}")
  119.     @sprite_chapter.z = 1
  120.     @sprite_sl = Sprite.new
  121.     @sprite_sl.bitmap = Cache.system("save_b") if SceneManager.scene.is_a?(Scene_Save)
  122.     @sprite_sl.bitmap = Cache.system("load_b") if SceneManager.scene.is_a?(Scene_Load)
  123.     @sprite_sl.z = 2
  124.     @sprite_sl.y = @sprite_chapter.height - 10
  125.     @sprite_save ||= Array.new
  126.     @sprite_save = Array.new(4) { |i| Sprite.new }
  127.     @sprite_save.size.times do |i|
  128.       @sprite_save[i].bitmap = Cache.system("save_f")
  129.       @sprite_save[i].x = 9 + (((i + 0) % 2 ).to_i * 268)
  130.       @sprite_save[i].y = @sprite_chapter.height + 30 + (((i) / 2).to_i * 54)
  131.       @sprite_save[i].z = 3
  132.     end
  133.     update_sprite
  134.   end
  135.      
  136.   def create_back
  137.     if back
  138.         @background = Sprite.new
  139.       if back.is_a?(String)
  140.         @background.bitmap = Cache.system(back.to_s)
  141.       elsif back.is_a?(Array)
  142.         Scene_File.back = true
  143.         @index_back = 0
  144.         @background.bitmap = Cache.system(back.to_s)
  145.       end
  146.     end
  147.   end
  148.      
  149.   def terminate
  150.     super
  151.     RPG::BGM.fade(1200)
  152.     dispose_window
  153.     dispose_sprite
  154.     dispose_back
  155.   end
  156.      
  157.   def dispose_window
  158.     @window_save.each { |i| i.dispose }
  159.   end
  160.      
  161.   def dispose_sprite
  162.     @sprite_sl.dispose
  163.     @sprite_chapter.dispose
  164.     @sprite_save.each { |i| i.dispose }
  165.   end
  166.      
  167.   def dispose_back
  168.     @background.dispose if @background
  169.   end
  170.      
  171.   def update
  172.     super
  173.     update_input
  174.     update_window
  175.     update_back if Scene_File.back
  176.   end
  177.      
  178.   def update_input
  179.     cursor_move(2) if Input.trigger?(:DOWN)
  180.     cursor_move(-2) if Input.trigger?(:UP)
  181.     cursor_move(-1) if Input.trigger?(:LEFT)
  182.     cursor_move(1) if Input.trigger?(:RIGHT)
  183.     on_savefile_cancel if Input.trigger?(:B)
  184.     on_savefile_ok if Input.trigger?(:C)
  185.   end
  186.      
  187.   def cursor_move(i)
  188.     @index = check_index(i)
  189.     Sound.play_cursor
  190.     update_toshow
  191.     update_sprite
  192.   end
  193.      
  194.   def check_index(i)
  195.     case i
  196.     when 1
  197.       return 0 if (@index + i) >= item_max
  198.     when 2
  199.       return 0 if (@index + i) >= item_max
  200.       return 1 if (@index + i) >= item_max
  201.     when -1
  202.       return (item_max - 1) if (@index + i) < 0
  203.     when -2
  204.       return (item_max - 1) if (@index + i) < 0
  205.       return (item_max - 2) if (@index + i) < 0
  206.     end
  207.     return @index + i
  208.   end
  209.        
  210.      
  211.   def update_window
  212.     if ! @window_save[@index].selected
  213.       @window_save.each { |i| i.selected = false }
  214.       @window_save[@index].selected = true
  215.     end
  216.   end
  217.      
  218.   def update_toshow
  219.     @toshow.clear
  220.     4.times do |i|
  221.       d = ((@index / 4).to_i * 4).to_i + i
  222.       @toshow << d if d < item_max
  223.     end
  224.     draw_window
  225.   end
  226.      
  227.   def draw_window
  228.     @window_save.each { |i| i.visible = false }
  229.     @toshow.each do |i|
  230.       @window_save[i].visible = true
  231.     end
  232.     @window_save.each { |i| i.selected = true }
  233.     @window_save.each { |i| i.selected = false }
  234.     @window_save[@index].selected = true
  235.   end
  236.      
  237.   def update_sprite
  238.     @sprite_save.each { |i| i.visible = false }
  239.     @toshow.size.times { |i| @sprite_save[i].visible = true }
  240.     @sprite_chapter.dispose if @sprite_chapter
  241.     @sprite_chapter = Sprite.new
  242.     @sprite_chapter.bitmap = Cache.system("cap#{id_chapter.to_s}")
  243.     @sprite_chapter.z = 1
  244.   end
  245.      
  246.   def update_back
  247.     @nb ||= 0
  248.     @nb += 1
  249.     if @nb == AJISAIVE::Back[0]
  250.       @index_back += 1
  251.       @nb = 0
  252.       if @index_back >= (AJISAIVE::Back.size - 1)
  253.         @index_back = 0
  254.       end
  255.       @background.dispose
  256.       @background = Sprite.new
  257.       @background.bitmap = Cache.system(back.to_s)
  258.       @background.z = 0
  259.     end
  260.   end
  261.        
  262.   ##############################################################################
  263.   ##### Accès à la sauvegarde
  264.   ##############################################################################
  265.   def ex    
  266.     begin
  267.       extract_without_rescue
  268.     rescue
  269.       false
  270.     end
  271.   end
  272.      
  273.   def extract_without_rescue
  274.     File.open(make_filename(@index), "rb") do |file|
  275.       Marshal.load(file)
  276.       extract_save_variables(Marshal.load(file))
  277.     end
  278.     return true
  279.   end
  280.      
  281.   def extract_save_variables(contents)
  282.     @gv = contents[:variables]
  283.   end
  284.      
  285.   def make_filename(index)
  286.     sprintf("Save%02d.rvdata2", index + 1)
  287.   end
  288. end
  289.    
  290. ##### Window_SaveFile #####
  291. class Window_SaveFile < Window_Base
  292.   def initialize(height, index)
  293.     super(0, index * height, 258, height)
  294.     self.contents.font.name = [AJISAIVE::Font, 20] if AJISAIVE::Font
  295.     self.z = 100
  296.     @file_index = index
  297.     refresh
  298.     @selected = false
  299.   end
  300. end
  301. ################################################################################
  302. ############################### Fin du Script ##################################
  303. ################################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement