赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 2823 |
最后登录 | 2017-10-1 |
在线时间 | 33 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 33 小时
- 注册时间
- 2014-3-24
- 帖子
- 8
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 kk01127 于 2015-10-17 22:16 编辑
1.這腳本是在網路上找到的
=begin
===============================================================================
物理伤害反弹 By喵呜喵5
===============================================================================
【说明】
当满足条件时,角色原本应该发动的物理反击效果会变成物理反弹
物理反弹效果是指敌人无法攻击自己同时自己会用相同的技能进行反击
与物理反击不同,攻击方和防御方的各项能力仍然沿用原来的数据
即
用敌人的攻击力和自己的防御力计算敌人所受到的伤害
=end
$m5script = {} if $m5script.nil?
$m5script["M5Reflect"] = true
module M5Reflect
#==============================================================================
# 设定部分
#==============================================================================
HINT = "%s反弹了物理伤害!"
#这里设置物理反弹时的提示文字
# %s 表示对象的名字
STATE = [10,11,12,13]
#当角色处于上面数字对应ID的状态时,物理反击的效果变成物理反弹的效果
WEAPON = [6,12,18,24]
#当角色装备上面数字对应ID的武器时,物理反击的效果变成物理反弹的效果
ARMOR = [15,50]
#当角色装备上面数字对应ID的防具时,物理反击的效果变成物理反弹的效果
#==============================================================================
# 设定结束
#==============================================================================
end
class Window_BattleLog < Window_Selectable
def display_m5_reflection(target, item)
Sound.play_evasion
add_text(sprintf(M5Reflect::HINT , target.name))
wait
back_one
end
end
class Scene_Battle < Scene_Base
alias m5_20131123_invoke_counter_attack invoke_counter_attack
def invoke_counter_attack(target, item)
if (m5_state_include(target.states)) or (m5_equip_include(target))
@log_window.display_m5_reflection(target, item)
apply_item_effects(@subject, item)
else
m5_20131123_invoke_counter_attack(target, item)
end
end
def m5_state_include(state)
state = state.collect {|state| state.id }
(state | M5Reflect::STATE).size != state.size + M5Reflect::STATE.size
end
def m5_equip_include(actor)
weapon = actor.weapons.collect {|weapons| weapons.id }
armor = actor.armors.collect {|armors| armors.id }
(weapon | M5Reflect::WEAPON).size != weapon.size + M5Reflect::WEAPON.size or\
(armor | M5Reflect::ARMOR).size != armor.size + M5Reflect::ARMOR.size
end
end
這下面的ID指的是
STATE = [10,11,12,13]
#当角色处于上面数字对应ID的状态时,物理反击的效果变成物理反弹的效果
WEAPON = [6,12,18,24]
#当角色装备上面数字对应ID的武器时,物理反击的效果变成物理反弹的效果
ARMOR = [15,50]
#当角色装备上面数字对应ID的防具时,物理反击的效果变成物理反弹的效果
我上圖圈起來的那些嘛??
是的話我怎麼使用時候還是反擊的效果不是反射的效果??
2.那這下面的腳本使用方法是在註解那 填入向下圖這樣?
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ 反射ステート - KGC_Reflection ◆ VX ◆
#_/ ◇ Last update : 2009/09/26 ◇
#_/----------------------------------------------------------------------------
#_/ 相手の攻撃を跳ね返すステートを作成します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================
# ★ カスタマイズ項目 - Customize BEGIN ★
#==============================================================================
module KGC
module Reflection
# ◆ 物理反射メッセージ
PHYSIC_MSG = "攻撃を跳ね返した!"
# ◆ 物理反射アニメーション ID
PHYSIC_ANIME_ID = 91
# ◆ 魔法反射メッセージ
MAGIC_MSG = "光の壁が魔法を跳ね返した!"
# ◆ 魔法反射アニメーション ID
MAGIC_ANIME_ID = 91
# ◆ 反射タイプ別メッセージ
# "タイプ" => "メッセージ",
TYPE_MSG = {
"息" => "追い風が攻撃を跳ね返した!",
} # ← { は消さないこと!
# ◆ 反射タイプ別アニメーション ID
# "タイプ" => ID,
TYPE_ANIME_ID = {
"息" => 92,
} # ← { は消さないこと!
end
end
#==============================================================================
# ☆ カスタマイズ項目終了 - Customize END ☆
#==============================================================================
$imported = {} if $imported == nil
$imported["Reflection"] = true
module KGC
module Reflection
module Regexp
# 反射タイプ
REFLECT_TYPE = /<(?:REFLECT_TYPE|反射タイプ)\s*([^>]+)>/i
module UsableItem
# 反射貫通
PENETRATE_REFLECT = /<(?:PENETRATE_REFLECT|反射貫通)>/i
end
module State
# 物理反射
REFLECT_PHYSIC = /<(?:REFLECT_PHYSIC|物理反射)>/i
# 魔法反射
REFLECT_MAGIC = /<(?:REFLECT_MAGIC|魔法反射)>/i
# 反射属性
REFLECT_ELEMENT = /<(?:REFLECT_ELEMENT|反射属性)\s*
(\d+(?:\s*,\s*\d+)*)?>/ix
# 反射貫通
PENETRATE_REFLECT = /<(?:PENETRATE_REFLECT|反射貫通)>/i
end
end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Vocab
#==============================================================================
module Vocab
# 物理反射
ReflectPhysic = KGC::Reflection::PHYSIC_MSG
# 魔法反射
ReflectMagic = KGC::Reflection::MAGIC_MSG
# 反射タイプ別
ReflectType = KGC::Reflection::TYPE_MSG
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::UsableItem
#==============================================================================
class RPG::UsableItem < RPG::BaseItem
#--------------------------------------------------------------------------
# ○ 反射ステートのキャッシュを生成
#--------------------------------------------------------------------------
def create_reflection_cache
@__reflect_type = nil
@__penetrate_reflect = false
self.note.each_line { |line|
if line =~ KGC::Reflection::Regexp::REFLECT_TYPE
@__reflect_type = $1
end
if line =~ KGC::Reflection::Regexp::UsableItem::PENETRATE_REFLECT
@__penetrate_reflect = true
end
}
@__reflect_cached = true
end
#--------------------------------------------------------------------------
# ○ 反射タイプ
#--------------------------------------------------------------------------
def reflection_type
create_reflection_cache unless @__reflect_cached
return @__reflect_type
end
#--------------------------------------------------------------------------
# ○ 反射貫通可否
#--------------------------------------------------------------------------
def can_penetrate_reflect
create_reflection_cache if @__penetrate_reflect == nil
return @__penetrate_reflect
end
alias can_penetrate_reflect? can_penetrate_reflect
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::State
#==============================================================================
class RPG::State
#--------------------------------------------------------------------------
# ○ 反射ステートのキャッシュを生成
#--------------------------------------------------------------------------
def create_reflection_cache
@__reflect_physic = false
@__reflect_magic = false
@__reflect_type = nil
@__reflect_elements = []
@__penetrate_reflect = false
self.note.each_line { |line|
if line =~ KGC::Reflection::Regexp::REFLECT_TYPE
@__reflect_type = $1
end
if line =~ KGC::Reflection::Regexp::State::REFLECT_PHYSIC
@__reflect_physic = true
end
if line =~ KGC::Reflection::Regexp::State::REFLECT_MAGIC
@__reflect_magic = true
end
if line =~ KGC::Reflection::Regexp::State::REFLECT_ELEMENT
$1.scan(/\d+/).each { |num| @__reflect_elements << num.to_i }
@__reflect_elements.uniq!
end
if line =~ KGC::Reflection::Regexp::UsableItem::PENETRATE_REFLECT
@__penetrate_reflect = true
end
}
@__reflect_cached = true
end
#--------------------------------------------------------------------------
# ○ 反射ステートか
#--------------------------------------------------------------------------
def is_reflect?
return (physic_can_reflect? ||
magic_can_reflect? ||
reflection_type != nil
)
end
#--------------------------------------------------------------------------
# ○ 反射タイプ
#--------------------------------------------------------------------------
def reflection_type
create_reflection_cache unless @__reflect_cached
return @__reflect_type
end
#--------------------------------------------------------------------------
# ○ 物理反射可否
#--------------------------------------------------------------------------
def physic_can_reflect
create_reflection_cache if @__reflect_physic == nil
return @__reflect_physic
end
alias physic_can_reflect? physic_can_reflect
#--------------------------------------------------------------------------
# ○ 魔法反射可否
#--------------------------------------------------------------------------
def magic_can_reflect
create_reflection_cache if @__reflect_magic == nil
return @__reflect_magic
end
alias magic_can_reflect? magic_can_reflect
#--------------------------------------------------------------------------
# ○ 反射可能属性
#--------------------------------------------------------------------------
def reflectable_elements
create_reflection_cache if @__reflect_elements == nil
return @__reflect_elements
end
#--------------------------------------------------------------------------
# ○ 反射貫通可否
#--------------------------------------------------------------------------
def can_penetrate_reflect
create_reflection_cache if @__penetrate_reflect == nil
return @__penetrate_reflect
end
alias can_penetrate_reflect? can_penetrate_reflect
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :unreflectable # 反射不可フラグ
attr_accessor :reflected # 反射済みフラグ
#--------------------------------------------------------------------------
# ● 行動効果の保持用変数をクリア
#--------------------------------------------------------------------------
alias clear_action_results_KGC_Reflection clear_action_results
def clear_action_results
clear_action_results_KGC_Reflection
@reflected = false
end
#--------------------------------------------------------------------------
# ● 通常攻撃の効果適用
# attacker : 攻撃者
#--------------------------------------------------------------------------
alias attack_effect_KGC_Reflection attack_effect
def attack_effect(attacker)
reflection_effect(attacker)
return if @skipped
attack_effect_KGC_Reflection(attacker)
end
#--------------------------------------------------------------------------
# ● スキルの効果適用
# user : スキルの使用者
# skill : スキル
#--------------------------------------------------------------------------
alias skill_effect_KGC_Reflection skill_effect
def skill_effect(user, skill)
reflection_effect(user, skill)
return if @skipped
skill_effect_KGC_Reflection(user, skill)
end
#--------------------------------------------------------------------------
# ○ 反射貫通可否判定
#--------------------------------------------------------------------------
def can_penetrate_reflect?
states.each { |state|
return true if state.can_penetrate_reflect?
}
return false
end
#--------------------------------------------------------------------------
# ○ 反射効果の適用
# user : 行動者
# skill : スキル (nil なら通常攻撃)
#--------------------------------------------------------------------------
def reflection_effect(user, skill = nil)
@reflected = false
clear_action_results
return unless can_reflect?(user, skill)
@skipped = true
@reflected = true
user.unreflectable = true
if skill == nil
user.attack_effect(user)
else
user.skill_effect(user, skill)
end
user.unreflectable = false
end
#--------------------------------------------------------------------------
# ○ 反射可否判定
# user : スキルの使用者
# skill : スキル (nil なら通常攻撃)
#--------------------------------------------------------------------------
def can_reflect?(user, skill = nil)
return false if unreflectable # 反射不可
return false unless actor? ^ user.actor? # 味方なら反射しない
return false if user.can_penetrate_reflect? # 貫通なら反射しない
if skill != nil && skill.can_penetrate_reflect?
return false
end
if skill.is_a?(RPG::Skill)
element_set = ($imported["SetAttackElement"] ?
get_inherited_element_set(user, skill) : skill.element_set)
else
element_set = user.element_set
end
physic = (skill == nil ? true : skill.physical_attack) # 物理フラグ
type = (skill == nil ? nil : skill.reflection_type) # 反射タイプ
states.each { |state|
next unless state.is_reflect?
r_elements = state.reflectable_elements
unless r_elements.empty?
# 反射不可能な属性があればダメ
return false if (r_elements & element_set).size != element_set.size
end
if type != nil
# 反射タイプ指定あり
return true if state.reflection_type == type
else
# 反射タイプ指定なし
return true if physic && state.physic_can_reflect?
return true if !physic && state.magic_can_reflect?
end
}
return false
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● アニメーションの表示
# targets : 対象者の配列
# animation_id : アニメーション ID (-1: 通常攻撃と同じ)
#--------------------------------------------------------------------------
alias display_animation_KGC_Reflection display_animation
def display_animation(targets, animation_id)
display_animation_KGC_Reflection(
remove_reflected_targets(targets), animation_id)
end
#--------------------------------------------------------------------------
# ● 攻撃アニメーションの表示
# targets : 対象者の配列
# 敵キャラの場合は [敵の通常攻撃] 効果音を演奏して一瞬待つ。
# アクターの場合は二刀流を考慮 (左手武器は反転して表示) 。
#--------------------------------------------------------------------------
alias display_attack_animation_KGC_Reflection display_attack_animation
def display_attack_animation(targets)
display_attack_animation_KGC_Reflection(remove_reflected_targets(targets))
end
#--------------------------------------------------------------------------
# ○ 反射可能な対象者を除去
# targets : 対象者の配列
#--------------------------------------------------------------------------
def remove_reflected_targets(targets)
action = @active_battler.action
if !@reflected && (action.attack? || action.skill?)
obj = (action.skill? ? action.skill : nil)
targets = targets.clone
targets.delete_if { |target| target.can_reflect?(@active_battler, obj) }
end
return targets
end
#--------------------------------------------------------------------------
# ● 行動結果の表示
# target : 対象者
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
alias display_action_effects_KGC_Reflection display_action_effects
def display_action_effects(target, obj = nil)
if target.reflected
@reflected = true
display_reflect(target, obj)
display_action_effects(@active_battler, obj)
@reflected = false
return
end
display_action_effects_KGC_Reflection(target, obj)
end
#--------------------------------------------------------------------------
# ○ 反射時のメッセージを表示
# target : 対象者
# obj : スキルまたはアイテム
#--------------------------------------------------------------------------
def display_reflect(target, obj)
physic = (obj == nil ? true : obj.physical_attack)
type = (obj == nil ? nil : obj.reflection_type)
if type != nil
# 反射タイプ指定あり
text = Vocab::ReflectType[type]
anime = KGC::Reflection::TYPE_ANIME_ID[type]
else
text = (physic ? Vocab::ReflectPhysic : Vocab::ReflectMagic)
anime = (physic ?
KGC::Reflection::PHYSIC_ANIME_ID :
KGC::Reflection::MAGIC_ANIME_ID
)
end
@message_window.add_instant_text(text)
display_normal_animation([target], anime)
wait_for_animation
if obj == nil
display_attack_animation([@active_battler])
else
display_animation([@active_battler], obj.animation_id)
end
@message_window.back_one
end
end
拜託高手幫忙解答了 |
|