Project1
标题:
遗忘技能系统
[打印本页]
作者:
工藤~新一じ
时间:
2016-5-2 03:04
标题:
遗忘技能系统
本帖最后由 工藤~新一じ 于 2016-5-2 03:11 编辑
在论坛搜索“遗忘”关键词,找了大部分帖子,没实现自己想要的效果,所以来伸手发帖了。
想做一个效果:
单独窗口,把队伍中第二位或者指定id的角色的所有技能列出来,选择哪个技能就遗忘哪个技能,按B键退出。。。
(。。。大大会扇脸伸手党吗?)
其实我在论坛找到了个不错的脚本:
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(0 , 120 , 320 , 240 , 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
复制代码
这个脚本是当角色学会技能时做一个判断,如果学会的技能在5个以上,就打开窗口,列出所有技能,再选择技能删除。
其实我想做的效果就和这个一样。所以有大大愿意帮我改吗?
作者:
578783944
时间:
2016-5-2 18:54
我给你提供个思路吧,其实窗口类Window的作用基本和Window_skill差不多,就是列出技能,你可以仿照。
自己写个Scene场景类,你的要求很简单,基本上几行代码就能搞定。多看自己游戏脚本,然后想想在游戏中是怎么实现的。
一般可能很少有人给你去写这个。
作者:
工藤~新一じ
时间:
2016-5-2 22:45
578783944 发表于 2016-5-2 18:54
我给你提供个思路吧,其实窗口类Window的作用基本和Window_skill差不多,就是列出技能,你可以仿照。
自己 ...
我居然成功了
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1