楼主: 阿薯救世主

[已经解决] 我想重新定义一下角色的属性,新人刚学脚本

[复制链接]
梦石
0
星屑
724
在线时间
685 小时
注册时间
2009-5-29
回帖
332
发表于 2013-12-25 14:05:03 | 显示全部楼层
定义一个Hash作为全局变量,参照 $game_party, 就这么简单。

点评

知道全局变量是什么和如何定义,但是不知道hash是什么,看了一些$game_party的搜索明白不了什么……  发表于 2013-12-25 14:15
回复

使用道具 举报

老黄鸡

梦石
4
星屑
45739
在线时间
7952 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2013-12-25 14:05:31 | 显示全部楼层
阿薯救世主 发表于 2013-12-25 13:12
我设想:
      因为我不想动元脚本的东西,所以我新建一个类继承了Game_Actor,然后这个类就是处理新增 ...

这样是可以的。
另外模块在游戏制作里的用途你可以理解为命名空间- -

点评

是,多谢van样  发表于 2013-12-25 14:17
RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
55
在线时间
218 小时
注册时间
2013-12-17
回帖
368
发表于 2013-12-25 14:16:28 | 显示全部楼层
本帖最后由 国产吃货 于 2013-12-25 14:18 编辑

hash 哈希表
作用类同于一个二维数组。
A={"吴莉嘉"=>10,"班尼特"=15}
我定义了一个叫A的hash表,表内有两个数据。
如果我调用,A["班尼特"],那么会返回 15
同理,调用A["吴莉嘉],则会返回10
如果我调用A["伊尔维亚"],由于A里面没有叫伊尔维亚的主键,所以就会返回默认的nil(空)

新增属性其实很简单,只不过RM编辑器只和默认的脚本兼容。
你新增的属性要么自己在脚本里赋值,要么想其他的办法赋值。

比如 好感度。
[pre lang="ruby" line="1"]class Game_Actor < Game_Battler
  attr_accessor :friend
  alias old_initialize initialize
  def initialize(actor_id)
    old_initialize(actor_id)
    @friend = {}
  end
end
[/pre]
这样就给Actor类添加了一个新的属性,当然这只是创建了一个属性,还没有处理它的方法,
就算这样,他也具备工作能力了。
比如
[pre lang="ruby" line="1"]# 获取好感度
name=$game_actors[2].name    # 第二个角色的名字
$game_actors[1].friend[name] # 返回一号角色对二号角色的好感度
$game_actors[1].friend[name]=0 if  $game_actors[1].friend[name]==nil
# 设置好感度
name=$game_actors[2].name    # 第二个角色的名字
p $game_actors[1].friend[name]+=10 # 设置一号角色对二号角色为0[/pre]

点评

嗯,我明白了。就是相当于使用了映射的方式,多谢!  发表于 2013-12-25 14:23
第一段的第六行=@friend={}  发表于 2013-12-25 14:19

评分

参与人数 1梦石 +1 收起 理由
Sion + 1 感谢帮忙

查看全部评分

RM脚本定制/修改/整合 群:143356012(入群注明来意)
回复

使用道具 举报

梦石
0
星屑
50
在线时间
33 小时
注册时间
2011-6-27
回帖
38
 楼主| 发表于 2013-12-26 16:56:01 | 显示全部楼层
啊,这一步终于过了!
结果还是觉得t酱说的重写比新增类要方便得多。
这个问题可以关了?
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部