Jump to content
Rpg²S Forum

*Menù FFVII + PHS


Ally
 Share

Recommended Posts

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 ;-)

Edited by Ally

http://rpg2s.net/gif/SCContest3Oct.gif

 

1985.png

Link to comment
Share on other sites

  • 1 month later...
  • 11 months later...

mi da un errore quando metto lo script ed apro il menu, mi compare " faces/ monster " devo mettere io le immagini ? se si quali ?

 

(senza offesa per nessuno, almeno i mod nella sezione script potete aggiungere qualche info in più in modo che i newbie non facciano troppe domande inutili, non tutti siamo maestri...)

Edited by lotgd

IL MIO NICK è FRISKON Quando mi son registrato, credevo di fare lo spettatore!

 

 

Link to comment
Share on other sites

Senza offesa ma esiste un regolamento, se nessuno lo rispetta è un problema dell'utenza. All'inizio lo facevo rispettare poi venendo ignorato mi son messo a correggere i topic uno per uno, ma dopo che la gente continuava imperterrita a postare alla dog's dick (alla cazzo di cane) ho deciso che forse dovevo lasciare perdere. ^^
Link to comment
Share on other sites

Grazie della risposta, dicevo almeno per gli script messi in evidenza, si poteva far qualcosa ^^ dopo un paio di giorni che sperimento il making sto fondendo... sembrava facile!

IL MIO NICK è FRISKON Quando mi son registrato, credevo di fare lo spettatore!

 

 

Link to comment
Share on other sites

  • 7 months later...
Manca il file 001-Fighter01(.png) nella cartella "Graphics/Characters/Faces/" del tuo progetto.

Finrod, GDR PBF

2PV e 1PAEquip: - faretra con 20 frecce- arco lungo- pugnale comune- Armatura di cuoio- Torcia- Cappuccio

Mi sa che è ora di vincere qualche premio per rinnovare questa firma! :3Posizioni raggiunte nei contest

http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/awards/bestresourCSist3.jpghttp://www.rpg2s.net/awards/mosthelpful2.jpghttp://www.rpg2s.net/awards/mostpresent2.jpg

 

 

 

Link to comment
Share on other sites

  • 10 months later...
bellissimo script*_* avrei sl una domanda è possibili visualizzare nella skermata del PHS i faces dei personaggi al posto dei chara?

Progetti in Corso:
 

[spoiler]

The Devil's Sonata
Il mio primo progetto con l'XP,attualmente in pausa per vari motivi,quindi ne approfitto per riorganizzare le idee visto che ad ogni passo avanti nel progetto,mi accorgo dei vari errori che ci sono^^'

Status:
Storia: 70% ->Tutta scritta nella mia testa dall'inizio alla fine,mancano gli ultimi dettagli e ovviamente come realizzarli.
Mapping: 15% -> Essendo poco pratico lascio la costruzione di Città e Dungeon alla fine per ora mi concentro sulle altre cose,inizierò quando ne avrò bisogno per la storia.
Eventi: 30% -> Per eventi intendo anche i vari dialoghi tra i personaggi principali il 30% è per gli eventi di gioco(ciclio giorno/notte,mostri,skill ecc..)
Quest: 1% -> Per "Quest" si intende tutto ciò che è secondario dalla semplici missioni ai dialoghi con gli NPC...
Script: 70% ->Anche se sto pensando di cambiare Battle Systems per vari problemi ciò farebbe scendere la % a 30-40%
Database: 30% -> Ci sono tutti i PG, e quasi tutti gli oggetti,armi e skill, mancano i nemici e alcuni boss.
Completamento: 30-35% -> Più o meno la base c'è,ma manca ancora molto il tutto è reso più difficile a causa della mia inesperienza con gli script,mapping e incompetenza generalexD l'unica cosa in cui sono bravo è la grafica,anche se quella usata nel gioco non mi piace molto infatti anche quella è da rivedere..



Per Maggiori dettagli vi invito a visitare il topic del progetto:
http://www.rpg2s.net/forum/index.php?showtopic=14695

Sono ben accette critiche(costruttivexD) e consigli di ogni genere!^_^

[/spoiler]
 

Link to comment
Share on other sites

  • 2 years later...
Scusate, è possibile fare in modo che nel PHS un personaggio non possa essere sotituito in questo script..?

http://img823.imageshack.us/img823/7646/logofzl.jpg

http://www.rpg2s.net/forum/index.php?showtopic=13689

 

http://img841.imageshack.us/img841/861/simo696eboko93.png

http://www.rpg2s.net/forum/index.php?showtopic=13396

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...