From 98e97e0a0f4c46b448033ece2aabc7da2499ae29 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期三, 19 九月 2018 11:55:05 +0800 Subject: [PATCH] fix:3668 子 【主干】寻宝优化 / 【后端】新增符印融合石物品转货币 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FamilyRobBoss.py | 76 +++++++++++++++++++++++++++++++++++--- 1 files changed, 70 insertions(+), 6 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FamilyRobBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FamilyRobBoss.py index 7bc9d53..a9ab98c 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FamilyRobBoss.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FamilyRobBoss.py @@ -23,6 +23,10 @@ import PlayerActivity import PlayerControl import IpyGameDataPY +import SkillCommon +import PyGameData +import BuffSkill +import PlayerTJG import NPCCommon import ChConfig import GameObj @@ -81,6 +85,11 @@ if not g_familyOwnerBossHurt: g_familyOwnerBossHurt = FamilyOwnerBossHurt() return g_familyOwnerBossHurt + +def OnPlayerLogin(curPlayer): + if GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyRobBoss): + __DoCheckHorsePetRobBossKillCntBuff(curPlayer, GameWorld.GetGameWorld().GetTick()) + return def IsHorsePetRobBoss(bossID): ## 是否骑宠争夺bossID @@ -266,7 +275,7 @@ npcHisHurtPlayerList.sort(cmp=CmpFamilyOwnerBossHurtSort) # 归属仙盟前x名玩家额外奖励,算历史伤血 - batchPlayerIDList, batchAddItemList, batchParamList = [], [], [] + batchPlayerIDList, batchAddItemList, batchParamList, batchDetailList = [], [], [], [] ownerFamilyPlayerOrderAwardDict = IpyGameDataPY.GetFuncEvalCfg("FairyGrabBoss", 1, {}) curNPCPlayerOrderAwardDict = ownerFamilyPlayerOrderAwardDict.get(bossID, {}) maxOrder = max(curNPCPlayerOrderAwardDict) if curNPCPlayerOrderAwardDict else 0 @@ -281,12 +290,13 @@ batchPlayerIDList.append([hurtPlayer.objID]) batchAddItemList.append(awardItemList) batchParamList.append([bossID, curOrder]) + batchDetailList.append({"BossID":bossID, "Order":curOrder}) orderPlayerNameList.append(hurtPlayer.name) GameWorld.Log(" 归属仙盟第%s名额外奖励: %s" % (curOrder, awardItemList)) if curOrder >= maxOrder: break if batchPlayerIDList: - PlayerControl.SendMailBatch("FairyGrabBoss2", batchPlayerIDList, batchAddItemList, batchParamList) + PlayerControl.SendMailBatch("FairyGrabBoss2", batchPlayerIDList, batchAddItemList, batchParamList, batchDetail=batchDetailList) orderPlayerName = ShareDefine.Def_Space.join(orderPlayerNameList) PlayerControl.WorldNotify(0, "FairyGrabBossRank", [orderPlayerName, bossID]) @@ -305,7 +315,7 @@ continue joinAwardPlayerIDList += familyPlayerIDList if joinAwardPlayerIDList: - PlayerControl.SendMailByKey("FairyGrabBoss1", joinAwardPlayerIDList, curNPCJoinFamilyAwardList, [bossID, joinAwardNeedHurtHPPer]) + PlayerControl.SendMailByKey("FairyGrabBoss1", joinAwardPlayerIDList, curNPCJoinFamilyAwardList, [bossID, joinAwardNeedHurtHPPer], detail={"BossID":bossID}) # 同步最终结果给所有参与过的玩家 hurtPack = __GetFamilyOwnerBossHurtPack(hurtMgr, key, objID, bossID, 0) @@ -412,7 +422,7 @@ for clearHurtFamilyID in clearHurtFamilyIDList: npcFamilyNowHurtDict.pop(clearHurtFamilyID, 0) - npcFamilyPlayerIDDict.pop(clearHurtFamilyID, 0) + #npcFamilyPlayerIDDict.pop(clearHurtFamilyID, 0) GameWorld.Log("清除仙盟伤血: lineID=%s,objID=%s,bossID=%s" % (lineID, objID, bossID)) # 排序 @@ -511,8 +521,8 @@ hurtMgr = GetFamilyHurtMgr() # 同步对骑宠争夺boss有伤血的玩家ID到GameServer - familyHurtPlayerIDListDict = hurtMgr.familyPlayerIDDict.get(key, {}) - if IsHorsePetRobBoss(bossID) and familyHurtPlayerIDListDict: + if IsHorsePetRobBoss(bossID): + familyHurtPlayerIDListDict = hurtMgr.familyPlayerIDDict.get(key, {}) syncMsg = str([bossID, familyHurtPlayerIDListDict]) GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "HorsePetRobBossHurtPlayer", syncMsg, len(syncMsg)) @@ -577,4 +587,58 @@ return hurtPack +def OnFamilyKillHorsePetRobBossCntChange(tick): + ## 仙盟击杀骑宠boss个数变更 + + playerManager = GameWorld.GetPlayerManager() + for i in xrange(playerManager.OnlineCount()): + curPlayer = playerManager.OnlineAt(i) + if curPlayer.IsEmpty(): + continue + __DoCheckHorsePetRobBossKillCntBuff(curPlayer, tick) + + return + +def __DoCheckHorsePetRobBossKillCntBuff(curPlayer, tick): + familyID = curPlayer.GetFamilyID() + if not familyID: + return + + if PlayerTJG.GetIsTJG(curPlayer): + return + + killCount = PyGameData.g_familyKillHorsePetRobBossCntDict.get(familyID, 0) + skillTypeID = ChConfig.Def_SkillID_HorsePetRobBossKillCntBuff + + skillInfo = SkillCommon.FindBuffByID(curPlayer, skillTypeID) + findBuff, buffManager, buffType, findSkill = skillInfo + if not findSkill: + return + killLV = min(killCount, findSkill.GetSkillMaxLV()) + + if findBuff: + buffSkill = findBuff.GetSkill() + if not buffSkill: + return + curBuffLV = buffSkill.GetSkillLV() + if curBuffLV == killLV: + #GameWorld.DebugLog("骑宠怨念buff等级不变: familyID=%s,killLV=%s,curBuffLV=%s" % (familyID, killLV, curBuffLV), curPlayer.GetPlayerID()) + return + + elif not killLV: + #GameWorld.DebugLog("无骑宠怨念buff: familyID=%s,killLV=%s" % (familyID, killLV), curPlayer.GetPlayerID()) + return + + if not killLV: + #GameWorld.DebugLog("删除骑宠怨念buff: familyID=%s,killLV=%s" % (familyID, killLV), curPlayer.GetPlayerID()) + BuffSkill.DelBuffBySkillID(curPlayer, skillTypeID, tick) + else: + #GameWorld.DebugLog("变更骑宠怨念buff等级: familyID=%s,killLV=%s" % (familyID, killLV), curPlayer.GetPlayerID()) + curSkill = GameWorld.GetGameData().FindSkillByType(skillTypeID, killLV) + BuffSkill.AddBuffNoRefreshState(curPlayer, buffType, curSkill, tick, [], curPlayer) + + return + + + -- Gitblit v1.8.0