赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 5 |
经验 | 0 |
最后登录 | 2018-10-28 |
在线时间 | 43 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 504
- 在线时间
- 43 小时
- 注册时间
- 2018-2-19
- 帖子
- 66
|
4楼
楼主 |
发表于 2018-10-4 12:59:33
|
只看该作者
本帖最后由 黑白无双 于 2018-10-4 13:26 编辑
感谢899444640和soulsaga前辈。
89444640前辈您说的对,我就是素材问题所以想要增加游戏性。
被动技能之前在下使用事件,但是结果……。
至于自己写脚本由于冲突太多在下已放弃了,改成找脚本。
soulsaga前辈谢谢您提供了脚本。但不过在下脸皮厚一点不知这个脚本怎么使用。
他说将【被动技能】属性附加到【技能】这点在下懂,问题他说的【被动技能】原文是【パッシブスキル】。
在下使用翻译。所以他的被动技能是要放【原文日本】还是【华文】 。
还有这本脚本里面的都是日本所以我有点不懂 。不知您可以指点一下吗 ?
- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- #_/ ◆ パッシブスキル - KGC_PassiveSkill ◆
- #_/ ◇ Last update : 2008/08/10 ◇
- #_/----------------------------------------------------------------------------
- #_/ 習得するだけで能力値上昇効果を発揮するスキルを作成します。
- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- #==============================================================================
- # ★ カスタマイズ項目 ★
- #==============================================================================
- module KGC
- # ◆ 数値影響度
- # 値が大きいほどスキルの設定値の影響が大きくなる。
- # 100 でちょうど [設定値%] 分の上昇量。
- # (回避修正のみ PS_INF の影響を受けず、設定値がそのまま補正値になる)
- PS_INF = 100
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- $imported = {} if $imported == nil
- $imported["PassiveSkill"] = true
- if $game_special_elements == nil
- $game_special_elements = {}
- $data_system = load_data("Data/System.rxdata")
- end
- # パッシブスキル (即値) 属性
- $game_special_elements["passive_skill_im"] =
- $data_system.elements.index("パッシブスキル即値")
- # パッシブスキル (割合) 属性
- $game_special_elements["passive_skill_rate"] =
- $data_system.elements.index("パッシブスキル")
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Module KGC::PassiveSkill
- #==============================================================================
- module KGC
- module PassiveSkill
- # 補正値リスト
- PARAMS = [
- :maxhp, :maxsp, :atk, :pdef, :mdef,
- :str, :dex, :agi, :int, :eva, :hit
- ]
- ARRAYS = [
- :attack_element, :auto_state, :guard_state
- ]
- module_function
- #--------------------------------------------------------------------------
- # ○ 補正値を修正
- #--------------------------------------------------------------------------
- def restore_passive_rev
- (1...$data_actors.size).each { |i|
- actor = $game_actors[i]
- actor.restore_passive_rev if actor != nil
- }
- end
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ RPG::Skill
- #==============================================================================
- class RPG::Skill
- #--------------------------------------------------------------------------
- # ○ パッシブスキルのキャッシュを生成
- #--------------------------------------------------------------------------
- def create_passive_skill_cache
- @__passive_params = {}
- @__passive_arrays = {}
- @__passive_params_rate = {}
- passive_im =
- element_set.include?($game_special_elements["passive_skill_im"])
- passive_rate =
- element_set.include?($game_special_elements["passive_skill_rate"])
- @__passive = passive_im || passive_rate
- # 補正値初期化
- KGC::PassiveSkill::PARAMS.each { |param|
- @__passive_params[param] = 0
- @__passive_params_rate[param] = 0
- }
- if passive_rate
- # 割合指定
- @__passive_params_rate[:maxhp] = power * KGC::PS_INF / 100
- @__passive_params_rate[:maxsp] = variance * KGC::PS_INF / 100
- @__passive_params_rate[:atk] = atk_f * KGC::PS_INF / 100
- @__passive_params_rate[:pdef] = pdef_f * KGC::PS_INF / 100
- @__passive_params_rate[:mdef] = mdef_f * KGC::PS_INF / 100
- @__passive_params_rate[:str] = str_f * KGC::PS_INF / 100
- @__passive_params_rate[:dex] = dex_f * KGC::PS_INF / 100
- @__passive_params_rate[:agi] = agi_f * KGC::PS_INF / 100
- @__passive_params_rate[:int] = int_f * KGC::PS_INF / 100
- @__passive_params_rate[:hit] = hit * KGC::PS_INF / 100
- @__passive_params_rate[:eva] = eva_f
- elsif passive_im
- # 即値指定
- @__passive_params[:maxhp] = power * KGC::PS_INF / 100
- @__passive_params[:maxsp] = variance * KGC::PS_INF / 100
- @__passive_params[:atk] = atk_f * KGC::PS_INF / 100
- @__passive_params[:pdef] = pdef_f * KGC::PS_INF / 100
- @__passive_params[:mdef] = mdef_f * KGC::PS_INF / 100
- @__passive_params[:str] = str_f * KGC::PS_INF / 100
- @__passive_params[:dex] = dex_f * KGC::PS_INF / 100
- @__passive_params[:agi] = agi_f * KGC::PS_INF / 100
- @__passive_params[:int] = int_f * KGC::PS_INF / 100
- @__passive_params[:hit] = hit * KGC::PS_INF / 100
- @__passive_params[:eva] = eva_f
- end
- @__passive_arrays[:auto_state] = plus_state_set
- @__passive_arrays[:guard_state] = minus_state_set
- @__passive_arrays[:attack_element] = element_set
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルであるか
- #--------------------------------------------------------------------------
- def passive?
- create_passive_skill_cache if @__passive == nil
- return @__passive
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルのパラメータ補正値 (即値)
- #--------------------------------------------------------------------------
- def passive_params
- create_passive_skill_cache if @__passive_params == nil
- return @__passive_params
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルのパラメータ補正値 (割合)
- #--------------------------------------------------------------------------
- def passive_params_rate
- create_passive_skill_cache if @__passive_params_rate == nil
- return @__passive_params_rate
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルの属性・ステート
- #--------------------------------------------------------------------------
- def passive_arrays
- create_passive_skill_cache if @__passive_arrays == nil
- return @__passive_arrays
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Game_Battler
- #==============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # ● 命中率の取得
- #--------------------------------------------------------------------------
- alias hit_KGC_PassiveSkill hit
- def hit
- n = hit_KGC_PassiveSkill + passive_hit_rev
- n = n * passive_hit_rate_rev / 100
- return n
- end
- #--------------------------------------------------------------------------
- # ● 攻撃力の取得
- #--------------------------------------------------------------------------
- alias atk_KGC_PassiveSkill atk
- def atk
- n = atk_KGC_PassiveSkill + passive_atk_rev
- n = n * passive_atk_rate_rev / 100
- return n
- end
- #--------------------------------------------------------------------------
- # ● 物理防御の取得
- #--------------------------------------------------------------------------
- alias pdef_KGC_PassiveSkill pdef
- def pdef
- n = pdef_KGC_PassiveSkill + passive_pdef_rev
- n = n * passive_pdef_rate_rev / 100
- return n
- end
- #--------------------------------------------------------------------------
- # ● 魔法防御の取得
- #--------------------------------------------------------------------------
- alias mdef_KGC_PassiveSkill mdef
- def mdef
- n = mdef_KGC_PassiveSkill + passive_mdef_rev
- n = n * passive_mdef_rate_rev / 100
- return n
- end
- #--------------------------------------------------------------------------
- # ● 回避修正の取得
- #--------------------------------------------------------------------------
- alias eva_KGC_PassiveSkill eva
- def eva
- return eva_KGC_PassiveSkill + passive_eva_rev
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる命中率補正 (即値) の取得
- #--------------------------------------------------------------------------
- def passive_hit_rev
- return 0
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる命中率補正 (割合) の取得
- #--------------------------------------------------------------------------
- def passive_hit_rate_rev
- return 100
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる攻撃力補正 (即値) の取得
- #--------------------------------------------------------------------------
- def passive_atk_rev
- return 0
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる攻撃力補正 (割合) の取得
- #--------------------------------------------------------------------------
- def passive_atk_rate_rev
- return 100
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる物理防御補正 (即値) の取得
- #--------------------------------------------------------------------------
- def passive_pdef_rev
- return 0
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる物理防御補正 (割合) の取得
- #--------------------------------------------------------------------------
- def passive_pdef_rate_rev
- return 100
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる魔法防御補正 (即値) の取得
- #--------------------------------------------------------------------------
- def passive_mdef_rev
- return 0
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる魔法防御補正 (割合) の取得
- #--------------------------------------------------------------------------
- def passive_mdef_rate_rev
- return 100
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる回避補正の取得
- #--------------------------------------------------------------------------
- def passive_eva_rev
- return 0
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Game_Actor
- #==============================================================================
- class Game_Actor < Game_Battler
- #--------------------------------------------------------------------------
- # ● セットアップ
- #--------------------------------------------------------------------------
- alias setup_KGC_PassiveSkill setup
- def setup(actor_id)
- setup_KGC_PassiveSkill(actor_id)
- restore_passive_rev
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルのパラメータ補正値の取得
- #--------------------------------------------------------------------------
- def passive_params
- restore_passive_rev if @passive_params == nil
- return @passive_params
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルのパラメータ補正値 (割合) の取得
- #--------------------------------------------------------------------------
- def passive_params_rate
- restore_passive_rev if @passive_params_rate == nil
- return @passive_params_rate
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルの属性・ステートの取得
- #--------------------------------------------------------------------------
- def passive_arrays
- restore_passive_rev if @passive_arrays == nil
- return @passive_arrays
- end
- #--------------------------------------------------------------------------
- # ● 基本 MaxHP の取得
- #--------------------------------------------------------------------------
- alias base_maxhp_KGC_PassiveSkill base_maxhp
- def base_maxhp
- n = base_maxhp_KGC_PassiveSkill + passive_params[:maxhp]
- n = n * passive_params_rate[:maxhp] / 100
- return n
- end
- #--------------------------------------------------------------------------
- # ● 基本 MaxSP の取得
- #--------------------------------------------------------------------------
- alias base_maxsp_KGC_PassiveSkill base_maxsp
- def base_maxsp
- n = base_maxsp_KGC_PassiveSkill + passive_params[:maxsp]
- n = n * passive_params_rate[:maxsp] / 100
- return n
- end
- #--------------------------------------------------------------------------
- # ● 基本腕力の取得
- #--------------------------------------------------------------------------
- alias base_str_KGC_PassiveSkill base_str
- def base_str
- n = base_str_KGC_PassiveSkill + passive_params[:str]
- n = n * passive_params_rate[:str] / 100
- # 限界値処理
- limit = ($imported["LimitBreak"] ? parameter_limit : 999)
- return [[n, 1].max, limit].min
- end
- #--------------------------------------------------------------------------
- # ● 基本器用さの取得
- #--------------------------------------------------------------------------
- alias base_dex_KGC_PassiveSkill base_dex
- def base_dex
- n = base_dex_KGC_PassiveSkill + passive_params[:dex]
- n = n * passive_params_rate[:dex] / 100
- # 限界値処理
- limit = ($imported["LimitBreak"] ? parameter_limit : 999)
- return [[n, 1].max, limit].min
- end
- #--------------------------------------------------------------------------
- # ● 基本素早さの取得
- #--------------------------------------------------------------------------
- alias base_agi_KGC_PassiveSkill base_agi
- def base_agi
- n = base_agi_KGC_PassiveSkill + passive_params[:agi]
- n = n * passive_params_rate[:agi] / 100
- # 限界値処理
- limit = ($imported["LimitBreak"] ? parameter_limit : 999)
- return [[n, 1].max, limit].min
- end
- #--------------------------------------------------------------------------
- # ● 基本魔力の取得
- #--------------------------------------------------------------------------
- alias base_int_KGC_PassiveSkill base_int
- def base_int
- n = base_int_KGC_PassiveSkill + passive_params[:int]
- n = n * passive_params_rate[:int] / 100
- # 限界値処理
- limit = ($imported["LimitBreak"] ? parameter_limit : 999)
- return [[n, 1].max, limit].min
- end
- #--------------------------------------------------------------------------
- # ● スキルを覚える
- # skill_id : スキル ID
- #--------------------------------------------------------------------------
- alias learn_skill_KGC_PassiveSkill learn_skill
- def learn_skill(skill_id)
- learn_skill_KGC_PassiveSkill(skill_id)
- restore_passive_rev
- end
- #--------------------------------------------------------------------------
- # ● スキルを忘れる
- # skill_id : スキル ID
- #--------------------------------------------------------------------------
- alias forget_skill_KGC_PassiveSkill forget_skill
- def forget_skill(skill_id)
- forget_skill_KGC_PassiveSkill(skill_id)
- restore_passive_rev
- end
- #--------------------------------------------------------------------------
- # ● 通常攻撃の属性取得
- #--------------------------------------------------------------------------
- alias element_set_KGC_PassiveSkill element_set
- def element_set
- return (element_set_KGC_PassiveSkill | passive_arrays[:attack_element])
- end
- #--------------------------------------------------------------------------
- # ● ステート防御判定
- # state_id : ステート ID
- #--------------------------------------------------------------------------
- alias state_guard_KGC_PassiveSkill? state_guard?
- def state_guard?(state_id)
- return true if passive_arrays[:guard_state].include?(state_id)
- return state_guard_KGC_PassiveSkill?(state_id)
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる命中率補正 (即値) の取得
- #--------------------------------------------------------------------------
- def passive_hit_rev
- return passive_params[:hit]
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる命中率補正 (割合) の取得
- #--------------------------------------------------------------------------
- def passive_hit_rate_rev
- return passive_params_rate[:hit]
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる攻撃力補正 (即値) の取得
- #--------------------------------------------------------------------------
- def passive_atk_rev
- return passive_params[:atk]
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる攻撃力補正 (割合) の取得
- #--------------------------------------------------------------------------
- def passive_atk_rate_rev
- return passive_params_rate[:atk]
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる物理防御補正 (即値) の取得
- #--------------------------------------------------------------------------
- def passive_pdef_rev
- return passive_params[:pdef]
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる物理防御補正 (割合) の取得
- #--------------------------------------------------------------------------
- def passive_pdef_rate_rev
- return passive_params_rate[:pdef]
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる魔法防御補正 (即値) の取得
- #--------------------------------------------------------------------------
- def passive_mdef_rev
- return passive_params[:mdef]
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる魔法防御補正 (割合) の取得
- #--------------------------------------------------------------------------
- def passive_mdef_rate_rev
- return passive_params_rate[:mdef]
- end
- #--------------------------------------------------------------------------
- # ○ パッシブスキルによる回避補正の取得
- #--------------------------------------------------------------------------
- def passive_eva_rev
- return passive_params[:eva]
- end
- #--------------------------------------------------------------------------
- # ○ 補正値を修正
- #--------------------------------------------------------------------------
- def restore_passive_rev
- # 強制付加したステートを解除
- remove_state_list = []
- if @add_passive_states != nil
- remove_state_list |= @add_passive_states
- end
- if @passive_arrays != nil
- remove_state_list |= @passive_arrays[:auto_state]
- end
- remove_state_list.each { |i| self.remove_state(i, true) }
- # 初期化
- @passive_params = {}
- @passive_arrays = {}
- @passive_params_rate = {}
- KGC::PassiveSkill::PARAMS.each { |k|
- @passive_params[k] = 0
- @passive_params_rate[k] = 100
- }
- @passive_params_rate[:eva] = 0
- KGC::PassiveSkill::ARRAYS.each { |k| @passive_arrays[k] = [] }
- # ≪スキルCP制≫ の併用を考慮し、戦闘中フラグを一時的にオン
- last_in_battle = $game_temp.in_battle
- $game_temp.in_battle = true
- # 修正値を取得
- self.skills.each { |i|
- skill = $data_skills[i]
- next unless skill.passive?
- KGC::PassiveSkill::PARAMS.each { |k|
- @passive_params[k] += skill.passive_params[k]
- @passive_params_rate[k] += skill.passive_params_rate[k]
- }
- KGC::PassiveSkill::ARRAYS.each { |k|
- @passive_arrays[k] |= skill.passive_arrays[k]
- }
- }
- $game_temp.in_battle = last_in_battle
- # ステートを適用
- @passive_arrays[:guard_state].each { |i| remove_state(i, true) }
- @passive_arrays[:auto_state].each { |i| add_state(i, true) }
- # MaxHP, MaxSP を修正
- self.hp = hp
- self.sp = sp
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ Scene_Load
- #==============================================================================
- class Scene_Load < Scene_File
- #--------------------------------------------------------------------------
- # ● セーブデータの読み込み
- # file : 読み込み用ファイルオブジェクト (オープン済み)
- #--------------------------------------------------------------------------
- alias read_save_data_KGC_PassiveSkill read_save_data
- def read_save_data(file)
- read_save_data_KGC_PassiveSkill(file)
- KGC::PassiveSkill.restore_passive_rev
- end
- end
复制代码
|
|