dp-s_doc/Start/Example/6.md

96 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 史诗掉落奖励 (贡献者: 凌众)
> 首先我们先在dp_s文件夹中建立一个项目文件夹 MyProject 方便管理
![Alt text](../../image/6.png)
> 然后我们建立一个新文件 史诗掉落奖励.nut 用于编写我们的代码
![Alt text](../../image/26.png)
> 然后我们在史诗掉落奖励.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");
```
> 至此一个简单的史诗掉落奖励的逻辑就写完了