From 5ad2bd52bfbdf91a93ecf3a6c98c5e578edabb2b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 26 三月 2019 17:18:50 +0800
Subject: [PATCH] 6373 【后端】【2.0】删除无用功能代码、封包、配置(页游天梯)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py |  205 ++++++++++++++++++++++++++------------------------
 1 files changed, 107 insertions(+), 98 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 8a0fa4a..2d2d3e2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -136,10 +136,6 @@
 #@return 返回值无意义
 #@remarks 玩家登陆游戏初始化
 def InitLoginPlayer(curPlayer, tick):
-    #初始化职业阶数,默认1
-    if PlayerControl.GetJobRank(curPlayer) == 0:
-        PlayerControl.SetJobRank(curPlayer, 1)
-        
     ##初始化交易列表
     if curPlayer.GetTradeList().GetTradeItemCount() == 0:
         curPlayer.GetTradeList().SetTradeListCount(ChConfig.Def_PlayerTradeMaxItemCount)
@@ -481,10 +477,7 @@
     SyncGuideState(curPlayer)
     
     #上线检查一次装备属性
-    ItemControler.PlayerItemControler(curPlayer).CheckRolePackEquipAttr()
-    #上线检查加点属性点
-    PlayerControl.FixOldAddPoint(curPlayer)
-    
+    ItemControler.PlayerItemControler(curPlayer).CheckRolePackEquipAttr()   
     #更新服务器组ID
     PlayerControl.UpdPlayerServerGroupID(curPlayer)
     
@@ -496,8 +489,6 @@
     
     #通知玩家技能信息
     __Sync_ClientSkill(curPlayer)
-    #替换旧物品
-    ItemControler.LoginCheckChangeOldItem(curPlayer)
     #清除生产采集Buff
     #PlayerControl.DelProduceBuff(curPlayer, tick)
     #清除国家答题Buff
@@ -539,11 +530,11 @@
     SyncPKModel(curPlayer)
         
     #通用强化星级信息
-    ChEquip.NotifyEquipPartStarLV(curPlayer)
+    ChEquip.NotifyEquipPartPlusLV(curPlayer)
+    ChEquip.NotifyEquipPartStar(curPlayer)
     Operate_EquipWash.OnEquipWashLogin(curPlayer)
     #通知套装信息
-    ChEquip.NotifyEquipPartSuiteLV(curPlayer)
-    ChEquip.SyncAllEquipAttrActiveInfo(curPlayer)
+    #ChEquip.SyncAllEquipAttrActiveInfo(curPlayer)
     #装备位宝石镶嵌通知
     Operate_EquipStone.OnLogin(curPlayer)
     
@@ -645,21 +636,12 @@
     GameLogic_GodArea.GodAreaOnLogin(curPlayer)
 #    # 采集NPC次数通知
     NPCCommon.SyncCollNPCTime(curPlayer)
-#        
-#    # 特惠活动
-#    PlayerTeHui.PlayerLogin_TeHui(curPlayer)
-#    
-#    # 自定义商店
-#    ShopItemManage.DoOnLogin(curPlayer)
 #    
 #    # 每日活跃度
     PlayerActivity.OnLogin(curPlayer)
 #    
 #    # 副本进入时间
     FBCommon.FBOnLogin(curPlayer)
-#    
-#    #天梯竞技场
-#    HighLadderTube.OnLogin(curPlayer)
 #    
 #    #世界等级
     PlayerWorldAverageLv.OnLogin(curPlayer)
@@ -831,13 +813,15 @@
     # 重置首充双倍
     PlayerCoin.DoResetCTGCount(curPlayer, "MixServer")
     
-    # 重置商店购买次数
-    FunctionNPCCommon.ResetShopItemBuyCount(curPlayer)
+    # 重置商店购买次数,暂定只重置类型 7 的
+    FunctionNPCCommon.ResetShopItemBuyCount(curPlayer, [7])
     
     # 合服邮件,盟主专属邮件在GameServer处理
     mailItemList = IpyGameDataPY.GetFuncEvalCfg("MixServerMail", 1)
     worldLVMailItemList = IpyGameDataPY.GetFuncEvalCfg("MixServerMail", 2)
     mailMoneyList = IpyGameDataPY.GetFuncEvalCfg("MixServerMail", 3)
+    worldLVDown = IpyGameDataPY.GetFuncCfg("MixServerMail", 5) # 等级丹相对合服世界等级差值
+    itemWorldLV = max(150, mixServerWorldLV - worldLVDown)
     goldPaper, silver = mailMoneyList
     worldLVItemList = []
     for itemID, itemCount, isBind in worldLVMailItemList:
@@ -851,14 +835,14 @@
         lvLimit = curEff.GetEffectValue(1)
         if not lvLimit:
             continue
-        if lvLimit <= mixServerWorldLV:
+        if lvLimit <= itemWorldLV:
             worldLVItemList = [[itemID, itemCount, isBind]]
         else:
             break
-    detailDict = {"MixServerWorldLV":mixServerWorldLV, "LastMixServerDay":lastMixServerDay}
+    detailDict = {"MixServerWorldLV":mixServerWorldLV, "LastMixServerDay":lastMixServerDay, "ItemWorldLV":itemWorldLV}
     addItemList = mailItemList + worldLVItemList
     PlayerControl.SendMailByKey("MixServer1", [playerID], addItemList, goldPaper=goldPaper, silver=silver, detail=detailDict)
-    GameWorld.Log("    发送合服补偿邮件: addItemList=%s" % (addItemList), playerID)
+    GameWorld.Log("    发送合服补偿邮件: itemWorldLV=%s,addItemList=%s" % (itemWorldLV, addItemList), playerID)
     
     # 同步排行榜
     PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer, isAll=True)
@@ -1352,7 +1336,7 @@
 
     #设置装备实际个数
     curPack = itemManager.GetPack(IPY_GameWorld.rptEquip)
-    curPack.SetCount(ShareDefine.retMax)
+    curPack.SetCount(ChConfig.Def_PackCnt_Equip)
     
     #初始化垃圾桶
     #curPack = itemManager.GetPack(IPY_GameWorld.rptRecycle)
@@ -1597,9 +1581,6 @@
     #防止玩家读取地图时未触发OnDay,读取地图后再次验证(2009.9.11)
     PlayerEventCounter.UpdatePlayerLoginTime(curPlayer)
     
-    #特惠活动事件
-    #PlayerTeHui.PlayerLoadMapOK(curPlayer)
-    
     #设置阵营
     if curPlayer.GetFaction() != ChConfig.CampType_Neutral \
                 and FBCommon.GetRecordMapID(GameWorld.GetMap().GetMapID()) not in ChConfig.Def_MapID_NeedCamp:
@@ -1746,80 +1727,103 @@
 #@return 返回值无意义
 #@remarks //03 01 加属性点#tagCAddPoint
 def AddPoint(index, tick):
-    GameWorld.GetPsycoFunc(__Func_AddPoint)(index, tick)
     return
 
-##//03 01 加属性点#tagCAddPoint
-#@param index 玩家索引
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks //03 01 加属性点#tagCAddPoint
-def __Func_AddPoint(index, tick):
+#// B2 06 玩家加点 #tagCMAddPoint
+#
+#struct    tagCMAddPoint
+#{
+#    tagHead         Head;
+#    BYTE        PointAttrIDCount;    // 加点属性ID个数
+#    BYTE        PointAttrIDList[PointAttrIDCount];    // 加点属性ID列表
+#    WORD        PointValueList[PointAttrIDCount];    // 加点属性ID对应的点数列表
+#};
+def OnAddPoint(index, clientData, tick):
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    #JobQuotiety = PlayerControl.JobQuotiety
+    pointAttrIDList = clientData.PointAttrIDList
+    pointValueList = clientData.PointValueList
+    if not pointAttrIDList or not pointValueList or len(pointAttrIDList) != len(pointValueList):
+        return
+    
+    needTotalPoint = 0
+    for i, attrID in enumerate(pointAttrIDList):
+        if not IpyGameDataPY.GetIpyGameData("RolePoint", attrID):
+            return
+        needTotalPoint += pointValueList[i]
+        
     curFreePoint = curPlayer.GetFreePoint()
-    #job = curPlayer.GetJob()
-    recvAddPoint = IPY_GameWorld.IPY_CAddPoint()
-    addValue = recvAddPoint.GetPoint()
-    
-    #检验是否能够加点
-    if addValue < 1 or addValue > curFreePoint:
-        #检验不通过, 返回
-        #GameWorld.ErrLog("(%s,%s)检验是否能够加点,检验不通过, 返回"%(addValue,curFreePoint) , curPlayer.GetPlayerID())
+    if needTotalPoint > curFreePoint:
+        GameWorld.DebugLog("剩余点数不足! curFreePoint(%s) < needTotalPoint(%s)" % (curFreePoint, needTotalPoint))
         return
     
-    #封包加点类型
-    addPointType = recvAddPoint.GetType()
-    
-    #加点 
-    if addPointType == ShareDefine.Def_Effect_STR:
-        curPlayer.SetBaseSTR(addValue + curPlayer.GetBaseSTR())
+    curPlayer.SetFreePoint(curFreePoint - needTotalPoint)
+    for i, attrID in enumerate(pointAttrIDList):
+        addPoint = pointValueList[i]
+        curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AddPointValue % attrID)
+        updPoint = curPoint + addPoint
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AddPointValue % attrID, updPoint)
+        GameWorld.DebugLog("玩家加点: attrID=%s,curPoint=%s,addPoint=%s,updPoint=%s" % (attrID, curPoint, addPoint, updPoint))
         
-    elif addPointType == ShareDefine.Def_Effect_PNE:
-        curPlayer.SetBasePNE(addValue + curPlayer.GetBasePNE())
-        
-    elif addPointType == ShareDefine.Def_Effect_PHY:
-        curPlayer.SetBasePHY(addValue + curPlayer.GetBasePHY())
-        
-    elif addPointType == ShareDefine.Def_Effect_CON:
-        curPlayer.SetBaseCON(addValue + curPlayer.GetBaseCON())
-        
-    else:
-        #异常超出边界
-        GameWorld.ErrLog("AddPoint GetTypeErr = %s" % (addPointType) , curPlayer.GetID())
-        return
-    
-    curPlayer.SetFreePoint(curFreePoint - addValue)
-    
-    DataRecordPack.DR_Freepoint(curPlayer, "AddPoint", curFreePoint, {"AddPointType":addPointType})
-    playerControl.RefreshPlayerAttrState()     
-    
+    NotifyPlayerBasePoint(curPlayer, pointAttrIDList)
+    playerControl = PlayerControl.PlayerControl(curPlayer)
+    playerControl.RefreshPlayerAttrState()
     return
 
-def NotifyPlayerBasePoint(curPlayer):
-    #上线通知基础属性点
-    notifyList = []
-    notifyBasePointDict = {
-                 IPY_GameWorld.CDBPlayerRefresh_BaseSTR:'BaseSTR',
-                 IPY_GameWorld.CDBPlayerRefresh_BasePHY:'BasePHY',
-                 IPY_GameWorld.CDBPlayerRefresh_BaseCON:'BaseCON',
-                 IPY_GameWorld.CDBPlayerRefresh_BasePNE:'BasePNE',
-                }
-    for refreshType, keyStr in notifyBasePointDict.items():
-        notifyStruct = ChPyNetSendPack.tagRefreshType()
-        notifyStruct.RefreshType = refreshType
-        notifyStruct.Value = getattr(curPlayer, 'Get%s'%keyStr)()
-        notifyList.append(notifyStruct)
+def NotifyPlayerBasePoint(curPlayer, syncAttrIDList=[]):
+    # 通知基础属性点,已分配的自由点数
+    
+    if not syncAttrIDList:
+        ipyDataMgr = IpyGameDataPY.IPY_Data()
+        syncAttrIDList = [ipyDataMgr.GetRolePointByIndex(index).GetAttrID() for index in xrange(ipyDataMgr.GetRolePointCount())]
         
-    #属性组合包 通知自己
-    sendPack = ChPyNetSendPack.tagObjInfoListRefresh()
+    pointAttrIDList = []
+    pointValueList = []
+    for attrID in syncAttrIDList:
+        curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AddPointValue % attrID)
+        pointAttrIDList.append(attrID)
+        pointValueList.append(curPoint)
+        
+    pointInfo = ChPyNetSendPack.tagMCRolePointInfo()
+    pointInfo.PointAttrIDList = pointAttrIDList
+    pointInfo.PointValueList = pointValueList
+    pointInfo.PointAttrIDCount = len(pointAttrIDList)
+    NetPackCommon.SendFakePack(curPlayer, pointInfo)
+    return
+
+#===============================================================================
+# //B4 14 根据类型来决定移动的方式 #tagMCMoveByType
+# 
+# struct    tagMCMoveByType
+# {
+#    tagHead        Head;
+#    DWORD        ID;    //玩家ID
+#    WORD        PosX;    // 目标X
+#    WORD        PosY;    // 目标Y
+#    BYTE        MoveType;    //移动方式
+# };
+#===============================================================================
+def OnMoveByType(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    
+    #玩家移动通用检查
+    if not __CheckPlayerCanMove(curPlayer):
+        return
+    
+    #先验证目标点是否合法
+    if not GameWorld.GetMap().CanMove(clientData.PosX, clientData.PosY):
+        return
+    
+    curPlayer.StopMove()
+    curPlayer.ChangePos(clientData.PosX, clientData.PosY)
+    sendPack = ChPyNetSendPack.tagMCMoveByType()
     sendPack.Clear()
-    sendPack.ObjID = curPlayer.GetID()
+    sendPack.ID = curPlayer.GetID()
     sendPack.ObjType = curPlayer.GetGameObjType()
-    sendPack.Count = len(notifyList)
-    sendPack.RefreshType = notifyList
-    NetPackCommon.SendFakePack(curPlayer, sendPack)
+    sendPack.PosX = clientData.PosX
+    sendPack.PosY = clientData.PosY
+    sendPack.MoveType = clientData.MoveType
+    
+    PlayerControl.PyNotifyAll(curPlayer, sendPack, False, -1)
     return
 
 #===============================================================================
@@ -1853,7 +1857,15 @@
     #===========================================================================
     
     #超出视野
-    if GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), clientData.PosX, clientData.PosY) > curPlayer.GetSight():
+    if curPlayer.GetSight() and GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), clientData.PosX, clientData.PosY) > curPlayer.GetSight():
+        return
+    
+    #玩家移动通用检查
+    if not __CheckPlayerCanMove(curPlayer):
+        return
+    
+    #先验证目标点是否合法
+    if not GameWorld.GetMap().CanMove(clientData.PosX, clientData.PosY):
         return
     
     curPlayer.StopMove()
@@ -5295,9 +5307,6 @@
     # 首充礼包奖励
     elif rewardType == ChConfig.Def_RewardType_GoldGiftFirst:
         PlayerGoldGift.GetPlayerGoldGiftFirst(curPlayer)
-    # 领取法宝之魂奖励
-    elif rewardType == ChConfig.Def_RewardType_MWSoulAward:
-        PlayerMagicWeapon.GetMWSoulAward(curPlayer, dataEx)
     # 领取极品白拿
     elif rewardType == ChConfig.Def_RewardType_FreeGoods:
         PlayerFreeGoods.OnGetFreeGoods(curPlayer, dataEx)
@@ -5797,7 +5806,7 @@
         PlayerControl.SendMailByKey('SubpackageDownload', [curPlayer.GetID()], awardItemList)
     else:
         for itemID, itemCnt, isBind in awardItemList:
-            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
+            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
     SyncPackDownloadAward(curPlayer)
     return
 

--
Gitblit v1.8.0