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

Project1

 找回密码
 注册会员
搜索
查看: 4271|回复: 6

[原创发布] 【实用脚本改造教程】如何判定物品、武器、防具的所持数

 关闭 [复制链接]

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
发表于 2009-7-29 23:59:28 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 TERENCE 于 2009-7-30 00:44 编辑

【实用脚本改造教程】如何判定物品、武器、防具的所持数
======================================================
◎前言
最近刚好要用到这种效果,所以在此分享我的思路。
不知道这种类似的教程,是否以前就有发过了,
儘管发过,我也以详述的方式来介绍,
这是真对RUBY物件导向(对象指向)有基础认识的人所做的教程,
希望这个脚本改造教程对你们有帮助。
当然脚本盲,跟著该教程一同改造,也能达成。

◎默认事件的基本实现办法与限制
我想这对事件派的人,是在简单不过的事了。
只要利用变量操作,就可以实现判定物品的所持数。
金钱更不用说,默认事件的条件分歧裡就可以直接判定...
但是纯事件却无法判定武器、防具的所持数。
即便是用变量加减来决定得到失去武器、防具的所持数,
在买卖武器、防具,会变得很不好处理,
而且可能使用大量的变量与併行处理事件。

◎实用脚本改造
开啟脚本编辑器找到Game_Party这个类别,
在这裡面你会看到定义实例变数的地方如下:
#--------------------------------------------------------------------------
# ● 定义实例变数
#--------------------------------------------------------------------------
attr_reader   :actors                  # 角色
attr_reader   :gold                     # 金钱
attr_reader   :steps                   # 步数

找到后在这下面的地方添加这三句,
基本上改造很简单就完成了
  1. attr_reader   :items
  2. attr_reader   :armors
  3. 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.
为了一些脚本符号盲,再解释几样东西吧= =
== 相同
>= 以上
<= 以下
>   超过
<   未满
!=  不同

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说

Lv4.逐梦者

梦石
0
星屑
6545
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

发表于 2009-7-30 03:00:18 | 显示全部楼层
沙发我来坐坐^_^

讲得很详细啊~~支持一下~~!











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

伸手爱好者

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-3-28
帖子
527
发表于 2009-7-30 13:28:20 | 显示全部楼层
占个楼.
支持一下~
我对脚本一窍不通,还是继续做我的事件派吧~
咱在咱的设计素描书上看到有“柳笛”这个名字,恩~到底有怎样的关系呢?
[img]http://rpg.blue/data/attachment/forum/month_0910/09102318341719b34b80b536d4.gif[/img]
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3239
在线时间
3615 小时
注册时间
2006-9-6
帖子
37397

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

发表于 2009-7-30 17:20:23 | 显示全部楼层
可能做ARPG的时候会用到吧。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

发表于 2009-7-30 17:27:48 | 显示全部楼层
前来支持,我一般用事件做,工作量大点。
至于武器和防具……本着做不到就绕道,都没有研究过。
现在研究下吧……
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
128 小时
注册时间
2009-1-28
帖子
2790
发表于 2009-7-30 18:28:06 | 显示全部楼层
龙仔又出教程了吗?赶快来膜拜下.................

炼金术的根本法则是等价交换。想要获得,必须失去同等价值的东西。每当烦躁的时候,煎熬在不想做却又正在做的烦心事中的时候,我就安慰自己,提醒自己做这些事情的目的所在,告诉自己不要忽略所获得或者即将获得的回报,物质的,精神的,肉体的,灵魂的回报!只做想做的事情,就会失去不想失去的东西。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
45
在线时间
47 小时
注册时间
2009-6-1
帖子
127
发表于 2009-7-30 19:41:30 | 显示全部楼层
雖然簡單不過很推薦XD
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-3-29 16:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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