From 7144eee263494fb574a03d629a2b7fc8b6827f42 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 25 二月 2019 14:16:45 +0800
Subject: [PATCH] 6250 【后端】【2.0】拍卖行开发单(封包)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 43 +++++++++++++++++++++++++++++++++++--------
1 files changed, 35 insertions(+), 8 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 b1cf919..c17651a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -52,7 +52,9 @@
import PlayerMagicWeapon
import PlayerBossReborn
import PlayerFairyCeremony
+import PlayerNewFairyCeremony
import PlayerWeekParty
+import PlayerActLogin
import FamilyRobBoss
import IpyGameDataPY
import PlayerState
@@ -508,7 +510,19 @@
## 直接掉地板上
if dropItemMapInfo:
- dropPosX, dropPosY, isOnlySelfSee = dropItemMapInfo
+ dropPosX, dropPosY, isOnlySelfSee = dropItemMapInfo[:3]
+ isDropDisperse = dropItemMapInfo[3] if len(dropItemMapInfo) > 3 else False # 堆叠的物品是否散开掉落
+ if isDropDisperse:
+ dropItemList = []
+ for itemInfo in prizeItemList:
+ if isinstance(itemInfo, list):
+ itemID, itemCount, isBind = itemInfo
+ for _ in xrange(itemCount):
+ dropItemList.append([itemID, 1, isBind])
+ else:
+ dropItemList.append(itemInfo)
+ else:
+ dropItemList = prizeItemList
index = 0
playerID = curPlayer.GetPlayerID()
gameMap = GameWorld.GetMap()
@@ -520,10 +534,10 @@
#玩家不可移动这个点
continue
- if index > len(prizeItemList) - 1:
+ if index > len(dropItemList) - 1:
break
- curItem = prizeItemList[index]
+ curItem = dropItemList[index]
index += 1
if isinstance(curItem, list):
itemID, itemCount, isBind = curItem
@@ -2068,7 +2082,7 @@
if ChConfig.IsGameBoss(curNPC):
# 通知GameServer boss状态 封魔坛在副本里单独处理
ipyData = IpyGameDataPY.GetIpyGameDataNotLog('BOSSInfo', npcid)
- if ipyData and ipyData.GetMapID() != ChConfig.Def_FBMapID_SealDemon:
+ if ipyData and ipyData.GetMapID() not in [ChConfig.Def_FBMapID_SealDemon, ChConfig.Def_FBMapID_ZhuXianBoss]:
GameServe_GameWorldBossState(npcid, 0)
#GameWorld.GetGameWorld().SetGameWorldDict(ChConfig.Map_NPC_WorldBossDeadTick % npcid, GameWorld.GetGameWorld().GetTick())
#因为存在boss分流,所以用gameFB字典,但是存活状态还是用GameWorld字典
@@ -2113,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)
@@ -2140,6 +2154,7 @@
dataDict = {"objID":npcID, "bossID":npcID, "touchCnt":newCnt,
"AccID":curPlayer.GetAccID(), "PlayerID":curPlayer.GetPlayerID()}
DataRecordPack.SendEventPack("AddKillBossCnt", dataDict, curPlayer)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillBoss, 1, [limitIndex])
if isCrossServer:
return
@@ -2151,7 +2166,9 @@
PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_WorldBOSS)
PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_WorldBOSS, 1)
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之家
@@ -2161,6 +2178,7 @@
PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_BOSSHome)
PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_BOSSHome, 1)
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
+ PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_BOSSHome, 1)
return
@@ -3013,6 +3031,10 @@
# GameWorld.DebugLog("伤血玩家血量为0,清除该伤血!playerID=%s" % hurtID)
# return True
+ if hurtPlayer.GetInitOK() and not hurtPlayer.GetVisible():
+ GameWorld.DebugLog("伤血玩家不可见,清除该伤血!playerID=%s" % hurtID)
+ return True
+
if not self.GetIsInRefreshPoint(hurtPlayer.GetPosX(), hurtPlayer.GetPosY(), refreshPoint):
GameWorld.DebugLog("伤血玩家不在boss范围里,清除该伤血!playerID=%s" % hurtID)
return True
@@ -3046,6 +3068,10 @@
#GameWorld.DebugLog("队员不在本线路,不计!playerID=%s" % playerID)
continue
+ if curTeamPlayer.GetInitOK() and not curTeamPlayer.GetVisible():
+ #GameWorld.DebugLog("队员不可见,不计!playerID=%s" % playerID)
+ continue
+
if curTeamPlayer.GetHP() <= 0 or curTeamPlayer.GetPlayerAction() == IPY_GameWorld.paDie:
deadTime = curTeamPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_DeadTime)
if time.time() - deadTime >= IpyGameDataPY.GetFuncCfg("BossHurtValue", 1):
@@ -3063,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):
@@ -5023,6 +5049,7 @@
else:
if curNPC.GetLV()>=curPlayer.GetLV() - IpyGameDataPY.GetFuncCfg('DailyQuestKillMonster'):
PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_KillNPC)
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillSpecificNPC, 1, [npcID])
if ChConfig.IsGameBoss(curNPC):
OnPlayerKillBoss(curPlayer, npcID, mapID, False)
@@ -5163,7 +5190,7 @@
#===========================================================================================
# 在地上添加物品(统一接口)
- dropNPCID = 0 if not curNPC.GetIsBoss() else curNPCID
+ dropNPCID = 0 if not ChConfig.IsGameBoss(curNPC) else curNPCID
specOwnerIDList = self.__AllKillerDict.keys() if (len(self.__AllKillerDict) > 1 or dropType == ChConfig.Def_NPCHurtTypeSpecial) else []
curMapItem = ChItem.AddMapDropItem(posX, posY, curItem, ownerInfo=[dropType, ownerID, specOwnerIDList], dropNPCID=dropNPCID)
--
Gitblit v1.8.0