class Game_Actor < Game_Battler
# 初始化
alias neoinitialize initialize
def initialize(actor_id)
# 设定角色普遍的基本魔法防和增长度
@mdef_init = 25
@mdef_inc = 3
neoinitialize(actor_id)
end
# 开始设定
#--------------------------------------------------------------------------
# ● 设置
# actor_id : 角色 ID
#--------------------------------------------------------------------------
alias neosetup setup
def setup(actor_id)
# 设定个别角色的基本魔法防和增长度(不设定的就用默认的基本值25,增长度3)
case actor_id
when 1
@mdef_init = 22
@mdef_inc = 2
when 3
@mdef_init = 28
@mdef_inc = 3
when 4
@mdef_init = 30
@mdef_inc = 4
end
neosetup(actor_id)
end
# 基本魔法防
def mdef
# 判断!是否具有47 48号状态!===============================================
jjj = []
for iii in self.states
jjj.push(iii.id)
end
if jjj.include?(47)#疲软
return 0
end
if jjj.include?(48)#强硬
return 999
end
# ==========================================================================
return @mdef_init + @level * @mdef_inc + mdef_plus
end
# 扩展魔法防
def mdef_plus
aaa = 0
if self.weapon_id > 0
aaa += $data_weapons[self.weapon_id].mdef
end
if self.armor1_id > 0
aaa += $data_armors[self.armor1_id].mdef
end
if self.armor2_id > 0
aaa += $data_armors[self.armor2_id].mdef
end
if self.armor3_id > 0
aaa += $data_armors[self.armor3_id].mdef
end
if self.armor4_id > 0
aaa += $data_armors[self.armor4_id].mdef
end
return aaa
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 绘制角色能力值
# actor : 角色
# x : 描画目标 X 坐标
# y : 描画目标 Y 坐标
# type : 能力值类型(0-3)
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type)
case type
when 0
parameter_name = Vocab::atk
parameter_value = actor.atk
when 1
parameter_name = Vocab::def
parameter_value = actor.def
when 2
parameter_name = Vocab::spi
parameter_value = actor.spi
when 3
parameter_name = Vocab::agi
parameter_value = actor.agi
when 4
parameter_name = "魔法防"
parameter_value = actor.mdef
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, WLH, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, WLH, parameter_value, 2)
end
end
attr_accessor :last_level
def initialize(actor_id)
super()
setup(actor_id)
@last_level = 0
@last_skill_id = 0
end
def last_atk
return actor.parameters[2,@last_level]
end
def last_def
return actor.parameters[3,@last_level]
end
def last_spi
return actor.parameters[4,@last_level]
end
def last_agi
return actor.parameters[5,@last_level]
end
def now_atk
return actor.parameters[2,@level]
end
def now_def
return actor.parameters[3,@level]
end
def now_spi
return actor.parameters[4,@level]
end
def now_agi
return actor.parameters[5,@level]
end
def change_exp(exp, show)
@last_level = @level
last_skills = skills
@exp = [[exp, 9999999].min, 0].max
while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
level_up
end
while @exp < @exp_list[@level]
level_down
end
@hp = [@hp, maxhp].min
@mp = [@mp, maxmp].min
if show and @level > last_level
zhonglevelup_push(skills - last_skills)
end
end
#==========================================================================
#★角色升级显示
#==========================================================================
def zhonglevelup_push(new_skills)
text = [@actor_id,new_skills]
$game_temp.levelup_texts.push(text)
end
end
class Scene_Battle < Scene_Base
def display_level_up
exp = $game_troop.exp_total
$game_party.remove_states_battle
@message_window.contents_opacity = 0
@message_window.opacity = 0
@levelup_window = Window_zhonglevelup.new
for actor in $game_party.existing_members
last_level = actor.level
last_skills = actor.skills
actor.gain_exp(exp, true)
end
update_zhonglevelup
end
#==========================================================================
#★等待升级窗口刷新
#==========================================================================
def update_zhonglevelup
@levelup_window.update
while @levelup_window.visible
@levelup_window.update
Graphics.update
Input.update
end
end
end
class Game_Temp
attr_accessor :levelup_texts
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias oldinitialize initialize
def initialize
@levelup_texts = []
oldinitialize
end
end
#==========================================================================
#★窗口按键刷新
#==========================================================================
def zhonginputupdate
if Input.trigger?(Input::DOWN)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
if Input.trigger?(Input::UP)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
if Input.trigger?(Input::RIGHT)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
if Input.trigger?(Input::LEFT)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
if Input.trigger?(Input::B)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
if Input.trigger?(Input::C)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
def update
super
$game_map.interpreter.update
$game_map.update
$game_player.update
$game_system.update
@spriteset.update
@message_window.update
unless $game_message.visible
update_levelup_window
update_transfer_player
update_encounter
update_call_menu
update_call_debug
update_scene_change
end
end
def update_levelup_window
@levelup_window.update
while @levelup_window.visible
end
def terminate
super
if $scene.is_a?(Scene_Battle) # バトル画面に切り替え中の場合
@spriteset.dispose_characters # 背景作成のためにキャラを隠す
end
snapshot_for_background
@spriteset.dispose
@message_window.dispose
@levelup_window.dispose
@m_window.dispose
@lus_window.dispose
if $scene.is_a?(Scene_Battle) # バトル画面に切り替え中の場合
perform_battle_transition # 戦闘前トランジション実行
end
end
end
[/pre]作者: a364774426 时间: 2013-3-18 23:56
很明确地告诉阁下:
加点脚本与横战脚本不存在冲突。
要解决这个问题,还请上传出错的工程。作者: qc641487196 时间: 2013-3-18 23:57