local ipairs = ipairs local table = table local math = math local redisproxy = redisproxy local MsgPack = MsgPack local _M = {} function _M.makePotionRpc( agent, data ) local role = agent.role local msg = MsgPack.unpack(data) local potionId = msg.id local count = msg.count if count < 1 then return 0 end local potionBag = role:getProperty("potionBag") local potionLv = role.dinerData:getProperty("dishTree"):getv(potionId, 0) if potionLv < 1 then return 1 end local potionSet = csvdb["adv_potionCsv"][potionId] if not potionSet then return 2 end local potionData = potionSet[potionLv] if not potionData then return 3 end local own = potionBag[potionId] or 0 if own+count > potionData.limit then return 4 end local cost = potionData.material:toNumMap() for _, n in pairs(cost) do n = n * count end if not role:checkItemEnough(cost) then return 5 end role:costItems(cost) potionBag[potionId] = own + count role:updateProperty({field = "potionBag", value = potionBag}) SendPacket(actionCodes.Car_makePotionRpc, MsgPack.pack({potionBag = potionBag})) return true end function _M.equipUpRpc( agent, data ) local role = agent.role local msg = MsgPack.unpack(data) local id = msg.id local count = msg.count if count < 1 then return 0 end local typ = math.floor((id-7000)/100) local lv = (id-7000)%100 local dataSet = csvdb["equipCsv"][typ] if not dataSet then return 1 end local equipData = dataSet[lv] if not equipData then return 21 end if equipData.merge < 1 then return 22 end local maxLv = 3 local nextLv = lv+1 if nextLv%10 > maxLv then nextLv = nextLv+10-maxLv end local nextEquip = dataSet[nextLv] if not nextEquip then return 23 end local own = role:getItemCount(id) if own < count then return 3 end local cost = equipData.cost:toNumMap() for _, n in pairs(cost) do n = n * count end if not role:checkItemEnough(cost) then return 4 end local merge = {[id]=equipData.merge*count} if not role:checkItemEnough(merge) then return 5 end role:costItems(cost) role:costItems(merge) role:addItem({itemId = nextEquip.id,count = count}) SendPacket(actionCodes.Car_equipUpRpc, '') return true end return _M