Project1
标题: 如何能指定人物的1号2号技能进行遗忘。 [打印本页]
作者: yang1zhi 时间: 2014-11-12 12:19
标题: 如何能指定人物的1号2号技能进行遗忘。
我准备取消掉等级学技能。
按使用物品学技能。
而一个人物再设置个技能数上限,比如4个6个8个技能后就不能再学了。
想再学的时候必须遗忘掉已经学会的技能。
可是问题就来了。
默认的只能遗忘那些数据库里面的指定技能。而不是人物已学会的技能。
作者: 汪汪 时间: 2014-11-12 12:48
我的笨方法:对应的洗技能物品。
作者: yang1zhi 时间: 2014-11-12 12:52
我找到了VX的脚本。
可是放到XP里会报错。
特技数量限制
class Game_Actor
MAX_SKILL_NUM = 5
alias :rsn_learn_skill :learn_skill
def learn_skill(skill_id)
rsn_learn_skill(skill_id)
if @skills.size > MAX_SKILL_NUM
@window_rsn = Window_Forget_Skill.new(120 , 120 , 240 , 128 , self)
loop do
Graphics.update
Input.update
@window_rsn.update
break if @window_rsn.disposed?
end
end
end
end
class Game_Actor
MAX_SKILL_NUM = 5
alias :rsn_learn_skill :learn_skill
def learn_skill(skill_id)
rsn_learn_skill(skill_id)
if @skills.size > MAX_SKILL_NUM
@window_rsn = Window_Forget_Skill.new(120 , 120 , 240 , 128 , self)
loop do
Graphics.update
Input.update
@window_rsn.update
break if @window_rsn.disposed?
end
end
end
end
遗忘特技窗口
class Window_Forget_Skill < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# x : 窗口 X 座标
# y : 窗口 Y 座标
# width : 窗口宽度
# height : 窗口高度
# actor : 角色
#--------------------------------------------------------------------------
def initialize(x, y, width, height, actor)
super(x, y, width, height)
@actor = actor
@column_max = 1
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# ● 获取技能
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
@data = []
for skill in @actor.skills
@data.push(skill)
if skill.id == @actor.last_skill_id
self.index = @data.size - 1
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ● 描绘项目
# index : 项目编号
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
skill = @data[index]
if skill != nil
rect.width -= 4
enabled = true
draw_item_name(skill, rect.x, rect.y, enabled)
self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
end
end
#--------------------------------------------------------------------------
# ● 更新帮助窗口文字
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(skill == nil ? "" : skill.description)
end
alias :rsn_update :update
def update
rsn_update
if Input.trigger?(Input::B)
Sound.play_buzzer
return
end
if Input.trigger?(Input::C)
Sound.play_decision
@actor.forget_skill(skill.id)
self.dispose
return
end
end
end
class Window_Forget_Skill < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# x : 窗口 X 座标
# y : 窗口 Y 座标
# width : 窗口宽度
# height : 窗口高度
# actor : 角色
#--------------------------------------------------------------------------
def initialize(x, y, width, height, actor)
super(x, y, width, height)
@actor = actor
@column_max = 1
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# ● 获取技能
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
@data = []
for skill in @actor.skills
@data.push(skill)
if skill.id == @actor.last_skill_id
self.index = @data.size - 1
end
end
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ● 描绘项目
# index : 项目编号
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
skill = @data[index]
if skill != nil
rect.width -= 4
enabled = true
draw_item_name(skill, rect.x, rect.y, enabled)
self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
end
end
#--------------------------------------------------------------------------
# ● 更新帮助窗口文字
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(skill == nil ? "" : skill.description)
end
alias :rsn_update :update
def update
rsn_update
if Input.trigger?(Input::B)
Sound.play_buzzer
return
end
if Input.trigger?(Input::C)
Sound.play_decision
@actor.forget_skill(skill.id)
self.dispose
return
end
end
end
作者: 芯☆淡茹水 时间: 2014-11-12 15:09
在特技场景选择特技时加一个选择窗口: 使用特技 遗忘特技
使用特技 就是默认的功能。
遗忘特技 当前角色遗忘选中的特技,然后刷新特技窗口。
作者: RyanBern 时间: 2014-11-12 19:35
本帖最后由 RyanBern 于 2014-11-12 20:03 编辑
class Game_Actor
MAX_SKILL_NUM = 5
alias :rsn_learn_skill :learn_skill
def learn_skill(skill_id)
rsn_learn_skill(skill_id)
if @skills.size > MAX_SKILL_NUM
@window_rsn = Window_Forget_Skill.new(120 , 120 , 240 , 128 , self)
loop do
Graphics.update
Input.update
@window_rsn.update
break if @window_rsn.disposed?
end
end
end
end
class Window_Forget_Skill < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# x : 窗口 X 座标
# y : 窗口 Y 座标
# width : 窗口宽度
# height : 窗口高度
# actor : 角色
#--------------------------------------------------------------------------
def initialize(x, y, width, height, actor)
super(x, y, width, height)
@actor = actor
@column_max = 1
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# ● 获取技能
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for id in @actor.skills
@data.push($data_skills[id])
end
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, @item_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# ● 描绘项目
# index : 项目编号
#--------------------------------------------------------------------------
def draw_item(index)
x = 4
y = index * 32
skill = @data[index]
draw_item_name(skill, x, y)
end
alias :rsn_update :update
def update
rsn_update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.buzzer_se)
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@actor.forget_skill(skill.id)
self.dispose
return
end
end
end
class Game_Actor
MAX_SKILL_NUM = 5
alias :rsn_learn_skill :learn_skill
def learn_skill(skill_id)
rsn_learn_skill(skill_id)
if @skills.size > MAX_SKILL_NUM
@window_rsn = Window_Forget_Skill.new(120 , 120 , 240 , 128 , self)
loop do
Graphics.update
Input.update
@window_rsn.update
break if @window_rsn.disposed?
end
end
end
end
class Window_Forget_Skill < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
# x : 窗口 X 座标
# y : 窗口 Y 座标
# width : 窗口宽度
# height : 窗口高度
# actor : 角色
#--------------------------------------------------------------------------
def initialize(x, y, width, height, actor)
super(x, y, width, height)
@actor = actor
@column_max = 1
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# ● 获取技能
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for id in @actor.skills
@data.push($data_skills[id])
end
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, @item_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# ● 描绘项目
# index : 项目编号
#--------------------------------------------------------------------------
def draw_item(index)
x = 4
y = index * 32
skill = @data[index]
draw_item_name(skill, x, y)
end
alias :rsn_update :update
def update
rsn_update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.buzzer_se)
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
@actor.forget_skill(skill.id)
self.dispose
return
end
end
end
没测试。限制最大技能数量(例如是4个),那么学习第5个技能时,会先领悟,然后选择遗忘哪个
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |