Commit e820b3f342555571fcf69cb5d2af263ecd84428d
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) |