[PSP 0.10.1Petit soucis pour ajouter un script d'état d'avancement de l'histoire

VladandGaret
Salut tout le monde, je reposte ici une demande que j'avais faite sur l'ancien serveur discord pspe _entraide et qui n'avait jamais trouvée réponse car le serveur a fermé quelques heures après (manque de bol)
J'ai un petit soucis pour intégrer un script à PSPE 0.10.1
En fait, c'est un script pour permet d'afficher une page d'avancement de l'histoire dès que l'on charge la partie
Il fonctionne comme ça en gros:
Je l'appelle de cette manière:
add_avancement(n) ou n et l'état d'avancement prédéfini par des images stockées dans Pictures
Ensuite, au démarrage du jeu, ça affiche une image avec un bgm autre que celui de la map sur laquelle je suis, et le tout avec un texte résumant ce qui s'est passé dernièrement dans le jeu
Tout est ok, pas de plantage au lancement du projet, sauf qu'au chargement de la partie, et bien....ça ne fait rien XD
J'ai tenté d'appeler mon script dans le Scene_Load en intégrant les lignes suivantes:
Voici le script en question:
#==============================================================================
# ** Window_Avancement
#==============================================================================
class Window_Avancement < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# width : window width
# commands : command text string array
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 480)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 0
self.z = 6000
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
# Afficher le descriptif du journal
ligne = 0
max_width = 0
index = $game_variables[1][0][0]
self.contents.font.size = $fontsize + 4
self.contents.font.outline = true
self.contents.font.shadow = true
# first : calcul de la largeur (ligne la plus grande) et de la hauteur (nb lignes)
$data_journal[index][1].each_line { |texte|
ligne += 1
if self.contents.text_size(texte).width > max_width
max_width = self.contents.text_size(texte).width
end
}
height = ligne * 30
ligne = -1
$data_journal[index][1].each_line { |texte|
ligne += 1
texte[-1] = ""
self.contents.draw_text((640 - max_width - 32) / 2, (ligne * 30) + (480 - height - 32) / 2, max_width, 30,texte,1)
}
end
end
#==============================================================================
# ■ Scene_Title_Avancement
#==============================================================================
class Scene_Title_Avancement
#--------------------------------------------------------------------------
# ● main
#--------------------------------------------------------------------------
def main
$game_system.bgm_play_name("Theme - Avancement")
@spriteset = Sprite.new
name = $game_variables[1][0][0].to_s
if name == "45" #avancement isarwis agribah post game
name = name + "-" + $game_variables[172].to_s
@spriteset.bitmap = Bitmap.new("Graphics/Avancement pictures/" + name)
else
@spriteset.bitmap = Bitmap.new("Graphics/Avancement pictures/" + name)
end
# Création des fenêtres
@avancement_window = Window_Avancement.new
# Effectuer la transition graphique
Graphics.transition
# Boucle
loop do
# Mettre à jour les graphique
Graphics.update
# Mettre à jour les entrés clavier
Input.update
# Appeler fonction update
update
# si la Scene n'est plus la même
if $scene != self
# Alors sortir de la boucle
break
end
end
Graphics.freeze
# Détruire objets de classe
@avancement_window.dispose
# destruction de l'image de fond
@spriteset.dispose
end
#--------------------------------------------------------------------------
# ● update
#--------------------------------------------------------------------------
def update
# Mettre à jour les fenêtres
@avancement_window.update
@spriteset.update
# si la touche C est appuyée
if Input.trigger?(Input::C)
$game_system.bgm_fade(1)
count = 0
loop do
count += 1
Graphics.update
if count == 30
break
end
end
# Run automatic change for BGM and BGS set with map
$game_map.autoplay
# Update map (run parallel process event)
$game_map.update
# Switch to map screen
$scene = Scene_Map.new
return
end
end
end
J'ai ajouté les lignes suivantes dans l'Interpreter: (l1048 environ)
def add_avancement(id_journal) #ajout de l'avancement au début du tableau if not $game_variables[1].is_a?(Array)
$game_variables[1] = []
end
$game_variables[1].unshift([id_journal,true])
Damien m'a dit de tester ceci:
Dans le Scene_title, de remplacer ça:
Et dans le Scene_Title du système général, j'ai rempalcé ça:
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
Par ça:
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
sleep(0.4)
# Switch to avancement
if $game_map.map_id != 505 #Map fin
$scene = Scene_Title_Avancement.new
else
# Restore BGM and BGS
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
# Run automatic change for BGM and BGS set with map
$game_map.autoplay
# Update map (run parallel process event)
$game_map.update
# Switch to map screen
$scene = Scene_Map.new
return
end
$scene.update_encounter
Player.pokedex_update
end
Mais voici l'erreur que ça me retourne:
---------- Erreur de script : Scene_Title --------------- Type
NoMethodError
----- Message
- ARGS - []
undefined method update_encounter' for #<Scene_Title_Avancement:0xcfc7200>----- Position dans Scene_Title
Ligne 540
----- Backtrace
Script : Scene_Title | Ligne : 540 | Méthode : in on_decision'Script : Scene_Title | Ligne : 364 | Méthode : in update'Script : Scene_Title | Ligne : 319 | Méthode : in main'Script : Scene_Title | Ligne : 316 | Méthode : in loop'Script : Scene_Title | Ligne : 323 | Méthode : in main'Script : Main | Ligne : 57
Désolé de reposter ce gros morceau ici mais je suis bien coincé :S
Publié le : 08/02/2021 - 12:43
Modifié le : 29/11/2022 - 06:30

Noru - Modérateur
Salut,
ce sujet est-il toujours d'actualité ?^^
Le sujet sera clôturé d'ici 2 semaines si il n'y a pas de nouvelles !
Publié le : 30/11/2022 - 14:36
Modifié le : 30/11/2022 - 14:36

Damien Linux - Administrateur
A pars si Vladandgaret indique le contraire, toujours en attendre que ce script soit adapté. J'ai jamais pu m'en occuper et donc le sujet reste ouvert
Publié le : 30/11/2022 - 17:58
Modifié le : 30/11/2022 - 17:58

VladandGaret
Toujours d'actualité. J'ai laissé tomber l'ajout de cette fonctionnalité pour la 1ière version de mon projet, mais j'aimerai tout de même l'ajouter à l'avenir
Publié le : 30/11/2022 - 19:07
Modifié le : 30/11/2022 - 19:07