找回密码
 开放注册
搜索
查看: 3806|回复: 17

辐射2 + SFall脚本修改的的问题

[复制链接]
发表于 2012-5-31 14:30:37 | 显示全部楼层 |阅读模式
辐射2英文 + RP2.1.2b,编译器:Ruby  + SFall
想用对话脚本修改stat数值,发现一些问题。
1. 无法修改衍生数值,
用set_critter_stat函数, 改SPECIAL这7项没问题,但AC,AP、CC、resist等衍生数值却不行。
用get_critter_stat可以正确获取数值,所以stat index参数应该是正确的。
不知道是我操作错误,还是游戏引擎限制。
感觉可能和set_critter_stat修改的是原始值,而非修正值有关。

2. Perk和称号的工作原理。
想起perk里改衍生数值最多,想从Perk里迂回突破,结果没找到这类Perk是怎么工作的 。
发表于 2012-5-31 14:59:08 | 显示全部楼层
遊戲自己的set_critter_stat函式似乎有些問題,試著用sfall的set_pc_base_stat和set_pc_extra_stat看看。
 楼主| 发表于 2012-5-31 15:32:20 | 显示全部楼层
多谢版主
回去再翻翻sfall的资料,ruby那里好像没看到set_pc_base_stat。

如果要修改这类Perk,应该从哪里入手呢?
发表于 2012-5-31 16:06:36 | 显示全部楼层
引用第2楼runx于2012-05-31 15:32发表的  :
多谢版主
回去再翻翻sfall的资料,ruby那里好像没看到set_pc_base_stat。
如果要修改这类Perk,应该从哪里入手呢?
sfall的部份我不會想用ruby compiler....
perk那部份我之前想修改裝填AP時有稍微翻過,但看得不清不楚就是了,後來找到其他方式解決我的需求之後也沒特別再多去細看。
 楼主| 发表于 2012-6-1 12:18:31 | 显示全部楼层
这个ruby还是论坛上推荐的, 手里只有这个, 将就着也能用.
重新翻了一下ruby for SF的complie文件。
原来的问题,我没用set_pc_extra_stat,用了set_critter_extra_stat解决了, 测试全部ok。

发现了一些有意思的函数,如突破属性10上限 / 突破命中率95% / 加命中修正.
昨晚经测试, 均有效, 但好像Load之后会失效.需要进一步测试

看见不少Perk相关的函数, 看来SFall也是想通过这些修改Perk, 想随心所欲地修改Perk估计会很麻烦.
 楼主| 发表于 2012-6-1 23:03:16 | 显示全部楼层
经测试,突破属性10上限 /  突破命中率95%上限 /  命中率修正, 游戏Load后,这三项效果都会失效。
后来改在Obj_dude的procedure start中设定,这样一来每次进入游戏,都会重新设定一次,使其不再失效。
属性/命中上限这些应该能弄出一些有意思的mod设定。
大家一起讨论一下吧。

脚本修改实例:
        op_set_critter_hit_chance_mod(op_dude_obj(),100,20);    --玩家命中上限为100,全部命中+20
    op_set_perk_level_mod(3);        --升级选取perk时计算的玩家等级+3(相当于perk所需等级-3)
    op_set_pc_stat_max(0, 15);       --ST上限为15
    op_set_pc_stat_max(1, 15);       --PE上限为15
    op_set_pc_stat_max(2, 15);       --EN上限为15
    op_set_pc_stat_max(3, 15);       --CK上限为15
    op_set_pc_stat_max(4, 15);       --IN上限为15
    op_set_pc_stat_max(5, 15);       --AG上限为15
    op_set_pc_stat_max(6, 15);       --LK上限为15
发表于 2012-6-1 23:13:26 | 显示全部楼层
提升命中率上限的部份Timeslip在modderpack內給的perk/trait範例已經有了,“Perfect Aim”。
SPECIAL破10的部份會套用在相關延伸計算上嗎?
 楼主| 发表于 2012-6-1 23:35:22 | 显示全部楼层
我测试了ST和EN>10,这2个相关的所有衍生属性都会随着属性变化。
发表于 2012-6-2 07:25:03 | 显示全部楼层
我沒試過修改Sfall,因為沒有啥好的想法~
发表于 2012-6-2 11:53:33 | 显示全部楼层
话说属性破10可以直接改EXE吧……如果这个目前还有缺陷的话。
 楼主| 发表于 2012-6-2 15:32:51 | 显示全部楼层
改在Obj_dude的procedure start中设定之后,除了创建人物时无效以外,其他时间都没问题。
问题是,游戏本身改变属性点的情节很少,最多+2,
除非加入很多增加属性的情节或物品,不然上限意义不大。
我自己做了一个随机地图能获得不少+属性物品的mod,发现其难度调整很麻烦。

有几个构思:1个背景,2个Perk
Perk
现实主义:命中上限80%,命中加成30%
完美主义:命中上限100%,命中加成-15%

背景
古代穿越到辐射2的武林高手(用一个新的全局变量来识别)
PE/AG/LK有加成,上限12,EN/CK/IN有惩罚,上限8。
技能也有类似调整上限,比如科技上限50%等等
所有枪械 +2AP消耗(还不知道怎么达到此效果,估计要参考额外开火速度Perk)
自行制造秘药,可加PE/AG/LK属性(可触发独有的遭遇战获得原料)
发表于 2012-6-2 22:26:04 | 显示全部楼层
武器相關的AP消耗可以參考我之前的某個範例用hook script去動手會省事一些。
 楼主| 发表于 2012-6-3 13:45:49 | 显示全部楼层
所有枪械 +2AP消耗
==========================
按hookscripts.txt的说明,我拿不到正常的AP消耗值,第4个参数一直是0。不知道哪里出错了。
如果hs_calcapcost.int拿不到正常的AP消耗值,那只能重新编写枪械AP消耗计算公式,会很麻烦。
critter arg1 - The critter performing the action  ---正确
int     arg2 - No idea                                               ---攻击方式
int     arg3 - Still no idea                                        ---是否瞄准
int     arg4 - The normal ap cost                          ---无法获取
发表于 2012-6-3 15:19:16 | 显示全部楼层
看來它第4個參數不是只有0,就是實際上沒有(“it returns 0 if there are no more arguments left”),可能得問Timeslip這部份到底是怎麼了。
這樣hs_calcapcost目前就只能設定固定數值讓它回傳,沒辦法取得武器AP cost加算再回傳。
 楼主| 发表于 2012-6-3 16:16:55 | 显示全部楼层
ruby编译也是一样的结果。

如果能方便地获取武器的2种攻击AP消耗值,自己编一个简单的AP计算系统也行。
获取当前左/右手上物品PID,再求其2个攻击型态AP消耗,判断是否瞄准。
判断是否有快枪手天赋,和减AP的那2个Perk,计算出AP。

或者彻底一些,所有枪械全部设成10AP或更高...
发表于 2012-6-5 04:11:26 | 显示全部楼层
runx修改過Obj_dude.ssl么?裡頭設定skill的代碼段是那些?
 楼主| 发表于 2012-6-5 21:56:41 | 显示全部楼层
critter_mod_skill

critter_mod_skill
int                               Critter
      who (ObjectPtr)
      skill (int)
      amount (int)   
Modifies a given skill in a given critter object (who) by a given amount.  Note: this currently is only valid on the player (obj_dude) object.
发表于 2012-11-16 12:49:20 | 显示全部楼层
引用第13楼novarain于2012-06-03 15:19发表的  :
看來它第4個參數不是只有0,就是實際上沒有(“it returns 0 if there are no more arguments left”),可能得問Timeslip這部份到底是怎麼了。
這樣hs_calcapcost目前就只能設定固定數值讓它回傳,沒辦法取得武器AP cost加算再回傳。
自回舊帖。
剛剛中午閒著沒吃飯,突然又想到就去翻了一下源碼確認看看,看來是Timeslip把某行寫錯了,我手上的自編譯版本現在可以取得武器的正常攻擊AP cost並處理,至少我手上的test script跑起來不再是0 AP了。

相關問題已經回報給Timeslip確認,運\氣好的話今天下午她大概就會回應了。我想到上次她回我“竟然有人會真的去把credit roll看過一遍” XD

EDIT: OK,她確認了,等2.21之後就會修正了。
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

Archiver|手机版|小黑屋|13号避难所-旧人类论坛

GMT+8, 2026-6-5 13:03 , Processed in 0.091743 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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