| | |
| | | AwwardType_Guess, # 竞猜
|
| | | AwwardType_PlayerHurt, # 个人伤害排行
|
| | | AwwardType_FamilyScore, # 仙盟积分排行
|
| | | ) = range(3)
|
| | | AwwardType_Like, # 点赞
|
| | | ) = range(4)
|
| | |
|
| | |
|
| | | class FamilyGCZFighter(object):
|
| | |
| | | value5 = joinFamily.serverID
|
| | | groupValue1 = joinFamily.zoneID
|
| | | groupValue2 = GetRoundHurtGroupID(joinFamily.batType, joinFamily.groupNum)
|
| | | roundTotalHurt = sum(joinFamily.cityWall.fighterHurtDict.values())
|
| | | cmpValue = roundTotalHurt / ChConfig.Def_PerPointValue
|
| | | cmpValue2 = roundTotalHurt % ChConfig.Def_PerPointValue
|
| | | memHurtTotal = sum(joinFamily.cityWall.fighterHurtDict.values())
|
| | | cityRemainHPPer = joinFamily.cityWall.hp / float(joinFamily.cityWall.hpMax)
|
| | | familyRoundHurt = eval(IpyGameDataPY.GetFuncCompileCfg("FamilyGCZCity", 3))
|
| | | GameWorld.DebugLog("计算仙盟轮次伤害榜值: familyID=%s,familyRoundHurt=%s,memHurtTotal=%s,cityRemainHPPer=%s, %s/%s" |
| | | % (dataID, familyRoundHurt, memHurtTotal, cityRemainHPPer, joinFamily.cityWall.hp, joinFamily.cityWall.hpMax))
|
| | | cmpValue = familyRoundHurt / ChConfig.Def_PerPointValue
|
| | | cmpValue2 = familyRoundHurt % ChConfig.Def_PerPointValue
|
| | | cmpValue3 = joinFamily.sortWeight
|
| | | CrossBillboard.UpdCrossBillboard(ShareDefine.Def_CBT_FamilyGCZRoundHurt, groupValue1, dataID, name1, name2, type2, value1, value2,
|
| | | cmpValue, cmpValue2, cmpValue3, groupValue2=groupValue2, id2=id2, autoSort=True, value3=value3, value5=value5)
|
| | |
| | | % (remainHurtTotal, killCnt, curCity.atkReportDict, tagCity.defReportDict))
|
| | |
|
| | | GameWorld.DebugLog("cityHP=%s/%s,atkedGuardIDList=%s" % (tagCity.hp, tagCity.hpMax, atkedGuardIDList))
|
| | | |
| | | if tagFamilyID:
|
| | | tagJoinFamily = zone.GetZoneJoinFamily(tagFamilyID)
|
| | | if tagJoinFamily:
|
| | | UndFamilyRoundHurtBillboard(tagJoinFamily) # 榜单伤害受城池血量影响,所以被攻击方也要更新榜单
|
| | | |
| | | for memID, memHurt in memHurtDict.items():
|
| | | GameWorld.DebugLog("攻击方成员输出: memID=%s,%s" % (memID, memHurt))
|
| | | joinMember = zone.GetZoneJoinMember(memID)
|
| | |
| | |
|
| | | if not curCity.IsBroken():
|
| | | UndFamilyRoundHurtBillboard(curJoinFamily)
|
| | | else:
|
| | | GameWorld.DebugLog(" 攻击方仙盟城池已被摧毁,不再累加本轮仙盟伤害榜值! familyID=%s" % curFamilyID)
|
| | |
|
| | | if not CheckXiuluoCity(zoneID, curRound, batType, groupNum, gmPlayerID):
|
| | | Sync_FamilyGCZBatSceneInfo(zoneID, batType, groupNum)
|
| | |
| | | hurtDict[tagCityID] = oneHurtTotal # 飘血按伤害
|
| | | # 通知被攻击盟成员大本营城池信息
|
| | | if tagCity.familyID:
|
| | | tagJoinFamily = zone.GetZoneJoinFamily(tagCity.familyID)
|
| | | if tagJoinFamily:
|
| | | UndFamilyRoundHurtBillboard(tagJoinFamily) # 榜单伤害受城池血量影响,所以被攻击方也要更新榜单
|
| | | Sync_FamilyGCZCampInfo(zoneID, tagCity.familyID, defMemIDList=atkedGuardIDList)
|
| | | Sync_FamilyGCZBatCityInfo(zoneID, batType, groupNum, tagCityID, AtkRet_OK, playerID, oneHurtTotal, killCnt)
|
| | |
|
| | |
| | | # 竞猜
|
| | | if awardType == AwwardType_Guess:
|
| | | awardTemplateID = ipyDataInfo.get("GuessTemplateID", 0)
|
| | | __clientServer_GetAward_Guess(zoneID, playerID, serverGroupID, actID, state, awardType, awardTemplateID)
|
| | | playerAwardID, awardItemList = GetGuessAwardInfo(zoneID, state, awardTemplateID, playerID)
|
| | | if not awardItemList:
|
| | | GameWorld.ErrLog("仙盟攻城战玩家没有竞猜奖励! zoneID=%s" % (zoneID), playerID)
|
| | | return
|
| | | __clientServer_GetAward_Ret(zoneID, playerID, serverGroupID, actID, awardType, playerAwardID, awardItemList)
|
| | | return
|
| | |
|
| | | gczMgr = GetFamilyGCZMgr()
|
| | |
| | | billboardType = ShareDefine.Def_CBT_FamilyGCZScore
|
| | | awardTemplateID = ipyDataInfo.get("FamilyTemplateID", 0)
|
| | |
|
| | | # 点赞奖励
|
| | | elif awardType == AwwardType_Like:
|
| | | awardItemList = IpyGameDataPY.GetFuncEvalCfg("FamilyGCZGuess", 4)
|
| | | __clientServer_GetAward_Ret(zoneID, playerID, serverGroupID, actID, awardType, 0, awardItemList)
|
| | | return
|
| | | |
| | | else:
|
| | | return
|
| | |
|
| | |
| | | if not playerAwardItemList:
|
| | | return
|
| | |
|
| | | GameWorld.Log("仙盟攻城战玩家请求领取奖励! zoneID=%s,awardType=%s,playerAwardItemList=%s" |
| | | % (zoneID, awardType, playerAwardItemList), playerID)
|
| | | |
| | | joinMember.awardState = joinMember.awardState | pow(2, awardType) # 标记已推送
|
| | | msgInfo = {"zoneID":zoneID, "playerID":playerID, "actID":actID, "awardType":awardType, "awardValue":billRank, |
| | | "awardItemList":playerAwardItemList, "fmLV":fmLV}
|
| | | Send_CrossServerMsg_FamilyGCZ("FamilyGCZAward", msgInfo, [serverGroupID])
|
| | | __clientServer_GetAward_Ret(zoneID, playerID, serverGroupID, actID, awardType, billRank, playerAwardItemList)
|
| | | return
|
| | |
|
| | | def __clientServer_GetAward_Guess(zoneID, playerID, serverGroupID, actID, state, awardType, guessTemplateID):
|
| | | ## 竞猜领奖
|
| | | playerAwardID, awardItemList = GetGuessAwardInfo(zoneID, state, guessTemplateID, playerID)
|
| | | if not awardItemList:
|
| | | GameWorld.ErrLog("仙盟攻城战玩家没有竞猜奖励! zoneID=%s" % (zoneID), playerID)
|
| | | return
|
| | | GameWorld.Log("仙盟攻城战玩家请求领取竞猜奖励! zoneID=%s,playerAwardID=%s,awardItemList=%s" |
| | | % (zoneID, playerAwardID, awardItemList), playerID)
|
| | | |
| | | def __clientServer_GetAward_Ret(zoneID, playerID, serverGroupID, actID, awardType, awardValue, awardItemList):
|
| | | ## 同步子服领奖结果
|
| | | gczMgr = GetFamilyGCZMgr()
|
| | | zone = gczMgr.GetActZone(zoneID)
|
| | | joinMember = zone.GetZoneJoinMember(playerID)
|
| | | fmLV = 0
|
| | | if joinMember:
|
| | | fmLV = joinMember.fmLV
|
| | | joinMember.awardState = joinMember.awardState | pow(2, awardType) # 标记已推送
|
| | | msgInfo = {"zoneID":zoneID, "playerID":playerID, "actID":actID, "awardType":awardType, "awardValue":playerAwardID, "awardItemList":awardItemList}
|
| | | GameWorld.Log("仙盟攻城战玩家请求领取奖励! zoneID=%s,awardType=%s,awardValue=%s,awardItemList=%s" |
| | | % (zoneID, awardType, awardValue, awardItemList), playerID)
|
| | | msgInfo = {"zoneID":zoneID, "playerID":playerID, "actID":actID, "awardType":awardType, "awardValue":awardValue, |
| | | "awardItemList":awardItemList, "fmLV":fmLV}
|
| | | Send_CrossServerMsg_FamilyGCZ("FamilyGCZAward", msgInfo, [serverGroupID])
|
| | | return
|
| | |
|