From f6da6b8d7d635786271d4e0ed923b843c5b59676 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期二, 16 四月 2019 20:14:52 +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 | 94 ++++++++++++++++++++++++++++++++++++---------- 1 files changed, 73 insertions(+), 21 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 b01f4b0..ba806e7 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py @@ -5487,21 +5487,6 @@ return max(value / pow(10, nlen), 1) -Def_CollNPCCfg_Len = 10 -( -Def_CollNPCCfg_CanTogether, # 是否允许同时采集 -Def_CollNPCCfg_SysMsgMark, # 不可同时采集提示 -Def_CollNPCCfg_CostItemInfo, # 采集消耗物品信息 -Def_CollNPCCfg_PrepareTime, # 采集时间毫秒 -Def_CollNPCCfg_ExpFormat, # 获得经验公式 -Def_CollNPCCfg_MoneyFormat, # 获得金币公式 -Def_CollNPCCfg_ZhenQi, # 获得的真气/魔魂 -Def_CollNPCCfg_GiveItemModeID, # 获得的物品信息模板编号 -Def_CollNPCCfg_NotCostItemNotify, # 消耗品不足提示 -Def_CollNPCCfg_LimitSysMsgMark, #采集上限提示 -) = range(Def_CollNPCCfg_Len) - - def CheckCanCollectByNPCID(curPlayer, npcID, collectNPCIpyData): # 根据NPCID判断是否可以采集 @@ -5667,6 +5652,24 @@ DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData) return +#// A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward +# +#struct tagCMGetCustomSceneCollectAward +#{ +# tagHead Head; +# DWORD NPCID; //采集的NPCID +#}; +def OnGetCustomSceneCollectAward(index, clientData, tick): + curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) + npcID = clientData.NPCID + if not curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene): + GameWorld.DebugLog("非自定义场景中,无法获取定义采集奖励!") + return + collectNPCIpyData = IpyGameDataPY.GetIpyGameData("CollectNPC", npcID) + if collectNPCIpyData: + DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData) + return + def DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData, collectCnt=1): GameWorld.DebugLog("给采集奖励: npcID=%s,collectCnt=%s" % (npcID, collectCnt)) if collectCnt <= 0: @@ -5684,13 +5687,52 @@ updCollTime = todayCollTime + collectCnt PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollNpcIDCollTime % npcID, updCollTime) SyncCollNPCTime(curPlayer, [npcID]) - GameWorld.DebugLog(" 增加当日采集次数: todayCollTime=%s,updCollTime=%s" % (todayCollTime, updCollTime)) - - giveItemList = collectNPCIpyData.GetCollectAward() - if giveItemList: - itemID, itemCount, isAuctionItem = giveItemList - ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem]) + GameWorld.DebugLog(" 增加采集次数: todayCollTime=%s,updCollTime=%s" % (todayCollTime, updCollTime)) + awardIitemList = [] + collectAwardCfg = collectNPCIpyData.GetCollectAward() + collectAppointAwardCfg = collectNPCIpyData.GetCollectAppointAward() + if collectAppointAwardCfg: + collTotalTime = min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CollNpcIDCollTimeTotal % npcID) + 1, ChConfig.Def_UpperLimit_DWord) + if collTotalTime in collectAppointAwardCfg: + awardIitemList.append(collectAppointAwardCfg[collTotalTime]) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CollNpcIDCollTimeTotal % npcID, collTotalTime) + #GameWorld.DebugLog("采集次数定制奖励: collTotalTime=%s,awardIitemList=%s" % (collTotalTime, awardIitemList)) + + if not awardIitemList: + alchemyDiffLV = collectNPCIpyData.GetAlchemyDiffLV() + giveItemWeightList = [] + if alchemyDiffLV: + curAlchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV) + for itemInfo in collectAwardCfg: + itemID = itemInfo[1][0] + itemData = GameWorld.GetGameData().GetItemByTypeID(itemID) + if not itemData: + continue + if ItemCommon.GetItemClassLV(itemData) > curAlchemyLV + alchemyDiffLV: + continue + giveItemWeightList.append(itemInfo) + else: + giveItemWeightList = collectAwardCfg + + giveItemInfo = GameWorld.GetResultByWeightList(giveItemWeightList) + awardIitemList.append(giveItemInfo) + + if awardIitemList: + for itemID, itemCount, isAuctionItem in awardIitemList: + ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem]) + if collectNPCIpyData.GetNotifyCollectResult(): + awardPack = ChPyNetSendPack.tagMCCollectAwardItemInfo() + awardPack.CollectNPCID = npcID + for itemID, itemCount, isAuctionItem in awardIitemList: + awardItem = ChPyNetSendPack.tagMCCollectAwardItem() + awardItem.ItemID = itemID + awardItem.Count = itemCount + awardItem.IsAuctionItem = isAuctionItem + awardPack.AwardItemList.append(awardItem) + awardPack.Count = len(awardPack.AwardItemList) + NetPackCommon.SendFakePack(curPlayer, awardPack) + #采集成就 PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_Collect, collectCnt, [npcID]) #SyncCollectionItemInfo(curPlayer, addExp, addMoney, addZhenQi, giveItemInfoList, npcID) @@ -5740,11 +5782,20 @@ def CollNPCTimeOnDay(curPlayer): ## 采集NPCOnDay处理 + DoResetCollectNPCTimeByType(curPlayer, 1) + return + +def DoResetCollectNPCTimeByType(curPlayer, resetTypeList=[]): + '''重置采集物采集次数 + 重置类型: 0-不重置,1-每日5点,12-灵草园重置,14-仙草园重置 + ''' resetNPCIDList = [] ipyDataMgr = IpyGameDataPY.IPY_Data() for index in xrange(ipyDataMgr.GetCollectNPCCount()): ipyData = ipyDataMgr.GetCollectNPCByIndex(index) npcID = ipyData.GetNPCID() + if resetTypeList and ipyData.GetCollectResetType() not in resetTypeList: + continue if not ipyData.GetMaxCollectCount(): continue if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CollNpcIDCollTime % npcID): @@ -5753,6 +5804,7 @@ resetNPCIDList.append(npcID) if resetNPCIDList: + #GameWorld.DebugLog("重置采集次数: resetTypeList=%s,resetNPCIDList=%s" % (resetTypeList, resetNPCIDList), curPlayer.GetPlayerID()) SyncCollNPCTime(curPlayer, resetNPCIDList) return -- Gitblit v1.8.0