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");
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
> 至此一个简单的史诗掉落奖励的逻辑就写完了
|