Commit e820b3f342555571fcf69cb5d2af263ecd84428d

Authored by chenyueqi
1 parent 5fb0ac5f

海港贸易季bug修正

Showing 2 changed files with 38 additions and 17 deletions   Show diff stats
src/actions/SeaportAction.lua
... ... @@ -28,23 +28,39 @@ function _M.donateRpc(agent, data)
28 28 local DonateCsv = csvdb["seaport_purchaseCsv"]
29 29 if not DonateCsv[phase] or not DonateCsv[phase][id] then return 2 end
30 30  
31   - local data = DonateCsv[phase][id]
32   - local needs = data.need_item:toArray(true,"=")
  31 + local ddata = DonateCsv[phase][id]
  32 + local needs = ddata.need_item:toArray(true,"=")
33 33 if itemId ~= needs[1] then return 3 end
34 34 if itemCount % needs[2] ~= 0 then return 4 end
35 35  
36 36 local group = itemCount / needs[2]
37   - local rewards = data.award:toNumMap()
  37 + local rewards = ddata.award:toNumMap()
38 38  
39 39 for id, value in pairs(rewards) do
40 40 rewards[id] = value * group
41 41 end
42 42  
43   - local rediskey = {SEAPORT_TRADE_TASK_1,SEAPORT_TRADE_TASK_2}
44   - redisproxy:hincrby(rediskey[phase],id,itemCount)
  43 + if phase == 1 then
  44 + local old = tonumber(redisproxy:hget(SEAPORT_TRADE_TASK_1,id)) or 0
  45 + local need = ddata.need_num - old
  46 + if need >= itemCount then
  47 + redisproxy:hincrby(SEAPORT_TRADE_TASK_1,id,itemCount)
  48 + else
  49 + redisproxy:hincrby(SEAPORT_TRADE_TASK_1,id,need)
  50 + for _, temp in pairs(DonateCsv[2]) do
  51 + local items = temp.need_item:toArray(true,"=")
  52 + if items[1] == itemId then
  53 + redisproxy:hincrby(SEAPORT_TRADE_TASK_2,temp.id,itemCount - need)
  54 + break
  55 + end
  56 + end
  57 + end
  58 + else
  59 + redisproxy:hincrby(SEAPORT_TRADE_TASK_2,id,itemCount)
  60 + end
45 61  
46 62 role:costItems({[itemId] = itemCount}, {log = {desc = "seaportDonate", int1 = phase, int2 = id}})
47   - local reward, change = role:award(rewards, {log = {desc = "seaportDonate", int1 = data.phase, int2 = data.id}})
  63 + local reward, change = role:award(rewards, {log = {desc = "seaportDonate", int1 = ddata.phase, int2 = ddata.id}})
48 64  
49 65 role:mylog("role_action", {desc = "seaportDonate", int1 = itemId, int2 = itemCount})
50 66  
... ...
src/services/globald.lua
... ... @@ -155,22 +155,27 @@ end
155 155  
156 156 -- @desc: 检查海港贸易开启、关闭
157 157 local function check_trade_seaport_status()
158   - local delta = 1615579200 + 1000
159   - local nowTime = delta or skynet.timex()
  158 + local nowTime = skynet.timex()
160 159 local nextTime = dayLater(nowTime)
161   - local interval = nextTime - nowTime + 1
  160 + local interval = 100 * (nextTime - nowTime + 1)
162 161  
163 162 local curTm = os.date("*t", nowTime)
164   - if curTm.wday == 7 and curTm.hour == 4 then
165   - redisproxy:hset("autoincrement_set", "seaportTime0", nowTime)
166   - redisproxy:hset("autoincrement_set", "seaportTime1", 1)
167   - redisproxy:del(SEAPORT_TRADE_TASK_1)
168   - redisproxy:del(SEAPORT_TRADE_TASK_2)
  163 + if curTm.wday == 7 and curTm.hour >= 4 then -- 周六
  164 + local oldTime = tonumber(redisproxy:hget("autoincrement_set", "seaportTime0")) or 0
  165 + local cur4Time = specTime({hour = 4},nowTime)
  166 + if cur4Time ~= oldTime then
  167 + redisproxy:hset("autoincrement_set", "seaportTime0", cur4Time)
  168 + redisproxy:hset("autoincrement_set", "seaportTime1", 1)
  169 + redisproxy:del(SEAPORT_TRADE_TASK_1)
  170 + redisproxy:del(SEAPORT_TRADE_TASK_2)
  171 + end
169 172 end
170   - if curTm.wday == 1 and curTm.hour == 4 then
171   - redisproxy:hset("autoincrement_set", "seaportTime2", 1)
  173 + if curTm.wday == 1 and curTm.hour >= 4 then -- 周日
  174 + if (tonumber(redisproxy:hget("autoincrement_set", "seaportTime1")) or 0) == 1 then
  175 + redisproxy:hset("autoincrement_set", "seaportTime2", 1)
  176 + end
172 177 end
173   - if curTm.wday == 2 and curTm.hour == 4 then
  178 + if curTm.wday == 2 and curTm.hour >= 4 then -- 周一
174 179 -- redisproxy:hset("autoincrement_set", "seaportTime0", 0)
175 180 redisproxy:hset("autoincrement_set", "seaportTime1", 0)
176 181 redisproxy:hset("autoincrement_set", "seaportTime2", 0)
... ...