dp-s_doc/Start/Example/2.md

71 lines
2.4 KiB
Markdown
Raw Permalink 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)
> 然后我们建立一个新文件 跨界石.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来跨界了