Jump to content
Rpg²S Forum

Ally

Utenti
  • Posts

    292
  • Joined

  • Last visited

Posts posted by Ally

  1. Tutorial Pixel-Art

    In questo tutorial spiegherò come creare una maglia per il vostro PG

    Original tutorial by HamsterMan

    Adapted and Traslated by -Haku-(Ally)

     

    Iniziamo con il nostro tutorial :D

     

    -Maglia

     

    Questo è solo un esempio di quello che potete fare al vostro PG,quindi prima di iniziare a farne uno vostro personalizzato assicuratevi di avere già in mente ciò che volete fare ;-)

    • Scegli il colore che vuoi dalle palette.Io per questo esempio ho usato il blu.

      http://img61.imageshack.us/img61/5135/clothes1sq8.jpg


       
       
       

    • Dato che abbiamo scelto il blu,prendi quello più scuro e iniziamo a tracciare i contorni per la maglia.

      http://img478.imageshack.us/img478/6145/clothes2ed1.jpg


       
       
       

    • Ora,immagina una fonte di illuminazione,e colora quindi la parti che sembrano più scure.
      N.B:Questo è molto importante,perchè giocare con le ombre farà sembrare il tuo chara molto più realistico.
      Ecco un esempio:

      http://img478.imageshack.us/img478/8883/clothes3mb1.jpg


       
       
       

    • Aggiungiamo ancora un pò più di ombreggiatura con il prossimo colore.Non andiamo a toccare la parte centrale del PG,ma concentriamoci con questo punto di andare a "toccare" il contorno delle braccia e quello delle spalle.

      http://img57.imageshack.us/img57/2118/clothes4ys0.jpg


       
       
       

    • Aggiungiamo ancora un pò di ombreggiature,concentrandoci sulla parte bassa del corpo.

      http://img57.imageshack.us/img57/1884/clothes5mt7.jpg


       
       
       

    • Aggiungiamo altre ombre.Concentriamoci sempre sulle spalle e sul braccio,e poi,anche sulla parte dello stomaco.
      Abbiamo quasi finito.

      http://img64.imageshack.us/img64/4206/clothes6qc1.jpg


       
       
       

    • Riempiamo tutto il resto con un colore più leggero(sempre rimanendo con il nostro colore scelto).

      http://img373.imageshack.us/img373/8991/clothes7ji9.jpg


       
       
       
       

    • Ecco qui la maglia del nostro chara finito

      http://img74.imageshack.us/img74/9691/clothes8ju9.jpg


    Perchè abbiamo creato diverse parti di sfumature?Il motivo è molto semplice:

    così facendo abbiamo creato delle ombre che fanno rendere molto più naturale e "vera" la maglia del nostro chara con effetti di ombra e luce.

     

    Spero che il tutorial vi sia utile.Molto presto posterò come creare i capelli e i pantaloni.

  2. Volevo sapere se era possibile un'affiliazione con voi...

     

    Questo è il bannerino:

    http://img230.imageshack.us/img230/3139/bannercopygy9.gif

     

    e questo è il link:

    www.rpgphoenix.it

     

    Se la cosa non è possibile....almeno ci ho provato XD...

    Appena possibile nel prossimo aggiornamento aggiungo anche io :*

  3. Menù FFVII + PHS

     

    1. Descrizione

    Menù alla FFVII con l'aggiunta di un add-on,il PHS,una finestra per cambiare i personaggi del party.

     

    2. Autore

    Jappo

    Traduction and Add-on by:Tio

     

    Il PHS funziona come l'opzione per salvare: se userete il comando dell'evento "Disallow saving", verrà disattivato pure il PHS.Per togliere quest'opzione eliminate questa stringa (riga 661):

     

    @command_window.disable_item(4)

     

    e più in basso queste stringhe(dalla 757 alla 760):

     

    if $game_system.save_disabled
    $game_system.se_play($data_system.buzzer_se)
    return
    end

     

    E ora veniamo al code.

    Prima di tutto create una classe sopra Main e copiateci tutto questo:

    #===============================================================
    
    ===============
    # ■ Game_Actor
    #------------------------------------------------------------------------------
    #  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors)
    # の内部で使用され、Game_Party クラス ($game_party) からも参照されます。
    #===============================================================
    
    ===============
    
    class Game_Actor < Game_Battler
    #--------------------------------------------------------------------------
    # ● 公開インスタンス変数
    #--------------------------------------------------------------------------
    attr_reader   :name					 # 名前
    attr_reader   :character_name		   # キャラクター ファイル名
    attr_reader   :character_hue			# キャラクター 色相
    attr_reader   :class_id				 # クラス ID
    attr_reader   :weapon_id				# 武器 ID
    attr_reader   :armor1_id				# 盾 ID
    attr_reader   :armor2_id				# 頭防具 ID
    attr_reader   :armor3_id				# 体防具 ID
    attr_reader   :armor4_id				# 装飾品 ID
    attr_reader   :level					# レベル
    attr_reader   :exp					  # EXP
    attr_reader   :skills				   # スキル
    attr_accessor :fixed_member			 # 固定メンバーフラグ
    #--------------------------------------------------------------------------
    # ● オブジェクト初期化
    #	 actor_id : アクター ID
    #--------------------------------------------------------------------------
    def initialize(actor_id)
     super()
     setup(actor_id)
    end
    #--------------------------------------------------------------------------
    # ● セットアップ
    #	 actor_id : アクター ID
    #--------------------------------------------------------------------------
    def setup(actor_id)
     actor = $data_actors[actor_id]
     @actor_id = actor_id
     @name = actor.name
     @character_name = actor.character_name
     @character_hue = actor.character_hue
     @battler_name = actor.battler_name
     @battler_hue = actor.battler_hue
     @class_id = actor.class_id
     @weapon_id = actor.weapon_id
     @armor1_id = actor.armor1_id
     @armor2_id = actor.armor2_id
     @armor3_id = actor.armor3_id
     @armor4_id = actor.armor4_id
     @level = actor.initial_level
     @exp_list = Array.new(101)
     make_exp_list
     @exp = @exp_list[@level]
     @skills = []
     @hp = maxhp
     @sp = maxsp
     @states = []
     @states_turn = {}
     @maxhp_plus = 0
     @maxsp_plus = 0
     @str_plus = 0
     @dex_plus = 0
     @agi_plus = 0
     @int_plus = 0
     @fixed_member = 0
     # スキル習得
     for i in 1..@level
    for j in $data_classes[@class_id].learnings
      if j.level == i
    	learn_skill(j.skill_id)
      end
    end
     end
     # オートステートを更新
     update_auto_state(nil, $data_armors[@armor1_id])
     update_auto_state(nil, $data_armors[@armor2_id])
     update_auto_state(nil, $data_armors[@armor3_id])
     update_auto_state(nil, $data_armors[@armor4_id])
    end
    #--------------------------------------------------------------------------
    # ● アクター ID 取得
    #--------------------------------------------------------------------------
    def id
     return @actor_id
    end
    #--------------------------------------------------------------------------
    # ● インデックス取得
    #--------------------------------------------------------------------------
    def index
     return $game_party.actors.index(self)
    end
    #--------------------------------------------------------------------------
    # ● EXP 計算
    #--------------------------------------------------------------------------
    def make_exp_list
     actor = $data_actors[@actor_id]
     @exp_list[1] = 0
     pow_i = 2.4 + actor.exp_inflation / 100.0
     for i in 2..100
    if i > actor.final_level
      @exp_list[i] = 0
    else
      n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
      @exp_list[i] = @exp_list[i-1] + Integer(n)
    end
     end
    end
    #--------------------------------------------------------------------------
    # ● 属性補正値の取得
    #	 element_id : 属性 ID
    #--------------------------------------------------------------------------
    def element_rate(element_id)
     # 属性有効度に対応する数値を取得
     table = [0,200,150,100,50,0,-100]
     result = table[$data_classes[@class_id].element_ranks[element_id]]
     # 防具でこの属性が防御されている場合は半減
     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
    armor = $data_armors[i]
    if armor != nil and armor.guard_element_set.include?(element_id)
      result /= 2
    end
     end
     # ステートでこの属性が防御されている場合は半減
     for i in @states
    if $data_states[i].guard_element_set.include?(element_id)
      result /= 2
    end
     end
     # メソッド終了
     return result
    end
    #--------------------------------------------------------------------------
    # ● ステート有効度の取得
    #--------------------------------------------------------------------------
    def state_ranks
     return $data_classes[@class_id].state_ranks
    end
    #--------------------------------------------------------------------------
    # ● ステート防御判定
    #	 state_id : ステート ID
    #--------------------------------------------------------------------------
    def state_guard?(state_id)
     for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
    armor = $data_armors[i]
    if armor != nil
      if armor.guard_state_set.include?(state_id)
    	return true
      end
    end
     end
     return false
    end
    #--------------------------------------------------------------------------
    # ● 通常攻撃の属性取得
    #--------------------------------------------------------------------------
    def element_set
     weapon = $data_weapons[@weapon_id]
     return weapon != nil ? weapon.element_set : []
    end
    #--------------------------------------------------------------------------
    # ● 通常攻撃のステート変化 (+) 取得
    #--------------------------------------------------------------------------
    def plus_state_set
     weapon = $data_weapons[@weapon_id]
     return weapon != nil ? weapon.plus_state_set : []
    end
    #--------------------------------------------------------------------------
    # ● 通常攻撃のステート変化 (-) 取得
    #--------------------------------------------------------------------------
    def minus_state_set
     weapon = $data_weapons[@weapon_id]
     return weapon != nil ? weapon.minus_state_set : []
    end
    #--------------------------------------------------------------------------
    # ● MaxHP の取得
    #--------------------------------------------------------------------------
    def maxhp
     n = [[base_maxhp + @maxhp_plus, 1].max, 9999].min
     for i in @states
    n *= $data_states[i].maxhp_rate / 100.0
     end
     n = [[Integer(n), 1].max, 9999].min
     return n
    end
    #--------------------------------------------------------------------------
    # ● 基本 MaxHP の取得
    #--------------------------------------------------------------------------
    def base_maxhp
     return $data_actors[@actor_id].parameters[0, @level]
    end
    #--------------------------------------------------------------------------
    # ● 基本 MaxSP の取得
    #--------------------------------------------------------------------------
    def base_maxsp
     return $data_actors[@actor_id].parameters[1, @level]
    end
    #--------------------------------------------------------------------------
    # ● 基本腕力の取得
    #--------------------------------------------------------------------------
    def base_str
     n = $data_actors[@actor_id].parameters[2, @level]
     weapon = $data_weapons[@weapon_id]
     armor1 = $data_armors[@armor1_id]
     armor2 = $data_armors[@armor2_id]
     armor3 = $data_armors[@armor3_id]
     armor4 = $data_armors[@armor4_id]
     n += weapon != nil ? weapon.str_plus : 0
     n += armor1 != nil ? armor1.str_plus : 0
     n += armor2 != nil ? armor2.str_plus : 0
     n += armor3 != nil ? armor3.str_plus : 0
     n += armor4 != nil ? armor4.str_plus : 0
     return [[n, 1].max, 999].min
    end
    #--------------------------------------------------------------------------
    # ● 基本器用さの取得
    #--------------------------------------------------------------------------
    def base_dex
     n = $data_actors[@actor_id].parameters[3, @level]
     weapon = $data_weapons[@weapon_id]
     armor1 = $data_armors[@armor1_id]
     armor2 = $data_armors[@armor2_id]
     armor3 = $data_armors[@armor3_id]
     armor4 = $data_armors[@armor4_id]
     n += weapon != nil ? weapon.dex_plus : 0
     n += armor1 != nil ? armor1.dex_plus : 0
     n += armor2 != nil ? armor2.dex_plus : 0
     n += armor3 != nil ? armor3.dex_plus : 0
     n += armor4 != nil ? armor4.dex_plus : 0
     return [[n, 1].max, 999].min
    end
    #--------------------------------------------------------------------------
    # ● 基本素早さの取得
    #--------------------------------------------------------------------------
    def base_agi
     n = $data_actors[@actor_id].parameters[4, @level]
     weapon = $data_weapons[@weapon_id]
     armor1 = $data_armors[@armor1_id]
     armor2 = $data_armors[@armor2_id]
     armor3 = $data_armors[@armor3_id]
     armor4 = $data_armors[@armor4_id]
     n += weapon != nil ? weapon.agi_plus : 0
     n += armor1 != nil ? armor1.agi_plus : 0
     n += armor2 != nil ? armor2.agi_plus : 0
     n += armor3 != nil ? armor3.agi_plus : 0
     n += armor4 != nil ? armor4.agi_plus : 0
     return [[n, 1].max, 999].min
    end
    #--------------------------------------------------------------------------
    # ● 基本魔力の取得
    #--------------------------------------------------------------------------
    def base_int
     n = $data_actors[@actor_id].parameters[5, @level]
     weapon = $data_weapons[@weapon_id]
     armor1 = $data_armors[@armor1_id]
     armor2 = $data_armors[@armor2_id]
     armor3 = $data_armors[@armor3_id]
     armor4 = $data_armors[@armor4_id]
     n += weapon != nil ? weapon.int_plus : 0
     n += armor1 != nil ? armor1.int_plus : 0
     n += armor2 != nil ? armor2.int_plus : 0
     n += armor3 != nil ? armor3.int_plus : 0
     n += armor4 != nil ? armor4.int_plus : 0
     return [[n, 1].max, 999].min
    end
    #--------------------------------------------------------------------------
    # ● 基本攻撃力の取得
    #--------------------------------------------------------------------------
    def base_atk
     weapon = $data_weapons[@weapon_id]
     return weapon != nil ? weapon.atk : 0
    end
    #--------------------------------------------------------------------------
    # ● 基本物理防御の取得
    #--------------------------------------------------------------------------
    def base_pdef
     weapon = $data_weapons[@weapon_id]
     armor1 = $data_armors[@armor1_id]
     armor2 = $data_armors[@armor2_id]
     armor3 = $data_armors[@armor3_id]
     armor4 = $data_armors[@armor4_id]
     pdef1 = weapon != nil ? weapon.pdef : 0
     pdef2 = armor1 != nil ? armor1.pdef : 0
     pdef3 = armor2 != nil ? armor2.pdef : 0
     pdef4 = armor3 != nil ? armor3.pdef : 0
     pdef5 = armor4 != nil ? armor4.pdef : 0
     return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
    end
    #--------------------------------------------------------------------------
    # ● 基本魔法防御の取得
    #--------------------------------------------------------------------------
    def base_mdef
     weapon = $data_weapons[@weapon_id]
     armor1 = $data_armors[@armor1_id]
     armor2 = $data_armors[@armor2_id]
     armor3 = $data_armors[@armor3_id]
     armor4 = $data_armors[@armor4_id]
     mdef1 = weapon != nil ? weapon.mdef : 0
     mdef2 = armor1 != nil ? armor1.mdef : 0
     mdef3 = armor2 != nil ? armor2.mdef : 0
     mdef4 = armor3 != nil ? armor3.mdef : 0
     mdef5 = armor4 != nil ? armor4.mdef : 0
     return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
    end
    #--------------------------------------------------------------------------
    # ● 基本回避修正の取得
    #--------------------------------------------------------------------------
    def base_eva
     armor1 = $data_armors[@armor1_id]
     armor2 = $data_armors[@armor2_id]
     armor3 = $data_armors[@armor3_id]
     armor4 = $data_armors[@armor4_id]
     eva1 = armor1 != nil ? armor1.eva : 0
     eva2 = armor2 != nil ? armor2.eva : 0
     eva3 = armor3 != nil ? armor3.eva : 0
     eva4 = armor4 != nil ? armor4.eva : 0
     return eva1 + eva2 + eva3 + eva4
    end
    #--------------------------------------------------------------------------
    # ● 通常攻撃 攻撃側アニメーション ID の取得
    #--------------------------------------------------------------------------
    def animation1_id
     weapon = $data_weapons[@weapon_id]
     return weapon != nil ? weapon.animation1_id : 0
    end
    #--------------------------------------------------------------------------
    # ● 通常攻撃 対象側アニメーション ID の取得
    #--------------------------------------------------------------------------
    def animation2_id
     weapon = $data_weapons[@weapon_id]
     return weapon != nil ? weapon.animation2_id : 0
    end
    #--------------------------------------------------------------------------
    # ● クラス名の取得
    #--------------------------------------------------------------------------
    def class_name
     return $data_classes[@class_id].name
    end
    #--------------------------------------------------------------------------
    # ● EXP の文字列取得
    #--------------------------------------------------------------------------
    def exp_s
     return @exp_list[@level+1] > 0 ? @exp.to_s : "-------"
    end
    #--------------------------------------------------------------------------
    # ● 次のレベルの EXP の文字列取得
    #--------------------------------------------------------------------------
    def next_exp_s
     return @exp_list[@level+1] > 0 ? @exp_list[@level+1].to_s : "-------"
    end
    #--------------------------------------------------------------------------
    # ● 次のレベルまでの EXP の文字列取得
    #--------------------------------------------------------------------------
    def next_rest_exp_s
     return @exp_list[@level+1] > 0 ?
    (@exp_list[@level+1] - @exp).to_s : "-------"
    end
    #--------------------------------------------------------------------------
    # ● オートステートの更新
    #	 old_armor : 外した防具
    #	 new_armor : 装備した防具
    #--------------------------------------------------------------------------
    def update_auto_state(old_armor, new_armor)
     # 外した防具のオートステートを強制解除
     if old_armor != nil and old_armor.auto_state_id != 0
    remove_state(old_armor.auto_state_id, true)
     end
     # 装備した防具のオートステートを強制付加
     if new_armor != nil and new_armor.auto_state_id != 0
    add_state(new_armor.auto_state_id, true)
     end
    end
    #--------------------------------------------------------------------------
    # ● 装備固定判定
    #	 equip_type : 装備タイプ
    #--------------------------------------------------------------------------
    def equip_fix?(equip_type)
     case equip_type
     when 0  # 武器
    return $data_actors[@actor_id].weapon_fix
     when 1  # 盾
    return $data_actors[@actor_id].armor1_fix
     when 2  # 頭
    return $data_actors[@actor_id].armor2_fix
     when 3  # 身体
    return $data_actors[@actor_id].armor3_fix
     when 4  # 装飾品
    return $data_actors[@actor_id].armor4_fix
     end
     return false
    end
    #--------------------------------------------------------------------------
    # ● 装備の変更
    #	 equip_type : 装備タイプ
    #	 id	: 武器 or 防具 ID  (0 なら装備解除)
    #--------------------------------------------------------------------------
    def equip(equip_type, id)
     case equip_type
     when 0  # 武器
    if id == 0 or $game_party.weapon_number(id) > 0
      $game_party.gain_weapon(@weapon_id, 1)
      @weapon_id = id
      $game_party.lose_weapon(id, 1)
    end
     when 1  # 盾
    if id == 0 or $game_party.armor_number(id) > 0
      update_auto_state($data_armors[@armor1_id], $data_armors[id])
      $game_party.gain_armor(@armor1_id, 1)
      @armor1_id = id
      $game_party.lose_armor(id, 1)
    end
     when 2  # 頭
    if id == 0 or $game_party.armor_number(id) > 0
      update_auto_state($data_armors[@armor2_id], $data_armors[id])
      $game_party.gain_armor(@armor2_id, 1)
      @armor2_id = id
      $game_party.lose_armor(id, 1)
    end
     when 3  # 身体
    if id == 0 or $game_party.armor_number(id) > 0
      update_auto_state($data_armors[@armor3_id], $data_armors[id])
      $game_party.gain_armor(@armor3_id, 1)
      @armor3_id = id
      $game_party.lose_armor(id, 1)
    end
     when 4  # 装飾品
    if id == 0 or $game_party.armor_number(id) > 0
      update_auto_state($data_armors[@armor4_id], $data_armors[id])
      $game_party.gain_armor(@armor4_id, 1)
      @armor4_id = id
      $game_party.lose_armor(id, 1)
    end
     end
    end
    #--------------------------------------------------------------------------
    # ● 装備可能判定
    #	 item : アイテム
    #--------------------------------------------------------------------------
    def equippable?(item)
     # 武器の場合
     if item.is_a?(RPG::Weapon)
    # 現在のクラスの装備可能な武器に含まれている場合
    if $data_classes[@class_id].weapon_set.include?(item.id)
      return true
    end
     end
     # 防具の場合
     if item.is_a?(RPG::Armor)
    # 現在のクラスの装備可能な防具に含まれている場合
    if $data_classes[@class_id].armor_set.include?(item.id)
      return true
    end
     end
     return false
    end
    #--------------------------------------------------------------------------
    # ● EXP の変更
    #	 exp : 新しい EXP
    #--------------------------------------------------------------------------
    def exp=(exp)
     @exp = [[exp, 9999999].min, 0].max
     # レベルアップ
     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
    @level += 1
    # スキル習得
    for j in $data_classes[@class_id].learnings
      if j.level == @level
    	learn_skill(j.skill_id)
      end
    end
     end
     # レベルダウン
     while @exp < @exp_list[@level]
    @level -= 1
     end
     # 現在の HP と SP が最大値を超えていたら修正
     @hp = [@hp, self.maxhp].min
     @sp = [@sp, self.maxsp].min
    end
    #--------------------------------------------------------------------------
    # ● レベルの変更
    #	 level : 新しいレベル
    #--------------------------------------------------------------------------
    def level=(level)
     # 上下限チェック
     level = [[level, $data_actors[@actor_id].final_level].min, 1].max
     # EXP を変更
     self.exp = @exp_list[level]
    end
    #--------------------------------------------------------------------------
    # ● スキルを覚える
    #	 skill_id : スキル ID
    #--------------------------------------------------------------------------
    def learn_skill(skill_id)
     if skill_id > 0 and not skill_learn?(skill_id)
    @skills.push(skill_id)
    @skills.sort!
     end
    end
    #--------------------------------------------------------------------------
    # ● スキルを忘れる
    #	 skill_id : スキル ID
    #--------------------------------------------------------------------------
    def forget_skill(skill_id)
     @skills.delete(skill_id)
    end
    #--------------------------------------------------------------------------
    # ● スキルの習得済み判定
    #	 skill_id : スキル ID
    #--------------------------------------------------------------------------
    def skill_learn?(skill_id)
     return @skills.include?(skill_id)
    end
    #--------------------------------------------------------------------------
    # ● スキルの使用可能判定
    #	 skill_id : スキル ID
    #--------------------------------------------------------------------------
    def skill_can_use?(skill_id)
     if not skill_learn?(skill_id)
    return false
     end
     return super
    end
    #--------------------------------------------------------------------------
    # ● 名前の変更
    #	 name : 新しい名前
    #--------------------------------------------------------------------------
    def name=(name)
     @name = name
    end
    #--------------------------------------------------------------------------
    # ● クラス ID の変更
    #	 class_id : 新しいクラス ID
    #--------------------------------------------------------------------------
    def class_id=(class_id)
     if $data_classes[class_id] != nil
    @class_id = class_id
    # 装備できなくなったアイテムを外す
    unless equippable?($data_weapons[@weapon_id])
      equip(0, 0)
    end
    unless equippable?($data_armors[@armor1_id])
      equip(1, 0)
    end
    unless equippable?($data_armors[@armor2_id])
      equip(2, 0)
    end
    unless equippable?($data_armors[@armor3_id])
      equip(3, 0)
    end
    unless equippable?($data_armors[@armor4_id])
      equip(4, 0)
    end
     end
    end
    #--------------------------------------------------------------------------
    # ● グラフィックの変更
    #	 character_name : 新しいキャラクター ファイル名
    #	 character_hue  : 新しいキャラクター 色相
    #	 battler_name   : 新しいバトラー ファイル名
    #	 battler_hue	: 新しいバトラー 色相
    #--------------------------------------------------------------------------
    def set_graphic(character_name, character_hue, battler_name, battler_hue)
     @character_name = character_name
     @character_hue = character_hue
     @battler_name = battler_name
     @battler_hue = battler_hue
    end
    #--------------------------------------------------------------------------
    # ● バトル画面 X 座標の取得
    #--------------------------------------------------------------------------
    def screen_x
     # パーティ内の並び順から X 座標を計算して返す
     if self.index != nil
    return self.index * 160 + 80
     else
    return 0
     end
    end
    #--------------------------------------------------------------------------
    # ● バトル画面 Y 座標の取得
    #--------------------------------------------------------------------------
    def screen_y
     return 464
    end
    #--------------------------------------------------------------------------
    # ● バトル画面 Z 座標の取得
    #--------------------------------------------------------------------------
    def screen_z
     # パーティ内の並び順から Z 座標を計算して返す
     if self.index != nil
    return 4 - self.index
     else
    return 0
     end
    end
    end
    
    
    
    
    
    
    Game_Party
    
    #===============================================================
    
    ===============
    # ■ Game_Party
    #------------------------------------------------------------------------------
    #  パーティを扱うクラスです。ゴールドやアイテムなどの惼br />?報が含まれます。このク
    # ラスのインスタンスは $game_party で参照されます。
    #===============================================================
    
    ===============
    
    class Game_Party
    #--------------------------------------------------------------------------
    # ● 公開インスタンス変数
    #--------------------------------------------------------------------------
    attr_reader   :actors				   # アクター
    attr_reader   :gold					 # ゴールド
    attr_reader   :steps					# 歩数
    attr_accessor :member				   # パーティーメンバー
    #--------------------------------------------------------------------------
    # ● オブジェクト初期化
    #--------------------------------------------------------------------------
    def initialize
     # アクターの配列を作成
     @actors = []
     # ゴールドと歩数を初期化
     @gold = 0
     @steps = 0
     # アイテム、武器、防具の所持数ハッシュを作成
     @items = {}
     @weapons = {}
     @armors = {}
     # PTメンバー用配列を作成
     @member = []
    end
    #--------------------------------------------------------------------------
    # ● 初期パーティのセットアップ
    #--------------------------------------------------------------------------
    def setup_starting_members
     @actors = []
     for i in $data_system.party_members
    @actors.push($game_actors[i])
    @member.push($game_actors[i].id)
     end
     @member.sort!
    end
    #--------------------------------------------------------------------------
    # ● 戦闘テスト用パーティのセットアップ
    #--------------------------------------------------------------------------
    def setup_battle_test_members
     @actors = []
     for battler in $data_system.test_battlers
    actor = $game_actors[battler.actor_id]
    actor.level = battler.level
    gain_weapon(battler.weapon_id, 1)
    gain_armor(battler.armor1_id, 1)
    gain_armor(battler.armor2_id, 1)
    gain_armor(battler.armor3_id, 1)
    gain_armor(battler.armor4_id, 1)
    actor.equip(0, battler.weapon_id)
    actor.equip(1, battler.armor1_id)
    actor.equip(2, battler.armor2_id)
    actor.equip(3, battler.armor3_id)
    actor.equip(4, battler.armor4_id)
    actor.recover_all
    @actors.push(actor)
     end
     @items = {}
     for i in 1...$data_items.size
    if $data_items[i].name != ""
      occasion = $data_items[i].occasion
      if occasion == 0 or occasion == 1
    	@items[i] = 99
      end
    end
     end
    end
    #--------------------------------------------------------------------------
    # ● パーティメンバーのリフレッシュ
    #--------------------------------------------------------------------------
    def refresh
     # ゲームデータをロードした直後はアクターオブジェクトが
     # $game_actors から分離してしまっている。
     # ロードのたびにアクターを再設定することで問題を回避すゼbr />?。
     new_actors = []
     for i in 0...@actors.size
    if $data_actors[@actors[i].id] != nil
      new_actors.push($game_actors[@actors[i].id])
    end
     end
     @actors = new_actors
    end
    #--------------------------------------------------------------------------
    # ● 最大レベルの取得
    #--------------------------------------------------------------------------
    def max_level
     # パーティ人数が 0 人の場合
     if @actors.size == 0
    return 0
     end
     # ローカル変数 level を初期化
     level = 0
     # パーティメンバーの最大レベルを求める
     for actor in @actors
    if level < actor.level
      level = actor.level
    end
     end
     return level
    end
    #--------------------------------------------------------------------------
    # ● アクターを加える
    #	 actor_id : アクター ID
    #--------------------------------------------------------------------------
    def add_actor(actor_id)
     # アクターを取得
     actor = $game_actors[actor_id]
     # パーティ人数が 4 人未満で、このアクターがパーティにいない場合
     if @actors.size < 4 and not @actors.include?(actor)
    # アクターを追加
    @actors.push(actor)
    # プレイヤーをリフレッシュ
    $game_player.refresh
     end
     # パーティーメンバー配列にアクターID追加
     unless @member.include?(actor.id)
    @member.push(actor.id)
    @member.sort!
     end
    end
    #--------------------------------------------------------------------------
    # ● アクターを外す
    #	 actor_id : アクター ID
    #--------------------------------------------------------------------------
    def remove_actor(actor_id)
     # アクターを削除
     @actors.delete($game_actors[actor_id])
     # プレイヤーをリフレッシュ
     $game_player.refresh
     # パーティーメンバー配列からアクターID削除
     @member.delete(actor_id)
    end
    #--------------------------------------------------------------------------
    # ● アクターを外す : 待機メンバーに配置
    #	 actor_id : アクター ID
    #--------------------------------------------------------------------------
    def wait_actor(actor_id)
     # アクターを削除
     @actors.delete($game_actors[actor_id])
     # プレイヤーをリフレッシュ
     $game_player.refresh
    end
    #--------------------------------------------------------------------------
    # ● アクターを変更
    #	 actor_id : アクター ID
    #	 index	: 交換を行う位置
    #--------------------------------------------------------------------------
    def change_actor(actor_id, index)
     # アクターを変更
     @actors[index] = $game_actors[actor_id]
     # プレイヤーをリフレッシュ
     $game_player.refresh
    end
    #--------------------------------------------------------------------------
    # ● ゴールドの増加 (減少)
    #	 n : 金額
    #--------------------------------------------------------------------------
    def gain_gold(n)
     @gold = [[@gold + n, 0].max, 9999999].min
    end
    #--------------------------------------------------------------------------
    # ● ゴールドの減少
    #	 n : 金額
    #--------------------------------------------------------------------------
    def lose_gold(n)
     # 数値を逆転して gain_gold を呼ぶ
     gain_gold(-n)
    end
    #--------------------------------------------------------------------------
    # ● 歩数増加
    #--------------------------------------------------------------------------
    def increase_steps
     @steps = [@steps + 1, 9999999].min
    end
    #--------------------------------------------------------------------------
    # ● アイテムの所持数取得
    #	 item_id : アイテム ID
    #--------------------------------------------------------------------------
    def item_number(item_id)
     # ハッシュに個数データがあればその数値を、なければ 0 を返す
     return @items.include?(item_id) ? @items[item_id] : 0
    end
    #--------------------------------------------------------------------------
    # ● 武器の所持数取得
    #	 weapon_id : 武器 ID
    #--------------------------------------------------------------------------
    def weapon_number(weapon_id)
     # ハッシュに個数データがあればその数値を、なければ 0 を返す
     return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
    end
    #--------------------------------------------------------------------------
    # ● 防具の所持数取得
    #	 armor_id : 防具 ID
    #--------------------------------------------------------------------------
    def armor_number(armor_id)
     # ハッシュに個数データがあればその数値を、なければ 0 を返す
     return @armors.include?(armor_id) ? @armors[armor_id] : 0
    end
    #--------------------------------------------------------------------------
    # ● アイテムの増加 (減少)
    #	 item_id : アイテム ID
    #	 n	   : 個数
    #--------------------------------------------------------------------------
    def gain_item(item_id, n)
     # ハッシュの個数データを更新
     if item_id > 0
    @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
     end
    end
    #--------------------------------------------------------------------------
    # ● 武器の増加 (減少)
    #	 weapon_id : 武器 ID
    #	 n		 : 個数
    #--------------------------------------------------------------------------
    def gain_weapon(weapon_id, n)
     # ハッシュの個数データを更新
     if weapon_id > 0
    @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
     end
    end
    #--------------------------------------------------------------------------
    # ● 防具の増加 (減少)
    #	 armor_id : 防具 ID
    #	 n		: 個数
    #--------------------------------------------------------------------------
    def gain_armor(armor_id, n)
     # ハッシュの個数データを更新
     if armor_id > 0
    @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
     end
    end
    #--------------------------------------------------------------------------
    # ● アイテムの減少
    #	 item_id : アイテム ID
    #	 n	   : 個数
    #--------------------------------------------------------------------------
    def lose_item(item_id, n)
     # 数値を逆転して gain_item を呼ぶ
     gain_item(item_id, -n)
    end
    #--------------------------------------------------------------------------
    # ● 武器の減少
    #	 weapon_id : 武器 ID
    #	 n		 : 個数
    #--------------------------------------------------------------------------
    def lose_weapon(weapon_id, n)
     # 数値を逆転して gain_weapon を呼ぶ
     gain_weapon(weapon_id, -n)
    end
    #--------------------------------------------------------------------------
    # ● 防具の減少
    #	 armor_id : 防具 ID
    #	 n		: 個数
    #--------------------------------------------------------------------------
    def lose_armor(armor_id, n)
     # 数値を逆転して gain_armor を呼ぶ
     gain_armor(armor_id, -n)
    end
    #--------------------------------------------------------------------------
    # ● アイテムの使用可能判定
    #	 item_id : アイテム ID
    #--------------------------------------------------------------------------
    def item_can_use?(item_id)
     # アイテムの個数が 0 個の場合
     if item_number(item_id) == 0
    # 使用不能
    return false
     end
     # 使用可能時を取得
     occasion = $data_items[item_id].occasion
     # バトルの場合
     if $game_temp.in_battle
    # 使用可能時が 0 (常時) または 1 (バトルのみ) なら使用可能
    return (occasion == 0 or occasion == 1)
     end
     # 使用可能時が 0 (常時) または 2 (メニューのみ) なら使用可能
     return (occasion == 0 or occasion == 2)
    end
    #--------------------------------------------------------------------------
    # ● 全員のアクションクリア
    #--------------------------------------------------------------------------
    def clear_actions
     # パーティ全員のアクションをクリア
     for actor in @actors
    actor.current_action.clear
     end
    end
    #--------------------------------------------------------------------------
    # ● コマンド入力可能判定
    #--------------------------------------------------------------------------
    def inputable?
     # 一人でもコマンド入力可能なら true を返す
     for actor in @actors
    if actor.inputable?
      return true
    end
     end
     return false
    end
    #--------------------------------------------------------------------------
    # ● 全滅判定
    #--------------------------------------------------------------------------
    def all_dead?
     # パーティ人数が 0 人の場合
     if $game_party.actors.size == 0
    return false
     end
     # HP 0 以上のアクターがパーティにいる場合
     for actor in @actors
    if actor.hp > 0
      return false
    end
     end
     # 全滅
     return true
    end
    #--------------------------------------------------------------------------
    # ● スリップダメージチェック (マップ用)
    #--------------------------------------------------------------------------
    def check_map_slip_damage
     for actor in @actors
    if actor.hp > 0 and actor.slip_damage?
      actor.hp -= [actor.maxhp / 100, 1].max
      if actor.hp == 0
    	$game_system.se_play($data_system.actor_collapse_se)
      end
      $game_screen.start_flash(Color.new(255,0,0,128), 4)
      $game_temp.gameover = $game_party.all_dead?
    end
     end
    end
    #--------------------------------------------------------------------------
    # ● 対象アクターのランダムな決定
    #	 hp0 : HP 0 のアクターに限る
    #--------------------------------------------------------------------------
    def random_target_actor(hp0 = false)
     # ルーレットを初期化
     roulette = []
     # ループ
     for actor in @actors
    # 条件に該当する場合
    if (not hp0 and actor.exist?) or (hp0 and actor.hp0?)
      # アクターのクラスの [位置] を取得
      position = $data_classes[actor.class_id].position
      # 前衛のとき n = 4、中衛のとき n = 3、後衛のとき n = 2
      n = 4 - position
      # ルーレットにアクターを n 回追加
      n.times do
    	roulette.push(actor)
      end
    end
     end
     # ルーレットのサイズが 0 の場合
     if roulette.size == 0
    return nil
     end
     # ルーレットを回し、アクターを決定
     return roulette[rand(roulette.size)]
    end
    #--------------------------------------------------------------------------
    # ● 対象アクターのランダムな決定 (HP 0)
    #--------------------------------------------------------------------------
    def random_target_actor_hp0
     return random_target_actor(true)
    end
    #--------------------------------------------------------------------------
    # ● 対象アクターのスムーズな決定
    #	 actor_index : アクターインデックス
    #--------------------------------------------------------------------------
    def smooth_target_actor(actor_index)
     # アクターを取得
     actor = @actors[actor_index]
     # アクターが存在する場合
     if actor != nil and actor.exist?
    return actor
     end
     # ループ
     for actor in @actors
    # アクターが存在する場合
    if actor.exist?
      return actor
    end
     end
    end
    end

     

     

    Poi create un'altra classe subito dopo e metteteci questo code:

    #==============================================================================
    # ■ Window_PTmember
    #------------------------------------------------------------------------------
    #  PTチェンジ画面 メンバーウィンドウ
    #==============================================================================
    
    class Window_PTmember < Window_Selectable
    #--------------------------------------------------------------------------
    # ● オブジェクト初期化
    #--------------------------------------------------------------------------
    def initialize
      super(0, 0, 320, 192)
      self.contents = Bitmap.new(width - 32, height - 32)
      @column_max = 4
      refresh
      self.active = true
      self.index = 0
    end
    #--------------------------------------------------------------------------
    # ● リフレッシュ
    #--------------------------------------------------------------------------
    def refresh
      self.contents.clear
      if $game_party.member.size > 4
     @item_max = [$game_party.actors.size + 1, 4].min
      else
     @item_max = [$game_party.actors.size + 1, $game_party.member.size].min
      end
      rect = Rect.new( 0, 34, 240, 1)
      self.contents.fill_rect(rect, Color.new(255, 255, 255, 255))
      self.contents.draw_text( 0, 0, 160, 32, "Gruppo attuale")
      for i in 0...$game_party.actors.size
     x = 40 + i * (70)
     actor = $game_party.actors[i]
     draw_actor_graphic(actor, x, 150)
     if actor.fixed_member == 1
       self.contents.font.size = 16
       self.contents.draw_text( x + 12, 134, 50, 28, "Mandatory")
       self.contents.font.size = 22
     end
      end
      self.contents.draw_text( 15, 40, 240, 32, "Cambia i membri del gruppo...")
    end
    #--------------------------------------------------------------------------
    # ● カーソルの矩形更新
    #--------------------------------------------------------------------------
    def update_cursor_rect
      if @index < 0
     self.cursor_rect.empty
      else
     self.cursor_rect.set( 5 + @index * 70, 40, 70, 120)
      end
    end
    end
    
    #==============================================================================
    # ■ Window_PTstatus
    #------------------------------------------------------------------------------
    #  PTチェンジ画面 ステータスウィンドウ
    #==============================================================================
    
    class Window_PTstatus < Window_Base
    #--------------------------------------------------------------------------
    # ● オブジェクト初期化
    #--------------------------------------------------------------------------
    def initialize
      super(0, 192, 320, 192)
      self.contents = Bitmap.new(width - 32, height - 32)
      refresh( $game_party.actors[0].id )
    end
    #--------------------------------------------------------------------------
    # ● リフレッシュ
    #--------------------------------------------------------------------------
    def refresh(actor_id)
      if actor_id != @a_id
     self.contents.clear
     if actor_id == nil
       @a_id = actor_id
       return
     end
     actor = $game_actors[actor_id]
     draw_actor_name(actor, 0, 0)
     draw_actor_level(actor, 220, 0)
     draw_actor_state(actor, 0, 96)
     draw_actor_exp(actor, 0, 128)
     draw_actor_hp(actor, 0, 32)
     draw_actor_sp(actor, 0, 64)
     @a_id = actor_id
      end
    end
    end
    #==============================================================================
    # ■ Window_Waitmember
    #------------------------------------------------------------------------------
    #  PTチェンジ画面 待機メンバーウィンドウ
    #==============================================================================
    
    class Window_Waitmember < Window_Selectable
    #--------------------------------------------------------------------------
    # ● オブジェクト初期化
    #--------------------------------------------------------------------------
    def initialize
      super(320, 0, 320, 480)
      self.contents = Bitmap.new(width - 32, height - 32)
      @column_max = 4
      refresh
      self.active = false
      self.index = -1
    end
    #--------------------------------------------------------------------------
    # ● リフレッシュ
    #--------------------------------------------------------------------------
    def refresh
      self.contents.clear
      @item_max = $game_party.member.size
      rect = Rect.new( 0, 34, 240, 1)
      self.contents.fill_rect(rect, Color.new(255, 255, 255, 255))
      self.contents.draw_text( 0, 0, 200, 32, "Membri esterni al gruppo")
      for i in 0...$game_party.member.size
     x = 40 + ( i % 4 ) * 70
     y = 150 + ( i / 4 ) * 140
     actor = $game_actors[$game_party.member[i]]
     draw_member_graphic(actor, x, y)
      end
    end
    #--------------------------------------------------------------------------
    # ● メンバーグラフィックの描画
    #--------------------------------------------------------------------------
    def draw_member_graphic(actor, x, y)
      bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
      cw = bitmap.width / 4
      ch = bitmap.height / 4
      src_rect = Rect.new(0, 0, cw, ch)
      # PTにいる場合は半透明で表示
      if $game_party.actors.include?(actor)
     opacity = 120
      else
     opacity = 255
      end
      self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect, opacity)
    end
    #--------------------------------------------------------------------------
    # ● カーソルの矩形更新
    #--------------------------------------------------------------------------
    def update_cursor_rect
      if @index < 0
     self.cursor_rect.empty
      else
     self.cursor_rect.set( 5 + ( @index % 4 ) * 70,  40 + ( @index / 4 ) * 140, 70, 120)
      end
    end
    end
    #==============================================================================
    # ■ Window_PThelp
    #------------------------------------------------------------------------------
    #  PTチェンジ画面 操作ヘルプウィンドウ
    #==============================================================================
    
    class Window_PThelp < Window_Base
    #--------------------------------------------------------------------------
    # ● オブジェクト初期化
    #--------------------------------------------------------------------------
    def initialize
      super( 0, 384, 320, 96)
      self.contents = Bitmap.new(width - 32, height - 32)
      @type = 0
      refresh
    end
    #--------------------------------------------------------------------------
    # ● リフレッシュ
    #--------------------------------------------------------------------------
    def refresh
      self.contents.clear
      self.contents.draw_text(4, 0, 240, 32, "Scegli il membro che vuoi sostituire.")
      if @type == 0
     self.contents.draw_text(4, 32, 240, 32, "Premi X o Esc per uscire.")
      else
     self.contents.draw_text(4, 32, 240, 32, "Scegli il membro da inserire.")
      end
    end
    #--------------------------------------------------------------------------
    # ● タイプ変更
    #--------------------------------------------------------------------------
    def type_change
      if @type == 0
     @type = 1
      else
     @type = 0
      end
      refresh
    end
    end
    #==============================================================================
    # ■ Scene_PTchange
    #------------------------------------------------------------------------------
    # Lo script appartiene ad un sito JAP, la traduzione in inglese è stata fatta da Viskar Nogam'e
    # La traduzione in italiano è stata fatta da Tio. Per qualsiasi problema o domanda visitate
    # www.rpgshrine.altervista.org
    #==============================================================================
    
    class Scene_PTchange
    #--------------------------------------------------------------------------
    # ● メイン処理
    #--------------------------------------------------------------------------
    def main
      # Informs which Windows to open
      @pt_member = Window_PTmember.new
      @pt_status = Window_PTstatus.new
      @wait_member = Window_Waitmember.new
      @pt_help = Window_PThelp.new
      # トランジション実行
      Graphics.transition
      # メインループ
      loop do
     # ゲーム画面を更新
     Graphics.update
     # 入力情報を更新
     Input.update
     # フレーム更新
     update
     # 画面が切り替わったらループを中断
     if $scene != self
       break
     end
      end
      # トランジション準備
      Graphics.freeze
      # ウィンドウを解放
      @pt_member.dispose
      @pt_status.dispose
      @wait_member.dispose
      @pt_help.dispose
    end
    #--------------------------------------------------------------------------
    # ● フレーム更新
    #--------------------------------------------------------------------------
    def update
      # ステータスウィンドウが表示されてる間は、Bボタン押されるまで停止
      if @status != nil
     if Input.trigger?(Input::B)
       # キャンセル SE を演奏
       $game_system.se_play($data_system.cancel_se)
       # ステータスウィンドウを削除
       @status.dispose
       @status = nil
     end
     return
      end
      # ウィンドウを更新
      @pt_member.update
      @wait_member.update
      # メンバーウィンドウがアクティブの場合: update_pt を呼ぶ
      if @pt_member.active
     # カーソル位置が空白 ( メンバーの最大値と同じ ) の時ステータスを空白に
     if @pt_member.index == $game_party.actors.size
       @pt_status.refresh( nil )
     else
       @pt_status.refresh( $game_party.actors[@pt_member.index].id )
     end
     update_pt
     return
      end
      # 待機メンバーウィンドウがアクティブの場合: update_member を呼ぶ
      if @wait_member.active
     @pt_status.refresh( $game_actors[$game_party.member[@wait_member.index]].id )
     update_member
     return
      end
    end
    #--------------------------------------------------------------------------
    # ● フレーム更新 (メンバーウィンドウがアクティブの場合)
    #--------------------------------------------------------------------------
    def update_pt
      # B ボタンが押された場合
      if Input.trigger?(Input::B)
     if $game_party.actors.size == 0
       # ブザー SE を演奏
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     # キャンセル SE を演奏
     $game_system.se_play($data_system.cancel_se)
     # メニュー画面に切り替え
     $scene = Scene_Menu.new(4)
     return
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)
     # 選択アクターが固定の場合ブザーを鳴らす
     if @pt_member.index != $game_party.actors.size
       if $game_party.actors[@pt_member.index].fixed_member == 1
    	 $game_system.se_play($data_system.buzzer_se)
    	 return
       end
     end
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     # 待機メンバーウィンドウをアクティブにする
     @pt_member.active = false
     @wait_member.active = true
     @wait_member.index = 0
     @pt_help.type_change
     return
      end
      # X ボタンが押された場合
      if Input.trigger?(Input::X)
     # カーソル位置が空白 ( メンバーの最大値と同じ ) の時ブザーを鳴らす
     if @pt_member.index == $game_party.actors.size
       # ブザー SE を演奏
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     # ステータスウィンドウを表示する
     @status = Window_Status.new( $game_party.actors[@pt_member.index] )
     @status.z += 50
     return
      end
      # Y ボタンが押された場合
      if Input.trigger?(Input::Y)
     # 選択アクターが固定の場合ブザーを鳴らす
     if @pt_member.index != $game_party.actors.size
       if $game_party.actors[@pt_member.index].fixed_member == 1
    	 $game_system.se_play($data_system.buzzer_se)
    	 return
       end
     end
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     $game_party.wait_actor( $game_party.actors[@pt_member.index].id )
     # メンバーウィンドウと待機ウィンドウを再描写
     @pt_member.refresh
     @wait_member.refresh
     return
      end
    end
    #--------------------------------------------------------------------------
    # ● フレーム更新 (待機メンバーウィンドウがアクティブの場合)
    #--------------------------------------------------------------------------
    def update_member
      # B ボタンが押された場合
      if Input.trigger?(Input::B)
     # キャンセル SE を演奏
     $game_system.se_play($data_system.cancel_se)
     # メンバーウィンドウをアクティブにする
     @pt_member.active = true
     @wait_member.active = false
     @wait_member.index = -1
     @pt_help.type_change
     return
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     # 待機メンバーウィンドウで選択されている アクターID を習得
     actor_id = $game_actors[$game_party.member[@wait_member.index]].id
     # メンバー選択位置が空白の場合は、普通に加える
     if @pt_member.index == $game_party.actors.size
       $game_party.add_actor( actor_id )
       # メンバーウィンドウと待機ウィンドウを再描写
       @pt_member.refresh
       @wait_member.refresh
       # メンバーウィンドウをアクティブにする
       @pt_member.active = true
       @wait_member.active = false
       @wait_member.index = -1
       @pt_help.type_change
       return
     end
     # 既に選択されたメンバーがいる場合 そのキャラと交換
     if $game_party.actors.include?( $game_actors[actor_id] )
       a = $game_party.actors.index( $game_actors[actor_id] )
       b = $game_party.actors[@pt_member.index].id
       $game_party.change_actor( b, a)
     end
     # メンバー変更
     $game_party.change_actor( actor_id, @pt_member.index )
     # メンバーウィンドウと待機ウィンドウを再描写
     @pt_member.refresh
     @wait_member.refresh
     # メンバーウィンドウをアクティブにする
     @pt_member.active = true
     @wait_member.active = false
     @wait_member.index = -1
     @pt_help.type_change
     return
      end
      # X ボタンが押された場合
      if Input.trigger?(Input::X)
     # 決定 SE を演奏
     $game_system.se_play($data_system.decision_se)
     # ステータスウィンドウを表示する
     @status = Window_Status.new( $game_actors[$game_party.member[@wait_member.index]] )
     @status.z += 50
     return
      end
      # Y ボタンが押された場合
      if Input.trigger?(Input::Y)
     # アクターをセット
     actor = $game_actors[$game_party.member[@wait_member.index]]
     # 装備固定の場合
     if actor.equip_fix?(4)
       # ブザー SE を演奏
       $game_system.se_play($data_system.buzzer_se)
       return
     end
     # 装備 SE を演奏
     $game_system.se_play($data_system.equip_se)
     # 装飾品を外す
     actor.equip( 4, 0)
     return
      end	
    end
    end
    #Final Fantasy VII menu setup by AcedentProne
    #*********************************************************
    #To use:
    #Create a new folder in the Characters folder, and call it Faces
    #Adding faces: add a 80x80 picture with the same name as the characterset it
    #corrosponds with in the Faces folder
    #If text does not appear, right click and select Replace
    #Put $defaultfonttype in the Search String box
    #Put $fontface in the Replacement String box
    #Hit replace all.
    #Put $defaultfontsize in the Search String box
    #Put $fontsize in the Replacement String box
    #Hit replace all.
    #
    #If you do not want Faces, go to line 102
    #and change delete the # of draw_actor_graphic
    #and put a # infront of draw_actor_face
    # NB TIO:Questo script non l'ho fatto io, ho solamente preso il menu stile FF7, la schermata
    # per cambiare personaggio e ho messo l'opzione nel menu, niente di più.
    # Se ci sono problemi visitate www.rpgshrine.altervista.org
    
    
    #========================================
    #■ Window_Base
    #--------------------------------------------------------------------------
    # Setting functions for the "Base"
    #========================================
    
    class Window_Base < Window
    
    def draw_actor_face(actor, x, y)
    face = RPG::Cache.character("Faces/" + actor.character_name, actor.character_hue)
    fw = face.width
    fh = face.height
    src_rect = Rect.new(0, 0, fw, fh)
    self.contents.blt(x - fw / 23, y - fh, face, src_rect)
    end
    end
    def draw_actor_battler_graphic(actor, x, y)
    bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
    cw = bitmap.width
    ch = bitmap.height
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
    end
    
    #========================================
    #■ Game_Map
    #--------------------------------------------------------------------------
    # Setting functions for the Map
    #========================================
    class Game_Map
    
    def name
    $map_infos[@map_id]
    end
    end
    
    #========================================
    #■ Window_Title
    #--------------------------------------------------------------------------
    # Setting functions for the Title
    #========================================
    class Scene_Title
    $map_infos = load_data("Data/MapInfos.rxdata")
    for key in $map_infos.keys
    $map_infos[key] = $map_infos[key].name
    end
    end
    
    
    
    
    #========================================================
    # ■ Window_MenuStatus
    #------------------------------------------------------------------------
    # Sets up the Choosing.
    #========================================================
    
    class Window_MenuStatus < Window_Selectable
    #--------------------------------------------------------------------------
    # Set up
    #--------------------------------------------------------------------------
    def initialize
    super(0, 0, 560, 454)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Arial"
    self.contents.font.size = 24
    refresh
    self.active = false
    self.index = -1
    end
    #--------------------------------------------------------------------------
    # Drawing Info on Screen
    #--------------------------------------------------------------------------
    def refresh
    self.contents.clear
    @item_max = $game_party.actors.size
    for i in 0...$game_party.actors.size
    x = 94
    y = i * 110
    actor = $game_party.actors[i]
    draw_actor_face(actor, 12, y + 90) #To get rid of the Face, put a "#" before the draw_ of this line
    #draw_actor_graphic(actor, 48, y + 65) #and delete the "#" infront of draw of this line
    draw_actor_name(actor, x, y)
    draw_actor_class(actor, x + 80, y)
    draw_actor_level(actor, x, y + 18)
    draw_actor_state(actor, x + 200, y)
    draw_actor_exp(actor, x+ 144, y + 38)
    draw_actor_hp(actor, x, y + 38)
    draw_actor_sp(actor, x, y + 58)
    end
    end
    #--------------------------------------------------------------------------
    # Update of Cursor
    #--------------------------------------------------------------------------
    def update_cursor_rect
    if @index < 0
    self.cursor_rect.empty
    else
    self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
    end
    end
    end
    
    #=======================================#
    # ■Window_GameStats #
    # written by AcedentProne #
    #-----------------------------------------------------------------------#
    
    class Window_GameStats < Window_Base
    def initialize
    super(0, 0, 160, 80)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Arial"
    self.contents.font.size = 22
    refresh
    end
    
    def refresh
    self.contents.clear
    self.contents.font.color = system_color
    # Draw "Time"
    @total_sec = Graphics.frame_count / Graphics.frame_rate
    hour = @total_sec / 60 / 60
    min = @total_sec / 60 % 60
    sec = @total_sec % 60
    text = sprintf("%02d:%02d:%02d", hour, min, sec)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 6, 120, 32, text, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(4, -10, 120, 32, "Tempo di gioco")
    #Drawing Gold
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 22, 120, 32,$game_party.gold.to_s + " " +$data_system.words.gold, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(4, 22, 120, 32, $data_system.words.gold, 2)
    end
    #--------------------------------------------------------------------------
    # Update of The count
    
    
    
    
    #--------------------------------------------------------------------------
    def update
    super
    if Graphics.frame_count / Graphics.frame_rate != @total_sec
    refresh
    end
    end
    end
    
    #========================================================
    # ■ Window_Mapname
    #------------------------------------------------------------------------
    #  Draws the Map name
    #========================================================
    
    class Window_Mapname < Window_Base
    #--------------------------------------------------------------------------
    # Set up
    #--------------------------------------------------------------------------
    def initialize
    super(0, 0, 320, 60)
    self.contents = Bitmap.new(width - 52, height - 32)
    self.contents.font.name = "Arial"
    self.contents.font.size = 24
    refresh
    end
    #--------------------------------------------------------------------------
    # Draws info on screen
    #--------------------------------------------------------------------------
    def refresh
    self.contents.clear
    
    # Map Name
    #map = $game_map.name
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 220, 32, "Luogo")
    self.contents.font.color = normal_color
    self.contents.draw_text(175, 0, 80, 32, $game_map.name)
    end
    end
    
    #========================================================
    # ■ Scene_Menu
    #------------------------------------------------------------------------
    # FF7 menu laytout as requested by AcedentProne.
    #========================================================
    
    class Scene_Menu
    #--------------------------- edit-------------------------------
    attr_reader :status_window
    #/--------------------------- edit-------------------------------
    
    def initialize(menu_index = 0)
    @menu_index = menu_index
    end
    
    def main
    s1 = $data_system.words.item
    s2 = $data_system.words.skill
    s3 = $data_system.words.equip
    s4 = "Status"
    s5 = "PHS" #Da qui potete cambiare il nome dell'opzione per cambiare gruppo
    s6 = "Salva"
    s7 = "Esci"
    #--------------------------- edit-------------------------------
    # Command menu
    # Size = Screen height - border sizes -
    # GameStatus menu - Spacing from GameStatus
    @command_window = Window_Command.new(160, [s1, s2, s3, s4, s5, s6, s7])
    @command_window.x = 640 - @command_window.width
    @command_window.y = 0
    @command_window.z = 110
    @command_window.index = @menu_index
    if $game_party.actors.size == 0
    @command_window.disable_item(0)
    @command_window.disable_item(1)
    @command_window.disable_item(2)
    @command_window.disable_item(3)
    end
    if $game_system.save_disabled
    @command_window.disable_item(4)
    @command_window.disable_item(5)
    end
    @map = Window_Mapname.new
    @map.x = 640 - @map.width
    @map.y = 480 - @map.height - 1
    @map.z = 110
    
    
    # Lower right box
    @game_stats_window = Window_GameStats.new
    @game_stats_window.x = 640 - @game_stats_window.width
    @game_stats_window.y = 640 - @command_window.height - @game_stats_window.height + 3
    @game_stats_window.z =110
    
    
    # Status window
    @status_window = Window_MenuStatus.new
    @status_window.x = 0
    @status_window.y = 8
    @status_window.z = 100
    
    
    
    Graphics.transition
    loop do
    Graphics.update
    Input.update
    update
    if $scene != self
    break
    end
    end
    Graphics.freeze
    @command_window.dispose
    @game_stats_window.dispose
    @status_window.dispose
    @map.dispose
    end
    #--------------------------------------------------------------------
    # Updating
    #--------------------------------------------------------------------
    def update
    @command_window.update
    @game_stats_window.update
    @status_window.update
    @map.update
    if @command_window.active
    update_command
    return
    end
    if @status_window.active
    update_status
    return
    end
    end
    #--------------------------------------------------------------------
    # Updating the Command Selection
    #--------------------------------------------------------------------
    def update_command
    # If B button is pused
    if Input.trigger?(Input::B)
    # Plays assigned SE
    $game_system.se_play($data_system.cancel_se)
    # Go to Map
    $scene = Scene_Map.new
    return
    end
    # If C button is pused
    if Input.trigger?(Input::C)
    # Checks actor size
    if $game_party.actors.size == 0 and @command_window.index < 4
    # plays SE
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    case @command_window.index
    when 0
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Item.new
    when 1
    $game_system.se_play($data_system.decision_se)
    @command_window.active = false
    @status_window.active = true
    @status_window.index = 0
    when 2
    $game_system.se_play($data_system.decision_se)
    @command_window.active = false
    @status_window.active = true
    @status_window.index = 0
    when 3
    $game_system.se_play($data_system.decision_se)
    @command_window.active = false
    @status_window.active = true
    @status_window.index = 0
    when 4
    if $game_system.save_disabled
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_PTchange.new
    when 5
    if $game_system.save_disabled
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Save.new
    when 6
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_End.new
    end
    return
    end
    end
    #--------------------------------------------------------------------
    # Updating Status Screen
    #--------------------------------------------------------------------
    
    def update_status
    if Input.trigger?(Input::B)
    $game_system.se_play($data_system.cancel_se)
    @command_window.active = true
    @status_window.active = false
    @status_window.index = -1
    return
    end
    if Input.trigger?(Input::C)
    case @command_window.index
    when 1
    if $game_party.actors[@status_window.index].restriction >= 2
    $game_system.se_play($data_system.buzzer_se)
    return
    end
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Skill.new(@status_window.index)
    when 2
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Equip.new(@status_window.index)
    when 3
    $game_system.se_play($data_system.decision_se)
    $scene = Scene_Status.new(@status_window.index)
    end
    return
    end
    end
    end

     

    Cancellate le stringhe dove verranno visualizzate queste:

    ==========

     

    Per problemi scrivete in questo topic ;-)

  4. Yrost...c'abbiamo provato a lavorare con quello, ma il risultato non mi convinceva mai purtroppo (comunque il logo compare nn preoccuparti)...

     

    Sfiga ne ha fatto un altro...eccolo...

     

    http://img79.imageshack.us/img79/1459/screen1qc0.th.jpg

     

    pare meglio? oppure nemmenoq eusto piace...mi riferisco sopratutto a mithril

    O_O

     

    ?????????

     

    Perchè hai cambiato il titolo?

    Quello di prima era stupendo...e poi la canzone di sottofondo ci stava da dio....

     

    Sniff,sniff,sniff :chirol_gusun: :chirol_gusun: :chirol_gusun:

×
×
  • Create New...