Commit 37037eebce759fd4a355508ad01a73716de6ee58
1 parent
0c0b161d
计算奖励
Showing
8 changed files
with
54 additions
and
31 deletions
Show diff stats
src/GlobalVar.lua
| @@ -58,7 +58,7 @@ ItemId = { | @@ -58,7 +58,7 @@ ItemId = { | ||
| 58 | PlayerExp = 4, -- 突破材料 | 58 | PlayerExp = 4, -- 突破材料 |
| 59 | BreakCost = 10, -- 突破材料 | 59 | BreakCost = 10, -- 突破材料 |
| 60 | EquipUp = 11, -- 装备升级材料 | 60 | EquipUp = 11, -- 装备升级材料 |
| 61 | - SupSkillUp = 12, --支援技升级材料 | 61 | + DinerCoin = 12, --后勤物资 |
| 62 | LoveUp = 14, --好感度提升道具 | 62 | LoveUp = 14, --好感度提升道具 |
| 63 | LoveBreak = 21, --好感度突破道具 | 63 | LoveBreak = 21, --好感度突破道具 |
| 64 | BoxKey = 20, -- 开箱钥匙 | 64 | BoxKey = 20, -- 开箱钥匙 |
src/actions/DinerAction.lua
| @@ -59,6 +59,8 @@ function _M.addSellRpc( agent, data ) | @@ -59,6 +59,8 @@ function _M.addSellRpc( agent, data ) | ||
| 59 | level = dishLevel, | 59 | level = dishLevel, |
| 60 | reward = {}, | 60 | reward = {}, |
| 61 | count = 0, | 61 | count = 0, |
| 62 | + reward = "", | ||
| 63 | + famous = 0, | ||
| 62 | } | 64 | } |
| 63 | end | 65 | end |
| 64 | local sell = sells[slot] | 66 | local sell = sells[slot] |
src/actions/HangAction.lua
| @@ -193,6 +193,7 @@ end | @@ -193,6 +193,7 @@ end | ||
| 193 | function _M.roleFormatRpc(agent , data) | 193 | function _M.roleFormatRpc(agent , data) |
| 194 | local role = agent.role | 194 | local role = agent.role |
| 195 | local msg = MsgPack.unpack(data) | 195 | local msg = MsgPack.unpack(data) |
| 196 | + dump(msg) | ||
| 196 | local hangTeam = role:getProperty("hangTeam") | 197 | local hangTeam = role:getProperty("hangTeam") |
| 197 | for slot, heroId in pairs(msg.heros) do | 198 | for slot, heroId in pairs(msg.heros) do |
| 198 | if not role.heros[heroId] then | 199 | if not role.heros[heroId] then |
src/main.lua
| @@ -15,8 +15,8 @@ skynet.start(function() | @@ -15,8 +15,8 @@ skynet.start(function() | ||
| 15 | ngxd = ngxd, | 15 | ngxd = ngxd, |
| 16 | 16 | ||
| 17 | redishost = "127.0.0.1", | 17 | redishost = "127.0.0.1", |
| 18 | - redisport = 6100, | ||
| 19 | - redisdb = 1, | 18 | + redisport = 6379, |
| 19 | + redisdb = 10, | ||
| 20 | auth = nil, | 20 | auth = nil, |
| 21 | 21 | ||
| 22 | mongohost = "127.0.0.1", | 22 | mongohost = "127.0.0.1", |
src/models/Diner.lua
| @@ -76,6 +76,47 @@ function Diner:notifyUpdateProperty(field, newValue, oldValue) | @@ -76,6 +76,47 @@ function Diner:notifyUpdateProperty(field, newValue, oldValue) | ||
| 76 | SendPacket(actionCodes.Diner_updateProperty, MsgPack.pack(datas)) | 76 | SendPacket(actionCodes.Diner_updateProperty, MsgPack.pack(datas)) |
| 77 | end | 77 | end |
| 78 | 78 | ||
| 79 | +local function calSellReward(sell, delta, dishData) | ||
| 80 | + local reward = sell.reward or "" | ||
| 81 | + local famous = sell.famous or 0 | ||
| 82 | + if delta <= 0 then | ||
| 83 | + return reward, famous | ||
| 84 | + end | ||
| 85 | + for type, value in pairs(dishData.item_normal:toNumMap()) do | ||
| 86 | + reward = reward:incrv(type, value * delta) | ||
| 87 | + end | ||
| 88 | + famous = famous + dishData.famous_normal * delta | ||
| 89 | + if sell.hot > 0 then | ||
| 90 | + for type, value in pairs(dishData.item_popular:toNumMap()) do | ||
| 91 | + reward = reward:incrv(type, value * delta) | ||
| 92 | + end | ||
| 93 | + famous = famous + dishData.famous_popular * delta | ||
| 94 | + end | ||
| 95 | + | ||
| 96 | + for buildType = 1, 6 do | ||
| 97 | + local level = self:getProperty("buildL"):getv(buildType, 1) | ||
| 98 | + local buildData = csvdb["diner_buildingCsv"][buildType][level] | ||
| 99 | + if buildData.gold_up > 0 then | ||
| 100 | + local value = reward:getv(ItemId.Gold, 0) | ||
| 101 | + value = math.floor(value * (100 + buildData.gold_up) / 100) | ||
| 102 | + if value > 0 then | ||
| 103 | + reward = reward:setv(ItemId.Gold, value) | ||
| 104 | + end | ||
| 105 | + end | ||
| 106 | + if buildData.item_up > 0 then | ||
| 107 | + local value = reward:getv(ItemId.DinerCoin, 0) | ||
| 108 | + value = math.floor(value * (100 + buildData.item_up) / 100) | ||
| 109 | + if value > 0 then | ||
| 110 | + reward = reward:setv(ItemId.DinerCoin, value) | ||
| 111 | + end | ||
| 112 | + end | ||
| 113 | + if buildData and buildData.famous_up > 0 then | ||
| 114 | + famous = math.floor(famous * (100 + buildData.famous_up) / 100) | ||
| 115 | + end | ||
| 116 | + end | ||
| 117 | + return reward, famous | ||
| 118 | +end | ||
| 119 | + | ||
| 79 | function Diner:updateSell(slot, calOnly) | 120 | function Diner:updateSell(slot, calOnly) |
| 80 | local sells = json.decode(self:getProperty("sells")) | 121 | local sells = json.decode(self:getProperty("sells")) |
| 81 | local sell = sells[slot] | 122 | local sell = sells[slot] |
| @@ -88,9 +129,7 @@ function Diner:updateSell(slot, calOnly) | @@ -88,9 +129,7 @@ function Diner:updateSell(slot, calOnly) | ||
| 88 | local deltaCount = 0 | 129 | local deltaCount = 0 |
| 89 | local timePass = skynet.timex() - sell.time | 130 | local timePass = skynet.timex() - sell.time |
| 90 | local sellTime = dishData.sell_time | 131 | local sellTime = dishData.sell_time |
| 91 | - if self:getProperty("hot"):getv(sell.dish, 0) > 0 then | ||
| 92 | - sellTime = sellTime * 1.5 | ||
| 93 | - end | 132 | + |
| 94 | deltaCount = math.floor(timePass / sellTime) | 133 | deltaCount = math.floor(timePass / sellTime) |
| 95 | if deltaCount < sell.count then | 134 | if deltaCount < sell.count then |
| 96 | deltaTime = math.floor(timePass - sellTime * deltaCount) | 135 | deltaTime = math.floor(timePass - sellTime * deltaCount) |
| @@ -99,33 +138,13 @@ function Diner:updateSell(slot, calOnly) | @@ -99,33 +138,13 @@ function Diner:updateSell(slot, calOnly) | ||
| 99 | local lastCount = sell.count - deltaCount | 138 | local lastCount = sell.count - deltaCount |
| 100 | 139 | ||
| 101 | if not calOnly then | 140 | if not calOnly then |
| 102 | - local reward = {} | ||
| 103 | - if deltaCount > 0 then | ||
| 104 | - local tmp = dishData.item_normal:toNumMap() | ||
| 105 | - if sell.hot then | ||
| 106 | - for k,v in pairs(dishData.item_popular:toNumMap()) do | ||
| 107 | - if tmp[k] then | ||
| 108 | - tmp[k] = tmp[k] + v | ||
| 109 | - else | ||
| 110 | - tmp[k] = v | ||
| 111 | - end | ||
| 112 | - end | ||
| 113 | - end | ||
| 114 | - | ||
| 115 | - for k, n in pairs(tmp) do | ||
| 116 | - local sum = n*deltaCount | ||
| 117 | - if reward[tostring(k)] then | ||
| 118 | - reward[tostring(k)] = reward[tostring(k)] + sum | ||
| 119 | - else | ||
| 120 | - reward[tostring(k)] = sum | ||
| 121 | - end | ||
| 122 | - end | ||
| 123 | - end | ||
| 124 | - | 141 | + local reward, famous = self:calSellReward(sell, deltaCount, dishData) |
| 125 | sell.time = skynet.timex() - deltaTime | 142 | sell.time = skynet.timex() - deltaTime |
| 126 | sell.count = lastCount | 143 | sell.count = lastCount |
| 127 | sell.level = self:getProperty("dishTree"):getv(sell.dish, 1) | 144 | sell.level = self:getProperty("dishTree"):getv(sell.dish, 1) |
| 145 | + sell.hot = self:getProperty("hot"):getv(sell.dish, 0) | ||
| 128 | sell.reward = reward | 146 | sell.reward = reward |
| 147 | + sell.famous = famous | ||
| 129 | self:setProperty("sells", json.encode(sells)) | 148 | self:setProperty("sells", json.encode(sells)) |
| 130 | end | 149 | end |
| 131 | return { | 150 | return { |
src/models/Role.lua
| @@ -35,6 +35,7 @@ Role.schema = { | @@ -35,6 +35,7 @@ Role.schema = { | ||
| 35 | exp = {"number", 0}, | 35 | exp = {"number", 0}, |
| 36 | items = {"string", ""}, | 36 | items = {"string", ""}, |
| 37 | loveStatus = {"string", ""}, --统计角色的最高 好感度等级 类型相关 -- type=loveL type=loveL | 37 | loveStatus = {"string", ""}, --统计角色的最高 好感度等级 类型相关 -- type=loveL type=loveL |
| 38 | + crown = {"number", 0}, -- 看伴娘 | ||
| 38 | 39 | ||
| 39 | bagLimit = {"table", globalCsv.store_limit_max}, | 40 | bagLimit = {"table", globalCsv.store_limit_max}, |
| 40 | 41 |