6001 【后端】【1.5.100】七日巡礼增加条件
| | |
| | | Def_WPAct_XMZZ, #仙魔之争 18
|
| | | Def_WPAct_FamilyWar, #仙魔联赛 19
|
| | | Def_WPAct_Login, #每日登录 20
|
| | | ) = range(1, 20+1)
|
| | | Def_WPAct_Horse, #激活某只坐骑 21
|
| | | Def_WPAct_Pet, #激活某只灵宠 22
|
| | | Def_WPAct_Dogz, #出战某只神兽 23
|
| | | Def_WPAct_Stone, #宝石总等级 24
|
| | | Def_WPAct_GodWeapon, #神兵总等级 25
|
| | | Def_WPAct_Rune, #穿戴某品质符印 26
|
| | | ) = range(1, 26+1)
|
| | |
|
| | | #可提前完成的周狂欢活动
|
| | | AheadFinishWPActList = [Def_WPAct_Horse, Def_WPAct_Pet, Def_WPAct_Dogz, Def_WPAct_Rune]
|
| | |
|
| | | # 套装枚举,普通套装,强化套装
|
| | | (EquipSuitType_Normal,
|
| | |
| | | import NetPackCommon
|
| | | import DataRecordPack
|
| | | import PlayerSuccess
|
| | | import PlayerWeekParty
|
| | | import ShareDefine
|
| | |
|
| | |
|
| | |
| | | #同步客户端
|
| | | Sycn_StoneHoleInfo(curPlayer, [equipIndex])
|
| | |
|
| | | totalStoneLV = GetTotalStoneLV(curPlayer)
|
| | | # 记录开服活动宝石总等级
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_StoneLV, totalStoneLV)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, totalStoneLV, False, True)
|
| | | return
|
| | |
|
| | | def GetTotalStoneLV(curPlayer):
|
| | | ##宝石总等级
|
| | | totalStoneLV = 0
|
| | | holeIndexList = GetAllEquipPlaceHoleIndex()
|
| | | gameData = GameWorld.GetGameData()
|
| | |
| | | continue
|
| | | gemLV = curGem.GetEffectByIndex(0).GetEffectValue(1)
|
| | | totalStoneLV += gemLV
|
| | | |
| | | # 记录开服活动宝石总等级
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_StoneLV, totalStoneLV)
|
| | | return
|
| | |
|
| | | return totalStoneLV
|
| | |
|
| | | #// A3 06 宝石升级 #tagCMEquipStoneUpgrade
|
| | | #struct tagCMEquipStoneUpgrade
|
| | |
| | | #通关符印塔成就
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PassRuneTower, 1, [passlv])
|
| | | PlayerBillboard.UpdateRuneTowerBillboard(curPlayer)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False, True)
|
| | | GameWorld.DebugLog(' 更新符印塔已通关数 %s' % passlv)
|
| | | return
|
| | |
|
| | |
| | | FBDict_BossTotalHP = 'FBDict_BossTotalHP' #BOSS血量
|
| | | FBDict_LastHurtTick = 'FBDict_LastHurtTick' #上次伤害时间
|
| | | FBDict_HasGiveAward = 'FBDict_HasGiveAward' # 是否有给奖励
|
| | | FBDict_HasAddCnt = 'FBDict_HasAddCnt' # 是否有扣次数
|
| | |
|
| | | # 副本通用配置
|
| | | (
|
| | |
| | | # @remarks 玩家主动离开副本.
|
| | | def DoExitFB(curPlayer, tick):
|
| | | # 玩家退出默认关闭副本
|
| | | #GameWorldProcess.CloseFB(tick)
|
| | | gameFB = GameWorld.GetGameFB()
|
| | | fbStep = gameFB.GetFBStep()
|
| | | if fbStep == FB_State_FreeTime:
|
| | | #退出时,若s级则补发奖励
|
| | | curStar = gameFB.GetGameFBDictByKey(FBDict_FBStar)
|
| | | if curStar == Def_MaxStar:
|
| | | __GiveFBPassPrize(curPlayer)
|
| | | GameWorldProcess.CloseFB(tick)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | gameFB.SetGameFBDict(FBDict_BossTotalHP, totalHP * 1000)
|
| | | gameFB.SetGameFBDict(FBDict_Speed, 1000) #速度默认1000
|
| | | gameFB.SetGameFBDict(FBDict_RemainHP, totalHP * 1000)
|
| | | gameFB.SetGameFBDict(FBDict_IsReduceing, 0)
|
| | | gameFB.SetGameFBDict(FBDict_LastHurtTick, 0)
|
| | | gameFB.SetGameFBDict(FBDict_HasGiveAward, 0)
|
| | | gameFB.SetGameFBDict(FBDict_StartTick, 0)
|
| | | gameFB.SetGameFBDict(FBDict_FBStar, 0)
|
| | | |
| | | prepareTick = __GetZhuXianCfg()[Def_PrepareTime] * 1000
|
| | | FBCommon.Sync_Player_TimeTick(IPY_GameWorld.tttAddUpTime, prepareTick)
|
| | | FBCommon.Sync_Player_TimeTick(IPY_GameWorld.tttWaitStart, prepareTick)
|
| | |
| | | # 给过关奖励
|
| | | prizeItemList = __GiveFBPassPrize(curPlayer, False)
|
| | |
|
| | | prizeDict = {FBCommon.Over_costTime:costTime, FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(prizeItemList)}
|
| | | prizeDict = {FBCommon.Over_costTime:costTime, FBCommon.Over_itemInfo:FBCommon.GetJsonItemList(prizeItemList),
|
| | | FBCommon.Over_grade:curStar}
|
| | | __SendZhuXianTowerOverInfo(curPlayer, fbLevel, True if prizeItemList else False, prizeDict)
|
| | |
|
| | | #任务
|
| | |
| | | for itemID, itemCnt, isBind in prizeItemList:
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem],
|
| | | event=["ZhuXianTower", False, {}])
|
| | | |
| | | #本次副本里第一次给奖励时扣次数
|
| | | if not gameFB.GetGameFBDictByKey(FBDict_HasAddCnt):
|
| | | FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_ZhuXianTower, 1)
|
| | | gameFB.SetGameFBDict(FBDict_HasAddCnt, 1)
|
| | |
|
| | | gameFB.SetGameFBDict(FBDict_HasGiveAward, 1)
|
| | |
|
| | |
| | | #领取奖励
|
| | | if fbStep != FB_State_FreeTime:
|
| | | return
|
| | | __GiveFBPassPrize(curPlayer, False)
|
| | | __GiveFBPassPrize(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | import SkillShell
|
| | | import PlayerSuccess
|
| | | import DataRecordPack
|
| | | import PlayerWeekParty
|
| | |
|
| | | import time
|
| | |
|
| | |
| | | GameWorld.DebugLog("神兽有装备未穿戴,无法助战!dogzID=%s,packIndex=%s" % (dogzID, i), playerID)
|
| | | return
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_DogzBattle, 1, [dogzID])
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Dogz, dogzID, False)
|
| | |
|
| | | isFight = True if batteState else False
|
| | | GameWorld.DebugLog("神兽助战状态变更!dogzID=%s,isFight=%s" % (dogzID, isFight), playerID)
|
| | |
| | | import GameFuncComm
|
| | | import SkillCommon
|
| | | import BuffSkill
|
| | | import ItemControler
|
| | | import PlayerWeekParty
|
| | | #import EventReport
|
| | | import IpyGameDataPY
|
| | | import PassiveBuffEffMng
|
| | |
| | | setFunc(curPlayer, lv)
|
| | | curPlayer.SendPropertyRefresh(notifyType, lv, False)
|
| | |
|
| | | totalLV = GetGodWeaponTotalLV(curPlayer)
|
| | | # 开服活动数据
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_GodWeaponLV, totalLV)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodWeapon, totalLV, False, True)
|
| | | return
|
| | |
|
| | | def GetGodWeaponTotalLV(curPlayer):
|
| | | ##获取神兵总等级
|
| | | totalLV = 0
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | maxType = ipyDataMgr.GetGodWeaponByIndex(ipyDataMgr.GetGodWeaponCount()-1).GetType()
|
| | | for gwType in xrange(1, maxType + 1):
|
| | | totalLV += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodWeaponLV % gwType)
|
| | | |
| | | # 开服活动数据
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_GodWeaponLV, totalLV)
|
| | | return
|
| | | return totalLV
|
| | |
|
| | | ## 神器开启
|
| | | # @return: 是否激活成功
|
| | |
| | | import PlayerMagicWeapon
|
| | | import PassiveBuffEffMng
|
| | | import CrossPlayerData
|
| | | import PlayerWeekParty
|
| | | #---------------------------------------------------------------------
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | |
| | | sumLV = GetHorseSumLV(curPlayer)
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_HorseLV, sumLV)
|
| | | PlayerMagicWeapon.SetMWPrivilegeData(curPlayer, ChConfig.MWPrivilege_Horse, sumLV)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Horse, horseID, False)
|
| | | |
| | | playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | itemRideHorse = playerEquip.GetAt(ShareDefine.retHorse)
|
| | | #无指定道具
|
| | |
| | | import GameMap
|
| | | import OpenServerCampaign
|
| | | import PlayerMagicWeapon
|
| | | import PassiveBuffEffMng
|
| | | import PlayerWeekParty
|
| | | import CalcNoLineEffect
|
| | | import CrossPlayerData
|
| | | import CalcLineEffect
|
| | |
| | |
|
| | | # 开服活动数据
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_PetLV, GetTotalPetLV(curPlayer))
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Pet, petNPCID, False)
|
| | | return True
|
| | |
|
| | |
|
| | |
| | | import IPY_GameWorld
|
| | | import OpenServerCampaign
|
| | | import DataRecordPack
|
| | | import PlayerWeekParty
|
| | |
|
| | | g_runeLVExpDict = {}
|
| | |
|
| | |
| | | runeItemPlusLV = ItemControler.GetRuneItemPlusLV(runeData) + 1 #客户端1开始
|
| | | totalLV += runeItemPlusLV
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_InlayRune, 1, [itemColor])
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Rune, itemColor, False)
|
| | | PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_RuneLvUp, totalLV)
|
| | | # 开服活动数据
|
| | | OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_RuneLV, totalLV)
|
| | |
| | | import PlayerControl
|
| | | import ItemControler
|
| | | import ChPyNetSendPack
|
| | | import Operate_EquipStone
|
| | | import PlayerGodWeapon
|
| | | import NetPackCommon
|
| | | import ShareDefine
|
| | | import PyGameData
|
| | |
| | | state = actWeekPartyInfo.get(ShareDefine.ActKey_State, 0)
|
| | | cfgID = actWeekPartyInfo.get(ShareDefine.ActKey_CfgID, 0)
|
| | | passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
|
| | | isOk = AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False)
|
| | | AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1)
|
| | | |
| | | playerWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyID, 0, ChConfig.Def_PDictType_WeekParty) # 玩家身上的活动ID
|
| | | if not isOk and state:
|
| | | if state:
|
| | | #每天都要触发
|
| | | AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Tower, passlv, False, True, False)
|
| | | AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Login, 1, False, False)
|
| | | AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Stone, Operate_EquipStone.GetTotalStoneLV(curPlayer), False, True, False)
|
| | | AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_GodWeapon, PlayerGodWeapon.GetGodWeaponTotalLV(curPlayer), False, True, False)
|
| | | SyncWeekPartyPlayerInfo(curPlayer)
|
| | | playerWeekPartyID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WeekPartyID, 0, ChConfig.Def_PDictType_WeekParty) # 玩家身上的活动ID
|
| | | # 活动ID 相同的话不处理
|
| | | if cfgID == playerWeekPartyID:
|
| | | #GameWorld.DebugLog("周狂欢活动ID不变,不处理!", curPlayer.GetPlayerID())
|
| | | return
|
| | | CheckWeekPartyActionCnt(curPlayer)
|
| | | # 未领取的奖励邮件发放
|
| | | if playerWeekPartyID:
|
| | | __SendWeekPartyMail(curPlayer, playerWeekPartyID)
|
| | |
|
| | | if not cfgID:
|
| | |
| | | return
|
| | |
|
| | |
|
| | | def AddWeekPartyActionCnt(curPlayer, actionID, addCnt=1, isAdd=True):
|
| | | def AddWeekPartyActionCnt(curPlayer, actionID, addCnt=1, isAdd=True, isCompatible=False, isSync=True):
|
| | | '''增加周狂欢相关活动完成次数'''
|
| | | #判断活动是否开启
|
| | | if not addCnt:
|
| | |
| | | dayIndex = actWeekPartyInfo.get(ShareDefine.ActKey_DayIndex, 0)
|
| | | if dayIndex >= len(templateIDList):
|
| | | return
|
| | | if actionID == ChConfig.Def_WPAct_GiftBag:
|
| | | if actionID in ChConfig.AheadFinishWPActList:
|
| | | isFind = False
|
| | | for day, dayTidList in enumerate(templateIDList[dayIndex:]):
|
| | | findTid = 0
|
| | |
| | | return
|
| | | updTimes = curTimes + addCnt
|
| | | else:
|
| | | if not isCompatible and addCnt != totalTimes:
|
| | | return
|
| | | updTimes = min(addCnt, totalTimes)
|
| | | realAddCnt = updTimes - curTimes
|
| | | if realAddCnt <= 0:
|
| | |
| | | updPoint = curPoint + addPoint
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WeekPartyPoint % dayIndex, updPoint, ChConfig.Def_PDictType_WeekParty)
|
| | | GameWorld.DebugLog(' 增加周狂欢相关活动完成次数 dayIndex=%s, findTid=%s, realAddCnt=%s,addPoint=%s' % (dayIndex, findTid, realAddCnt, addPoint))
|
| | | if isSync:
|
| | | SyncWeekPartyPlayerInfo(curPlayer, dayIndex, findTid)
|
| | | return True
|
| | |
|
| | |
|
| | | def CheckWeekPartyActionCnt(curPlayer):
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for actionType in ChConfig.AheadFinishWPActList:
|
| | | if actionType == ChConfig.Def_WPAct_Horse:
|
| | | for i in xrange(ipyDataMgr.GetHorseCount()):
|
| | | ipyData = ipyDataMgr.GetHorseByIndex(i)
|
| | | index = ipyData.GetHorseID()
|
| | | lv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Horser_LV % index, 0, ChConfig.Def_PDictType_Horse)
|
| | | if lv:
|
| | | AddWeekPartyActionCnt(curPlayer, actionType, index, False)
|
| | | elif actionType == ChConfig.Def_WPAct_Pet:
|
| | | petDataPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptPet)
|
| | | for petDataIndex in range(petDataPack.GetCount()):
|
| | | petItem = petDataPack.GetAt(petDataIndex)
|
| | | if petItem.IsEmpty():
|
| | | continue
|
| | | petNPCID = petItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
|
| | | AddWeekPartyActionCnt(curPlayer, actionType, petNPCID, False)
|
| | | elif actionType == ChConfig.Def_WPAct_Dogz:
|
| | | for i in xrange(ipyDataMgr.GetDogzCount()):
|
| | | ipyData = ipyDataMgr.GetDogzByIndex(i)
|
| | | if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
|
| | | AddWeekPartyActionCnt(curPlayer, actionType, ipyData.GetDogzID(), False)
|
| | | elif actionType == ChConfig.Def_WPAct_Rune:
|
| | | runeHoleCnt = IpyGameDataPY.GetFuncCfg("RuneUnlock", 4)
|
| | | for holeNum in xrange(1, runeHoleCnt + 1):
|
| | | runeData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Rune_Data % holeNum, 0)
|
| | | if not runeData:
|
| | | continue
|
| | | runeItemID = ItemControler.GetRuneItemID(runeData)
|
| | | itemData = GameWorld.GetGameData().GetItemByTypeID(runeItemID)
|
| | | if not itemData:
|
| | | continue
|
| | | itemColor = itemData.GetItemColor()
|
| | | AddWeekPartyActionCnt(curPlayer, actionType, itemColor, False)
|
| | | return
|
| | |
|
| | | def GetWeekPartyActionAward(curPlayer, day, templateID):
|
| | | '''领取周狂欢活动奖励'''
|
| | | templateID = GameWorld.ToIntDef(templateID, 0)
|