赞 | 40 |
VIP | 559 |
好人卡 | 234 |
积分 | 47 |
经验 | 251834 |
最后登录 | 2024-12-5 |
在线时间 | 5240 小时 |
Lv3.寻梦者 (版主) 八宝粥的基叔
- 梦石
- 0
- 星屑
- 4699
- 在线时间
- 5240 小时
- 注册时间
- 2009-4-29
- 帖子
- 14318
|
本帖最后由 protosssonny 于 2012-10-12 13:38 编辑
先给范例链接:http://pan.baidu.com/share/link?shareid=83193&uk=875076719
实现要求:持有特定技能的人,根据HP/MP的多少(如HP x%以下/以上)会自动附加/消除特定状态
进阶要求:实现“可以随时自主决定启用/停用的被动技能”。
特点1——【自主决定启用/停用】
只需要利用以下事件脚本就可以随时启用/停用被动技能:- n = P叔::HP_VARIABLE
- $game_variables[n] = [40,35,0,45]
复制代码 比如数组的第0,1,3个元素是大于0的,说明当队伍1号、队伍2号和队伍4号学会指定技能后,当hp≤改百分比时附加状态,对3号角色无效,因为$game_variables[n][2] == 0。当对应的数值为0就认定对该角色无效。
注意,由于事件脚本框宽度不足的原因,请不要这样写:- $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变化时也会生效:
按要求上脚本:- module P叔
- #==============参==============数==============设==============定==============
- # 请在下面设定被动技能的ID,当角色拥有该被动技能时才会触发状态附加。
- # 默认设置是127号技能。
- SKILL_ID = 127
- # 请在下面设定附加状态的ID
- # 默认设置是26号状态。
- STATE_ID = 26
- # 请设定HP限定变量的ID,用于控制各项数值。
- # 默认设置是10号变量。
- HP_VARIABLE = 10
- # HP限定变量是类似这样一个特殊的一维数组变量:
- # $game_variables[P叔::HP_VARIABLE] = [40,35,0,45]
- # 默认表示当队伍1号的HP小于或等于40才附加状态;当队伍2号的HP小于或等于35才附加状态;
- # 队伍3号无效化,队伍4号的HP小于或等于45才附加状态
- #==============================================================================
- end
- class Scene_Base
-
- #--------------------------------------------------------------------------
- # ● 更新画面
- #--------------------------------------------------------------------------
- def update
- auto_state_by_skill # 添加了本句
- update_basic
- end
-
- #--------------------------------------------------------------------------
- # ● 附加状态 自定义函数
- #--------------------------------------------------------------------------
- def auto_state_by_skill
- if $game_variables[P叔::HP_VARIABLE].class == Array # 当HP限定变量才执行
- return if $game_party.members.empty?
- for i in 0...$game_party.members.size
- j = $game_party.members[i]
- j.remove_state(P叔::STATE_ID) if j.hp <= 0 # 死亡时解除状态
- next unless j.skill_learn?($data_skills[P叔::SKILL_ID]) # 没有学会技能则跳过
- # 当hp<=最大hp的百分比时,附加状态STATE_ID,否则就解除
- j.hp <= j.mhp * $game_variables[P叔::HP_VARIABLE][i] / 100.0 ? j.add_state(P叔::STATE_ID) : j.remove_state(P叔::STATE_ID)
- end
- end
- end
- end
复制代码 |
评分
-
查看全部评分
|