96 lines
2.7 KiB
Markdown
96 lines
2.7 KiB
Markdown
## 史诗掉落奖励 (贡献者: 凌众)
|
||
|
||
> 首先我们先在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");
|
||
```
|
||
|
||
> 至此一个简单的史诗掉落奖励的逻辑就写完了 |