From f460b6035d693dd40c361f7c289c5dac2a2a32a1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 16 十月 2018 16:30:12 +0800
Subject: [PATCH] 4201 【主干】【后端】新增战斗力参数:移动速度百分比
---
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