ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -44,6 +44,7 @@
import IpyGameDataPY
import PyGameData
import OpenServerActivity
import PlayerActLunhuidian
import PlayerActivity
import ChNetSendPack
import PlayerState
@@ -957,7 +958,7 @@
def OnPlayerLogin(curPlayer):
    DoGMForbidenTalkOnLogin(curPlayer)
    #DoGMForbidenTalkOnLogin(curPlayer)
    curPlayer.SetDict(ChConfig.Def_PDict_DayOnlineCalcTime, int(time.time()))
    return
@@ -1112,7 +1113,7 @@
    playerControl.RefreshAllState()
            
    #玩家下线更新排行榜
    PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer) #排行榜已实时更新,故下线不再同步
    #PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer) #排行榜已实时更新,故下线不再同步
    
    #玩家下线通知gameserver记录缓存(放在下线更新排行榜之后,方便Gameserver判断是否需要存入数据库中)
    PlayerViewCache.OnPlayerLogout(curPlayer)
@@ -2675,7 +2676,8 @@
    elif type_Price == IPY_GameWorld.TYPE_Price_Silver_Paper:
        __PayMoneyAfterBySilverPaper(curPlayer, price)
        
    if type_Price == ShareDefine.TYPE_Price_Xiantao:
    # 仅算使用技能的
    if type_Price == ShareDefine.TYPE_Price_Xiantao and costType == "UseSkill":
        # 累加未结算战锤 - 经验
        unXiantaoCntExp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnXiantaoCntExp)
        NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnXiantaoCntExp, unXiantaoCntExp + price)
@@ -2700,6 +2702,11 @@
                
        TurnAttack.GetMainFightMgr(curPlayer).useZhanchui += price
        
    # 除GM扣除的以外
    if costType != ChConfig.Def_Cost_GM:
        #轮回殿
        PlayerActLunhuidian.AddLunhuidianValue(curPlayer, PlayerActLunhuidian.AwardType_PayMoney, type_Price, price)
    unitPrice = price if quantity == 1 else int(math.ceil(price * 1.0 / quantity)) # 单价
    #reason_name = "Unknown" if not costType else costType
    reason_name = costType
@@ -3952,12 +3959,6 @@
    totalExpRate = GetPlayerExpRate(curPlayer)
    fightExpRate = curPlayer.GetFightExpRate() # 系统及功能累加
    
    actExpRateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_ExpRate, {})# 多倍经验活动加成
    if actExpRateInfo.get(ShareDefine.ActKey_State):
        actExpIpyData = IpyGameDataPY.GetIpyGameData("ActExpRate", actExpRateInfo.get(ShareDefine.ActKey_CfgID))
        if actExpIpyData and curPlayer.GetLV() >= actExpIpyData.GetLVLimit():
            fightExpRate += actExpIpyData.GetAddExpRate()
    #if curPlayer.GetMapID() not in [ChConfig.Def_FBMapID_FamilyInvade]: #守卫人皇不加组队加成
    #    fightExpRate += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamExpRate) # 组队
    
@@ -4093,20 +4094,21 @@
    GameWorld.DebugLog("SetPlayerAccState %s" % (accState), curPlayer.GetPlayerID())
    return
def DoGMForbidenTalkOnLogin(curPlayer):
    ## 离线时被禁言,此时DB的账号状态值为禁言状态,但是GMOper暂时没有禁言操作命令,故上线时检查设置下离线禁言状态
    ## 目前离线时被禁言的,暂时只处理AccState ExAttr17, GMOper命令暂不处理,所以为永久禁言
    if curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalkDevice):
        GameWorld.Log("上线时角色为被设备禁言状态!", curPlayer.GetPlayerID())
        __SetGMForbidenTalkValue(curPlayer, 2)
        __SetGMForbidenTalkValue(curPlayer, 1)
    elif curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk):
        GameWorld.Log("上线时角色为被禁言状态!", curPlayer.GetPlayerID())
        __SetGMForbidenTalkValue(curPlayer, 1)
    else:
        SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0)
    return
#GM命令支持离线玩家上线后处理,且 PlayerGMOper 也有上线触发逻辑处理,故暂屏蔽
#def DoGMForbidenTalkOnLogin(curPlayer):
#    ## 离线时被禁言,此时DB的账号状态值为禁言状态,但是GMOper暂时没有禁言操作命令,故上线时检查设置下离线禁言状态
#    ## 目前离线时被禁言的,暂时只处理AccState ExAttr17, GMOper命令暂不处理,所以为永久禁言
#
#    if curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalkDevice):
#        GameWorld.Log("上线时角色为被设备禁言状态!", curPlayer.GetPlayerID())
#        __SetGMForbidenTalkValue(curPlayer, 2)
#        __SetGMForbidenTalkValue(curPlayer, 1)
#    elif curPlayer.GetAccState() & pow(2, ChConfig.Def_PysForbidTalk):
#        GameWorld.Log("上线时角色为被禁言状态!", curPlayer.GetPlayerID())
#        __SetGMForbidenTalkValue(curPlayer, 1)
#    else:
#        SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0)
#    return
def IsMainLevelPass(curPlayer, lvID):
    ## 判断玩家是否过关某个主线关卡ID
@@ -4148,8 +4150,7 @@
        PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel)
        PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_MainLevel, lvID)
        PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_OSAMainLevel, lvID)
        if OpenServerActivity.GetOSAState(curPlayer, ShareDefine.Def_BT_OSA_MainLevel) == 1:
            PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_OSA_MainLevel, lvID)
        OpenServerActivity.UpdOSA_MainLevelBillboard(curPlayer, lvID)
        DataRecordPack.DR_MainLevelPass(curPlayer, lvID)
    return value
def GetMainLevelPassInfo(curPlayer):
@@ -4531,17 +4532,6 @@
    NetPackCommon.SendFakePack(curPlayer, clientPack)
    return
## 魅力等级
def GetCharmLV(curPlayer): return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CharmLV)
def SetCharmLV(curPlayer, charmLV):
    NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CharmLV, charmLV)
    SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_CharmLV, charmLV)
    return
def GetTotalLingGenPoint(curPlayer):
    # 总灵根点数(金木水火土+自由点数)
    return 0
# 灵根 - 金木水火土
def GetMetal(curPlayer): return 0
def GetWood(curPlayer): return 0
@@ -4555,9 +4545,6 @@
def GetReduceSkillCDPer(curPlayer): return 0
def SetReduceSkillCDPer(curPlayer, reducePer): return
# 血瓶恢复效果
def GetHPCureEnhance(curPlayer): return 0
# 仙盟职位,使用 GetReceivedSalary,因为FamilyMemberLV没有入库
def GetFamilyMemberLV(curPlayer): return curPlayer.GetReceivedSalary()
def SetFamilyMemberLV(curPlayer, fmLV):
@@ -4565,35 +4552,6 @@
    curPlayer.SetReceivedSalary(fmLV)
    curPlayer.SetFamilyMemberLV(fmLV) # 也同步设置该值,防止有些地方直接调用 curPlayer.GetFamilyMemberLV()
    return
#---当前防护值,需存DB----
def GetProDef(curPlayer): return 0
def SetProDef(curPlayer, value): return
#---最大防护值----
def GetMaxProDef(curPlayer): return 0
def SetMaxProDef(curPlayer, value): return
# 每X秒自动消失一个印记, 毫秒记录
def GetLostYinjiTime(curPlayer): return 0
def SetLostYinjiTime(curPlayer, value): return
# 当前印记数
def GetYinjiCnt(curPlayer): return 0
def SetYinjiCnt(curPlayer, value): return
# 减少指定技能组CD XX%
def GetTheFBSkillsCD(curPlayer): return 0
def SetTheFBSkillsCD(curPlayer, value): return
# 灼烧固定伤害
def GetBurnValue(curPlayer): return 0
def SetBurnValue(curPlayer, value): return
# 延长灼烧时间百分比
def GetBurnTimePer(curPlayer): return 0
def SetBurnTimePer(curPlayer, value): return
# 减移动速度百分比
def GetSubSpeedPer(curPlayer): return 0
def SetSubSpeedPer(curPlayer, value): return
#-------------------------------------------------------------------------------