#============================================================================== # ■ Pack and Unpack # by Brendan75 #==============================================================================
#============================================================================== # ■ Game Temp #============================================================================== class Game_Temp attr_accessor :pack_calling end
#============================================================================== # ■ Game Map #============================================================================== class Scene_Map
def update loop do $game_map.update $game_map.refresh $game_system.map_interpreter.update $game_player.update $game_system.update $game_screen.update unless $game_temp.player_transferring break end transfer_player if $game_temp.transition_processing break end end $use_rec_item = false @spriteset.update @message_window.update if $game_temp.gameover $scene = Scene_Gameover.new return end if $game_temp.to_title $scene = Scene_Title.new return end if $game_temp.transition_processing $game_temp.transition_processing = false if $game_temp.transition_name == "" Graphics.transition(20) else Graphics.transition(40, "Graphics/Transitions/" + $game_temp.transition_name) end end if $game_temp.message_window_showing return end # Comptage Rencontre aléatoire if $random_encounter != [0] and $game_player.encounter_count == 0 tag = $game_player.terrain_tag unless $game_system.map_interpreter.running? or $game_system.encounter_disabled or tag == 0 enemy_list = $random_encounter[tag] if enemy_list != nil and enemy_list.length > 1 $game_temp.battle_calling = true end end end if Input.trigger?(Input::B) unless $game_system.map_interpreter.running? or $game_system.menu_disabled $game_temp.menu_calling = true $game_temp.menu_beep = true end end if Input.trigger?(Input::A) unless $game_system.map_interpreter.running? or $rec_item_id == nil $use_rec_item = true end end if $DEBUG and Input.press?(Input::F9) $game_temp.debug_calling = true end if $DEBUG and Input.press?(Input::F8) $game_temp.pack_calling = true end # Map monde if $game_map.map_id == POKEMON_S::_WMAPID $game_temp.menu_calling = false $game_temp.menu_beep = false $game_temp.debug_calling = false if Input.trigger?(Input::B) $game_temp.back_calling = true end if Input.dir4 == 2 or Input.dir4 == 4 or Input.dir4 == 6 or Input.dir4 == 8 $game_temp.world_map_event_checking = true end unless $game_player.moving? $game_player.check_world_map end end unless $game_player.moving? if $game_temp.battle_calling call_battle elsif $game_temp.shop_calling call_shop elsif $game_temp.name_calling call_name elsif $game_temp.menu_calling call_menu elsif $game_temp.save_calling call_save elsif $game_temp.debug_calling call_debug elsif $game_temp.back_calling call_back_world_map elsif $use_rec_item int = Interpreter.new int.utiliser($rec_item_id) elsif $game_temp.pack_calling call_pack end $pokemon_party.maj_quetes end end
def call_pack $game_temp.pack_calling = false $game_system.se_play($data_system.decision_se) $game_player.straighten $scene = Scene_Pack.new end end #============================================================================== # ■ Scene Pack #============================================================================== class Scene_Pack include POKEMON_S def main @z_level = 200 @spriteset = Spriteset_Map.new @text_window = Pokemon_Window_Help.new @text_window.draw_text("Choisissez le pokémon à compresser puis validez.") @text_window.visible = true @sprite_gene = Window_Base.new(285, 8, 192, 192 + 128) @sprite_gene.contents = Bitmap.new(160,160 + 128) @sprite_gene.z = @z_level + 40 @sprite_gene.visible = true @sprite_gene.active = true @sprite_gene.contents.font.name = $fontface @sprite_gene.contents.font.size = $fontsize @sprite_gene.contents.font.color = @sprite_gene.normal_color @id_gene = Window_Base.new(8, 138, 150, 64) @id_gene.contents = Bitmap.new(150-32, 32) @id_gene.z = @z_level + 40 @id_gene.contents.font.name = $fontface @id_gene.contents.font.size = $fontsize @id_gene.active = true @id_gene.visible = true @id_gene.contents.font.color = @id_gene.normal_color @id_gene_index = 0 # Index Digit: 0 unité, 1 dizaines, 2 centaines @id = 1 refresh_sprite Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @spriteset.dispose @text_window.dispose @id_gene.dispose @sprite_gene.dispose end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- def update @spriteset.update @text_window.update @id_gene.update if @id_gene.active update_gen_id return end end def update_gen_id if Input.trigger?(Input::LEFT) if @id_gene_index == 2 $game_system.se_play($data_system.buzzer_se) return end @id_gene_index += 1 refresh_id end if Input.trigger?(Input::RIGHT) if @id_gene_index == 0 $game_system.se_play($data_system.buzzer_se) return end @id_gene_index -= 1 refresh_id end if Input.repeat?(Input::UP) if @id >= $data_pokemon.length-1 $game_system.se_play($data_system.buzzer_se) return end @id += 10 ** @id_gene_index if @id >= $data_pokemon.length-1 @id = $data_pokemon.length-1 end while Pokemon_Info.name(@id) == "-------" @id += 1 if @id > $data_pokemon.length-1 @id = 1 end end refresh_sprite refresh_id return end if Input.repeat?(Input::DOWN) if @id <= 1 $game_system.se_play($data_system.buzzer_se) return end @id -= 10 ** @id_gene_index if @id <= 1 @id = 1 end while Pokemon_Info.name(@id) == "-------" @id -= 1 if @id < 1 @id = $data_pokemon.length-1 end end refresh_sprite refresh_id return end if Input.trigger?(Input::B) $game_system.se_play($data_system.decision_se) refresh_sprite $scene = Scene_Map.new end if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) pack(@id) refresh_sprite $scene = Scene_Map.new return end end def refresh_sprite @sprite_gene.contents.clear src_rect = Rect.new(0, 0, 160, 160) ida = sprintf("%03d", @id) bitmap = RPG::Cache.battler("Front_Male/" + ida + ".png", 0) @sprite_gene.contents.blt(0, 0, bitmap, src_rect, 255) string = POKEMON_S::Pokemon_Info.name(@id) @sprite_gene.contents.draw_text(0, 160, 160, 32, string, 1) @sprite_gene.contents.draw_text(0, 192, 160, 32, "ID: "+ida.to_s, 1) @sprite_gene.contents.draw_text(0, 224, 160, 32, "Nv: "+@level.to_s, 1) end def refresh_id @id_gene.contents.clear @id_gene.contents.draw_text(0, 0, 118, 32, "ID") string = ("000" + @id.to_s)[-3..-1] for i in 0..2 if $data_pokedex[@id] == nil $data_pokedex[@id] = [false, false] end if i == @id_gene_index @id_gene.contents.font.color = @id_gene.text_color(2) end @id_gene.contents.draw_text(0, 0, 118 - 22*i, 32, string[2-i..2-i], 2) @id_gene.contents.font.color = @id_gene.normal_color end @id_gene.contents.font.color = @id_gene.normal_color end #-------------------------------------------------------------------------- # ● Pack(id) #-------------------------------------------------------------------------- def pack(id) data = [] data[0] = $data_pokemon[id] data[1] = $data_classes[id] data[2] = $data_weapons[id] data[3] = $data_armors[id] data[4] = $data_enemies[id] ida = sprintf("%03d", id) file_name = "Pkm_" +ida save_data(data, "#{file_name}.rxdata") end end
#============================================================================== # ■ Game Title #============================================================================== class Scene_Title include POKEMON_S def main if $BTEST battle_test return end for i in 1..500 @pkm_load = false ida = sprintf("%03d", i) file_name = "Pkm_" +ida if FileTest.exist?("#{file_name}.rxdata") print("Fichier de pokémon compressé détecté.\n\nAppuyez sur Entrée, puis sur Entrée pour charger, ou Echap pour continuer.") loop do Graphics.update Input.update if Input.trigger?(Input::C) data = load_data("#{file_name}.rxdata") $data_pokemon[i] = data[0] $data_classes[i] = data[1] $data_weapons[i] = data[2] $data_armors[i] = data[3] $data_enemies[i] = data[4] @pkm_load = true break end if Input.trigger?(Input::B) break end end end end if FileTest.exist?("SaveAuto.rxdata") print("Sauvegarde de secours détectée.\n\nAppuyez sur Entrée, puis sur Echap pour charger, ou Entrée pour continuer.") loop do Graphics.update Input.update if Input.trigger?(Input::C) File.delete("SaveAuto.rxdata") break end if Input.trigger?(Input::B) @auto_load = true break end end end if $game_system == nil $data_actors = load_data("Data/Actors.rxdata") $data_classes = load_data("Data/Classes.rxdata") $data_skills = load_data("Data/Skills.rxdata") $data_items = load_data("Data/Items.rxdata") $data_weapons = load_data("Data/Weapons.rxdata") $data_armors = load_data("Data/Armors.rxdata") $data_enemies = load_data("Data/Enemies.rxdata") $data_troops = load_data("Data/Troops.rxdata") $data_states = load_data("Data/States.rxdata") $data_animations = load_data("Data/Animations.rxdata") $data_tilesets = load_data("Data/Tilesets.rxdata") $data_common_events = load_data("Data/CommonEvents.rxdata") $data_system = load_data("Data/System.rxdata") $picture_data = load_data("Data/Library.rxdata") $game_system = Game_System.new end if not @auto_load and not MAPINTRO and not @pkm_load # ----------------------------------------------------------------- # La scène d'intro commence ici (non MAPINTRO) # ----------------------------------------------------------------- # Elle est bien sûr modifiable à votre goût. # ----------------------------------------------------------------- view = Viewport.new(0,0,640,480) view.z = -5 #view = Viewport.new(0,25,640,430) #view.z = 0 background = Plane.new(view) background.bitmap = RPG::Cache.title("Opening2.jpg") #background.oy += 25 background.z = 0 background.tone = Tone.new(0,0,0,255) #view = Viewport.new(0,0,640,480) #view.z = -5 #background_bis = Plane.new(view) #background_bis.bitmap = RPG::Cache.title("Opening2.jpg") #background_bis.z = -5 band_top = Sprite.new band_top.bitmap = RPG::Cache.title("Opening3.png") band_top.z = 5 band_bottom = Sprite.new band_bottom.bitmap = RPG::Cache.title("Opening3.png") band_bottom.z = 5 band_bottom.y = 450 band_mid = Plane.new(Viewport.new(0,0,640,480)) band_mid.bitmap = RPG::Cache.title("Opening4.png") band_mid.z = 5 middle = Sprite.new middle.bitmap = RPG::Cache.title("Opening1.png") middle.z = 2 title1 = Sprite.new title1.bitmap = RPG::Cache.title("Opening6.png") title1.z = 3 title1.opacity = 0 title1.color = Color.new(255,255,255,255) title2 = Sprite.new title2.bitmap = RPG::Cache.title("Opening7.png") title2.z = 4 title2.opacity = 0 title2.color = Color.new(255,255,255,255) flash = Sprite.new flash.bitmap = RPG::Cache.title("Opening8.png") flash.z = 10 flash.opacity = 0 mid = Sprite.new mid.bitmap = RPG::Cache.title("Opening5.png") mid.z = 5 mid.visible = false screen = Sprite.new screen.bitmap = RPG::Cache.title("Opening10.png") screen.z = 2 screen.visible = false start = Sprite.new start.bitmap = RPG::Cache.title("Opening11.png") start.z = 5 start.visible = false Graphics.transition(5) $game_system.bgm_play($data_system.title_bgm) Audio.me_stop Audio.bgs_stop timer = 0 loop do Graphics.update Input.update timer += 1 background.ox -= 12 #background_bis.ox += 6 if timer == 210 background.tone.gray = 0 end if timer > 210 and background.tone.red > 0 background.tone.red -= 25 background.tone.green -= 25 end if timer > 210 and timer % (150 + rand(50)) == 0 background.tone.red = background.tone.green = 250 end if flash.opacity > 0 flash.opacity -= 15 end if timer > 5 and not band_top.disposed? band_top.x += 13 if band_top.x > 640 band_top.dispose end end if timer > 73 and not band_bottom.disposed? band_bottom.x -= 13 if band_bottom.x < -640 band_bottom.dispose end end if timer > 150 and not band_mid.disposed? band_mid.ox -= 20 if timer > 210 band_mid.dispose mid.visible = true end end if timer > 210 and not title1.disposed? and title1.opacity < 255 title1.opacity += 15 title1.color.alpha -= 15 end if timer > 240 and not title1.disposed? and title1.opacity == 255 title1.color.alpha += 15 end if timer == 270 flash.opacity = 255 title1.dispose mid.dispose middle.dispose screen.visible = true end if timer > 270 and not title2.disposed? and title2.opacity < 255 title2.opacity += 15 title2.color.alpha -= 15 if title2.opacity >= 255 title2.dispose end end if timer > 290 and timer%20 == 0 start.visible = !start.visible end if Input.trigger?(Input::C) $game_system.se_play($data_system.decision_se) break end if timer > 3750 Audio.bgm_fade(1000*5) end end Graphics.freeze background.dispose if not background.disposed? #background_bis.dispose if not background_bis.disposed? band_top.dispose if not band_top.disposed? band_bottom.dispose if not band_bottom.disposed? band_mid.dispose if not band_mid.disposed? mid.dispose if not mid.disposed? middle.dispose if not middle.disposed? title1.dispose if not title1.disposed? title2.dispose if not title2.disposed? flash.dispose if not flash.disposed? start.dispose if not start.disposed? screen.dispose if not screen.disposed? Graphics.transition Graphics.freeze Audio.bgm_stop # ----------------------------------------------------------------- # Fin de la scène d'intro # ----------------------------------------------------------------- elsif MAPINTRO.type == Array and $_temp_map_intro == nil $_temp_map_intro = true $map_link = {} Audio.bgm_stop Graphics.frame_count = 0 $game_temp = Game_Temp.new $game_system = Game_System.new $game_switches = Game_Switches.new $game_variables = Game_Variables.new $game_self_switches = Game_SelfSwitches.new $game_screen = Game_Screen.new $game_actors = Game_Actors.new $game_party = Game_Party.new $game_troop = Game_Troop.new $game_map = Game_Map.new $game_player = Game_Player.new # ---- Pas forcément nécessaire $pokemon_party = POKEMON_S::Pokemon_Party.new $data_storage = [[0]] $pokemon_party.create_box Player.set_trainer_code(rand(2**32)) $random_encounter = Array.new(7) $random_encounter[0] = 0 $battle_var = POKEMON_S::Pokemon_Battle_Variable.new $existing_pokemon = [] $string = [] POKEMON_S::set_SAVESLOT = @index Player.trainer_trade_code # ---- Pas forcément nécessaire $game_variables[5000] = {"menu_dp" => POKEMON_S::MENU_DP, "banque" => [BANQUE::Banque.new], "list_img" => [], "quete" => Data_Quete.new, "radio" => Radio.new, "version" => "PSP4G+", "zarbi" => [], "baies" => [], "progs" => [], "tutos" => {}} $game_variables[5000]["baies"][MAPINTRO[0]] = [] $game_party.setup_starting_members $game_map.setup(MAPINTRO[0]) $game_player.moveto(MAPINTRO[1], MAPINTRO[2]) $game_player.refresh $game_map.autoplay $game_map.update $scene = Scene_Map.new return end Audio.bgm_stop $_temp_map_intro = nil @sprite = Sprite.new @sprite.bitmap = RPG::Cache.title($data_system.title_name) number = 0 # Nombre de cadres de sauvegarde à générer for i in 0..2 if FileTest.exist?("Save#{i+1}.rxdata") number += 1 end end @number = number @new_game_window = Window_Base.new(30, 30 + 83*@number, 580, 80) @new_game_window.contents = Bitmap.new(548, 48) set_window(@new_game_window) @new_game_window.contents.draw_text(9,3,548,48,"NOUVELLE PARTIE") @save_game_window_list = [] for i in 1.. @number window = Window_Base.new(30, 30 + 83*(i-1), 580, 80) window.contents = Bitmap.new(548, 48) @save_game_window_list.push(window) end @index = 0 @background = Plane.new(Viewport.new(0,0,640,480)) @background.bitmap = RPG::Cache.picture("fondsaved.png") @background.z -= 10 refresh_all Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @new_game_window.dispose @background.dispose for window in @save_game_window_list window.dispose end end end |