Welcome Guest: S’enregistrer | Connexion
 
Portail  | FAQ | Rechercher | Membres | Groupes
 
Systeme d'equipements visibles sur la map
 
Poster un nouveau sujet   Répondre au sujet
RPG Community Index du Forum -> RPG Maker -> Scripts RPG Maker XP
Sujet précédent :: Sujet suivant  
Auteur Message
DrakeRoxas
Dieu
Dieu

Hors ligne

Inscrit le: 06 Mar 2009
Messages: 37
Points RPG Community: 0
Moyenne de points: 0,00

MessagePosté le: 21/08/2010 22:33:10
MessageSujet du message: Systeme d'equipements visibles sur la map
Répondre en citant

Le principe du système (comme si on le devinnais pas en lisant le titre ...) c'est d'afficher les équipements sur la map selon les characters que vous leur aurais attribué. ça donne ça :

=>



Je sais, le casque est tout moche, mais c'est du fait à l'arache ...
Donc on rajoute un script au dessus de main :

Code:


#==============================================================================# ■ Scene_Title
#------------------------------------------------------------------------------
#  タイトル画面の処理を行うクラスです。
#==============================================================================
class Scene_Title
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  def initialize
    $equipp_visible = []
    # Vous pouvais modifier l'affichage des armures (et de l'arme évidemment ^^) en changeant
    # true et false. "true" afficheras et "false" afficheras pas ^^
    #
    # Vous pouvez modifier les valeurs grâce aux évents (fonction "Insere un srcipt") en copiant
    # l'une ou plusieur de ces lignes puis en remplaçant la valeur et en rajoutant
    # "$game_map.refresh" juste en dessous
    #
    # /!\ l'effet ne sera visible qu'au prochain changement de map /!\
    $equipp_visible[0] = true # Armes
    $equipp_visible[1] = true # Bouclier
    $equipp_visible[2] = true # Casque
    $equipp_visible[3] = true # Armures
    $equipp_visible[4] = false # Accessoires
  end
end

#==============================================================================
# ■ Spriteset_Map
#------------------------------------------------------------------------------
#  マップ画面のスプライトやタイルマップなどをまとめたクラスです。このクラスは
# Scene_Map クラスの内部で使用されます。
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    # ビューポートを作成
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @viewport2 = Viewport.new(0, 0, 640, 480)
    @viewport3 = Viewport.new(0, 0, 640, 480)
    @viewport2.z = 200
    @viewport3.z = 5000
    # タイルマップを作成
    @tilemap = Tilemap.new(@viewport1)
    @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
    for i in 0..6
      autotile_name = $game_map.autotile_names[i]
      @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
    end
    @tilemap.map_data = $game_map.data
    @tilemap.priorities = $game_map.priorities
    # パノラマプレーンを作成
    @panorama = Plane.new(@viewport1)
    @panorama.z = -1000
    # フォグプレーンを作成
    @fog = Plane.new(@viewport1)
    @fog.z = 3000
    # キャラクタースプライトを作成
    @character_sprites = []
    for i in $game_map.events.keys.sort
      sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
      @character_sprites.push(sprite)
    end
    @character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
    if $data_armors[$game_party.actors[0].armor3_id] != nil and $equipp_visible[3]
      @character_sprites.push(Sprite_Equipp.new(@viewport1, 3))
    end
    if $data_armors[$game_party.actors[0].armor2_id] != nil and $equipp_visible[2]
      @character_sprites.push(Sprite_Equipp.new(@viewport1, 2))
    end
    if $data_armors[$game_party.actors[0].armor4_id] != nil and $equipp_visible[4]
      @character_sprites.push(Sprite_Equipp.new(@viewport1, 4))
    end
    if $data_armors[$game_party.actors[0].armor1_id] != nil and $equipp_visible[1]
      @character_sprites.push(Sprite_Equipp.new(@viewport1, 1))
    end
    if $data_weapons[$game_party.actors[0].weapon_id] != nil and $equipp_visible[0]
      @character_sprites.push(Sprite_Equipp.new(@viewport1, 0))
    end
    # 天候を作成
    @weather = RPG::Weather.new(@viewport1)
    # ピクチャを作成
    @picture_sprites = []
    for i in 1..50
      @picture_sprites.push(Sprite_Picture.new(@viewport2,
        $game_screen.pictures[i]))
    end
    # タイマースプライトを作成
    @timer_sprite = Sprite_Timer.new
    # フレーム更新
    update
  end
end

#==============================================================================
# ■ Sprite_Character
#------------------------------------------------------------------------------
#  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
# 監視し、スプライトの状態を自動的に変化させます。
#==============================================================================
class Sprite_Equipp < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :character                # キャラクター
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     viewport  : ビューポート
  #     character : キャラクター (Game_Character)
  #--------------------------------------------------------------------------
  def initialize(viewport, type)
    super(viewport)
    @type = type
    @character = $game_player
    update
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    super
    # タイル ID、ファイル名、色相のどれかが現在のものと異なる場合
    if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       @character_hue != @character.character_hue
      # タイル ID とファイル名、色相を記憶
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      # タイル ID が有効な値の場合
      case @type
      when 0
        if File.exist?("Graphics/Characters/Armes/" + $game_party.actors[0].weapon_id.to_s + ".png")
          self.bitmap = RPG::Cache.character("Armes/" + $game_party.actors[0].weapon_id.to_s, 0)
        else
          if File.exist?("Graphics/Characters/Armes/0.png")
            self.bitmap = RPG::Cache.character("Armes/0", 0)
          end
        end
      when 1
        if File.exist?("Graphics/Characters/Bouclier/" + $game_party.actors[0].armor1_id.to_s + ".png")
          self.bitmap = RPG::Cache.character("Bouclier/" + $game_party.actors[0].armor1_id.to_s, 0)
        else
          if File.exist?("Graphics/Characters/Bouclier/0.png")
            self.bitmap = RPG::Cache.character("Bouclier/0", 0)
          end
        end
      when 2
        if File.exist?("Graphics/Characters/Casque/" + $game_party.actors[0].armor2_id.to_s + ".png")
          self.bitmap = RPG::Cache.character("Casque/" + $game_party.actors[0].armor2_id.to_s, 0)
        else
          if File.exist?("Graphics/Characters/Casque/0.png")
            self.bitmap = RPG::Cache.character("Casque/0", 0)
          end
        end
      when 3
        if File.exist?("Graphics/Characters/Armures/" + $game_party.actors[0].armor3_id.to_s + ".png")
          self.bitmap = RPG::Cache.character("Armures/" + $game_party.actors[0].armor3_id.to_s, 0)
        else
          if File.exist?("Graphics/Characters/Armures/0.png")
            self.bitmap = RPG::Cache.character("Armures/0", 0)
          end
        end
      when 4
        if File.exist?("Graphics/Characters/Accessoires/" + $game_party.actors[0].armor4_id.to_s + ".png")
          self.bitmap = RPG::Cache.character("Accessoires/" + $game_party.actors[0].armor4_id.to_s, 0)
        else
          if File.exist?("Graphics/Characters/Accessoires/0.png")
            self.bitmap = RPG::Cache.character("Accessoires/0", 0)
          end
        end
      end
      @cw = bitmap.width / 4
      @ch = bitmap.height / 4
      self.ox = @cw / 2
      self.oy = @ch
    end
    # 可視状態を設定
    self.visible = (not @character.transparent)
    # 転送元の矩形を設定
    sx = @character.pattern * @cw
    sy = (@character.direction - 2) / 2 * @ch
    self.src_rect.set(sx, sy, @cw, @ch)
    # スプライトの座標を設定
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z(@ch)
    # 不透明度、合成方法、茂み深さを設定
    self.opacity = @character.opacity
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    # アニメーション
  end
end



Ensuite il vous faut créer certains dossiers dans Graphics/Characters : Armes ; Bouclier ; Casque ; Armures ; Accessoires . Recopier les exactement comme ils sont écrits (faite des copier-collé)Maintenant vous devais créer vos characters. Je vous ferais peut être un tuto vite fait ... Ils doivent porter l'ID de l'arme ou de l'armure comme nom (les ID sont dans la base de données) et être en format ".png". Vous pouvez aussi mettre un "0" qui serviras de character à tous les équipement qui n'auront pas de battler

Maintenant allez dans cette partie du script (au tout début) :

Code:

    $equipp_visible[0] = true # Armes    
    $equipp_visible[1] = true # Bouclier
    $equipp_visible[2] = true # Casque
    $equipp_visible[3] = true # Armures
    $equipp_visible[4] = false # Accessoires

Ce qui est en vert (sur RPG Maker) vous indique quel genre d'armes et d'armure corespond au "$equipp_visible[X]". Si ils sont égal à "true" ils seront visible, si c'est "false" il ne le seront pas.
Enfin, vous pouvez modifier les valeurs grâce aux évents (fonction "Insere un srcipt") en copiant l'une ou plusieur de ces lignes puis en remplaçant la valeur (true et ou false) et en rajoutant "$game_map.refresh" juste en dessous

/!\ L'effet ne sera visible qu'au prochain changement de map (ou si vous allez dans le menu, dans un magasin ou autre) /!\
Voilà une démo : From RapidShare
Revenir en haut
Publicité






MessagePosté le: 21/08/2010 22:33:10
MessageSujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Montrer les messages depuis:   
RPG Community Index du Forum -> RPG Maker -> Scripts RPG Maker XP Toutes les heures sont au format GMT + 2 Heures
Poster un nouveau sujet   Répondre au sujet
Page 1 sur 1
Sauter vers:  

 

Portail | Index | Panneau d’administration | Créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
phpBB
Template by BMan1
Traduction par : phpBB-fr.com