Bonjour à tous.
Je viens aujourd'hui exposer un nouveau problème.
Je cherche à faire en sorte que l'écran titre de mon projet soit défini aléatoirement entre 4 images différentes.
J'ai donc cherché quelques scripts sur le net mais ils n'étaient pas adaptés à PSP.
J'ai pensé que le meilleur moyen était de faire une variable à valeur aléatoire, malheureusement, toutes les méthodes que j'ai trouvé sur Internet étaient soient incompatibles avec PSP, soient utilisables par event. Or, il n'y a pas d'events pour l'écran-titre si je ne m'abuse, juste du script.
Ma première question est donc : Existe-t-il un moyen de créer une variable à valeur aléatoire par script ?
Mais un second problème s'est mis sur mon chemin.
J'ai assigné une valeur par défaut à la variable en question, histoire de voir si le script marchait, eh bien non.
Quand je lance le jeu, j'ai un message d'erreur, No method error for opacity.
#==============================================================================
# ■ Scene_Title (Version Pokémon)
# Pokemon Script Project - Krosk
# 01/08/07
#------------------------------------------------------------------------------
# Scène modifiable
#------------------------------------------------------------------------------
# Intègre le menu de chargement
#------------------------------------------------------------------------------
class Scene_Title
include POKEMON_S
def main
if $BTEST
battle_test
return
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
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
# -----------------------------------------------------------------
# La scène d'intro commence ici (non MAPINTRO)
# -----------------------------------------------------------------
# Elle est bien sûr modifiable à votre goût.
# -----------------------------------------------------------------
$game_variables = Game_Variables.new
$game_variables[35] ==1
if $game_variables[35] ==1
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("title_suicune.png")
#background.oy += 25
background.z = 0
background.tone = Tone.new(0,0,0,0)
elsif $game_variables[35]==2
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("title_Absol.png")
#background.oy += 25
background.z = 0
background.tone = Tone.new(0,0,0,0)
elsif $game_variables[35]==3
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("title_Johto.png")
#background.oy += 25
background.z = 0
background.tone = Tone.new(0,0,0,0)
elsif $game_variables[35]==4
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("title_montagne.png")
#background.oy += 25
background.z = 0
background.tone = Tone.new(0,0,0,0)
end
screen = Sprite.new
screen.bitmap = RPG::Cache.title("Logo.png")
screen.z = 2
screen.visible = false
title2 = Sprite.new
title2.bitmap = RPG::Cache.title("Logo.png")
#title2.oy += 25
title2.z = -1
title2.tone = Tone.new(0,0,0,255)
title2.opacity = 5
title2.color = Color.new(0,0,0,255)
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_bis.ox += 6
if timer == 80
background.opacity = 220
screen.visible = true
screen.opacity = 20
end
if timer == 82
background.opacity = 210
screen.opacity = 40
end
if timer == 85
background.opacity = 200
screen.opacity = 60
end
if timer == 87
background.opacity = 190
screen.opacity = 80
end
if timer == 90
background.opacity = 180
screen.opacity = 100
end
if timer == 92
background.opacity = 170
screen.opacity = 120
end
if timer == 95
background.opacity = 160
screen.opacity = 140
end
if timer == 97
background.opacity = 150
screen.opacity = 160
end
if timer == 100
background.opacity = 140
screen.opacity = 180
end
if timer == 102
background.opacity = 130
screen.opacity = 200
end
if timer == 105
background.opacity = 120
screen.opacity = 220
end
if timer == 107
background.opacity = 110
screen.opacity = 240
end
if timer == 110
background.opacity = 100
screen.opacity += 265
end
if timer > 110 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?
start.dispose if not start.disposed?
screen.dispose if not screen.disposed?
Graphics.transition
Graphics.freeze
# -----------------------------------------------------------------
# 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_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_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
elsif $game_variables[35] ==1
@background = Plane.new(Viewport.new(0,0,640,480))
@background.bitmap = RPG::Cache.picture("title_suicune.png")
@background.z -= 10
elsif $game_variables[35] ==2
@background = Plane.new(Viewport.new(0,0,640,480))
@background.bitmap = RPG::Cache.picture("title_Absol.png")
@background.z -= 10
elsif $game_variables[35] ==3
@background = Plane.new(Viewport.new(0,0,640,480))
@background.bitmap = RPG::Cache.picture("title_Johto.png")
@background.z -= 10
elsif $game_variables[35] ==4
@background = Plane.new(Viewport.new(0,0,640,480))
@background.bitmap = RPG::Cache.picture("title_montagne.png")
@background.z -= 10
end
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
def update
if Input.trigger?(Input::DOWN)
@index += @index == @number ? 0 : 1
if @erase and @index > 2
@index = 2
end
refresh_all
end
if Input.trigger?(Input::UP)
@index -= @index == 0 ? 0 : 1
refresh_all
end
if Input.trigger?(Input::C)
case @index
when @number # Nouveau jeu
if SAVEBOUNDSLOT and @number == 3
$game_system.se_play($data_system.decision_se)
@erase = true
@index = 0
@new_game_window.contents.clear
@new_game_window.contents.draw_text(9,3,548,48,"RECOMMENCER QUELLE PARTIE?")
refresh_all
else
command_new_game
end
else # Chargement
if @erase
command_new_game
else
$game_temp = Game_Temp.new
on_decision("Save#{@index + 1}.rxdata")
end
end
end
if Input.trigger?(Input::B) and @erase
$game_system.se_play($data_system.cancel_se)
@erase = false
@index = 3
@new_game_window.contents.clear
@new_game_window.contents.draw_text(9,3,548,48,"NOUVELLE PARTIE")
refresh_all
end
if @auto_load != nil
$game_temp = Game_Temp.new
on_decision("SaveAuto.rxdata")
File.delete("SaveAuto.rxdata")
end
end
def refresh_all
for i in 0.. @number-1
if i < @index
@save_game_window_list[i].opacity = 128
@save_game_window_list[i].y = 30 + 83*i
@save_game_window_list[i].height = 80
@save_game_window_list[i].contents = Bitmap.new(548, 48)
set_window(@save_game_window_list[i])
@save_game_window_list[i].contents.draw_text(9, 3, 530, 48, "CONTINUER PARTIE "+(i+1).to_s)
elsif i == @index
@save_game_window_list[i].opacity = 255
@save_game_window_list[i].y = 30 + 83*i
@save_game_window_list[i].height = 163
@save_game_window_list[i].contents = Bitmap.new(548, 131)
set_window(@save_game_window_list[i])
@save_game_window_list[i].contents.draw_text(9, 3, 530, 48, "CONTINUER PARTIE "+(i+1).to_s)
@filename = "Save#{i + 1}.rxdata"
list = read_preview(@filename)
data = list[0]
time_sec = list[1]
hour = (time_sec / 3600).to_s
minute = "00"
minute += ((time_sec%3600)/60).to_s
minute = minute[minute.size-2, 2]
time = hour + ":" + minute
name = data[0].to_s
id = data[1].to_i
captured = data[2].to_s
@save_game_window_list[i].contents.draw_text(9, 42, 252, 48, "NOM:")
@save_game_window_list[i].contents.draw_text(9, 42, 252, 48, name, 2)
@save_game_window_list[i].contents.draw_text(285, 42, 252, 48, "ID:")
@save_game_window_list[i].contents.draw_text(285, 42, 252, 48, sprintf("%05d",id) , 2)
@save_game_window_list[i].contents.draw_text(9, 81, 252, 48, "POKéDEX:")
@save_game_window_list[i].contents.draw_text(9, 81, 252, 48, captured, 2)
@save_game_window_list[i].contents.draw_text(285, 81, 252, 48, "DUREE:")
@save_game_window_list[i].contents.draw_text(285, 81, 252, 48, time, 2)
elsif i > @index
@save_game_window_list[i].opacity = 128
@save_game_window_list[i].y = 30 + 83*i + 83
@save_game_window_list[i].height = 80
@save_game_window_list[i].contents = Bitmap.new(548, 48)
set_window(@save_game_window_list[i])
@save_game_window_list[i].contents.draw_text(9, 3, 548, 48, "CONTINUER PARTIE "+(i+1).to_s)
end
end
if @index == @number
@new_game_window.opacity = 255
@new_game_window.y = 30 + 83*@number
else
@new_game_window.opacity = 128
@new_game_window.y = 30 + 83*(@number+1)
end
end
def set_window(window)
window.contents.font.name = $fontface
window.contents.font.size = $fontsizebig
window.contents.font.color = window.normal_color
end
Audio.bgm_stop
# --------------------------------------------------------
# Chargement
# --------------------------------------------------------
def read_preview(filename)
file = File.open(filename, "r")
time_stamp = file.mtime
characters = Marshal.load(file)
frame_count = Marshal.load(file)
game_system = Marshal.load(file)
game_switches = Marshal.load(file)
game_variables = Marshal.load(file)
total_sec = frame_count / Graphics.frame_rate
# Non utilisé
game_self_switches = Marshal.load(file)
game_screen = Marshal.load(file)
game_actors = Marshal.load(file)
game_party = Marshal.load(file)
game_troop = Marshal.load(file)
game_map = Marshal.load(file)
game_player = Marshal.load(file)
# ------------
read_data = Marshal.load(file)
file.close
return [read_data, total_sec]
end
def read_save_data(file)
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
$read_data = Marshal.load(file)
if SAVE_CONVERT # Conversion des sauvegardes pre-v0.7 à v0.7+
Player.set_trainer_code(Marshal.load(file)) # Variable trainer_code
trainer_id = Marshal.load(file) # Variable
$game_party.actors[0].name = Marshal.load(file) # Game_Actor
$game_party.actors[0].set_graphic($game_party.actors[0].character_name,
$game_party.actors[0].character_hue,
Marshal.load(file),
$game_party.actors[0].battler_hue
)# Game_Actor
end
$pokemon_party = Marshal.load(file)
$random_encounter = Marshal.load(file)
$data_pokedex = Marshal.load(file)
$data_storage = Marshal.load(file)
$battle_var = Marshal.load(file)
$existing_pokemon = Marshal.load(file)
$string = Marshal.load(file)
$map_link = ($read_data != nil and $read_data[3] != nil) ? $read_data[3] : {}
if $game_system.magic_number != $data_system.magic_number
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
$game_party.refresh
POKEMON_S::set_SAVESLOT = @index
Player.trainer_trade_code
end
def on_decision(filename)
unless FileTest.exist?(filename)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.load_se)
file = File.open(filename, "rb")
read_save_data(file)
file.close
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
$game_map.update
$scene = Scene_Map.new
$scene.update_encounter
Player.pokedex_update
end
alias alias_command_new_game command_new_game
def command_new_game
$map_link = {}
alias_command_new_game
#-----------------------------------------------------
# Variables créées automatiquement au début du jeu
# Elles sont absolument nécessaires
#-----------------------------------------------------
$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
$data_pokedex = Array.new($data_pokemon.length-1)
$data_pokedex[0] = false # Possède ou non
for i in 1..$data_pokemon.length-1
$data_pokedex[i] = [false, false] # Vu, Capturé
end
end
end
On peut donc supposer que l'objet "background" n'a pas été créé et que le script ne le trouve pas.
Seulement, je ne vois pas ce qui cloche dans mon script.
PS : Je n'ai pas utilisé la balise [code] car elle me créé un texte complètement différent de mon script et le prolonge sur 5000 lignes..