赞
踩
接着上一张继续将一些物品的扣除
目录 :
一: 给物品,扣除物品
既然提到给物品,和扣除物品,那我们先简单的举个例子:
如获取某个物品A 需要物品B 10个
这种一般我们会先判断一下需要的物品是否充足
if LuaFnGetAvailableItemCount(sceneId, selfId,B) < 10 then
return x955555_NotifyTip( sceneId, selfId,"B不足10个" )
end
这里的x955555_NotifyTip是事先定义好的提示框,上一章我们已经讲过了不懂的小伙伴可以回去看下
这里的LuaFnGetAvailableItemCount(sceneId, selfId,B) 函数就是获取背包中B物品的数量,然后做了一个If判断是否足够即可
理论上来说这个判断如果没问题就可以直接给物品了,但是有个情况要注意下,背包如果没位置的话发出去的东西会接收不到 ,所以需要先判断一下背包的格子是否够
if LuaFnGetMaterialBagSpace(sceneId, selfId) < 1 or LuaFnGetPropertyBagSpace(sceneId, selfId) < 1 then
return x955555_NotifyTip( sceneId, selfId, "背包空格不足1个!" )
end
LuaFnGetMaterialBagSpace(sceneId, selfId), LuaFnGetPropertyBagSpace(sceneId, selfId)是分别判断物品栏和材料栏
倒着接下来就是要扣除物品B 然后给A 了
if LuaFnDelAvailableItem(sceneId,selfId, B,10) ~= 1 then
return x955555_NotifyTip( sceneId, selfId, "扣除失败" )
end
在调用删除方法的时候LuaFnDelAvailableItem(sceneId,selfId, B,10) 一般会有个返回值 1 代表成功,
所以这里判断下如果删除的返回值不等于1 代表删除失败了(可能很多 自己想像)
如果到这里都没有任何问题就可以给与物品了
给物品其实有两种写法,最简单的写法
local item = TryRecieveItem( sceneId, selfId, A, 1)
这里的A 代表的是给予的物品, 1这里要注意了 代表的不是给1个物品 他的枚举有两种 0 不绑定 1 绑定
扩展一下: 如果给多个物品呢 ?
for i = 1, 10 do
local item = TryRecieveItem( sceneId, selfId, A, 1)
end
是的只要循环一下就可以了, 但是大家可以想一下如果是100,甚至是1000个物品呢 可能会卡顿所以这里其实提到了 给物品是有两种写法
第二种写法: 批量给物品
BeginAddItem(sceneId)
AddItem(sceneId, A, 10)
EndAddItem(sceneId,selfId)
AddItemListToHuman(sceneId,selfId)
这里的A 同样是给的物品,10就是实际的数量, selfId就是获取物品的人,以后对于sceneId和seleId不会过多解释了
其实这个逻辑了结了,就可以写一些物品兑换的功能了
End–
QQ群:315536289
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。