Commit 0886d05ad5f6662261eeef2d6a717ee9961aa99f

Authored by chenyueqi
1 parent 091912ed

修改联动好友赠送获得的红点记录和通知

src/actions/ActivityAction.lua
... ... @@ -897,7 +897,7 @@ function _M.friendHelpRpc(agent, data)
897 897 local result, award
898 898  
899 899 if not role.activity:isOpenById(actid, "FriendEnergy") then return 1 end
900   - if oper < 0 or oper > 3 then return 2 end
  900 + if oper < 1 or oper > 3 then return 2 end
901 901  
902 902 local actCsv = csvdb["activity_ctrlCsv"][actid]
903 903 local getLimit = actCsv.condition
... ... @@ -915,17 +915,7 @@ function _M.friendHelpRpc(agent, data)
915 915 return ids
916 916 end
917 917  
918   - if oper == 0 then
919   - local ids = {}
920   - local friendIds = getIds()
921   - for id, _ in pairs(friendIds) do
922   - if redisproxy:sismember(FRIEND_ENERGY:format(roleId), id) then
923   - ids[id] = 1
924   - end
925   - end
926   - SendPacket(actionCodes.Activity_friendHelpRpc, MsgPack.pack({result = 1, ids = ids}))
927   - return true
928   - elseif oper == 1 then -- 赠送好友能量
  918 + if oper == 1 then -- 赠送好友能量
929 919 local objId = msg.roleId
930 920 local gift = gifts[1]
931 921 local ids = {}
... ... @@ -947,6 +937,7 @@ function _M.friendHelpRpc(agent, data)
947 937 giveFE[friendId] = 1
948 938 award[gift[1]] = (award[gift[1]] or 0) + gift[2]
949 939 red:sadd(FRIEND_ENERGY:format(friendId), roleId)
  940 + rpcRole(friendId, "SendPacket", actionCodes.Role_notifyNewEvent, MsgPack.pack({actFriendGive = 1, roleId = roleId}))
950 941 end
951 942 end
952 943 end)
... ... @@ -1002,6 +993,7 @@ function _M.friendHelpRpc(agent, data)
1002 993 giveFE[friendId] = 1
1003 994 award[gift1[1]] = (award[gift1[1]] or 0) + gift1[2]
1004 995 red:sadd(FRIEND_ENERGY:format(friendId), roleId)
  996 + rpcRole(friendId, "SendPacket", actionCodes.Role_notifyNewEvent, MsgPack.pack({actFriendGive = 1, roleId = roleId}))
1005 997 end
1006 998  
1007 999 if not getFE[friendId] and limit <= getLimit then
... ... @@ -1049,8 +1041,21 @@ function _M.friendHelpRpc(agent, data)
1049 1041 rewards[level] = 1
1050 1042 actData.reward = rewards
1051 1043 actData.magic = level
  1044 + else
  1045 + return 5
1052 1046 end
1053 1047  
  1048 + local ids = {}
  1049 + local friendIds = getIds()
  1050 + redisproxy:pipelining(function(red)
  1051 + for id, _ in pairs(friendIds) do
  1052 + if red:sismember(FRIEND_ENERGY:format(roleId), id) then
  1053 + ids[id] = 1
  1054 + end
  1055 + end
  1056 + end)
  1057 + actData.new = ids
  1058 +
1054 1059 local reward, change = role:award(award, {log = {desc = "actFriendHelp", int1 = actid, int2 = level}})
1055 1060 role.activity:updateActData("FriendEnergy", actData)
1056 1061 SendPacket(actionCodes.Activity_friendHelpRpc, MsgPack.pack({result = result, reward = reward}))
... ...
src/models/Activity.lua
... ... @@ -751,9 +751,14 @@ activityFunc[Activity.ActivityType.ActShopGoods] = {
751 751  
752 752 activityFunc[Activity.ActivityType.FriendEnergy] = {
753 753 ["init"] = function (self, actType, isCrossDay, notify, actId)
754   - local data = {magic = 0, limit = 0, reward = {}, giveAE = {}, getAE = {}}
  754 + local data = {magic = 0, limit = 0, reward = {}, giveAE = {}, getAE = {}, new = self:getActFriendNew()
755 755 self:updateActData(actType, data, not notify)
756 756 end,
  757 + ["login"] = function (self, actType)
  758 + local curData = self:getActData(actType) or {}
  759 + actData.new = self:getActFriendNew()
  760 + self:updateActData(actType, actData, not notify)
  761 + end,
757 762 ["crossDay"] = function(self, actType, notify)
758 763 local actData = self:getActData(actType)
759 764 actData.limit = 0
... ... @@ -766,6 +771,26 @@ activityFunc[Activity.ActivityType.FriendEnergy] = {
766 771 end
767 772 }
768 773  
  774 +function activity:getActFriendNew()
  775 + local roleId = self.owner:getProperty("id")
  776 + local friendIds = {}
  777 + local friends = redisproxy:hgetall(FRIEND_KEY:format(roleId))
  778 + for i = 1, #friends , 2 do
  779 + local objId = tonumber(friends[i])
  780 + friendIds[objId] = 1
  781 + end
  782 +
  783 + local ids = {}
  784 + redisproxy:pipelining(function(red)
  785 + for id, _ in pairs(friendIds) do
  786 + if red:sismember(FRIEND_ENERGY:format(roleId), id) then
  787 + ids[id] = 1
  788 + end
  789 + end
  790 + end)
  791 + return ids
  792 +end
  793 +
769 794 activityFunc[Activity.ActivityType.Crisis] = {
770 795 ["check"] = function(self, actType, notify, atype, count) -- 检查
771 796 count = count or 1
... ...
src/models/RolePlugin.lua
... ... @@ -1515,7 +1515,6 @@ function RolePlugin.bind(Role)
1515 1515 local breathes = {
1516 1516 ["email"] = breath(120, "email"), -- email
1517 1517 ["pvphg"] = breath(300, "pvphg"), -- 高级竞技场 奖励满的红点
1518   - ["actfriend"] = breath(180, "actfriend"), -- 好友能量助力活动
1519 1518 }
1520 1519 function Role:checkNewEvent(now)
1521 1520 if now - self:getProperty("ltime") < 5 then
... ... @@ -1578,21 +1577,6 @@ function RolePlugin.bind(Role)
1578 1577 return true
1579 1578 end
1580 1579 end
1581   -
1582   - checks["actfriend"] = function ()
1583   - local ids = {}
1584   - local roleId = self:getProperty("id")
1585   - local friends = redisproxy:hgetall(FRIEND_KEY:format(roleId))
1586   - for i = 1, #friends , 2 do
1587   - local objId = tonumber(friends[i])
1588   - ids[objId] = 1
1589   - end
1590   - for friendId, _ in pairs(ids) do
1591   - if redisproxy:sismember(FRIEND_ENERGY:format(roleId), friendId) then
1592   - return true
1593   - end
1594   - end
1595   - end
1596 1580  
1597 1581 local events = {}
1598 1582 for name, breath in pairs(breathes) do
... ...