From e3df247e5d0ad9ec44a4eed28c1fc7c9795a7419 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 24 十一月 2018 18:20:06 +0800
Subject: [PATCH] 5031 子 【优化】【1.3】神兵系统修改 / 【后端】【1.3】神兵特效解锁时的系统广播
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py | 183 +++++++++++++++++++++++++++++++++++++++------
1 files changed, 157 insertions(+), 26 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 5f9aa08..484338f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSuccess.py
@@ -37,6 +37,14 @@
import datetime
import time
import math
+import ChEquip
+import PlayerRune
+import Operate_EquipStone
+import Operate_EquipWash
+import Operate_EquipSuitCompose
+import PlayerDogz
+import QuestCommon
+import DataRecordPack
## 获取成就字典信息值
@@ -216,7 +224,7 @@
# 检查老玩家
- #__CheckOldPlayerSuccess(curPlayer)
+ __CheckOldPlayerSuccess(curPlayer)
# 检查达成与否(有些可能改过上限,然后玩家可以完成,上线统一做一次检查)
for succType in ShareDefine.SuccessTypeList:
@@ -230,36 +238,159 @@
# @param None
# @return
def __CheckOldPlayerSuccess(curPlayer):
- ''' 成就版本更新老玩家检查
- 正式上线后,成就的修改或者增加,一般是增加新成就,则需要对老玩家成就版本进行校正,检查成就完成情况
- 成就版本号递增
+ ''' 成就版本更新老玩家检查 每次启动服务后 玩家第一次上线检查成就完成情况
'''
- Versions = 2 #版本号,往上增加
-
+ #Versions = 2 #版本号,往上增加
+ initGameWorldTime = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_InitGameWorldTime)
# 上线需要检查老玩家成就完成情况类型{成就类型:维护版本号, ...}
- NeedCheckSuccTypeDict = {
- }
+ 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,
+ ]
curCheckVersion = GetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion)
+ if curCheckVersion == initGameWorldTime:
+ GameWorld.DebugLog(' 本次开启服务器处理过成就检查,不再处理 ', curPlayer.GetID())
+ return
GameWorld.DebugLog("更新老玩家上线检查成就curCheckVersion=%s" % (curCheckVersion))
- for succType, version in NeedCheckSuccTypeDict.items():
-
- if curCheckVersion >= version:
- continue
-
-# condition = 0
-# if succType == ShareDefine.SuccType_MainTaskNode: #主线任务结点
-# succInfoDict = GetSuccDataMng().GetSuccDataByType(ShareDefine.SuccType_MainTaskNode)
-# condition = QuestCommon.GetCurMainTaskState(curPlayer, succInfoDict)
-# addCnt = 1 if condition >= 0 else 0
-#
-# else:
-# continue
-#
-# DoAddSuccessProgress(curPlayer, succType, addCnt, condition)
-
- SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion, Versions)
- GameWorld.DebugLog("更新老玩家上线检查成就updCheckVersions=%s" % (Versions))
+ ipyDataMgr = IpyGameDataPY.IPY_Data()
+ for succType in NeedCheckSuccTypeList:
+ if succType == ShareDefine.SuccType_GetMagicWeapon:
+
+ for i in xrange(ipyDataMgr.GetTreasureCount()):
+ treasureIpyData = ipyDataMgr.GetTreasureByIndex(i)
+ magicWeaponID = treasureIpyData.GetID()
+ isActive = PlayerMagicWeapon.GetIsActiveMagicWeapon(curPlayer, magicWeaponID)
+ if not isActive:
+ continue
+ curMWLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MagicWeaponLV % magicWeaponID)
+ for lv in xrange(curMWLV+1):
+ DoAddSuccessProgress(curPlayer, succType, 1, [magicWeaponID, lv])
+ elif succType == ShareDefine.SuccType_PassRuneTower:
+ passlv = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_TrialTower_PassLV)
+ DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PassRuneTower, 1, [passlv])
+ elif succType == ShareDefine.SuccType_GodWeapon:
+ maxType = ipyDataMgr.GetGodWeaponByIndex(ipyDataMgr.GetGodWeaponCount()-1).GetType()
+ for i in xrange(1, maxType + 1):
+ weaponLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GodWeaponLV % i)
+ UptateSuccessProgress(curPlayer, succType, weaponLV, [i])
+ elif succType == ShareDefine.SuccType_HorseAllLV:
+ ResetSuccessByType(curPlayer, succType)
+ 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 not lv:
+ continue
+ for rlv in xrange(1, lv+1):
+ DoAddSuccessProgress(curPlayer, succType, 1, [index, rlv])
+ elif succType == ShareDefine.SuccType_EquipPlusLV:
+ ResetSuccessByType(curPlayer, succType)
+ for pType, indexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
+ for i in indexList:
+ equipPartStarLV = ChEquip.GetEquipPartStarLV(curPlayer, pType, i)
+ for pluslv in xrange(1, equipPartStarLV+1):
+ DoAddSuccessProgress(curPlayer, succType, 1, [pluslv])
+
+ elif succType in [ShareDefine.SuccType_EquipColorItem, ShareDefine.SuccType_EquipArmor, ShareDefine.SuccType_EquipWeapon, ShareDefine.SuccType_EquipWing]:
+ DoEquipSuccessLogic(curPlayer)
+ elif succType in [ShareDefine.SuccType_InlayRune, ShareDefine.SuccType_RuneLvUp]:
+ PlayerRune.DoRuneSuccessLogic(curPlayer)
+ elif succType == ShareDefine.SuccType_RealmlvUp:
+ UptateSuccessProgress(curPlayer, succType, curPlayer.GetOfficialRank())
+ elif succType == ShareDefine.SuccType_PetClassLV:
+ ResetSuccessByType(curPlayer, succType)
+ 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)
+ classLV = petItem.GetUserAttr(ShareDefine.Def_IudetPet_ClassLV)
+ for lv in xrange(classLV+1):
+ DoAddSuccessProgress(curPlayer, succType, 1, [petNPCID, lv+1])
+
+ elif succType in [ShareDefine.SuccType_InlayStone1, ShareDefine.SuccType_InlayStone2, ShareDefine.SuccType_StoneTotalLV]:
+ Operate_EquipStone.DoStoneSuccess(curPlayer)
+ elif succType == ShareDefine.SuccType_XJMJGetExp:
+ expPointRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_TotalFightExpPoint)
+ DoAddSuccessProgress(curPlayer, succType, 1, [expPointRecord])
+ elif succType in [ShareDefine.SuccType_EquipWashLV1,ShareDefine.SuccType_EquipWashLV2,ShareDefine.SuccType_EquipWashLV3]:
+ Operate_EquipWash.EquipWashSuccess(curPlayer)
+ elif succType == ShareDefine.SuccType_MWSkillUp:
+ skillManager = curPlayer.GetSkillManager()
+ for i in range(0, skillManager.GetSkillCount()):
+ curSkill = skillManager.GetSkillByIndex(i)
+ if curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill,ChConfig.Def_SkillFuncType_FbSPSkill]:
+ curSkillLV = curSkill.GetSkillLV()
+ UptateSuccessProgress(curPlayer, succType, curSkillLV, [curSkill.GetSkillTypeID()])
+
+ elif succType == ShareDefine.SuccType_EquipSuit:
+ Operate_EquipSuitCompose.DoSuiteSuccess(curPlayer)
+ elif succType == ShareDefine.SuccType_FamilyTechLV:
+ 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:
+ alchemyLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyLV)
+ UptateSuccessProgress(curPlayer, succType, alchemyLV)
+ elif succType == ShareDefine.SuccType_VIPLV:
+ DoAddSuccessProgress(curPlayer, succType, 1, [curPlayer.GetVIPLv()])
+ elif succType == ShareDefine.SuccType_XBXZ:
+ ResetSuccessByType(curPlayer, succType)
+ for i in xrange(ipyDataMgr.GetXBXZCount()):
+ ipyData = ipyDataMgr.GetXBXZByIndex(i)
+ if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_XBXZAwardRecord, ipyData.GetID()):
+ DoAddSuccessProgress(curPlayer, succType, 1, [ipyData.GetMWID()])
+
+ elif succType == ShareDefine.SuccType_DogzBattle:
+ for i in xrange(ipyDataMgr.GetDogzCount()):
+ ipyData = ipyDataMgr.GetDogzByIndex(i)
+ if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_DogzFightState, i):
+ DoAddSuccessProgress(curPlayer, succType, 1, [ipyData.GetDogzID()])
+
+ elif succType == ShareDefine.SuccType_DogzEquipPlus:
+ ResetSuccessByType(curPlayer, succType)
+ DoAddSuccessProgress(curPlayer, succType, PlayerDogz.GetFightDogzTotalPlusLv(curPlayer))
+ elif succType == ShareDefine.SuccType_MainTaskNode: #只能处理主线任务
+ succInfoList = GetSuccDataMng().GetSuccDataByType(succType)
+ for succData in succInfoList:
+ missionID = succData.condition[0]
+ if QuestCommon.GetHadFinishMainMission(curPlayer, missionID):
+ DoAddSuccessProgress(curPlayer, succType, 1, [missionID])
+
+ DataRecordPack.DR_CheckOldPlayerSuccess(curPlayer)
+ SetPDictValue(curPlayer, ChConfig.Def_PDict_Success_CheckVersion, initGameWorldTime)
+ GameWorld.DebugLog("更新老玩家上线检查成就updCheckVersions=%s" % (initGameWorldTime), curPlayer.GetID())
return
## 成就OnWeek
--
Gitblit v1.8.0