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