本帖最后由 魔法丶小肉包 于 2020-10-24 14:29 编辑
class Game_Actor
attr_accessor :sp
def s_l
@skill_level
end
def learn_skill( skill_id,sk_level=0 )
unless skill_learn?( $data_skills[ skill_id] )
@skills .push ( skill_id)
@skills .sort !
@skill_level [ skill_id] =sk_level
end
end
end
class Game_Interpreter
def reset_skill( actor_id)
a = $game_actors [ actor_id]
b = a.s_l .dup
$game_variables [ 1 ] [ actor_id] = [ a.sp ,a.skills ,b]
if a.reset_skill
a.hp = [ a.hp ,a.mhp ] .min
a.mp = [ a.mp ,a.mmp ] .min
end
end
def recover_skill( actor_id)
$game_actors [ actor_id] .sp = $game_variables [ 1 ] [ actor_id] [ 0 ]
b = $game_variables [ 1 ] [ actor_id] [ 2 ]
$game_variables [ 1 ] [ actor_id] [ 1 ] .each do |s|
$game_actors [ actor_id] .learn_skill ( s.id ,b[ s.id ] )
end
end
end
class Game_Actor
attr_accessor :sp
def s_l
@skill_level
end
def learn_skill( skill_id,sk_level=0 )
unless skill_learn?( $data_skills[ skill_id] )
@skills .push ( skill_id)
@skills .sort !
@skill_level [ skill_id] =sk_level
end
end
end
class Game_Interpreter
def reset_skill( actor_id)
a = $game_actors [ actor_id]
b = a.s_l .dup
$game_variables [ 1 ] [ actor_id] = [ a.sp ,a.skills ,b]
if a.reset_skill
a.hp = [ a.hp ,a.mhp ] .min
a.mp = [ a.mp ,a.mmp ] .min
end
end
def recover_skill( actor_id)
$game_actors [ actor_id] .sp = $game_variables [ 1 ] [ actor_id] [ 0 ]
b = $game_variables [ 1 ] [ actor_id] [ 2 ]
$game_variables [ 1 ] [ actor_id] [ 1 ] .each do |s|
$game_actors [ actor_id] .learn_skill ( s.id ,b[ s.id ] )
end
end
end
使用之前请在事件中设置一下$game_variables[1] = []
设置一次就好,推荐在开始新游戏的时候就设置好
事件脚本
reset_skill(actor_id)可以重置actor_id角色的技能和SP
recover_skill(actor_id)可以恢复最近一次重置之前的技能和SP
如果使用洗点水的话,暂时没写恢复功能,如有需要添加进去行了