TiAmo
我加的内容,忘记考虑了一个场景。盲盒不赚也不亏的场景。
现在b站会出一些不亏不赚的盲盒活动。例如,合成招财猫,合成菜狗拜年等活动。
此类盲盒礼物的价值是固定的,只是爆出的礼物不同。而礼物的不同只是会影响活动的进度增加,不影响主播到手的收益。
我之前加的东西,会累加盲盒数量,用变量%{blind_gift_num}保存。
但是由于定时任务里,只考虑了%{blind_gift_sum}>0,和%{blind_gift_sum}<0两种场景,只有这两种场景会进行播报;播报后重置清空变量,变量盲盒数量%{blind_gift_num}也在其中。但是%{blind_gift_sum}==0的场景没考虑,导致变量盲盒数量%{blind_gift_num}没有重置为0,等下一次出现真的有盈亏的盲盒时,就会把之前累计的盲盒数量一起算上去。
举个例子,菜狗盲盒就是固定的盲盒,先送10个菜狗盲盒,%{blind_gift_num}是10,%{blind_gift_sum}是0。
触发定时任务,5秒后播报。但是没有播报,因为%{blind_gift_sum}是0,定时任务也没停掉。
此时再有用户,赠送1个心动盲盒,这个盲盒是不固定的,可能有盈亏。此时%{blind_gift_num}是11,%{blind_gift_sum}不是0,可能是10,也就是赚了10电池。此时播报,就会播报,本次盲盒11个心动盲盒,赚了10电池。。。
其实原作者给出的方案也没考虑%{blind_gift_num}==0的场景,但是因为没有播报,所以问题也不大。
目前能看到的问题是,假如真出现了%{blind_gift_num}==0的场景,那个定时任务会启动后,5秒后不会自动关闭,导致空转。
下面的更新方案是,只把那些真的有盈亏的盲盒纳入统计中,对于固定价值的盲盒不统计。
并且播报中也播报盈亏最终累计恰好为0的盲盒。比如150电池的心动盲盒,爆出爱心抱枕160电池,赚10电池,爆出棉花糖90电池,亏60电池;那假如一个用户送出7个心动盲盒,恰好6个爱心抱枕,1个棉花糖,那总计盈亏就是恰好为0的,但是也会播报一下,播报本次盲盒(7个心动盲盒)没亏没赚
[
{
"action": "// 忽略非盲盒\n[\"%.data.batch_combo_send?.blind_gift?.original_gift_name?%\" == \"\"]***\n// 盲盒礼物,原本价格 与 爆出价格\n[\"%.data.batch_combo_send?.blind_gift?.original_gift_name?%\" != \"\" && %discount_price% != %gift_gold%]{blind_gift_sum} += %[%[ %[%discount_price%* %gift_num%]% - %gift_gold%]% / 100]% \\n\\\n\t{blind_gift_num} += %gift_num% \\n\\\n\t{blind_name} = %.data.batch_combo_send?.blind_gift?.original_gift_name?% \\n\\\n\t>enableTimerTask(盲盒盈亏统计, 1)",
"anchor_key": "神奇弹幕:EventAction",
"enabled": false,
"event": "SEND_GIFT"
},
{
"anchor_key": "神奇弹幕:TimerTask",
"enabled": false,
"interval": 5,
"text": "// 盲盒盈亏统计\n[%{blind_gift_sum}% > 0]>本次盲盒(%{blind_gift_num}%个%{blind_name}%)赚到 %{blind_gift_sum}% 电池\\n\\\n\t{blind_gift_sum} = 0\\n\\\n\t{blind_gift_num} = 0\\n\\\n\t>enableTimerTask(盲盒盈亏统计, -1)\n[%{blind_gift_sum}% < 0]>本次盲盒(%{blind_gift_num}%个%{blind_name}%)亏损 %>abs(%{blind_gift_sum}%)% 电池\\n\\\n\t{blind_gift_sum} = 0\\n\\\n\t{blind_gift_num} = 0\\n\\\n\t>enableTimerTask(盲盒盈亏统计, -1)\n[%{blind_gift_sum}% == 0]>本次盲盒(%{blind_gift_num}%个%{blind_name}%)没亏没赚\\n\\\n\t{blind_gift_sum} = 0\\n\\\n\t{blind_gift_num} = 0\\n\\\n\t>enableTimerTask(盲盒盈亏统计, -1)"
}
]