From 4d05b52d78b592673bd93dd29f1668147cf89039 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期二, 16 十月 2018 15:04:06 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 72 ++++++++++++++++++++--------------- 1 files changed, 41 insertions(+), 31 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 3974428..0d7b24c 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py @@ -160,6 +160,9 @@ elif lvStrengthenType == 1: strengthenLV = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_NPCStrengthenAverageLV) + if strengthenIpyData.GetCmpNPCBaseLV(): + strengthenLV = max(strengthenLV, curNPC.GetLV()) + if lvStrengthenType in [1, 2] and not strengthenLV: GameWorld.ErrLog("NPC配置了成长等级类型,但是无法获取到对应的成长等级值!npcID=%s,lvStrengthenType=%s" % (npcID, lvStrengthenType)) return @@ -4265,6 +4268,7 @@ self.__AllKillerDict, curTeam, hurtType, hurtID = self.__FindNPCKillerInfo() self.__OwnerHurtType, self.__OwnerHurtID = hurtType, hurtID + isGameBoss = ChConfig.IsGameBoss(curNPC) #最后一击处理 self.__DoLastTimeHurtLogic() @@ -4299,10 +4303,10 @@ elif hurtType == ChConfig.Def_NPCHurtTypeFamily: self.__KilledByFamilySetPrize(hurtType, hurtID) - else: + elif isGameBoss: GameWorld.ErrLog("NPC归属异常:npcID=%s,hurtType=%s,hurtID=%s" % (npcID, hurtType, hurtID)) - if ChConfig.IsGameBoss(curNPC): + if isGameBoss: dataDict = {"objID":curNPC.GetID(), "bossID":npcID, "mapID":GameWorld.GetMap().GetMapID(), "lineID":GameWorld.GetGameWorld().GetLineID(), "teamID":curTeam.GetTeamID() if curTeam else 0, "killerID":self.__AllKillerDict.keys(), "hurtType":hurtType,"hurtID":hurtID} @@ -4769,7 +4773,10 @@ #掉落归属 if mapFBType != IPY_GameWorld.fbtNull: FBLogic.DoFB_DropOwner(curPlayer , curNPC) - + else: + if curNPC.GetLV()>=curPlayer.GetLV() - IpyGameDataPY.GetFuncCfg('DailyQuestKillMonster'): + PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_KillNPC) + killBossCntLimitDict = IpyGameDataPY.GetFuncCfg('KillBossCntLimit', 1) limitIndex = GameWorld.GetDictValueByKey(killBossCntLimitDict, npcID) if limitIndex != None: @@ -4798,8 +4805,7 @@ PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_BOSSHome, 1) PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1) - #击杀特定NPC成就 - PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillSpecificNPC, 1, [npcID]) + return #--------------------------------------------------------------------- @@ -4821,10 +4827,10 @@ #不是普通NPC elif npcObjType != IPY_GameWorld.gnotNormal: return - + npcID = curNPC.GetNPCID() #GameWorld.DebugLog("__MissionOnKillNPC isFeel=%s" % (isFeel), curPlayer.GetPlayerID()) killBossCntLimitDict = IpyGameDataPY.GetFuncCfg('KillBossCntLimit', 1) - limitIndex = GameWorld.GetDictValueByKey(killBossCntLimitDict, curNPC.GetNPCID()) + limitIndex = GameWorld.GetDictValueByKey(killBossCntLimitDict, npcID) isWorldBoos = limitIndex == 0 if isFeel: #击杀NPC触发摸怪任务事件 @@ -4836,7 +4842,8 @@ EventShell.EventRespons_OnKillById(curPlayer, curNPC) if isWorldBoos: EventShell.EventRespons_KillWorldBoss(curPlayer) - + #击杀特定NPC成就 + PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillSpecificNPC, 1, [npcID]) return def __GetIsLog(self): @@ -5006,7 +5013,7 @@ return max(value / pow(10, nlen), 1) -Def_CollNPCCfg_Len = 9 +Def_CollNPCCfg_Len = 10 ( Def_CollNPCCfg_CanTogether, # 是否允许同时采集 Def_CollNPCCfg_SysMsgMark, # 不可同时采集提示 @@ -5017,6 +5024,7 @@ Def_CollNPCCfg_ZhenQi, # 获得的真气/魔魂 Def_CollNPCCfg_GiveItemModeID, # 获得的物品信息模板编号 Def_CollNPCCfg_NotCostItemNotify, # 消耗品不足提示 +Def_CollNPCCfg_LimitSysMsgMark, #采集上限提示 ) = range(Def_CollNPCCfg_Len) @@ -5091,7 +5099,8 @@ GameWorld.DebugLog(" maxTime=%s,todayTime=%s" % (limitMaxTime, todayCollTime)) if limitMaxTime > 0 and todayCollTime >= limitMaxTime: - PlayerControl.NotifyCode(curPlayer, "GeRen_liubo_807125") + + PlayerControl.NotifyCode(curPlayer, collectNPCInfo[Def_CollNPCCfg_LimitSysMsgMark], [limitMaxTime]) return True # 采集消耗 @@ -5131,7 +5140,7 @@ PlayerControl.Sync_PrepareBegin(curPlayer, prepareTime, IPY_GameWorld.pstMissionCollecting, \ prepareID=curNPC.GetID()) - + FBLogic.OnBeginCollect(curPlayer, curNPC) ##添加这个NPC的伤血列表,用于判断可否同时采集,改为字典判断 AttackCommon.AddHurtValue(curNPC, curPlayer.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, 1) return @@ -5383,7 +5392,8 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollNpcIDCollTime % npcID, updCollTime) SyncCollNPCTime(curPlayer, npcIDList=[npcID]) GameWorld.DebugLog(" 增加当日采集次数: todayCollTime=%s,updCollTime=%s" % (todayCollTime, updCollTime)) - + #采集成就 + PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Collect, successCnt, [npcID]) SyncCollectionItemInfo(curPlayer, addExp, addMoney, addZhenQi, giveItemInfoList, npcID) #DataRecordPack.DR_CollectNPCOK(curPlayer, npcID, addMoney, addExp, addZhenQi, giveItemInfoList) return True @@ -5442,38 +5452,38 @@ GameWorld.DebugLog(" 最终可得到物品giveItemInfoList=%s" % giveItemInfoList) syncItemInfoList = [] # 同步的采集到的物品信息列表 - for itemType, itemID, itemCnt, isBind in giveItemInfoList: + for itemID, itemCnt, isBind in giveItemInfoList: if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem): break isBind = setBind or isBind - if itemType == 0: - getItemObj = ItemControler.GetOutPutItemObj(itemID) - elif itemType == 1: - itemDictData = ItemControler.GetAppointItemDictData(itemID, isBind) - getItemObj = ItemControler.GetItemByData(itemDictData) - elif itemType == 2: - quality = ItemCommon.GetRandEquipQualityByTable(itemID, "CollectEquipRandQuality") - if quality == 0: - isBroadcast = False - getItemObj = ItemCommon.RandNormalEquip(curPlayer, itemID, isBind, "CollectNormalEquip") - else: - getItemObj, isBroadcast = ItemCommon.RandGreateEquip(curPlayer, itemID, isBind, "CollectGreateEquip", quality) - if getItemObj == None: - continue - - itemID = getItemObj.GetItemTypeID() + + getItemObj = ItemControler.GetOutPutItemObj(itemID) +# elif itemType == 1: +# itemDictData = ItemControler.GetAppointItemDictData(itemID, isBind) +# getItemObj = ItemControler.GetItemByData(itemDictData) +# elif itemType == 2: +# quality = ItemCommon.GetRandEquipQualityByTable(itemID, "CollectEquipRandQuality") +# if quality == 0: +# isBroadcast = False +# getItemObj = ItemCommon.RandNormalEquip(curPlayer, itemID, isBind, "CollectNormalEquip") +# else: +# getItemObj, isBroadcast = ItemCommon.RandGreateEquip(curPlayer, itemID, isBind, "CollectGreateEquip", quality) +# if getItemObj == None: +# continue +# +# itemID = getItemObj.GetItemTypeID() userData = getItemObj.GetUserData() getItemObj.SetCount(itemCnt) getItemObj.SetIsBind(isBind) ItemCommon.NotifyItemDropByKill(curPlayer, getItemObj, npcID) - SendGameServerGoodItemRecord(mapID, npcID, curPlayer.GetPlayerName(), curPlayer.GetPlayerID(), itemID) + #SendGameServerGoodItemRecord(mapID, npcID, curPlayer.GetPlayerName(), curPlayer.GetPlayerID(), itemID) #可以放入背包 if not ItemControler.DoLogic_PutItemInPack(curPlayer, getItemObj, True, True, event=["CollectNPC", False, {"npcID":npcID}]): break - syncItemInfoList.append([itemType, itemID, itemCnt, isBind, userData]) + syncItemInfoList.append([itemID, itemCnt, isBind, userData]) return syncItemInfoList ## 采集结果同步 -- Gitblit v1.8.0