From 7b48b6e603e2eeeacdb737210d74212ed77f7943 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期六, 16 三月 2019 17:38:03 +0800 Subject: [PATCH] 6332 【后端】【2.0】主要是拍品相关规则调整及背包优化(使用拍品数据同步优化) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 46 +++++++++++++++++++++++++--------------------- 1 files changed, 25 insertions(+), 21 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 fb39eda..73327bb 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,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 @@ -3062,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): @@ -3079,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): @@ -4183,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) @@ -4271,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 @@ -4286,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) @@ -5180,7 +5189,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) @@ -5195,18 +5204,13 @@ #self.__SetItemProtect(curMapItem, dropType, ownerID) return - def __CreateDropItem(self, curNPC, itemID, count, isBind): + def __CreateDropItem(self, curNPC, itemID, count, isAuctionItem, dropPlayer): ## 创建掉落的物品 - curItem = ItemControler.GetOutPutItemObj(itemID) + if IpyGameDataPY.GetIpyGameDataNotLog("AuctionItem", itemID): + isAuctionItem = True # 掉落的暂时默认都是拍品 + 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 #--------------------------------------------------------------------- @@ -5452,7 +5456,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