- 楼主
- #1
- 已编辑
使用了一些不太正常的手段进行调用,针对v0.12.10新版本好感度机制。
在v0.12.10~v0.12.15测试通过
要求:
1.运行初始化优先级大于-900,因为好感度系统在-900初始化,但最好还是晚点调用
2.python early部分不能运行
3.无需dev模式
设置:store.mas_affection._m1_script0x2daffection__set_aff(好感度浮点数,reason='原因,可选') #没错,就是这个**一样的名字
获取:store.mas_affection._get_aff()
或者store._mas_getAffection()
,直接返回一个浮点数好感度
最大的优点:可以绕开dev模式直接设置好感度(作者希望你使用的公开接口即_set_aff必须要进入dev模式才可使用!!即在小于-990的优先级设置store.config.developer,而这样显得过于小题大做)
另外,由于好感度备份机制和游戏崩溃重读之类的机制,设置完毕后一定要立刻
store.mas_affection._make_backup()
然后立刻保存
store.mas_affection.save_aff()
否则可能修改失效
但是由于renpy对于私有对象的改名机制,这个方法可能因为mas主目录中出现新的文件而失效,下面有更优雅的解决方案
为了适应版本 可以采用以下方式来进行设置,即挨个寻找正确的函数,这样那个文件序号“0x2d”改掉也没有关系了
_set_aff_name = ''
for each_object in dir(store.mas_affection):
if each_object.find('affection__set_aff') != -1:
_set_aff_name = each_object
exec 'store.mas_affection.'+_set_aff_name+'(新的好感度,reason="设置好感度原因,可选,显示在log中")'
store.mas_affection._make_backup()
store.mas_affection.save_aff()
这样就绕开了对私有成员的访问限制了,显得又优雅又暴力
注意,store.mas_setAffection现在是无效的,即必须使用上述较为暴力的方法设置好感度
`@store.mas_utils.deprecated()`
def mas_setAffection(*args, **kwargs):
pass
Extraplus模组只会显示在游戏启动时的好感度,启动后的任何好感度变化,包括手动设置和系统机制所导致的变化都不会显示,并不是你设置失败了
要去看ddlc根目录/log/aff_log.log