var get_rand_int = new NativeFunction(ptr(0x086B1B87), 'int', ['int'], {
"abi": "sysv"
});
if ((item_id >= 10000113) && (item_id <= 10000114)) //点券充值
{
rechargeCeraBasedOnItemId(user, item_id);
}
// 用户使用次数记录
var userUsageCount = {};
function rechargeCeraBasedOnItemId(user, item_id, charac_no) {
var itemToCeraMapping = {
10000113: [100, 1], // 物品ID 10000113 对应 100 点券,可以额外奖励
10000114: [200, 0] // 物品ID 10000114 对应 200 点券,不可额外奖励
};
if (itemToCeraMapping.hasOwnProperty(item_id)) {
var [PriceCera, canHaveExtra] = itemToCeraMapping[item_id];
var extraCera = 0;
var userKey = charac_no + '_' + item_id;
// 更新用户使用次数
userUsageCount[userKey] = (userUsageCount[userKey] || 0) + 1;
// 计算是否应当提供保底额外奖励
var isGuaranteedExtra = userUsageCount[userKey] % 10 === 0;
// 判断是否参与额外奖励
if (canHaveExtra) {
var maxExtraCera = Math.floor(PriceCera * 0.3); // 额外充值的最大数量为本体的30%
if (isGuaranteedExtra) {
extraCera = maxExtraCera; // 保底触发,获得最大额外充值
userUsageCount[userKey] = 0; // 清空累计次数
} else if (get_rand_int(100) < 50) {
extraCera = Math.min(get_rand_int(PriceCera), maxExtraCera);
// 如果获得了额外奖励,清空累计次数
userUsageCount[userKey] = 0;
}
}
api_recharge_cash_cera(user, PriceCera + extraCera);
api_CUser_SendNotiPacketMessage(user, '成功到账' + (PriceCera + extraCera) + '点券' + (extraCera > 0 ? ',包括额外充值' + extraCera + '点券' : ''), 0);
}
}
声明:本站文章素材多源于网络,版权归原作者。 声明中文字加粗部分,仅为突出重点信息展示,无其他特殊含义。任何个人或组织,在未经原版权方及本站许可时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
重要限制:本站素材仅供单机学习交流,请在24小时内删除