ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py
@@ -89,6 +89,7 @@
                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsExchangeCount % (actNum, exchangeNum), 0)
                
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsID % actNum, actID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsGJSeconds % actNum, 0)
    GameWorld.DebugLog("集字活动重置! actNum=%s,cfgID=%s,templateID=%s,actID=%s" % (actNum, cfgID, templateID, actID), playerID)
    
    if state:
@@ -212,6 +213,73 @@
            
    return dropItemCountDict
def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
    ## 获取挂机收益
    dropItemCountDict = {}
    for actInfo in PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_CollectWords, {}).values():
        actNum = actInfo.get(ShareDefine.ActKey_ActNum, 0)
        if not actInfo.get(ShareDefine.ActKey_State):
            continue
        cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
        ipyData = IpyGameDataPY.GetIpyGameData("ActCollectWords", cfgID)
        if not ipyData:
            continue
        dropRateList = ipyData.GetDropItemRateList()
        if not dropRateList:
            continue
        guajiAwardSet = ipyData.GetGuajiAwardSet() # x秒x次
        if not guajiAwardSet:
            continue
        doSeconds, doCount = guajiAwardSet
        if not isQuick:
            unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CollectWordsGJSeconds % (actNum))
            awardSeconds += unSeconds
            canDoCount = awardSeconds / doSeconds
            killCount = canDoCount * doCount
            updUnSeconds = awardSeconds % doSeconds
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollectWordsGJSeconds % (actNum), updUnSeconds)
            GameWorld.DebugLog("    挂机集字活动: actNum=%s,awardSeconds=%s,canDoCount=%s,killCount=%s,unSeconds=%s,updUnSeconds=%s"
                               % (actNum, awardSeconds, canDoCount, killCount, unSeconds, updUnSeconds))
        else:
            canDoCount = awardSeconds / doSeconds
            killCount = canDoCount * doCount
            GameWorld.DebugLog("    挂机集字活动: actNum=%s,awardSeconds=%s,canDoCount=%s,killCount=%s"
                               % (actNum, awardSeconds, canDoCount, killCount))
        if killCount <= 0:
            continue
        preRate = 0
        maxRate = dropRateList[-1][0]
        for rateInfo in dropRateList:
            rate, dropItemID = rateInfo
            curRate = rate - preRate
            if not curRate:
                break
            preRate = rate
            if not dropItemID:
                continue
            totalRate = curRate * killCount # 总概率
            dropCount = totalRate / maxRate # 可掉落数
            rateEx = totalRate % maxRate # 剩余概率
            if GameWorld.CanHappen(rateEx, maxRate):
                dropCount += 1
            if not dropCount:
                continue
            dropItemCountDict[dropItemID] = dropItemCountDict.get(dropItemID, 0) + dropCount
            GameWorld.DebugLog("    挂机集字活动掉字: actNum=%s,dropItemID=%s,dropCount=%s,curRate=%s,totalRate=%s"
                               % (actNum, dropItemID, dropCount, curRate, totalRate))
    return dropItemCountDict
#// AA 09 集字活动兑换 #tagCMActCollectWordsExchange
#
#struct    tagCMActCollectWordsExchange