Heures au format UTC + 1 heure [ Heure d’été ]


Règles du forum


Consultez la liste des Scripts : cliquez ici



Publier un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
 Sujet du message: [Rmxp] Séparation objets usuelles et importants.
MessagePublié: 12 Oct 2009, 11:56 
Ancien membre du staff
Ancien membre du staff
Avatar de l’utilisateur

Inscrit le: 24 Juin 2008, 00:00
Messages: 476
Logiciel(s) préféré(s): Scintilla based
Point(s) Fort(s): Rubyismes
Points d'aide: 60/60

Créations :

- [Rmxp] Vocab

- [Rmxp] Visible Equipment

- [Rmxp] Animated Title

- [XP/VX] Cache Extension


Voir ses créations

Menu objets séparant objets usuelles et objets importants.


Auteur : Wawower

Instructions : Placez tout simplement ce script au dessus de main et en dessous du script 'Menu translucide' de xrxs si vous l'utilisez.
Pour specifier quelles objets doivent faire parties de la categorie trésor, ajoutez [t] à leur nom.

Realisée pour la commande : viewtopic.php?f=92&t=102532

Code: Tout sélectionner
class RPG::Item
  def name
      return @name.gsub('[t]', '')
  end
  def type
      return (@name.include?('[t]') ? 1 : 0)
  end
end

class Window_ItemType < Window_Selectable
 
  def initialize
      super(0, 64, 640, 64)
      @column_max = 2
      @item_max = 2
      self.contents = Bitmap.new(width - 32, height - 32)
      contents.font.name = $fontface
      contents.font.size = $fontsize
      refresh
      self.index = 0
  end
 
  def refresh
      contents.clear
      contents.draw_text(0, 0, 304, 32, 'Objets', 1)
      contents.draw_text(304, 0, 304, 32, 'Trésors', 1)
  end
 
end

class Window_Item < Window_Selectable
 
  def initialize
    super(0, 128, 640, 352)
    @column_max = 2
    self.active = $game_temp.in_battle
    if active
      refresh
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    else
      refresh(0)
      self.index = -1
    end
  end
 
  alias classic_refresh refresh
  def refresh(type=nil)
    if type.nil?
      classic_refresh
    else
      return if @type == type
      @type = type
      refresh_type(type)
    end
  end
 
  def refresh_type(type)
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for i in 1...$data_items.size
      if $game_party.item_number(i) > 0
        if $data_items[i].type == type
            @data.push($data_items[i])
        end
      end
    end
    unless $game_temp.in_battle
      for i in 1...$data_weapons.size
        if $game_party.weapon_number(i) > 0
          @data.push($data_weapons[i])
        end
      end
      for i in 1...$data_armors.size
        if $game_party.armor_number(i) > 0
          @data.push($data_armors[i])
        end
      end
    end
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end

  def set_index
      self.index = 0 if @data.size > 0
  end
   
  def update_help
    empty = ( self.item == nil or self.index < 0 )
    @help_window.set_text( empty ? "" : self.item.description)
  end
   
end

class Scene_Item

  def main
    create_spriteset if Object.const_defined?(:XRXS_MP7_Module)
    @help_window = Window_Help.new
    @itemtype_window = Window_ItemType.new
    @item_window = Window_Item.new
    @item_window.help_window = @help_window
    @target_window = Window_Target.new
    @target_window.visible = false
    @target_window.active = false
    Graphics.transition
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
    Graphics.freeze
    @help_window.dispose
    @itemtype_window.dispose
    @item_window.dispose
    @target_window.dispose
    dispose_spriteset if Object.const_defined?(:XRXS_MP7_Module)
  end

  def update
    @help_window.update
    @itemtype_window.update
    @item_window.update
    @target_window.update
    if @itemtype_window.active
      update_type
      return
    end
    if @item_window.active
      update_item
      return
    end
    if @target_window.active
      update_target
      return
    end
  end
 
  def update_type
      @item_window.refresh(@itemtype_window.index)
      if Input.trigger?(Input::B)
          $game_system.se_play($data_system.cancel_se)
          $scene = Scene_Menu.new(0)
      elsif Input.trigger?(Input::C)
          $game_system.se_play($data_system.decision_se)
          @itemtype_window.active = false
          @item_window.active = true
          @item_window.refresh(@itemtype_window.index)
          @item_window.set_index
      end
   
  end

  def update_item
    if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        @itemtype_window.active = true
        @item_window.active = false
        @item_window.index = -1
        @item_window.update_help
    end
    if Input.trigger?(Input::C)
      @item = @item_window.item
      unless @item.is_a?(RPG::Item)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      unless $game_party.item_can_use?(@item.id)
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      if @item.scope >= 3
        @item_window.active = false
        @target_window.x = (@item_window.index + 1) % 2 * 304
        @target_window.visible = true
        @target_window.active = true
        if @item.scope == 4 || @item.scope == 6
          @target_window.index = -1
        else
          @target_window.index = 0
        end
      else
        if @item.common_event_id > 0
          $game_temp.common_event_id = @item.common_event_id
          $game_system.se_play(@item.menu_se)
          if @item.consumable
            $game_party.lose_item(@item.id, 1)
            @item_window.draw_item(@item_window.index)
          end
          $scene = Scene_Map.new
          return
        end
      end
      return
    end
  end
 
end


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 1 message ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728