> 首先我们先在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) > 至此一个简单的锻造提升卷的逻辑就写完了,然后我们就可以在游戏中使用道具来提升武器锻造等级了