| | |
| | | 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
|
| | |
| | |
|
| | | self.__AllKillerDict, curTeam, hurtType, hurtID = self.__FindNPCKillerInfo()
|
| | | self.__OwnerHurtType, self.__OwnerHurtID = hurtType, hurtID
|
| | | isGameBoss = ChConfig.IsGameBoss(curNPC)
|
| | |
|
| | | #最后一击处理
|
| | | self.__DoLastTimeHurtLogic()
|
| | |
| | | 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}
|
| | |
| | | return max(value / pow(10, nlen), 1)
|
| | |
|
| | |
|
| | | Def_CollNPCCfg_Len = 9
|
| | | Def_CollNPCCfg_Len = 10
|
| | | (
|
| | | Def_CollNPCCfg_CanTogether, # 是否允许同时采集
|
| | | Def_CollNPCCfg_SysMsgMark, # 不可同时采集提示
|
| | |
| | | Def_CollNPCCfg_ZhenQi, # 获得的真气/魔魂
|
| | | Def_CollNPCCfg_GiveItemModeID, # 获得的物品信息模板编号
|
| | | Def_CollNPCCfg_NotCostItemNotify, # 消耗品不足提示
|
| | | Def_CollNPCCfg_LimitSysMsgMark, #采集上限提示
|
| | | ) = range(Def_CollNPCCfg_Len)
|
| | |
|
| | |
|
| | |
| | | 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
|
| | |
|
| | | # 采集消耗
|
| | |
| | |
|
| | | 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
|
| | |
| | | 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
|
| | |
| | | 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
|
| | |
|
| | | ## 采集结果同步
|