赞 | 7 |
VIP | 24 |
好人卡 | 24 |
积分 | 2 |
经验 | 10343 |
最后登录 | 2023-5-26 |
在线时间 | 2133 小时 |
Lv1.梦旅人 派大星
- 梦石
- 0
- 星屑
- 195
- 在线时间
- 2133 小时
- 注册时间
- 2011-9-18
- 帖子
- 2652
|
主站找的,不知有木有用:- 黑暗圣剑传说中,每个角色除了HP、SP以外,还根据角色不同有HP或SP的储存条。HP的储存条在挨打时候蓄气,SP储存条在战斗中使用技能时候蓄气。部分技能必须需要一条的HP、SP储存能量才能发出(一条是100点)。
- 本教学为高级教学,不推荐尚未学习脚本的新人看
- 下面简单说一下这个功能怎么制作:
- 1、添加HP_Store,SP_Store的储存数据,也就是储存条的能量。
- 由于只有Actor才有,所以在Game_Actor添加
-
- attr_accessor :hp_store # ★ 添加HP蓄气槽
- attr_accessor :sp_store # ★ 添加SP蓄气槽
- 并在def setup的时候让他们等于0
-
- @hp_store = 0 # ★
- @sp_store = 0 # ★
- 2、修改Game_Actor角色的可以使用特技判定,当遇到需要储存条的技能时候,如果储存能量不足,不能使用。
- #--------------------------------------------------------------------------
- # ● 可以使用特技判定 ★
- # skill_id : 特技 ID
- #--------------------------------------------------------------------------
- def skill_can_use?(skill_id)
- if not skill_learn?(skill_id)
- return false
- end
- if $data_skills[skill_id].element_set.include?(20) #如果是HP蓄气技能
- return false if @hp_store < 100
- end
- if $data_skills[skill_id].element_set.include?(21) #如果是SP蓄气技能
- return false if @sp_store < 100
- end
- return super
- end
- 这里假定带20号属性的是“HP蓄气技能”,带21号属性的是“SP蓄气技能”
-
- 3、在减血的时候储存@hp_store。ctrl_shift_F全局搜索.hp -=这个内容,每个下面都添加类似的东西:
- if self.is_a?(Game_Actor) # ★ 挨打的时候蓄HP储存条
- self.hp_store += [self.damage*100/self.maxhp , 0].max
- self.hp_store = [self.hp_store,300].min
- end
- 这里的意思是说,如果是角色,则hp_store的增长量为伤害占总血量的百分比,并且增长量要大于0,最大值小于300(最多3条)。这里的self.是因为这个地方是self.hp -=,如果是battler.则全部self改为battler。
- 你可以有选择性的选一部分伤害添加这个,比如地图中毒的时候减血并不储存能量,那么Game_Party中那个就不用改了。
- 除了.hp -= 还应该有.hp +=,这样会搜索到使用物品等处。不过黑暗圣剑中使用物品造成伤害并不会蓄槽,还有使用事件强行减的HP也不会蓄槽。所以这里就不做修改了。
- 4、类似的,找到所有的.sp -=和.sp +=,添加
- if @XX.is_a?(Game_Actor) # ★设定sp_store的增加
- @XX.sp_store += [@skill.sp_cost*100/@XX.maxsp, 0].max
- @XX.sp_store = [@XX.sp_store,300].min
- end
- 其中XX是那个.sp的主人,如@active_battler或@actor。黑暗圣剑中.sp +=这几个都没有改,也就是使用物品恢复SP、事件强行减SP这几个,不需要这样的效果。
- 5、添加使用技能消耗储存条。还是找到.sp -=,添加如下:
- if @skill.element_set.include?(20) #★,消耗HP储存条
- @XX.hp_store -= 100
- end
- if @skill.element_set.include?(21) #★,消耗SP储存条
- @XX.sp_store -= 100
- end
- 6、不同职业所拥有的槽不同。这里都只是显示的问题了,虽然角色本身都是有两个槽的,但是只要不显示并且不学会“不应该学会的特技”,完全可以用简单方法如下:我们把可以附带的槽,职业数据库有效度设置为A。比如战士可以附带HP蓄气槽,则20号属性有效度为A
- 接着,draw_actor_hp中定义一下(Window_Base或血槽脚本):
- if $data_classes[actor.class_id].element_ranks[20]==1 #追加描绘HP储存量
- self.contents.draw_text(hp_x+30, y, 48, 32, "("+actor.hp_store.to_s+")", 2)
- end
- 这只是一个简单的定义,因为窗口描绘不在这一节讲。同样定义SP的描绘:
- if $data_classes[actor.class_id].element_ranks[21]==1 #追加描绘HP储存量
- self.contents.draw_text(sp_x+30, y, 48, 32, "("+actor.sp_store.to_s+")", 2)
- end
- 7、其他使用。这样定义之后,可以用actor.hp_store += 来直接给actor增加蓄气槽。配合主站教学的“状态法”,就可以制作专门恢复蓄气槽的药了。
复制代码 |
|