From 84f9abc7067dde4e6b504a1ba2e9f0600a6de46b Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 12 三月 2019 20:58:56 +0800
Subject: [PATCH] 4042 【后端】【2.0】邮件包含附件时不能删除邮件 -  服务端添加防范

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py |   41 +++++++++++++++++++----------------------
 1 files changed, 19 insertions(+), 22 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index a642e49..db1f752 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -54,6 +54,7 @@
 import PlayerFairyCeremony
 import PlayerNewFairyCeremony
 import PlayerWeekParty
+import PlayerActLogin
 import FamilyRobBoss
 import IpyGameDataPY
 import PlayerState
@@ -494,7 +495,7 @@
         
         if ItemCommon.GetIsEquip(itemData):
             for _ in xrange(itemCount):
-                curItem = ItemControler.GetOutPutItemObj(itemID, isBind=isBind)
+                curItem = ItemControler.GetOutPutItemObj(itemID)
                 if curItem:
                     needSpace += 1
                     prizeItemList.append(curItem)
@@ -540,7 +541,7 @@
             index += 1
             if isinstance(curItem, list):
                 itemID, itemCount, isBind = curItem
-                curItem = ItemControler.GetOutPutItemObj(itemID, itemCount, isBind)
+                curItem = ItemControler.GetOutPutItemObj(itemID, itemCount, False)
                 
             if not curItem:
                 continue
@@ -568,7 +569,7 @@
         for prizeItem in prizeItemList:
             if isinstance(prizeItem, list):
                 itemID, itemCount, isBind = prizeItem
-                ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], 
+                ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem], 
                                              event=event)
             else:
                 ItemControler.DoLogic_PutItemInPack(curPlayer, prizeItem, event=event)
@@ -2126,8 +2127,8 @@
     GameWorld.DebugLog("Boss状态变更: bossID=%s,isAlive=%s,dataMapID=%s,realMapID=%s,copyMapID=%s" 
                        % (bossID, isAlive, dataMapID, realMapID, copyMapID))
     if not isAlive:
-        if dataMapID in ChConfig.Def_CrossZoneTableName:
-            tableName = ChConfig.Def_CrossZoneTableName[dataMapID]
+        if dataMapID in ChConfig.Def_CrossZoneMapTableName:
+            tableName = ChConfig.Def_CrossZoneMapTableName[dataMapID]
             realMapID = GameWorld.GetGameWorld().GetRealMapID()
             copyMapID = GameWorld.GetGameWorld().GetCopyMapID()
             zoneIpyData = IpyGameDataPY.GetIpyGameData(tableName, realMapID, dataMapID, copyMapID)
@@ -2167,6 +2168,7 @@
         PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
         PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
         PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_WorldBOSS, 1)
+        PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_WorldBOSS, 1)
         
     if mapID == ChConfig.Def_FBMapID_BossHome:
         #BOSS之家
@@ -3029,7 +3031,7 @@
         #    GameWorld.DebugLog("伤血玩家血量为0,清除该伤血!playerID=%s" % hurtID)
         #    return True
         
-        if not hurtPlayer.GetVisible():
+        if hurtPlayer.GetInitOK() and not hurtPlayer.GetVisible():
             GameWorld.DebugLog("伤血玩家不可见,清除该伤血!playerID=%s" % hurtID)
             return True
         
@@ -3066,7 +3068,7 @@
                     #GameWorld.DebugLog("队员不在本线路,不计!playerID=%s" % playerID)
                     continue
                 
-                if not curTeamPlayer.GetVisible():
+                if curTeamPlayer.GetInitOK() and not curTeamPlayer.GetVisible():
                     #GameWorld.DebugLog("队员不可见,不计!playerID=%s" % playerID)
                     continue
                 
@@ -3087,7 +3089,7 @@
                     teamHurtPlayerIDList.append(playerID)
                     
         if not teamHurtPlayerIDList:
-            GameWorld.DebugLog("伤血队伍没有活着的队员在boss区域内,清除该伤血!teamID=%s,mapTeamPlayerIDList=%s" % (teamID, mapTeamPlayerIDList))
+            GameWorld.DebugLog("伤血队伍没有符合条件的队员在boss区域内,清除该伤血!teamID=%s,mapTeamPlayerIDList=%s" % (teamID, mapTeamPlayerIDList))
         return teamHurtPlayerIDList
     
     def RefreshHurtList(self, tick, refreshInterval=3000):
@@ -4191,7 +4193,7 @@
             index += 1
             itemCnt = moneyValue if itemID == moneyID else 1
             isBind = dropItemBindDict.get(itemID, 1)
-            curItem = self.__CreateDropItem(curNPC, itemID, itemCnt, isBind)
+            curItem = self.__CreateDropItem(curNPC, itemID, itemCnt, isBind, dropPlayer)
             if not curItem:
                 continue
             self.__MapCreateItem(curItem, resultX, resultY, ChConfig.Def_NPCHurtTypePlayer, ownerID)
@@ -4279,7 +4281,7 @@
                 itemCnt = moneyValue if itemID == moneyID else 1
                 isBind = dropIDBindDict.get(itemID, 1)
             
-            curItem = self.__CreateDropItem(curNPC, itemID, itemCnt, isBind)
+            curItem = self.__CreateDropItem(curNPC, itemID, itemCnt, isBind, dropPlayer)
             if not curItem:
                 continue
             
@@ -4294,8 +4296,7 @@
                 curItem.SetUserAttr(ShareDefine.Def_IudetSource, ShareDefine.Item_Source_VirtualItemDrop)
                 dropItemDataStr = ChItem.GetMapDropItemDataStr(curItem)
                 #可以放入背包
-                if ItemControler.DoLogic_PutItemInPack(ownerPlayer, curItem, True, True,
-                                                       event=["NPCDrop", False, {"npcID":npcID}]):
+                if ItemControler.DoLogic_PutItemInPack(ownerPlayer, curItem, event=["NPCDrop", False, {"npcID":npcID}]):
                     #通知客户端
                     self.SendVirtualItemDrop(ownerPlayer, itemID, resultX, resultY, dropItemDataStr)
                     
@@ -5203,18 +5204,14 @@
         #self.__SetItemProtect(curMapItem, dropType, ownerID)
         return
     
-    def __CreateDropItem(self, curNPC, itemID, count, isBind):
+    def __CreateDropItem(self, curNPC, itemID, count, isBind, dropPlayer):
         ## 创建掉落的物品
-        curItem = ItemControler.GetOutPutItemObj(itemID)
+        if not isBind and not IpyGameDataPY.GetIpyGameDataNotLog("AuctionItem", itemID):
+            isBind = 1
+        isAuctionItem = not isBind
+        curItem = ItemControler.GetOutPutItemObj(itemID, count, isAuctionItem, curPlayer=dropPlayer)
         if not curItem:
             return
-        
-        curMapID = GameWorld.GetMap().GetMapID()
-        curMapID = FBCommon.GetRecordMapID(curMapID)
-        
-        # 掉落数量
-        curItem.SetCount(count)
-        curItem.SetIsBind(isBind)
         return curItem
     
 #---------------------------------------------------------------------
@@ -5460,7 +5457,7 @@
     giveItemList = collectNPCIpyData.GetCollectAward()
     if giveItemList:
         itemID, itemCount, isBind = giveItemList
-        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem])
+        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
         
     #采集成就
     PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Collect, collectCnt, [npcID])

--
Gitblit v1.8.0