Project1
标题:
【实用脚本改造教程】如何判定物品、武器、防具的所持数
[打印本页]
作者:
TERENCE
时间:
2009-7-29 23:59
标题:
【实用脚本改造教程】如何判定物品、武器、防具的所持数
本帖最后由 TERENCE 于 2009-7-30 00:44 编辑
【实用脚本改造教程】如何判定物品、武器、防具的所持数
======================================================
◎前言
最近刚好要用到这种效果,所以在此分享我的思路。
不知道这种类似的教程,是否以前就有发过了,
儘管发过,我也以详述的方式来介绍,
这是真对
RUBY物件导向(对象指向)有基础认识的人
所做的教程,
希望这个脚本改造教程对你们有帮助。
当然脚本盲,跟著该教程一同改造,也能达成。
◎默认事件的基本实现办法与限制
我想这对事件派的人,是在简单不过的事了。
只要利用
变量操作
,就可以实现判定物品的所持数。
金钱更不用说,默认事件的
条件分歧
裡就可以直接判定...
但是纯事件却无法判定武器、防具的所持数。
即便是用变量加减来决定得到失去武器、防具的所持数,
在买卖武器、防具,会变得很不好处理,
而且可能使用大量的变量与併行处理事件。
◎实用脚本改造
开啟脚本编辑器找到Game_Party这个类别,
在这裡面你会看到
定义实例变数
的地方如下:
#--------------------------------------------------------------------------
# ● 定义实例变数
#--------------------------------------------------------------------------
attr_reader
:
actors
# 角色
attr_reader
:
gold
# 金钱
attr_reader
:
steps
# 步数
找到后在这下面的地方添加这三句,
基本上改造很简单就完成了
attr_reader :items
attr_reader :armors
attr_reader :weapons
复制代码
◎原理说明教程 (
脚本盲就先跳过吧
)
在定义实例变数往下的地方来看,
会看到初始化物件的地方,
#--------------------------------------------------------------------------
# ● 初始化物件
#--------------------------------------------------------------------------
def
initialize
# 建立角色序列
@actors
= []
# 初始化金钱与步数
@gold
=
0
@steps
=
0
# 產生物品、武器、防具的所持数 hash
@items
= {}
@weapons
= {}
@armors
= {}
end
我们发现三个建立
物品
、
武器
、
防具
所持数的哈希表(HASH/杂凑)
@items
@weapons
@armors
这三个实体变数在默认的Game_Party脚本裡,
是无法从物件外部直接读取实体变数,
默认的Game_Party脚本裡,
只允许读取角色、金钱、步数三个实体变数
也就是
@actors @gold @steps
这三个实体变数
说白一点就是默认的Game_Party脚本裡.....
只定义了这三个可读实例变数,如下:
attr_reader :actors
attr_reader :gold
attr_reader :steps
因此在这下面的地方才添加这三句,
attr_reader :items
attr_reader :armors
attr_reader :weapons
让物品、武器、防具三个实体变数可以从外部直接读取
这就是所谓的
存取实体变数(的方法)
於是RUBY提供了以下三句 用来快速定义这些方法
attr_reader
# 只定义用来
读取
实体变数的方法
attr_writer
# 只定义用来
写入
实体变数的方法
attr_accessor
# 定义用来
可读可写
实体变数的方法
◎如何使用
本类别的实例请是参考於
$game_party
所以要读取物品、武器、防具三个实体变数,就是
$game_party.items
$game_party.armors
$game_party.weapons
因為这三个都是哈希表(HASH/杂凑)
所以只要游戏中 获得物品、武器、防具时,
就会自动将他们的
ID(键)
与
所持数(值)
放入其中,
{ ID(键)=>所持数(值) }
故此我们可以在条件分歧的脚本空格裡写上:
$game_party.items[物品ID]==所要判断的所持数
$game_party.armors[武器ID]==所要判断的所持数
$game_party.weapons[防具ID]==所要判断的所持数
这三种判断式,
而且更好的事能判断
nil(空)值
,
為什麼我说能判断
nil(空)值
是好事,
这是因為这三个哈希表(HASH/杂凑),
只有在得到新种东西时,会记录在裡头永不消失,
即便该东西的所持数变零时,也会有纪录(这时值会等於零)
{ ID(键)=>0 }
换句话说,就是在没得到新种东西时,
利用这三种判断式访问,会出现nil(空)值,
说明白一点就是能够利用这个nil(空)值或0值
判定该样东西是不是曾经有得到过
改成这个样子后,可以大量减少变量与事件的使用,非常实用=w=
P.S.
正在装备的武器和防具也会影响所持数请务必注意。
武器和防具的所持数是代表在武器栏和防具栏(未装备)的数量
再P.S.
为了一些脚本符号盲,再解释几样东西吧= =
== 相同
>= 以上
<= 以下
> 超过
< 未满
!= 不同
作者:
后知后觉
时间:
2009-7-30 03:00
沙发我来坐坐^_^
讲得很详细啊~~支持一下~~!
作者:
悠悠炸弹
时间:
2009-7-30 13:28
占个楼.
支持一下~
我对脚本一窍不通,还是继续做我的事件派吧~
作者:
越前リョーマ
时间:
2009-7-30 17:20
可能做ARPG的时候会用到吧。
作者:
风雪优游
时间:
2009-7-30 17:27
前来支持,我一般用事件做,工作量大点。
至于武器和防具……本着做不到就绕道,都没有研究过。
现在研究下吧……
作者:
霜冻之狼
时间:
2009-7-30 18:28
龙仔又出教程了吗?赶快来膜拜下.................
作者:
WildDagger
时间:
2009-7-30 19:41
雖然簡單不過很推薦XD
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1