#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package Player.PlayerAssist # # @todo:ЭÖúϵͳ # @author hxp # @date 2019-12-06 # @version 1.0 # # ÏêϸÃèÊö: ЭÖúϵͳ # #------------------------------------------------------------------------------- #"""Version = 2019-12-06 21:00""" #------------------------------------------------------------------------------- import GameWorld import IpyGameDataPY import PlayerControl import NPCHurtManager import IPY_GameWorld import ItemControler import ItemCommon import ChConfig def DoPlayerOnDay(curPlayer): ## ¹ýÌì´¦Àí ipyDataMgr = IpyGameDataPY.IPY_Data() for index in xrange(ipyDataMgr.GetAssistThanksGiftCount()): ipyData = ipyDataMgr.GetAssistThanksGiftByIndex(index) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GetThanksGiftCount % ipyData.GetGiftID(), 0) return #// B0 10 ÇëÇóЭÖúBoss #tagCMRequestAssistBoss # #struct tagCMRequestAssistBoss # #{ # tagHead Head; # DWORD ObjID; # DWORD NPCID; #}; def OnRequestAssistBoss(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) playerID = curPlayer.GetPlayerID() objID = clientData.ObjID npcID = clientData.NPCID if not curPlayer.GetFamilyID(): GameWorld.DebugLog("ûÓÐÏÉÃ˲»ÄÜÇëÇóЭÖú!", playerID) return curNPC = GameWorld.FindNPCByNPCID(npcID) if not curNPC: GameWorld.DebugLog("ЭÖúNPC²»´æÔÚÎÞ·¨Ð­Öú!npcID=%s" % npcID, playerID) return if curNPC.GetID() != objID: GameWorld.DebugLog("ЭÖúNPCʵÀýID²»Ò»ÖÂÎÞ·¨Ð­Öú!npcID=%s,curNPC.GetID()=%s,sendObjID=%s" % (npcID, curNPC.GetID(), objID), playerID) return ipyData = IpyGameDataPY.GetIpyGameDataNotLog('BOSSInfo', npcID) if not ipyData or not ipyData.GetCanAssist(): GameWorld.DebugLog("¸ÃNPC²»ÄÜЭÖú!npcID=%s" % npcID, playerID) return hurtList = NPCHurtManager.GetPlayerHurtList(curNPC) if not hurtList.IsNoAssistPlayer(playerID): GameWorld.DebugLog("²»ÊǸÃbossµÄ·ÇÖúÕ½ÉËÑªÍæ¼Ò£¬ÎÞ·¨·¢ÆðЭÖú!npcID=%s" % npcID, playerID) return if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_RequestAssist, tick): GameWorld.DebugLog("ÇëÇóЭÖúCDÖÐ!npcID=%s" % npcID, playerID) return mapID = curPlayer.GetMapID() lineID = GameWorld.GetGameWorld().GetLineID() queryData = [mapID, lineID, npcID, objID] QueryGameServer_PlayerAssist(playerID, "RequestAssistBoss", queryData) return #// B0 11 ÇëÇóЭÖú×é¶Ó¸±±¾ #tagCMRequestAssistTeamFB # #struct tagCMRequestAssistTeamFB # #{ # tagHead Head; # WORD MapID; # WORD LineID; #}; def OnRequestAssistTeamFB(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) playerID = curPlayer.GetPlayerID() mapID = clientData.MapID lineID = clientData.LineID if not curPlayer.GetFamilyID(): GameWorld.DebugLog("ûÓÐÏÉÃ˲»ÄÜÇëÇóЭÖú!", playerID) return if GameWorld.GetMap().GetMapFBTypeByMapID(mapID) != IPY_GameWorld.fbtTeam: GameWorld.DebugLog("·Ç×é¶Ó¸±±¾²»ÄÜÇëÇóЭÖú!mapID=%s" % mapID, playerID) return if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_RequestAssist, tick): GameWorld.DebugLog("ÇëÇóЭÖúCDÖÐ!mapID=%s,lineID=%s" % (mapID, lineID), playerID) return queryData = [mapID, lineID] QueryGameServer_PlayerAssist(playerID, "RequestAssistTeamFB", queryData) return def OnStartAssistTeamFB(playerID, mapID, lineID, tagPlayerID): ## ¿ªÊ¼Ð­Öú×é¶Ó¸±±¾£¬Ð­ÖúÍæ¼Ò½øÈ븱±¾µ÷Óà queryData = [mapID, lineID, tagPlayerID] QueryGameServer_PlayerAssist(playerID, "OnStartAssistTeamFB", queryData) return def QueryGameServer_PlayerAssist(playerID, queryType, queryData): msgInfo = str([queryType, queryData]) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(playerID, 0, 0, "PlayerAssist", msgInfo, len(msgInfo)) GameWorld.DebugLog("ЭÖúÐÅÏ¢·¢ËÍ GameServer: playerID=%s,queryType=%s,queryData=%s" % (playerID, queryType, queryData)) return def QueryResult_PlayerAssist(curPlayer, resultList): ## ЭÖúÐÅÏ¢GameServer·µ»Ø´¦Àí if len(resultList) != 3: return queryType, queryData, result = resultList # ʹÓÃЭÖú¸ÐлÀñºÐ¸ø½±Àø if queryType == "UseAssistThanksGift": itemID = queryData[0] giftItem = ItemCommon.FindItemInPackByItemID(curPlayer, itemID, IPY_GameWorld.rptItem) if not giftItem: return ItemCommon.DelItem(curPlayer, giftItem, 1) ipyData = IpyGameDataPY.GetIpyGameData("AssistThanksGift", itemID) if ipyData: awardItemID, awardItemCount = ipyData.GetRequestPlayerAward() ItemControler.GivePlayerItemOrMail(curPlayer, [[awardItemID, awardItemCount, 0]]) # ½ÓÊÕЭÖú¸ÐлÀñºÐ½±Àø¸ø½±Àø elif queryType == "GetAssistThanksGift": itemID, isExtraAward, isCurDailyDate, updateTodayGiftCount = queryData if isCurDailyDate: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GetThanksGiftCount % itemID, updateTodayGiftCount) if isExtraAward: ipyData = IpyGameDataPY.GetIpyGameData("AssistThanksGift", itemID) if ipyData: awardItemID, awardItemCount = ipyData.GetAssistPlayerAward() ItemControler.GivePlayerItemOrMail(curPlayer, [[awardItemID, awardItemCount, 0]]) return def GameServer_AssistBossMsg(assistData): ## GameServerÍÆË͵½Ö¸¶¨bossµØÍ¼µÄÐÅÏ¢ GameWorld.DebugLog("GameServerͬ²½BossЭÖúÐÅÏ¢: %s" % assistData) msgType = assistData[0] # ¿ªÊ¼Ð­Öú if msgType == "Start": assistGUID, assistPlayerID, assistPlayerName, isFriend, tagPlayerID, tagPlayerName, tagTeamID, lineID, objID, npcID = assistData[1:] npchurtList = NPCHurtManager.GetPlayerHurtListEx(lineID, objID, npcID) if not npchurtList: return npchurtList.AddAssistPlayer(assistPlayerID, assistPlayerName, isFriend, tagPlayerID, tagPlayerName, tagTeamID) QueryGameServer_PlayerAssist(0, "AddAssistBossPlayerOK", [assistGUID, assistPlayerID]) # È¡ÏûЭÖú elif msgType == "Cancel": assistPlayerID, lineID, objID, npcID = assistData[1:] npchurtList = NPCHurtManager.GetPlayerHurtListEx(lineID, objID, npcID) if not npchurtList: return npchurtList.DelHurtPlayer(assistPlayerID, "Cancel", isMapServerDel=False) return