> 首先我们先在dp_s文件夹中建立一个项目文件夹 MyProject 方便管理 ![Alt text](../../image/6.png) > 然后我们建立一个新文件 跨界石.nut 用于编写我们的代码 ![Alt text](../../image/14.png) > 然后我们在跨界石.nut中写入以下代码 ``` CrossoverStr1 <- "装备栏1号位没有装备.."; CrossoverStr2 <- "跨界失败,请检查一下账号金库是否没有开启或者没有空位"; CrossoverStr3 <- "跨界失败"; CrossoverStr4 <- "跨界成功,已经装备栏第一格的 [%s] 转移至账号金库"; CrossoverId <- 7577; Cb_Use_Item_Sp_Func[CrossoverId] <- function(SUser, ItemId) { //获取账号金库对象 local CargoObj = SUser.GetAccountCargo(); //获取账号金库中的一个空格子 local EmptySlot = CargoObj.GetEmptySlot(); //如果没有空格子 if (EmptySlot == -1) { SUser.SendNotiPacketMessage(CrossoverStr2, 8); //不扣除道具 SUser.GiveItem(ItemId, 1); return; } //获取角色背包 local InvenObj = SUser.GetInven(); //获取需要转移的装备 这里默认写的装备栏第一个格子 local ItemObj = InvenObj.GetSlot(Inven.INVENTORY_TYPE_ITEM, 9); //获取装备名字 local ItemName = PvfItem.GetNameById(ItemObj.GetIndex()); //如果没找到这个格子的装备 if (!ItemName) { SUser.SendNotiPacketMessage(CrossoverStr1, 8); //不扣除道具 SUser.GiveItem(ItemId, 1); return; } //跨界 local Flag = CargoObj.InsertItem(ItemObj, EmptySlot); if (Flag == -1) { SUser.SendNotiPacketMessage(CrossoverStr3, 8); //不扣除道具 SUser.GiveItem(ItemId, 1); } else { //销毁背包中的道具 ItemObj.Delete(); //刷新玩家背包列表 SUser.SendUpdateItemList(1, 0, 9); //刷新账号金库列表 CargoObj.SendItemList(); SUser.SendNotiPacketMessage(format(CrossoverStr4, ItemName), 7); } } ``` ![Alt text](../../image/15.png) > 最后我们回到dp_s文件夹中,打开Main.nut 加载我们刚才编写的逻辑 ``` sq_RunScript("MyProject/跨界石.nut"); ``` ![Alt text](../../image/16.png) > 至此一个简单的跨界石的逻辑就写完了,然后我们就可以在游戏中使用道具7577来跨界了