Project1
标题:
急啊~~~各位在线的达人请进!!
[打印本页]
作者:
zreo
时间:
2008-4-17 05:26
提示:
作者被禁止或删除 内容自动屏蔽
作者:
zreo
时间:
2008-4-17 05:54
提示:
作者被禁止或删除 内容自动屏蔽
作者:
八云紫
时间:
2008-4-17 06:09
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ パッシブスキル - KGC_PassiveSkill ◆ VX ◆
#_/ ◇ Last update : 2008/02/10 ◇
#_/----------------------------------------------------------------------------
#_/ 習得するだけで能力値上昇効果を発揮するスキルを作成します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
$imported = {} if $imported == nil
$imported["PassiveSkill"] = true
module KGC
module PassiveSkill
# パッシブスキル用パラメータリスト
PARAMS = {
:maxhp => "MAXHP|最大HP",
:maxmp => "MAXMP|最大MP",
:atk => "ATK|攻撃力",
:def => "DEF|防御力",
:spi => "SPI|精神力",
:agi => "AGI|敏捷性",
:hit => "HIT|命中率",
:eva => "EVA|回避率",
:cri => "CRI|クリティカル率",
:odds => "ODDS|狙われやすさ",
}
# パッシブスキル用属性・ステートリスト
ARRAYS = {
:attack_element => "ATTACK_ELEMENT|攻撃属性",
:plus_state => "PLUS_STATE|付加ステート",
:invalid_state => "INVALID_STATE|無効化ステート",
}
# 正規表現
module Regexp
# スキル
module Skill
# パッシブスキル開始
BEGIN_PASSIVE = /<(?:PASSIVE_SKILL|パッシブスキル)>/i
# パッシブスキル終了
END_PASSIVE = /<\/(?:PASSIVE_SKILL|パッシブスキル)>/i
# パラメータ修正
# MAXHP +20 など
PASSIVE_PARAMS = /^\s*([^:\+\-\d\s]+)\s*([\+\-]\d+)([%%])?/
# 属性・ステートリスト
# 攻撃属性 1,2,3 など
PASSIVE_ARRAYS = /^\s*([^:\+\-\d\s]+)\s*(\d+(?:\s*,\s*\d+)*)/
end
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ KGC::Commands
#==============================================================================
module KGC::Commands
module_function
#--------------------------------------------------------------------------
# ○ パッシブスキルの修正値を再設定
#--------------------------------------------------------------------------
def restore_passive_rev
(1...$data_actors.size).each { |i|
actor = $game_actors[i]
actor.restore_passive_rev
}
end
end
class Game_Interpreter
include KGC::Commands
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Skill
#==============================================================================
class RPG::Skill < RPG::UsableItem
#--------------------------------------------------------------------------
# ○ パッシブスキルのキャッシュを生成
#--------------------------------------------------------------------------
def create_passive_skill_cache
@__passive = false
@__passive_params = {}
@__passive_params_rate = {}
@__passive_arrays = {}
passive_flag = false
self.note.split(/[\r\n]+/).each { |line|
case line
when KGC::PassiveSkill::Regexp::Skill::BEGIN_PASSIVE
# パッシブスキル定義開始
passive_flag = true
@__passive = true
when KGC::PassiveSkill::Regexp::Skill::END_PASSIVE
# パッシブスキル定義終了
passive_flag = false
when KGC::PassiveSkill::Regexp::Skill::PASSIVE_PARAMS
# 能力値修正
if passive_flag
apply_passive_params($1, $2.to_i, $3 != nil)
end
when KGC::PassiveSkill::Regexp::Skill::PASSIVE_ARRAYS
# 属性・ステート
if passive_flag
apply_passive_arrays($1, $2.scan(/\d+/))
end
end
}
end
#--------------------------------------------------------------------------
# ○ パッシブスキルの能力値修正を適用
# param : 対象パラメータ
# value : 修正値
# rate : true なら % 指定
#--------------------------------------------------------------------------
def apply_passive_params(param, value, rate)
KGC::PassiveSkill::PARAMS.each { |k, v|
if param =~ /(?:#{v})/i
if rate
@__passive_params_rate[k] = 0 if @__passive_params_rate[k] == nil
@__passive_params_rate[k] += value
else
@__passive_params[k] = 0 if @__passive_params[k] == nil
@__passive_params[k] += value
end
break
end
}
end
#--------------------------------------------------------------------------
# ○ パッシブスキルの追加属性・ステートを適用
# param : 対象パラメータ
# list : 属性・ステート一覧
#--------------------------------------------------------------------------
def apply_passive_arrays(param, list)
KGC::PassiveSkill::ARRAYS.each { |k, v|
if param =~ /(?:#{v})/i
values = []
list.each { |num| values << num.to_i }
@__passive_arrays[k] = [] if @__passive_arrays[k] == nil
@__passive_arrays[k] |= values
break
end
}
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_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● セットアップ
# actor_id : アクター ID
#--------------------------------------------------------------------------
alias setup_KGC_PassiveSkill setup
def setup(actor_id)
setup_KGC_PassiveSkill(actor_id)
restore_passive_rev
end
#--------------------------------------------------------------------------
# ○ パッシブスキルの修正値を再設定
#--------------------------------------------------------------------------
def restore_passive_rev
# 初期化
@passive_params = {}
@passive_params_rate = {}
@passive_arrays = {}
KGC::PassiveSkill::PARAMS.each_key { |k|
@passive_params[k] = 0
@passive_params_rate[k] = 100
}
KGC::PassiveSkill::ARRAYS.each_key { |k| @passive_arrays[k] = [] }
# ≪スキルCP制≫ の併用を考慮し、戦闘中フラグを一時的にオン
last_in_battle = $game_temp.in_battle
$game_temp.in_battle = true
# 修正値を取得
self.skills.each { |skill|
next unless skill.passive
skill.passive_params.each { |k, v| @passive_params[k] += v }
skill.passive_params_rate.each { |k, v| @passive_params_rate[k] += v }
skill.passive_arrays.each { |k, v| @passive_arrays[k] |= v }
}
$game_temp.in_battle = last_in_battle
# HP/MP を修正
self.hp = self.hp
self.mp = self.mp
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
#--------------------------------------------------------------------------
# ● 装備の変更 (オブジェクトで指定)
# equip_type : 装備部位 (0..4)
# item : 武器 or 防具 (nil なら装備解除)
# test : テストフラグ (戦闘テスト、または装備画面での一時装備)
#--------------------------------------------------------------------------
alias change_equip_KGC_PassiveSkill change_equip
def change_equip(equip_type, item, test = false)
change_equip_KGC_PassiveSkill(equip_type, item, test)
restore_passive_rev unless test
end
#--------------------------------------------------------------------------
# ● 装備の破棄
# item : 破棄する武器 or 防具
# 武器/防具の増減で「装備品も含める」のとき使用する。
#--------------------------------------------------------------------------
alias discard_equip_KGC_PassiveSkill discard_equip
def discard_equip(item)
discard_equip_KGC_PassiveSkill(item)
restore_passive_rev
end
#--------------------------------------------------------------------------
# ● ステート無効化判定
# state_id : ステート ID
#--------------------------------------------------------------------------
alias state_resist_KGC_PassiveSkill? state_resist?
def state_resist?(state_id)
return true if passive_arrays[:invalid_state].include?(state_id)
return state_resist_KGC_PassiveSkill?(state_id)
end
#--------------------------------------------------------------------------
# ● 通常攻撃の属性取得
#--------------------------------------------------------------------------
alias element_set_KGC_PassiveSkill element_set
def element_set
return (element_set_KGC_PassiveSkill | passive_arrays[:attack_element])
end
#--------------------------------------------------------------------------
# ● 通常攻撃の追加効果 (ステート変化) 取得
#--------------------------------------------------------------------------
alias plus_state_set_KGC_PassiveSkill plus_state_set
def plus_state_set
return (plus_state_set_KGC_PassiveSkill | passive_arrays[:plus_state])
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
#--------------------------------------------------------------------------
# ● 基本 MaxMP の取得
#--------------------------------------------------------------------------
alias base_maxmp_KGC_PassiveSkill base_maxmp
def base_maxmp
n = base_maxmp_KGC_PassiveSkill + passive_params[:maxmp]
n = n * passive_params_rate[:maxmp] / 100
return n
end
#--------------------------------------------------------------------------
# ● 基本攻撃力の取得
#--------------------------------------------------------------------------
alias base_atk_KGC_PassiveSkill base_atk
def base_atk
n = base_atk_KGC_PassiveSkill + passive_params[:atk]
n = n * passive_params_rate[:atk] / 100
return n
end
#--------------------------------------------------------------------------
# ● 基本防御力の取得
#--------------------------------------------------------------------------
alias base_def_KGC_PassiveSkill base_def
def base_def
n = base_def_KGC_PassiveSkill + passive_params[:def]
n = n * passive_params_rate[:def] / 100
return n
end
#--------------------------------------------------------------------------
# ● 基本精神力の取得
#--------------------------------------------------------------------------
alias base_spi_KGC_PassiveSkill base_spi
def base_spi
n = base_spi_KGC_PassiveSkill + passive_params[:spi]
n = n * passive_params_rate[:spi] / 100
return n
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
return n
end
#--------------------------------------------------------------------------
# ● 命中率の取得
#--------------------------------------------------------------------------
alias hit_KGC_PassiveSkill hit
def hit
n = hit_KGC_PassiveSkill + passive_params[:hit]
n = n * passive_params_rate[:hit] / 100
return n
end
#--------------------------------------------------------------------------
# ● 回避率の取得
#--------------------------------------------------------------------------
alias eva_KGC_PassiveSkill eva
def eva
n = eva_KGC_PassiveSkill + passive_params[:eva]
n = n * passive_params_rate[:eva] / 100
return n
end
#--------------------------------------------------------------------------
# ● クリティカル率の取得
#--------------------------------------------------------------------------
alias cri_KGC_PassiveSkill cri
def cri
n = cri_KGC_PassiveSkill + passive_params[:cri]
n = n * passive_params_rate[:cri] / 100
return n
end
#--------------------------------------------------------------------------
# ● 狙われやすさの取得
#--------------------------------------------------------------------------
alias odds_KGC_PassiveSkill odds
def odds
n = odds_KGC_PassiveSkill + passive_params[:odds]
n = n * passive_params_rate[:odds] / 100
return n
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
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ● セーブデータの読み込み
# file : 読み込み用ファイルオブジェクト (オープン済み)
#--------------------------------------------------------------------------
alias read_save_data_KGC_PassiveSkill read_save_data
def read_save_data(file)
read_save_data_KGC_PassiveSkill(file)
KGC::Commands.restore_passive_rev
Graphics.frame_reset
end
end
复制代码
是这个么?
作者:
zreo
时间:
2008-4-17 06:19
提示:
作者被禁止或删除 内容自动屏蔽
作者:
zreo
时间:
2008-4-17 06:21
提示:
作者被禁止或删除 内容自动屏蔽
作者:
zreo
时间:
2008-4-17 06:24
提示:
作者被禁止或删除 内容自动屏蔽
作者:
雪流星
时间:
2008-4-17 06:28
至顶帖里面应该有连结吧
你有没有去看?
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1