Project1
标题:
阵法?调用脚本?
[打印本页]
作者:
zx100zx
时间:
2008-4-26 03:10
标题:
阵法?调用脚本?
http://rpg.blue/viewthread.php?tid=83426&ntime=2008%2D4%2D25+18%3A43%3A53
从这个里面的除了改坐标,如果要加效果之类的应该怎么加?
比如说:全员增加魔法攻击之类的`````
谢谢哈` [LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
八云紫
时间:
2008-4-26 03:14
LZ是要什么效果?
如果是攻击增加效果的话,可去再增加一个脚本。我去找找看。
增加全体攻击魔法的话,到数据库去设定就可以了。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ 攻撃属性設定 - KGC_SetAttackElement ◆ VX ◆
#_/ ◇ Last update : 2008/03/08 ◇
#_/----------------------------------------------------------------------------
#_/ キャラクター毎に攻撃属性を設定する機能を追加します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
$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::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
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.split(/[\r\n]+/).each { |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.split(/[\r\n]+/).each { |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
# 攻撃属性を継承
if obj.attack_element_inherit?
obj.element_set |=
(user.element_set - KGC::SetAttackElement::IGNORE_ELEMENT_ID_LIST)
end
make_obj_damage_value_KGC_SetAttackElement(user, obj)
# 攻撃属性を戻す
obj.element_set = last_element_set
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
复制代码
使用方法:
例:角色1攻击为火焰+风属性攻击
ACTOR_ELEMENT[1] = [9, 14]
角色1攻击为雷属性
ACTOR_ELEMENT[2] = [11]
[LINE]1,#dddddd[/LINE]
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者:
zx100zx
时间:
2008-4-26 03:22
战斗时调用就可以了吗?
作者:
八云紫
时间:
2008-4-26 03:24
不需要调用,只要在脚本中定义好属性就可以了。
作者:
zx100zx
时间:
2008-4-26 06:52
哦,谢谢!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1