Ally Posted January 13, 2007 Share Posted January 13, 2007 (edited) Menù FFVII + PHS 1. DescrizioneMenù alla FFVII con l'aggiunta di un add-on,il PHS,una finestra per cambiare i personaggi del party. 2. AutoreJappoTraduction 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 January 13, 2007 by Ally http://rpg2s.net/gif/SCContest3Oct.gif Link to comment Share on other sites More sharing options...
Kudas Posted February 23, 2007 Share Posted February 23, 2007 Mancano le immagini XDD Link to comment Share on other sites More sharing options...
lotgd Posted February 15, 2008 Share Posted February 15, 2008 (edited) 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 February 15, 2008 by lotgd IL MIO NICK è FRISKON Quando mi son registrato, credevo di fare lo spettatore! http://www.making-videogames.net/pubblicita.gifVideogiochi Usati Link to comment Share on other sites More sharing options...
Alato Posted February 15, 2008 Share Posted February 15, 2008 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. ^^ o•°' - '°•oHei, mitä kuuluu? http://imagegen.last.fm/winterheadphones/recenttracks/5/Alato.gif Link to comment Share on other sites More sharing options...
lotgd Posted February 15, 2008 Share Posted February 15, 2008 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! http://www.making-videogames.net/pubblicita.gifVideogiochi Usati Link to comment Share on other sites More sharing options...
Alex_Strass Posted September 23, 2008 Share Posted September 23, 2008 Errore: File Graphics/Characters/Faces/001-Fighter01 was not found Che fare..scusate sono nuovo..del sito e del ramo^^ Link to comment Share on other sites More sharing options...
Eikichi Posted September 23, 2008 Share Posted September 23, 2008 Manca il file 001-Fighter01(.png) nella cartella "Graphics/Characters/Faces/" del tuo progetto. Finrod, GDR PBF2PV e 1PAEquip: - faretra con 20 frecce- arco lungo- pugnale comune- Armatura di cuoio- Torcia- CappuccioMi sa che è ora di vincere qualche premio per rinnovare questa firma! :3Posizioni raggiunte nei contesthttp://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 More sharing options...
Alex_Strass Posted September 24, 2008 Share Posted September 24, 2008 (edited) Manca il file 001-Fighter01(.png) nella cartella "Graphics/Characters/Faces/" del tuo progetto. Ti ringrazio..gentilissimo..ora provo e faccio sapere ^^ ecco fatto...grazie dell'aiuto ora funziona perfettamente^^ Edited September 24, 2008 by Alex_Strass Link to comment Share on other sites More sharing options...
elle92 Posted August 1, 2009 Share Posted August 1, 2009 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 SonataIl 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=14695Sono ben accette critiche(costruttivexD) e consigli di ogni genere!^_^[/spoiler] Link to comment Share on other sites More sharing options...
boko93 Posted August 9, 2011 Share Posted August 9, 2011 Scusate, è possibile fare in modo che nel PHS un personaggio non possa essere sotituito in questo script..? http://img823.imageshack.us/img823/7646/logofzl.jpghttp://www.rpg2s.net/forum/index.php?showtopic=13689 http://img841.imageshack.us/img841/861/simo696eboko93.pnghttp://www.rpg2s.net/forum/index.php?showtopic=13396 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now