dp-s_doc/Start/Example/6.md

2.7 KiB
Raw Blame History

史诗掉落奖励 (贡献者: 凌众)

首先我们先在dp_s文件夹中建立一个项目文件夹 MyProject 方便管理

Alt text

然后我们建立一个新文件 史诗掉落奖励.nut 用于编写我们的代码

Alt text

然后我们在史诗掉落奖励.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");

至此一个简单的史诗掉落奖励的逻辑就写完了