Sujet n°13696
Posté par Malwolf le 6 Mar - 18:02 (2014)
Titre : [PSP4G+] BUG du SAC imprévu + Point de Retour !
Bonjour,

Depuis que je fais mes tests je ne suis jamais tomber sur un bug aussi bizarre.
J'ouvre le sac, et soudain.. BUG !

Je le réouvre en combat, est toujours BUG !
J'aimerais savoir, ce que ce vilain SAC me fait comme tour de passe passe quand le projet avance vite.

Voici le log très court qu'il faudrait me le décrytper :

Spoiler
---------- Erreur de script : Pokemon_Item_Bag ----------
----- Type
NoMethodError

----- Message
- ARGS - [9999]
undefined method `[]' for nil:NilClass

----- Position dans Pokemon_Item_Bag
Ligne 607

----- Backtrace
Script : Pokemon_Item_Bag | Ligne : 607 | Méthode : in `item_id'
Script : Pokemon_Item_Bag | Ligne : 614 | Méthode : in `item_icon'
Script : Pokemon_Item_Bag | Ligne : 89 | Méthode : in `main'
Script : Main | Ligne : 51


+

Il me faudrait aussi trouver, le moyen de faire un effet "sonore" à chaque fois que le joueur appuie sur entrée pendant les phases de discussions.
Comme dans les versions Rubis/Saphir par exemple, lorsqu'on lit les messages.

Cordialement, Malwolf.

Posté par TouzaxA le 6 Mar - 18:18 (2014)
Tu as custom certain scripts ?
Peux-tu envoyer les trois méthodes concernées ?

Posté par joeyw le 6 Mar - 20:30 (2014)
A tout hasard, tu as utilisé le script de briseur de limites de BDD ?

Posté par Malwolf le 7 Mar - 19:24 (2014)
Bonsoir, Touzaxa et Joeyw.

Non je n'ai pas utilisé de script briseur de limite de BDD.
J'ai modifier 0 script, sauf un pour un bug en combat.

Les 3 méthodes concernées ?
Enfaite, le sac ne bug pas généralement, mais sur une de mes saves, j'ai du appuyer sur un mauvais truc quand le sac était ouvert, et sa à généré le bug.

Cordialement, Malwolf.

Posté par TouzaxA le 8 Mar - 08:05 (2014)
Les trois méthodes dont font partie ces lignes:
Code:
Script : Pokemon_Item_Bag | Ligne : 607 | Méthode : in `item_id'
Script : Pokemon_Item_Bag | Ligne : 614 | Méthode : in `item_icon'
Script : Pokemon_Item_Bag | Ligne : 89 | Méthode : in `main'

Posté par Malwolf le 8 Mar - 11:04 (2014)
Bonjour, Touzaxa.

Voilà ce que tu voulais savoir !

Pokémon Item Bag :
607 : return $pokemon_party.bag[@bag_index][@item_list.index][0]
614 : return Item.icon(item_id)
89 : @item_icon.bitmap = RPG::Cache.icon(item_icon)


Merci, de vouloir m'aider à comprendre le bug du sac.

Cordialement, Malwolf.

Posté par TouzaxA le 8 Mar - 11:33 (2014)
Non, il me faudrait la méthode entière,
Envoie le script en totalité sinon.

Posté par Malwolf le 8 Mar - 11:50 (2014)
Voilà pour toi.

Script
Code:
#==============================================================================
# ■ Pokemon_Item_Bag
# Pokemon Script Project - Krosk
# 23/08/07
#-----------------------------------------------------------------------------
# Scène à ne pas modifier de préférence
#-----------------------------------------------------------------------------
# Interface du Sac
#-----------------------------------------------------------------------------
  #-------------------------------------------------------------
  # $data_item
  #   [Nom, Icone, Type, Description, Prix, Profil]
  #   Profil:  "BALL": usable en combat uniquement, tenable, jetable, limité
  #            "BATTLE" : usable en combat uniquement sur les Pokémons, tenable, jetable, limité (boosts stats en combat)
  #            "ITEM": usable en combat sur les Pokémons, en map, tenable, jetable, limité (Consommables tels Potions, etc)
  #            "HOLD": non usable, tenable, jetable, illimité (objets boostants les types)
  #            "PKMN": usable hors combat uniquement, sur les Pokémons, tenable, jetable, limité (super bonbon, boosts stats)
  #            "KEYITEM": non usable en combat, usable en map en interaction, non tenable, non jetable, usage illimité (Objets rares)
  #            "MAP" : usage en interaction, tenable, jetable, limité (repousse, flute repousse)
  #            "CS" / "HM" : non usable en combat, usable en map sur les Pokémons, non tenable, non jetable, usage illimité
  #-------------------------------------------------------------
  #------------------------------------------------------------ 
  #  @bag = [ paramètre, [], [], [], [], [] ]
  #  id: id objet, nombre: -1 pour objet utilisable à l'infini.
  #  paramètre : optionnel
  #  @bag[1] : Items, objets simples, sous la forme [id, nombre]
  #  @bag[2] : Balles sous la forme [id, nombre]
  #  @bag[3] : CT/CS sous la forme [id, nombre]
  #  @bag[4] : Baies [id, nombre]
  #  @bag[5] : Objets clés
  #------------------------------------------------------------

module POKEMON_S
    class Pokemon_Item_Bag
      # -------------------------------------------
      # Initialisation
      #    socket: cf rubrique @bag, indique la poche
      #    item_index: index du curseur
      #    mode =
      # -------------------------------------------
      def initialize(socket_index = $pokemon_party.bag_index, z_level = 100, mode = 0)
        @bag_index = socket_index[0]
        @item_index = socket_index[1]
        @z_level = z_level
        @mode = mode
      end
     
      def main
        string_dp = $game_variables[5000]["menu_dp"] ? "_DP" : ""
        Graphics.freeze
        @background = Sprite.new
        @background.bitmap = RPG::Cache.picture("bagfond"+string_dp+".png")
        @background.z = @z_level
       
        @bag_sprite = Sprite.new
        @bag_sprite.bitmap = RPG::Cache.picture("bag"+@bag_index.to_s+string_dp+".png")
        @bag_sprite.z = @z_level + 1
        @bag_sprite.x = 102
        @bag_sprite.y = 96
       
        @socket_name = Window_Base.new(51-16, 27-16, 228+32, 45+32)
        @socket_name.contents = Bitmap.new(228, 45)
        @socket_name.opacity = 0
        @socket_name.z = @z_level + 1
        @socket_name.contents.font.name = $fontface
        @socket_name.contents.font.size = $fontsizebig
        @socket_name.contents.font.color = @socket_name.normal_color
       
        @item_list = POKEMON_S::Pokemon_Item_List.new(@bag_index, @item_index)
        @item_list.opacity = 0
        @item_list.z = @z_level + 1
        @item_list.active = true
        @item_list.visible = true
       
        @text_window = Window_Base.new(6, 286, 273, 193)
        @text_window.opacity = 0
        @text_window.contents = Bitmap.new(241, 161)
        @text_window.contents.font.name = $fontface
        @text_window.contents.font.size = $fontsizebig
        @text_window.contents.font.color = @text_window.normal_color
        @text_window.z = @z_level + 1
       
        @item_icon = Sprite.new
        @item_icon.z = @z_level + 2
        @item_icon.x = 12
        @item_icon.y = 213
        @item_icon.zoom_x = 3
        @item_icon.zoom_y = 3
        @item_icon.bitmap = RPG::Cache.icon(item_icon)
       
        @drop_counter = Window_Base.new(0, 0, 120, 64)
        @drop_counter.contents = Bitmap.new(150-32, 32)
        @drop_counter.x = 640 - 120 - 3
        @drop_counter.y = 480 - 64 - 3
        @drop_counter.z = @z_level + 4
        @drop_counter.contents.font.name = $fontface
        @drop_counter.contents.font.size = $fontsize
        @drop_counter.contents.font.color = @drop_counter.normal_color
        @drop_counter.visible = false
        @drop_counter_number = 1
       
        list = ["UTILISER", "DONNER", "JETER", "ORDRE", "RETOUR"]
        if $battle_var.in_battle
          list = ["UTILISER", "RETOUR"]
        end
        @command_window = Window_Command.new(260, list)
        @command_window.active = false
        @command_window.visible = false
        @command_window.x = 640 - 260 - 3
        @command_window.y = 480 - @command_window.height - 3
        @command_window.z = @z_level + 10
       
        refresh_all
       
        Graphics.transition
        loop do
          Graphics.update
          if @done == true
            break
          end
          Input.update
          if @drop_counter.visible == true
            update_drop
            next
          end
          if @command_window.active == true
            update_command
            next
          end
          if @command_window.active == false
            @item_list.update
            update
            next
          end
        end
       
        $pokemon_party.bag_index[0] = @bag_index
        $pokemon_party.bag_index[1] = @item_list.index
       
        Graphics.freeze
        @item_list.dispose
        @text_window.dispose
        @item_icon.dispose
        @background.dispose
        @socket_name.dispose
        @drop_counter.dispose
        @bag_sprite.dispose
      end
     
      def update
        if Input.repeat?(Input::DOWN) or Input.repeat?(Input::UP)
          refresh
          return
        end
       
        if Input.repeat?(Input::RIGHT) and @item_list.on_switch == -1 and @mode != "planter"
          $game_system.se_play($data_system.cursor_se)
          @bag_index += @bag_index == 5 ? -4 : 1
          @item_list.refresh(@bag_index)
          refresh_all
          return
        end
       
        if Input.repeat?(Input::LEFT) and @item_list.on_switch == -1 and @mode != "planter"
          $game_system.se_play($data_system.cursor_se)
          @bag_index += @bag_index == 1 ? 4 : -1
          @item_list.refresh(@bag_index)
          refresh_all
          return
        end
       
        if Input.trigger?(Input::C)
          if @mode == "sell"
            if @item_list.index == @item_list.size
              @done = true
              return
            end
            # item invendable
            if not(Item.soldable?(item_id))
              $game_system.se_play($data_system.buzzer_se)
              return
            end
            # $scene = Pokemon_Item_Shop.new
            $scene.call_item_amount([item_id, item_amount], "sell", @z_level + 100)
            refresh_all
            return
          end
         
          # Echange d'objet
          if @item_list.on_switch != -1
            if @item_list.index != @item_list.size
              $game_system.se_play($data_system.decision_se)
              $pokemon_party.item_switch(@bag_index, @item_list.index, @item_list.on_switch)
              @item_list.on_switch = -1
              refresh_all
            else
              $game_system.se_play($data_system.cancel_se)
              @item_list.on_switch = -1
              refresh_all
            end
            return
          end
         
          # Mode sélection objet à donner
          if @mode == "hold"
            # Fermer le sac
            if @item_list.index == @item_list.size
              $game_system.se_play($data_system.decision_se)
              @done = true
              @return_data = [0, false]
            # Fermer le sac
            elsif Item.holdable?(item_id)
              $game_system.se_play($data_system.decision_se)
              @done = true
              @return_data = [item_id, true]
            else
              $game_system.se_play($data_system.buzzer_se)
            end
            return 
          end
         
          # Mode sélection baie à planter
          if @mode == "planter"
            # Fermer le sac
            if @item_list.index == @item_list.size
              $game_system.se_play($data_system.decision_se)
              @done = true
              @return_data = 0
            # Fermer le sac
            elsif Item.socket(item_id) == 4
              $game_system.se_play($data_system.decision_se)
              @done = true
              @return_data = item_id
            else
              $game_system.se_play($data_system.buzzer_se)
            end
            return 
          end
         
          # Retour
          if @item_list.index == @item_list.size
            @done = true
            # Retour au combat
            if $battle_var.in_battle
              return
            end
            $scene = POKEMON_S::Pokemon_Menu.new(2)
            return
          # Sélection item
          else
            @command_window.active = true
            refresh
            @command_window.visible = true
            return
          end
        end
       
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.cancel_se)
          if @mode == "hold"
            @done = true
            @return_data = [0, false]
            return
          end
         
          if @mode == "sell"
            @done = true
            return
          end
         
          if @mode == "planter"
            @done = true
            @return_data = 0
            return
          end
         
          if @item_list.on_switch != -1
            @item_list.on_switch = -1
            refresh_all
            return
          end
         
          if $battle_var.in_battle
            $game_system.se_play($data_system.cancel_se)
            @return_data = 0
            @done = true
            return
          end
         
          $game_system.se_play($data_system.cancel_se)
          $scene = POKEMON_S::Pokemon_Menu.new(2)
          @done = true
          return
        end
      end
     
      def return_data
        return @return_data
      end
     
      # ----------------------------------
      # Appel en cas de changement d'item
      # ----------------------------------
      def refresh
        string_dp = $game_variables[5000]["menu_dp"] ? "_DP" : ""
        # Sprite sac
        @bag_sprite.bitmap = RPG::Cache.picture("bag"+@bag_index.to_s+string_dp+".png")
       
        # Nom de la poche
        @socket_name.contents.clear
        @socket_name.contents.draw_text(0,0, 228, 48, socket_name, 1)
       
        # Tracage de l'icone objet
        @item_icon.bitmap = RPG::Cache.icon(item_icon)
       
        # Texte de description
        if @command_window.active
          string = []
          string[0] = Item.name(item_id)
          string[1] = "est sélectionné."
        elsif @drop_counter.visible == true
          string = []
          string[0] = "En jeter"
          string[1] = "combien?"
        elsif @item_list.on_switch != -1
          string = []
          string[0] = "Echanger avec"
          string[1] = "lequel?"
        else
          string = string_builder(item_descr, 15)
        end
       
        text_window_draw(string)
       
        refresh_command_list
      end
     
     
     
      # ------------------------------------
      # Appel en cas de changement de poche
      # ------------------------------------
      def refresh_all
        refresh_list
        refresh
      end
     
      # ------------------------------------
      # Rafraichissement de liste (même poche)
      # ------------------------------------
      def refresh_list
        @item_list.refresh_list
      end
     
      # ----------------------------------
      # Liste d'actions associé à l'item
      # ----------------------------------
      def update_command
        @command_window.update
       
        if Input.trigger?(Input::B)
          $game_system.se_play($data_system.cancel_se)
          @command_window.active = false
          @command_window.visible = false
          refresh
          return
        end
       
        if Input.trigger?(Input::C)
          case @command_window.index
          # Utiliser
          when 0
            if $battle_var.in_battle and not(Item.battle_usable?(item_id))
              $game_system.se_play($data_system.buzzer_se)
              return
            end
            if not($battle_var.in_battle) and not(Item.map_usable?(item_id))
              $game_system.se_play($data_system.buzzer_se)
              return
            end
            $game_system.se_play($data_system.decision_se)
            @command_window.active = false
            @command_window.visible = false
            if Item.use_on_pokemon?(item_id)
              item_mode = "item_use"
              if Item.item_able_mode?(item_id)
                item_mode = "item_able"
              end
              scene = POKEMON_S::Pokemon_Party_Menu.new(0, @z_level + 100, item_mode, item_id)
              scene.main
              # return_data = [id item_utilisé, item utilisé oui/non, ]
              data = scene.return_data
              used = data[1]
              item_used = 0
            else
              # Utilisé
              data = Item.effect(item_id)
              used = data[0]
              item_used = item_id
              string = data[1]
              return_map = data[2]
              if string.type == String and string != ""
                window = Pokemon_Window_Help.new
                window.draw_text(string)
                Input.update
                until Input.trigger?(Input::C)
                  Graphics.update
                  Input.update
                end
                window.dispose
              end
            end
            if used
              $pokemon_party.use_item(item_id)
            end
            # En combat, retour à l'écran après utilisation de l'objet
            if $battle_var.in_battle and used
              $battle_var.action_id = 1
              @done = true
              @return_data = item_used
              return
            end
            if used and return_map
              @done = true
              return
            end
            refresh_all
            @item_list.refresh
            Graphics.transition
            return
          # Retour (dernière option)
          when @command_window.item_max-1
            $game_system.se_play($data_system.cancel_se)
            @command_window.active = false
            @command_window.visible = false
            refresh
            return
          # Donner
          when 1
            if not(Item.holdable?(item_id))
              $game_system.se_play($data_system.buzzer_se)
              return
            end
            $game_system.se_play($data_system.decision_se)
            @command_window.active = false
            @command_window.visible = false
            scene = POKEMON_S::Pokemon_Party_Menu.new(0, @z_level + 100, "hold", item_id)
            scene.main
            return_data = scene.return_data
            # return_data = [item tenu true/false, id item_tenu, item remplacé true/false, id item remplacé]
            item_id2 = return_data[2]
            replaced = return_data[3]
            if replaced
              $pokemon_party.add_item(item_id2)
            end
            item_id1 = return_data[0]
            hold = return_data[1]
            if hold
              $pokemon_party.drop_item(item_id1)
            end
            refresh_all
            Graphics.transition
            return
          # Jeter
          when 2
            if not(Item.holdable?(item_id))
              $game_system.se_play($data_system.buzzer_se)
              return
            end
            $game_system.se_play($data_system.decision_se)
            @command_window.active = false
            @command_window.visible = false
            @drop_counter.visible = true
            refresh
            refresh_drop_counter
            return
          # Ordre
          when 3
            @item_list.on_switch = @item_list.index
            @command_window.active = false
            @command_window.visible = false
            refresh_all
            return
          end
        end
       
      end
     
      def refresh_command_list
        # Fermer le sac
        if @item_list.index == @item_list.size
          return
        end 
        # En combat
        if $battle_var.in_battle
          if Item.battle_usable?(item_id)
            @command_window.enable_item(0)
          else
            @command_window.disable_item(0)
          end
        # En map
        else
          if Item.map_usable?(item_id)
            @command_window.enable_item(0)
          else
            @command_window.disable_item(0)
          end
          if Item.holdable?(item_id)
            @command_window.enable_item(1)
            @command_window.enable_item(2)
          else
            @command_window.disable_item(1)
            @command_window.disable_item(2)
          end
        end
      end
     
      def update_drop
        if Input.repeat?(Input::UP)
          if @drop_counter_number < item_amount
            @drop_counter_number += 1
            refresh_drop_counter
          end
          return
        end
       
        if Input.repeat?(Input::DOWN)
          if @drop_counter_number > 1
            @drop_counter_number -= 1
            refresh_drop_counter
          end
          return
        end
       
        if Input.repeat?(Input::LEFT)
          if @drop_counter_number > 1
            @drop_counter_number -= 10
            if @drop_counter_number < 1
              @drop_counter_number = 1
            end
            refresh_drop_counter
          end
          return
        end
       
        if Input.repeat?(Input::RIGHT)
          if @drop_counter_number < item_amount
            @drop_counter_number += 10
            if @drop_counter_number > item_amount
              @drop_counter_number = item_amount
            end
            refresh_drop_counter
          end
          return
        end
       
        if Input.repeat?(Input::B)
          $game_system.se_play($data_system.cancel_se)
          @drop_counter_number = 1
          @drop_counter.visible = false
          @command_window.active = true
          @command_window.visible= true
          refresh
          return
        end
       
        if Input.repeat?(Input::C)
          $game_system.se_play($data_system.decision_se)
          if decision
            $game_system.se_play($data_system.decision_se)
            id_ = item_id
            $pokemon_party.drop_item(id_, @drop_counter_number)
            @drop_counter.visible = false
            refresh_list
            text_window_draw(["Jeté " + @drop_counter_number.to_s, Item.name(id_) + "."])
            @drop_counter_number = 1
            @command_window.active = false
            @command_window.visible = false
            Input.update
            until Input.trigger?(Input::C)
              Graphics.update
              Input.update
            end
            refresh_all
            return
          else
            $game_system.se_play($data_system.cancel_se)
            @drop_counter_number = 1
            @drop_counter.visible = false
            @command_window.active = false
            @command_window.visible = false
            refresh
            return
          end
        end
      end
     
      def refresh_drop_counter
        @drop_counter.contents.clear
        @drop_counter.contents.draw_text(0,0,88,32, "x " + @drop_counter_number.to_s, 2)
      end
     
      # ----------------------------------
      # Identification de l'item !!!!!!! Utilise l'index de la poche
      # ----------------------------------
      def item_id
        return $pokemon_party.bag[@bag_index][@item_list.index][0]
      end
     
      def item_icon
        if @item_list.index == @item_list.size
          return "return.png"
        else
          return Item.icon(item_id)
        end
      end
     
      def item_descr
        if @item_list.index == @item_list.size
          if $battle_var.in_battle
            return "Retourner au combat."
          end
          if @mode == "sell"
            return "Retourner au magasin."
          end
          return "Retourner au jeu."
        else
          return Item.descr(item_id)
        end
      end
     
      def item_amount
        return $pokemon_party.bag[@bag_index][@item_list.index][1]
      end
     
      # ----------------------------------
      # Decision
      # ----------------------------------
      def decision
        @command = Window_Command.new(120, ["OUI", "NON"], $fontsize)
        @command.x = 517
        @command.y = 480 - 6 - @drop_counter.height - @command.height
        @command.z = @z_level + 15
        loop do
          Graphics.update
          Input.update
          @command.update
          if Input.trigger?(Input::C) and @command.index == 0
            @command.dispose
            @command = nil
            return true
          end
          if (Input.trigger?(Input::C) and @command.index == 1) or Input.trigger?(Input::B)
            @command.dispose
            @command = nil
            return false
          end
        end
      end
     
      # ----------------------------------
      # Texte
      # ----------------------------------
      def socket_name
        case @bag_index
        when 1
          return "OBJETS"
        when 2
          return "POKéBALL"
        when 3
          return "CT & CS"
        when 4
          return "BAIES"
        when 5
          return "OBJ.RARES"
        end
      end
     
      def text_window_draw(list)
        @text_window.contents.clear
        for i in 0..list.length-1
          @text_window.contents.draw_text(0, 38*i, 241, $fhb, list[i])
        end
      end
     
      def dialog_window_draw(string)
      end
     
      def string_builder(text, limit)
        length = text.length
        full1 = false
        full2 = false
        full3 = false
        full4 = false
        string1 = ""
        string2 = ""
        string3 = ""
        string4 = ""
        word = ""
        for i in 0..length
          letter = text[i..i]
          if letter != " " and i != length
            word += letter.to_s
          else
            word = word + " "
            if (string1 + word).length < limit and not(full1)
              string1 += word
              word = ""
            else
              full1 = true
            end
           
            if (string2 + word).length < limit and not(full2)
              string2 += word
              word = ""
            else
              full2 = true
            end
           
            if (string3 + word).length < limit and not(full3)
              string3 += word
              word = ""
            else
              full3 = true
            end
           
            #if (string4 + word).length < limit and not(full4)
              string4 += word
              word = ""
            #else
            #  full4 = true
            #end
          end
        end
        if string4.length > 1
          string4 = string4[0..string4.length-2]
        end
        return [string1, string2, string3, string4]
      end
    end
   
   
   
   
    # ----------------------------------
    # class liste des objets dans une poche (socket)
    # ----------------------------------
    class Pokemon_Item_List < Window_Selectable
      attr_accessor :on_switch
     
      def initialize(socket = 1, index = 1)
        super(287, 32, 356, 416, $fn)
        self.contents = Bitmap.new(324, 384)
        self.contents.font.name = $fontnarrow
        self.contents.font.size = $fontnarrowsize
        self.contents.font.color = normal_color
        @bag_index = socket
        @item_max = size + 1
        @on_switch = -1
        self.index = index
      end
     
      def refresh(socket = @bag_index)
        self.index = 0
        @bag_index = socket
        @item_max = size + 1
        refresh_list
      end
     
      def refresh_list
        self.contents.clear
        self.contents = Bitmap.new(356, $fhb*(size+1))
        self.contents.font.name = $fontnarrow
        self.contents.font.size = $fontnarrowsize
        self.contents.font.color = normal_color
        hl = $fn
        i = 0
        for item in $pokemon_party.bag[@bag_index]
          id = item[0]
          amount = item[1]
          if @on_switch == i
            self.contents.font.color = text_color(2) # Rouge
          end
          self.contents.draw_text(14, hl*i, 304, hl, Item.name(id))
          if Item.holdable?(id)
            self.contents.draw_text(14, hl*i, 304, hl, "x   ", 2)
            self.contents.draw_text(14, hl*i, 304, hl, amount.to_s, 2)
          end
          if @on_switch == i
            self.contents.font.color = normal_color
          end
          i += 1
        end
        self.contents.draw_text(14, hl*i, 310, hl, "FERMER LE SAC")
      end
     
      def item_id(index = @bag_index)
        return $pokemon_party.bag[index][self.index]
      end
     
      def size
        return $pokemon_party.bag_list(@bag_index).length
      end
    end
end

Posté par TouzaxA le 8 Mar - 15:25 (2014)
Je ne peux malheureusement pas t'aider avec si peu d'éléments, surtout si c'est une erreur rare. Observe si le problème se reproduit...

Pour l'effet sonore, il est normalement déjà fait... Tu peux toujours poster ton script Window_Message*, je te le modifierai. Gros matou qui ronronne

Posté par Malwolf le 8 Mar - 15:38 (2014)
Argh ! c'est dommage.

Sur PSP4G+ les effets sonores sont pas inclut quand j'appuie sur entrée avec les messages. Imbécile heureux
Je n'utilise pas le script "afficher_message", mais le message basique de RMXP !

Donc voilà le script Windows_Message pour avoir ce petit + !

Script :
Windows_Message
Code:
#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  文章表示に使うメッセージウィンドウです。
#==============================================================================

class Window_Message < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(80, 304, 480, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.visible = false
    self.z = 9998
    @fade_in = false
    @fade_out = false
    @contents_showing = false
    @cursor_width = 0
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  def dispose
    terminate_message
    $game_temp.message_window_showing = false
    if @input_number_window != nil
      @input_number_window.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● メッセージ終了処理
  #--------------------------------------------------------------------------
  def terminate_message
    self.active = false
    self.pause = false
    self.index = -1
    self.contents.clear
    # 表示中フラグをクリア
    @contents_showing = false
    # メッセージ コールバックを呼ぶ
    if $game_temp.message_proc != nil
      $game_temp.message_proc.call
    end
    # 文章、選択肢、数値入力に関する変数をクリア
    $game_temp.message_text = nil
    $game_temp.message_proc = nil
    $game_temp.choice_start = 99
    $game_temp.choice_max = 0
    $game_temp.choice_cancel_type = 0
    $game_temp.choice_proc = nil
    $game_temp.num_input_start = 99
    $game_temp.num_input_variable_id = 0
    $game_temp.num_input_digits_max = 0
    # ゴールドウィンドウを開放
    if @gold_window != nil
      @gold_window.dispose
      @gold_window = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    x = y = 0
    @cursor_width = 0
    # 選択肢なら字下げを行う
    if $game_temp.choice_start == 0
      x = 8
    end
    # 表示待ちのメッセージがある場合
    if $game_temp.message_text != nil
      text = $game_temp.message_text
      # 制御文字処理
      begin
        last_text = text.clone
        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
      end until text == last_text
      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
      # 便宜上、"\\\\" を "\000" に変換
      text.gsub!(/\\\\/) { "\000" }
      # "\\C" を "\001" に、"\\G" を "\002" に変換
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      # c に 1 文字を取得 (文字が取得できなくなるまでループ)
      while ((c = text.slice!(/./m)) != nil)
        # \\ の場合
        if c == "\000"
          # 本来の文字に戻す
          c = "\\"
        end
        # \C[n] の場合
        if c == "\001"
          # 文字色を変更
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          end
          # 次の文字へ
          next
        end
        # \G の場合
        if c == "\002"
          # ゴールドウィンドウを作成
          if @gold_window == nil
            @gold_window = Window_Gold.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
              @gold_window.y = self.y >= 128 ? 32 : 384
            end
            @gold_window.opacity = self.opacity
            @gold_window.back_opacity = self.back_opacity
          end
          # 次の文字へ
          next
        end
        # 改行文字の場合
        if c == "\n"
          # 選択肢ならカーソルの幅を更新
          if y >= $game_temp.choice_start
            @cursor_width = [@cursor_width, x].max
          end
          # y に 1 を加算
          y += 1
          x = 0
          # 選択肢なら字下げを行う
          if y >= $game_temp.choice_start
            x = 8
          end
          # 次の文字へ
          next
        end
        # 文字を描画
        self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
        # x に描画した文字の幅を加算
        x += self.contents.text_size(c).width
      end
    end
    # 選択肢の場合
    if $game_temp.choice_max > 0
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    # 数値入力の場合
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @input_number_window = Window_InputNumber.new(digits_max)
      @input_number_window.number = number
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウの位置と不透明度の設定
  #--------------------------------------------------------------------------
  def reset_window
    if $game_temp.in_battle
      self.y = 16
    else
      case $game_system.message_position
      when 0  # 上
        self.y = 16
      when 1  # 中
        self.y = 160
      when 2  # 下
        self.y = 304
      end
      print($game_system.message_position.y)
    end
    if $game_system.message_frame == 0
      self.opacity = 255
    else
      self.opacity = 0
    end
    self.back_opacity = 160
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    # フェードインの場合
    if @fade_in
      self.contents_opacity += 24
      if @input_number_window != nil
        @input_number_window.contents_opacity += 24
      end
      if self.contents_opacity == 255
        @fade_in = false
      end
      return
    end
    # 数値入力中の場合
    if @input_number_window != nil
      @input_number_window.update
      # 決定
      if Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        $game_variables[$game_temp.num_input_variable_id] =
          @input_number_window.number
        $game_map.need_refresh = true
        # 数値入力ウィンドウを解放
        @input_number_window.dispose
        @input_number_window = nil
        terminate_message
      end
      return
    end
    # メッセージ表示中の場合
    if @contents_showing
      # 選択肢の表示中でなければポーズサインを表示
      if $game_temp.choice_max == 0
        self.pause = true
      end
      # キャンセル
      if Input.trigger?(Input::B)
        if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
          $game_system.se_play($data_system.cancel_se)
          $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
          terminate_message
        end
      end
      # 決定
      if Input.trigger?(Input::C)
        if $game_temp.choice_max > 0
          $game_system.se_play($data_system.decision_se)
          $game_temp.choice_proc.call(self.index)
        end
        terminate_message
      end
      return
    end
    # フェードアウト中以外で表示待ちのメッセージか選択肢がある場合
    if @fade_out == false and $game_temp.message_text != nil
      @contents_showing = true
      $game_temp.message_window_showing = true
      reset_window
      refresh
      Graphics.frame_reset
      self.visible = true
      self.contents_opacity = 0
      if @input_number_window != nil
        @input_number_window.contents_opacity = 0
      end
      @fade_in = true
      return
    end
    # 表示すべきメッセージがないが、ウィンドウが可視状態の場合
    if self.visible
      @fade_out = true
      self.opacity -= 48
      if self.opacity == 0
        self.visible = false
        @fade_out = false
        $game_temp.message_window_showing = false
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● カーソルの矩形更新
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @index >= 0
      n = $game_temp.choice_start + @index
      self.cursor_rect.set(8, n * 32, @cursor_width, 32)
    else
      self.cursor_rect.empty
    end
  end
end


Merci pour ton aide, dommage pour le B.U.G du sac.

Cordialement, Malwolf.

Posté par TouzaxA le 8 Mar - 19:16 (2014)
Ajoute ça après la ligne 238:
Code:
$game_system.se_play($data_system.decision_se)

Ça devrait fonctionner. Gros matou qui ronronne

Posté par Malwolf le 8 Mar - 19:27 (2014)
Bonsoir, Touzaxa.

Je la rajoute à cette ligne, mais l'effet sonore qui est dans les ressources audio comment le script et censé la lire ?
J'ai test, aucun bruit à l'appuie d'entrée sur les messages des PNJ.

Merci, tout de même.

Cordialement, Malwolf.

Posté par TouzaxA le 8 Mar - 20:08 (2014)
Il faut que tu configures le son dans l'onglet System de la BDD.
Sinon, tu remplaces la ligne par:
Code:
$game_system.se_play("Le nom du morceau")

Posté par Malwolf le 8 Mar - 20:25 (2014)
Bonsoir,

Hélas, toujours rien en matière de bruit.

Je file le script, pour que tu vois ce que j'ai fait comme erreur par hasard.

Spoiler
Code:
#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  文章表示に使うメッセージウィンドウです。
#==============================================================================

class Window_Message < Window_Selectable
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    super(80, 304, 480, 160)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.visible = false
    self.z = 9998
    @fade_in = false
    @fade_out = false
    @contents_showing = false
    @cursor_width = 0
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  def dispose
    terminate_message
    $game_temp.message_window_showing = false
    if @input_number_window != nil
      @input_number_window.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● メッセージ終了処理
  #--------------------------------------------------------------------------
  def terminate_message
    self.active = false
    self.pause = false
    self.index = -1
    self.contents.clear
    # 表示中フラグをクリア
    @contents_showing = false
    # メッセージ コールバックを呼ぶ
    if $game_temp.message_proc != nil
      $game_temp.message_proc.call
    end
    # 文章、選択肢、数値入力に関する変数をクリア
    $game_temp.message_text = nil
    $game_temp.message_proc = nil
    $game_temp.choice_start = 99
    $game_temp.choice_max = 0
    $game_temp.choice_cancel_type = 0
    $game_temp.choice_proc = nil
    $game_temp.num_input_start = 99
    $game_temp.num_input_variable_id = 0
    $game_temp.num_input_digits_max = 0
    # ゴールドウィンドウを開放
    if @gold_window != nil
      @gold_window.dispose
      @gold_window = nil
    end
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    x = y = 0
    @cursor_width = 0
    # 選択肢なら字下げを行う
    if $game_temp.choice_start == 0
      x = 8
    end
    # 表示待ちのメッセージがある場合
    if $game_temp.message_text != nil
      text = $game_temp.message_text
      # 制御文字処理
      begin
        last_text = text.clone
        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
      end until text == last_text
      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
      # 便宜上、"\\\\" を "\000" に変換
      text.gsub!(/\\\\/) { "\000" }
      # "\\C" を "\001" に、"\\G" を "\002" に変換
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      # c に 1 文字を取得 (文字が取得できなくなるまでループ)
      while ((c = text.slice!(/./m)) != nil)
        # \\ の場合
        if c == "\000"
          # 本来の文字に戻す
          c = "\\"
        end
        # \C[n] の場合
        if c == "\001"
          # 文字色を変更
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          end
          # 次の文字へ
          next
        end
        # \G の場合
        if c == "\002"
          # ゴールドウィンドウを作成
          if @gold_window == nil
            @gold_window = Window_Gold.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
              @gold_window.y = self.y >= 128 ? 32 : 384
            end
            @gold_window.opacity = self.opacity
            @gold_window.back_opacity = self.back_opacity
          end
          # 次の文字へ
          next
        end
        # 改行文字の場合
        if c == "\n"
          # 選択肢ならカーソルの幅を更新
          if y >= $game_temp.choice_start
            @cursor_width = [@cursor_width, x].max
          end
          # y に 1 を加算
          y += 1
          x = 0
          # 選択肢なら字下げを行う
          if y >= $game_temp.choice_start
            x = 8
          end
          # 次の文字へ
          next
        end
        # 文字を描画
        self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
        # x に描画した文字の幅を加算
        x += self.contents.text_size(c).width
      end
    end
    # 選択肢の場合
    if $game_temp.choice_max > 0
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    # 数値入力の場合
    if $game_temp.num_input_variable_id > 0
      digits_max = $game_temp.num_input_digits_max
      number = $game_variables[$game_temp.num_input_variable_id]
      @input_number_window = Window_InputNumber.new(digits_max)
      @input_number_window.number = number
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
  end
  #--------------------------------------------------------------------------
  # ● ウィンドウの位置と不透明度の設定
  #--------------------------------------------------------------------------
  def reset_window
    if $game_temp.in_battle
      self.y = 16
    else
      case $game_system.message_position
      when 0  # 上
        self.y = 16
      when 1  # 中
        self.y = 160
      when 2  # 下
        self.y = 304
      end
      print($game_system.message_position.y)
    end
    if $game_system.message_frame == 0
      self.opacity = 255
    else
      self.opacity = 0
    end
    self.back_opacity = 160
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    # フェードインの場合
    if @fade_in
      self.contents_opacity += 24
      if @input_number_window != nil
        @input_number_window.contents_opacity += 24
      end
      if self.contents_opacity == 255
        @fade_in = false
      end
      return
    end
    # 数値入力中の場合
    if @input_number_window != nil
      @input_number_window.update
      # 決定
      if Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        $game_variables[$game_temp.num_input_variable_id] =
          @input_number_window.number
        $game_map.need_refresh = true
        # 数値入力ウィンドウを解放
        @input_number_window.dispose
        @input_number_window = nil
        terminate_message
      end
      return
    end
    # メッセージ表示中の場合
    if @contents_showing
      # 選択肢の表示中でなければポーズサインを表示
      if $game_temp.choice_max == 0
        self.pause = true
      end
      # キャンセル
      if Input.trigger?(Input::B)
        if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
          $game_system.se_play($data_system.cancel_se)
          $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
          terminate_message
        end
      end
      # 決定
      if Input.trigger?(Input::C)
          $game_system.se_play("Audio/SE/select.wav") 
        if $game_temp.choice_max > 0
          $game_temp.choice_proc.call(self.index)
        end
        terminate_message
      end
      return
    end
    # フェードアウト中以外で表示待ちのメッセージか選択肢がある場合
    if @fade_out == false and $game_temp.message_text != nil
      @contents_showing = true
      $game_temp.message_window_showing = true
      reset_window
      refresh
      Graphics.frame_reset
      self.visible = true
      self.contents_opacity = 0
      if @input_number_window != nil
        @input_number_window.contents_opacity = 0
      end
      @fade_in = true
      return
    end
    # 表示すべきメッセージがないが、ウィンドウが可視状態の場合
    if self.visible
      @fade_out = true
      self.opacity -= 48
      if self.opacity == 0
        self.visible = false
        @fade_out = false
        $game_temp.message_window_showing = false
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ● カーソルの矩形更新
  #--------------------------------------------------------------------------
  def update_cursor_rect
    if @index >= 0
      n = $game_temp.choice_start + @index
      self.cursor_rect.set(8, n * 32, @cursor_width, 32)
    else
      self.cursor_rect.empty
    end
  end
end


Cordialement, Malwolf.

Posté par TouzaxA le 8 Mar - 21:48 (2014)
Tu m'as bien donné le Window_Message* ? Parce que ça a pas l'air...

Posté par Malwolf le 8 Mar - 22:21 (2014)
Bonsoir,

La première ligne du script dit "Window_Message"...

Cordialement, Malwolf.

Posté par TouzaxA le 9 Mar - 12:31 (2014)
Il me faut la version modifiée de Krosk. Même si tu n'utilises pas afficher_message, car c'est la redéfinition de la classe.

Posté par Malwolf le 9 Mar - 12:41 (2014)
Bonjour, Touzaxa.

Et voici ce script.

Script Krosk
Code:
#==============================================================================
# ■ Window_Message
# Pokemon Script Project - Krosk
# 18/07/07
#-----------------------------------------------------------------------------
# Scène à ne pas modifier de préférence
#-----------------------------------------------------------------------------
#
#-----------------------------------------------------------------------------

class Window_Message < Window_Selectable
  #--------------------------------------------------------------------------
  #
  #--------------------------------------------------------------------------
  def initialize
    # Redéfinition taille du cadre
    super(21, 342, 597, 126)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.visible = false
    self.z = 9998
    self.opacity = 0
    @dummy = Sprite.new
    @dummy.bitmap = RPG::Cache.picture(POKEMON_S::MSG)
    @dummy.visible = false
    @dummy.z = 9997
    @fade_in = false
    @fade_out = false
    @contents_showing = false
    @cursor_width = 0
    @speed_defilement = POKEMON_S::SPEED_MSG
    self.active = false
    self.index = -1
  end
  #--------------------------------------------------------------------------
  #
  #--------------------------------------------------------------------------
  def reset_window
    # Redéfinition
    if $game_temp.in_battle
      self.y = 342
      @dummy.y = 336
    else
      case $game_system.message_position
      when 0  # 上
        self.y = 6
        @dummy.y = 0
      when 1  # 中
        self.y = 166
        @dummy.y = 160
      when 2  # Redéfinition position du cadre inférieur
        self.y = 342
        @dummy.y = 336
      when 3
        self.y = $position + 6
        @dummy.y = $position
        $game_system.message_position = 2
      end
    end
    case $game_system.message_frame
    when 0
      #self.opacity = 255
      @dummy.opacity = 255
    when 1
      #self.opacity = 0
      @dummy.opacity = 0
    when 2
      #self.opacity = $opacite
      @dummy.opacity = $opacite
      $game_system.message_frame = 0
    else
      #self.opacity = 0
      @dummy.opacity = 0
    end
    self.back_opacity = 255
  end
  #--------------------------------------------------------------------------
  #
  #-------------------------------------------------------------------------- 
  def update
    super
    # フェードインの場合
    if @fade_in
      self.contents_opacity += 24
      if @input_number_window != nil
        @input_number_window.contents_opacity += 24
      end
      if self.contents_opacity == 255
        @fade_in = false
        if @speed_defilement != 0
          refresh
        end
      end
      return
    end
    # 数値入力中の場合
    if @input_number_window != nil
      @input_number_window.update
      # 決定
      if Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        $game_variables[$game_temp.num_input_variable_id] = @input_number_window.number
        $game_map.need_refresh = true
        # 数値入力ウィンドウを解放
        @input_number_window.dispose
        @input_number_window = nil
        $nb_min = nil
        $nb_max = nil
        terminate_message
      end
      return
    end
    # メッセージ表示中の場合
    if @contents_showing
      # 選択肢の表示中でなければポーズサインを表示
      if $game_temp.choice_max == 0
        self.pause = true
      end
      # キャンセル
      if Input.trigger?(Input::B)
        if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
          $game_system.se_play($data_system.cancel_se)
          $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
          terminate_message
        end
      end
      # 決定
      if Input.trigger?(Input::C)
        if $game_temp.choice_max > 0
          $game_system.se_play($data_system.decision_se)
          $game_temp.choice_proc.call(self.index)
        end
        terminate_message
      end
      return
    end
    # フェードアウト中以外で表示待ちのメッセージか選択肢がある場合
    if @fade_out == false and $game_temp.message_text != nil
      @contents_showing = true
      $game_temp.message_window_showing = true
      reset_window
      if @speed_defilement == 0
        refresh
      end
      self.visible = true
      @dummy.visible = true
      Graphics.frame_reset
      self.contents_opacity = 0
      if @input_number_window != nil
        @input_number_window.contents_opacity = 0
      end
      @fade_in = true
      return
    end
    # 表示すべきメッセージがないが、ウィンドウが可視状態の場合
    if self.visible
      @fade_out = true
      @dummy.opacity = 0
      #self.opacity -= 48
      if @dummy.opacity == 0 #self.opacity == 0
        self.visible = false
        @dummy.visible = false
        @fade_out = false
        $game_temp.message_window_showing = false
      end
      return
    end
  end
  #--------------------------------------------------------------------------
  #
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = normal_color
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    text_count = 0
    x = y = 0
    push = false
    @cursor_width = 0
    # 選択肢なら字下げを行う
    if $game_temp.choice_start == 0
      x = 8
    end
    # 表示待ちのメッセージがある場合
    if $game_temp.message_text != nil
      text = $game_temp.message_text
      # 制御文字処理
      begin
        last_text = text.clone
        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
        # MODIF
        text.gsub!(/\\[Pp]\[([0-9]+)\]/) { $string[$1.to_i] }
      end until text == last_text
      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
      # 便宜上、"\\\\" を "\000" に変換
      text.gsub!(/\\\\/) { "\000" }
      # "\\C" を "\001" に、"\\G" を "\002" に変換
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Gg]/) { "\002" }
      # c に 1 文字を取得 (文字が取得できなくなるまでループ)
      while ((c = text.slice!(/./m)) != nil)
        # \\ の場合
        if c == "\000"
          # 本来の文字に戻す
          c = "\\"
        end
        # \C[n] の場合
        if c == "\001"
          # 文字色を変更
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            self.contents.font.color = text_color(color)
          end
          # 次の文字へ
          next
        end
        # \G の場合
        if c == "\002"
          # ゴールドウィンドウを作成
          if @gold_window == nil
            @gold_window = Window_Gold.new
            @gold_window.x = 560 - @gold_window.width
            if $game_temp.in_battle
              @gold_window.y = 192
            else
              @gold_window.y = self.y >= 128 ? 32 : 384
            end
            @gold_window.opacity = 255
            @gold_window.back_opacity = 255
          end
          # 次の文字へ
          next
        end
        # 改行文字の場合
        if c == "\n"
          # 選択肢ならカーソルの幅を更新
          if y >= $game_temp.choice_start
            @cursor_width = [@cursor_width, x].max
          end
          # y に 1 を加算
          y += 1
          x = 0
          # 選択肢なら字下げを行う
          if y >= $game_temp.choice_start
            x = 8
          end
          # 次の文字へ
          next
        end
        # 文字を描画
        self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
        text_count += 1
        Input.update
        if Input.trigger?(Input::C)
          push = true
        end
        if text_count == @speed_defilement and @speed_defilement != 0 and push == false
          Graphics.update
          #$game_map.update
          $scene.update#spriteset.update
          text_count = 0
        end
        # x に描画した文字の幅を加算
        x += self.contents.text_size(c).width
      end
    end
    # 選択肢の場合
    if $game_temp.choice_max > 0
      @item_max = $game_temp.choice_max
      self.active = true
      self.index = 0
    end
    # 数値入力の場合
    if $game_temp.num_input_variable_id > 0
      @input_number_window = Window_InputNumber.new($game_temp.num_input_digits_max)
      @input_number_window.x = self.x + 8
      @input_number_window.y = self.y + $game_temp.num_input_start * 32
    end
  end
  #--------------------------------------------------------------------------
  #
  #-------------------------------------------------------------------------- 
  def update_cursor_rect
    if @index >= 0
      n = $game_temp.choice_start + @index
      self.cursor_rect.set(0, n * 32, 32, 32)
    else
      self.cursor_rect.empty
    end
  end
end

class Interpreter
  def setup_choices(parameters)
    # Redéfinition
    # choice_max に選択肢の項目数を設定
    $game_temp.choice_max = parameters[0].size
    # message_text に選択肢を設定
    for text in parameters[0]
      # Espaces supplémentaires
      $game_temp.message_text += "  " + text + "\n"
    end
    # キャンセルの場合の処理を設定
    $game_temp.choice_cancel_type = parameters[1]
    # コールバックを設定
    current_indent = @list[@index].indent
    $game_temp.choice_proc = Proc.new { |n| @branch[current_indent] = n }
  end
end


Cordialement, Malwolf.

Posté par TouzaxA le 9 Mar - 17:13 (2014)
Tu ajoutes la modification de la dernière fois après la ligne 127.

Posté par Malwolf le 9 Mar - 20:12 (2014)
Bonsoir, Touzaxa.

Vérifie tu si tes méthodes sont fonctionnels sur un projet PSP4G+ ?
Car ce n'est toujours pas le cas.

Merci tout de même.

Cordialement, Malwolf.

Posté par TouzaxA le 9 Mar - 20:50 (2014)
Oui c'est fonctionnel. Tout simplement car il n'y a pas de raison que ça ne le soit pas. Et de plus, j'avais fait la modif sur mon PSP4G+ quand j'avais un projet sur cette plateforme.
Plus généralement, ça fonctionne sur tous les projets RM.

Je ne peux donc rien faire pour toi, va voir la doc si tu veux le faire par tes propres moyens.

Posté par Malwolf le 9 Mar - 20:56 (2014)
Je n'y peut rien, si une fois la ligne rajouter, je n'entends rien à la saisie des messages.

Cordialement, Malwolf.

Posté par myko le 9 Mar - 23:19 (2014)
Plop, essayes de mettre après ta ligne 127 :
Code:
$game_system.se_play($data_system.decision_se)

(remplace pas le "$data_system.decision_se" par le nom de ton fichier, laisse comme tel)
ensuite dans ta base de donnée puis système, tu modifie la case "Validation" (ou "effet sonore de validation", tout dépend de ce que tu as) et tu y insère le son que tu veux générer, ça devrait etre bon, tiens moi au courant Gros matou qui ronronne

Posté par Malwolf le 9 Mar - 23:30 (2014)
Bonsoir, myko.

Votre vision des choses, et bel et bien plus simple, c'est donc logique qu'il prenne le son de la BDD.
Je n'y avais jamais penser, merci beaucoup !

J'avais mal capté, les explications de Touzaxa, donc c'était bel et donc moi l'idiot dans cette histoire.
Si j'avais une solution pour le bug "imprévu du sac" se serait cool. Scooby-doo

Cordialement, Malwolf.

Posté par myko le 9 Mar - 23:49 (2014)
Au plaisir de t'avoir aidé Gros matou qui ronronne
Par contre pour le sac j'en ai aucune idée, désolé
peut-être que tu as créer un objet, avec un mauvais icône ou je ne sais quoi ?

Posté par Malwolf le 10 Mar - 00:30 (2014)
Re, myko.

Peut être, en tout cas mes 10 amis qu'ils l'ont test sont encore jamais tombé dessus.
Merci du coup de main ! Clin d'œil foireux

Après mon nouveau problème, c'est au niveau du point de retour j'ai des bugs, quand je met le script "sauv_retour" le Pokémon empoisonné par exemple, le seul de l'équipe crève..
Au lieu de me mettre au point de retour, il me fait un vieux bug..

Cordialement, Malwolf.

Posté par myko le 10 Mar - 00:35 (2014)
un bug avec un log ?
ou alors ça te téléporte n'importe où ?

Dans ce cas, si ils ne l'ont pas, tout va bien Gros matou qui ronronne

Posté par Malwolf le 10 Mar - 00:46 (2014)
Re, myko.

Avec un log, je vais essayer de le refaire POP pour te le filer.

Cordialement, Malwolf.

Posté par myko le 10 Mar - 00:51 (2014)
Oh, je sais pas si je vais vraiment pouvoir t'aider alors, mais on sait jamais Gros matou qui ronronne

Posté par Malwolf le 10 Mar - 01:17 (2014)
Re, myko.

On sait jamais j'explique le problème.
Quand mon Pokémon perds contre un Pokémon sauvage, le sauv_retour marche correctement..

Mais lorsqu'il meure empoisonné quand je marche, ou en combat voici ce qu'il se passe..
LOG
---------- Erreur de script : Interpreter Bis ----------
----- Type
NoMethodError

----- Message
- ARGS - []
(eval):4:in `command_355'undefined method `event' for nil:NilClass

----- Position dans Interpreter Bis
Ligne 445

----- Backtrace
Script : Interpreter Bis | Ligne : 445 | Méthode : in `command_355'
Script : Interpreter 2 | Ligne : 215 | Méthode : in `eval'
Script : Interpreter Bis | Ligne : 445 | Méthode : in `command_355'
Script : Interpreter 2 | Ligne : 215 | Méthode : in `execute_command'
Script : Interpreter 1 | Ligne : 199 | Méthode : in `update'
Script : Interpreter 1 | Ligne : 113 | Méthode : in `loop'
Script : Interpreter 1 | Ligne : 204 | Méthode : in `update'
Script : Scene_Map | Ligne : 51 | Méthode : in `alias_update'
Script : Scene_Map | Ligne : 48 | Méthode : in `loop'
Script : Scene_Map | Ligne : 67 | Méthode : in `alias_update'
Script : MAPPANEL | Ligne : 90 | Méthode : in `old_update'
Script : TempsJourNuit | Ligne : 248 | Méthode : in `update_passminimap'
Script : Minimap | Ligne : 44 | Méthode : in `update'
Script : Scene_Map | Ligne : 25 | Méthode : in `old_main'
Script : Scene_Map | Ligne : 19 | Méthode : in `loop'
Script : Scene_Map | Ligne : 30 | Méthode : in `old_main'
Script : TempsJourNuit | Ligne : 237 | Méthode : in `main_passminimap'
Script : Minimap | Ligne : 31 | Méthode : in `main'
Script : Main | Ligne : 51


Peut être trouveras tu la réponse au problème, le language script me parle pas trop.. Coupable

Cordialement, Malwolf.

Posté par myko le 10 Mar - 01:40 (2014)
ça te le fait que par poison ? pas par ko normal ?

Posté par Malwolf le 10 Mar - 02:23 (2014)
Re, myko.

Par poison uniquement, le bug de sauv_retour !

Cordialement, Malwolf.

Posté par myko le 10 Mar - 02:54 (2014)
Là je ne peux pas t'aider, désolé :/ va falloir attendre demain que d'autres personnes plus qualifiées puissent t'aider, désolé