Project1
标题:
如何制作特殊角色
[打印本页]
作者:
兎音苍
时间:
2020-2-22 16:23
标题:
如何制作特殊角色
rt,怎么做出类似fgo的人物角色,就是攻击带语音,使用技能带语音,受击带语音,死亡带语音这种
作者:
Nil2018
时间:
2020-2-22 20:11
#==============================================================================
# +++ MOG - 战斗语音 (V1.4) +++
#==============================================================================
# By Moghunter
# https://atelierrgss.wordpress.com/
#==============================================================================
# 战斗时角色/敌人行动、受伤等会播放的语音
#==============================================================================
# ● Histórico (Version History)
#==============================================================================
# v1.4 - Melhoria na compatibilidade.
#==============================================================================
$imported = {} if $imported.nil?
$imported[:mog_battle_cry] = true
module MOG_BATTLE_CRY
# ☢注意!!☢ 以下勿动.^_^
ACTOR_SKILL = []
ACTOR_ITEM = []
ACTOR_GENERAL_ACTION = []
ACTOR_DAMAGE = []
ACTOR_RECOVER = []
ACTOR_DEFEATED = []
ACTOR_BATTLE_START = []
ACTOR_BATTLE_END = []
ACTOR_BATTLE_ESCAPE = []
ACTOR_TURN_ACTIVE = []
ACTOR_LEVEL_UP = []
ENEMY_SKILL = []
ENEMY_GENERAL_ACTION = []
ENEMY_DAMAGE = []
ENEMY_RECOVER = []
ENEMY_DEFEATED = []
# ----------------------------------------------------------------------------
# 音量设定.
# ----------------------------------------------------------------------------
VOLUME = 130
#===============================================================================
#
# 格式:
# 类型[角色id] = ["文件名1","文件名2"……]
#
#----------------------------------------------------------------------------
# 战斗开始
#----------------------------------------------------------------------------
ACTOR_BATTLE_START[1] = ["V_ACT1_START_1","V_ACT1_START_2"]
ACTOR_BATTLE_START[2] = ["V_ACT2_START_1","V_ACT2_START_2","V_ACT2_START_3"]
ACTOR_BATTLE_START[3] = ["V_ACT3_START_1","V_ACT3_START_2"]
ACTOR_BATTLE_START[4] = ["V_ACT4_START_1","V_ACT4_START_2","V_ACT4_START_3"]
#----------------------------------------------------------------------------
# 战斗结束
#----------------------------------------------------------------------------
ACTOR_BATTLE_END[1] = ["V_ACT1_WIN_1","V_ACT1_WIN_2"]
ACTOR_BATTLE_END[2] = ["V_ACT2_WIN_1","V_ACT2_WIN_2","V_ACT2_WIN_3"]
ACTOR_BATTLE_END[3] = ["V_ACT3_WIN_1","V_ACT3_WIN_2","V_ACT3_WIN_3"]
ACTOR_BATTLE_END[4] = ["V_ACT4_WIN_1","V_ACT4_WIN_2"]
#----------------------------------------------------------------------------
# 撤退
#----------------------------------------------------------------------------
ACTOR_BATTLE_ESCAPE[1] = ["V_ACT1_SKILL_9"]
ACTOR_BATTLE_ESCAPE[2] = ["V_ACT2_SKILL_4"]
ACTOR_BATTLE_ESCAPE[3] = ["V_ACT3_SKILL_4"]
ACTOR_BATTLE_ESCAPE[4] = ["V_ACT4_SKILL_7"]
#----------------------------------------------------------------------------
# 轮到该角色行动时
#----------------------------------------------------------------------------
# Funciona apenas com script MOG AT SYSTEM.
ACTOR_TURN_ACTIVE[1] = ["V_ACT1_TURN_1","V_ACT1_TURN_2","V_ACT1_TURN_3"]
ACTOR_TURN_ACTIVE[2] = ["V_ACT2_TURN_1","V_ACT2_TURN_2","V_ACT2_TURN_3"]
ACTOR_TURN_ACTIVE[3] = ["V_ACT3_TURN_1","V_ACT3_TURN_2","V_ACT3_TURN_3"]
ACTOR_TURN_ACTIVE[4] = ["V_ACT4_TURN_1","V_ACT4_TURN_2","V_ACT4_TURN_3"]
#----------------------------------------------------------------------------
# 升级
#----------------------------------------------------------------------------
ACTOR_LEVEL_UP[1] = ["V_ACT1_TURN_1"]
ACTOR_LEVEL_UP[2] = ["V_ACT2_TURN_1"]
ACTOR_LEVEL_UP[3] = ["V_ACT3_TURN_1"]
ACTOR_LEVEL_UP[4] = ["V_ACT4_TURN_1"]
#----------------------------------------------------------------------------
# 角色使用技能
#----------------------------------------------------------------------------
# 通用设定格式:
#
# ACTOR_SKILL[ A ] = { B=>["C","C","C"],
#
# A - 角色ID.
# B - 技能ID.
# C - 语音文件名.
ACTOR_SKILL[1] = {
1=>["V_ACT1_ATTACK_1","V_ACT1_ATTACK_2","V_ACT1_ATTACK_3"],
2=>["V_ACT1_WIN_1","V_ACT1_WIN_2"]
}
ACTOR_SKILL[2] = {
1=>["V_ACT2_ATTACK_1","V_ACT2_ATTACK_2","V_ACT2_ATTACK_3"],
2=>["V_ACT2_WIN_1","V_ACT2_WIN_2","V_ACT2_WIN_3"],
26=>["V_ACT2_SKILL_6","V_ACT2_SKILL_7","V_ACT2_SKILL_8"],
29=>["V_ACT2_SKILL_6","V_ACT2_SKILL_7","V_ACT2_SKILL_8"],
32=>["V_ACT2_SKILL_6","V_ACT2_SKILL_7","V_ACT2_SKILL_8"],
33=>["V_ACT2_SKILL_6","V_ACT2_SKILL_7","V_ACT2_SKILL_8"],
}
ACTOR_SKILL[3] = {
1=>["V_ACT3_ATTACK_1","V_ACT3_ATTACK_2","V_ACT3_ATTACK_3"],
2=>["V_ACT3_SKILL_4"],
26=>["V_ACT3_SKILL_3","V_ACT3_SKILL_6","V_ACT3_SKILL_7"],
76=>["V_ACT3_SKILL_3","V_ACT3_SKILL_6","V_ACT3_SKILL_7"],
77=>["V_ACT3_SKILL_3","V_ACT3_SKILL_6","V_ACT3_SKILL_7"],
78=>["V_ACT3_SKILL_3","V_ACT3_SKILL_6","V_ACT3_SKILL_7"]
}
ACTOR_SKILL[4] = {
1=>["V_ACT4_ATTACK_1","V_ACT4_ATTACK_2","V_ACT4_ATTACK_3"],
2=>["V_ACT4_SKILL_3","V_ACT4_SKILL_8"],
51=>["V_ACT4_SKILL_1","V_ACT4_SKILL_4","V_ACT4_SKILL_6","V_ACT4_SKILL_9"],
53=>["V_ACT4_SKILL_1","V_ACT4_SKILL_4","V_ACT4_SKILL_6","V_ACT4_SKILL_9"],
61=>["V_ACT4_SKILL_1","V_ACT4_SKILL_4","V_ACT4_SKILL_6","V_ACT4_SKILL_9"],
66=>["V_ACT4_SKILL_1","V_ACT4_SKILL_4","V_ACT4_SKILL_6","V_ACT4_SKILL_9"],
74=>["V_ACT4_SKILL_1","V_ACT4_SKILL_4","V_ACT4_SKILL_6","V_ACT4_SKILL_9"]
}
#----------------------------------------------------------------------------
# 角色使用物品
#----------------------------------------------------------------------------
ACTOR_ITEM[1] = {
1=>["V_ACT1_SKILL_6","V_ACT1_SKILL_7"], 2=>["V_ACT1_SKILL_6","V_ACT1_SKILL_7"],
3=>["V_ACT1_SKILL_6","V_ACT1_SKILL_7"], 4=>["V_ACT1_SKILL_6","V_ACT1_SKILL_7"],
5=>["V_ACT1_SKILL_6","V_ACT1_SKILL_7"], 6=>["V_ACT1_SKILL_6","V_ACT1_SKILL_7"],
7=>["V_ACT1_SKILL_6","V_ACT1_SKILL_7"], 8=>["V_ACT1_SKILL_6","V_ACT1_SKILL_7"],
17=>["V_ACT1_SKILL_6","V_ACT1_SKILL_7"]
}
ACTOR_ITEM[2] = {
1=>["V_ACT2_RECOVER_2"], 2=>["V_ACT2_RECOVER_2"], 3=>["V_ACT2_RECOVER_2"],
4=>["V_ACT2_RECOVER_2"], 5=>["V_ACT2_RECOVER_2"], 6=>["V_ACT2_RECOVER_2"],
7=>["V_ACT2_RECOVER_2"], 8=>["V_ACT2_RECOVER_2"], 17=>["V_ACT2_RECOVER_2"]
}
ACTOR_ITEM[3] = {
1=>["V_ACT3_WIN_2"], 2=>["V_ACT3_WIN_2"], 3=>["V_ACT3_WIN_2"],
4=>["V_ACT3_WIN_2"], 5=>["V_ACT3_WIN_2"], 6=>["V_ACT3_WIN_2"],
7=>["V_ACT3_WIN_2"], 8=>["V_ACT3_WIN_2"], 17=>["V_ACT3_WIN_2"]
}
ACTOR_ITEM[4] = {
1=>["V_ACT4_START_3"], 2=>["V_ACT4_START_3"], 3=>["V_ACT4_START_3"],
4=>["V_ACT4_START_3"], 5=>["V_ACT4_START_3"], 6=>["V_ACT4_START_3"],
7=>["V_ACT4_START_3"], 8=>["V_ACT4_START_3"], 17=>["V_ACT4_START_3"]
}
#----------------------------------------------------------------------------
# 角色通用行动语音 *( 基础 / 应用于全部技能 / 物品)
#----------------------------------------------------------------------------
# 设定在未特殊指定(默认)情况下角色的技能/物品语音,
#----------------------------------------------------------------------------
ACTOR_GENERAL_ACTION[1] = ["V_ACT1_ATTACK_1","V_ACT1_ATTACK_2","V_ACT1_ATTACK_3"]
ACTOR_GENERAL_ACTION[2] = ["V_ACT2_ATTACK_1","V_ACT2_ATTACK_2","V_ACT2_ATTACK_3"]
ACTOR_GENERAL_ACTION[3] = ["V_ACT3_ATTACK_1","V_ACT3_ATTACK_2","V_ACT3_ATTACK_3"]
ACTOR_GENERAL_ACTION[4] = ["V_ACT4_ATTACK_1","V_ACT4_ATTACK_2","V_ACT4_ATTACK_3"]
#----------------------------------------------------------------------------
# 受到伤害
#----------------------------------------------------------------------------
ACTOR_DAMAGE[1] = ["V_ACT1_DAMAGE_1","V_ACT1_DAMAGE_2"]
ACTOR_DAMAGE[2] = ["V_ACT2_DAMAGE_1","V_ACT2_DAMAGE_2","V_ACT2_DAMAGE_3"]
ACTOR_DAMAGE[3] = ["V_ACT3_DAMAGE_1","V_ACT3_DAMAGE_2","V_ACT3_DAMAGE_3"]
ACTOR_DAMAGE[4] = ["V_ACT4_DAMAGE_1","V_ACT4_DAMAGE_2","V_ACT4_DAMAGE_3"]
#----------------------------------------------------------------------------
# 受到治疗
#----------------------------------------------------------------------------
ACTOR_RECOVER[1] = ["V_ACT1_RECOVER_1","V_ACT1_RECOVER_2"]
ACTOR_RECOVER[2] = ["V_ACT2_RECOVER_1","V_ACT2_RECOVER_2"]
ACTOR_RECOVER[3] = ["V_ACT3_RECOVER_1","V_ACT3_RECOVER_2"]
ACTOR_RECOVER[4] = ["V_ACT4_RECOVER_1","V_ACT4_RECOVER_2"]
#----------------------------------------------------------------------------
# 死亡
#----------------------------------------------------------------------------
ACTOR_DEFEATED[1] = ["V_ACT1_DEFEAT_1"]
ACTOR_DEFEATED[2] = ["V_ACT2_DEFEAT_1"]
ACTOR_DEFEATED[3] = ["V_ACT3_DEFEAT_1"]
ACTOR_DEFEATED[4] = ["V_ACT4_DEFEAT_1","V_ACT4_DEFEAT_2"]
#----------------------------------------------------------------------------
# 敌人技能
#----------------------------------------------------------------------------
ENEMY_SKILL[7] = {
135=>["V_ENE1_SKILL_3"]
}
ENEMY_SKILL[9] = {
137=>["Cel_Attack_01","Cel_Attack_02","Cel_Attack_03","Cel_Attack_04"]
}
#----------------------------------------------------------------------------
# 敌人通用技能
#----------------------------------------------------------------------------
ENEMY_GENERAL_ACTION[7] = ["V_ENE1_ATTACK_1","V_ENE1_ATTACK_2","V_ENE1_ATTACK_3"]
ENEMY_GENERAL_ACTION[11] = ["Reimu_A1","Reimu_A2"]
ENEMY_GENERAL_ACTION[12] = ["Satori_A1","Satori_A2"]
#----------------------------------------------------------------------------
# 敌人受到伤害
#----------------------------------------------------------------------------
ENEMY_DAMAGE[7] = ["V_ENE1_DAMAGE_1","V_ENE1_DAMAGE_2","V_ENE1_DAMAGE_3"]
ENEMY_DAMAGE[11] = ["Reimu_D1","Reimu_D2"]
ENEMY_DAMAGE[9] = ["Cel_Damage1","Cel_Damage2"]
ENEMY_DAMAGE[12] = ["Satori_D1","Satori_D2"]
#----------------------------------------------------------------------------
# 敌人受到治疗
#----------------------------------------------------------------------------
ENEMY_RECOVER[7] = []
#----------------------------------------------------------------------------
# 敌人死亡
#----------------------------------------------------------------------------
ENEMY_DEFEATED[7] = ["V_ENE1_DEFEAT_1"]
ENEMY_DEFEATED[11] = ["Reimu_DF"]
ENEMY_DEFEATED[12] = ["Satori_DF"]
end
#===============================================================================
# ■ Battle Cry
#===============================================================================
module BATTLE_CRY
include MOG_BATTLE_CRY
#--------------------------------------------------------------------------
# ● Execute Battle Cry
#--------------------------------------------------------------------------
def execute_battle_cry(type = 0, skill_id = nil, battler = nil)
@type = type ; @skill_id = skill_id ; @battler = battler
case @type
when 0 # START #
check_members_alive
voice_list = ACTOR_BATTLE_START[@battler.id] rescue nil
when 1 # END #
check_members_alive
voice_list = ACTOR_BATTLE_END[@battler.id] rescue nil
when 2 # SKILL #
if @battler.is_a?(Game_Actor)
voice = ACTOR_SKILL[@battler.id] rescue nil
else
voice = ENEMY_SKILL[@battler.enemy_id] rescue nil
end
voice_list = voice[@skill_id] rescue nil
if voice_list == nil # GENERAL ACTION
if @battler.is_a?(Game_Actor)
voice_list = ACTOR_GENERAL_ACTION[@battler.id] rescue nil
else
voice_list = ENEMY_GENERAL_ACTION[@battler.enemy_id] rescue nil
end
end
when 3 # DAMAGE #
if @battler.hp > 0
if @battler.is_a?(Game_Actor)
voice_list = ACTOR_DAMAGE[@battler.id] rescue nil
else
voice_list = ENEMY_DAMAGE[@battler.enemy_id] rescue nil
end
else # DEFEATED #
if @battler.is_a?(Game_Actor)
voice_list = ACTOR_DEFEATED[@battler.id] rescue nil
else
voice_list = ENEMY_DEFEATED[@battler.enemy_id] rescue nil
end
end
when 4 # RECOVER #
if @battler.is_a?(Game_Actor)
voice_list = ACTOR_RECOVER[@battler.id] rescue nil
else
voice_list = ENEMY_RECOVER[@battler.enemy_id] rescue nil
end
when 5 # ITEM #
voice = ACTOR_ITEM[@battler.id] rescue nil
voice_list = voice[@skill_id] rescue nil
if voice_list == nil # GENERAL SKILLS
voice_list = ACTOR_GENERAL_ACTION[@battler.id] rescue nil
end
when 6 # START #
check_members_alive
voice_list = ACTOR_BATTLE_ESCAPE[@battler.id] rescue nil
when 7 # TURN #
voice_list = ACTOR_TURN_ACTIVE[@battler.id] rescue nil
end
play_battle_cry(voice_list) ; check_battle_addons
end
#--------------------------------------------------------------------------
# ● Play Battle Cry
#--------------------------------------------------------------------------
def play_battle_cry(voice_list)
return if voice_list == nil
voice_id = voice_list[rand(voice_list.size)]
Audio.se_play("Audio/SE/" + voice_id.to_s,VOLUME,100) rescue nil
end
#--------------------------------------------------------------------------
# ● Check Members Alive
#--------------------------------------------------------------------------
def check_members_alive
alive_members = []
for i in $game_party.battle_members
alive_members.push(i) if i.hp > 0
end
members_id = rand(alive_members.size)
alive_members.each_with_index do |i, index|
if members_id == index
@battler = i
break
end
end
@battler = alive_members[members_id]
end
#--------------------------------------------------------------------------
# ● Check Battle Addons
#--------------------------------------------------------------------------
def check_battle_addons
if $imported[:mog_battle_hud_ex] and SceneManager.face_battler? and
@battler != nil and @battler.is_a?(Game_Actor)
if @type == 0 or @type == 1 or @type == 6
@battler.face_animation = [50,1,50] unless @battler.low_hp? or @battler.restriction >= 4
elsif @type == 7
@battler.face_animation = [50,1,50] unless @battler.low_hp? or @battler.restriction >= 4
end
end
end
end
#==============================================================================
# ■ BattleManager
#==============================================================================
class << BattleManager
include BATTLE_CRY
#--------------------------------------------------------------------------
# ● Process Victory
#--------------------------------------------------------------------------
alias mog_battle_cry_process_victory process_victory
def process_victory
execute_battle_cry(1, nil, nil)
mog_battle_cry_process_victory
end
#--------------------------------------------------------------------------
# ● Process Abort
#--------------------------------------------------------------------------
alias mog_battle_cry_process_abort process_abort
def process_abort
execute_battle_cry(6, nil, nil)
mog_battle_cry_process_abort
end
end
#==============================================================================
# ■ Game Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
include BATTLE_CRY
#--------------------------------------------------------------------------
# ● Execute Damage
#--------------------------------------------------------------------------
alias mog_battle_cry_execute_damage execute_damage
def execute_damage(user)
mog_battle_cry_execute_damage(user)
execute_battle_cry_damage
end
#--------------------------------------------------------------------------
# ● Execute Battle Cry Damage
#--------------------------------------------------------------------------
def execute_battle_cry_damage
if @result.hp_damage > 0
execute_battle_cry(3, nil, self)
elsif @result.hp_damage < 0
execute_battle_cry(4, nil, self)
else
if @result.hp_damage == 0
if @result.mp_damage > 0
execute_battle_cry(3, nil, self)
elsif @result.mp_damage < 0
execute_battle_cry(4, nil, self)
end
end
end
end
#--------------------------------------------------------------------------
# ● Item Effect Recover HP
#--------------------------------------------------------------------------
alias mog_battle_cry_item_effect_recover_hp item_effect_recover_hp
def item_effect_recover_hp(user, item, effect)
chp = self.hp
mog_battle_cry_item_effect_recover_hp(user, item, effect)
if self.hp > chp
execute_battle_cry(4, nil, self)
elsif self.hp < chp
execute_battle_cry(3, nil, self)
end
end
#--------------------------------------------------------------------------
# ● Item Effect Reover MP
#--------------------------------------------------------------------------
alias mog_battle_cry_item_effect_recover_mp item_effect_recover_mp
def item_effect_recover_mp(user, item, effect)
cmp = self.mp
mog_battle_cry_item_effect_recover_mp(user, item, effect)
if self.mp > cmp
execute_battle_cry(4, nil, self)
elsif self.mp < cmp
execute_battle_cry(3, nil, self)
end
end
end
#==============================================================================
# ■ Game Action
#==============================================================================
class Scene_Battle < Scene_Base
include BATTLE_CRY
#--------------------------------------------------------------------------
# ● Show Animations
#--------------------------------------------------------------------------
alias mog_battle_cry_show_animation show_animation
def show_animation(targets, animation_id)
battle_cry(targets, animation_id)
mog_battle_cry_show_animation(targets, animation_id)
end
#--------------------------------------------------------------------------
# ● Battle Cry
#--------------------------------------------------------------------------
def battle_cry(targets, animation_id)
return if @subject == nil
return if @subject.current_action == nil
return if @subject.current_action.item == nil
if @subject.is_a?(Game_Actor) and @subject.current_action.item.is_a?(RPG::Item)
execute_battle_cry(5, @subject.current_action.item.id, @subject)
else
execute_battle_cry(2, @subject.current_action.item.id, @subject)
end
end
#--------------------------------------------------------------------------
# ● Process Actor Command
#--------------------------------------------------------------------------
if $imported[:mog_atb_system]
alias mog_battle_cry_process_actor_command process_actor_command
def process_actor_command
mog_battle_cry_process_actor_command
execute_battle_cry(7, nil, BattleManager.actor) if BattleManager.actor
end
end
#--------------------------------------------------------------------------
# ● Battle Start
#--------------------------------------------------------------------------
alias mog_battle_cry_update_battle update
def update
mog_battle_cry_update_battle
execute_battle_cry_start
end
#--------------------------------------------------------------------------
# ● Execite Battle Cry Start
#--------------------------------------------------------------------------
def execute_battle_cry_start
return if @battle_cry_start != nil
@battle_cry_start = true ; execute_battle_cry(0, nil, nil)
end
end
复制代码
作者:
兎音苍
时间:
2020-2-22 22:24
Nil2018 发表于 2020-2-22 20:11
请问怎么设置,是在备注里添加所有的代码么
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1