hch
2019-05-17 11b599e0259313a8af9452d80e8f99cd21d05f1f
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)
@@ -1937,6 +1937,67 @@
        if not curPlayer:
            continue
        NetPackCommon.SendFakePack(curPlayer, mapNPC)
    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 = 10
    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
@@ -5517,7 +5578,7 @@
def OnCollectNPCBegin(curPlayer, curNPC, tick):
    ## 采集NPC开始采集
    npcID = curNPC.GetNPCID()
    collectNPCIpyData = IpyGameDataPY.GetIpyGameData("CollectNPC", npcID)
    collectNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CollectNPC", npcID)
    if not collectNPCIpyData:
        #GameWorld.DebugLog("非特定采集NPC...")
        return False