Poulet trizo Lv.3
Inscrit le : 02/09/2011 Messages : 45
| Sujet: Problème ajout de script! Jeu 29 Sep 2011 - 16:52 | |
| Bonjour à tous! J'ai un gros problème avec les scripts! Dès que j'ajoute un script ( pourtant bien en dessus de "main") et que je veux tester le jeu: une erreur s'affiche : " script "objet recu v2 " line 545:system stackerror occured si un personne à la solution merci d'avance !! |
|
Citadin Lv.7
Inscrit le : 14/06/2011 Messages : 165
| Sujet: Re: Problème ajout de script! Jeu 29 Sep 2011 - 18:30 | |
| Bah donnes nous le script, sans ça on peut rien faire ==" |
|
Poulet Lv.1
Age : 34 Inscrit le : 11/09/2011 Messages : 8
| Sujet: Re: Problème ajout de script! Jeu 29 Sep 2011 - 19:47 | |
| Je pense que son script est celui là: - Code:
-
#=============================================================================== # ▼ [VX] Afficher les objets trouvés/reçu sur la map #------------------------------------------------------------------------ # Blockade Script Library - Afficher les objets trouvés/reçu sur la map # Date : 12/04/2010 # Niveau : Facile # Version : 2.0 # Auteur : Blockade # Forum d'origine : http://rpg-maker-vx.bbactif.com/forum.html # # Remerciment à Khai ( http://ktbanh.wordpress.com/) # # Marre de pas avoir d'interface spécifique quand le joueur gagne un objet ou de l'expérience ? # Ce script permet d'afficher une fenêtre qui récapitule les gains obtenus ! Dans sa nouvelle version, il # n'y plus aucun code à rentrer le script reconnait les gains tout seul ! #======================================================================= # ▼ Mises a jour # ------------------------------------------------------------------------- # ☼ 12/04/2010 - Version 1.0 # - Sortie du script # ☼ ??/??/???? - Version 1.1 # - Permet de gagner de l'expérience # ☼ 20/06/2010 - Version 1.2 # - Correction de plusieurs bugs # ☼ 01/01/2011 - Version 2.0 # - Plus besoin de passer par des lignes de codes, tout se fait automatiquement # - Réécriture complète du script #======================================================================= # ▼ Fonctionnalités # ------------------------------------------------------------------------- # - Affiche une fenêtre avec les gains obtenus (gère l'expérience, l'or, les objets et l'équipement) # - La fenêtre s'adapte quand il y a plusieurs gains # - On peut adapter très facilement le titre de la fenêtre et le son joué en fonction de la situation (coffre, PNJ...) # - Plus aucun code à rentrer ! # - Retro-compatible avec les versions antérieures # (vous n'avez pas besoin de changer les appels de scripts, ils marchent toujours) #======================================================================= # ▼ Installation #-------------------------------------------------------------------------- # Mettez le au dessus de main, et jetez un coup d'oeil au module de configuration. #======================================================================= # ▼ Utilisation #-------------------------------------------------------------------------- # Dans cette nouvelle version vous n'avez rien à faire ! Mettez juste votre event avec le gain # d'objet/équipement/argent/expérience et le jeu affichera tout seul comme un grand la fenêtre. # Bien sur il est possible de désactiver la fenêtre très simplement, juste en activant un interrupteur # dont l'ID est configurable plus bas ! # # Aussi pour vous éviter de tout changer dans le jeu, cette version est rétro compatible, c'est à # dire que la veille méthode marche toujours (avec gain()), jetez un coup d'oeil à la démo vous # verrez. # # Pour changer le lieu, c'est simple vous avez juste à changer la valeur d'une variable dont l'ID # est configurable. Pour les nouveaux, un lieu dans le script c'est juste l'affichage d'un texte # différent, et un son différent suivant les cas. Si vous vous trouvez dans un coffre, il suffit de # mettre la variable lieu à 1 pour que le script affiche "Butin trouvé" à la place de "Butin", et qu'il # joue un son de coffre. Bien sur vous pouvez changer ces valeurs dans le module de # configuration ! Si vous ne comprenez pas regardez la démo ! #======================================================================= # ▼ Alias et compatibilité #-------------------------------------------------------------------------- # ► Méthodes réecrites : # > Game_Interpreter : update # # ► Alias méthodes : # > Game_Interpreter : initialize # > Game_Interpreter : execute_command # > Scene_Map : start # > Scene_Map : update # > Scene_Map : terminate # > Game_Temp : initialize #===============================================================================
module BSL module OTR #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # ID_X - Configuration des ID de variable/interrupteurs #------------------------------------------------- # Niveau : Facile # Vous pouvez configurer ici l'ID de l'interrupteur qui désactive l'affichage de la fenêtre; # et de la variable de lieu. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # L'ID de l'interrupteur qui désactive la fenêtre de gain si il est activé ID_INT_DESACTIVER = 99 # L'ID de la variable qui contient le lieu (voir la section LIEU_X plus loin pour les détails) ID_VAR_LIEU = 94 #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # TEXT_X - Configuration des textes #------------------------------------------------- # Niveau : Facile # Vous pouvez configurer ici tous les textes qui apparaissent dans les fenêtres. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Texte situé avant la quantité d'objets gagné TEXT_QUANTITE = "x" # Texte affiché avant la quantité d'argent obtenu TEXT_GAIN_GOLD = "Pièces obtenus" # Texte affiché avant la quantité d'argent obtenu TEXT_GAIN_EXP = "Exp. obtenue" #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # UPDATE_X - Permetre aux éléments du décors de bouger #------------------------------------------------- # Niveau : Facile # Si vous souhaitez pour une raison ou une autre que les events ou que les autotiles # ne bougent plus pendant que la fenêtre apparaît c'est ici qu'il faut se rendre. # Mettez true si vous voulez qu'ils bougent, false sinon. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Continuer à faire bouger les autotitles lors de l'apparition de la fenêtre (L'eau par exemple) UPDATE_SPRITESET = true # Continuer à exécuter les events UPDATE_EVENT = true
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # ICON_X - Configuration des icônes #------------------------------------------------- # Niveau : Facile # Vous pouvez modifier ici les icônes qui apparaissent lors du gain d'expérience et d'or. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # L'ID de l'icône affichée pour l'argent ICON_GOLD = 205 # L'ID de l'icône affichée pour l'expérience ICON_EXP = 101 #-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # LIEU_X - Configuration des lieux #------------------------------------------------- # Niveau : Facile # Vous pouvez modifier ici les différents titres affichés, ainsi que les sons joué suivant # la valeur de la variable qui défini le lieu. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # > Par défaut (si la variable lieu vaut 0) LIEU_0_TEXT = "Butin" # Texte affiché par défaut lors de l'obtention d'un butin LIEU_0_MUSIQUE = true # Jouer le SE ? (par défaut) LIEU_0_SE = "Saint5" # Le SE joué par défaut lors de l'obtention d'un butin LIEU_0_VOLUME = 100 # Le volume du SE joué par défaut LIEU_0_TEMPO = 100 # Le tempo du SE joué par défaut
# > Un coffre (Lieu = 1) LIEU_1_TEXT = "Butin trouvé" # Texte affiché lors de l'obtention d'un butin (Lieu = 1) LIEU_1_MUSIQUE = true # Jouer le SE ? (Lieu = 1) LIEU_1_SE = "Chest" # Le SE joué lors de l'obtention d'un butin (Lieu = 1) LIEU_1_VOLUME= 100 # Le volume du SE joué (Lieu = 1) LIEU_1_TEMPO = 100 # Le tempo du SE joué (Lieu = 1)
# > Un PNJ (Lieu = 2) LIEU_2_TEXT = "Butin reçu" # Texte affiché lors de l'obtention d'un butin (Lieu = 2) LIEU_2_MUSIQUE = true # Jouer le SE ? (Lieu = 2) LIEU_2_SE = "Saint5" # Le SE joué lors de l'obtention d'un butin (Lieu = 2) LIEU_2_VOLUME = 100 # Le volume du SE joué (Lieu = 2) LIEU_2_TEMPO = 100 # Le tempo du SE joué (Lieu = 2 )
# > Autres (Objet caché...) (Lieu = 3) LIEU_3_TEXT = "Butin trouvé" # Texte affiché lors de l'obtention d'un butin (Lieu = 3) LIEU_3_MUSIQUE = true # Jouer le SE ? (Lieu = 3) LIEU_3_SE = "Saint5" # Le SE joué lors de l'obtention d'un butin (Lieu = 3) LIEU_3_VOLUME = 100 # Le volume du SE joué (Lieu = 3) LIEU_3_TEMPO = 100 # Le tempo du SE joué (Lieu = 3) end end
#============================================================================== # ** Game_Interpreter #------------------------------------------------------------------------------ # An interpreter for executing event commands. This class is used within the # Game_Map, Game_Troop, and Game_Event classes. #============================================================================== class Game_Interpreter include BSL::OTR #-------------------------------------------------------------------------- # * alias_method : initialize #-------------------------------------------------------------------------- alias bsl_otr_gameinterpreter_initialize initialize def initialize(*args) bsl_otr_gameinterpreter_initialize(*args) @cmd_trouve = false # Mis à true si on à déjà trouvé une commande de gain @gain = [] end #-------------------------------------------------------------------------- # * Event Command Execution #-------------------------------------------------------------------------- alias bsl_otr_gameinterpreter_execute_command execute_command def execute_command # On le fait pas si on arrive à la fin de l'event et si on est pas sur la carte if !(@index >= @list.size-1) && $scene.is_a?(Scene_Map) && !$game_switches[ID_INT_DESACTIVER] code = @list[@index].code # Si le code n'est pas entre 125 et 128, et que y'avait au moins une commande de gain avant afficher_gains if !(code.between?(125,128)) && code != 315 && @cmd_trouve # Si le code est entre 125 et 128 on met cette information dans @gain if code.between?(125,128) || code == 315 params = @list[@index].parameters if code == 125 value = operate_value(params[0], params[1], params[2]) index = 0 else value = operate_value(params[1], params[2], params[3]) index = params[0] end if value > 0 # On fait la suite que si la valeur est positive @cmd_trouve = true type = calcul_type(code) @gain.push([type,index,value]) end end end # Si c'est la fin de l'event et qui y'a toujours des gains afficher_gains if @index >= @list.size-1 && $scene.is_a?(Scene_Map) && @cmd_trouve # On execute la commande habituellement bsl_otr_gameinterpreter_execute_command end
#-------------------------------------------------------------------------- # * Frame Update #--------------------------------------------------------------------------- def update loop do return if $game_temp.affichage_gain if $game_map.map_id != @map_id # Map is different? @event_id = 0 # Make event ID 0 end if @child_interpreter != nil # If child interpreter exists @child_interpreter.update # Update child interpreter if @child_interpreter.running? # If running return # Return else # After execution has finished @child_interpreter = nil # Erase child interpreter end end if @message_waiting # Waiting for message finish return end if @moving_character != nil # Waiting for move to finish if @moving_character.move_route_forcing return end @moving_character = nil end if @wait_count > 0 # Waiting @wait_count -= 1 return end if $game_troop.forcing_battler != nil # Forcing battle action return end if $game_temp.next_scene != nil # Opening screens return end if @list == nil # If content list is empty setup_starting_event if @main # Set up starting event return if @list == nil # Nothing was set up end return if execute_command == false # Execute event command @index += 1 # Advance index end end #-------------------------------------------------------------------------- # * On affiche les gains #-------------------------------------------------------------------------- def afficher_gains @cmd_trouve = false $scene.afficher_gains(@gain) @gain = [] $game_temp.affichage_gain = true end #-------------------------------------------------------------------------- # * Converti le code de la commande en type pour le script #-------------------------------------------------------------------------- def calcul_type(code) type = 0 case code when 126 # Objet type = 1 when 127 # Arme type = 2 when 128 # Armure type = 3 when 125 # Or type = 4 when 315 # Experience type = 5 end return type end #-------------------------------------------------------------------------- # * Ancienne méthode #-------------------------------------------------------------------------- def gain(type,index,value,lieu=0) @gain = [] if type.is_a?(Array) type.each_index { |i| @gain.push([type[i],index[i],value[i]])} else @gain.push([type,index,value]) end $game_variables[ID_VAR_LIEU] = lieu donner_butin afficher_gains end end
#-------------------------------------------------------------------------- # * Donne le butin gagné (retro-compatibilité) #-------------------------------------------------------------------------- def donner_butin @gain.each { |gain| case gain[0] when 1 $game_party.gain_item($data_items[gain[1]], gain[2]) when 2 $game_party.gain_item($data_weapons[gain[1]], gain[2]) when 3 $game_party.gain_item($data_armors[gain[1]], gain[2]) when 4 $game_party.gain_gold(gain[2]) when 5 if gain[1] == 0 $game_party.members.each{|member| member.change_exp(member.exp + gain[2],false)} else actor = $game_actors[gain[1]] actor.change_exp(actor.exp + gain[2],false) end end} end
#============================================================================== # ** Scene_Map #------------------------------------------------------------------------------ # This class performs the map screen processing. #============================================================================== class Scene_Map < Scene_Base include BSL::OTR #-------------------------------------------------------------------------- # * alias_method : initialize #-------------------------------------------------------------------------- alias bsl_otr_scenemap_start start def start @window_lieu = Window_Lieu.new @window_butin = Window_Butin.new bsl_otr_scenemap_start end #-------------------------------------------------------------------------- # *alias_method : update #-------------------------------------------------------------------------- alias bsl_otr_scenemap_update update def update # On met à jour les informations que si la fenêtre est visible if @window_butin.visible @spriteset.update if UPDATE_SPRITESET $game_map.update if UPDATE_EVENT @window_butin.update @window_lieu.update @message_window.update if @message_window.visible if Input.trigger?(Input::C) || Input.trigger?(Input::B) @window_butin.visible = false @window_lieu.visible = false $game_temp.affichage_gain = false $game_variables[ID_VAR_LIEU] = 0 end else bsl_otr_scenemap_update end end #-------------------------------------------------------------------------- # * Afficher le gain #-------------------------------------------------------------------------- def afficher_gains(gain) @gain = gain ajuster_fenetres afficher_texte afficher_fenetres end #-------------------------------------------------------------------------- # * On centre les deux fenêtres #-------------------------------------------------------------------------- def ajuster_fenetres @window_butin.height = 56 + 25*(@gain.size-1) @window_lieu.x=(544-@window_lieu.width)/2 @window_butin.x = (544-@window_butin.width)/2 @window_lieu.y = (416-@window_lieu.height-@window_butin.height)/2 @window_butin.y = @window_lieu.y + @window_butin.height-25*(@gain.size-1) end #-------------------------------------------------------------------------- # * Affiche le texte voulu #-------------------------------------------------------------------------- def afficher_texte @window_lieu.clear @window_butin.clear @window_lieu.set_text y = 0 @gain.each { |data_gain| special = false case data_gain[0] when 1 nom = $data_items[data_gain[1]].name icone = $data_items[data_gain[1]].icon_index when 2 nom = $data_weapons[data_gain[1]].name icone = $data_weapons[data_gain[1]].icon_index when 3 nom = $data_armors[data_gain[1]].name icone = $data_armors[data_gain[1]].icon_index when 4 nom = TEXT_GAIN_GOLD icone = ICON_GOLD special = true when 5 nom = TEXT_GAIN_EXP icone = ICON_EXP special = true end @window_butin.set_gain(0,y,nom,icone,data_gain[2],special) y += 25} end #-------------------------------------------------------------------------- # * On affiche les fenêtres #-------------------------------------------------------------------------- def afficher_fenetres @window_lieu.visible = true @window_butin.visible = true end #-------------------------------------------------------------------------- # * alias_method : terminate #-------------------------------------------------------------------------- alias bsl_otr_scenemap_terminate terminate def terminate bsl_otr_scenemap_terminate @window_butin.dispose @window_lieu.dispose end end
#============================================================================== # ** Window_Lieu #------------------------------------------------------------------------------ # La fenêtre qui gère le titre général du butin obtenu #============================================================================== class Window_Lieu < Window_Base include BSL::OTR #-------------------------------------------------------------------------- # * Initialize #-------------------------------------------------------------------------- def initialize super(0,0,250,56) self.visible = false end #-------------------------------------------------------------------------- # * Efface le contenu #-------------------------------------------------------------------------- def clear self.contents.clear end #-------------------------------------------------------------------------- # * Affiche le texte dans la fenêtre (/!\ Personalisable) #-------------------------------------------------------------------------- def set_text case $game_variables[ID_VAR_LIEU] when 0 # Par défaut title = LIEU_0_TEXT Audio.se_play("Audio/SE/#{LIEU_0_SE}", LIEU_0_VOLUME, LIEU_0_TEMPO) if LIEU_0_MUSIQUE when 1 # Coffre title = LIEU_1_TEXT Audio.se_play("Audio/SE/#{LIEU_1_SE}", LIEU_1_VOLUME, LIEU_1_TEMPO) if LIEU_1_MUSIQUE when 2 # PNJ title = LIEU_2_TEXT Audio.se_play("Audio/SE/#{LIEU_2_SE}", LIEU_2_VOLUME, LIEU_2_TEMPO) if LIEU_2_MUSIQUE when 3 # Recu (Autres coffre/PNJ) title = LIEU_3_TEXT Audio.se_play("Audio/SE/#{LIEU_3_SE}",LIEU_3_VOLUME, LIEU_3_TEMPO) if LIEU_3_MUSIQUE end self.contents.draw_text(0,0,contents.width,WLH,title,1) end end
#============================================================================== # ** Window_Butin #------------------------------------------------------------------------------ # La fenêtre qui gère les objets obtenus #============================================================================== class Window_Butin < Window_Base include BSL::OTR #-------------------------------------------------------------------------- # * Initialize #-------------------------------------------------------------------------- def initialize super(0,0,250,56) self.visible = false end #-------------------------------------------------------------------------- # * Efface le contenu #-------------------------------------------------------------------------- def clear self.contents.clear create_contents end #-------------------------------------------------------------------------- # * Affiche les objets/gils gagnés #-------------------------------------------------------------------------- def set_gain(x,y,butin,icone,num,special) @num = num draw_icon(icone,x,y) self.contents.draw_text(x+25,y,150,WLH,butin) if special self.contents.draw_text(x,y,contents.width,WLH,@num,2) else self.contents.draw_text(x,y,contents.width,WLH,TEXT_QUANTITE + @num.to_s,2) end end end
#============================================================================== # ** Game_Temp #------------------------------------------------------------------------------ # This class handles temporary data that is not included with save data. # The instance of this class is referenced by $game_temp. #==============================================================================
class Game_Temp #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :affichage_gain # True si on affiche des gains #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- alias bsl_otr_gametemp_initialize initialize def initialize bsl_otr_gametemp_initialize @affichage_gain = false end end Par contre je ne sais plus où il est sur le forum. |
|
Poulet trizo Lv.3
Inscrit le : 02/09/2011 Messages : 45
| Sujet: Re: Problème ajout de script! Ven 30 Sep 2011 - 18:50 | |
| problème résolu: j'ai utiliser un autre script ^^ |
|
| Sujet: Re: Problème ajout de script! | |
| |
|