Commit 6232e12181712e44ef9c61552e3fa1868f796ed5
Merge branch 'cn/develop' into cn/publish/preview
# Conflicts: # src/csvdata
Showing
24 changed files
with
681 additions
and
94 deletions
Show diff stats
config/develop.lua
1 | include("basic.lua") | 1 | include("basic.lua") |
2 | 2 | ||
3 | -logd = 0 -- 是否开启日志 | 3 | +logd = 1 -- 是否开启日志 |
4 | thread = 4 | 4 | thread = 4 |
5 | codeurl = "192.168.0.199:9090" | 5 | codeurl = "192.168.0.199:9090" |
6 | servId = 1 | 6 | servId = 1 |
@@ -20,4 +20,4 @@ redis_auth = nil | @@ -20,4 +20,4 @@ redis_auth = nil | ||
20 | mysql_host = "127.0.0.1" | 20 | mysql_host = "127.0.0.1" |
21 | mysql_port = 3306 | 21 | mysql_port = 3306 |
22 | mysql_user = "root" | 22 | mysql_user = "root" |
23 | -mysql_password = "123456" | ||
24 | \ No newline at end of file | 23 | \ No newline at end of file |
24 | +mysql_password = "123456" |
src/ProtocolCode.lua
@@ -107,6 +107,7 @@ actionCodes = { | @@ -107,6 +107,7 @@ actionCodes = { | ||
107 | Hero_itemComposeRpc = 225, | 107 | Hero_itemComposeRpc = 225, |
108 | Hero_setWishPoolRpc = 226, | 108 | Hero_setWishPoolRpc = 226, |
109 | Hero_changeSparkRpc = 227, | 109 | Hero_changeSparkRpc = 227, |
110 | + Hero_saveGeniusTreeRpc = 228, | ||
110 | 111 | ||
111 | Hang_startRpc = 251, | 112 | Hang_startRpc = 251, |
112 | Hang_checkRpc = 252, | 113 | Hang_checkRpc = 252, |
src/actions/ActivityAction.lua
@@ -143,7 +143,8 @@ function _M.signRpc(agent, data) | @@ -143,7 +143,8 @@ function _M.signRpc(agent, data) | ||
143 | if monthData[curDay].daily_sign_email ~= "" then | 143 | if monthData[curDay].daily_sign_email ~= "" then |
144 | local emails = monthData[curDay].daily_sign_email:toArray(true,"=") | 144 | local emails = monthData[curDay].daily_sign_email:toArray(true,"=") |
145 | for _, emailId in pairs(emails) do | 145 | for _, emailId in pairs(emails) do |
146 | - redisproxy:insertEmail({roleId = role:getProperty("id"), emailId = emailId}) | 146 | + --redisproxy:insertEmail({roleId = role:getProperty("id"), emailId = emailId}) |
147 | + role:sendMail(emailId) | ||
147 | end | 148 | end |
148 | end | 149 | end |
149 | 150 | ||
@@ -312,6 +313,7 @@ function _M.actBattleCommandTaskRpc(agent, data) | @@ -312,6 +313,7 @@ function _M.actBattleCommandTaskRpc(agent, data) | ||
312 | activity_type = role.activity.ActivityType.BattleCommandTask, -- 活动类型,见活动类型枚举表 | 313 | activity_type = role.activity.ActivityType.BattleCommandTask, -- 活动类型,见活动类型枚举表 |
313 | activity_reward = reward, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...} | 314 | activity_reward = reward, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...} |
314 | }) | 315 | }) |
316 | + role:mylog("act_action", {desc="bcTask", int1=taskId, int2=taskCfg.resetType}) | ||
315 | 317 | ||
316 | role:checkTaskEnter("FinishSpeTask", {taskId = taskId, actId = actId}) | 318 | role:checkTaskEnter("FinishSpeTask", {taskId = taskId, actId = actId}) |
317 | 319 | ||
@@ -1327,6 +1329,7 @@ function _M.buyBattleCommandLvlRpc(agent, data) | @@ -1327,6 +1329,7 @@ function _M.buyBattleCommandLvlRpc(agent, data) | ||
1327 | role:costItems({[ItemId.Jade] = cost}, {log = {desc = "actBuyBpLevel", int1 = curLvl}}) | 1329 | role:costItems({[ItemId.Jade] = cost}, {log = {desc = "actBuyBpLevel", int1 = curLvl}}) |
1328 | actData["lvl"] = nextLvl | 1330 | actData["lvl"] = nextLvl |
1329 | role.activity:updateActData("BattleCommand", actData) | 1331 | role.activity:updateActData("BattleCommand", actData) |
1332 | + role:mylog("act_action", {desc="buyBcLvl", int1=count, int2=nextLvl}) | ||
1330 | 1333 | ||
1331 | SendPacket(actionCodes.Activity_buyBattleCommandLvlRpc, MsgPack.pack({})) | 1334 | SendPacket(actionCodes.Activity_buyBattleCommandLvlRpc, MsgPack.pack({})) |
1332 | return true | 1335 | return true |
src/actions/AdvAction.lua
@@ -183,6 +183,7 @@ function _M.startAdvRpc( agent, data ) | @@ -183,6 +183,7 @@ function _M.startAdvRpc( agent, data ) | ||
183 | cost = relayData.supply | 183 | cost = relayData.supply |
184 | end | 184 | end |
185 | role:checkTaskEnter("AdvCostPower", {count = cost}) | 185 | role:checkTaskEnter("AdvCostPower", {count = cost}) |
186 | + role:mylog("adv_action", {desc = "costPower", int1 = cost}) | ||
186 | 187 | ||
187 | local support = {} -- 支援效果 | 188 | local support = {} -- 支援效果 |
188 | if AdvCommon.isEndless(chapterId) then | 189 | if AdvCommon.isEndless(chapterId) then |
@@ -293,6 +294,8 @@ function _M.startHangRpc(agent, data) | @@ -293,6 +294,8 @@ function _M.startHangRpc(agent, data) | ||
293 | if not role:checkAdvCount(adv_idle_energy) then return 7 end -- 是否有体力 | 294 | if not role:checkAdvCount(adv_idle_energy) then return 7 end -- 是否有体力 |
294 | 295 | ||
295 | role:checkTaskEnter("AdvCostPower", {count = adv_idle_energy}) | 296 | role:checkTaskEnter("AdvCostPower", {count = adv_idle_energy}) |
297 | + role:checkTaskEnter("AdvHangTime", {count = math.ceil(adv_idle_time / 3600)}) | ||
298 | + role:mylog("adv_action", {desc = "costPower", int1 = adv_idle_energy}) | ||
296 | 299 | ||
297 | if not checkFormat(role, format, role:getAdvData():isRunning()) then return 8 end --编队是否正确 | 300 | if not checkFormat(role, format, role:getAdvData():isRunning()) then return 8 end --编队是否正确 |
298 | 301 | ||
@@ -494,7 +497,6 @@ function _M.endHangRpc(agent, data) | @@ -494,7 +497,6 @@ function _M.endHangRpc(agent, data) | ||
494 | 497 | ||
495 | role:checkTaskEnter("AdvHang", {}) | 498 | role:checkTaskEnter("AdvHang", {}) |
496 | role:checkTaskEnter("AdvHangHeroCnt", {count = heroCnt}) | 499 | role:checkTaskEnter("AdvHangHeroCnt", {count = heroCnt}) |
497 | - role:checkTaskEnter("AdvHangTime", {count = math.ceil(adv_idle_time / 3600)}) | ||
498 | 500 | ||
499 | SendPacket(actionCodes.Adv_endHangRpc, MsgPack.pack({reward = reward, change = change, isFull = isFull, heroFaith = heroFaithMap})) | 501 | SendPacket(actionCodes.Adv_endHangRpc, MsgPack.pack({reward = reward, change = change, isFull = isFull, heroFaith = heroFaithMap})) |
500 | return true | 502 | return true |
src/actions/DinerAction.lua
@@ -182,13 +182,17 @@ function _M.getSellRewardRpc( agent, data ) | @@ -182,13 +182,17 @@ function _M.getSellRewardRpc( agent, data ) | ||
182 | local sells = json.decode(role.dinerData:getProperty("sells")) | 182 | local sells = json.decode(role.dinerData:getProperty("sells")) |
183 | 183 | ||
184 | local deltaTimes = {} | 184 | local deltaTimes = {} |
185 | - for slot, _ in pairs(sells) do | 185 | + for slot, sell in pairs(sells) do |
186 | + local oldCount = sell.count | ||
187 | + local sellDish = sell.dish | ||
186 | local temp = role.dinerData:updateSell(slot) or { | 188 | local temp = role.dinerData:updateSell(slot) or { |
187 | deltaCount = 0, | 189 | deltaCount = 0, |
188 | deltaTime = 0, | 190 | deltaTime = 0, |
189 | lastCount = 0, | 191 | lastCount = 0, |
190 | } | 192 | } |
191 | deltaTimes[slot] = temp.deltaTime | 193 | deltaTimes[slot] = temp.deltaTime |
194 | + local sellCount = oldCount - temp.lastCount | ||
195 | + role:mylog("diner_action", {desc = "sell", int1 = sellDish, int2 = sellCount}) | ||
192 | end | 196 | end |
193 | sells = json.decode(role.dinerData:getProperty("sells")) | 197 | sells = json.decode(role.dinerData:getProperty("sells")) |
194 | for slot, sell in pairs(sells) do | 198 | for slot, sell in pairs(sells) do |
@@ -238,7 +242,7 @@ function _M.getSellRewardRpc( agent, data ) | @@ -238,7 +242,7 @@ function _M.getSellRewardRpc( agent, data ) | ||
238 | role.dinerData:notifyUpdateProperty("order", role.dinerData:getProperty("order")) | 242 | role.dinerData:notifyUpdateProperty("order", role.dinerData:getProperty("order")) |
239 | end | 243 | end |
240 | 244 | ||
241 | - role:mylog("diner_action", {desc = "sell"}) | 245 | + --role:mylog("diner_action", {desc = "sell"}) |
242 | 246 | ||
243 | SendPacket(actionCodes.Diner_getSellRewardRpc, MsgPack.pack({reward = reward, change = change})) | 247 | SendPacket(actionCodes.Diner_getSellRewardRpc, MsgPack.pack({reward = reward, change = change})) |
244 | return true | 248 | return true |
@@ -327,7 +331,7 @@ function _M.expediteSellRpc( agent, data ) | @@ -327,7 +331,7 @@ function _M.expediteSellRpc( agent, data ) | ||
327 | end | 331 | end |
328 | role:checkTaskEnter("FoodSellQuick") | 332 | role:checkTaskEnter("FoodSellQuick") |
329 | 333 | ||
330 | - role:mylog("diner_action", {desc = "sellQ"}) | 334 | + role:mylog("diner_action", {desc = "sellQ", int1 = count + 1}) |
331 | 335 | ||
332 | SendPacket(actionCodes.Diner_expediteSellRpc, MsgPack.pack({reward = reward, change = change, popular = popular})) | 336 | SendPacket(actionCodes.Diner_expediteSellRpc, MsgPack.pack({reward = reward, change = change, popular = popular})) |
333 | return true | 337 | return true |
@@ -703,37 +707,47 @@ function _M.addWantFoodRpc(agent , data) | @@ -703,37 +707,47 @@ function _M.addWantFoodRpc(agent , data) | ||
703 | if #ids > buildingData.business then return 2 end | 707 | if #ids > buildingData.business then return 2 end |
704 | 708 | ||
705 | local had = {} | 709 | local had = {} |
706 | - for _, itemId in ipairs(ids) do | ||
707 | - if had[itemId] then return end | ||
708 | - had[itemId] = 1 | ||
709 | - local foodData = csvdb["diner_materialCsv"][itemId] | ||
710 | - if not foodData then return 3 end | ||
711 | - if foodData.unlock ~= 0 then | ||
712 | - -- 遍历adv_potion | ||
713 | - for potionId, _ in pairs(csvdb["adv_potionCsv"]) do | ||
714 | - local potionLv = role.dinerData:getProperty("dishTree"):getv(potionId, 0) | ||
715 | - if potionLv < 1 then return 4 end | ||
716 | - | ||
717 | - local potionSet = csvdb["adv_potionCsv"][potionId] | ||
718 | - if not potionSet then return 5 end | ||
719 | - | ||
720 | - local potionData = potionSet[potionLv] | ||
721 | - if not potionData then return 6 end | ||
722 | - | ||
723 | - local cost = potionData.material:toNumMap() | ||
724 | - if not cost[itemId] then return 7 end | 710 | + -- 遍历adv_potion |
711 | + for potionId, potionData in pairs(csvdb["adv_potionCsv"]) do | ||
712 | + local potionLv = role:getPotionLevel(potionId) | ||
713 | + if potionLv > 0 then | ||
714 | + local cfg = potionData[potionLv] | ||
715 | + if cfg then | ||
716 | + local cost = cfg.material:toNumMap() | ||
717 | + for id, _ in pairs(cost) do | ||
718 | + local itemData = csvdb["itemCsv"][id] | ||
719 | + local mData = csvdb["diner_materialCsv"][id] | ||
720 | + if itemData.type == ItemType.Cuisine and not had[id] then | ||
721 | + had[id] = true | ||
722 | + end | ||
723 | + end | ||
725 | end | 724 | end |
726 | - if not role:checkHangPass(foodData.unlock) then | ||
727 | - return 4 | 725 | + end |
726 | + end | ||
727 | + -- 遍历dish | ||
728 | + for id, lv in pairs(role.dinerData:getProperty("dishTree"):toNumMap()) do | ||
729 | + if csvdb["diner_dishCsv"][id] and csvdb["diner_dishCsv"][id][lv] then | ||
730 | + local data = csvdb["diner_dishCsv"][id][lv] | ||
731 | + local costs = data.material:toNumMap() | ||
732 | + for id, _ in pairs(costs) do | ||
733 | + local itemData = csvdb["itemCsv"][id] | ||
734 | + local mData = csvdb["diner_materialCsv"][id] | ||
735 | + if itemData.type == ItemType.Cuisine and not had[id] then | ||
736 | + had[id] = true | ||
737 | + end | ||
728 | end | 738 | end |
729 | end | 739 | end |
730 | end | 740 | end |
741 | + for _, itemId in ipairs(ids) do | ||
742 | + if not had[itemId] then return 3 end | ||
743 | + end | ||
744 | + | ||
731 | local gfood = {} | 745 | local gfood = {} |
732 | for slot, itemId in ipairs(ids) do | 746 | for slot, itemId in ipairs(ids) do |
733 | gfood[slot] = {id = itemId, st = skynet.timex()} | 747 | gfood[slot] = {id = itemId, st = skynet.timex()} |
734 | end | 748 | end |
735 | 749 | ||
736 | - role:finishGuide(36) | 750 | + role:finishGuide(30) |
737 | role:mylog("diner_action", {desc = "wantFood"}) | 751 | role:mylog("diner_action", {desc = "wantFood"}) |
738 | 752 | ||
739 | role.dinerData:updateProperty({field = "gfood", value = gfood}) | 753 | role.dinerData:updateProperty({field = "gfood", value = gfood}) |
src/actions/EmailAction.lua
@@ -133,6 +133,7 @@ function _M.drawAttachRpc(agent, data) | @@ -133,6 +133,7 @@ function _M.drawAttachRpc(agent, data) | ||
133 | 133 | ||
134 | 134 | ||
135 | local email = require("models.Email").new({key = string.format("%d", id), id = id}) | 135 | local email = require("models.Email").new({key = string.format("%d", id), id = id}) |
136 | + email.owner = role | ||
136 | if not email:load() then return end | 137 | if not email:load() then return end |
137 | 138 | ||
138 | local attachments = getEmailAttachments(email) | 139 | local attachments = getEmailAttachments(email) |
@@ -142,7 +143,7 @@ function _M.drawAttachRpc(agent, data) | @@ -142,7 +143,7 @@ function _M.drawAttachRpc(agent, data) | ||
142 | email:setProperty("status", 2, true) | 143 | email:setProperty("status", 2, true) |
143 | email:log(role, 2) | 144 | email:log(role, 2) |
144 | SendPacket(actionCodes.Email_drawAttachRpc, MsgPack.pack({reward = reward, change = change})) | 145 | SendPacket(actionCodes.Email_drawAttachRpc, MsgPack.pack({reward = reward, change = change})) |
145 | - role:mylog("mail_action", {desc = "draw_attach", int1 = id, key1 = email:getProperty("title"), key2 = attachments}) | 146 | + role:mylog("mail_action", {desc = "draw_attach", int1 = email:getProperty("emailId"), key1 = email:getProperty("title"), key2 = attachments}) |
146 | return true | 147 | return true |
147 | end | 148 | end |
148 | 149 |
src/actions/FriendAction.lua
@@ -118,7 +118,6 @@ function _M.applyRpc(agent, data) | @@ -118,7 +118,6 @@ function _M.applyRpc(agent, data) | ||
118 | 118 | ||
119 | local msg = MsgPack.unpack(data) | 119 | local msg = MsgPack.unpack(data) |
120 | local objectId = msg.roleId | 120 | local objectId = msg.roleId |
121 | - dump(msg) | ||
122 | 121 | ||
123 | if objectId == roleId then | 122 | if objectId == roleId then |
124 | return | 123 | return |
@@ -130,7 +129,6 @@ function _M.applyRpc(agent, data) | @@ -130,7 +129,6 @@ function _M.applyRpc(agent, data) | ||
130 | red:sismember(FRIEND_BLACK_KEY:format(objectId), roleId) | 129 | red:sismember(FRIEND_BLACK_KEY:format(objectId), roleId) |
131 | red:sismember(FRIEND_BLACK_KEY:format(roleId), objectId) | 130 | red:sismember(FRIEND_BLACK_KEY:format(roleId), objectId) |
132 | end) | 131 | end) |
133 | - dump(redret) | ||
134 | 132 | ||
135 | -- 玩家id不存在 | 133 | -- 玩家id不存在 |
136 | if not result and not roleExists(objectId) then | 134 | if not result and not roleExists(objectId) then |
@@ -171,7 +169,7 @@ function _M.applyRpc(agent, data) | @@ -171,7 +169,7 @@ function _M.applyRpc(agent, data) | ||
171 | myInfo.online = true | 169 | myInfo.online = true |
172 | myInfo.hadApply = true | 170 | myInfo.hadApply = true |
173 | 171 | ||
174 | - role:mylog("role_action", {desc = "addFriend", int1 = 1}) | 172 | + role:mylog("role_action", {desc = "applyFriend", int1 = 1}) |
175 | 173 | ||
176 | rpcRole(objectId, "SendPacket", actionCodes.Friend_updateProperty, MsgPack.pack({newApply = 1, info = {myInfo}})) -- 通知对方 | 174 | rpcRole(objectId, "SendPacket", actionCodes.Friend_updateProperty, MsgPack.pack({newApply = 1, info = {myInfo}})) -- 通知对方 |
177 | end | 175 | end |
@@ -420,6 +418,7 @@ function _M.deleteRpc(agent, data) | @@ -420,6 +418,7 @@ function _M.deleteRpc(agent, data) | ||
420 | friend_roleid = objectId, -- 好友账户下的角色id | 418 | friend_roleid = objectId, -- 好友账户下的角色id |
421 | friend_cnt = 0, -- 操作后好友数量 | 419 | friend_cnt = 0, -- 操作后好友数量 |
422 | }) | 420 | }) |
421 | + role:mylog("role_action", {desc = "delFriend", int1 = 1}) | ||
423 | SendPacket(actionCodes.Friend_deleteRpc, MsgPack.pack("")) | 422 | SendPacket(actionCodes.Friend_deleteRpc, MsgPack.pack("")) |
424 | return true | 423 | return true |
425 | end | 424 | end |
@@ -646,18 +645,19 @@ function _M.randomRpc(agent, data) | @@ -646,18 +645,19 @@ function _M.randomRpc(agent, data) | ||
646 | for idx, objId in ipairs(needRoleIds) do | 645 | for idx, objId in ipairs(needRoleIds) do |
647 | if not redret[idx] then | 646 | if not redret[idx] then |
648 | local online, info = getRoleInfo(objId) | 647 | local online, info = getRoleInfo(objId) |
649 | - table.insert(randomRoles, table_merge({ | ||
650 | - roleId = objId, | ||
651 | - online = online, | ||
652 | - hadApply = hadApply, | ||
653 | - inBlack = inBlack, | ||
654 | - }, info, { | ||
655 | - | ||
656 | - })) | ||
657 | - if #randomRoles >= globalCsv.friendRecommendLimit then break end | 648 | + if next(info) then |
649 | + table.insert(randomRoles, table_merge({ | ||
650 | + roleId = objId, | ||
651 | + online = online, | ||
652 | + hadApply = hadApply, | ||
653 | + inBlack = inBlack, | ||
654 | + }, info, { | ||
655 | + | ||
656 | + })) | ||
657 | + if #randomRoles >= globalCsv.friendRecommendLimit then break end | ||
658 | + end | ||
658 | end | 659 | end |
659 | end | 660 | end |
660 | - | ||
661 | SendPacket(actionCodes.Friend_randomRpc, MsgPack.pack({list = randomRoles})) | 661 | SendPacket(actionCodes.Friend_randomRpc, MsgPack.pack({list = randomRoles})) |
662 | return true | 662 | return true |
663 | end | 663 | end |
src/actions/GmAction.lua
@@ -301,9 +301,13 @@ function _M.get(role, pms) | @@ -301,9 +301,13 @@ function _M.get(role, pms) | ||
301 | end | 301 | end |
302 | end | 302 | end |
303 | elseif pms.pm1 == "HERO" then | 303 | elseif pms.pm1 == "HERO" then |
304 | - for itemId = 400 , 700 do | 304 | + local unitCsv = csvdb["unitCsv"] |
305 | + for itemId = 400 , 800 do | ||
305 | if csvdb["itemCsv"][itemId] then | 306 | if csvdb["itemCsv"][itemId] then |
306 | - role:award({[itemId] = 1}, {log = {desc = "gm"}}) | 307 | + local heroUnit = unitCsv[itemId - 300] |
308 | + if heroUnit.open == 1 then | ||
309 | + role:award({[itemId] = 1}, {log = {desc = "gm"}}) | ||
310 | + end | ||
307 | end | 311 | end |
308 | end | 312 | end |
309 | elseif pms.pm1 == "MAXHERO" then | 313 | elseif pms.pm1 == "MAXHERO" then |
@@ -984,5 +988,43 @@ function _M.drawHero(role, t, act) | @@ -984,5 +988,43 @@ function _M.drawHero(role, t, act) | ||
984 | return result | 988 | return result |
985 | end | 989 | end |
986 | 990 | ||
991 | +table.insert(helpDes, {"宝藏图鉴", "treasure", "list"} ) | ||
992 | +function _M.treasure(role, pms) | ||
993 | + local pm1 = pms.pm1 | ||
994 | + if pm1 == "LIST" then | ||
995 | + local treasureList= role.dailyData:getProperty("treasureList") | ||
996 | + dump(treasureList) | ||
997 | + return "宝藏图鉴" | ||
998 | + elseif pm1 == "FLUSH" then | ||
999 | + local treasureList= role.dailyData:getTreasrueList(role) | ||
1000 | + dump(treasureList) | ||
1001 | + return "宝藏图鉴" | ||
1002 | + elseif pm1 == "CHECK" then | ||
1003 | + local treasureList = role.dailyData:checkTreasureList(role) | ||
1004 | + if treasureList == nil then | ||
1005 | + return "未挖到宝藏" | ||
1006 | + end | ||
1007 | + dump(treasureList) | ||
1008 | + return "挖宝成功" | ||
1009 | + elseif pm1 == "RESET" then | ||
1010 | + role.dailyData:resetTreasureList() | ||
1011 | + return "重置宝藏图鉴" | ||
1012 | + else | ||
1013 | + return "暂无指令: ".. pm1 | ||
1014 | + end | ||
1015 | +end | ||
1016 | + | ||
1017 | +table.insert(helpDes, {"天赋点设置", "savegenius", "heroId", "wakeL", "awake"}) | ||
1018 | +function _M.savegenius(role, pms) | ||
1019 | + local heroId = pms.pm1 | ||
1020 | + local wakeL = pms.pm2 | ||
1021 | + local awake = pms.pm3 | ||
1022 | + local hero = role.heros[tonumber(heroId)] | ||
1023 | + | ||
1024 | + if not hero then return "英雄不存在" end | ||
1025 | + local genius = hero:saveGeniusTree(wakeL, awake) | ||
1026 | + print(genius) | ||
1027 | + return "天赋点设置成功" | ||
1028 | +end | ||
987 | 1029 | ||
988 | return _M | 1030 | return _M |
989 | \ No newline at end of file | 1031 | \ No newline at end of file |
src/actions/HangAction.lua
@@ -16,7 +16,18 @@ local table_unpack = table.unpack | @@ -16,7 +16,18 @@ local table_unpack = table.unpack | ||
16 | 16 | ||
17 | local _M = {} | 17 | local _M = {} |
18 | 18 | ||
19 | -local function checkReward(role) | 19 | +local function getHangTime(role) |
20 | + local hangInfo = role:getProperty("hangInfo") | ||
21 | + if not hangInfo.carbonId or not hangInfo.coinTime or not hangInfo.itemTime then | ||
22 | + return 0 | ||
23 | + end | ||
24 | + local carbonData = csvdb["idle_battleCsv"][hangInfo.carbonId] | ||
25 | + local nowCoinTime = math.min(skynet.timex(), hangInfo.endCoinTime or 0) | ||
26 | + | ||
27 | + return nowCoinTime - hangInfo.coinTime | ||
28 | +end | ||
29 | + | ||
30 | +local function checkReward(role, isTreasure, carbonId) | ||
20 | local hangInfo = role:getProperty("hangInfo") | 31 | local hangInfo = role:getProperty("hangInfo") |
21 | if not hangInfo.carbonId or not hangInfo.coinTime or not hangInfo.itemTime then | 32 | if not hangInfo.carbonId or not hangInfo.coinTime or not hangInfo.itemTime then |
22 | return false | 33 | return false |
@@ -45,7 +56,7 @@ local function checkReward(role) | @@ -45,7 +56,7 @@ local function checkReward(role) | ||
45 | coinCount = (coinCount + coinDoubleCount) * expCoef | 56 | coinCount = (coinCount + coinDoubleCount) * expCoef |
46 | items[ItemId.Gold] = math.floor((items[ItemId.Gold] or 0) + coinCount * (expCarbonData.money or 0)) | 57 | items[ItemId.Gold] = math.floor((items[ItemId.Gold] or 0) + coinCount * (expCarbonData.money or 0)) |
47 | items[ItemId.Exp] = math.floor((items[ItemId.Exp] or 0) + coinCount * (expCarbonData.exp or 0)) | 58 | items[ItemId.Exp] = math.floor((items[ItemId.Exp] or 0) + coinCount * (expCarbonData.exp or 0)) |
48 | - items[ItemId.PlayerExp] = math.floor((items[ItemId.PlayerExp] or 0) + (coinCount * expCarbonData.playerExp or 0)) | 59 | + items[ItemId.PlayerExp] = math.floor((items[ItemId.PlayerExp] or 0) + coinCount * (expCarbonData.playerExp or 0)) |
49 | 60 | ||
50 | local pool = {} | 61 | local pool = {} |
51 | for _, temp in pairs(carbonData.item:toArray()) do | 62 | for _, temp in pairs(carbonData.item:toArray()) do |
@@ -114,6 +125,19 @@ local function checkReward(role) | @@ -114,6 +125,19 @@ local function checkReward(role) | ||
114 | randomItem() | 125 | randomItem() |
115 | end | 126 | end |
116 | 127 | ||
128 | + --挂机得到的宝藏加入到挂机奖励 | ||
129 | + if isTreasure or false == true then | ||
130 | + local treasureList= role.dailyData:checkTreasureList(hangInfo.carbonId) or {} | ||
131 | + if next(treasureList) ~= nil then | ||
132 | + for id, val in pairs(treasureList) do | ||
133 | + local award = val.award:toNumMap() | ||
134 | + for k,v in pairs(award) do | ||
135 | + items[k] = (award[k] or 0) + v | ||
136 | + end | ||
137 | + end | ||
138 | + end | ||
139 | + end | ||
140 | + | ||
117 | if coinCount > 0 or itemCount > 0 then | 141 | if coinCount > 0 or itemCount > 0 then |
118 | return true | 142 | return true |
119 | end | 143 | end |
@@ -147,7 +171,7 @@ function _M.startRpc( agent, data ) | @@ -147,7 +171,7 @@ function _M.startRpc( agent, data ) | ||
147 | end | 171 | end |
148 | end | 172 | end |
149 | 173 | ||
150 | - if checkReward(role) then | 174 | + if checkReward(role, true, carbonId) then |
151 | role:updateProperty({field = "hangBag", value = role:getProperty("hangBag")}) | 175 | role:updateProperty({field = "hangBag", value = role:getProperty("hangBag")}) |
152 | end | 176 | end |
153 | 177 | ||
@@ -214,6 +238,7 @@ function _M.startBattleRpc(agent, data) | @@ -214,6 +238,7 @@ function _M.startBattleRpc(agent, data) | ||
214 | end | 238 | end |
215 | 239 | ||
216 | _BattleKey = tostring(math.random()) | 240 | _BattleKey = tostring(math.random()) |
241 | + role._StartBattleTs = skynet.timex() | ||
217 | 242 | ||
218 | role:checkTaskEnter("HangBattle", {id = carbonId}) | 243 | role:checkTaskEnter("HangBattle", {id = carbonId}) |
219 | SendPacket(actionCodes.Hang_startBattleRpc, MsgPack.pack({key = _BattleKey})) | 244 | SendPacket(actionCodes.Hang_startBattleRpc, MsgPack.pack({key = _BattleKey})) |
@@ -241,7 +266,7 @@ function _M.endBattleRpc(agent, data) | @@ -241,7 +266,7 @@ function _M.endBattleRpc(agent, data) | ||
241 | -- end | 266 | -- end |
242 | --end | 267 | --end |
243 | 268 | ||
244 | - if role:checkHangPass(carbonId) then | 269 | + if role:checkHangPass(carbonId) then |
245 | return 4 | 270 | return 4 |
246 | end | 271 | end |
247 | 272 | ||
@@ -313,6 +338,12 @@ function _M.endBattleRpc(agent, data) | @@ -313,6 +338,12 @@ function _M.endBattleRpc(agent, data) | ||
313 | -- hangInfo.bossTime = skynet.timex() + cfg.idle_time | 338 | -- hangInfo.bossTime = skynet.timex() + cfg.idle_time |
314 | --end | 339 | --end |
315 | end | 340 | end |
341 | + | ||
342 | + --刷新宝藏图鉴 | ||
343 | + if isWin and globalCsv.idle_treasure_point and globalCsv.idle_treasure_point == carbonId then | ||
344 | + role.dailyData:getTreasrueList() | ||
345 | + end | ||
346 | + | ||
316 | role:updateProperty({field = "hangInfo", value = hangInfo}) | 347 | role:updateProperty({field = "hangInfo", value = hangInfo}) |
317 | 348 | ||
318 | role:checkBattle("hang", { | 349 | role:checkBattle("hang", { |
@@ -323,7 +354,9 @@ function _M.endBattleRpc(agent, data) | @@ -323,7 +354,9 @@ function _M.endBattleRpc(agent, data) | ||
323 | }) | 354 | }) |
324 | 355 | ||
325 | local team = role:getProperty("pvpTC") | 356 | local team = role:getProperty("pvpTC") |
326 | - role:mylog("hang_action", {desc = "hangBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = carbonId, int2 = role:getProperty("hangTBV"), cint1 = role:getHerosCamp(team.heros)}) | 357 | + |
358 | + local battleTime = skynet.timex() - role._StartBattleTs | ||
359 | + role:mylog("hang_action", {desc = "hangBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = carbonId, int2 = role:getProperty("hangTBV"), cint1 = role:getHerosCamp(team.heros), cint2 = battleTime}) | ||
327 | 360 | ||
328 | SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({ | 361 | SendPacket(actionCodes.Hang_endBattleRpc, MsgPack.pack({ |
329 | starNum = msg.starNum, | 362 | starNum = msg.starNum, |
@@ -394,7 +427,8 @@ end | @@ -394,7 +427,8 @@ end | ||
394 | 427 | ||
395 | function _M.getRewardRpc(agent , data) | 428 | function _M.getRewardRpc(agent , data) |
396 | local role = agent.role | 429 | local role = agent.role |
397 | - checkReward(role) | 430 | + local hangTime = getHangTime(role) |
431 | + checkReward(role, true) | ||
398 | local items = role:getProperty("hangBag") | 432 | local items = role:getProperty("hangBag") |
399 | if not next(items) then return end | 433 | if not next(items) then return end |
400 | local reward, change = role:award(items, {log = {desc = "hangReward"}}) | 434 | local reward, change = role:award(items, {log = {desc = "hangReward"}}) |
@@ -424,6 +458,7 @@ function _M.getRewardRpc(agent , data) | @@ -424,6 +458,7 @@ function _M.getRewardRpc(agent , data) | ||
424 | residence_reward = reward, --获得奖励,建议使用json格式记录。示例:{ "XX": "1", "XXX": "3"} | 458 | residence_reward = reward, --获得奖励,建议使用json格式记录。示例:{ "XX": "1", "XXX": "3"} |
425 | }) | 459 | }) |
426 | 460 | ||
461 | + role:mylog("hang_action", {desc = "hangReward", int1 = hangInfo.carbonId, int2=hangTime}) | ||
427 | 462 | ||
428 | SendPacket(actionCodes.Hang_getRewardRpc, MsgPack.pack({ | 463 | SendPacket(actionCodes.Hang_getRewardRpc, MsgPack.pack({ |
429 | reward = reward, | 464 | reward = reward, |
@@ -493,6 +528,8 @@ function _M.quickRpc(agent , data) | @@ -493,6 +528,8 @@ function _M.quickRpc(agent , data) | ||
493 | residence_time = time, --挂机或排名时长 | 528 | residence_time = time, --挂机或排名时长 |
494 | residence_reward = reward, --获得奖励,建议使用json格式记录。示例:{ "XX": "1", "XXX": "3"} | 529 | residence_reward = reward, --获得奖励,建议使用json格式记录。示例:{ "XX": "1", "XXX": "3"} |
495 | }) | 530 | }) |
531 | + role:mylog("hang_action", {desc = "quick", int1 = hangInfo.carbonId, short1 = curCount}) | ||
532 | + | ||
496 | SendPacket(actionCodes.Hang_quickRpc, MsgPack.pack({ | 533 | SendPacket(actionCodes.Hang_quickRpc, MsgPack.pack({ |
497 | reward = reward, | 534 | reward = reward, |
498 | change = change | 535 | change = change |
src/actions/HeroAction.lua
@@ -151,6 +151,10 @@ function _M.wakeRpc(agent, data) | @@ -151,6 +151,10 @@ function _M.wakeRpc(agent, data) | ||
151 | if curLevel == 3 then -- 解锁cg | 151 | if curLevel == 3 then -- 解锁cg |
152 | role:checkTaskEnter("WakeCG", {heroType = typ}) | 152 | role:checkTaskEnter("WakeCG", {heroType = typ}) |
153 | end | 153 | end |
154 | + | ||
155 | + if curLevel >= 4 then --自动觉醒技能 | ||
156 | + hero:increGeniusTree() | ||
157 | + end | ||
154 | hero:mylog({desc = "wake", int1 = hero:getProperty("wakeL")}) | 158 | hero:mylog({desc = "wake", int1 = hero:getProperty("wakeL")}) |
155 | 159 | ||
156 | role:log("hero_rise", { | 160 | role:log("hero_rise", { |
@@ -728,7 +732,7 @@ function _M.getResetRewardRpc(agent, data) | @@ -728,7 +732,7 @@ function _M.getResetRewardRpc(agent, data) | ||
728 | equip = "", | 732 | equip = "", |
729 | rune = "", | 733 | rune = "", |
730 | }) | 734 | }) |
731 | - hero:mylog({desc = "resetHero"}) | 735 | + hero:mylog({desc = "resetHero", int1=tmpLevel}) |
732 | 736 | ||
733 | --local coef = globalCsv.unit_back_discount | 737 | --local coef = globalCsv.unit_back_discount |
734 | --coef = (pay or tmpLevel <= 60) and 1 or coef | 738 | --coef = (pay or tmpLevel <= 60) and 1 or coef |
@@ -805,6 +809,7 @@ function _M.drawHeroRpc(agent, data) | @@ -805,6 +809,7 @@ function _M.drawHeroRpc(agent, data) | ||
805 | 809 | ||
806 | -- 计算抽卡消耗品 | 810 | -- 计算抽卡消耗品 |
807 | local cost = {} | 811 | local cost = {} |
812 | + local drawAddReward = {} | ||
808 | if buildTypeData["draw_coin_1"] == "" then | 813 | if buildTypeData["draw_coin_1"] == "" then |
809 | return 11 | 814 | return 11 |
810 | end | 815 | end |
@@ -991,19 +996,29 @@ function _M.drawHeroRpc(agent, data) | @@ -991,19 +996,29 @@ function _M.drawHeroRpc(agent, data) | ||
991 | local fragId = itemData.id - ItemStartId.Hero | 996 | local fragId = itemData.id - ItemStartId.Hero |
992 | local heroData = csvdb["unitCsv"][fragId] | 997 | local heroData = csvdb["unitCsv"][fragId] |
993 | local count = globalCsv.draw_unit_tofragment[heroData.rare] | 998 | local count = globalCsv.draw_unit_tofragment[heroData.rare] |
994 | - role:award({[fragId] = count}, {log = {desc = "drawHero", int1 = btype, int2 = poolId}}) | 999 | + role:award({[fragId] = count}, {log = {desc = "drawHero", int1 = btype, int2 = poolId, short1=isFloorBack and 1 or 0}}) |
995 | logReward[fragId] = (logReward[fragId] or 0) + count | 1000 | logReward[fragId] = (logReward[fragId] or 0) + count |
996 | table.insert(reward, {id = fragId, count = count, from = itemId, fcount = 1}) | 1001 | table.insert(reward, {id = fragId, count = count, from = itemId, fcount = 1}) |
997 | else | 1002 | else |
998 | - role:award({[itemId] = 1}, {log = {desc = "drawHero", int1 = btype, int2 = poolId}}) | 1003 | + role:award({[itemId] = 1}, {log = {desc = "drawHero", int1 = btype, int2 = poolId, short1=isFloorBack and 1 or 0}}) |
999 | logReward[itemId] = (logReward[itemId] or 0) + 1 | 1004 | logReward[itemId] = (logReward[itemId] or 0) + 1 |
1000 | table.insert(reward, {id = itemId, count = 1}) | 1005 | table.insert(reward, {id = itemId, count = 1}) |
1001 | end | 1006 | end |
1002 | 1007 | ||
1008 | + -- 招募得到的英雄追加奖励 | ||
1009 | + local unitData = csvdb["unitCsv"][itemData.id - ItemStartId.Hero] | ||
1010 | + if unitData.build_award ~= "" then | ||
1011 | + for tId, tCount in pairs(unitData.build_award:toNumMap()) do | ||
1012 | + drawAddReward[tId] = (drawAddReward[tId] or 0) + tCount | ||
1013 | + end | ||
1014 | + end | ||
1015 | + -- | ||
1016 | + | ||
1003 | dailyDrawCnt = dailyDrawCnt + 1 | 1017 | dailyDrawCnt = dailyDrawCnt + 1 |
1004 | role:checkTaskEnter("DrawHeroLimitPack", {count = dailyDrawCnt}) | 1018 | role:checkTaskEnter("DrawHeroLimitPack", {count = dailyDrawCnt}) |
1005 | end | 1019 | end |
1006 | 1020 | ||
1021 | + role:award(drawAddReward, {log = {desc = "drawHero", int1 = btype}}) | ||
1007 | role.dailyData:setProperty("drawHeroCnt", dailyDrawCnt) | 1022 | role.dailyData:setProperty("drawHeroCnt", dailyDrawCnt) |
1008 | 1023 | ||
1009 | if draw_floor_back_counts then | 1024 | if draw_floor_back_counts then |
@@ -1035,7 +1050,9 @@ function _M.drawHeroRpc(agent, data) | @@ -1035,7 +1050,9 @@ function _M.drawHeroRpc(agent, data) | ||
1035 | gacha_cost = cost, -- 购买道具消耗的货币 | 1050 | gacha_cost = cost, -- 购买道具消耗的货币 |
1036 | gacha_cnt = floorHeroCount, | 1051 | gacha_cnt = floorHeroCount, |
1037 | }) | 1052 | }) |
1038 | - SendPacket(actionCodes.Hero_drawHeroRpc, MsgPack.pack({reward = reward})) -- 这个 reward 是数组 | 1053 | + |
1054 | + role:mylog("hero_action", {desc = "drawHero", int1=poolId, int2=btype, short1 = drawCount[drawType]}) | ||
1055 | + SendPacket(actionCodes.Hero_drawHeroRpc, MsgPack.pack({reward = reward, subReward = drawAddReward})) -- 这个 reward 是数组 | ||
1039 | 1056 | ||
1040 | local feedbackId = buildTypeData["can_feedback"] or 0 | 1057 | local feedbackId = buildTypeData["can_feedback"] or 0 |
1041 | if feedbackId ~= 0 then | 1058 | if feedbackId ~= 0 then |
@@ -1275,4 +1292,26 @@ function _M.changeSparkRpc(agent, data) | @@ -1275,4 +1292,26 @@ function _M.changeSparkRpc(agent, data) | ||
1275 | return true | 1292 | return true |
1276 | end | 1293 | end |
1277 | 1294 | ||
1295 | +function _M.saveGeniusTreeRpc(agent, data) | ||
1296 | + local role = agent.role | ||
1297 | + local msg = MsgPack.unpack(data) | ||
1298 | + | ||
1299 | + local awake = msg.awake | ||
1300 | + local wakeL = msg.wakeL | ||
1301 | + local heroId = msg.hero_id | ||
1302 | + local hero = role.heros[tonumber(heroId)] | ||
1303 | + | ||
1304 | + if not hero then print("hero is nil") return 0 end | ||
1305 | + | ||
1306 | + if wakeL > hero:getProperty("wakeL") then return 1 end | ||
1307 | + | ||
1308 | + local genius = hero:saveGeniusTree(wakeL, awake) | ||
1309 | + if #genius == 0 then | ||
1310 | + genius = "" | ||
1311 | + end | ||
1312 | + hero:updateProperty({field="genius", value=genius}) | ||
1313 | + SendPacket(actionCodes.Hero_saveGeniusTreeRpc, MsgPack.pack({genius = genius})) | ||
1314 | + return true | ||
1315 | +end | ||
1316 | + | ||
1278 | return _M | 1317 | return _M |
src/actions/RadioAction.lua
@@ -199,7 +199,8 @@ function _M.finishQuestRpc(agent, data) | @@ -199,7 +199,8 @@ function _M.finishQuestRpc(agent, data) | ||
199 | mission_result = 1, -- 战斗结果(0-无效,1-胜利,2-失败) | 199 | mission_result = 1, -- 战斗结果(0-无效,1-胜利,2-失败) |
200 | mission_roundtime = config.time, -- 完成耗时(秒) | 200 | mission_roundtime = config.time, -- 完成耗时(秒) |
201 | mission_cleartype = 2, -- 1-开始; 2-完成(领取奖励时) | 201 | mission_cleartype = 2, -- 1-开始; 2-完成(领取奖励时) |
202 | - }) | 202 | + }) |
203 | + role:mylog("role_action", {desc = "radioTask", int1 = id, short1 = bigSuccess and 1 or 0}) | ||
203 | 204 | ||
204 | return true | 205 | return true |
205 | end | 206 | end |
src/actions/RoleAction.lua
@@ -399,7 +399,8 @@ function _M.createRpc(agent, data) | @@ -399,7 +399,8 @@ function _M.createRpc(agent, data) | ||
399 | 399 | ||
400 | newRole:award(globalCsv.birthItem, {log = {desc = "birth"}, notNotify = true}) | 400 | newRole:award(globalCsv.birthItem, {log = {desc = "birth"}, notNotify = true}) |
401 | -- 欢迎邮件 | 401 | -- 欢迎邮件 |
402 | - mysqlproxy:insertEmail({roleId = roleId, emailId = 1}) | 402 | + --mysqlproxy:insertEmail({roleId = roleId, emailId = 1}) |
403 | + newRole:sendMail(1) | ||
403 | 404 | ||
404 | if msg.newuser then | 405 | if msg.newuser then |
405 | newRole:log("onCreateAccount") | 406 | newRole:log("onCreateAccount") |
@@ -904,8 +905,10 @@ function _M.taskRpc(agent, data) | @@ -904,8 +905,10 @@ function _M.taskRpc(agent, data) | ||
904 | -- 日常活动完成 | 905 | -- 日常活动完成 |
905 | if taskType == 1 then | 906 | if taskType == 1 then |
906 | role:checkTaskEnter("DailyTask", {pre = (taskStatus["a"] or 0), cur = active}) | 907 | role:checkTaskEnter("DailyTask", {pre = (taskStatus["a"] or 0), cur = active}) |
908 | + role:mylog("role_action", {desc="dayTask", int1=taskId, int2=active}) | ||
907 | else | 909 | else |
908 | role:checkTaskEnter("WeekTask", {pre = (taskStatus["a"] or 0), cur = active}) | 910 | role:checkTaskEnter("WeekTask", {pre = (taskStatus["a"] or 0), cur = active}) |
911 | + role:mylog("role_action", {desc="weekTask", int1=taskId, int2=active}) | ||
909 | end | 912 | end |
910 | 913 | ||
911 | role:changeUpdates({ | 914 | role:changeUpdates({ |
@@ -1000,6 +1003,8 @@ function _M.achiveRpc(agent, data) | @@ -1000,6 +1003,8 @@ function _M.achiveRpc(agent, data) | ||
1000 | achievement_type = cfg.type, -- 成就类型,具体枚举表中成就类型枚举表 | 1003 | achievement_type = cfg.type, -- 成就类型,具体枚举表中成就类型枚举表 |
1001 | achievement_reward = award, -- 达成成就奖励,json格式记录,{"itemid1":123,"itemid2":12,……….} | 1004 | achievement_reward = award, -- 达成成就奖励,json格式记录,{"itemid1":123,"itemid2":12,……….} |
1002 | }) | 1005 | }) |
1006 | + | ||
1007 | + role:mylog("role_action", {desc="finishAchieve", int1=cfg.id}) | ||
1003 | end | 1008 | end |
1004 | end | 1009 | end |
1005 | end | 1010 | end |
@@ -1034,6 +1039,7 @@ function _M.achiveRpc(agent, data) | @@ -1034,6 +1039,7 @@ function _M.achiveRpc(agent, data) | ||
1034 | achievement_type = achiveTask.type, -- 成就类型,具体枚举表中成就类型枚举表 | 1039 | achievement_type = achiveTask.type, -- 成就类型,具体枚举表中成就类型枚举表 |
1035 | achievement_reward = reward, -- 达成成就奖励,json格式记录,{"itemid1":123,"itemid2":12,……….} | 1040 | achievement_reward = reward, -- 达成成就奖励,json格式记录,{"itemid1":123,"itemid2":12,……….} |
1036 | }) | 1041 | }) |
1042 | + role:mylog("role_action", {desc="finishAchieve", int1=taskId}) | ||
1037 | 1043 | ||
1038 | SendPacket(actionCodes.Role_achiveRpc, MsgPack.pack(role:packReward(reward, change))) | 1044 | SendPacket(actionCodes.Role_achiveRpc, MsgPack.pack(role:packReward(reward, change))) |
1039 | end | 1045 | end |
@@ -1057,6 +1063,7 @@ function _M.achiveRpc(agent, data) | @@ -1057,6 +1063,7 @@ function _M.achiveRpc(agent, data) | ||
1057 | if preMaxCount < pData.request and overCount >= pData.request then | 1063 | if preMaxCount < pData.request and overCount >= pData.request then |
1058 | role:sendMail(101, skynet.timex(), pData.reward, {pData.level}) | 1064 | role:sendMail(101, skynet.timex(), pData.reward, {pData.level}) |
1059 | flag = true | 1065 | flag = true |
1066 | + role:mylog("role_action", {desc="fux", int1=pdata.level}) | ||
1060 | end | 1067 | end |
1061 | end | 1068 | end |
1062 | if flag then | 1069 | if flag then |
@@ -1381,7 +1388,7 @@ function _M.goldBuyRpc(agent, data) | @@ -1381,7 +1388,7 @@ function _M.goldBuyRpc(agent, data) | ||
1381 | if not costD then | 1388 | if not costD then |
1382 | return 1 | 1389 | return 1 |
1383 | end | 1390 | end |
1384 | - if costD ~= 0 and not role:checkItemEnough({[ItemId.Diamond] = costD}) then | 1391 | + if costD ~= 0 and not role:checkItemEnough({[ItemId.Jade] = costD}) then |
1385 | return 2 | 1392 | return 2 |
1386 | end | 1393 | end |
1387 | local goldC = 0 | 1394 | local goldC = 0 |
@@ -1403,7 +1410,7 @@ function _M.goldBuyRpc(agent, data) | @@ -1403,7 +1410,7 @@ function _M.goldBuyRpc(agent, data) | ||
1403 | local coef = role.storeData:getGearExchangeCoef() | 1410 | local coef = role.storeData:getGearExchangeCoef() |
1404 | goldC = goldC * coef | 1411 | goldC = goldC * coef |
1405 | role.dailyData:updateProperty({field = "goldBuyT", value = curT + 1}) | 1412 | role.dailyData:updateProperty({field = "goldBuyT", value = curT + 1}) |
1406 | - role:costItems({[ItemId.Diamond] = costD}, {log = {desc = "goldBuy"}}) | 1413 | + role:costItems({[ItemId.Jade] = costD}, {log = {desc = "goldBuy"}}) |
1407 | local reward, change = role:award({[ItemId.Gold] = math.floor(goldC)}, {log = {desc = "goldBuy"}}) | 1414 | local reward, change = role:award({[ItemId.Gold] = math.floor(goldC)}, {log = {desc = "goldBuy"}}) |
1408 | SendPacket(actionCodes.Role_goldBuyRpc, MsgPack.pack(role:packReward(reward, change))) | 1415 | SendPacket(actionCodes.Role_goldBuyRpc, MsgPack.pack(role:packReward(reward, change))) |
1409 | return true | 1416 | return true |
@@ -1424,7 +1431,7 @@ function _M.diamondConvertRpc(agent, data) | @@ -1424,7 +1431,7 @@ function _M.diamondConvertRpc(agent, data) | ||
1424 | role:costDiamond({count = cost, log = {desc = "convert", int1 = oper, int2 = get}}) | 1431 | role:costDiamond({count = cost, log = {desc = "convert", int1 = oper, int2 = get}}) |
1425 | local reward, change | 1432 | local reward, change |
1426 | if oper == 1 then -- 钻石兑换成虹光玉 | 1433 | if oper == 1 then -- 钻石兑换成虹光玉 |
1427 | - reward, change = role:award({[ItemId.Jade] = get}, {log = {desc = "convert"}}) | 1434 | + reward, change = role:award({[ItemId.Jade] = get}, {log = {desc = "convert", short1=oper}}) |
1428 | elseif oper == 2 then -- 钻石兑换成虹光玉再兑换成招募券 | 1435 | elseif oper == 2 then -- 钻石兑换成虹光玉再兑换成招募券 |
1429 | local old = role:getItemCount(ItemId.Jade) | 1436 | local old = role:getItemCount(ItemId.Jade) |
1430 | get = old + get | 1437 | get = old + get |
@@ -1437,7 +1444,7 @@ function _M.diamondConvertRpc(agent, data) | @@ -1437,7 +1444,7 @@ function _M.diamondConvertRpc(agent, data) | ||
1437 | allReward[ItemId.Jade] = remain - old | 1444 | allReward[ItemId.Jade] = remain - old |
1438 | elseif remain == old then | 1445 | elseif remain == old then |
1439 | else | 1446 | else |
1440 | - role:costItems({[ItemId.Jade] = old - remain}, {log = {desc = "convert"}}) | 1447 | + role:costItems({[ItemId.Jade] = old - remain}, {log = {desc = "convert", short1=oper}}) |
1441 | end | 1448 | end |
1442 | 1449 | ||
1443 | if quan > 0 then | 1450 | if quan > 0 then |
src/actions/SeaportAction.lua
@@ -59,6 +59,12 @@ function _M.donateRpc(agent, data) | @@ -59,6 +59,12 @@ function _M.donateRpc(agent, data) | ||
59 | redisproxy:hincrby(SEAPORT_TRADE_TASK_2,id,itemCount) | 59 | redisproxy:hincrby(SEAPORT_TRADE_TASK_2,id,itemCount) |
60 | end | 60 | end |
61 | 61 | ||
62 | + local seaport = role:getProperty("seaport") or {} | ||
63 | + if not seaport.join then | ||
64 | + seaport.join = 1 | ||
65 | + role:updateProperty({field = "seaport", value = seaport}) | ||
66 | + end | ||
67 | + | ||
62 | role:costItems({[itemId] = itemCount}, {log = {desc = "seaportDonate", int1 = phase, int2 = id}}) | 68 | role:costItems({[itemId] = itemCount}, {log = {desc = "seaportDonate", int1 = phase, int2 = id}}) |
63 | local reward, change = role:award(rewards, {log = {desc = "seaportDonate", int1 = ddata.phase, int2 = ddata.id}}) | 69 | local reward, change = role:award(rewards, {log = {desc = "seaportDonate", int1 = ddata.phase, int2 = ddata.id}}) |
64 | 70 | ||
@@ -237,6 +243,8 @@ function _M.taskRpc(agent, data) | @@ -237,6 +243,8 @@ function _M.taskRpc(agent, data) | ||
237 | reward, change = role:award(itemReward, {log = {desc = "seaportTask", int1 = taskId, int2 = level}}) | 243 | reward, change = role:award(itemReward, {log = {desc = "seaportTask", int1 = taskId, int2 = level}}) |
238 | 244 | ||
239 | seaport.collect[taskId] = nil | 245 | seaport.collect[taskId] = nil |
246 | + | ||
247 | + role:mylog("role_action", {desc="seaportTask", int1=taskId, int2=level, short1=bigSuccess and 1 or 0}) | ||
240 | else | 248 | else |
241 | return 0 | 249 | return 0 |
242 | end | 250 | end |
src/actions/StoreAction.lua
@@ -268,7 +268,7 @@ function _M.shopBuyRpc(agent , data) | @@ -268,7 +268,7 @@ function _M.shopBuyRpc(agent , data) | ||
268 | local id = msg.id | 268 | local id = msg.id |
269 | local count = msg.count or 1 | 269 | local count = msg.count or 1 |
270 | 270 | ||
271 | - local dataSet = csvdb["shop_normalCsv"][id] | 271 | + local dataSet = csvdb["shop_normalCsv"][id] |
272 | if not dataSet then return end | 272 | if not dataSet then return end |
273 | 273 | ||
274 | if dataSet.unlock ~= "" then | 274 | if dataSet.unlock ~= "" then |
@@ -278,6 +278,13 @@ function _M.shopBuyRpc(agent , data) | @@ -278,6 +278,13 @@ function _M.shopBuyRpc(agent , data) | ||
278 | end | 278 | end |
279 | end | 279 | end |
280 | 280 | ||
281 | + --判断是否是活动商品 | ||
282 | + if dataSet.activity_id and dataSet.activity_id ~= 0 then | ||
283 | + local actCfg = csvdb["activity_ctrlCsv"][dataSet.activity_id] | ||
284 | + if not actCfg then return 2 end | ||
285 | + if not role.activity:isOpenById(dataSet.activity_id, "ActShopGoods") then return 3 end | ||
286 | + end | ||
287 | + | ||
281 | local buyRecord = role.storeData:getProperty("buyR") | 288 | local buyRecord = role.storeData:getProperty("buyR") |
282 | if math.illegalNum(count, 1, (dataSet.limit == 0 and math.huge or dataSet.limit - (buyRecord[id] or 0))) then | 289 | if math.illegalNum(count, 1, (dataSet.limit == 0 and math.huge or dataSet.limit - (buyRecord[id] or 0))) then |
283 | skynet.error(string.format("shop buy over limit, user_id:%d, goods_id:%d", role:getProperty("id"), id)) | 290 | skynet.error(string.format("shop buy over limit, user_id:%d, goods_id:%d", role:getProperty("id"), id)) |
@@ -299,19 +306,19 @@ function _M.shopBuyRpc(agent , data) | @@ -299,19 +306,19 @@ function _M.shopBuyRpc(agent , data) | ||
299 | desc = "pvpShop" | 306 | desc = "pvpShop" |
300 | end | 307 | end |
301 | 308 | ||
302 | - if not role:checkItemEnough(cost) then return end | 309 | + if not role:checkItemEnough(cost) then return 4 end |
303 | 310 | ||
304 | if dataSet.limit ~= 0 then | 311 | if dataSet.limit ~= 0 then |
305 | buyRecord[id] = (buyRecord[id] or 0) + count | 312 | buyRecord[id] = (buyRecord[id] or 0) + count |
306 | role.storeData:updateProperty({field = "buyR", value = buyRecord}) | 313 | role.storeData:updateProperty({field = "buyR", value = buyRecord}) |
307 | end | 314 | end |
308 | - role:costItems(cost, {log = {desc = desc, int1 = id, int2 = count}}) | 315 | + role:costItems(cost, {log = {desc = desc, int1 = id, int2 = count, short1 = dataSet.shop}}) |
309 | 316 | ||
310 | local gift = {} | 317 | local gift = {} |
311 | for _id, _count in pairs(dataSet.gift:toNumMap()) do | 318 | for _id, _count in pairs(dataSet.gift:toNumMap()) do |
312 | gift[_id] = _count * count | 319 | gift[_id] = _count * count |
313 | end | 320 | end |
314 | - local reward = role:award(gift, {log = {desc = desc, int1 = id, int2 = count}}) | 321 | + local reward = role:award(gift, {log = {desc = desc, int1 = id, int2 = count, short1=dataSet.shop}}) |
315 | 322 | ||
316 | if dataSet.shop == 1 then | 323 | if dataSet.shop == 1 then |
317 | role:checkTaskEnter("ShopAll", {count = count}) | 324 | role:checkTaskEnter("ShopAll", {count = count}) |
src/adv/Adv.lua
@@ -922,7 +922,7 @@ function Adv:over(success, rewardRatio, overType) | @@ -922,7 +922,7 @@ function Adv:over(success, rewardRatio, overType) | ||
922 | end | 922 | end |
923 | self:clearAdvUnlockCache() | 923 | self:clearAdvUnlockCache() |
924 | 924 | ||
925 | - self:mylog({desc = "over", short1 = success and 1 or 0, int1 = overType}) | 925 | + self:mylog({desc = "over", short1 = success and 1 or 0, int1 = overType, int2 = self.chapterId, long1 = self.level}) |
926 | 926 | ||
927 | 927 | ||
928 | local team = self.owner:getProperty("advTeam") | 928 | local team = self.owner:getProperty("advTeam") |
src/models/Daily.lua
@@ -2,6 +2,8 @@ | @@ -2,6 +2,8 @@ | ||
2 | 2 | ||
3 | local Daily = class("Daily", require("shared.ModelBaseMysql")) | 3 | local Daily = class("Daily", require("shared.ModelBaseMysql")) |
4 | 4 | ||
5 | +oneDay = 60*60*24 | ||
6 | + | ||
5 | function Daily:ctor(properties) | 7 | function Daily:ctor(properties) |
6 | Daily.super.ctor(self, properties) | 8 | Daily.super.ctor(self, properties) |
7 | end | 9 | end |
@@ -30,6 +32,8 @@ Daily.schema = { | @@ -30,6 +32,8 @@ Daily.schema = { | ||
30 | unlockPool = {"table", {}}, -- 解锁的属性卡池 | 32 | unlockPool = {"table", {}}, -- 解锁的属性卡池 |
31 | curPool = {"number", 0}, -- 属性卡池当前索引 | 33 | curPool = {"number", 0}, -- 属性卡池当前索引 |
32 | drawHeroCnt = {"number", 0}, -- 每日抽卡次数 | 34 | drawHeroCnt = {"number", 0}, -- 每日抽卡次数 |
35 | + | ||
36 | + treasureList = {"table", {}}, --挂机图鉴 | ||
33 | } | 37 | } |
34 | 38 | ||
35 | function Daily:updateProperty(params) | 39 | function Daily:updateProperty(params) |
@@ -60,6 +64,8 @@ function Daily:refreshDailyData(notify) | @@ -60,6 +64,8 @@ function Daily:refreshDailyData(notify) | ||
60 | if self:getProperty(field) > 0 then | 64 | if self:getProperty(field) > 0 then |
61 | dataMap[field] = 0 | 65 | dataMap[field] = 0 |
62 | end | 66 | end |
67 | + elseif field == "treasureList" then | ||
68 | + dataMap[field] = self:getTreasrueList() | ||
63 | elseif field ~= "key" then | 69 | elseif field ~= "key" then |
64 | local typ, def = table.unpack(schema) | 70 | local typ, def = table.unpack(schema) |
65 | dataMap[field] = def | 71 | dataMap[field] = def |
@@ -85,6 +91,279 @@ function Daily:refreshDailyData(notify) | @@ -85,6 +91,279 @@ function Daily:refreshDailyData(notify) | ||
85 | end | 91 | end |
86 | end | 92 | end |
87 | 93 | ||
94 | +--解锁 | ||
95 | +function Daily:checkUnlock(treaval) | ||
96 | + local role = self.owner | ||
97 | + local treasureC = treaval.unlock:toArray(true, "=") | ||
98 | + local show = false | ||
99 | + if treasureC[1] == 1 then --通关关卡 | ||
100 | + if self.owner:checkHangPass(treasureC[2]) then show = true end | ||
101 | + elseif treasureC[1] == 2 then --通关拾荒章节=x层 | ||
102 | + local chapterId = treasureC[2] | ||
103 | + local layer = 1 | ||
104 | + local advCsv = csvdb["adv_chapterCsv"][chapterId] | ||
105 | + if not advCsv then return false end --不存在的章节 | ||
106 | + if math.floor(chapterId / 100) ~= 2 then | ||
107 | + layer = math.min(layer, advCsv.limitlevel) | ||
108 | + end | ||
109 | + local advPass = role:getProperty("advPass") | ||
110 | + if (advPass[chapterId] or 0) < layer then | ||
111 | + show = false | ||
112 | + else | ||
113 | + show = true | ||
114 | + end | ||
115 | + elseif treasureC[1] == 3 then --拥有指定id的角色时 | ||
116 | + local hero = role:getHeroByID(treasureC[2]) | ||
117 | + if hero then show = true end | ||
118 | + else | ||
119 | + show = true | ||
120 | + end | ||
121 | + return show | ||
122 | +end | ||
123 | + | ||
124 | +--CD | ||
125 | +function Daily:checkTreasureExpired(treasureAttr, treasureList) | ||
126 | + local curInfo = treasureList[treasureAttr.id] | ||
127 | + if curInfo then | ||
128 | + -- check finish | ||
129 | + if curInfo["expire_time"] then | ||
130 | + if curInfo.cool_time > 1 then | ||
131 | + if skynet.timex() >= curInfo["expire_time"] then | ||
132 | + treasureList[treasureAttr.id] = nil | ||
133 | + curInfo = clone(treasureAttr) | ||
134 | + elseif skynet.timex() >= curInfo["expire_time"] - curInfo.cool_time * oneDay then --未冷却 | ||
135 | + curInfo = nil | ||
136 | + else | ||
137 | + curInfo = clone(treasureAttr) | ||
138 | + end | ||
139 | + else | ||
140 | + if skynet.timex() >= curInfo["expire_time"] then | ||
141 | + treasureList[treasureAttr.id] = nil | ||
142 | + end | ||
143 | + curInfo = clone(treasureAttr) | ||
144 | + end | ||
145 | + else | ||
146 | + curInfo = clone(treasureAttr) | ||
147 | + end | ||
148 | + else | ||
149 | + curInfo = clone(treasureAttr) | ||
150 | + end | ||
151 | + | ||
152 | + return curInfo | ||
153 | +end | ||
154 | + | ||
155 | +--资源 | ||
156 | +function Daily:checkTreasureBase(treasureList, treasureBase, removeId) | ||
157 | + local tmptreasure = {} | ||
158 | + local num = 0 | ||
159 | + for k, val in pairs(treasureList) do | ||
160 | + if removeId and val.id == removeId then | ||
161 | + treasureList[k] = nil | ||
162 | + else | ||
163 | + if treasureBase >= val.treasure_value then | ||
164 | + treasureBase = treasureBase - val.treasure_value | ||
165 | + tmptreasure[val.id] = val | ||
166 | + num = num + 1 | ||
167 | + end | ||
168 | + end | ||
169 | + | ||
170 | + end | ||
171 | + return tmptreasure, num | ||
172 | +end | ||
173 | + | ||
174 | +--绑定通关关卡 | ||
175 | +function Daily:checkChapters() | ||
176 | + local chapters = {} | ||
177 | + local tmp_chapters = {} | ||
178 | + local treasureList = self:getProperty("treasureList") | ||
179 | + if next(treasureList) ~= nil then | ||
180 | + for id, curInfo in pairs(treasureList) do | ||
181 | + if curInfo["end_time"] then | ||
182 | + if skynet.timex() < curInfo["end_time"] then | ||
183 | + tmp_chapters[curInfo.chapter_id] = curInfo | ||
184 | + end | ||
185 | + end | ||
186 | + end | ||
187 | + end | ||
188 | + | ||
189 | + for chapter_id, val in pairs(csvdb["idle_battleCsv"]) do | ||
190 | + if self.owner:checkHangPass(chapter_id) then | ||
191 | + if next(tmp_chapters) == nil then | ||
192 | + chapters[chapter_id] = val | ||
193 | + else | ||
194 | + if not tmp_chapters[chapter_id] then | ||
195 | + chapters[chapter_id] = val | ||
196 | + end | ||
197 | + end | ||
198 | + end | ||
199 | + end | ||
200 | + return chapters | ||
201 | +end | ||
202 | + | ||
203 | +--权重 | ||
204 | +function Daily:checkTreasureWeight(treasureList, tmptreasure, treasureBase) | ||
205 | + local removeId | ||
206 | + local chapters = self:checkChapters() | ||
207 | + local treasure | ||
208 | + if next(chapters) == nil then return end | ||
209 | + | ||
210 | + while next(tmptreasure) do | ||
211 | + local tmp, num = self:checkTreasureBase(tmptreasure, treasureBase, removeId) | ||
212 | + | ||
213 | + if num == 0 then | ||
214 | + break | ||
215 | + elseif num == 1 then | ||
216 | + for _, val in pairs(tmp) do | ||
217 | + treasure = val | ||
218 | + end | ||
219 | + else | ||
220 | + local id = math.randWeight(tmp, "weight") --宝藏id | ||
221 | + if not id then | ||
222 | + break | ||
223 | + end | ||
224 | + treasure = tmp[id] | ||
225 | + end | ||
226 | + | ||
227 | + if treasureBase >= treasure.treasure_value then | ||
228 | + --扣除资源值 | ||
229 | + treasureBase = treasureBase - treasure.treasure_value | ||
230 | + else | ||
231 | + break | ||
232 | + end | ||
233 | + local chapterId = math.randWeight(chapters, "treasure_weight") --关卡id | ||
234 | + if not chapterId then | ||
235 | + break | ||
236 | + end | ||
237 | + | ||
238 | + treasure.chapter_id = chapterId | ||
239 | + treasureList[treasure.id] = treasure | ||
240 | + removeId = treasure.id | ||
241 | + end | ||
242 | +end | ||
243 | + | ||
244 | +--chapterId | ||
245 | +function Daily:checkTreasureChapterId(curInfo, treasureList, chapterId) | ||
246 | + local treasure = nil | ||
247 | + | ||
248 | + if not curInfo then | ||
249 | + print("curInfo is nil") | ||
250 | + return treasure | ||
251 | + end | ||
252 | + | ||
253 | + --开始挖宝关卡ID=挂机关卡ID | ||
254 | + if chapterId == curInfo.chapter_id then | ||
255 | + --开始挖宝 | ||
256 | + if not curInfo["end_time"] then | ||
257 | + curInfo["end_time"] = skynet.timex() + curInfo.working_time | ||
258 | + else | ||
259 | + if skynet.timex() >= curInfo["end_time"] then | ||
260 | + if curInfo.cool_time > 1 then | ||
261 | + --宝藏冷却时间 | ||
262 | + if not curInfo["expire_time"] then | ||
263 | + treasure = treasureList[curInfo.id] | ||
264 | + curInfo["expire_time"] = skynet.timex() + curInfo.cool_time * oneDay | ||
265 | + else | ||
266 | + --已经领取宝藏 检索宝藏冷却时间 | ||
267 | + if skynet.timex() >= curInfo["expire_time"] then | ||
268 | + treasureList[curInfo.id] = nil | ||
269 | + end | ||
270 | + end | ||
271 | + else | ||
272 | + treasure = treasureList[curInfo.id] | ||
273 | + treasureList[curInfo.id] = nil | ||
274 | + end | ||
275 | + end | ||
276 | + end | ||
277 | + else | ||
278 | + --已经开始挖宝 | ||
279 | + if curInfo["end_time"] then | ||
280 | + if skynet.timex() >= curInfo["end_time"] then | ||
281 | + if curInfo.cool_time > 1 then | ||
282 | + --宝藏冷却时间 | ||
283 | + if not curInfo["expire_time"] then | ||
284 | + treasure = treasureList[curInfo.id] | ||
285 | + curInfo["expire_time"] = skynet.timex() + curInfo.cool_time * oneDay | ||
286 | + else | ||
287 | + --已经领取宝藏 检索宝藏冷却时间 | ||
288 | + if skynet.timex() >= curInfo["expire_time"] then | ||
289 | + treasureList[curInfo.id] = nil | ||
290 | + end | ||
291 | + end | ||
292 | + else | ||
293 | + treasure = treasureList[curInfo.id] | ||
294 | + treasureList[curInfo.id] = nil | ||
295 | + end | ||
296 | + else | ||
297 | + curInfo["end_time"] = nil | ||
298 | + end | ||
299 | + end | ||
300 | + end | ||
301 | + return treasure | ||
302 | +end | ||
303 | + | ||
304 | +function Daily:buyTreasure(treasureList) | ||
305 | + local boughtTreasurer = {} | ||
306 | + local treasureBase = globalCsv.idle_treasure_base | ||
307 | + for id, val in pairs(treasureList) do | ||
308 | + treasureBase = treasureBase - val.treasure_value | ||
309 | + if treasureBase < 0 then | ||
310 | + treasureBase = treasureBase + val.treasure_value | ||
311 | + return | ||
312 | + else | ||
313 | + boughtTreasurer[id] = val | ||
314 | + end | ||
315 | + end | ||
316 | + --self:updateProperty({field = "treasureBase", value = treasureBase}) | ||
317 | + return boughtTreasurer | ||
318 | +end | ||
319 | + | ||
320 | +--重置宝藏图鉴 | ||
321 | +function Daily:resetTreasureList() | ||
322 | + self:updateProperty({field = "treasureList", value = {}}) | ||
323 | +end | ||
324 | + | ||
325 | +--宝藏图鉴 | ||
326 | +function Daily:getTreasrueList() | ||
327 | + local tmpcsv = csvdb["idle_treasureCsv"] | ||
328 | + local treasureList = self:getProperty("treasureList") or {} --挖宝列表 过期删除 领取奖励删除 跨天更新 | ||
329 | + local tmptreasure = {} | ||
330 | + local treasureBase = globalCsv.idle_treasure_base | ||
331 | + for id, val in pairs(tmpcsv) do | ||
332 | + if self:checkUnlock(val) == true then | ||
333 | + local treasure = self:checkTreasureExpired(val, treasureList) | ||
334 | + if treasure then | ||
335 | + table.insert(tmptreasure, treasure) | ||
336 | + end | ||
337 | + end | ||
338 | + end | ||
339 | + table.sort(tmptreasure, function (a,b) return a.treasure_value > b.treasure_value end) | ||
340 | + | ||
341 | + self:checkTreasureWeight(treasureList, tmptreasure, treasureBase) | ||
342 | + self:updateProperty({field = "treasureList", value = treasureList}) | ||
343 | + return treasureList | ||
344 | +end | ||
345 | + | ||
346 | + | ||
347 | +--检索挖宝列表 | ||
348 | +function Daily:checkTreasureList(chapterId) | ||
349 | + local treasureList = self:getProperty("treasureList") or {} | ||
350 | + local tmptreasure = {} | ||
351 | + for id, val in pairs(treasureList) do | ||
352 | + local treasure = self:checkTreasureChapterId(val, treasureList, chapterId) | ||
353 | + if treasure ~= nil then | ||
354 | + tmptreasure[id] = treasure | ||
355 | + end | ||
356 | + end | ||
357 | + | ||
358 | + if next(tmptreasure) == nil then | ||
359 | + self:updateProperty({field = "treasureList", value = treasureList}) | ||
360 | + return nil | ||
361 | + end | ||
362 | + local boughtTreasurer = self:buyTreasure(tmptreasure) | ||
363 | + self:updateProperty({field = "treasureList", value = treasureList}) | ||
364 | + return boughtTreasurer | ||
365 | +end | ||
366 | + | ||
88 | function Daily:data() | 367 | function Daily:data() |
89 | return { | 368 | return { |
90 | hangQC = self:getProperty("hangQC"), | 369 | hangQC = self:getProperty("hangQC"), |
@@ -104,6 +383,7 @@ function Daily:data() | @@ -104,6 +383,7 @@ function Daily:data() | ||
104 | goldBuyT = self:getProperty("goldBuyT"), | 383 | goldBuyT = self:getProperty("goldBuyT"), |
105 | unlockPool = self:getProperty("unlockPool"), | 384 | unlockPool = self:getProperty("unlockPool"), |
106 | curPool = self:getProperty("curPool"), | 385 | curPool = self:getProperty("curPool"), |
386 | + treasureList = self:getProperty("treasureList"), | ||
107 | } | 387 | } |
108 | end | 388 | end |
109 | 389 |
src/models/Hero.lua
@@ -18,6 +18,7 @@ Hero.schema = { | @@ -18,6 +18,7 @@ Hero.schema = { | ||
18 | rune = {"string",""}, --零件 type=id | 18 | rune = {"string",""}, --零件 type=id |
19 | faith = {"number", 0}, -- 信赖 | 19 | faith = {"number", 0}, -- 信赖 |
20 | spark = {"table", {}}, -- 火花属性 | 20 | spark = {"table", {}}, -- 火花属性 |
21 | + genius = {"string", "" }, --天赋点 4=10201 5=10201 6=10203 7=10204 | ||
21 | } | 22 | } |
22 | 23 | ||
23 | function Hero:ctor( properties ) | 24 | function Hero:ctor( properties ) |
@@ -111,6 +112,7 @@ function Hero:data() | @@ -111,6 +112,7 @@ function Hero:data() | ||
111 | rune = self:getProperty("rune"), | 112 | rune = self:getProperty("rune"), |
112 | faith = self:getProperty("faith"), | 113 | faith = self:getProperty("faith"), |
113 | spark = self:getProperty("spark"), | 114 | spark = self:getProperty("spark"), |
115 | + genius = self:getProperty("genius"), | ||
114 | } | 116 | } |
115 | end | 117 | end |
116 | 118 |
src/models/HeroPlugin.lua
@@ -381,6 +381,90 @@ function HeroPlugin.bind(Hero) | @@ -381,6 +381,90 @@ function HeroPlugin.bind(Hero) | ||
381 | end | 381 | end |
382 | end | 382 | end |
383 | self:setProperty("faith", faith) | 383 | self:setProperty("faith", faith) |
384 | + self:mylog({desc = "addFaith", int1 = exp}) | ||
385 | + end | ||
386 | + | ||
387 | + --检验天赋树是否合理 | ||
388 | + function Hero:checkGeniusTree(genius) | ||
389 | + local maxWakeL = 0 | ||
390 | + local star = self:getProperty("wakeL") | ||
391 | + if star < 4 then return maxWakeL end | ||
392 | + if #genius == 0 then return maxWakeL end | ||
393 | + | ||
394 | + local geniusTree = genius:toNumMap() | ||
395 | + local tmpgenius = "" | ||
396 | + for wakeL, val in pairs(geniusTree) do | ||
397 | + if wakeL < 4 then return maxWakeL end | ||
398 | + if wakeL % 2 == 0 then | ||
399 | + if geniusTree[wakeL+1] and geniusTree[wakeL+1] ~= val then | ||
400 | + return 0, 0, tmpgenius | ||
401 | + end | ||
402 | + end | ||
403 | + maxWakeL = math.max(maxWakeL, wakeL) | ||
404 | + if #tmpgenius == 0 then | ||
405 | + tmpgenius = string.format("%s=%s", tostring(wakeL), tostring(val)) | ||
406 | + else | ||
407 | + tmpgenius = string.format("%s %s=%s", tmpgenius, tostring(wakeL), tostring(val)) | ||
408 | + end | ||
409 | + end | ||
410 | + return tonumber(maxWakeL), tonumber(geniusTree[maxWakeL]), tmpgenius | ||
411 | + end | ||
412 | + | ||
413 | + function Hero:increGeniusTree() | ||
414 | + local genius = self:getProperty("genius") | ||
415 | + local wakeL = self:getProperty("wakeL") | ||
416 | + local maxWakeL, awake | ||
417 | + maxWakeL, awake, genius = self:checkGeniusTree(genius) | ||
418 | + if maxWakeL >= 4 and wakeL > maxWakeL and maxWakeL % 2 == 0 then | ||
419 | + maxWakeL = maxWakeL + 1 | ||
420 | + if #genius == 0 then | ||
421 | + genius = string.format("%s=%s", tostring(maxWakeL), tostring(awake)) | ||
422 | + else | ||
423 | + genius = string.format("%s %s=%s", genius, tostring(maxWakeL), tostring(awake)) | ||
424 | + end | ||
425 | + end | ||
426 | + return genius | ||
427 | + end | ||
428 | + | ||
429 | + function Hero:resetGeniusTree() | ||
430 | + local unit_starTalent_reset = globalCsv["unit_starTalent_reset"] | ||
431 | + local cost = unit_starTalent_reset:toNumMap() | ||
432 | + if not self.owner:checkItemEnough(cost) then return false end | ||
433 | + | ||
434 | + self.owner:costItems(cost, {log = {desc = "heroGenius", int1 = self:getProperty("id"), int2 = self:getProperty("type")}}) | ||
435 | + return true | ||
436 | + end | ||
437 | + | ||
438 | + function Hero:saveGeniusTree(wakeL, awake) | ||
439 | + local genius = self:getProperty("genius") | ||
440 | + local typ = self:getProperty("type") | ||
441 | + local curWakeL = self:getProperty("wakeL") | ||
442 | + if not wakeL or not awake then | ||
443 | + if self:resetGeniusTree() == true then return "" end | ||
444 | + return genius | ||
445 | + end | ||
446 | + | ||
447 | + local heroUnit = csvdb["unitCsv"][typ] | ||
448 | + if not heroUnit then return genius end | ||
449 | + if not heroUnit.awake_1 or not heroUnit.awake_2 then return genius end | ||
450 | + | ||
451 | + if #genius == 0 then | ||
452 | + genius = string.format("%s=%s", tostring(wakeL), tostring(awake)) | ||
453 | + else | ||
454 | + genius = string.format("%s %s=%s", genius, tostring(wakeL), tostring(awake)) | ||
455 | + end | ||
456 | + | ||
457 | + local maxWakeL | ||
458 | + maxWakeL, _, genius = self:checkGeniusTree(genius) | ||
459 | + if maxWakeL == 0 then | ||
460 | + genius = self:getProperty("genius") | ||
461 | + else | ||
462 | + if curWakeL > wakeL and wakeL % 2 == 0 then --自动升一级,举例,6星设置4星觉醒技能。自动升级到5星 | ||
463 | + genius = string.format("%s %s=%s", genius, tostring(wakeL + 1), tostring(awake)) | ||
464 | + maxWakeL, _, genius = self:checkGeniusTree(genius) | ||
465 | + end | ||
466 | + end | ||
467 | + return genius | ||
384 | end | 468 | end |
385 | 469 | ||
386 | end | 470 | end |
src/models/Role.lua
@@ -198,7 +198,7 @@ Role.schema = { | @@ -198,7 +198,7 @@ Role.schema = { | ||
198 | nbTask = {"table", {}}, -- 新用户活动 | 198 | nbTask = {"table", {}}, -- 新用户活动 |
199 | radioTask = {"table", {}}, -- 电台任务 {id = {time=end_ts,heros=heros}} 表crusadeCsv | 199 | radioTask = {"table", {}}, -- 电台任务 {id = {time=end_ts,heros=heros}} 表crusadeCsv |
200 | 200 | ||
201 | - seaport = {"table", {}}, -- 海岛贸易季 {time = 1234567890, donate = {}, collect = {[1] = {team = "1=2=3", time = 1234567890}}, shop = {}} | 201 | + seaport = {"table", {}}, -- 海岛贸易季 {time = 1234567890, donate = {}, collect = {[1] = {team = "1=2=3", time = 1234567890}}, shop = {}, join = 1} |
202 | 202 | ||
203 | returner = {"table", {}}, -- 回归者 {time = 12334233423, [1] = 1, [2] = 2, status = {[1] = 1}} | 203 | returner = {"table", {}}, -- 回归者 {time = 12334233423, [1] = 1, [2] = 2, status = {[1] = 1}} |
204 | 204 |
src/models/RoleBattle.lua
@@ -99,7 +99,8 @@ function Role:checkBattleCheat(battleType, params) | @@ -99,7 +99,8 @@ function Role:checkBattleCheat(battleType, params) | ||
99 | for arr, _ in pairs(checkCheatAttrs) do | 99 | for arr, _ in pairs(checkCheatAttrs) do |
100 | temp[arr] = hero[arr] | 100 | temp[arr] = hero[arr] |
101 | end | 101 | end |
102 | - selfTeamServer[hero.type] = temp | 102 | + selfTeamServer[hero.type] = temp |
103 | + self:log_battle_hero(hero.type, "hangTeam") | ||
103 | end | 104 | end |
104 | -- local carbonData = csvdb["idle_battleCsv"][params.id] | 105 | -- local carbonData = csvdb["idle_battleCsv"][params.id] |
105 | -- enemyServer = packBattleEnemyCommon(carbonData) | 106 | -- enemyServer = packBattleEnemyCommon(carbonData) |
@@ -112,6 +113,7 @@ function Role:checkBattleCheat(battleType, params) | @@ -112,6 +113,7 @@ function Role:checkBattleCheat(battleType, params) | ||
112 | temp[arr] = hero[arr] | 113 | temp[arr] = hero[arr] |
113 | end | 114 | end |
114 | selfTeamServer[hero.type] = temp | 115 | selfTeamServer[hero.type] = temp |
116 | + self:log_battle_hero(hero.type, "towerTeam") | ||
115 | end | 117 | end |
116 | -- local carbonData = csvdb["tower_battleCsv"][params.id] | 118 | -- local carbonData = csvdb["tower_battleCsv"][params.id] |
117 | -- enemyServer = packBattleEnemyCommon(carbonData) | 119 | -- enemyServer = packBattleEnemyCommon(carbonData) |
@@ -124,6 +126,7 @@ function Role:checkBattleCheat(battleType, params) | @@ -124,6 +126,7 @@ function Role:checkBattleCheat(battleType, params) | ||
124 | temp[arr] = hero[arr] | 126 | temp[arr] = hero[arr] |
125 | end | 127 | end |
126 | selfTeamServer[hero.type] = temp | 128 | selfTeamServer[hero.type] = temp |
129 | + self:log_battle_hero(hero.type, "bonusTeam") | ||
127 | end | 130 | end |
128 | -- local carbonData = csvdb["bonus_battleCsv"][params.id] | 131 | -- local carbonData = csvdb["bonus_battleCsv"][params.id] |
129 | -- enemyServer = packBattleEnemyCommon(carbonData) | 132 | -- enemyServer = packBattleEnemyCommon(carbonData) |
@@ -136,6 +139,7 @@ function Role:checkBattleCheat(battleType, params) | @@ -136,6 +139,7 @@ function Role:checkBattleCheat(battleType, params) | ||
136 | temp[arr] = hero[arr] | 139 | temp[arr] = hero[arr] |
137 | end | 140 | end |
138 | selfTeamServer[hero.type] = temp | 141 | selfTeamServer[hero.type] = temp |
142 | + self:log_battle_hero(hero.type, "workTeam") | ||
139 | end | 143 | end |
140 | -- local carbonData = csvdb["bonus_battleCsv"][params.id] | 144 | -- local carbonData = csvdb["bonus_battleCsv"][params.id] |
141 | -- enemyServer = packBattleEnemyCommon(carbonData) | 145 | -- enemyServer = packBattleEnemyCommon(carbonData) |
@@ -149,6 +153,7 @@ function Role:checkBattleCheat(battleType, params) | @@ -149,6 +153,7 @@ function Role:checkBattleCheat(battleType, params) | ||
149 | temp[arr] = hero[arr] | 153 | temp[arr] = hero[arr] |
150 | end | 154 | end |
151 | selfTeamServer[hero.type] = temp | 155 | selfTeamServer[hero.type] = temp |
156 | + self:log_battle_hero(hero.type, "pvpcTeam") | ||
152 | end | 157 | end |
153 | end | 158 | end |
154 | cheat["pvph"] = cheat["pvpc"] | 159 | cheat["pvph"] = cheat["pvpc"] |
src/models/RoleLog.lua
@@ -136,6 +136,7 @@ local ItemReason = { | @@ -136,6 +136,7 @@ local ItemReason = { | ||
136 | changeSpark = 1213, -- 穿戴火花 | 136 | changeSpark = 1213, -- 穿戴火花 |
137 | sparkLvlUp = 1214, -- 火花强化 | 137 | sparkLvlUp = 1214, -- 火花强化 |
138 | sparkQualityUp = 1215, -- 火花升华 | 138 | sparkQualityUp = 1215, -- 火花升华 |
139 | + heroGenius = 1216, -- 英雄天赋点 | ||
139 | 140 | ||
140 | -- pvp | 141 | -- pvp |
141 | pvpCHead = 1301, -- pvp 跨服竞技场头像 | 142 | pvpCHead = 1301, -- pvp 跨服竞技场头像 |
src/models/RolePlugin.lua
@@ -252,7 +252,8 @@ function RolePlugin.bind(Role) | @@ -252,7 +252,8 @@ function RolePlugin.bind(Role) | ||
252 | local headData = csvdb["player_iconCsv"][itemId] | 252 | local headData = csvdb["player_iconCsv"][itemId] |
253 | -- pvp 跨服竞技场奖励 | 253 | -- pvp 跨服竞技场奖励 |
254 | if headData and headData.path == 2 then | 254 | if headData and headData.path == 2 then |
255 | - mysqlproxy:insertEmail({roleId = self:getProperty("id"), emailId = 19}) | 255 | + --mysqlproxy:insertEmail({roleId = self:getProperty("id"), emailId = 19}) |
256 | + self:sendMail(19) | ||
256 | end | 257 | end |
257 | end | 258 | end |
258 | end | 259 | end |
@@ -397,10 +398,11 @@ function RolePlugin.bind(Role) | @@ -397,10 +398,11 @@ function RolePlugin.bind(Role) | ||
397 | return true, less | 398 | return true, less |
398 | end | 399 | end |
399 | for itemId, count in pairs(itemCountT) do | 400 | for itemId, count in pairs(itemCountT) do |
400 | - if count <= 0 then | ||
401 | - -- 判断物品数量值不应该小于等于0 | ||
402 | - less[itemId] = 0 | ||
403 | - else | 401 | + --if count <= 0 then |
402 | + -- -- 判断物品数量值不应该小于等于0 | ||
403 | + -- less[itemId] = 0 | ||
404 | + --else | ||
405 | + if count > 0 then | ||
404 | local last = self:getItemCount(itemId) - count | 406 | local last = self:getItemCount(itemId) - count |
405 | if last < 0 then | 407 | if last < 0 then |
406 | less[itemId] = -last | 408 | less[itemId] = -last |
@@ -636,6 +638,15 @@ function RolePlugin.bind(Role) | @@ -636,6 +638,15 @@ function RolePlugin.bind(Role) | ||
636 | return count | 638 | return count |
637 | end | 639 | end |
638 | 640 | ||
641 | + function Role:getHeroByID(heroId) | ||
642 | + for id, hero in pairs(self.heros) do | ||
643 | + if id == heroId then | ||
644 | + return hero | ||
645 | + end | ||
646 | + end | ||
647 | + return nil | ||
648 | + end | ||
649 | + | ||
639 | 650 | ||
640 | function Role:loadHeros() | 651 | function Role:loadHeros() |
641 | local roleId = self:getProperty("id") | 652 | local roleId = self:getProperty("id") |
@@ -825,7 +836,7 @@ function RolePlugin.bind(Role) | @@ -825,7 +836,7 @@ function RolePlugin.bind(Role) | ||
825 | newRune:create() | 836 | newRune:create() |
826 | newRune:generateAttrs() | 837 | newRune:generateAttrs() |
827 | newRune.owner = self | 838 | newRune.owner = self |
828 | - self.runeBag[runeUid] = newRune | 839 | + self.runeBag[roleId * MAX_RUNE_NUM + runeUid] = newRune |
829 | if not params.notNotify then | 840 | if not params.notNotify then |
830 | local response = {} | 841 | local response = {} |
831 | table.insert(response, newRune:data()) | 842 | table.insert(response, newRune:data()) |
@@ -876,7 +887,7 @@ function RolePlugin.bind(Role) | @@ -876,7 +887,7 @@ function RolePlugin.bind(Role) | ||
876 | newSpark:create() | 887 | newSpark:create() |
877 | newSpark:addAttr(data.attr:toNumMap()) | 888 | newSpark:addAttr(data.attr:toNumMap()) |
878 | newSpark.owner = self | 889 | newSpark.owner = self |
879 | - self.sparkBag[sparkUid] = newSpark | 890 | + self.sparkBag[roleId * MAX_SPARK_NUM + sparkUid] = newSpark |
880 | if not params.notNotify then | 891 | if not params.notNotify then |
881 | local response = {} | 892 | local response = {} |
882 | table.insert(response, newSpark:data()) | 893 | table.insert(response, newSpark:data()) |
@@ -1360,7 +1371,7 @@ function RolePlugin.bind(Role) | @@ -1360,7 +1371,7 @@ function RolePlugin.bind(Role) | ||
1360 | local function getReward(reset) | 1371 | local function getReward(reset) |
1361 | -- 全服捐赠奖励 | 1372 | -- 全服捐赠奖励 |
1362 | local donate = seaport.donate or {} | 1373 | local donate = seaport.donate or {} |
1363 | - if not reset and (not donate[1] or not donate[2]) then | 1374 | + if not reset and seaport.join and (not donate[1] or not donate[2]) then |
1364 | local result = self:getSeaportServerProgress() | 1375 | local result = self:getSeaportServerProgress() |
1365 | for idx, set in ipairs(csvdb["seaport_purchaseCsv"]) do | 1376 | for idx, set in ipairs(csvdb["seaport_purchaseCsv"]) do |
1366 | local done = true | 1377 | local done = true |
@@ -1372,11 +1383,12 @@ function RolePlugin.bind(Role) | @@ -1372,11 +1383,12 @@ function RolePlugin.bind(Role) | ||
1372 | end | 1383 | end |
1373 | if done then | 1384 | if done then |
1374 | update = true | 1385 | update = true |
1375 | - redisproxy:insertEmail({ | ||
1376 | - roleId = self:getProperty("id"), | ||
1377 | - emailId = idx == 1 and 361 or 362, | ||
1378 | - attachments = set[1].phase_award, | ||
1379 | - }) | 1386 | + --redisproxy:insertEmail({ |
1387 | + -- roleId = self:getProperty("id"), | ||
1388 | + -- emailId = idx == 1 and 361 or 362, | ||
1389 | + -- attachments = set[1].phase_award, | ||
1390 | + --}) | ||
1391 | + self:sendMail(idx == 1 and 361 or 362, nil, set[1].phase_award) | ||
1380 | -- self:award(set[1].phase_award, {log = {desc = "seaportReward", int1 = set[1].phase, int2 = set[1].id}}) | 1392 | -- self:award(set[1].phase_award, {log = {desc = "seaportReward", int1 = set[1].phase, int2 = set[1].id}}) |
1381 | donate[idx] = 1 | 1393 | donate[idx] = 1 |
1382 | end | 1394 | end |
@@ -1469,11 +1481,12 @@ function RolePlugin.bind(Role) | @@ -1469,11 +1481,12 @@ function RolePlugin.bind(Role) | ||
1469 | end | 1481 | end |
1470 | rewardStr = rewardStr .. string.format("%s=%s",itemId,value) | 1482 | rewardStr = rewardStr .. string.format("%s=%s",itemId,value) |
1471 | end | 1483 | end |
1472 | - redisproxy:insertEmail({ | ||
1473 | - roleId = self:getProperty("id"), | ||
1474 | - emailId = 363, | ||
1475 | - attachments = rewardStr, | ||
1476 | - }) | 1484 | + --redisproxy:insertEmail({ |
1485 | + -- roleId = self:getProperty("id"), | ||
1486 | + -- emailId = 363, | ||
1487 | + -- attachments = rewardStr, | ||
1488 | + --}) | ||
1489 | + self:sendMail(363, nil, rewardStr) | ||
1477 | end | 1490 | end |
1478 | end | 1491 | end |
1479 | seaport.collect = {} | 1492 | seaport.collect = {} |
@@ -1695,6 +1708,7 @@ function RolePlugin.bind(Role) | @@ -1695,6 +1708,7 @@ function RolePlugin.bind(Role) | ||
1695 | 1708 | ||
1696 | if level > advL[1] then | 1709 | if level > advL[1] then |
1697 | self:checkTaskEnter("AdvLevel", {level = level}) | 1710 | self:checkTaskEnter("AdvLevel", {level = level}) |
1711 | + self:mylog("adv_action", {desc = "adv_level", int1 = level}) | ||
1698 | end | 1712 | end |
1699 | advL[1] = level | 1713 | advL[1] = level |
1700 | advL[2] = newExp | 1714 | advL[2] = newExp |
@@ -1763,6 +1777,7 @@ function RolePlugin.bind(Role) | @@ -1763,6 +1777,7 @@ function RolePlugin.bind(Role) | ||
1763 | info.type = hero:getProperty("type") | 1777 | info.type = hero:getProperty("type") |
1764 | info.level = hero:getProperty("level") | 1778 | info.level = hero:getProperty("level") |
1765 | info.wakeL = hero:getProperty("wakeL") | 1779 | info.wakeL = hero:getProperty("wakeL") |
1780 | + info.genius = hero:getProperty("genius") | ||
1766 | info.blockLevel = hero:getSkillLevel(4) | 1781 | info.blockLevel = hero:getSkillLevel(4) |
1767 | info.specialLevel = hero:getSkillLevel(1) | 1782 | info.specialLevel = hero:getSkillLevel(1) |
1768 | info.passiveLevel = hero:getSkillLevel(3) | 1783 | info.passiveLevel = hero:getSkillLevel(3) |
@@ -1786,6 +1801,7 @@ function RolePlugin.bind(Role) | @@ -1786,6 +1801,7 @@ function RolePlugin.bind(Role) | ||
1786 | type = hero:getProperty("type"), | 1801 | type = hero:getProperty("type"), |
1787 | level = hero:getProperty("level"), | 1802 | level = hero:getProperty("level"), |
1788 | wakeL = hero:getProperty("wakeL"), | 1803 | wakeL = hero:getProperty("wakeL"), |
1804 | + genius = hero:getProperty("genius"), | ||
1789 | } | 1805 | } |
1790 | end | 1806 | end |
1791 | format.heros = heros | 1807 | format.heros = heros |
@@ -2341,6 +2357,8 @@ function RolePlugin.bind(Role) | @@ -2341,6 +2357,8 @@ function RolePlugin.bind(Role) | ||
2341 | gift = gift .. k.."="..v.." " | 2357 | gift = gift .. k.."="..v.." " |
2342 | end | 2358 | end |
2343 | mysqlproxy:insertEmail({roleId = self:getProperty("id"), emailId = mailId, createtime = createTime, attachments = gift, contentPms = contentPms}) | 2359 | mysqlproxy:insertEmail({roleId = self:getProperty("id"), emailId = mailId, createtime = createTime, attachments = gift, contentPms = contentPms}) |
2360 | + | ||
2361 | + self:mylog("role_action", {desc="sendMail", int1 = mailId}) | ||
2344 | self.sendMailFlag = true | 2362 | self.sendMailFlag = true |
2345 | end | 2363 | end |
2346 | 2364 | ||
@@ -2757,6 +2775,37 @@ function RolePlugin.bind(Role) | @@ -2757,6 +2775,37 @@ function RolePlugin.bind(Role) | ||
2757 | return towerBnous[SystemBnousType.SweepReward] or {} | 2775 | return towerBnous[SystemBnousType.SweepReward] or {} |
2758 | end | 2776 | end |
2759 | 2777 | ||
2778 | + function Role:getPotionLevel(id) | ||
2779 | + local level = self.dinerData:getProperty("dishTree"):getv(id, 1) | ||
2780 | + local talentSet = csvdb["diner_talentCsv"][id] | ||
2781 | + if not talentSet then return 0 end | ||
2782 | + local talentData = talentSet[level] | ||
2783 | + if not talentData then return 0 end | ||
2784 | + | ||
2785 | + if talentData.pointFront == "" then | ||
2786 | + if talentData.levelFront ~= "" and not self:checkHangPass(tonumber(talentData.levelFront)) then | ||
2787 | + if level == 0 then return 0 end | ||
2788 | + end | ||
2789 | + return level | ||
2790 | + end | ||
2791 | + | ||
2792 | + if talentData.levelFront ~= "" and not self:checkHangPass(tonumber(talentData.levelFront)) then | ||
2793 | + if level == 0 then return 0 end | ||
2794 | + end | ||
2795 | + | ||
2796 | + for preId, needV in pairs(talentData.pointFront:toNumMap()) do | ||
2797 | + if self.dinerData:getProperty("dishTree"):getv(preId, 0) < needV then | ||
2798 | + if level == 0 then return 0 end | ||
2799 | + if level == 1 then return 0 end | ||
2800 | + end | ||
2801 | + end | ||
2802 | + return level | ||
2803 | + end | ||
2804 | + | ||
2805 | + function Role:log_battle_hero(heroType, desc) | ||
2806 | + self:mylog("hero_action", {desc = desc, int1 = heroType}) | ||
2807 | + end | ||
2808 | + | ||
2760 | end | 2809 | end |
2761 | 2810 | ||
2762 | return RolePlugin | 2811 | return RolePlugin |
2763 | \ No newline at end of file | 2812 | \ No newline at end of file |
src/models/Store.lua
@@ -301,7 +301,9 @@ function Store:onBuyCard(type, duration, id, actid) | @@ -301,7 +301,9 @@ function Store:onBuyCard(type, duration, id, actid) | ||
301 | actData["unlock"] = 1 | 301 | actData["unlock"] = 1 |
302 | if actCfg.condition ~= 0 then | 302 | if actCfg.condition ~= 0 then |
303 | actData["lvl"] = (actData["lvl"] or 0) + actCfg.condition | 303 | actData["lvl"] = (actData["lvl"] or 0) + actCfg.condition |
304 | + role:mylog("act_action", {desc="buyBcLvl", int1=actCfg.condition, int2=actData["lvl"]}) | ||
304 | end | 305 | end |
306 | + self.owner:mylog("act_action", {desc="buyBc", int1=id, int2=actData["lvl"] or 0}) | ||
305 | self.owner.activity:updateActData("BattleCommand", actData) | 307 | self.owner.activity:updateActData("BattleCommand", actData) |
306 | end | 308 | end |
307 | end | 309 | end |
@@ -438,19 +440,19 @@ function Store:OnTriggerLimitTimePack(eventType, param) | @@ -438,19 +440,19 @@ function Store:OnTriggerLimitTimePack(eventType, param) | ||
438 | end | 440 | end |
439 | end | 441 | end |
440 | if config ~= nil then | 442 | if config ~= nil then |
441 | - local rechargeCfg = csvdb["shop_rechargeCsv"][config.packId] | 443 | + local rechargeCfg = csvdb["shop_normalCsv"][config.packId] |
442 | if rechargeCfg then | 444 | if rechargeCfg then |
443 | limitPack[rechargeCfg.id] = {timeNow + rechargeCfg.time, config.id} | 445 | limitPack[rechargeCfg.id] = {timeNow + rechargeCfg.time, config.id} |
444 | self.owner:log("push_gift", { | 446 | self.owner:log("push_gift", { |
445 | gift_id = rechargeCfg.id, --礼包ID | 447 | gift_id = rechargeCfg.id, --礼包ID |
446 | - gift_name = rechargeCfg.title, --礼包名称 | 448 | + gift_name = rechargeCfg.descId, --礼包名称 |
447 | }) | 449 | }) |
448 | -- 每日抽卡限时礼包 触发重置 | 450 | -- 每日抽卡限时礼包 触发重置 |
449 | if eventType == TriggerEventType.DrawHeroCnt then | 451 | if eventType == TriggerEventType.DrawHeroCnt then |
450 | - local payR = self:getProperty("payR") | 452 | + local payR = self:getProperty("buyR") |
451 | if payR[rechargeCfg.id] then | 453 | if payR[rechargeCfg.id] then |
452 | payR[rechargeCfg.id] = nil | 454 | payR[rechargeCfg.id] = nil |
453 | - self:updateProperty({field = "payR", value = payR}) | 455 | + self:updateProperty({field = "buyR", value = payR}) |
454 | end | 456 | end |
455 | end | 457 | end |
456 | self:updateProperty({field = "limitTPack", value = limitPack}) | 458 | self:updateProperty({field = "limitTPack", value = limitPack}) |
src/shared/ModelBaseMysql.lua
@@ -280,12 +280,14 @@ function ModelBaseMysql:setProperties(fields, forceSave) | @@ -280,12 +280,14 @@ function ModelBaseMysql:setProperties(fields, forceSave) | ||
280 | tostring(self), self.class.__cname, property, typ, type(value))) | 280 | tostring(self), self.class.__cname, property, typ, type(value))) |
281 | 281 | ||
282 | if typ == "number" or typ == "string" then | 282 | if typ == "number" or typ == "string" then |
283 | - if self[propname] == value then | ||
284 | - return | 283 | + if self[propname] ~= value then |
284 | + self[propname] = value | ||
285 | + self.cacheFields[property] = self[propname] | ||
285 | end | 286 | end |
287 | + else | ||
288 | + self[propname] = value | ||
289 | + self.cacheFields[property] = self[propname] | ||
286 | end | 290 | end |
287 | - self[propname] = value | ||
288 | - self.cacheFields[property] = self[propname] | ||
289 | end | 291 | end |
290 | end | 292 | end |
291 | if forceSave then | 293 | if forceSave then |