10178 【越南】【香港】【主干】挂机奖励(增加直接获得挂机收益物品效果ID266; 修改境界加挂机时长配置key为字符串;)
5个文件已修改
1个文件已添加
78 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -506,6 +506,7 @@
Def_Effect_VIPLVCard = 256    #VIP等级直升卡 直接升到VIPx级,只加经验,享受VIP特权    效果值A: vip等级    效果值B: 领取是否默认直接使用
Def_Effect_AddArenaBattleCount = 257    #增加竞技场挑战次数,A值为增加次数
Def_Effect_ItemGiveMoney = 264    #通用给货币道具,A值数量,B值货币类型
Def_Effect_GuajiAward = 266    #直接给挂机收益,A值分钟
Def_Effect_GubaoPiece = 270     #古宝碎片效果ID, A值-古宝ID
#----以下未使用或代码依然存在的---
Def_Effect_ItemGiveGongXun = 1920        #使用道具给予功勋
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -721,6 +721,7 @@
                            ChConfig.Def_Effect_AddDienstgrad:"Item_AddDienstgrad", #道具获得称号
                            ChConfig.Def_Effect_ItemAddLV:"Item_AddLV", #升级道具
                            ChConfig.Def_Effect_TJGAddTime:"Item_TJGAddTime", #增加脱机挂时间
                            ChConfig.Def_Effect_GuajiAward:"Item_GuajiAward", #直接给挂机收益
                            ChConfig.Def_Effect_CleanGuilt:"Item_CleanGuilt", # 洗红名
                            ChConfig.Def_Effect_PrizeCoin:"Item_PrizeCoin", # 奖励充值点券
                            ChConfig.Def_Effect_AddVIPExp:"Item_AddVIPExp", # 增加VIP经验
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py
New file
@@ -0,0 +1,27 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package UseItem.Item_GuajiAward
#
# @todo:直接给挂机收益
# @author hxp
# @date 2024-06-21
# @version 1.0
#
# 详细描述: 直接给挂机收益
#
#-------------------------------------------------------------------------------
#"""Version = 2024-06-21 11:00"""
#-------------------------------------------------------------------------------
import PlayerGuaji
import ItemCommon
def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
    awardSeconds = curRoleItem.GetEffectByIndex(0).GetEffectValue(0) * useCnt * 60
    if awardSeconds <= 0:
        return
    PlayerGuaji.GiveGuajiAward(curPlayer, awardSeconds)
    ItemCommon.DelItem(curPlayer, curRoleItem, useCnt, True, "GuajiAward")
    return True, useCnt
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActCollectWords.py
@@ -213,7 +213,7 @@
            
    return dropItemCountDict
def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond):
    ## 获取挂机收益
    
    dropItemCountDict = {}
@@ -237,7 +237,7 @@
            continue
        doSeconds, doCount = guajiAwardSet
        
        if not isQuick:
        if useUnsecond:
            unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CollectWordsGJSeconds % (actNum))
            awardSeconds += unSeconds
            
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActGarbageSorting.py
@@ -197,7 +197,7 @@
    Sync_GarbageTaskInfo(curPlayer, actNum, taskID)
    return giveItemList
def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick):
def OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond):
    ## 获取挂机收益
        
    dropItemCountDict = {}
@@ -214,7 +214,7 @@
        if not actInfo.get(ShareDefine.ActKey_State):
            continue
        
        if not isQuick:
        if useUnsecond:
            unSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GarbageGJSeconds % (actNum))
            awardSeconds += unSeconds
            
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py
@@ -96,7 +96,7 @@
    if awardSeconds <= 0:
        return
    
    addExp, giveMoneyDict, giveItemDict = CalcGuajiAward(curPlayer, awardSeconds, False)
    addExp, giveMoneyDict, giveItemDict = CalcGuajiAward(curPlayer, awardSeconds, True)
    
    updAwardSeconds = curAwardSeconds + awardSeconds
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiAwardSeconds, updAwardSeconds)
@@ -153,11 +153,11 @@
    curRealmLV = curPlayer.GetOfficialRank()
    realmAddHours = 0
    realmAddHoursDict = IpyGameDataPY.GetFuncEvalCfg("GuajiTime", 3, {})
    realmLVList = realmAddHoursDict.keys()
    realmLVList = [int(k) for k in realmAddHoursDict.keys()]
    realmLVList.sort()
    for realmLV in realmLVList:
        if curRealmLV >= realmLV:
            realmAddHours = realmAddHoursDict[realmLV]
            realmAddHours = realmAddHoursDict[str(realmLV)]
        else:
            break
    
@@ -191,7 +191,7 @@
        
    return awardSeconds, exp, moneyDict, itemDict
def CalcGuajiAward(curPlayer, awardSeconds, isQuick):
def CalcGuajiAward(curPlayer, awardSeconds, useUnsecond):
    ## 计算挂机收益,只计算收益,不做结算,结算逻辑由外层决定
    
    playerID = curPlayer.GetPlayerID()
@@ -199,8 +199,8 @@
    lvIpyData = PlayerControl.GetPlayerLVIpyData(reLV)
    reExp = lvIpyData.GetReExp() if lvIpyData else 0
    worldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
    GameWorld.DebugLog("计算挂机收益: awardSeconds=%s,isQuick=%s,reLV=%s,reExp=%s,worldLV=%s"
                       % (awardSeconds, isQuick, reLV, reExp, worldLV), playerID)
    GameWorld.DebugLog("计算挂机收益: awardSeconds=%s,useUnsecond=%s,reLV=%s,reExp=%s,worldLV=%s"
                       % (awardSeconds, useUnsecond, reLV, reExp, worldLV), playerID)
    
    # 经验
    expRate = GetGuajiExpRate(curPlayer)
@@ -222,7 +222,7 @@
    perMoneyTimeFromulaDict = IpyGameDataPY.GetFuncEvalCfg("GuajiAward", 3, {}) # 每x秒获得1个货币公式 {货币类型:"x秒公式", ...}
    for moneyType, formula in perMoneyTimeFromulaDict.items():
        moneyAwardSeconds = awardSeconds
        if not isQuick:
        if useUnsecond:
            moneyAwardSeconds += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiMoneyUnSeconds % moneyType)
        oneMoneyNeedSeconds = int(eval(FormulaControl.GetCompileFormula("GuajiMoney_%s" % moneyType, formula)))
        moneyValue = moneyAwardSeconds / oneMoneyNeedSeconds
@@ -230,7 +230,7 @@
        GameWorld.DebugLog("    每X秒货币: moneyType=%s,oneMoneyNeedSeconds=%s,moneyValue=%s,moneyAwardSeconds=%s" 
                           % (moneyType, oneMoneyNeedSeconds, moneyValue, moneyAwardSeconds), playerID)
        
        if not isQuick:
        if useUnsecond:
            unSeconds = moneyAwardSeconds % oneMoneyNeedSeconds
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiMoneyUnSeconds % moneyType, unSeconds)
            GameWorld.DebugLog("        moneyType=%s,unSeconds=%s" % (moneyType, unSeconds), playerID)
@@ -239,13 +239,13 @@
    giveItemSecondsSet = IpyGameDataPY.GetFuncCfg("GuajiAward", 4) # 每x秒获得一次随机物品机会
    lvItemRateDict = IpyGameDataPY.GetFuncEvalCfg("GuajiAward", 5, {})
    itemAwardSeconds = awardSeconds
    if not isQuick:
    if useUnsecond:
        itemAwardSeconds += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiItemUnSeconds)
            
    itemAwardTimes = itemAwardSeconds / giveItemSecondsSet # 给物品次数
    GameWorld.DebugLog("    给物品次数: %s, itemAwardSeconds=%s,giveItemSecondsSet=%s" % (itemAwardTimes, itemAwardSeconds, giveItemSecondsSet), playerID)
    
    if not isQuick:
    if useUnsecond:
        unSeconds = itemAwardSeconds % giveItemSecondsSet
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemUnSeconds, unSeconds)
        GameWorld.DebugLog("    给物品未处理秒数=%s" % unSeconds, playerID)
@@ -298,12 +298,12 @@
            itemDict[itemID] = itemDict.get(itemID, 0) + itemCount
            
    # 集字掉落
    dropWordsCountDict = PlayerActCollectWords.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick)
    dropWordsCountDict = PlayerActCollectWords.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond)
    for itemID, dropCount in dropWordsCountDict.items():
        itemDict[itemID] = itemDict.get(itemID, 0) + dropCount
        
    # 垃圾回收
    giveGarbageItemList = PlayerActGarbageSorting.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, isQuick)
    giveGarbageItemList = PlayerActGarbageSorting.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond)
    for itemID, dropCount in giveGarbageItemList.items():
        itemDict[itemID] = itemDict.get(itemID, 0) + dropCount
        
@@ -347,7 +347,7 @@
                return
            
        awardSeconds = IpyGameDataPY.GetFuncCfg("GuajiQuick", 1) * 3600
        exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, True)
        exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, False)
        
        quickCountToday += 1
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiQuickCount, quickCountToday)
@@ -371,7 +371,20 @@
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemCount % num, 0)
        Sync_GuajiAward(curPlayer)
        
    GameWorld.DebugLog("    挂机收益: awardSeconds=%s,exp=%s,moneyDict=%s,itemDict=%s" % (awardSeconds, exp, moneyDict, itemDict), playerID)
    __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict)
    return
def GiveGuajiAward(curPlayer, awardSeconds):
    ## 直接给挂机收益
    GameWorld.DebugLog("直接给挂机收益: awardSeconds=%s" % awardSeconds, curPlayer.GetPlayerID())
    exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, False)
    __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict)
    return
def __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict):
    ## 实际给挂机收益,仅做发放收益
    playerID = curPlayer.GetPlayerID()
    GameWorld.DebugLog("给挂机收益: awardSeconds=%s,exp=%s,moneyDict=%s,itemDict=%s" % (awardSeconds, exp, moneyDict, itemDict), playerID)
    
    playerControl = PlayerControl.PlayerControl(curPlayer)
    playerControl.AddExp(exp, ShareDefine.Def_ViewExpType_Guaji)