添加示例项目
This commit is contained in:
97
示例项目/在线泡点/在线泡点.nut
Normal file
97
示例项目/在线泡点/在线泡点.nut
Normal file
@@ -0,0 +1,97 @@
|
||||
_total_rewardBynangua <- {}; // 存储每个玩家的累计奖励
|
||||
|
||||
function _Online_rewardsBynangua() {
|
||||
local Config = GlobalConfig.Get("在线泡点配置_Nangua.json");
|
||||
local OnlinePlayerList = World.GetOnlinePlayer();
|
||||
|
||||
// 发放奖励
|
||||
foreach(SUser in OnlinePlayerList) {
|
||||
local IP = _Online_rewardsBynangua_api.CUser_get_public_ip_address(SUser);
|
||||
if (!Config["是否发放奖励给假人(true发放/false不发放)"] && IP == Config["离线假人IP"]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 获取奖励类型和数量
|
||||
local isCera = Config["在线泡点配置"]["奖励类型(true点券/false代币)"];
|
||||
local rewardAmount = isCera ? Config["在线泡点配置"]["点券奖励"] : Config["在线泡点配置"]["代币奖励"];
|
||||
|
||||
if (rewardAmount > 0) {
|
||||
// 初始化累计奖励
|
||||
if (!(SUser.GetCID() in _total_rewardBynangua)) {
|
||||
_total_rewardBynangua[SUser.GetCID()] <- 0;
|
||||
}
|
||||
_total_rewardBynangua[SUser.GetCID()] += rewardAmount;
|
||||
|
||||
// 发放奖励
|
||||
if (isCera) {
|
||||
SUser.RechargeCera(rewardAmount);
|
||||
} else {
|
||||
SUser.RechargeCeraPoint(rewardAmount);
|
||||
}
|
||||
|
||||
// 发送消息
|
||||
local AdMsgObj = AdMsg();
|
||||
AdMsgObj.PutType(Config["在线泡点配置"]["信息发送位置"]);
|
||||
if (Config["在线泡点配置"]["信息发送位置"] != 14) {
|
||||
AdMsgObj.PutString(" ");
|
||||
}
|
||||
AdMsgObj.PutImoticon(Config["在线泡点配置"]["图标"]);
|
||||
AdMsgObj.PutColorString(Config["在线泡点配置"]["标题"], Config["在线泡点配置"]["文字颜色rgb"]);
|
||||
AdMsgObj.PutColorString("[" + rewardAmount + "]", Config["在线泡点配置"]["数量颜色rgb"]);
|
||||
AdMsgObj.PutColorString(Config["在线泡点配置"]["奖励内容(代币/点券)"], Config["在线泡点配置"]["文字颜色rgb"]);
|
||||
AdMsgObj.PutColorString(Config["在线泡点配置"]["奖励"], Config["在线泡点配置"]["文字颜色rgb"]);
|
||||
AdMsgObj.PutColorString("[" + _total_rewardBynangua[SUser.GetCID()] + "]", Config["在线泡点配置"]["数量颜色rgb"]);
|
||||
AdMsgObj.PutColorString(Config["在线泡点配置"]["奖励内容(代币/点券)"], Config["在线泡点配置"]["文字颜色rgb"]);
|
||||
AdMsgObj.Finalize();
|
||||
SUser.Send(AdMsgObj.MakePack());
|
||||
AdMsgObj.Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 在线泡点活动入口点
|
||||
function _Dps_Online_rewardsBynangua_Main_() {
|
||||
_Dps_Online_rewardsBynangua_Logic_();
|
||||
}
|
||||
|
||||
// 在线泡点活动重载入口点
|
||||
function _Dps_Online_rewardsBynangua_Main_Reload_(OldConfig) {
|
||||
// 先移除旧的定时任务
|
||||
Timer.RemoveCronTask("OnlineRewardTask");
|
||||
|
||||
// 重新注册
|
||||
_Dps_Online_rewardsBynangua_Logic_();
|
||||
// 清理缓存
|
||||
_total_rewardBynangua <- {};
|
||||
}
|
||||
|
||||
// 在线泡点活动逻辑入口点
|
||||
function _Dps_Online_rewardsBynangua_Logic_() {
|
||||
local Config = GlobalConfig.Get("在线泡点配置_Nangua.json");
|
||||
local interval = Config["在线泡点配置"]["时间间隔(分钟)"];
|
||||
local cronExpression = format("0 */%d * * * *", interval);
|
||||
// 注册定时任务
|
||||
Timer.SetCronTask(_Online_rewardsBynangua, {
|
||||
Cron = cronExpression,
|
||||
Name = "OnlineRewardTask"
|
||||
});
|
||||
}
|
||||
|
||||
class _Online_rewardsBynangua_api {
|
||||
function CUser_get_public_ip_address(SUser){
|
||||
local s_addr = Sq_CallFunc(S_Ptr("0x084EC90A"), "int", ["pointer"], SUser.C_Object);
|
||||
if(s_addr){
|
||||
local inet_ntoa = Sq_CallFunc(S_Ptr("0x0807DDC0"), "pointer", ["int"], s_addr);
|
||||
return NativePointer(inet_ntoa).readUtf8String();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// 玩家下线时,清空累计奖励
|
||||
Cb_CUser_LogoutToPCRoom_Enter_Func.Online_rewardsBynangua <- function(args) {
|
||||
local SUser = User(args[0]);
|
||||
if (SUser.GetCID() in _total_rewardBynangua) {
|
||||
_total_rewardBynangua.rawdelete(SUser.GetCID());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user