hxp
2025-08-28 8ad500e682b83c0b78c3f527c66fad529c0db5fd
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -19,7 +19,6 @@
import ChConfig
import BuffSkill
import PlayerEventCounter
import PlayerTeam
import PlayerHorse
import NPCCommon
import SkillCommon
@@ -34,11 +33,8 @@
import PetControl
import OperControlManager
import ShareDefine
import PlayerAutoCheckOnline
import PlayerGameWallow
import NetPackCommon
import ChPyNetSendPack
import Operate_PlayerBuyZhenQi
import DataRecordPack
import PlayerBillboard
import UpdatePlayerName
@@ -51,32 +47,18 @@
import PlayerFamily
import PlayerLoginDayAward
import PlayerGodWeapon
import PlayerWorldAverageLv
import PlayerGoldInvest
import PlayerActivity
import FBCommon
import BossHurtMng
import PlayerWishingWell
import PlayerAttrFruit
import PlayerSuccess
import PlayerDienstgrad
import PlayerFreeGoods
import PlayerRecover
import GameLogic_IceLode
import GameLogic_SkyTower
import PlayerEquipDecompose
import PlayerGreatMaster
import PlayerGatherSoul
import PlayerGatherTheSoul
import PlayerFairyDomain
import PlayerCrossRealmPK
import PlayerCrossChampionship
import PlayerCrossBattlefield
import GameFuncComm
import PlayerMagicWeapon
import GameLogic_FamilyBoss
import GameLogic_TrialTower
import GameLogic_FamilyWar
import PlayerBossReborn
import PlayerWeekParty
import PlayerFeastWeekParty
@@ -85,16 +67,12 @@
import PlayerFeastWish
import PlayerActLogin
import PlayerTreasure
import GameLogic_GodArea
import PlayerRune
import PlayerFamilyRedPacket
import IpyGameDataPY
import EventReport
import OpenServerCampaign
import PlayerVip
import PlayerRefineStove
import PassiveBuffEffMng
import GameLogic_XMZZ
import PlayerFlashSale
import PlayerFlashGiftbag
import PlayerDailyGiftbag
@@ -117,8 +95,6 @@
import PlayerActHorsePetFeast
import PlayerActBossTrial
import PlayerSpringSale
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import GY_Query_BossFirstKill
import PlayerCrossYaomoBoss
import PlayerFeastRedPacket
@@ -132,9 +108,6 @@
import PlayerTongTianLing
import CrossRealmPlayer
import ChNetSendPack
import FamilyRobBoss
import FBHelpBattle
import PlayerAssist
import PlayerArena
import PyGameData
import PlayerCoin
@@ -200,6 +173,7 @@
#@return 返回值无意义
#@remarks 玩家登陆游戏初始化
def InitLoginPlayer(curPlayer, tick):
    PlayerOnline.OnPlayerLogin(curPlayer)
    #初始化玩家的时钟个数
    if curPlayer.GetTickTypeCount() == 0:
        curPlayer.SetTickTypeCount(ChConfig.TYPE_Player_Tick_Count)
@@ -485,7 +459,7 @@
    InitPlayerPack(curPlayer)
    
    if GameWorld.IsCrossServer():
        SkillCommon.PlayerLoginMergeServerSkillLogic(curPlayer, tick)
        #SkillCommon.PlayerLoginMergeServerSkillLogic(curPlayer, tick)
        # 重置所有技能CD
        
        DoPlayerLoginInMap(curPlayer, tick)
@@ -493,9 +467,7 @@
        DataRecordPack.DR_PlayerLogin(curPlayer)
        EventReport.WriteEvent_login(curPlayer)
        #---玩家上线, 宠物逻辑处理---
        PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
        PlayerTeam.OnPlayerLoginCrossServer(curPlayer)
        #PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
        return
    
    leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer)
@@ -508,8 +480,9 @@
        # 离线过久恢复为非跨服状态
        if PlayerControl.GetCrossMapID(curPlayer):
            PlayerControl.SetCrossMapID(curPlayer, 0)
    PlayerOnline.OnPlayerLogin(curPlayer)
    __FirstLoginOnEnter(curPlayer)
    TurnAttack.OnPlayerLogin(curPlayer)
    SyncGuideState(curPlayer)
    
@@ -519,21 +492,18 @@
    PlayerControl.UpdPlayerServerGroupID(curPlayer)
    
    #上线学习技能
    SkillCommon.PlayerLoginCheckLearnSkill(curPlayer)
    #SkillCommon.PlayerLoginCheckLearnSkill(curPlayer)
    
    #刷新技能CD
    SkillCommon.PlayerLoginUpdateSkillCD(curPlayer, tick)
    #SkillCommon.PlayerLoginUpdateSkillCD(curPlayer, tick)
    
    #通知玩家技能信息
    __Sync_ClientSkill(curPlayer)
    #__Sync_ClientSkill(curPlayer)
    #清除VIPbuff
    #BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_VIPExp_SkillTypeID, tick)
    
    #通知玩家的buff
    __Sync_ClientBuff(curPlayer)
    #初始化现实时间物品
    InitRealityTimeItem(curPlayer, tick)
    #__Sync_ClientBuff(curPlayer)
    
    #---刷新了玩家属性, 登陆只刷新一次,其他地方不用刷
    DoPlayerLoginInMap(curPlayer, tick)
@@ -546,14 +516,9 @@
    #DataRecordPack.DR_PlayerLogin(curPlayer)
    EventReport.WriteEvent_login(curPlayer)
    
    __FirstLoginOnEnter(curPlayer)
    # 合服首登处理
    __DoMixServerFirstLogin(curPlayer)
    PlayerBillboard.BillboardOnLogin(curPlayer)
    #上线时通知脱机挂时被击杀的离线时间
    __Sync_PlayerOffline(curPlayer, tick)
    
    #玩家扩展信息
    __SyncPlayerInfoEx(curPlayer)
@@ -562,31 +527,11 @@
    GiveDownloadPatchAward(curPlayer)
    
    #PKģʽ
    SyncPKModel(curPlayer)
    #装备相关信息
    ChEquip.OnPlayerEquipLoginLogic(curPlayer)
    #大师
    PlayerGreatMaster.MasterOnLogin(curPlayer)
    #֪ͨVIP
    PlayerVip.DoOnLogin(curPlayer, tick)
    #通知法宝精炼等级
    PlayerRefineStove.DoOnLogin(curPlayer, tick)
    #SyncPKModel(curPlayer)
    
    #---玩家上线, 宠物逻辑处理---
    PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
    PlayerPet.OnPlayerPetLogin(curPlayer)
    #清空玩家万能背包中的任务物品
    ItemControler.ClearPackEventItem(curPlayer, IPY_GameWorld.rptAnyWhere)
    #PlayerLoginNotify(curPlayer, tick)
    #防沉迷计算下线累积时间
    PlayerGameWallow.Calc_Wallow_OfflineTime(curPlayer, tick)
    #PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
    #PlayerPet.OnPlayerPetLogin(curPlayer)
    
    # 通知等级奖励领取记录
    PlayerLVAward.Sync_LVAwardGetRecordInfo(curPlayer)
@@ -595,27 +540,17 @@
    # 首充/天天首充/充值豪礼
    PlayerGoldGift.OnLogin(curPlayer)
    
    #通知购买功能中各购买类型的已购买和可购买次数
    Operate_PlayerBuyZhenQi.DoPlayerLogin(curPlayer)
#
#    #通知功能首次触发情况
    #通知功能首次触发情况
    GameFuncComm.Sync_FuncOpenState(curPlayer)
#
#    #通知客户端签到信息
    #通知客户端签到信息
    PlayerSignDay.SignDayOnLogin(curPlayer)
    
    #通知玩家死亡时间
    PlayerControl.PlayerControl(curPlayer).NotifyPlayerDeadTime(curPlayer)
    #ClearPlayerDeadInfo(curPlayer)
    #充值活动玩家登入处理
    #PlayerGoldAction.DoLogic_PlayerOnLogin(curPlayer)
    # 提示贵宾俱乐部信息
    #PlayerVip.NoteVIPClubInfo(curPlayer)
    #PlayerControl.PlayerControl(curPlayer).NotifyPlayerDeadTime(curPlayer)
    
    #角色改名次数
    UpdatePlayerName.Sync_UpdatePlayerNameCount(curPlayer)
    #UpdatePlayerName.Sync_UpdatePlayerNameCount(curPlayer)
    
    # 坐骑相关通知
    PlayerHorse.PlayerHorseLogin(curPlayer)
@@ -633,13 +568,9 @@
    
    # 开服活动奖励信息
    OpenServerCampaign.OnOpenServerCampaignLogin(curPlayer)
    # 试炼之塔
    GameLogic_TrialTower.OnFBPlayerLogin(curPlayer)
    # 古神禁地
    GameLogic_GodArea.GodAreaOnLogin(curPlayer)
    # 采集NPC次数通知
    NPCCommon.SyncCollNPCTime(curPlayer)
    #NPCCommon.SyncCollNPCTime(curPlayer)
    
    # 每日活跃度
    PlayerActivity.OnLogin(curPlayer)
@@ -647,14 +578,8 @@
    # 副本进入时间
    FBCommon.FBOnLogin(curPlayer)
    
    #世界等级
    PlayerWorldAverageLv.OnLogin(curPlayer)
    # 投资理财
    PlayerGoldInvest.OnLogin(curPlayer)
    #属性果实使用情况
    PlayerAttrFruit.AttrFruitOnLogin(curPlayer)
    
    #成就
    PlayerSuccess.SuccOnLogin(curPlayer)
@@ -682,7 +607,6 @@
    # 跨服PK
    PlayerCrossRealmPK.DoPlayerLogin(curPlayer)
    PlayerCrossChampionship.DoPlayerLogin(curPlayer)
    PlayerCrossBattlefield.DoPlayerLogin(curPlayer)
    
    # 幸运云购
    PlayerLuckyCloudBuy.OnPlayerLogin(curPlayer)
@@ -694,7 +618,7 @@
    PlayerControl.NotifyPlayerAllCurrency(curPlayer)
    PlayerControl.NotifyUseMoneyTotal(curPlayer)
    #通知基础属性
    NotifyPlayerBasePoint(curPlayer)
    #NotifyPlayerBasePoint(curPlayer)
    
    #跨服充值排行
    CrossActCTGBillboard.OnPlayerLogin(curPlayer)
@@ -724,29 +648,19 @@
    PlayerActFamilyCTGAssist.OnPlayerLogin(curPlayer)
    #集字活动
    PlayerActCollectWords.OnPlayerLogin(curPlayer)
    # 世界boss
    BossHurtMng.OnLogin(curPlayer)
    ChItem.Sync_ItemDayUseCnt(curPlayer)
    # 符印登录通知
    PlayerRune.PlayerRuneLogin(curPlayer)
    # 仙盟红包登录通知
    PlayerFamilyRedPacket.OnPlayerLogin(curPlayer)
    PlayerFeastRedPacket.DoPlayerOnLogin(curPlayer)
    # 法宝登录通知
    PlayerMagicWeapon.PlayerMagicWeaponLogin(curPlayer)
    # 商店物品购买次数登录通知
    FunctionNPCCommon.ShopItemOnLogin(curPlayer)
    # 通知设置的被动功法
    #PassiveBuffEffMng.OnLoginGFPassive(curPlayer)
    #仙魔之争
    GameLogic_XMZZ.OnXMZZLogin(curPlayer)
    PlayerOnlinePrize.OnPlayerLogin(curPlayer)
    #装备分解
    PlayerEquipDecompose.PlayerLogin(curPlayer)
    #防沉迷
    PlayerGameWallow.DoLogic_CheckWallow(curPlayer, tick)
    # 协助
    PlayerAssist.OnPlayerLogin(curPlayer)
    #PlayerEquipDecompose.PlayerLogin(curPlayer)
    # 极品白拿
    PlayerFreeGoods.OnLogin(curPlayer)
    # BOSS复活活动
@@ -795,34 +709,21 @@
    PlayerActSingleRecharge.OnPlayerLogin(curPlayer)
    # 转盘活动
    PlayerActTurntable.OnPlayerLogin(curPlayer)
    # 仙界盛典活动
    PlayerFairyCeremony.OnLogin(curPlayer)
    # 新仙界盛典活动
    PlayerNewFairyCeremony.OnLogin(curPlayer)
    # 分支下载奖励记录通知
    SyncPackDownloadAward(curPlayer)
    # 登录触发功能开启(老号处理)
    GameFuncComm.DoFuncOpenLogic(curPlayer)
    # 神兽
    PlayerDogz.OnPlayerLogin(curPlayer)
    # 骑宠
    FamilyRobBoss.OnPlayerLogin(curPlayer)
    # 许愿池
    PlayerWishingWell.OnLogin(curPlayer)
    #幸运鉴宝
    PlayerLuckyTreasure.OnLogin(curPlayer)
    # 小助手
    SyncLittleHelper(curPlayer)
    # 副本助战
    FBHelpBattle.DoPlayerLogin(curPlayer)
    # 聚魂
    PlayerGatherSoul.PlayerLogin(curPlayer)
    PlayerGatherTheSoul.OnPlayerLogin(curPlayer)
    #缥缈仙域
    PlayerFairyDomain.OnLogin(curPlayer)
    PlayerFB.OnLogin(curPlayer)
    #技能专精信息
    SkillShell.NotifyElementSkillInfo(curPlayer)
    #SkillShell.NotifyElementSkillInfo(curPlayer)
    #Boss首杀
    GY_Query_BossFirstKill.OnPlayerLogin(curPlayer)
    #通天令
@@ -928,19 +829,19 @@
    
    #---补满血满魔---
    GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer))
    curPlayer.SetMP(curPlayer.GetMaxMP())
    #curPlayer.SetMP(curPlayer.GetMaxMP())
    
    #默认触发一次功能开启
    if curPlayer.GetLV() == 1:
        GameFuncComm.DoFuncOpenLogic(curPlayer)
        
    #初始化组队状态
    autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1)
    autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2)
    PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck))
    #autoJoinReqCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 1)
    #autoInviteCheck = IpyGameDataPY.GetFuncCfg("TeamCheckSet", 2)
    #PlayerControl.SetTeamCheckStateEx(curPlayer, int(not autoJoinReqCheck), int(not autoInviteCheck))
    
    #玩家默认恶名值
    curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue)
    #curPlayer.SetInfamyValue(ChConfig.Def_FirstLogin_InfamyValue)
    
    #curPlayer.SetDict("ThunderLogin", 1)
    #记录第一次登陆
@@ -951,6 +852,8 @@
    for mailTypeKey, mailItemList in mailList:
        PlayerControl.SendMailByKey(mailTypeKey, [curPlayer.GetPlayerID()], mailItemList)
        
    PlayerHero.OnPlayerFirstLogin(curPlayer)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FirstLogin, 1)
    return
@@ -1015,9 +918,6 @@
    # 同步排行榜
    PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer, isAll=True)
    
    # 天星塔全服过关记录
    GameLogic_SkyTower.OnMixFirstLogin(curPlayer)
    # bossƾ֤
    PlayerActBossTrial.OnMixFirstLogin(curPlayer)
    # 仙匣秘境
@@ -1040,51 +940,6 @@
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_DeadTime, 0)
    return
##玩家登陆, 相关活动通知
#@param curPlayer 玩家实例
#@param tick 时间戳
#@return 返回值无意义
#@remarks 玩家登陆, 相关活动通知
def PlayerLoginNotify(curPlayer, tick):
    curTime = GameWorld.GetCurrentTime()
    #读取上线提示表
    notifyByTimeSect = ReadChConfig.GetEvalChConfig('PlayerLoginNotify_TimeSect')     #某时间段内上线提示
    notifyByDict = ReadChConfig.GetEvalChConfig('PlayerLoginNotify_Dict')             #根据字典值给提示
    #在规定时间段内上线给提示
    DoNotifyByTimeSect(curPlayer, curTime, notifyByTimeSect)
    #指定字典值内提示
    DoNotifyByDict(curPlayer, notifyByDict)
    return
#---------------------------------------------------------------------
##在活动规定时间段内上线给提示
#@param curPlayer 玩家索引
#@param curTime 传入时间
#@param notifyInfo 提示信息
#@return 返回值无意义
#@remarks 在活动规定时间段内上线给提示
def DoNotifyByTimeSect(curPlayer, curTime, notifyInfo):
    for curNotify in notifyInfo:
        #有时间段限制,验证时间段
        if not GameWorld.IsAtActTime(curTime, curNotify[0]):
            continue
        PlayerControl.NotifyCode(curPlayer, curNotify[1], curNotify[2])
#---------------------------------------------------------------------
##指定字典值内提示
#@param curPlayer 玩家实例
#@param notifyInfo 提示信息
#@return 返回值无意义
#@remarks 指定字典值内提示
def DoNotifyByDict(curPlayer, notifyInfo):
    gameWorld = GameWorld.GetGameWorld()
    for curNotify in notifyInfo:
        if gameWorld.GetGameWorldDictByKey(curNotify[0]) in curNotify[1]:
            PlayerControl.NotifyCode(curPlayer, curNotify[2], curNotify[3])
#---------------------------------------------------------------------
##通知背包详细信息
#@param curPlayer 玩家实例
@@ -1097,18 +952,6 @@
        rolePack = itemManager.GetPack(packIndex)
        rolePack.Sync_Refresh()
        
        # 刷下装备评分,仓库可以暂不处理,取出装备后登录触发刷新
        for i in xrange(rolePack.GetCount()):
            curItem = rolePack.GetAt(i)
            if curItem.IsEmpty():
                continue
            newScore = ItemCommon.CalcEquipGS(curItem)
            hisScore = ItemCommon.GetEquipGearScore(curItem)
            if hisScore != newScore:
                ItemCommon.SetEquipGearScore(curItem, newScore)
                GameWorld.Log("登录更新装备评分: packType=%s,i=%s,hisScore=%s,newScore=%s,itemID=%s,guid=%s"
                              % (packIndex, i, hisScore, newScore, curItem.GetItemTypeID(), curItem.GetGUID()), curPlayer.GetPlayerID())
    for packIndex in ChConfig.Def_VPackCnt_Dict.keys():
        ItemControler.Sync_VPackItem_Refresh(curPlayer, packIndex)
        
@@ -1139,16 +982,6 @@
#    #itemManager.GetPack(IPY_GameWorld.rptBreakPrepare).Sync_Refresh()
#    #itemManager.GetPack(IPY_GameWorld.rptBreakItem).Sync_Refresh()
#===============================================================================
    return
#---------------------------------------------------------------------
##初始化现实时间物品
#@param curPlayer 玩家实例
#@param tick 时间戳
#@return 返回值无意义
#@remarks 初始化现实时间物品
def InitRealityTimeItem(curPlayer, tick):
    PlayerState.ProcessTimeEquip(curPlayer, tick)
    return
#---------------------------------------------------------------------
@@ -1200,54 +1033,6 @@
    return
#---------------------------------------------------------------------
##上线时通知离线时间(离线挂机功能)
# @param curPlayer 玩家实例
# @param tick 时间戳
# @return 返回值无意义
# @remarks 上线时通知离线时间(离线挂机功能)
def __Sync_PlayerOffline(curPlayer, tick):
    #---等级限制---
    if GameWorld.IsCrossServer():
        return
#===============================================================================
#    #---等级限制---
#    lvLimit = ReadChConfig.GetEvalChConfig('OfflineSys_LVLimit')
#    if curPlayer.GetLV() < lvLimit:
#        return
#
#    if GameWorld.IsCrossServer():
#        return
#
#    #当前离线时间(分)
#    curOfflineMinutes = min(PlayerControl.GetPlayerLeaveServerMinute(curPlayer),
#                            ChConfig.Def_UpperLimit_DWord)
#
#    #防止服务器时间修改到过去得到负值
#    if curOfflineMinutes < 0:
#        GameWorld.ErrLog("Login Time Error, outTime: %s - loginTime :%s" %
#                         (curPlayer.GetLogoffTime(), GameWorld.GetCurrentDataTimeStr()),
#                         curPlayer.GetPlayerID())
#        curOfflineMinutes = 0
#
#    #时间为分钟
#    minTimeLimit, maxTimeLimit = ReadChConfig.GetEvalChConfig("OfflineSys_AllTimeUpperLimit")
#    if curOfflineMinutes >= minTimeLimit:
#        #总离线时间(分)
#        allOfflineMinutes = min(curPlayer.GetOfflineMinutes() + curOfflineMinutes, maxTimeLimit)
#        #记录离线总时间
#        curPlayer.SetOfflineMinutes(int(allOfflineMinutes))
#        GameWorld.DebugLog("设置离线奖励时间 %s,curOfflineMinutes=%s" % (allOfflineMinutes, curOfflineMinutes), curPlayer.GetPlayerID())
#    else:
#        GameWorld.DebugLog("离线时间过短,不计入离线奖励!curOfflineMinutes=%s" % curOfflineMinutes, curPlayer.GetPlayerID())
#
#    #通知客户端离线时间
# #    curPlayer.Syn_OfflineTimeRefresh(int(curOfflineMinutes))
#    curPlayer.Syn_OfflineTimeQueryResult()
#===============================================================================
    return
#---------------------------------------------------------------------
##玩家在地图服务器中登录ok,初始化自己
#@param curPlayer 玩家实例
#@param tick 时间戳
@@ -1291,9 +1076,8 @@
    if GameWorld.IsCrossServer():
        curPlayer.SetForbiddenSyncClientState(False)
        
    playerControl = PlayerControl.PlayerControl(curPlayer)
    #刷新所有状态
    playerControl.ReCalcAllState()
    olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
    olPlayer.ReCalcAllAttr()
    
    if GameWorld.IsCrossServer():
        curPlayer.SetForbiddenSyncClientState(True)
@@ -1479,36 +1263,30 @@
#@return 返回值无意义
#@remarks 初始化玩家背包
def InitPlayerPack(curPlayer) :
    itemManager = curPlayer.GetItemManager()
    #设置装备实际个数,默认最大个数
    curPack = itemManager.GetPack(IPY_GameWorld.rptEquip)
    curPack.SetCount(curPack.GetMaxCount())
    PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptEquip, defaultMax=True, isSync=False)
    
    #初始化玩家背包
    PlayerControl.Init_ItemPack(curPlayer)
    PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptItem)
    
    #初始化玩家仓库
    #PlayerControl.Init_Warehouse(curPlayer)
    
    #初始化鉴定背包,默认最大个数用于存放主线掉落
    curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptIdentify)
    curPack.SetCount(curPack.GetMaxCount())
    curPack.Sync_PackCanUseCount()
    PlayerControl.Init_PackCount(curPlayer, IPY_GameWorld.rptIdentify, defaultMax=True)
    
    #初始化英雄背包
    PlayerControl.Init_HeroPack(curPlayer)
    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptHero)
    
    #初始化临时交换背包,默认最大个数
    curPack = itemManager.GetPack(ShareDefine.rptTempSwap)
    curPack.SetCount(curPack.GetMaxCount())
    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTempSwap, defaultMax=True, isSync=False)
    
    #初始化临时存放背包,默认最大个数
    curPack = itemManager.GetPack(ShareDefine.rptTempItem)
    curPack.SetCount(curPack.GetMaxCount())
    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTempItem, defaultMax=True, isSync=False)
    
    #初始化寻宝背包
    PlayerControl.Init_TreasurePack(curPlayer)
    PlayerControl.Init_PackCount(curPlayer, ShareDefine.rptTreasure)
    
    #初始化神兽物品背包
    #curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzItem)
@@ -1535,6 +1313,8 @@
    #curPack = itemManager.GetPack(ShareDefine.rptPet)
    #curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptPet))
    #curPack.Sync_PackCanUseCount()
    ItemCommon.SyncPackBuyCnt(curPlayer)
    
    #通知玩家物品信息
    __Sync_PackDetel(curPlayer)
@@ -1692,9 +1472,7 @@
        #=======================================================================
            #此时已经是下马状态不需要刷状态 但是需要通知客户端下马
            PlayerHorse.PlayerRideHorseDown(curPlayer, False)
    PlayerTeam.PlayerLoginSetTeam(curPlayer, tick)
    #激活玩家(保证持续性Buff处理间隔)
    PlayerControl.SetIsNeedProcess(curPlayer, True)
@@ -1753,13 +1531,7 @@
        curPlayer.SetFaction(ChConfig.CampType_Neutral)
        BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_SkillID_Justice, tick)
        BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_SkillID_Evil, tick)
    #再次请求双倍经验是否领取
    #PlayerDoubleExpSys.ChangeMapAfter_CalcDoubleExpTime(curPlayer, tick)
    #PlayerVip.SetStartCalcVIPTick(curPlayer, tick)
    #强制切换PK模式
    initAttackModel = curMap.GetInitAttackModel()
    if curPlayer.GetAttackMode() != initAttackModel:
@@ -1769,7 +1541,6 @@
    
    PassiveBuffEffMng.OnLoadMapGFPassive(curPlayer)
    PlayerYinji.OnLoadMap(curPlayer)
    ItemControler.PlayerItemControler(curPlayer).RefreshStartEquipCount()   # 刷新装备珍品星级
    
    #EndLoadMap需放在最后, 0403 tagPlayerLoginLoadOK
    curPlayer.EndLoadMap()
@@ -1861,7 +1632,7 @@
    NotifyPlayerBasePoint(curPlayer, pointAttrIDList)
    playerControl = PlayerControl.PlayerControl(curPlayer)
    playerControl.RefreshPlayerAttrState()
    PlayerControl.SetLingGenMaxIndex(curPlayer)
    #PlayerControl.SetLingGenMaxIndex(curPlayer)
    return
#// B2 07 重置加点 #tagCMResetAttrPoint
@@ -2409,7 +2180,6 @@
    #下线了,将存储在字典中的真实XP值,设置给玩家,完成通知和存储
    #curPlayer.SetXP(curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_RecordXPValue))
    #######################################################################
    PlayerOnline.OnPlayerLogoff(curPlayer)
    #下线逻辑
    PlayerControl.PlayerLeaveServer(curPlayer, tick)
    
@@ -2420,8 +2190,6 @@
    #流向记录玩家下线
    DataRecordPack.DR_PlayerDisconnect(curPlayer)
    
    #VIP时间
    #PlayerVip.CalcVIPTimeByTick(curPlayer, tick, False)
    #在线时间
    PlayerOnlinePrize.CalcOnlineTime(curPlayer)
    #首充提示时间
@@ -2448,6 +2216,9 @@
    
    #离线session
    EventReport.WriteEvent_session(curPlayer)
    #需放最后
    PlayerOnline.OnPlayerLogoff(curPlayer)
    return
#---------------------------------------------------------------------
@@ -3024,11 +2795,7 @@
                    return
                
    elif rebornType == ChConfig.rebornType_UseItem:
        if crossMapID == ChConfig.Def_FBMapID_CrossBattlefield:
            rebornItemID = IpyGameDataPY.GetFuncCfg("CrossBattlefieldReborn", 1)
            rebornItem = ItemCommon.FindItemInPackByItemID(curPlayer, rebornItemID, IPY_GameWorld.rptItem)
        else:
            rebornItem = ItemCommon.FindItemInPackByEffectEx(curPlayer, ChConfig.Def_Effect_Reborn)
        rebornItem = ItemCommon.FindItemInPackByEffectEx(curPlayer, ChConfig.Def_Effect_Reborn)
        if not rebornItem:
            GameWorld.ErrLog("复活道具不足,无法原地复活! ", playerID)                
            return
@@ -3363,7 +3130,7 @@
#  @param transportType 传送类型
#  @return 是否vip等级限制
def TransportVipLvRestrict(curPlayer, transportType):
    return PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_FreeTransport)
    return 0
@@ -3435,7 +3202,7 @@
    #参考经验
    rExp = PlayerControl.GetPlayerReExp(curPlayer)
    reLV = curPlayer.GetLV()                    #参考等级
    worldLvExpRate = PlayerWorldAverageLv.GetWorldAverageLvExpRate(curPlayer) #世界等级经验加成
    worldLvExpRate = 0
    
    #经验公式
    redeemExp = int(eval(recList[1]))
@@ -3486,34 +3253,6 @@
#  @param tick: 时间戳
#  @return: None
def ReceiveFamilyArrestAward(index, clientData, tick):
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    arrestID = clientData.ArrestID
    bit = ShareDefine.Def_ArrestOverState_BitDic.get(arrestID)
    if bit == None:
        #没有这个家族悬赏任务
        GameWorld.DebugLog("没有这个家族悬赏任务 arrestID=%s" % arrestID)
        return
    receiveState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyArrestAwardState)
    if receiveState & pow(2, bit):
        #该任务奖励已经领取
        GameWorld.DebugLog("该任务奖励已经领取 arrestID=%s" % arrestID)
        return
    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FamilyArrestQueryState) == 1:
        #已经在查询中, 不重复查询
        GameWorld.DebugLog("已经在查询中, 不重复查询 arrestID=%s" % arrestID)
        return
    sendMsg = '%s' % arrestID
    #向GameServer请求该悬赏任务是否已经完成
    curPlayer.GameServer_QueryPlayerByID(ChConfig.queryType_FamilyArrest, 0, 'FamilyArrestAward', sendMsg, len(sendMsg))
    #设置状态查询中
    curPlayer.SetDict(ChConfig.Def_PlayerKey_FamilyArrestQueryState, 1)
    return
@@ -3547,26 +3286,6 @@
    NetPackCommon.SendFakePack(curPlayer, awardReceiveState)
    return
## 领取奖励表奖励
#  @param None None
#  @return None
def ClientPlayerGetReward(index, clientData, tick):
    playerManager = GameWorld.GetPlayerManager()
    curPlayer = playerManager.GetPlayerByIndex(index)
    # 背包空间不足
    if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem):
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [IPY_GameWorld.rptItem])
        return
    rewardType = clientData.RewardType
    #通知GameServer领取奖励
    resultName = str(rewardType)
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'PlayerGetReward',
                                                                  resultName, len(resultName))
    return
#//A5 04 玩家领取奖励 #tagCMPlayerGetReward
#
#struct    tagCMPlayerGetReward
@@ -3597,24 +3316,18 @@
    # 挂机奖励
    elif rewardType == ChConfig.Def_RewardType_Guaji:
        PlayerGuaji.OnGetGuajiAward(curPlayer, dataEx)
    # 仙树免费减时
    elif rewardType == ChConfig.Def_RewardType_TreeFreeTime:
        PlayerTree.FreeReduceTreeLVTime(curPlayer)
    # 每日免费直购礼包
    elif rewardType == ChConfig.Def_RewardType_DayFreeGoldGift:
        PlayerDailyGiftbag.OnGetDailyFreeGiftbag(curPlayer)
    # 仙盟联赛冠军仙盟每日俸禄奖励
    elif rewardType == ChConfig.Def_RewardType_ChampionFamilyDailyReward:
        GameLogic_FamilyWar.GetChampionFamilyDailyReward(curPlayer)
    # 仙魔之争胜利场数奖励
    elif rewardType == ChConfig.Def_RewardType_XMZZWinCnt:
        GameLogic_XMZZ.GetXMZZWinPrize(curPlayer, dataEx)
    # 仙盟每日福利奖励
    elif rewardType == ChConfig.Def_RewardType_FamilyDayAward:
        PlayerFamily.GetFamilyDayAward(curPlayer)
    # 玩家等级奖励
    elif rewardType == ChConfig.Def_RewardType_LVAward:
        PlayerLVAward.GetPlayerLVAward(curPlayer, dataEx)
    # 仙宝寻主奖励
    elif rewardType == ChConfig.Def_RewardType_XBXZ:
        PlayerMagicWeapon.OnGetXBXZAward(curPlayer, dataEx)
    # 首充礼包奖励
    elif rewardType == ChConfig.Def_RewardType_GoldGiftFirst:
        PlayerGoldGift.GetPlayerGoldGiftFirst(curPlayer, dataEx)
@@ -3636,12 +3349,6 @@
    # 领取boss复活活动奖励
    elif rewardType == ChConfig.Def_RewardType_BossReborn:
        PlayerBossReborn.GetBossRebornActionAward(curPlayer, dataEx)
    # 领取仙界盛典充值大礼
    elif rewardType == ChConfig.Def_RewardType_FCRecharge:
        PlayerFairyCeremony.GetFCRechargeAward(curPlayer)
    # 领取仙界盛典全民来嗨
    elif rewardType == ChConfig.Def_RewardType_FCParty:
        PlayerFairyCeremony.GetFCPartyAward(curPlayer, dataEx)
    # 领取分包下载奖励
    elif rewardType == ChConfig.Def_RewardType_DownLoad:
        GetDownloadAward(curPlayer, dataEx)
@@ -3651,9 +3358,6 @@
    # 功能开启奖励
    elif rewardType == ChConfig.Def_RewardType_OpenFunc:
        GameFuncComm.GetFuncOpenAward(curPlayer, dataEx)
    # 冰晶矿脉星级奖励
    elif rewardType == ChConfig.Def_RewardType_IceLodeStar:
        GameLogic_IceLode.GetIceLodeStarAward(curPlayer, dataEx)
    # 领取周狂欢活动奖励
    elif rewardType == ChConfig.Def_RewardType_WeekPartyAct:
        PlayerWeekParty.GetWeekPartyActionAward(curPlayer, dataEx, dataExStr)
@@ -3663,12 +3367,6 @@
    # 领取登录奖励活动奖励
    elif rewardType == ChConfig.Def_RewardType_ActLoginAwardAct:
        PlayerActLogin.GetLoginAwardActionAward(curPlayer, dataEx, dataExStr)
    # 领取新仙界盛典充值大礼
    elif rewardType == ChConfig.Def_RewardType_NewFairyCRecharge:
        PlayerNewFairyCeremony.GetFCRechargeAward(curPlayer)
    # 领取新仙界盛典全民来嗨
    elif rewardType == ChConfig.Def_RewardType_NewFairyCParty:
        PlayerNewFairyCeremony.GetFCPartyAward(curPlayer, dataEx)
    # 领取节日巡礼活动奖励
    elif rewardType == ChConfig.Def_RewardType_FeastWeekPartyAct:
        PlayerFeastWeekParty.GetFeastWeekPartyActionAward(curPlayer, dataEx, dataExStr)
@@ -3723,18 +3421,12 @@
    # 轮回殿奖励
    elif rewardType == ChConfig.Def_RewardType_LunhuidianAward:
        PlayerActLunhuidian.GetLunhuidianAward(curPlayer, dataEx, dataExStr)
    #缥缈奇遇领取
    elif rewardType == ChConfig.Def_RewardType_FairyAdventuresAward:
        PlayerFairyDomain.GetFairyAdventuresAward(curPlayer, dataEx, dataExStr)
    #历史累计充值领取
    elif rewardType == ChConfig.Def_RewardType_HistoryChargeAward:
        PlayerGoldGift.OnGetHistoryRechargeAward(curPlayer, dataEx)
    #在线特惠充值额外奖励
    elif rewardType == ChConfig.Def_RewardType_OnlineRechargeTH:
        PlayerCoin.OnGetOnlineRechargeTH(curPlayer)
    #天星塔全服挑战层领奖
    elif rewardType == ChConfig.Def_RewardType_SkyTowerServerChallengeReward:
        GameLogic_SkyTower.OnGetSkyTowerServerChallengeReward(curPlayer, dataEx, dataExStr)
    #创角奖励
    elif rewardType == ChConfig.Def_RewardType_CreateRole:
        OnGetCreateRoleAward(curPlayer)
@@ -3744,9 +3436,6 @@
    #境界渡劫任务条件奖励
    elif rewardType == ChConfig.Def_RewardType_RealmLVUpTask:
        PlayerPrestigeSys.GetRealmLVUpTaskAward(curPlayer, dataEx)
    #仙盟boss伤害奖励
    elif rewardType == ChConfig.Def_RewardType_FamilyBossHurt:
        GameLogic_FamilyBoss.GetFamilyBossHurtAward(curPlayer, dataEx, dataExStr)
    #打包直购礼包奖励
    elif rewardType == ChConfig.Def_RewardType_DailyPackBuyGift:
        PlayerGoldGift.GetDailyPackBuyGift(curPlayer, dataEx)
@@ -3924,7 +3613,6 @@
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    if not curPlayer:
        return
    BossHurtMng.OnQueryBossHurtList(curPlayer, clientData)
    return