hxp
2025-10-17 22bb99e929439653669b8b2e14325dcc865c7fe3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -27,22 +27,12 @@
import IPY_GameWorld
import PlayerControl
import ItemControler
import PlayerMagicWeapon
import PlayerFamilyRedPacket
import PlayerGatherSoul
import IpyGameDataPY
import PyGameData
import EventReport
import datetime
import time
import math
import ChEquip
import PlayerRune
import Operate_EquipStone
import Operate_EquipWash
import PlayerFeastRedPacket
import PlayerDogz
import DataRecordPack
@@ -125,7 +115,6 @@
        self.attrDict = {} # 完成成就获得的属性 {attrid:attrvalue}
        self.hasAward = True #是否有奖励
        self.redPacketID = 0 # 红包ID
        self.magicWeaponExp = {} # 法宝升级经验{id:exp}
        return
@@ -166,11 +155,7 @@
            succData.exp = successIpyData.GetExp()
            succData.attrDict = successIpyData.GetAwardAttr()
            succData.redPacketID = successIpyData.GetRedPacketID()
            magicWeaponID = successIpyData.GetMagicWeaponID()
            magicWeaponExp = successIpyData.GetMagicWeaponExp()
            if magicWeaponID and magicWeaponExp:
                succData.magicWeaponExp[magicWeaponID] = magicWeaponExp
            succData.hasAward = bool(succData.awardItemDict or succData.moneyDict or succData.exp or succData.attrDict or succData.redPacketID or succData.magicWeaponExp \
            succData.hasAward = bool(succData.awardItemDict or succData.moneyDict or succData.exp or succData.attrDict or succData.redPacketID \
                                     or succData.awardItemDict2)
            successDataObjDict[succData.succID]=succData
            if tuple(succData.condition) not in conditionDict:
@@ -397,49 +382,6 @@
        SetSuccFinishValue(curPlayer, succType, condition, 0)
    return
def DoEquipSuccessLogic(curPlayer, classLV):
    #玩家当前可装备的装备类型
    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'ClassLV':classLV}, True)
    if not ipyDataList:
        return
    placeCountDict, colorCountDict, suitCountDict = {}, {}, {}
    playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
    for ipyData in ipyDataList:
        equipIndex = ipyData.GetGridIndex()
        curEquip = playerEquip.GetAt(equipIndex)
        if curEquip.IsEmpty():
            continue
        itemPlace = curEquip.GetEquipPlace()
        # 套装、颜色 成就 统计基础部位
        if itemPlace in ChConfig.EquipPlace_Base:
            itemColor = curEquip.GetItemColor()
            colorConditionKey = (classLV, itemColor)
            colorCountDict[colorConditionKey] = colorCountDict.get(colorConditionKey, 0) + 1
            # 统计套装数
            if curEquip.GetSuiteID():
                suitConditionKey = (classLV, )
                suitCountDict[suitConditionKey] = suitCountDict.get(suitConditionKey, 0) + 1
        # 部位 成就 统计特殊部位
        elif itemPlace in ChConfig.EquipPlace_Special:
            placeConditionKey = (classLV, itemPlace)
            placeCountDict[placeConditionKey] = placeCountDict.get(placeConditionKey, 0) + 1
    # 更新成就
    #GameWorld.DebugLog("装备阶部位成就数据: classLV=%s,placeCountDict=%s" % (classLV, placeCountDict))
    UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipPlace, placeCountDict)
    #GameWorld.DebugLog("装备阶颜色成就数据: classLV=%s,colorCountDict=%s" % (classLV, colorCountDict))
    UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipColorItem, colorCountDict)
    #GameWorld.DebugLog("装备阶套装成就数据: classLV=%s,suitCountDict=%s" % (classLV, suitCountDict))
    UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipSuit, suitCountDict)
    return
def UpdateSuccessProgressByConditions(curPlayer, successType, conditionCountDict):
    if successType not in ShareDefine.SuccessTypeList:
        return
@@ -513,9 +455,9 @@
def UptateSuccessProgress(curPlayer, successType, newCnt, condition=[]):
    if successType not in ShareDefine.SuccessTypeList:
        return
    if successType in ShareDefine.FeastRedPackSuccessTypeList:
        if not PlayerFeastRedPacket.GetFeastRedPacketState():
            return
    #if successType in ShareDefine.FeastRedPackSuccessTypeList:
    #    if not PlayerFeastRedPacket.GetFeastRedPacketState():
    #        return
    succInfoList = GetSuccDataMng().GetSuccDataByType(successType)
    if not succInfoList:
        GameWorld.DebugLog("    找不到成就数据successType=%s" % successType)
@@ -538,11 +480,11 @@
    succID = succDataObj.succID
    cond = succDataObj.condition
    
    if successType in ShareDefine.FeastRedPackSuccessTypeList:
        todayFeastSuccIDList = PlayerFeastRedPacket.GetTodayFeastSuccIDList()
        if not todayFeastSuccIDList or succID not in todayFeastSuccIDList:
            #GameWorld.DebugLog("    非今日节日红包成就,不增加进度! succID=%s,todayFeastSuccIDList=%s" % (succID, todayFeastSuccIDList))
            return
    #if successType in ShareDefine.FeastRedPackSuccessTypeList:
    #    todayFeastSuccIDList = PlayerFeastRedPacket.GetTodayFeastSuccIDList()
    #    if not todayFeastSuccIDList or succID not in todayFeastSuccIDList:
    #        #GameWorld.DebugLog("    非今日节日红包成就,不增加进度! succID=%s,todayFeastSuccIDList=%s" % (succID, todayFeastSuccIDList))
    #        return
    isUnDownCheck = successType in ShareDefine.UnDownCheckSuccessTypeList
    isContain = successType in ShareDefine.ContainSuccessTypeList
    # 已完成的不再检查
@@ -623,10 +565,10 @@
    if GameWorld.IsCrossServer():
        return
    
    if successType in ShareDefine.FeastRedPackSuccessTypeList:
        if not PlayerFeastRedPacket.GetFeastRedPacketState():
            #GameWorld.DebugLog("非节日红包活动时间,不增加成就!successType=%s" % successType)
            return
    #if successType in ShareDefine.FeastRedPackSuccessTypeList:
    #    if not PlayerFeastRedPacket.GetFeastRedPacketState():
    #        #GameWorld.DebugLog("非节日红包活动时间,不增加成就!successType=%s" % successType)
    #        return
        
    playerID = curPlayer.GetID()
    if delayCalc and successType not in ShareDefine.NeedResetSuccessTypeList:
@@ -742,9 +684,7 @@
            
            if isNeedSys:
                PlayerControl.WorldNotify(0, 'AncientBattlefield_1', [playerName, succID])
            for mwID in succDataObj.magicWeaponExp.keys():
                EventReport.WriteEvent_MWSuccess(curPlayer, mwID, succID, ChConfig.CME_Log_Start)
            GameWorld.DebugLog("    完成成就succID=%s, type=%s,time=%s" 
                               % (succID, successType, curTime))
            
@@ -990,13 +930,8 @@
    if succData.attrDict:
        RefreshSuccessAttr(curPlayer)
    #发红包
    if succData.redPacketID:
        PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, succData.redPacketID, PlayerFamilyRedPacket.State_NoGot, succID)
    #法宝经验
    if succData.magicWeaponExp:
        for mwID, addExp in succData.magicWeaponExp.items():
            PlayerMagicWeapon.AddMagicWeaponUpExp(curPlayer, mwID, addExp)
            EventReport.WriteEvent_MWSuccess(curPlayer, mwID, succID, ChConfig.CME_Log_End, 1)
    #if succData.redPacketID:
    #    PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, succData.redPacketID, PlayerFamilyRedPacket.State_NoGot, succID)
    GameWorld.DebugLog("    OK! awardItemDict=%s moneyDict=%s" % (itemDict, succData.moneyDict))
    ItemControler.NotifyGiveAwardInfo(curPlayer, giveItemList, "SuccessAward", exp=succData.exp, moneyInfo=succData.moneyDict)
    return itemDict
@@ -1042,13 +977,6 @@
def AddEnterFBSuccess(curPlayer, mapID, addCount):
    #进入副本成就相关
    if mapID == ChConfig.Def_FBMapID_BZZD:
        #仙界秘境
        DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_BZZD, addCount)
    elif mapID == ChConfig.Def_FBMapID_IceLode:
        #冰晶矿脉
        DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_IceLode, addCount)
    return
def GetSuccessScoreAward(curPlayer, awardIndex):