95 lines
2.8 KiB
Plaintext
95 lines
2.8 KiB
Plaintext
--#include "data\config\item\ItemUseCountCfg.config" once
|
|
|
|
function sendItemUseCount(sysarg, groupId)
|
|
--print("sendItemUseCount, groupId="..groupId)
|
|
local netPack = DataPack.allocPacket(sysarg,139, enScriptMiscSystemSendItemUseCount)
|
|
if netPack == nil then
|
|
return
|
|
end
|
|
local GropList = {}
|
|
if(type(groupId) == 'number')then
|
|
table.insert(GropList, groupId)
|
|
else
|
|
GropList = groupId
|
|
end
|
|
DataPack.writeByte(netPack, #GropList)
|
|
for k,v in pairs(GropList)do
|
|
local lastCount, maxCount = getItemUseCountByGrop(sysarg, v)
|
|
DataPack.writeShort(netPack, v)
|
|
DataPack.writeShort(netPack, lastCount)
|
|
DataPack.writeShort(netPack, maxCount)
|
|
end
|
|
DataPack.flush(netPack)
|
|
--print("sendItemUseCount, groupId="..groupId..", lastCount="..lastCount..", maxCount="..maxCount)
|
|
end
|
|
|
|
--获得道具的使用次数
|
|
function getItemUseCountByGrop(sysarg, groupId)
|
|
--print("getItemUseCountByGrop, groupId="..groupId)
|
|
for itemId, v in pairs(ItemUseCountCfg)do
|
|
if v.group == groupId then
|
|
return getItemUseCount(sysarg, itemId)
|
|
end
|
|
end
|
|
return 999,999
|
|
end
|
|
|
|
--[[获得道具的剩余使用次数
|
|
此方法内部,不要发送任何消息,可能导致宕机
|
|
返回:剩余次数,最大次数
|
|
]]
|
|
function getItemUseCount(sysarg, itemId)
|
|
--使用次数限制
|
|
local cfg = ItemUseCountCfg[itemId]
|
|
if not cfg then
|
|
return 0,0
|
|
end
|
|
|
|
local groupId = cfg.group
|
|
local maxCount = cfg.dailyUseLimit
|
|
|
|
if not maxCount or not groupId then
|
|
return 0,0
|
|
end
|
|
local actorVar = Actor.getStaticVar(sysarg)
|
|
if not actorVar.dailyItemUseCount then
|
|
actorVar.dailyItemUseCount = {}
|
|
end
|
|
if not actorVar.dailyItemUseCount[groupId] then
|
|
actorVar.dailyItemUseCount[groupId] = 0
|
|
end
|
|
local lastCount = maxCount - actorVar.dailyItemUseCount[groupId] --剩余次数
|
|
if lastCount < 0 then
|
|
lastCount = 0
|
|
end
|
|
--print("getItemUseCount,groupId="..groupId..", maxCount="..maxCount..", lastCount="..lastCount)
|
|
return lastCount, maxCount
|
|
end
|
|
|
|
--增加每日道具已使用次数
|
|
function AddDailyItemUseCount(sysarg, itemId, count)
|
|
--print("AddDailyItemUseCount, itemId="..itemId..", count="..count)
|
|
local cfg = ItemUseCountCfg[itemId]
|
|
if not cfg then
|
|
return false
|
|
end
|
|
|
|
local groupId = cfg.group
|
|
local maxCount = cfg.dailyUseLimit
|
|
local actorVar = Actor.getStaticVar(sysarg)
|
|
if not actorVar.dailyItemUseCount then
|
|
actorVar.dailyItemUseCount = {}
|
|
end
|
|
if not actorVar.dailyItemUseCount[groupId] then
|
|
actorVar.dailyItemUseCount[groupId] = 0
|
|
end
|
|
actorVar.dailyItemUseCount[groupId] = actorVar.dailyItemUseCount[groupId] + count
|
|
--print("addItemUseCount, groupId="..groupId..", newCount="..actorVar.dailyItemUseCount[groupId] )
|
|
sendItemUseCount(sysarg, groupId)
|
|
local nLastCount = getItemUseCount(sysarg, itemId)
|
|
local strNotice = string.format(OldLang.NoticeStr.strItemUseCount,Item.getItemName(itemId),count, nLastCount)
|
|
Actor.sendTipmsg( sysarg, strNotice , ttFlyTip )
|
|
return true
|
|
end
|
|
|