设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4814|回复: 3
打印 上一主题 下一主题

[已经解决] 【★】如何制作被动技能,根据HP多少自动附加状态?

[复制链接]

Lv4.逐梦者 (管理员)

砂上描绘的愿想

梦石
15
星屑
4019
在线时间
5070 小时
注册时间
2012-1-15
帖子
4617

开拓者贵宾短篇七成年组亚军剧作品鉴家

跳转到指定楼层
1
发表于 2012-10-11 01:58:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 迷糊的安安 于 2012-10-25 10:58 编辑

本问题为【Ace推荐问答计划】活动问题。
详情请点击:http://rpg.blue/forum.php?mod=viewthread&tid=251118

实现要求:持有特定技能的人,根据HP/MP的多少(如HP100%以下,50%以上)会自动附加/消除特定状态。(如HP50~100%会自动附加特定编号的状态,HP50%以下则自动消去)。

进阶要求:实现“可以随时自主决定启用/停用的被动技能”。
参考思路是在技能备注中写上类似<SkillSwitch=10>的说明,则只有当11号开关打开时,该技能才会对1号角色产生判断,当14号开关打开时,该技能才会对4号角色产生判断,总之就是SkillSwitch+人物ID编号的开关决定该人物是否开启该被动技能,(当然产生判断的前提依然需要对应角色持有该技能),以此用技能引发公共事件决定是否启用/停用被动技能的效果。当然不用公共事件直接脚本关联也可,总之要让玩家了解该被动技能的启用/停用状况。

点评

嗷呜,请求安安审查。弱弱地提醒一下,免得被遗忘了。  发表于 2012-10-16 15:51
若后退就皆成谎言。

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4509
在线时间
5228 小时
注册时间
2009-4-29
帖子
14318

贵宾

2
发表于 2012-10-12 13:27:11 | 只看该作者
本帖最后由 protosssonny 于 2012-10-12 13:38 编辑

先给范例链接:http://pan.baidu.com/share/link?shareid=83193&uk=875076719

实现要求:持有特定技能的人,根据HP/MP的多少(如HP x%以下/以上)会自动附加/消除特定状态
进阶要求:实现“可以随时自主决定启用/停用的被动技能”。
特点1——【自主决定启用/停用】
只需要利用以下事件脚本就可以随时启用/停用被动技能:
  1. n = P叔::HP_VARIABLE
  2. $game_variables[n] = [40,35,0,45]
复制代码
比如数组的第0,1,3个元素是大于0的,说明当队伍1号、队伍2号和队伍4号学会指定技能后,当hp≤改百分比时附加状态,对3号角色无效,因为$game_variables[n][2] == 0。当对应的数值为0就认定对该角色无效。
注意,由于事件脚本框宽度不足的原因,请不要这样写:
  1. $game_variables[P叔::HP_VARIABLE] = [40,35,0,45]
复制代码
特点2——【多数值控制】这是追加功能哦
启动的数值不拘泥于一个数字,而是可以实现不同的角色对应不同的数值,比如默认的1号角色是对应40%,2号角色对应35%,3号角色无效,4号角色对应45%。
特点3——【开关节省】这是优化功能哦
因为考虑到会暂用4个开关以及并行判断备注会暂用内存,所以本范例是不支持<SkillSwitch=10>的写法的。
如果按照进阶要求<SkillSwitch=10>这样写,假如有4个角色会消耗4个开关,这里避免了利用开关来控制,而是用一个变量$game_variables[P叔::HP_VARIABLE]就搞定了,节省了4个开关。只需要把有效角色对应的数组元素改成大于0的数即可,等于0表示无效。不过要注意,在脚本的最上方要设定这个变量的参数,否则就默认是10号变量了哦。

注意:
1、脚本最上方有及三参数,如果有需要请自行修改。
2、优先级——角色是否学会指定被动技能的判定是最优先的,如果没有学会的话,即使$game_variables[n][X] 大于0也无效。


按要求截图:
当战斗时会生效:

当事件强制HP变化时也会生效:


按要求上脚本:
  1. module P叔
  2.   #==============参==============数==============设==============定==============
  3.   # 请在下面设定被动技能的ID,当角色拥有该被动技能时才会触发状态附加。
  4.   # 默认设置是127号技能。
  5.     SKILL_ID = 127
  6.   # 请在下面设定附加状态的ID
  7.   # 默认设置是26号状态。
  8.     STATE_ID = 26
  9.   # 请设定HP限定变量的ID,用于控制各项数值。
  10.   # 默认设置是10号变量。
  11.     HP_VARIABLE = 10
  12.   # HP限定变量是类似这样一个特殊的一维数组变量:
  13.   # $game_variables[P叔::HP_VARIABLE] = [40,35,0,45]
  14.   # 默认表示当队伍1号的HP小于或等于40才附加状态;当队伍2号的HP小于或等于35才附加状态;
  15.   # 队伍3号无效化,队伍4号的HP小于或等于45才附加状态
  16.   #==============================================================================
  17. end

  18. class Scene_Base
  19.   
  20.   #--------------------------------------------------------------------------
  21.   # ● 更新画面
  22.   #--------------------------------------------------------------------------
  23.   def update
  24.     auto_state_by_skill                                 # 添加了本句
  25.     update_basic
  26.   end
  27.   
  28.   #--------------------------------------------------------------------------
  29.   # ● 附加状态  自定义函数
  30.   #--------------------------------------------------------------------------
  31.   def auto_state_by_skill
  32.     if $game_variables[P叔::HP_VARIABLE].class == Array # 当HP限定变量才执行
  33.       return if $game_party.members.empty?
  34.       for i in 0...$game_party.members.size
  35.         j = $game_party.members[i]
  36.         j.remove_state(P叔::STATE_ID) if j.hp <= 0      # 死亡时解除状态
  37.         next unless j.skill_learn?($data_skills[P叔::SKILL_ID]) # 没有学会技能则跳过
  38.         # 当hp<=最大hp的百分比时,附加状态STATE_ID,否则就解除
  39.         j.hp <= j.mhp * $game_variables[P叔::HP_VARIABLE][i] / 100.0 ? j.add_state(P叔::STATE_ID) : j.remove_state(P叔::STATE_ID)
  40.       end  
  41.     end  
  42.   end
  43. end
复制代码

点评

这个本来就不是队伍设置,而是对学会指定技能的角色生效。看脚本中的开头介绍。[url=home.php?mod=space&username=lirn]@lirn[/url]  发表于 2012-11-19 11:51
就是将HP换成TP吗,然后少于号换成大于好?还有一点的是,我是固定某一个角色,而不是队伍位置,那还改改哪里。  发表于 2012-11-19 11:47
那还不是举一反三的吗?自己要多动脑筋,喵![url=home.php?mod=space&username=lirn]@lirn[/url]  发表于 2012-11-19 11:42
那如果我希望是TP附加状态呢?类似士气,比如高于60附加状态A,低于60则自动移除。  发表于 2012-11-19 09:31
原来如此~明白了~附加状态2的时候也可以把状态1去掉~谢谢咯~  发表于 2012-10-12 14:09

评分

参与人数 1梦石 +6 收起 理由
迷糊的安安 + 6 最佳答案 好人卡+3

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
109
在线时间
65 小时
注册时间
2012-9-28
帖子
99
3
发表于 2012-10-15 13:26:43 | 只看该作者
这个功能果然是需要用到脚本么- -  

只会用事件的猫默默的窜过。。。。。。。
回复

使用道具 举报

Lv4.逐梦者 (管理员)

砂上描绘的愿想

梦石
15
星屑
4019
在线时间
5070 小时
注册时间
2012-1-15
帖子
4617

开拓者贵宾短篇七成年组亚军剧作品鉴家

4
 楼主| 发表于 2012-10-19 19:56:37 | 只看该作者
protosssonny 发表于 2012-10-12 13:27
先给范例链接:http://pan.baidu.com/share/link?shareid=83193&uk=875076719

实现要求:持有特定技能的人 ...

已测试,实现得非常好。最佳答案。

不过P叔要不要再试试扩展一下脚本,把定义语句挪到技能备注里,试试做多个被动技能同时支持呢?然后发到技术发布区?
若后退就皆成谎言。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-7 07:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表