| | |
| | | def IsAssistPlayer(self, playerID):
|
| | | ## 是否助战伤血玩家
|
| | | return playerID in self.__assistPlayerIDDict
|
| | | |
| | | def IsAssistRelation(self, playerID, tagPlayerID):
|
| | | ## 玩家双方是否存在协助关系
|
| | | |
| | | # A协助B
|
| | | if playerID in self.__assistPlayerIDDict:
|
| | | if self.__assistPlayerIDDict[playerID] == tagPlayerID:
|
| | | #GameWorld.DebugLog("%s 协助 %s" % (playerID, tagPlayerID))
|
| | | return True
|
| | | |
| | | # B协助A
|
| | | elif tagPlayerID in self.__assistPlayerIDDict:
|
| | | if self.__assistPlayerIDDict[tagPlayerID] == playerID:
|
| | | #GameWorld.DebugLog("%s 协助 %s" % (tagPlayerID, playerID))
|
| | | return True
|
| | | |
| | | # 协助同一个玩家
|
| | | for assPlayerIDList in self.__noAssitPlayerIDDict.values():
|
| | | if playerID in assPlayerIDList and tagPlayerID in assPlayerIDList:
|
| | | #GameWorld.DebugLog("协助同一玩家! %s %s" % (playerID, tagPlayerID))
|
| | | return True
|
| | | |
| | | return False
|
| | |
|
| | | def OnHurtPlayerEnterTeam(self, playerID, playerName, befTeamID, newTeam, tick):
|
| | | ''' 伤血玩家加入队伍
|
| | |
| | | overDict = {FBCommon.Over_isAssist:1, FBCommon.Over_money:FBCommon.GetJsonMoneyList({assistMoneyType:addAssistMoney}),
|
| | | FBCommon.Over_itemInfo:[]}
|
| | | FBCommon.NotifyFBOver(assistPlayer, mapID, PlayerControl.GetFBFuncLineID(assistPlayer), 1, overDict)
|
| | | assistPlayer.Sync_TimeTick(IPY_GameWorld.tttLeaveMap, 0, 10000, True)
|
| | |
|
| | | if noAssistPlayer:
|
| | | todayGiftCount = assistPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GetThanksGiftCount % liheItemID)
|
| | |
| | | def OnPlayerLeaveMap(curPlayer):
|
| | | ## 玩家离开地图处理
|
| | |
|
| | | mapID = curPlayer.GetMapID()
|
| | | mapType = GameWorld.GetMap().GetMapFBType()
|
| | | changeMapID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ChangeMapID)
|
| | | changeLineID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ChangeLineID)
|
| | | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | for hurtList in PyGameData.g_npcHurtDict.values():
|
| | | if hurtList.IsNoAssistPlayer(playerID) or hurtList.IsAssistPlayer(playerID):
|
| | | if mapType == IPY_GameWorld.fbtNull and mapID == changeMapID and changeLineID == hurtList.lineID:
|
| | | #GameWorld.DebugLog("玩家同地图切线,当前伤血lineID为目标线路,不清伤血!changeLineID=%s" % changeLineID, playerID)
|
| | | continue
|
| | | GameWorld.DebugLog("玩家离开地图, 删除boss伤血玩家!npcID=%s" % (hurtList.npcID), playerID)
|
| | | hurtList.DelHurtPlayer(playerID, "LeaveMap")
|
| | | break
|
| | |
| | | defendHurtList = PlayerHurtList(lineID, objID, npcID)
|
| | | PyGameData.g_npcHurtDict[key] = defendHurtList
|
| | | defendHurtList = PyGameData.g_npcHurtDict[key]
|
| | | if not defendHurtList.curNPC:
|
| | | hurtList = PyGameData.g_npcHurtDict.pop(key)
|
| | | hurtList.OnDelete()
|
| | | return
|
| | | return defendHurtList
|
| | |
|
| | | def OnNPCHurtPlayerEnterTeam(playerID, playerName, befTeamID, newTeam, tick):
|
| | |
| | | return False
|
| | | return defendHurtList.IsAssistPlayer(playerID)
|
| | |
|
| | | def IsAssistRelation(curPlayer, tagPlayer):
|
| | | ## 双方是否协助关系
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | tagPlayerID = tagPlayer.GetPlayerID()
|
| | | for hurtList in PyGameData.g_npcHurtDict.values():
|
| | | if hurtList.IsAssistRelation(playerID, tagPlayerID):
|
| | | return True
|
| | | return False
|
| | |
|
| | | def CheckPlayerCanAttackFBNPC(curPlayer, curNPC, mapID, isNotify=False):
|
| | | ## 检查玩家可否攻击有副本次数的NPC
|
| | | enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID)
|