使用了一些不太正常的手段进行调用,针对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()


这样就绕开了对私有成员的访问限制了,显得又优雅又暴力

参考:https://github.com/Monika-After-Story/MonikaModDev/blob/06baf319a34c2ef585bc7c0a1e969a7eaa894b35/Monika%20After%20Story/game/script-affection.rpy


注意,store.mas_setAffection现在是无效的,即必须使用上述较为暴力的方法设置好感度

`@store.mas_utils.deprecated()`

def mas_setAffection(*args, **kwargs):

pass


Extraplus模组只会显示在游戏启动时的好感度,启动后的任何好感度变化,包括手动设置和系统机制所导致的变化都不会显示,并不是你设置失败了

要去看ddlc根目录/log/aff_log.log

快来注册!

*即使不注册, DCC也会展示所有知识性和分享内容

无人输入