From 78f005e3fe86b6033255b37b03061cb491812dcb Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 24 一月 2019 15:07:35 +0800
Subject: [PATCH] 2936 【1.5.100】诛仙塔挑战失败也会给予奖励并扣除次数

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py |   84 +++++++++++++++++++++++++++++++++---------
 1 files changed, 66 insertions(+), 18 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 d7dd489..7ea7fff 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -79,6 +79,7 @@
 import GameLogic_FamilyWar
 import PlayerBossReborn
 import PlayerWeekParty
+import PlayerActLogin
 import Operate_EquipWash
 import PlayerTreasure
 import GameLogic_GodArea
@@ -110,6 +111,7 @@
 import PlayerGeTui
 import PlayerDogz
 import PlayerCoat
+import PlayerQuDaoDoubleBill
 
 import datetime
 import time
@@ -235,6 +237,10 @@
     
     Sync_DBPlayer(curPlayer)
     
+    # 死亡复活
+    if curPlayer.GetHP() <=0 or curPlayer.GetPlayerAction() == IPY_GameWorld.paDie:
+        PlayerRebornByType(curPlayer, ChConfig.rebornType_System, tick)
+        
     # 强刷一次属性,刷之前重置还没同步过所有属性
     curPlayer.SetDict(ChConfig.Def_PlayerKey_NotifyAllAttrState, 0)
     playerControl = PlayerControl.PlayerControl(curPlayer)
@@ -243,6 +249,8 @@
     if PlayerControl.GetCrossMapID(curPlayer):
         CrossRealmPlayer.DoExitCrossRealm(curPlayer)
         
+    msgInfo = ""
+    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetPlayerID(), 0, 0, "RefreshMainServerRole", msgInfo, len(msgInfo))
     return
 
 def Sync_DBPlayer(curPlayer):
@@ -402,10 +410,25 @@
         #---玩家上线, 宠物逻辑处理---
         PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
         
+        PlayerFamily.FamilyPlayerOnLoginCross(curPlayer)
+        
+        PlayerTeam.OnPlayerLoginCrossServer(curPlayer)
+            
         #通知运行成功
         curPlayer.BalanceServer_PlayerLoginInitOK()
         return
     
+    leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer)
+    if leaveServerSecond > ChConfig.Def_PlayerOfflineProtectTime / 1000:
+        # 离线超过离线保护重置切线临时保存的相关记录值
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PlayChangeLineID, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FuncChangeLineID, 0)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_HighChangeLineID, 0)
+        #GameWorld.DebugLog("离线超过10秒重置切线临时保存的相关记录值!leaveServerSecond=%s" % leaveServerSecond, curPlayer.GetPlayerID())
+        # 离线过久恢复为非跨服状态
+        if PlayerControl.GetCrossMapID(curPlayer):
+            PlayerControl.SetCrossMapID(curPlayer, 0)
+            
     SyncGuideState(curPlayer)
     
     #上线检查一次装备属性
@@ -424,7 +447,8 @@
     
     #通知玩家技能信息
     __Sync_ClientSkill(curPlayer)
-    
+    #替换旧物品
+    ItemControler.LoginCheckChangeOldItem(curPlayer)
     #清除生产采集Buff
     #PlayerControl.DelProduceBuff(curPlayer, tick)
     #清除国家答题Buff
@@ -448,18 +472,6 @@
     PlayerPrestigeSys.OnLogin(curPlayer)
     DataRecordPack.DR_PlayerLogin(curPlayer)
     EventReport.WriteEvent_login(curPlayer)
-    
-    
-    leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer)
-    if leaveServerSecond > ChConfig.Def_PlayerOfflineProtectTime / 1000:
-        # 离线超过离线保护重置切线临时保存的相关记录值
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PlayChangeLineID, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FuncChangeLineID, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_HighChangeLineID, 0)
-        #GameWorld.DebugLog("离线超过10秒重置切线临时保存的相关记录值!leaveServerSecond=%s" % leaveServerSecond, curPlayer.GetPlayerID())
-        # 离线过久恢复为非跨服状态
-        if PlayerControl.GetCrossMapID(curPlayer):
-            PlayerControl.SetCrossMapID(curPlayer, 0)
             
     # 合服首登处理
     __DoMixServerFirstLogin(curPlayer)
@@ -695,6 +707,8 @@
     PlayerBossReborn.OnLogin(curPlayer)
     # 周狂欢活动
     PlayerWeekParty.OnLogin(curPlayer)
+    # 登录奖励活动
+    PlayerActLogin.OnLogin(curPlayer)
     # 仙界盛典活动
     PlayerFairyCeremony.OnLogin(curPlayer)
     # 分支下载奖励记录通知
@@ -728,6 +742,7 @@
     # 如果被禁言的,上线同步前端
     if curPlayer.GetGMForbidenTalk():
         curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, curPlayer.GetGMForbidenTalk(), False)
+    
     return
 
 
@@ -911,11 +926,22 @@
 #@return 返回值无意义
 #@remarks 通知玩家技能信息
 def __Sync_ClientSkill(curPlayer):
+    sendPack = ChPyNetSendPack.tagMCPlayerSkills()
+    sendPack.Clear()
+    sendPack.Skills = []
     skillManager = curPlayer.GetSkillManager()
     for i in range(skillManager.GetSkillCount()):
         curSkill = skillManager.GetSkillByIndex(i)
-        curSkill.Sync_Skill()
+        #curSkill.Sync_Skill()
+        skillInfo = ChPyNetSendPack.tagPlayerSkill()
+        skillInfo.SkillID = curSkill.GetSkillID()
+        skillInfo.RemainTime = curSkill.GetRemainTime()
+        skillInfo.Proficiency = curSkill.GetProficiency()
+        
+        sendPack.Skills.append(skillInfo)
 
+    sendPack.Count = len(sendPack.Skills)
+    NetPackCommon.SendFakePack(curPlayer, sendPack) 
     return
  
 #---------------------------------------------------------------------
@@ -1010,6 +1036,7 @@
     #刷新玩家的视野
     if not GameWorld.IsCrossServer() and PlayerControl.GetCrossMapID(curPlayer):
         GameWorld.DebugLog("===登录本服地图时,处于跨服状态,不刷新视野!", curPlayer.GetPlayerID())
+        curPlayer.SetSight(0)
     else:
         PlayerState.ChangePlayerSigh(curPlayer, tick)
     
@@ -1236,6 +1263,15 @@
     #初始化神兽装备背包
     curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptDogzEquip)
     curPack.SetCount(ChConfig.Def_PackCnt_DogzEquip)
+    curPack.Sync_PackCanUseCount()
+    
+    #初始化诛仙物品背包
+    curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianItem)
+    curPack.SetCount(ChConfig.Def_PackCnt_ZhuXianItem)
+    curPack.Sync_PackCanUseCount()
+    #初始化诛仙装备背包
+    curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
+    curPack.SetCount(ChConfig.Def_PackCnt_ZhuXianEquip)
     curPack.Sync_PackCanUseCount()
     
     #初始化临时交换背包
@@ -1522,6 +1558,8 @@
     
     #EndLoadMap需放在最后
     curPlayer.EndLoadMap()
+    # 渠道返利 
+    PlayerQuDaoDoubleBill.OnMapQDDoubleBill(curPlayer)
     return True
 
 ## 切换地图同步一次PK模式
@@ -5303,6 +5341,9 @@
     # 领取周狂欢积分奖励
     elif rewardType == ChConfig.Def_RewardType_WeekPartyPoint:
         PlayerWeekParty.GetWeekPartyPointAward(curPlayer, dataEx, dataExStr)
+    # 领取登录奖励活动奖励
+    elif rewardType == ChConfig.Def_RewardType_ActLoginAwardAct:
+        PlayerActLogin.GetLoginAwardActionAward(curPlayer, dataEx, dataExStr)
     
     return
     
@@ -5457,10 +5498,17 @@
     return
 
 
-
-## 地图NPC数量查询封包 A2 27 查询地图NPC数量信息 #tagCMQueryNPCCntInfo
-#  @param curPlayer
-#  @return None
+#// A2 27 查询地图NPC数量信息 #tagCMQueryNPCCntInfo
+#
+#struct tagCMQueryNPCCntInfo
+#{
+#    tagHead        Head;
+#    DWORD        MapID; // 目标地图ID
+#    WORD        LineID; // 线路ID
+#    BYTE        IsNoTimeLimit;//是否没有查询时间限制,默认有限制
+#    BYTE        NPCIDListLen;
+#    char        NPCIDList[NPCIDListLen]; // 需要查询的NPCID列表
+#};
 def OnQueryMapNPCCntInfo(index, clientData, tick):
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     if not curPlayer:

--
Gitblit v1.8.0