至于技能总共只能用10次,一个人时,你可以直接用变量
如用一号变量,你可以在def judge 中增加:
def judge
for actor in $game_party.actors
#如果劫后余生不止一个人会,可以将下句中的 and @劫后余生 == false 该为 actor.comeback = false
#***********************************************************
if actor.hp == 0 and actor.skill_learn?(8) and @劫后余生 == false and $game_variables[1] <= 10
#***********************************************************
#这样【变量1】大于10时,就不能复活了
再在 @status_window.refresh 等语句之下 加上 $game_variables[1] += 1
这样每次发动技能都会增加 【变量1】的值
如果多人会,可以根据角色的id 使用不同变量
case actor.id
when 1
fuhou = 1
when 2
fuhou = 2
when 3
fuhou = 3
end
再把$game_variables[1] 换成$game_variables[fuhou] 为每个角色设置特定变量,还可以用事件方便的清空计数
class Scene_Battle
###################################
alias afx_start_phase1 start_phase1
def start_phase1
afx_start_phase1
for actor in $game_party.actors
actor.live=0
end
end
##################################
def update_phase3_actor_select
@actor_arrow.update
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 选择角色结束
end_actor_select
return
end
####################################
# 刷新角色箭头
if @skill!=nil and @skill.id==81 and (@actor_arrow.actor.live==1 or @actor_arrow.actor.dead?)
return
end
########################################
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 设置行动
@active_battler.current_action.target_index = @actor_arrow.index
# 选择角色结束
end_actor_select
# 显示特技窗口中的情况下
if @skill_window != nil
# 结束特技选择
end_skill_select
end
# 显示物品窗口的情况下
if @item_window != nil
# 结束物品选择
end_item_select
end
# 转到下一位角色的指令输入
phase3_next_actor
end
end
def update_phase3_skill_select
# 设置特技窗口为可视状态
@skill_window.visible = true
# 刷新特技窗口
@skill_window.update
# 按下 B 键的情况下
if Input.trigger?(Input::B)
# 演奏取消 SE
$game_system.se_play($data_system.cancel_se)
# 结束特技选择
end_skill_select
return
end
# 按下 C 键的情况下
if Input.trigger?(Input::C)
# 获取特技选择窗口现在选择的特技的数据
@skill = @skill_window.skill
# 无法使用的情况下
if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
############################################
if @skill.id==81
if $use_number == 0
# 演奏冻结 SE
$game_system.se_play($data_system.buzzer_se)
return
end
end
#################################################
# 演奏确定 SE
$game_system.se_play($data_system.decision_se)
# 设置行动
@active_battler.current_action.skill_id = @skill.id
# 设置特技窗口为不可见状态
@skill_window.visible = false
# 效果范围是敌单体的情况下
if @skill.scope == 1
# 开始选择敌人
start_enemy_select
# 效果范围是我方单体的情况下
elsif @skill.scope == 3 or @skill.scope == 5
# 开始选择角色
start_actor_select
# 效果范围不是单体的情况下
else
# 选择特技结束
end_skill_select
# 转到下一位角色的指令输入
phase3_next_actor
end
return
end
end
def make_skill_action_result
# 获取特技
@skill = $data_skills[@active_battler.current_action.skill_id]
# 如果不是强制行动
unless @active_battler.current_action.forcing
# 因为 SP 耗尽而无法使用的情况下
unless @active_battler.skill_can_use?(@skill.id)
# 清除强制行动对像的战斗者
$game_temp.forcing_battler = nil
# 移至步骤 1
@phase4_step = 1
return
end
end
# 消耗 SP
@active_battler.sp -= @skill.sp_cost
#####################################
if @skill.id==81
$use_number-=1
end
#####################################
# 刷新状态窗口
@status_window.refresh
# 在帮助窗口显示特技名
@help_window.set_text(@skill.name, 1)
# 设置动画 ID
@animation1_id = @skill.animation1_id
@animation2_id = @skill.animation2_id
# 设置公共事件 ID
@common_event_id = @skill.common_event_id
# 设置对像侧战斗者
set_target_battlers(@skill.scope)
# 应用特技效果
for target in @target_battlers
target.skill_effect(@active_battler, @skill)
end
end
end
class Game_Battler
attr_accessor :live # 复活次数
##################################################
alias afx_initialize initialize
def initialize
afx_initialize
@live=0
end
def hp=(hp)
@hp = [[hp, maxhp].min, 0].max
# 解除附加的战斗不能状态
for i in 1...$data_states.size
if $data_states.zero_hp
if self.dead?
#if $scene.is_a?(Scene_Battle)
if state?(17)
item=$data_items[33]
self.item_effect(item)
remove_state(17)
@live=1
else
#end
add_state(i)
end
else
remove_state(i)
end
end
end
end
#################################################
end