10317 【英文】【越南】【BT】【砍树】仙盟传功支持离线
| | |
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, gmList):
|
| | |
|
| | | if not gmList:
|
| | | GameWorld.DebugAnswer(curPlayer, "清除感谢: Assist t0")
|
| | | |
| | | isShowThanks = gmList[0] if len(gmList) > 0 else 0
|
| | | assistMgr = PyDataManager.GetPlayerAssistPyManager()
|
| | | GameWorld.Log("---------- 当前总协助条数: %s" % len(assistMgr.allAssistDict))
|
| | |
| | | return
|
| | |
|
| | | assistThanksMgr = PyDataManager.GetPlayerAssistThanksPyManager()
|
| | | if isShowThanks == "t0":
|
| | | assistThanksMgr.allAssistThanksList = []
|
| | | assistThanksMgr.playerThanksDict = {}
|
| | | assistThanksMgr.assistPlayerThanksDict = {}
|
| | | GameWorld.DebugAnswer(curPlayer, "清除所有协助感谢!")
|
| | | |
| | | GameWorld.Log("---------- 未完结总感谢条数: %s" % len(assistThanksMgr.allAssistThanksList))
|
| | | for playerID, thanksList in assistThanksMgr.playerThanksDict.items():
|
| | | GameWorld.DebugLog("--- 玩家未发送感谢数: %s, %s" % (playerID, len(thanksList)))
|
| | |
| | | GameWorld.DebugLog("增加协助感谢: itemID=%s,mapID=%s,lineID=%s,npcID=%s,exData=%s" % (itemID, mapID, lineID, npcID, exData), playerID)
|
| | | return
|
| | |
|
| | | def AddNewAssistThanksEx(curPlayer, itemID, assistPlayerDict, mapID=0, lineID=0, npcID=0, exData=""):
|
| | | ## 添加协助感谢数据,自动更新 TodayGiftCount 及 玩家信息
|
| | | DailyDateStr = GameWorld.GetDailyDateStr()
|
| | | assistThanksMgr = PyDataManager.GetPlayerAssistThanksPyManager()
|
| | | for assistPlayerID, assistPlayerInfoDict in assistPlayerDict.items():
|
| | | |
| | | # 查找今日该感谢物品已接受感谢次数
|
| | | TodayGiftCount = 0
|
| | | assistPlayerThanksList = assistThanksMgr.assistPlayerThanksDict.get(assistPlayerID, [])
|
| | | for thanks in assistPlayerThanksList:
|
| | | if DailyDateStr != thanks.DailyDateStr or itemID != thanks.ItemID:
|
| | | continue
|
| | | if assistPlayerID not in thanks.AssistPlayerDict:
|
| | | continue
|
| | | infoDict = thanks.AssistPlayerDict[assistPlayerID]
|
| | | TodayGiftCount = infoDict.get("TodayGiftCount", 0)
|
| | | break
|
| | | |
| | | assistPlayerInfoDict["TodayGiftCount"] = TodayGiftCount
|
| | | |
| | | # 更新玩家信息,之后有需要再扩展,可以从玩家缓存或直接取在线玩家实例赋值 name job 等信息
|
| | | |
| | | GameWorld.DebugLog("获取今日接受感谢次数: itemID=%s,TodayGiftCount=%s" % (itemID, TodayGiftCount), assistPlayerID)
|
| | | GameWorld.DebugLog("AddNewAssistThanksEx itemID=%s,assistPlayerDict=%s" % (itemID, assistPlayerDict), curPlayer.GetPlayerID())
|
| | | AddNewAssistThanks(curPlayer, itemID, mapID, lineID, assistPlayerDict, npcID, exData)
|
| | | return
|
| | |
|
| | | |
| | | #// B0 14 使用协助感谢礼盒 #tagCGUseAssistThanksGift
|
| | | #
|
| | | #struct tagCGUseAssistThanksGift
|
| | |
| | | __DoChuangong_Response(curPlayer, tagPlayerID, isOK)
|
| | | return
|
| | |
|
| | | if msgType == "ThanksGift":
|
| | | __DoChuangong_ThanksGift(curPlayer, msgData)
|
| | | return
|
| | |
|
| | | def __CheckChuangongPlayer(curPlayer, tagPlayerID):
|
| | |
| | | def __DoChuangong_Invite(curPlayer, tagPlayerID):
|
| | | ## 邀请
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | tagPlayer = __CheckChuangongPlayer(curPlayer, tagPlayerID)
|
| | | curFamily = curPlayer.GetFamily()
|
| | | if not curFamily:
|
| | | return
|
| | | tagMember = curFamily.FindMember(tagPlayerID)
|
| | | if not tagMember:
|
| | | GameWorld.DebugLog("非盟友无法传功! tagPlayerID=%s" % tagPlayerID, curPlayer.GetPlayerID())
|
| | | return
|
| | | tagPlayer = tagMember.GetPlayer()
|
| | | if not tagPlayer:
|
| | | clientPack = ChPyNetSendPack.tagGCChuangongStart()
|
| | | clientPack.Clear()
|
| | | clientPack.PlayerID = tagMember.GetPlayerID()
|
| | | clientPack.Name = tagMember.GetName()
|
| | | clientPack.NameLen = len(clientPack.Name)
|
| | | clientPack.LV = tagMember.GetLV()
|
| | | clientPack.Job = tagMember.GetJob()
|
| | | clientPack.RealmLV = tagMember.GetOfficialRank()
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | PyGameData.g_chuangongTagPlayerDict[playerID] = tagPlayerID
|
| | | GameWorld.DebugLog("对方离线,则自己直接开始传功: tagPlayerID=%s, %s" % (tagPlayerID, PyGameData.g_chuangongPlayerDict), playerID)
|
| | | return
|
| | | invitePlayerIDList = PyGameData.g_chuangongPlayerDict.get(playerID, [])
|
| | | if tagPlayerID not in invitePlayerIDList:
|
| | |
| | | clientPack.Job = tagPlayer.GetJob()
|
| | | clientPack.RealmLV = tagPlayer.GetOfficialRank()
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | PyGameData.g_chuangongTagPlayerDict[curPlayer.GetPlayerID()] = tagPlayer.GetPlayerID()
|
| | | return
|
| | |
|
| | | def __DoChuangong_ThanksGift(curPlayer, msgData):
|
| | | itemID = msgData[0]
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | tagPlayerID = PyGameData.g_chuangongTagPlayerDict.pop(playerID, 0)
|
| | | GameWorld.DebugLog("__DoChuangong_ThanksGift tagPlayerID=%s" % tagPlayerID, playerID)
|
| | | if not tagPlayerID:
|
| | | return
|
| | | curFamily = curPlayer.GetFamily()
|
| | | if not curFamily:
|
| | | return
|
| | | tagMember = curFamily.FindMember(tagPlayerID)
|
| | | if not tagMember:
|
| | | return
|
| | | assistPlayerDict = {tagPlayerID:{"PlayerName":tagMember.GetName(), "Job":tagMember.GetJob(), |
| | | "LV":tagMember.GetLV(), "RealmLV":tagMember.GetOfficialRank(),
|
| | | "Face":tagMember.GetFace(), "FacePic":tagMember.GetFacePic()}}
|
| | | GameWorld.DebugLog(" assistPlayerDict %s" % assistPlayerDict, playerID)
|
| | | PlayerAssist.AddNewAssistThanksEx(curPlayer, itemID, assistPlayerDict)
|
| | | return
|
| | |
|
| | | ##--------------------------------------------------------------------------------------------------
|
| | |
| | | g_partyheroAnswerDict = {} #仙盟宴会玩家答对题目数量 {playerid:答题数量,..}
|
| | | g_familyAnswerPlayerIDDict = {} #仙盟宴会玩家参与答题数量 {playerID:[题目ID, ...], ...}
|
| | | g_chuangongPlayerDict = {} #传功玩家信息 {playerID:[目标玩家ID, ...], ...}
|
| | | g_chuangongTagPlayerDict = {} #协助传功玩家信息 {playerID:协助玩家ID, ...}
|
| | |
|
| | | g_redPacketMgr = None # RedPacketMgr
|
| | |
|
| | |
| | | syncItem.ItemID = itemID
|
| | | syncItem.ItemCount = itemCount
|
| | | syncItemList.append(syncItem)
|
| | | # 有协助感谢礼盒
|
| | | if IpyGameDataPY.GetIpyGameDataNotLog("AssistThanksGift", itemID):
|
| | | SendGameServer_FamilyChuangong(curPlayer, "ThanksGift", [itemID])
|
| | | clientPack = ChPyNetSendPack.tagMCChuangongResult()
|
| | | clientPack.Clear()
|
| | | clientPack.FromLV = fromLV
|