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,23 +28,39 @@ function _M.donateRpc(agent, data)
28 local DonateCsv = csvdb["seaport_purchaseCsv"] 28 local DonateCsv = csvdb["seaport_purchaseCsv"]
29 if not DonateCsv[phase] or not DonateCsv[phase][id] then return 2 end 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 if itemId ~= needs[1] then return 3 end 33 if itemId ~= needs[1] then return 3 end
34 if itemCount % needs[2] ~= 0 then return 4 end 34 if itemCount % needs[2] ~= 0 then return 4 end
35 35
36 local group = itemCount / needs[2] 36 local group = itemCount / needs[2]
37 - local rewards = data.award:toNumMap() 37 + local rewards = ddata.award:toNumMap()
38 38
39 for id, value in pairs(rewards) do 39 for id, value in pairs(rewards) do
40 rewards[id] = value * group 40 rewards[id] = value * group
41 end 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 role:costItems({[itemId] = itemCount}, {log = {desc = "seaportDonate", int1 = phase, int2 = id}}) 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 role:mylog("role_action", {desc = "seaportDonate", int1 = itemId, int2 = itemCount}) 65 role:mylog("role_action", {desc = "seaportDonate", int1 = itemId, int2 = itemCount})
50 66
src/services/globald.lua
@@ -155,22 +155,27 @@ end @@ -155,22 +155,27 @@ end
155 155
156 -- @desc: 检查海港贸易开启、关闭 156 -- @desc: 检查海港贸易开启、关闭
157 local function check_trade_seaport_status() 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 local nextTime = dayLater(nowTime) 159 local nextTime = dayLater(nowTime)
161 - local interval = nextTime - nowTime + 1 160 + local interval = 100 * (nextTime - nowTime + 1)
162 161
163 local curTm = os.date("*t", nowTime) 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 end 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 end 177 end
173 - if curTm.wday == 2 and curTm.hour == 4 then 178 + if curTm.wday == 2 and curTm.hour >= 4 then -- 周一
174 -- redisproxy:hset("autoincrement_set", "seaportTime0", 0) 179 -- redisproxy:hset("autoincrement_set", "seaportTime0", 0)
175 redisproxy:hset("autoincrement_set", "seaportTime1", 0) 180 redisproxy:hset("autoincrement_set", "seaportTime1", 0)
176 redisproxy:hset("autoincrement_set", "seaportTime2", 0) 181 redisproxy:hset("autoincrement_set", "seaportTime2", 0)