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 |