From 1dbff913370634e8aea37f2940f2a0d261d4dcb3 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期一, 27 五月 2019 20:05:10 +0800 Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py | 58 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 45 insertions(+), 13 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py index 2bcdc4d..a181345 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py @@ -19,6 +19,7 @@ import ChConfig import ChPyNetSendPack import NetPackCommon +import PlayerBossReborn import ShareDefine import GameWorld import GameLogic_CrossGrassland @@ -26,12 +27,14 @@ import IpyGameDataPY import PlayerActivity import ItemControler +import ItemCommon import PyGameData import EventShell +import FBCommon +import NPCCommon import copy import random -import FBCommon #0-奇遇 1-宝藏 2-仙草 3-妖王 4-灵草 ( @@ -57,6 +60,12 @@ AdventuresType4, ) = range(1, 5) +#事件副本类型 +( +FDEventFBType_Client, #前端本0 +FDEventFBType_Server, #本服本1 +FDEventFBType_CrossServer, #跨服本2 +) = range(3) def OnLogin(curPlayer): NotifyVisitFairyDomainInfo(curPlayer) @@ -130,7 +139,7 @@ if fairyDomainState != 2 and not PlayerActivity.AddDailyActionFinishCnt(curPlayer, dailyID): GameWorld.DebugLog(" 寻访仙域次数不足!") return - + #随机事件 重置事件状态 visitCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainVisitCnt) appointIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog('FairyDomainAppoint', visitCnt + 1) @@ -140,10 +149,11 @@ fdEventIDList.append(appointIpyData.GetEventID()) else: fdEventTypeDict = {} - #先随机奇遇事件 - fortuitousEventRate = IpyGameDataPY.GetFuncCfg('ImmortalDomain') - if GameWorld.CanHappen(fortuitousEventRate): - fdEventTypeDict[FDEventType0] = 1 + #先随机独立事件 + singleEventRateDict = IpyGameDataPY.GetFuncCfg('ImmortalDomain') + for eventType, rate in singleEventRateDict.items(): + if GameWorld.CanHappen(rate): + fdEventTypeDict[eventType] = 1 otherCnt = GameWorld.GetResultByRandomList(otherCntRateList, 0) if otherCnt: @@ -212,10 +222,13 @@ #通知 NotifyVisitFairyDomainInfo(curPlayer, fdEventIDList) NotifyFairyAdventuresInfo(curPlayer) + + PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_FairyDomain, 1) return def EndFairyDomain(curPlayer): + GameWorld.DebugLog("EndFairyDomain", curPlayer.GetID()) ##结束寻访 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainState, 0) otherCntRateList = IpyGameDataPY.GetFuncEvalCfg('ImmortalDomain', 2) @@ -301,14 +314,14 @@ return if curState == state: return True - + ipyData = IpyGameDataPY.GetIpyGameData('FairyDomain', fdeventID) + if not ipyData: + return if state == FDEventState_Visiting: if curState != FDEventState_CanVisit: GameWorld.DebugLog('缥缈仙域事件状态设置错误,fdeventID=%s, state=%s, curState=%s' % (fdeventID, state, curState)) return - ipyData = IpyGameDataPY.GetIpyGameData('FairyDomain', fdeventID) - if not ipyData: - return + costEnergy = ipyData.GetCostEnergy() curEnergy = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainEnergy) if curEnergy < costEnergy: @@ -325,13 +338,13 @@ # if curState != FDEventState_Visiting: # GameWorld.Log('缥缈仙域事件状态设置错误,fdeventID=%s, state=%s, curState=%s' % (fdeventID, state, curState)) # return - EventShell.EventRespons_FairyDomain(curPlayer) + EventShell.EventRespons_FairyDomain(curPlayer, ipyData.GetEventType()) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainEventState % fdeventID, state) NotifyVisitFairyDomainInfo(curPlayer, [fdeventID], 0) return True -def NotifyVisitFairyDomainInfo(curPlayer, fdEventList=[], isAll=1): +def NotifyVisitFairyDomainInfo(curPlayer, fdEventList=None, isAll=1): if not fdEventList: syncFDEventList = [] otherCntRateList = IpyGameDataPY.GetFuncEvalCfg('ImmortalDomain', 2) @@ -432,11 +445,14 @@ if not gearAwardList: return itemRateList = gearAwardList[index] if index < len(gearAwardList) else gearAwardList[-1] + itemRateList = ItemCommon.GetWeightItemListByAlchemyDiffLV(curPlayer, itemRateList, 1) giveItemList = [GameWorld.GetResultByWeightList(itemRateList)] else: giveItemList = [ipyData.GetBasicAward()] ItemControler.GivePlayerItemOrMail(curPlayer, giveItemList) + for itemInfo in giveItemList: + NPCCommon.SendVirtualItemDrop(curPlayer, itemInfo[0], 0, 0, '') msgDict = {FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(giveItemList)} FBCommon.Notify_FB_Over(curPlayer, msgDict) GameWorld.DebugLog('缥缈奇遇领奖 msgDict=%s, fdeventID=%s' % (msgDict, fdeventID)) @@ -449,4 +465,20 @@ ipyData = IpyGameDataPY.GetIpyGameDataByCondition('FairyDomainAppoint', {'Cnt':visitCnt, 'EventID':fdEventID}, False, False) if not ipyData: return - return ipyData.GetAward() + job = curPlayer.GetJob() + itemList = [] + for itemInfo in ipyData.GetAward(): + if type(itemInfo[0]) == dict: + if job not in itemInfo[0]: + continue + itemList.append([itemInfo[0][job], itemInfo[1], itemInfo[2]]) + else: + itemList.append(itemInfo) + + for itemRateList in ipyData.GetRandomAward(): + itemRateList = ItemCommon.GetWeightItemListByAlchemyDiffLV(curPlayer, itemRateList, 1) + giveItem = GameWorld.GetResultByWeightList(itemRateList) + if not giveItem: + continue + itemList.append(giveItem) + return itemList -- Gitblit v1.8.0