Project1

标题: 求教修改队伍中角色的装备名字图像等的脚本写法 [打印本页]

作者: qknight    时间: 2017-1-12 11:18
标题: 求教修改队伍中角色的装备名字图像等的脚本写法
假设队伍中有一名随机角色,通过变量操作-读取第X个队员的角色ID,就可以得到这个随机角色的ID了

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

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

求大神指点


作者: RaidenInfinity    时间: 2017-1-12 11:58
首先你需要读本区置顶的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里面含有所有事件指令的脚本定义,基本上摸透了这一块儿,就非常强了。
作者: VIPArcher    时间: 2017-1-12 13:34
楼上说的请务必认真仔细阅读,我下面写的是偷懒的(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 类,应该就能找到你需要的方法,代入合适的参数就好了
作者: qknight    时间: 2017-1-12 14:57
actor.change_equip_by_id(0, 62)
武器用这一串更换成功了
actor.change_equip_by_id(3, 1)
衣服用这一串却没反应,是因为使用了装备拓展脚本的缘故吗?
作者: qknight    时间: 2017-1-12 15:13
RaidenInfinity 发表于 2017-1-12 11:58
首先你需要读本区置顶的F1汉化帮助文档,认识Ruby脚本语言的基本语法,操作符与方法。

你需要知道的是:

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

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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1