13号避难所

 找回密码
 立即注册
搜索
查看: 468|回复: 8
打印 上一主题 下一主题

请问下为啥LVAR_FOLLOW_DISTANCE这个变量无法存储?

[复制链接]
跳转到指定楼层
楼主
发表于 2024-6-18 03:32:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问下为啥LVAR_FOLLOW_DISTANCE这个变量无法存储?

事情是这样的,我希望能在f2RPU里将安吉拉彼希和坦蒂做成队友,结果在成功通过对话让npc加入队伍后发现,安吉拉的跟随主角移动有问题,只有在加入时的地图,或者读档之后的地图上才能跟随主角,一旦进入大地图(北加州地图),再进入场景地图就会站在原地不动,哪怕按R键她也不动。

所以我是怀疑party_member_follow_dude这里出了问题,于是按照party.h将它拆成:
if ((party_is_waiting == false) and (party_no_follow == false)) then begin                \
   if (local_var(LVAR_FOLLOW_DISTANCE) == 0) then begin                                   \
      set_local_var(LVAR_FOLLOW_DISTANCE, FOLLOW_DISTANCE_MEDIUM);                                                                  \
   end                                                                                    \
party_follow_dude_point(((3*local_var(LVAR_FOLLOW_DISTANCE))/2), local_var(LVAR_FOLLOW_DISTANCE))  \
end

在逐条测试之后,似乎问题出在LVAR_FOLLOW_DISTANCE上,好像一旦到了北加州地图后,再进入场景地图,LVAR_FOLLOW_DISTANCE的数值就无法被存储了,也就是变成了默认0,因此party_follow_dude_point的数值也就跟着变成了0,0,自然就无法跟随了。

然后我又测试了两个地方:
第一,是把“party_follow_dude_point(((3*local_var(LVAR_FOLLOW_DISTANCE))/2), local_var(LVAR_FOLLOW_DISTANCE)) ”改成“party_follow_dude_point(3, 2)”,结果可以正常跟随。
第二,因为我已经从ncr生化狗(scrobo.ssl)那里初步抄好了队友跟随距离控制的对话(就是调整队友是紧跟,中距离,还是远距离跟随),所以我在游戏里看了一下,如图:

图1是在彼希家里刚加入时的距离控制,只有两个选项,图2是到了大地图以后,选项变成了三个...
而正常情况下同时给三个选项是不可能的,因为正常来说系统会记录下npc当前的距离设置,然后给出除当前设置之外的两个距离的选项,现在三个都出现了就说明系统根本没记住LVAR_FOLLOW_DISTANCE的数值!或者说系统认为LVAR_FOLLOW_DISTANCE的值是0,所以才会同时给三个...

所以,为啥LVAR_FOLLOW_DISTANCE这个变量无法被存储呢?甚至...会不会所有变量其实都没被存储?

本帖子中包含更多资源

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

x
沙发
发表于 2024-6-18 06:28:09 | 只看该作者
scripts.lst裡面ncAngBis.int的“local_vars”數值和實際腳本內的數量符合嗎?一個NPC可用的區域變量數目是以那設定決定的,不是光在腳本內加新的LVAR_*就好。
先前有老外碰到一個bug是在Gecko莫名奇妙地居民就會敵對,後來發現是他用了f2wedit確認物品屬性,而它在新的RPU/UPU配置(mods文件夾+.dat)下因為找不到scripts.lst,就自動去master.dat解出原版文件,而GOG版的原版文件的定義數量太少,在居民腳本調用LVAR時就會出錯。

板凳
 楼主| 发表于 2024-6-18 12:01:42 | 只看该作者
novarain 发表于 2024-6-18 06:28
scripts.lst裡面ncAngBis.int的“local_vars”數值和實際腳本內的數量符合嗎?一個NPC可用的區域變量數目是 ...

符合,最开始我也不知道这个事情,后来改好之后还是不行,不明白为啥。


不对等下,现在scripts.lst是放在哪个文件夹?不是“Fallout 2\data\scripts”文件夹下吗?
地板
 楼主| 发表于 2024-6-18 12:12:37 | 只看该作者
不对,还是不行,我把scripts.lst放在mods文件夹下也不行,依旧记录不了,这个和我装了几个辐射2游戏有关系吗(我装了2个)?
5#
发表于 2024-6-18 12:14:02 | 只看该作者
在data文件夾下面的零散文件優先度最高,會覆蓋mods裡面其他mod的版本。
另外LVAR數量定義似乎無法在遊戲中途改變(至少要在第一次進入該NPC所在地圖前修改),我把ACKlint.int的LVAR改到12,讀舊存檔另存新的也一樣只有10,要開新遊戲存檔才是12。
6#
 楼主| 发表于 2024-6-18 12:41:20 | 只看该作者
还是没有用,等会我把游戏重装一下看看行不行,会不会是以前没留神碰了什么东西...
7#
 楼主| 发表于 2024-6-18 14:56:03 | 只看该作者
本帖最后由 hellsinger 于 2024-6-18 15:05 编辑

不行,重装了游戏还是不行,没有任何变化,LVAR_FOLLOW_DISTANCE在安吉拉的脚本里就是记不住。
然后我试了一下,改了坦蒂的脚本,结果加入后party_member_follow_dude可以正常使用,因为坦蒂在scripts.lst里面先天就给了15个局部变量,而坦蒂脚本的变量只有8个还是9个。
所以请问:
1 还有没有其他因素制约角色脚本的变量存储?
2 如果我用碎梦咖啡狗肉挨打叫保镖的脚本重新召唤一个安吉拉,但是角色脚本给她挂上坦蒂的,那么理论上只要坦蒂可以用party_member_follow_dude正常跟随主角,她就应该可以正常跟随对吗?


这个脚本召唤安吉拉,然后给她换个能正常用Party_member_follow_dude的脚本:
variable tile;
         tile := tile_num_in_direction(self_tile, Random(0, 5), 1);
         mel := create_object_sid(PID_ANGELA_BISHOP, tile, self_elevation, SCRIPT_NCANGBIS);
         set_local_var(LVAR_Mel, mel);

8#
发表于 2024-6-18 15:57:59 | 只看该作者
沒有,LVAR的數目就是scripts.lst決定的。

我不知道你怎麼改ncangbis或是有沒有照正規隊友設置方式,所以你說的那些東西我也不知道該怎麼幫你看。

要加隊友的話參考Companion Expansion可能方便一些
https://www.nexusmods.com/fallout2/mods/70

9#
 楼主| 发表于 2024-6-18 21:36:27 | 只看该作者
好的,谢谢了,我去看下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|13号避难所

GMT+8, 2024-9-8 10:05 , Processed in 0.058707 second(s), 14 queries .

快速评论 返回顶部 返回列表