Team_1.lua 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. Team = {}
  2. local this = {}
  3. -- 获取队伍喊话信息
  4. function Team.getteamrecruitlua(actor, msgID)
  5. local info = {}
  6. local teamId = getbaseinfo(actor, "teamid")
  7. if not teamId or teamId == 0 then
  8. sendluamsg(actor, LuaMessageIdToClient.TEAM_RECRUIT_CHANGE, info)
  9. return
  10. end
  11. local teamInfo = getteaminfo(actor, teamId)
  12. if teamInfo == nil then
  13. sendluamsg(actor, LuaMessageIdToClient.TEAM_RECRUIT_CHANGE, info)
  14. return
  15. end
  16. local allTeamMemberInfo = teamInfo["allteammemberinfo"]
  17. local leaderRid
  18. for index, value in ipairs(allTeamMemberInfo) do
  19. local leader = value["leader"]
  20. if leader == 1 then
  21. leaderRid = value["rid"]
  22. end
  23. end
  24. local targetactor
  25. if actor:toString() == tostring(leaderRid) then
  26. targetactor = actor
  27. end
  28. if actor:toString() ~= tostring(leaderRid) then
  29. targetactor = getactor(actor, leaderRid)
  30. end
  31. local teamShout = getplaydef(targetactor, tostring(teamId))
  32. if teamShout == nil then
  33. sendluamsg(actor, LuaMessageIdToClient.TEAM_RECRUIT_CHANGE, info)
  34. return
  35. end
  36. info["activeid"] = teamShout[2]
  37. info["lowerlevel"] = tonumber(teamShout[3])
  38. info["upperlevel"] = tonumber(teamShout[4])
  39. -- local info = getteamrecruit(actor)
  40. sendluamsg(actor, LuaMessageIdToClient.TEAM_RECRUIT_CHANGE, info)
  41. end
  42. --给队员发送喊话信息
  43. function Team.teamrecruitchange(actor, activeid, upperlevel, lowerlevel)
  44. local sendData = {}
  45. sendData["activeid"] = activeid
  46. sendData["upperlevel"] = tonumber(upperlevel)
  47. sendData["lowerlevel"] = tonumber(lowerlevel)
  48. sendluamsg(actor, LuaMessageIdToClient.TEAM_RECRUIT_CHANGE, sendData)
  49. end
  50. -- 队长一键同意审批记录
  51. function Team.leaderAgreeApply(actor, msgData)
  52. -- agreeteamapply(actor)
  53. for _, v in pairs(msgData.list) do
  54. local Data = {}
  55. Data["type"] = 2
  56. Data["leaderId"] = v.rid
  57. Team.onHandleTeamInviteApplyMsg(actor, Data)
  58. end
  59. end
  60. ---获取队伍所有成员rid
  61. function Team.GetAllMemberRids(actor)
  62. if actor == nil then
  63. return nil
  64. end
  65. local allMemberRids = {}
  66. local teamId = tonumber(getbaseinfo(actor, "teamid"))
  67. if teamId == nil or teamId == 0 then
  68. return allMemberRids
  69. end
  70. local teamInfo = getteaminfo(actor, teamId)
  71. if table.isNullOrEmpty(teamInfo) then
  72. return
  73. end
  74. local allTeamMemberInfo = teamInfo["allteammemberinfo"]
  75. if table.isNullOrEmpty(allTeamMemberInfo) then
  76. return allMemberRids;
  77. end
  78. for _, memberInfo in pairs(allTeamMemberInfo) do
  79. local rid = tonumber(memberInfo["rid"])
  80. if rid ~= nil and rid > 0 then
  81. table.insert(allMemberRids, rid)
  82. end
  83. end
  84. return allMemberRids
  85. end
  86. --处理队伍邀请申请消息
  87. function Team.onHandleTeamInviteApplyMsg(actor, msgData)
  88. if table.isNullOrEmpty(msgData) then
  89. return
  90. end
  91. --同职业人数不能超过2个
  92. local count = 2
  93. if msgData.type == 1 then
  94. --接受或拒绝入队邀请
  95. local career = getrolefield(actor, "role.basic.career.basecareer")
  96. local lActor = getactor(msgData.leaderId)
  97. local memberRids = Team.GetAllMemberRids(lActor)
  98. for _, rid in ipairs(memberRids) do
  99. local mActor = getactor(rid)
  100. local m_career = getrolefield(mActor, "role.basic.career.basecareer")
  101. if career == m_career then
  102. count = count - 1
  103. end
  104. if count == 0 then
  105. tipinfo(actor, "队伍里同职业不能超过2个!")
  106. replyinvitation(actor, msgData.leaderId, 0)
  107. return
  108. end
  109. end
  110. replyinvitation(actor, msgData.leaderId, 1)
  111. elseif msgData.type == 2 then
  112. --接受或拒绝入队申请
  113. local tActor = getactor(msgData.leaderId)
  114. local t_career = getrolefield(tActor, "role.basic.career.basecareer")
  115. local memberRids = Team.GetAllMemberRids(actor)
  116. for _, rid in ipairs(memberRids) do
  117. local mActor = getactor(rid)
  118. local m_career = getrolefield(mActor, "role.basic.career.basecareer")
  119. if t_career == m_career then
  120. count = count - 1
  121. end
  122. if count == 0 then
  123. tipinfo(actor, "队伍里同职业不能超过2个!")
  124. replyapply(actor, 0, msgData.leaderId)
  125. return
  126. end
  127. end
  128. replyapply(actor, 1, msgData.leaderId)
  129. end
  130. end
  131. -- 获取队伍所有成员位置
  132. function Team.GetAllMemberPos(actor)
  133. local teamId = tonumber(getbaseinfo(actor, "teamid"))
  134. if teamId == nil or teamId == 0 then
  135. return
  136. end
  137. local teamInfo = getteaminfo(actor, teamId)
  138. if table.isNullOrEmpty(teamInfo) then
  139. return
  140. end
  141. local allTeamMemberInfo = teamInfo["allteammemberinfo"]
  142. if table.isNullOrEmpty(allTeamMemberInfo) then
  143. return
  144. end
  145. local posList = {}
  146. local unimapid = getbaseinfo(actor, "unimapid")
  147. local rid = getbaseinfo(actor, "rid")
  148. for _, memberInfo in pairs(allTeamMemberInfo) do
  149. local mrid = tonumber(memberInfo["rid"])
  150. if mrid ~= nil and mrid > 0 and rid ~= mrid then
  151. local mActor = getactor(mrid)
  152. if unimapid == getbaseinfo(mActor, "unimapid") then
  153. local posX = getbaseinfo(mActor, "x")
  154. local posY = getbaseinfo(mActor, "y")
  155. local rolename = getbaseinfo(mActor, "rolename")
  156. table.insert(posList, { rid = mrid, rolename = rolename, x = posX, y = posY })
  157. end
  158. end
  159. end
  160. sendluamsg(actor, LuaMessageIdToClient.RES_SEND_TEAMMATE_POSITION, posList)
  161. end