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

Project1

 找回密码
 注册会员
搜索
查看: 2434|回复: 5
打印 上一主题 下一主题

[已经解决] 求教修改队伍中角色的装备名字图像等的脚本写法

[复制链接]

Lv2.观梦者

梦石
0
星屑
352
在线时间
377 小时
注册时间
2013-1-30
帖子
219
跳转到指定楼层
1
发表于 2017-1-12 11:18:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
假设队伍中有一名随机角色,通过变量操作-读取第X个队员的角色ID,就可以得到这个随机角色的ID了

可问题是,能力值、等级、技能什么的都可以用编辑器中变量指定的方法来修改

唯独装备、名字、职业、称号、头像和行走图不能这么做,故求用脚本来直接指定1号变量ID的角色的装备、名字、职业、称号、头像和行走图的方法

求大神指点

Lv4.逐梦者 (版主)

梦石
0
星屑
6901
在线时间
7028 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

2
发表于 2017-1-12 11:58:50 | 只看该作者
首先你需要读本区置顶的F1汉化帮助文档,认识Ruby脚本语言的基本语法,操作符与方法。

你需要知道的是:
1. $game_actors是包含角色资料的数组(不懂的词汇请看帮助文档或者百度搜索)
2. $game_variables是包含变量的数组

组合起来,1号变量内存着的角色:
v = $game_variables[1]
actor = $game_actors[v]
为啥分两行是因为VA1.00版里面事件脚本指令窗很小容纳不下太长的
如果是脚本编辑器内的话,actor = $game_actors[$game_variables[1]]
那么现在actor这个当局变量里面存着角色数据了,要怎么改呢?

首先在这里传授一下两个黑科技方法:
instance_variable_set 设置实例变量
instance_variable_get 获取实例变量

怎么用?那么你要知道的是,角色是Game_Actor的实例!


看到那些橘黄色的字了吗?绿色注释应该很明显了吧。
那么如果要更改名字的话:
actor.instance_variable_set(:@name, "新名字")
注意冒号和@这两个符号是并用的

所以整合起来,如果我要改东西:
RUBY 代码复制
  1. actor = $game_actors[$game_variables[1]]
  2. if actor #检查角色是否存在,否则超出最大角色数量会报错,如果确定不会出现这种情况可以移除这行
  3.    actor.instance_variable_set(:@name, "新名字")
  4.    actor.instance_variable_set(:@nickname, "新称号")
  5.    actor.instance_variable_set(:@character_name, "新行走图图片")
  6.    actor.instance_variable_set(:@character_index, 0) #行走图序号,0到7
  7.    actor.instance_variable_set(:@face_name, "新脸图图片")
  8.    actor.instance_variable_set(:@face_index, 0) #脸图图序号,0到7
  9.    actor.instance_variable_set(:@class_id, 1) #就…职业ID啊
  10. end #这个是配对上面的if的


那么有个问题就是,如果脚本框太短太小怎么办?
那就把这段脚本作为一个方法,包进去Game_Interpreter里面
就可以直接在事件脚本指令内调用了

脚本编辑器:(开新的插件脚本)


事件脚本指令:


最后要说下,脚本是魔法,基本上什么都能做。学好脚本,对于独立游戏制作者来说是很重要的事。
还有就是,其实很多东西都能从默认脚本的注释里面学到,至少你得知道默认脚本提供了你什么。
嗯…你可能会发现,没有提到改装备?自己去研究吧!给个提示:去查看Game_Interpreter脚本
Game_Interpreter里面含有所有事件指令的脚本定义,基本上摸透了这一块儿,就非常强了。

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 2017-1-12 13:34:15 | 只看该作者
楼上说的请务必认真仔细阅读,我下面写的是偷懒的(actor怎么获取看楼上
名字和称号都是可读写的,所以可以直接用
  1. actor.name = "新名字"
  2. actor.nickname = "新称号"
复制代码

更换行走图,脸图,装备什么的,默认脚本有封装好的方法可以用
  1. actor.set_graphic("新行走图的文件名", 行走图角色元序号ID, "新脸图文件名", 脸图角色元序号ID)
  2. actor.change_equip_by_id(装备栏ID, 武器/防具ID)
  3. actor.change_class(职业ID, 是否保留经验【true/false】)
复制代码


上面这些都是可以在默认脚本里找到的,你只需要翻翻看 Game_Actor 类,应该就能找到你需要的方法,代入合适的参数就好了

评分

参与人数 1梦石 +1 收起 理由
RaidenInfinity + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
352
在线时间
377 小时
注册时间
2013-1-30
帖子
219
4
 楼主| 发表于 2017-1-12 14:57:55 | 只看该作者
actor.change_equip_by_id(0, 62)
武器用这一串更换成功了
actor.change_equip_by_id(3, 1)
衣服用这一串却没反应,是因为使用了装备拓展脚本的缘故吗?

点评

也许是你给的装备ID与装备槽不合(无法装备),检查下吧。也许装备拓展脚本更改了装备槽的ID而导致这种事情的发生  发表于 2017-1-12 15:06
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
352
在线时间
377 小时
注册时间
2013-1-30
帖子
219
5
 楼主| 发表于 2017-1-12 15:13:26 | 只看该作者
RaidenInfinity 发表于 2017-1-12 11:58
首先你需要读本区置顶的F1汉化帮助文档,认识Ruby脚本语言的基本语法,操作符与方法。

你需要知道的是:

装备拓展脚本里只是新加了一些装备栏,前面还是0武器、1盾牌、2帽子、3护甲的……

不过,就算不能换装备只要能更换名字、形象和技能就已经满足了在下的需求了。感谢版主的指点!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 03:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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