Project1

标题: 尝试用事件脚本把队伍倒过来! [打印本页]

作者: 我是老A    时间: 2020-2-25 17:52
标题: 尝试用事件脚本把队伍倒过来!
本帖最后由 我是老A 于 2020-2-25 17:56 编辑

送给直接想看结果的同学们:
  1. $gameParty._actors = [4,3,2,1]
  2. //[4,3,2,1]分别是角色ID
复制代码

进RM已经有10年了,脚本不会写,但也会一点读代码的我……
最近一直在探索在实践中使用脚本来实现纯事件无法实现的功能。近日我的工程中设计了一个治疗的系统,其中涉及让“无法战斗”的队员离队之后再归队,但是问题来了:如果无法战斗的成员是原来打头的A成员,但离队在归队之后,它就变成了跟随在B成员后面的成员。


换言之,我需要在事件里给队伍整队!

但是我翻遍了事件指令,答案是,没有。

放到以前我就有个笨办法,那就是让现在打了头的B成员离队再归队,不久变成A打头了么……

那这还是有2个人的队伍,如果三个人,四个人……加上分支条件,似乎工作量稍微有点大,难过。

于是我就开始考虑,在游戏中一定是有一个全局变量或者数组来存储这个队伍的角色的排列,于是开始寻找这个数组,工具当然就是,控制台~
又是四人组在草原上行走。

队伍的顺序是在哪里存储的呢?
队伍顺序应该是属于队伍的属性,是队伍共有的,就像金钱和物品一样,当然首先就考虑$gameParty咯。
在控制台里输入
  1. $gameParty
复制代码
就能查询到队伍的所有属性,如图~

眼尖得我一眼就看到了一个数组[1,2,3,4],那恐怕这个队伍的顺序非你莫属了吧,动手改一改试试?
控制台输入:
  1. $gameParty._actors = [4,3,2,1]
复制代码
可是似乎没有变化?
打开菜单,嘿嘿:

没错,倒过来了!
可是,明明走着的还是这四位仁兄,霍尔德打头,并没有变化……
应该是刷新问题?应该重新进入地图就好了吧。
没错……来一个场所移动就好像刷新了一样,

这回队伍成功倒过来了~
(其实是我懒没去找刷新的方法QAQ)
所以,在事件中用脚本
  1. $gameParty._actors = [4,3,2,1]
复制代码
就可以直接编辑玩家的队伍,而且刚刚就在发帖的时候,还发现了一个惊人的用途:直接“残暴”地更改玩家的队伍。
比如说,原来有4个人,我输入这样的脚本:
  1. $gameParty._actors = [2,1]
复制代码
会出错吗?
答案是不会,相反,它硬生生把ID为3和4的角色给扔掉了!


……让我感到有点残暴……

好叭……就这些吧,我得看病理去了……有什么问题欢迎交流~

作者: zths    时间: 2020-2-26 22:11
本帖最后由 zths 于 2020-2-26 22:14 编辑

跟随者刷新方法是
动完角色之后调用一下就行了。。
$gamePlayer._followers.refresh();
或者调用系统的角色添加/删除方法会自动调用的。。。
不推荐直接动元数据。
因为插件好多hook写在添加/删除方法上的。
直接动元数据插件是不更新的。。
插件没做校验的话就会出错了。。。
作者: 我是老A    时间: 2020-2-27 14:53
zths 发表于 2020-2-26 22:11
跟随者刷新方法是
动完角色之后调用一下就行了。。
$gamePlayer._followers.refresh();

嗯,了解了~谢谢!




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