2.7 KiB
2.7 KiB
史诗掉落奖励 (贡献者: 凌众)
首先我们先在dp_s文件夹中建立一个项目文件夹 MyProject 方便管理
然后我们建立一个新文件 史诗掉落奖励.nut 用于编写我们的代码
然后我们在史诗掉落奖励.nut中写入以下代码
//本例子由 凌众 提供
//单次副本累计掉落史诗奖励
rewardAmountMap <- {
"4": 3000,
"5": 5000,
"6": 20000
}
//掉落特定史诗奖励 比如涂鸦笔和无影剑 顺便发全服公告 参数为 物品id ,奖励的点券,公告,公告类型
rewardAmountOnId <- {
"34253": [3000, "恭喜玩家[%s]在地下城深渊挑战中获得了[%s] 让我们恭喜这个b", 14],
"27098": [5000, "恭喜玩家[%s]在地下城深渊挑战中获得了[%s] 让我们恭喜这个b", 14],
}
userCounters <- {}
dgnname <- {}
//离开副本
Cb_History_DungeonLeave_Func.RindroSSDL <- function(SUser, Data) {
local num = userCounters[SUser.GetCID()];
local rewardAmount = 0;
local numS = num.tostring();
if (numS in rewardAmountMap) {
rewardAmount = rewardAmountMap[numS]
}
if (rewardAmount == 0) return;
World.SendNotiPacketMessage("玩家" + SUser.GetCharacName() + "在" + Data[14] + "中获得了" + userCounters[SUser.GetCID()].tostring() + "件史诗装备 奖励" + rewardAmount + "点券", 14);
SUser.RechargeCera(rewardAmount)
userCounters[SUser.GetCID()] <- 0;
}
//进入副本
Cb_History_DungeonEnter_Func.RindroSSDL <- function(SUser, Data) {
userCounters[SUser.GetCID()] <- 0;
dgnname[SUser.GetCID()] <- Data[14];
}
//拾取道具
Cb_User_Get_Item_Leave_Func.RindroSSDL <- function(args) {
local itemId = args[2];
local SUser = User(args[1]);
local pvfitem = PvfItem.GetPvfItemById(itemId);
local itemids = itemId.tostring();
//这里发放特定道具的奖励
if (itemids in rewardAmountOnId) {
local rewardAmount = rewardAmountOnId[itemids][0];
local msg = format(rewardAmountOnId[itemids][1], SUser.GetCharacName(), pvfitem.GetName());
World.SendNotiPacketMessage(msg, 14);
SUser.RechargeCera(rewardAmount)
}
if (!pvfitem.IsStackable() == 0) return;
local rarity = pvfitem.GetRarity();
local level = pvfitem.GetUsableLevel();
if (pvfitem == 4 && level > 10) {
userCounters[SUser.GetCID()]++;
}
userCounters[SUser.GetCID()]++;
return null;
};
最后我们回到dp_s文件夹中,打开Main.nut 加载我们刚才编写的逻辑
sq_RunScript("MyProject/史诗掉落奖励.nut");
至此一个简单的史诗掉落奖励的逻辑就写完了

