From 59d00e9001195420f83a0a8e19ad799a34fa09a9 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 09 五月 2019 21:18:57 +0800 Subject: [PATCH] 3531 【BUG】【2.0】缥缈,宝箱怪掉落材料错误 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py | 166 +++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 112 insertions(+), 54 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py index c6ed964..135532a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py @@ -29,6 +29,7 @@ import ItemControler import PlayerMagicWeapon import PlayerFamilyRedPacket +import PlayerGatherSoul import IpyGameDataPY import EventShell import PyGameData @@ -41,9 +42,10 @@ import PlayerRune import Operate_EquipStone import Operate_EquipWash -import Operate_EquipSuitCompose +import PlayerFeastRedPacket import PlayerDogz import QuestCommon +import DataRecordPack ## 获取成就字典信息值 @@ -83,7 +85,6 @@ SetSuccFinish(curPlayer, succID, 0) Sync_SuccTypeIndexAwardRecord(curPlayer, [succID], True) #设置成未领取的在外层同步 - PlayerMagicWeapon.ActiveMagicWeapon(curPlayer, succID) EventShell.EventRespons_SuccessFinish(curPlayer, succID) return @@ -237,52 +238,53 @@ # @param None # @return def __CheckOldPlayerSuccess(curPlayer): - ''' 成就版本更新老玩家检查 - 正式上线后,成就的修改或者增加,一般是增加新成就,则需要对老玩家成就版本进行校正,检查成就完成情况 - 成就版本号递增 + ''' 成就版本更新老玩家检查 每次启动服务后 玩家第一次上线检查成就完成情况 ''' - Versions = 2 #版本号,往上增加 - + #Versions = 2 #版本号,往上增加 + initGameWorldTime = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_InitGameWorldTime) # 上线需要检查老玩家成就完成情况类型{成就类型:维护版本号, ...} - NeedCheckSuccTypeDict = { - ShareDefine.SuccType_GetMagicWeapon:2, - ShareDefine.SuccType_PassRuneTower:2, - ShareDefine.SuccType_GodWeapon:2, - ShareDefine.SuccType_HorseAllLV:2, - ShareDefine.SuccType_EquipPlusLV:2, - ShareDefine.SuccType_EquipColorItem:2, - ShareDefine.SuccType_EquipArmor:2, - ShareDefine.SuccType_EquipWeapon:2, - ShareDefine.SuccType_InlayRune:2, - ShareDefine.SuccType_RuneLvUp:2, - ShareDefine.SuccType_RealmlvUp:2, - ShareDefine.SuccType_PetClassLV:2, - ShareDefine.SuccType_InlayStone1:2, - ShareDefine.SuccType_InlayStone2:2, - ShareDefine.SuccType_XJMJGetExp:2, - ShareDefine.SuccType_EquipWashLV1:2, - ShareDefine.SuccType_EquipWashLV2:2, - ShareDefine.SuccType_EquipWashLV3:2, - ShareDefine.SuccType_EquipWing:2, - ShareDefine.SuccType_MWSkillUp:2, - ShareDefine.SuccType_EquipSuit:2, - ShareDefine.SuccType_FamilyTechLV:2, - ShareDefine.SuccType_AlchemyLV:2, - ShareDefine.SuccType_VIPLV:2, - ShareDefine.SuccType_StoneTotalLV:2, - ShareDefine.SuccType_XBXZ:2, - ShareDefine.SuccType_DogzBattle:2, - ShareDefine.SuccType_DogzEquipPlus:2, - ShareDefine.SuccType_MainTaskNode:2, - } + NeedCheckSuccTypeList = [ + ShareDefine.SuccType_GetMagicWeapon, + ShareDefine.SuccType_PassRuneTower, + ShareDefine.SuccType_GodWeapon, + ShareDefine.SuccType_HorseAllLV, + #ShareDefine.SuccType_EquipPlusLV, + ShareDefine.SuccType_EquipColorItem, + ShareDefine.SuccType_EquipArmor, + ShareDefine.SuccType_EquipWeapon, + ShareDefine.SuccType_InlayRune, + ShareDefine.SuccType_RuneLvUp, + ShareDefine.SuccType_RealmlvUp, + ShareDefine.SuccType_PetClassLV, + ShareDefine.SuccType_InlayStone1, + ShareDefine.SuccType_InlayStone2, + ShareDefine.SuccType_XJMJGetExp, + ShareDefine.SuccType_EquipWashLV1, + ShareDefine.SuccType_EquipWashLV2, + ShareDefine.SuccType_EquipWashLV3, + ShareDefine.SuccType_EquipWing, + ShareDefine.SuccType_MWSkillUp, + ShareDefine.SuccType_EquipSuit, + ShareDefine.SuccType_FamilyTechLV, + ShareDefine.SuccType_AlchemyLV, + ShareDefine.SuccType_VIPLV, + ShareDefine.SuccType_StoneTotalLV, + ShareDefine.SuccType_XBXZ, + ShareDefine.SuccType_DogzBattle, + ShareDefine.SuccType_DogzEquipPlus, + ShareDefine.SuccType_MainTaskNode, + ShareDefine.SuccType_InlayGatherSoul, + ShareDefine.SuccType_GatherSoulLvUp, + ShareDefine.SuccType_UseStoveBylv, + ] curCheckVersion = GetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion) + if curCheckVersion == initGameWorldTime: + GameWorld.DebugLog(' 本次开启服务器处理过成就检查,不再处理 ', curPlayer.GetID()) + return GameWorld.DebugLog("更新老玩家上线检查成就curCheckVersion=%s" % (curCheckVersion)) ipyDataMgr = IpyGameDataPY.IPY_Data() - for succType, version in NeedCheckSuccTypeDict.items(): - - if curCheckVersion >= version: - continue + for succType in NeedCheckSuccTypeList: if succType == ShareDefine.SuccType_GetMagicWeapon: for i in xrange(ipyDataMgr.GetTreasureCount()): @@ -298,6 +300,7 @@ passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV) DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PassRuneTower, 1, [passlv]) elif succType == ShareDefine.SuccType_GodWeapon: + ResetSuccessByType(curPlayer, succType) maxType = ipyDataMgr.GetGodWeaponByIndex(ipyDataMgr.GetGodWeaponCount()-1).GetType() for i in xrange(1, maxType + 1): weaponLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodWeaponLV % i) @@ -316,7 +319,7 @@ ResetSuccessByType(curPlayer, succType) for pType, indexList in ChConfig.Pack_EquipPart_CanPlusStar.items(): for i in indexList: - equipPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, pType, i) + equipPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, pType, i) for pluslv in xrange(1, equipPartStarLV+1): DoAddSuccessProgress(curPlayer, succType, 1, [pluslv]) @@ -324,7 +327,10 @@ DoEquipSuccessLogic(curPlayer) elif succType in [ShareDefine.SuccType_InlayRune, ShareDefine.SuccType_RuneLvUp]: PlayerRune.DoRuneSuccessLogic(curPlayer) + elif succType in [ShareDefine.SuccType_InlayGatherSoul, ShareDefine.SuccType_GatherSoulLvUp]: + PlayerGatherSoul.DoGatherSoulSuccessLogic(curPlayer) elif succType == ShareDefine.SuccType_RealmlvUp: + ResetSuccessByType(curPlayer, succType) UptateSuccessProgress(curPlayer, succType, curPlayer.GetOfficialRank()) elif succType == ShareDefine.SuccType_PetClassLV: ResetSuccessByType(curPlayer, succType) @@ -346,6 +352,7 @@ elif succType in [ShareDefine.SuccType_EquipWashLV1,ShareDefine.SuccType_EquipWashLV2,ShareDefine.SuccType_EquipWashLV3]: Operate_EquipWash.EquipWashSuccess(curPlayer) elif succType == ShareDefine.SuccType_MWSkillUp: + ResetSuccessByType(curPlayer, succType) skillManager = curPlayer.GetSkillManager() for i in range(0, skillManager.GetSkillCount()): curSkill = skillManager.GetSkillByIndex(i) @@ -353,15 +360,17 @@ curSkillLV = curSkill.GetSkillLV() UptateSuccessProgress(curPlayer, succType, curSkillLV, [curSkill.GetSkillTypeID()]) - elif succType == ShareDefine.SuccType_EquipSuit: - Operate_EquipSuitCompose.DoSuiteSuccess(curPlayer) +# elif succType == ShareDefine.SuccType_EquipSuit: +# Operate_EquipSuitCompose.DoSuiteSuccess(curPlayer) elif succType == ShareDefine.SuccType_FamilyTechLV: + ResetSuccessByType(curPlayer, succType) techNeedLVDict = IpyGameDataPY.GetFuncEvalCfg('FamilyTechNeedLV', 1, {}) techIDList = techNeedLVDict.keys() for techID in techIDList: techLV = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTechLV % techID) UptateSuccessProgress(curPlayer, succType, techLV, [techID]) elif succType == ShareDefine.SuccType_AlchemyLV: + ResetSuccessByType(curPlayer, succType) alchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV) UptateSuccessProgress(curPlayer, succType, alchemyLV) elif succType == ShareDefine.SuccType_VIPLV: @@ -388,9 +397,21 @@ missionID = succData.condition[0] if QuestCommon.GetHadFinishMainMission(curPlayer, missionID): DoAddSuccessProgress(curPlayer, succType, 1, [missionID]) - - SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion, Versions) - GameWorld.DebugLog("更新老玩家上线检查成就updCheckVersions=%s" % (Versions)) + elif succType == ShareDefine.SuccType_UseStoveBylv: + ResetSuccessByType(curPlayer, succType) + for i in xrange(ipyDataMgr.GetAttrFruitCount()): + ipyData = ipyDataMgr.GetAttrFruitByIndex(i) + fruitItemID = ipyData.GetID() + hasUseCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitEatCnt % fruitItemID) + if ipyData.GetFuncID() == ShareDefine.Def_AttrFruitFunc_Stove: + itemData = GameWorld.GetGameData().GetItemByTypeID(fruitItemID) + if not itemData: + continue + DoAddSuccessProgress(curPlayer, succType, hasUseCnt, [itemData.GetLV()]) + + DataRecordPack.DR_CheckOldPlayerSuccess(curPlayer) + SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion, initGameWorldTime) + GameWorld.DebugLog("更新老玩家上线检查成就updCheckVersions=%s" % (initGameWorldTime), curPlayer.GetID()) return ## 成就OnWeek @@ -413,6 +434,29 @@ SetSuccHasGot(curPlayer, succID, False) resetList.append(succID) GameWorld.DebugLog(" OnWeek 重置成就类型: succID=%s" % (succID)) + if resetList: + Sync_SuccTypeIndexAwardRecord(curPlayer, resetList, True) + Sync_SuccessInfo(curPlayer, resetList, True) + return + +def DoResetSuccessIDList(curPlayer, resetSuccIDList): + ## 重置成就相关数据 + if not resetSuccIDList: + return + resetList = [] + for succID in resetSuccIDList: + succData = GetSuccDataMng().GetSuccessData(succID) + if not succData: + continue + succType = succData.succType + condition = succData.condition + #if not GetSuccFinishValue(curPlayer, succType, condition): + # continue + SetSuccFinishValue(curPlayer, succType, condition, 0) + SetSuccFinish(curPlayer, succID, False) + SetSuccHasGot(curPlayer, succID, False) + resetList.append(succID) + GameWorld.DebugLog(" 重置成就类型: succType=%s,succID=%s" % (succType, succID)) if resetList: Sync_SuccTypeIndexAwardRecord(curPlayer, resetList, True) Sync_SuccessInfo(curPlayer, resetList, True) @@ -517,11 +561,11 @@ itemQuality = curEquip.GetItemQuality() classLV = ItemCommon.GetItemClassLV(curEquip) - if equipIndex not in [ShareDefine.retWing,ShareDefine.retGuard,ShareDefine.retHorse]: + if equipIndex not in [ShareDefine.retWing,ShareDefine.retGuard1,ShareDefine.retGuard2,ShareDefine.retHorse]: DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipColorItem, 1, [classLV, itemColor]) - if equipIndex in ChConfig.BaseEquipPlace_Weapon: + if equipIndex in ChConfig.EquipPlace_BaseWeapon: DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipWeapon, 1, [itemColor, itemQuality, classLV]) - elif equipIndex in ChConfig.BaseEquipPlace_Armor: + elif equipIndex in ChConfig.EquipPlace_BaseArmor: DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipArmor, 1, [itemColor, itemQuality, classLV]) elif equipIndex == ShareDefine.retWing: @@ -537,6 +581,9 @@ def UptateSuccessProgress(curPlayer, successType, newCnt, condition=[]): if successType not in ShareDefine.SuccessTypeList: return + if successType in ShareDefine.FeastRedPackSuccessTypeList: + if not PlayerFeastRedPacket.GetFeastRedPacketState(): + return succInfoList = GetSuccDataMng().GetSuccDataByType(successType) if not succInfoList: return @@ -558,6 +605,11 @@ succID = succDataObj.succID cond = succDataObj.condition + if successType in ShareDefine.FeastRedPackSuccessTypeList: + todayFeastSuccIDList = PlayerFeastRedPacket.GetTodayFeastSuccIDList() + if not todayFeastSuccIDList or succID not in todayFeastSuccIDList: + #GameWorld.DebugLog(" 非今日节日红包成就,不增加进度! succID=%s,todayFeastSuccIDList=%s" % (succID, todayFeastSuccIDList)) + return isUnDownCheck = successType in ShareDefine.UnDownCheckSuccessTypeList isContain = successType in ShareDefine.ContainSuccessTypeList # 已完成的不再检查 @@ -628,7 +680,14 @@ def DoAddSuccessProgress(curPlayer, successType, addCnt, condition=[], delayCalc=True): #GameWorld.DebugLog("DoAddSuccessProgress type=%s,addCnt=%s,condition=%s" # % (successType, addCnt, condition), curPlayer.GetPlayerID()) - + if GameWorld.IsCrossServer(): + return + + if successType in ShareDefine.FeastRedPackSuccessTypeList: + if not PlayerFeastRedPacket.GetFeastRedPacketState(): + #GameWorld.DebugLog("非节日红包活动时间,不增加成就!successType=%s" % successType) + return + playerID = curPlayer.GetID() if delayCalc and successType not in ShareDefine.NeedResetSuccessTypeList: if playerID not in PyGameData.g_delaySuccessDict: @@ -951,8 +1010,7 @@ # 给物品 if isGiveItem: for itemID, itemCnt in itemDict.items(): - isPutIn = ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 1, - [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere], True) + isPutIn = ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere]) #给钱 for moneyType, value in succData.moneyDict.items(): -- Gitblit v1.8.0