赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 475 |
最后登录 | 2020-5-5 |
在线时间 | 1 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 60
- 在线时间
- 1 小时
- 注册时间
- 2008-4-4
- 帖子
- 42
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
各位老师,我在看本站的《跟我从头学Ruby》,在第四章第四节中有如下示范:
(第四章)第四节 实战事件脚本:十步杀一人
这里我们通过一个详尽的例子,来实现这样一个系统:
角色正在危机四伏的地牢中行走,如果不慎踏中了有埋伏的格子(地形标记为4),恰好此时的步数能被10整除,那么发生战斗,这样的战斗无法逃跑,也不允许失败。
先来看看用纯粹的事件指令实现这个系统:一个并行事件
变量操作:[0001]=角色的地形标记
变量操作:[0002]=步数
变量操作:[0002]%=10
条件分歧:变量[0001]==4
条件分歧:变量[0002]==0
战斗处理
分歧结束
分歧结束
好像并不算很复杂。但是实际处理中就会发现,如果发生了一场战斗以后,好不容易战胜,刚退出来发现马上又开始了一场战斗。如此往复,无尽循环。“十步杀一人”变成了“身陷重围”,角色纵使带了100个大补药,也无济于事了……
事实上,如果不用脚本的话,这个系统是不能实现的,因为在默认的条件分歧等操作中,没有提供“判断角色是不是在移动”这样的功能。导致角色一旦进入一个满足了战斗条件的格子,就会一直在里面战斗……无法出来。
那么应该怎么办呢?
条件分歧:$game_player.moving?
变量操作:[0001]=角色的地形标记
变量操作:[0002]=步数
变量操作:[0002]%=10
条件分歧:变量[0001]==4
条件分歧:变量[0002]==0
战斗处理
分歧结束
分歧结束
分歧结束
这样,只有在角色移动时,才会判断是不是要进行战斗处理。$game_player.moving?是判断主角是否在移动中的脚本,返回一个true或false的值,当该值为true时,执行分歧里面的操作。
现在来看看能不能优化一下这个系统,可以发现,每次战斗处理,要计算3次变量的值,比较2次。
我们来试图直接获得游戏对象的值,替代烦人的变量操作
条件分歧:$game_player.moving?
条件分歧:$game_player.terrain_tag == 4 and $game_party.steps % 10 == 0
战斗处理
分歧结束
分歧结束
好了,完成了,大家可以自己测试一下。
关于如何在脚本中调用那些游戏对象的值,在本教程全系列完成后的附录里会专门列一张表,大家也可以查看站上的教程“在事件中使用的常用脚本”,里面给出了部分游戏对象的脚本引用方法。
这个范例我怎么根本没法在RMXP中演示,难到是我输入方法问题?我做了几种输入脚本的方法测试,都无法演示,到底是我的输入问题还是这个教学脚本问题?特来请教各位老师!
谢谢! 版务信息:本贴由楼主自主结贴~ |
|