From b965081066ea579c45c73f08cd9cd61bc157ac9f Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 09 五月 2019 11:15:45 +0800
Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(防范跨服妖王关闭线路时导致的报错)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 69 ++++++++++++++++++++++++++++++++--
1 files changed, 65 insertions(+), 4 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 673aadb..30c0148 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -1222,7 +1222,7 @@
itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
if not itemData:
continue
- itemJob = itemData.GetJobLimit() / 100
+ itemJob = itemData.GetJobLimit()
if itemJob and itemJob != curPlayer.GetJob():
# 非本职业可用,不掉落
GameWorld.DebugLog("全服击杀次数必掉,非本职业可用,不掉落! itemID=%s" % itemID)
@@ -1236,7 +1236,7 @@
itemData = GameWorld.GetGameData().GetItemByTypeID(rItemID)
if not itemData:
continue
- itemJob = itemData.GetJobLimit() / 100
+ itemJob = itemData.GetJobLimit()
if itemJob and itemJob != curPlayer.GetJob():
# 非本职业可用,不掉落
GameWorld.DebugLog("全服击杀次数必掉随机,非本职业可用,不掉落! rItemID=%s" % rItemID)
@@ -1275,7 +1275,7 @@
if itemData.GetItemColor() != color:
continue
suiteID = itemData.GetSuiteID()
- itemJob = itemData.GetJobLimit() / 100
+ itemJob = itemData.GetJobLimit()
itemPlace = itemData.GetEquipPlace()
itemID = itemData.GetItemTypeID()
if itemPlace not in filterItemIDDict:
@@ -1401,7 +1401,7 @@
if not itemData:
GameWorld.ErrLog("掉落物品ID不存在, dropItemID=%s" % dropItemID)
continue
- itemJob = itemData.GetJobLimit() / 100
+ itemJob = itemData.GetJobLimit()
if isJobLimit and itemJob and itemJob != curPlayer.GetJob():
# 非本职业可用,不掉落
#GameWorld.DebugLog("非本职业可用,不掉落! dropItemID=%s" % dropItemID)
@@ -1940,6 +1940,67 @@
return
+#// B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
+#
+#struct tagCMSummonPriWoodPile
+#{
+# tagHead Head;
+# DWORD NPCID;
+# BYTE Count; //默认1个,最多5个
+#};
+def OnSummonPriWoodPile(index, clientData, tick):
+ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+ npcID = clientData.NPCID
+ count = clientData.Count
+ SummonPriWoodPile(curPlayer, npcID, count)
+ return
+
+def SummonPriWoodPile(curPlayer, npcID, count):
+ ''' 召唤私有专属木桩怪
+ '''
+
+ maxCount = 5
+ nowCount = 0
+ # 只允许存在一个私有木桩
+ indexList = range(curPlayer.GetSummonCount())
+ for index in indexList[::-1]:
+ summonNPC = curPlayer.GetSummonNPCAt(index)
+ if not summonNPC:
+ continue
+ npcType = summonNPC.GetType()
+ if npcType not in [ChConfig.ntPriWoodPilePVE, ChConfig.ntPriWoodPilePVP]:
+ continue
+ if nowCount >= maxCount or summonNPC.GetNPCID() != npcID:
+ SetDeadEx(summonNPC)
+ else:
+ nowCount += 1
+
+ summonCount = min(count, maxCount - nowCount)
+ #GameWorld.DebugLog("召唤: count=%s,maxCount=%s,nowCount=%s,summonCount=%s"
+ # % (count, maxCount, nowCount, summonCount))
+ if summonCount <= 0:
+ return
+
+ for _ in xrange(summonCount):
+ summonNPC = curPlayer.SummonNewNPC()
+
+ #设置召唤兽基础信息
+ summonNPC.SetNPCTypeID(npcID)
+ #初始化
+ InitNPC(summonNPC)
+
+ #玩家召唤兽列表添加召唤兽,召唤兽添加主人
+ summonNPC.SetOwner(curPlayer)
+ summonNPC.SetDict(ChConfig.Def_NPC_Dict_SummonMapNPCPlayerID, curPlayer.GetPlayerID())
+
+ #将召唤兽召唤出来
+ #玩家周围随机出生点
+ #技能召唤坐标 ChConfig.Def_SummonAppearDist
+ summonPos = GameMap.GetEmptyPlaceInArea(curPlayer.GetPosX(), curPlayer.GetPosY(), 3)
+ summonNPC.Reborn(summonPos.GetPosX(), summonPos.GetPosY())
+
+ return
+
## 设置npc死亡及自身处理(请不要将游戏逻辑加在此函数中)
# @param curNPC:npc实例
# @return
--
Gitblit v1.8.0