Commit 7fe1158cfe67bc499d65a4c61215dfecc837bb4b

Authored by liuzujun
2 parents 81ca3a6f 4e68858c

Merge branch 'cn/develop' of 120.26.43.151:wasteland/server into cn/develop

src/actions/RoleAction.lua
... ... @@ -890,25 +890,14 @@ function _M.unLockStoryBookRpc(agent, data)
890 890 return true
891 891 end
892 892  
893   -function _M.taskRpc(agent, data)
894   - local role = agent.role
895   - local msg = MsgPack.unpack(data)
896   -
897   - if not role:isFuncUnlock(FuncUnlock.TaskAchiv) then return end
898   -
899   - local taskType = msg.type -- 1 日常 2 周常
900   - local taskId = msg.id --任务id
901   - local roleField = {"dTask", "wTask"}
902   - if not roleField[taskType] then return 1 end
903   -
904   - local taskData = csvdb["task_loopCsv"][taskType][taskId]
905   - if not taskData then return 2 end
  893 +local function getTaskReward(role, taskId, roleField, taskType, taskData)
  894 + if not taskData then return nil end
906 895  
907 896 local taskStatus = role:getProperty(roleField[taskType])
908 897 local tStatus = taskStatus["t"] or {}
909 898  
910 899 if (tStatus[taskId] or 0) < taskData.condition1 then
911   - return 3
  900 + return nil
912 901 end
913 902  
914 903 local reward, change = role:award(taskData.reward, {log = {desc = "finishTask", int1 = taskType, int2 = taskId}})
... ... @@ -936,30 +925,49 @@ function _M.taskRpc(agent, data)
936 925 task_reward_type = taskType, --任务奖励类型,见 任务奖励类型枚举表
937 926 task_reward_detail = reward, --任务奖励,json格式记录,{'itemid1':123,'itemid2':456,………...}
938 927 })
939   -
940   - SendPacket(actionCodes.Role_taskRpc, MsgPack.pack(role:packReward(reward, change)))
941   - return true
  928 + return reward, change
942 929 end
943 930  
944   -function _M.taskActiveRpc(agent, data)
  931 +function _M.taskRpc(agent, data)
945 932 local role = agent.role
946 933 local msg = MsgPack.unpack(data)
947 934  
948 935 if not role:isFuncUnlock(FuncUnlock.TaskAchiv) then return end
949 936  
950   - local taskType = msg.type -- 1 日常 2 周
  937 + local taskType = msg.type -- 1 日常 2 周
951 938 local taskId = msg.id --任务id
952 939 local roleField = {"dTask", "wTask"}
953   - if not roleField[taskType] then return end
  940 + if not roleField[taskType] then return 1 end
954 941  
955   - local taskData = csvdb["task_activeCsv"][taskType][taskId]
956   - if not taskData then return end
  942 + local reward, change = {}, {}
  943 + if not taskId then
  944 +
  945 + for id, taskData in pairs(csvdb["task_loopCsv"][taskType]) do
  946 + local tmpreward, tmpchange = getTaskReward(role, id, roleField, taskType, taskData)
  947 + if tmpreward then
  948 + for k, v in pairs(tmpreward) do
  949 + reward[k] = (reward[k] or 0) + v
  950 + end
  951 + if tmpchange then table.insert(change, tmpchange) end
  952 + end
  953 + end
  954 + else
  955 + local taskData = csvdb["task_loopCsv"][taskType][taskId]
  956 + if not taskData then return 2 end
  957 + reward, change= getTaskReward(role, taskId, roleField, taskType, taskData)
  958 + end
957 959  
  960 + SendPacket(actionCodes.Role_taskRpc, MsgPack.pack(role:packReward(reward, change)))
  961 + return true
  962 +end
  963 +
  964 +
  965 +local function getTaskActiveReward(role, taskId, roleField, taskType, taskData)
958 966 local taskStatus = role:getProperty(roleField[taskType])
959 967 local tStatus = taskStatus["at"] or {}
960 968  
961 969 if tStatus[taskId] == -1 or (taskStatus["a"] or 0) < taskData.active then
962   - return
  970 + return nil
963 971 end
964 972  
965 973 local needReward = taskData.reward:toNumMap()
... ... @@ -974,12 +982,42 @@ function _M.taskActiveRpc(agent, data)
974 982 role:changeUpdates({
975 983 { type = roleField[taskType], field = {"at", taskId}, value = -1 }
976 984 })
977   -
  985 +
978 986 role:log("task_reward", {
979 987 task_reward_id = taskId * 100 + taskType, --任务奖励ID
980 988 task_reward_type = 3, --任务奖励类型,见 任务奖励类型枚举表
981 989 task_reward_detail = reward, --任务奖励,json格式记录,{'itemid1':123,'itemid2':456,………...}
982 990 })
  991 + return reward, change
  992 +end
  993 +
  994 +function _M.taskActiveRpc(agent, data)
  995 + local role = agent.role
  996 + local msg = MsgPack.unpack(data)
  997 +
  998 + if not role:isFuncUnlock(FuncUnlock.TaskAchiv) then return end
  999 +
  1000 + local taskType = msg.type -- 1 日常 2 周长
  1001 + local taskId = msg.id --任务id
  1002 + local roleField = {"dTask", "wTask"}
  1003 + if not roleField[taskType] then return end
  1004 +
  1005 + local reward, change = {}, {}
  1006 + if not taskId then
  1007 + for id, taskData in pairs(csvdb["task_activeCsv"][taskType]) do
  1008 + local tmpreward, tmpchange = getTaskActiveReward(role, id, roleField, taskType, taskData)
  1009 + if tmpreward then
  1010 + for k, v in pairs(tmpreward) do
  1011 + reward[k] = (reward[k] or 0) + v
  1012 + end
  1013 + if tmpchange then table.insert(change, tmpchange) end
  1014 + end
  1015 + end
  1016 + else
  1017 + local taskData = csvdb["task_activeCsv"][taskType][taskId]
  1018 + if not taskData then return end
  1019 + reward, change= getTaskActiveReward(role, taskId, roleField, taskType, taskData)
  1020 + end
983 1021  
984 1022 SendPacket(actionCodes.Role_taskActiveRpc, MsgPack.pack(role:packReward(reward, change)))
985 1023 return true
... ...
src/models/RolePlugin.lua
... ... @@ -2787,23 +2787,33 @@ function RolePlugin.bind(Role)
2787 2787 return self:getDeltaValue(result, value) + self:getDeltaValue(levelReault, value)
2788 2788 end
2789 2789  
2790   - local function appendBnous(dstBnous, srcBnous)
2791   - if not dstBnous or not srcBnous then return end
  2790 + local function appendAdvBnous(dstBnous, srcBnous)
  2791 + if not dstBnous and not srcBnous then return {} end
  2792 + local result = clone(dstBnous or {})
2792 2793 for time, set in pairs(srcBnous) do
2793   - if not dstBnous[time] then
2794   - dstBnous[time] = {}
  2794 + if not result[time] then
  2795 + result[time] = {}
2795 2796 end
2796 2797 for key, value in pairs(set) do
2797   - dstBnous[time][key] = (dstBnous[time][key] or 0) + value
  2798 + result[time][key] = (result[time][key] or 0) + value
2798 2799 end
2799 2800 end
  2801 + return result
  2802 + end
  2803 +
  2804 + local function appendTableBnous(dstBnous, srcBnous)
  2805 + if not dstBnous and not srcBnous then return {} end
  2806 + local result = clone(dstBnous or {})
  2807 + for k, v in pairs(srcBnous) do
  2808 + result[k] = (result[k] or 0) + v
  2809 + end
  2810 + return result
2800 2811 end
2801 2812 function Role:getBnousAdv()
2802 2813 local towerBnous = self:getTowerBnousActive()
2803 2814 local levelBnous = self:getLevelBnous()
2804 2815 local adv = levelBnous[SystemBnousType.Adv] or {}
2805   - appendBnous(towerBnous[SystemBnousType.Adv], adv)
2806   - return towerBnous[SystemBnousType.Adv] or {}
  2816 + return appendAdvBnous(towerBnous[SystemBnousType.Adv], adv)
2807 2817 end
2808 2818  
2809 2819 function Role:getBnousHangTime()
... ... @@ -2817,16 +2827,14 @@ function RolePlugin.bind(Role)
2817 2827 local towerBnous = self:getTowerBnousActive()
2818 2828 local levelBnous = self:getLevelBnous()
2819 2829 local pvpTicket = levelBnous[SystemBnousType.PvpTicket] or {}
2820   - appendBnous(towerBnous[SystemBnousType.PvpTicket], pvpTicket)
2821   - return towerBnous[SystemBnousType.PvpTicket] or {}
  2830 + return appendTableBnous(towerBnous[SystemBnousType.PvpTicket], pvpTicket)
2822 2831 end
2823 2832  
2824 2833 function Role:getBnousSweep()
2825 2834 local towerBnous = self:getTowerBnousActive()
2826 2835 local levelBnous = self:getLevelBnous()
2827 2836 local sweepReward = levelBnous[SystemBnousType.SweepReward] or {}
2828   - appendBnous(towerBnous[SystemBnousType.SweepReward], sweepReward)
2829   - return towerBnous[SystemBnousType.SweepReward] or {}
  2837 + return appendTableBnous(towerBnous[SystemBnousType.SweepReward], sweepReward)
2830 2838 end
2831 2839  
2832 2840 function Role:getBnousDismantlingMaximum()
... ... @@ -2995,7 +3003,7 @@ function RolePlugin.bind(Role)
2995 3003 -- 把溢出的铭文奖励通过邮件发送
2996 3004 function Role:checkRuneCount(reward)
2997 3005 local firstMore = false
2998   - local count = self:getRuneBatCount()
  3006 + local count = self:getRuneBagCount()
2999 3007 local page = globalCsv.store_type[ItemType.Rune]
3000 3008 local limit = self:getProperty("bagLimit")[page]
3001 3009 if count >= limit then
... ...
src/models/Rune.lua
... ... @@ -92,8 +92,9 @@ function Rune:generateAttrs()
92 92 local attrs = ""
93 93 local typ, value = getRandomValue(runeData.attr1,runeData.range1)
94 94 attrs = attrs:setv(typ, value)
95   - local typ, value = getRandomValue(runeData.attr2,runeData.range2)
96   - attrs = attrs:setv(typ, value)
  95 + local typ, value = getRandomValue(runeData.attr2,runeData.range2)
  96 + attrs = string.format("%s %d=%d", attrs, typ, value)
  97 + --attrs = attrs:setv(typ, value)
97 98 self:setProperty("attrs",attrs)
98 99 end
99 100  
... ...