From cb45ad934671c0c54c1024f834e630109dfa5c73 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 14 四月 2025 15:01:13 +0800 Subject: [PATCH] 10367 【越南】【英语】【BT】【砍树】仙盟攻城战-服务端(增加查看其他指定仙盟/跨服仙盟支持;增加领取点赞奖励;修改仙盟轮次伤害计算规则受当前城池剩余生命影响;) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossFamilyGCZ.py | 62 +++++++++++++++++++----------- 1 files changed, 39 insertions(+), 23 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossFamilyGCZ.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossFamilyGCZ.py index c5ac94a..115236e 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossFamilyGCZ.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossFamilyGCZ.py @@ -90,7 +90,8 @@ AwwardType_Guess, # 竞猜 AwwardType_PlayerHurt, # 个人伤害排行 AwwardType_FamilyScore, # 仙盟积分排行 -) = range(3) +AwwardType_Like, # 点赞 +) = range(4) class FamilyGCZFighter(object): @@ -1287,9 +1288,13 @@ 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) @@ -1855,7 +1860,11 @@ % (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) @@ -1875,6 +1884,8 @@ 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) @@ -2052,6 +2063,9 @@ 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) @@ -2467,7 +2481,11 @@ # 竞猜 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() @@ -2497,6 +2515,12 @@ 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 @@ -2518,30 +2542,22 @@ 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 -- Gitblit v1.8.0