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);
}
}
暂无讨论,说说你的看法吧