Project1
标题:
再一个日文脚本求用法...
[打印本页]
作者:
负零
时间:
2010-7-8 00:12
标题:
再一个日文脚本求用法...
在技能备注里填写<攻撃属性継承>...what is that
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ 攻撃属性設定 - KGC_SetAttackElement ◆ VX ◆
#_/ ◇ Last update : 2008/08/28 ◇
#_/----------------------------------------------------------------------------
#_/ キャラクター毎に攻撃属性を設定する機能を追加します。
#_/============================================================================
#_/ 【基本機能】≪素手詳細設定≫ より下に導入してください。
#_/ 【戦闘システム】≪割合ダメージ≫ より下に導入してください。
#_/ 正常に反映されない場合は、導入位置を移動してください。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
$data_system = load_data("Data/System.rvdata") if $data_system == nil
#==============================================================================
# ★ カスタマイズ項目 - Customize ★
#==============================================================================
module KGC
module SetAttackElement
# ◆ アクターの初期状態の攻撃属性
ACTOR_ELEMENT = [] # ←これは消さないように
# この下に
# ACTOR_ELEMENT[アクター ID] = [属性1, 属性2, ...]
# という書式で追加。
# <例> アクター1の攻撃を炎・風属性にする
#~ ACTOR_ELEMENT[1] = [9, 14]
# <例> アクター2の攻撃を雷属性にする
#~ ACTOR_ELEMENT[2] = [11]
# ◆ 継承しない属性
# <攻撃属性継承> で継承しない属性の ID を指定。
# 範囲オブジェクト(1..6 など)または整数の配列 (両方混ざってもOK)。
# 例えば、ID 1~6 と 10 なら [1..6, 10] と書く。
IGNORE_ELEMENTS = []
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil
$imported["SetAttackElement"] = true
module KGC::SetAttackElement
# 正規表現
module Regexp
# スキル
module Skill
# 攻撃属性継承
INHERIT_ATTACK_ELEMENT = /<(?:INHERIT_ATTACK_ELEMENT|攻撃属性継承)>/i
end
# エネミー
module Enemy
# 攻撃属性
ATTACK_ELEMENT = /<(?:ATTACK_ELEMENT|攻撃属性)\s*(\d+(?:\s*,\s*\d+)*)>/i
end
end
#--------------------------------------------------------------------------
# ○ 非継承属性を整数配列に変換
#--------------------------------------------------------------------------
def self.create_ignore_element_list
result = []
IGNORE_ELEMENTS.each { |e|
if e.is_a?(Range)
result |= e.to_a
elsif e.is_a?(Integer)
result |= [e]
end
}
return result.sort
end
# 非継承属性配列
IGNORE_ELEMENT_ID_LIST = create_ignore_element_list
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ KGC::Commands
#==============================================================================
module KGC
module Commands
module_function
#--------------------------------------------------------------------------
# ○ アクターの追加攻撃属性設定
# actor_id : アクター ID
# element_set : 属性配列 (nil で解除)
#--------------------------------------------------------------------------
def set_actor_attack_element(actor_id, element_set = nil)
actor = $game_actors[actor_id]
return if actor == nil
actor.attack_element_set = element_set
end
end
end
class Game_Interpreter
include KGC::Commands
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::UsableItem
#==============================================================================
class RPG::UsableItem < RPG::BaseItem
#--------------------------------------------------------------------------
# ○ 攻撃属性継承
#--------------------------------------------------------------------------
def attack_element_inherit?
return false
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Skill
#==============================================================================
class RPG::Skill < RPG::UsableItem
#--------------------------------------------------------------------------
# ○ 攻撃属性設定のキャッシュ生成
#--------------------------------------------------------------------------
def create_set_attack_element_cache
@__inherit_attack_element = false
self.note.each_line { |line|
case line
when KGC::SetAttackElement::Regexp::Skill::INHERIT_ATTACK_ELEMENT
# 攻撃属性継承
@__inherit_attack_element = true
end
}
end
#--------------------------------------------------------------------------
# ○ 攻撃属性継承
#--------------------------------------------------------------------------
def attack_element_inherit?
create_set_attack_element_cache if @__inherit_attack_element == nil
return @__inherit_attack_element
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Enemy
#==============================================================================
class RPG::Enemy
#--------------------------------------------------------------------------
# ○ 攻撃属性設定のキャッシュ生成
#--------------------------------------------------------------------------
def create_set_attack_element_cache
@__attack_element_set = []
self.note.each_line { |line|
case line
when KGC::SetAttackElement::Regexp::Enemy::ATTACK_ELEMENT
# 攻撃属性
elements = []
$1.scan(/\d+/).each { |num| elements << num.to_i }
@__attack_element_set |= elements
end
}
end
#--------------------------------------------------------------------------
# ○ 攻撃属性
#--------------------------------------------------------------------------
def attack_element_set
create_set_attack_element_cache if @__attack_element_set == nil
return @__attack_element_set
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :attack_element_set # 攻撃属性
#--------------------------------------------------------------------------
# ● 通常攻撃の属性取得
#--------------------------------------------------------------------------
alias element_set_KGC_SetAttackElement element_set
def element_set
return (element_set_KGC_SetAttackElement | attack_element_set)
end
#--------------------------------------------------------------------------
# ○ 攻撃属性取得
#--------------------------------------------------------------------------
def attack_element_set
result = []
result |= @attack_element_set if @attack_element_set.is_a?(Array)
return result
end
#--------------------------------------------------------------------------
# ● スキルまたはアイテムによるダメージ計算
# user : スキルまたはアイテムの使用者
# obj : スキルまたはアイテム
# 結果は @hp_damage または @mp_damage に代入する。
#--------------------------------------------------------------------------
alias make_obj_damage_value_KGC_SetAttackElement make_obj_damage_value
def make_obj_damage_value(user, obj)
# 元の攻撃属性を退避
last_element_set = obj.element_set.clone
# 攻撃属性を継承
obj.element_set = get_inherited_element_set(user, obj)
make_obj_damage_value_KGC_SetAttackElement(user, obj)
# 攻撃属性を戻す
obj.element_set = last_element_set
end
#--------------------------------------------------------------------------
# ○ 継承後の攻撃属性取得
# user : スキルまたはアイテムの使用者
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
def get_inherited_element_set(user, obj)
result = obj.element_set.clone
return result unless obj.attack_element_inherit?
result |= (user.element_set - KGC::SetAttackElement::IGNORE_ELEMENT_ID_LIST)
return result
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 通常攻撃の属性取得
#--------------------------------------------------------------------------
alias element_set_KGC_SetAttackElement element_set
def element_set
return (element_set_KGC_SetAttackElement | attack_element_set)
end
#--------------------------------------------------------------------------
# ○ 追加攻撃属性取得
#--------------------------------------------------------------------------
def attack_element_set
result = super
elements = KGC::SetAttackElement::ACTOR_ELEMENT[self.id]
result |= elements if elements.is_a?(Array)
return result
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Enemy
#==============================================================================
class Game_Enemy < Game_Battler
#--------------------------------------------------------------------------
# ○ 追加攻撃属性取得
#--------------------------------------------------------------------------
def attack_element_set
return (super | enemy.attack_element_set)
end
end
复制代码
作者:
wangswz
时间:
2010-7-8 00:43
http://ytomy.sakura.ne.jp/tkool/ ... =set_attack_element
有说明
作者:
负零
时间:
2010-7-8 05:29
本帖最后由 负零 于 2010-7-8 05:31 编辑
又要谢谢你了...谢谢啊
话说 翻译机出品的我仍不太明白 是攻击属性合并吗,一次攻击带有上次攻击的属性...??如果清楚的话请给我详解...
作者:
wangswz
时间:
2010-7-8 11:39
我的感觉是让角色在默认的情况下带属性攻击
比如设置角色是冰属性
发动技能 火球
属性继承的话 伤害就会按 冰火 对敌人的有效度 来给与敌人伤害(不知道会不会继承武器的)
普攻的话就是武器+冰
自己多试试吧
话说 你哪看来的??
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1