dp-s_doc/Start/Example/1.md

73 lines
2.6 KiB
Markdown
Raw 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)
> 然后我们建立一个新文件 ForgingEnhancement.nut 用于编写我们的代码
![Alt text](../../image/7.png)
> 然后我们在ForgeEnhancement.nut中写入以下代码
```
ForgingEnhancementStr1 <- "装备栏1号位没有装备.."
ForgingEnhancementStr2 <- "锻造成功,当前武器锻造[+%d]"
ForgingEnhancementStr3 <- "锻造失败,当前武器锻造[+%d]"
ForgingEnhancementStr4 <- "装备锻造等级已为最高等级,无法继续锻造.."
ForgingEnhancementMaxForgingLevel <- 31
Cb_Use_Item_Sp_Func[7577] <- function(SUser, ItemId) {
//定义锻造成功率
local DLevel = 60;
//获取玩家背包
local InvenObj = SUser.GetInven();
//如果背包存在
if (InvenObj) {
//获取玩家背包类型1的第9个格子
local ItemObj = InvenObj.GetSlot(1, 9);
//空装备
if (ItemObj.IsEmpty) {
//发送通知
SUser.SendNotiPacketMessage(ForgingEnhancementStr1, 8);
//返还消耗的道具
SUser.GiveItem(ItemId, 1);
return;
}
//获取原装备的锻造等级
local OldLevel = ItemObj.GetForging();
//判断锻造等级是否大于设定的最大等级
if (OldLevel >= ForgingEnhancementMaxForgingLevel) {
//发送通知
SUser.SendNotiPacketMessage(ForgingEnhancementStr4, 8);
//返还消耗的道具
SUser.GiveItem(ItemId, 1);
return;
}
//获得0-100的随机数
local RandNum = MathClass.Rand(0, 100);
//判断随机数是否小于设定的几率
if (RandNum <= DLevel) {
//将装备的锻造等级+1
ItemObj.SetForging(OldLevel + 1);
//刷写装备
ItemObj.Flush();
//刷新玩家背包
SUser.SendUpdateItemList(1, 0, 9);
//发送通知
SUser.SendNotiPacketMessage(format(ForgingEnhancementStr2, (OldLevel + 1)), 8);
} else {
//发送通知
SUser.SendNotiPacketMessage(format(ForgingEnhancementStr3, OldLevel), 8);
}
}
}
```
![Alt text](../../image/8.png)
> 最后我们回到dp_s文件夹中打开Main.nut 加载我们刚才编写的逻辑
```
sq_RunScript("MyProject/ForgingEnhancement.nut");
```
![Alt text](../../image/9.png)
> 至此一个简单的锻造提升卷的逻辑就写完了,然后我们就可以在游戏中使用道具来提升武器锻造等级了