• 技术交流
  • 【纯萌新向】在Dice!实现一个好感度系统

什么是骰娘好感度系统?

好感度系统可以认为是好感度记录,以及围绕好感度记录建立的好感度增减机制、差分机制。

对Dice!而言,什么可以是好感度?

好感度可以是一个用户配置项,用作区别对待不同用户的标准。用户配置(UserConf)是一张键值表,可以通过关键词查找读写配置项,例如配置项trust记录用户的信任度(user trust)。下文为Dice!内置用到的关键词,但你可以使用任何关键词读写用户配置。

关键词
trust用户信任
nick全局nn,未设置则取QQ昵称
firstCreate用户记录创建时间戳
lastUpdate用户记录更新时间戳

不同骰娘可以将不同的关键词定义为好感度(但同一只骰娘在不同回复、脚本中应当使用同一个关键词),例如:世界的好感度写作亲和度

Dice!可以如何调用好感度?

在lua语句中,你可以用getUserConf(msg.fromQQ, key, 0)的形式读取消息来源QQ的用户配置。参数1表示所取用户的ID;参数2的字符串表示所取配置的关键词;参数3表示如果用户并没有该项配置,则默认返回0。
相应地,写入配置的函数为setUserConf(msg.fromQQ, key, value)
对世界而言,她读写用户好感度的语句即为:

--读取亲和度,存入本地变量favor
local favor = getUserConf(msg.fromQQ, "亲和度", 0)
--将变量favor存入亲和度
setUserConf(msg.fromQQ, "亲和度", favor)

骰主可以根据自己喜好和骰娘设定,设置好感度在每日签到/打卡/送礼时增加,在用户不当发言时减少。
一个简单的好感度应用实例

.reply set Match=我要亲亲
lua=favor=getUserConf(msg.fromQQ, "好感度", 0)
if(favor<50)then
  setUserConf(msg.fromQQ, "好感度", favor-ranint(1,6))
  return "你谁啊你?"
elseif(favor<100)then
  return "我就稍微来那么一下就行了吧?"
else return "*啪嗒*" end

大佬的说明很有帮助,刚刚尝试了一下。定义reply,结果遇到了这个问题,好像没有识别set。我在想要不要直接去用铃心自定义做好了

    1 个月 后

    所以是仅通过reply就可以实现好感度系统并且与那个送礼好感度系统lua相关联,而不用通过lua?

      7 个月 后

      尝试复制实例用了一下,发现是这样……是什么问题吗?
      调用回复lua语句失败!

        第五行报错,这个地方 "favor=getUserConf(msg.fromQQ, "好感度", 0)..."
        这里缺少反括号 )
        这种错误看手册就可以解决啦,点我跳转

        说点什么吧...