From 92422444e4113c2b525a74b5b3cc29ec0c9e309d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 14 五月 2019 14:42:53 +0800
Subject: [PATCH] 6778 【后端】【2.0】任务接口开发(灵根品级相关)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py | 16 ++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py | 5 +++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 24 ++++++++++++++----------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 1 +
4 files changed, 36 insertions(+), 10 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index d928fcb..9868f38 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3063,6 +3063,7 @@
Def_PlayerKey_SomersaultTime = "Somersault" # 翻滚一定时间内无敌,表现为MISS
Def_PlayerKey_CopyFuncAttr = "CopyFuncAttr%s" # 玩家属性刷新中的计算属性缓存,便于buff刷新计算
Def_Player_RefreshAttrByBuff = "PlayerAttrByBuff" # 玩家属性刷新功能属性缓存,便于buff刷新计算, 间隔刷新
+Def_Player_HadRefreshAttr = "HadRefreshAttr" # 玩家在本地图是否刷新过属性
Def_PlayerKey_ClientCustomScene = "ClientCustomScene" # 客户端自定义场景状态
Def_PlayerKey_ClientCustomSceneMapID = "ClientCustomSceneMapID" # 客户端自定义场景地图ID
Def_PlayerKey_ClientCustomSceneLineID = "ClientCustomSceneLineID" # 客户端自定义场景功能线路ID
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
index cdcc746..e9a5a41 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -1938,6 +1938,11 @@
RunQuestEvent(curPlayer, "skillup", '%s_%s' % (FuncType, skillLV), Def_RunQuestType_Normal)
return
+def EventRespons_LingGenQualityUP(curPlayer, attrID, qualityLV):
+ #灵根升品
+ RunQuestEvent(curPlayer, "linggenqualityup", '%s_%s' % (attrID, qualityLV), Def_RunQuestType_Normal)
+ return
+
#---------------------------------------------------------------------
#================================================================================
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
index 320e6d4..947d3a0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
@@ -7059,6 +7059,22 @@
realmlv = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
return curPlayer.GetOfficialRank() >= realmlv
+##灵根品级是否达到X级
+# @param None
+# @return None <Linggenqualitylv attrid="灵根ID" value="期望等级"/>
+def ConditionType_Linggenqualitylv(curPlayer, curMission, curActionNode):
+ attrID = GameWorld.ToIntDef(curActionNode.GetAttribute("attrid"), 0)
+ qualityLV = GameWorld.ToIntDef(curActionNode.GetAttribute("value"), 0)
+ funcDict = {ShareDefine.Def_Effect_Metal:lambda curObj:PlayerControl.GetMetalQualityLV(curObj),
+ ShareDefine.Def_Effect_Wood:lambda curObj:PlayerControl.GetWoodQualityLV(curObj),
+ ShareDefine.Def_Effect_Water:lambda curObj:PlayerControl.GetWaterQualityLV(curObj),
+ ShareDefine.Def_Effect_Fire:lambda curObj:PlayerControl.GetFireQualityLV(curObj),
+ ShareDefine.Def_Effect_Earth:lambda curObj:PlayerControl.GetEarthQualityLV(curObj),
+ }
+ curQualityLV = 0
+ if attrID in funcDict:
+ curQualityLV = funcDict[attrID](curPlayer)
+ return curQualityLV >= qualityLV
##X级通关X层娲皇遗迹
# @param None
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index e561f47..37a6ed7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4085,16 +4085,18 @@
#GameWorld.DebugLog("等级加属性: %s" % allAttrList)
# 属性点属性
+ hadRefreshAttr = curPlayer.GetDictByKey(ChConfig.Def_Player_HadRefreshAttr) # 本地图是否刷新过属性
pointFightPowerEx = 0
- pointValueInfo = {ShareDefine.Def_Effect_Metal:[lambda curObj:GetMetal(curObj), lambda curObj, value:SetMetalQualityLV(curObj, value)],
- ShareDefine.Def_Effect_Wood:[lambda curObj:GetWood(curObj), lambda curObj, value:SetWoodQualityLV(curObj, value)],
- ShareDefine.Def_Effect_Water:[lambda curObj:GetWater(curObj), lambda curObj, value:SetWaterQualityLV(curObj, value)],
- ShareDefine.Def_Effect_Fire:[lambda curObj:GetFire(curObj), lambda curObj, value:SetFireQualityLV(curObj, value)],
- ShareDefine.Def_Effect_Earth:[lambda curObj:GetEarth(curObj), lambda curObj, value:SetEarthQualityLV(curObj, value)],
+ pointValueInfo = {ShareDefine.Def_Effect_Metal:[lambda curObj:GetMetal(curObj), lambda curObj, value:SetMetalQualityLV(curObj, value), lambda curObj:GetMetalQualityLV(curObj)],
+ ShareDefine.Def_Effect_Wood:[lambda curObj:GetWood(curObj), lambda curObj, value:SetWoodQualityLV(curObj, value), lambda curObj:GetWoodQualityLV(curObj)],
+ ShareDefine.Def_Effect_Water:[lambda curObj:GetWater(curObj), lambda curObj, value:SetWaterQualityLV(curObj, value), lambda curObj:GetWaterQualityLV(curObj)],
+ ShareDefine.Def_Effect_Fire:[lambda curObj:GetFire(curObj), lambda curObj, value:SetFireQualityLV(curObj, value), lambda curObj:GetFireQualityLV(curObj)],
+ ShareDefine.Def_Effect_Earth:[lambda curObj:GetEarth(curObj), lambda curObj, value:SetEarthQualityLV(curObj, value), lambda curObj:GetEarthQualityLV(curObj)],
}
lingGenQualityAttrList = [{} for _ in range(4)]
for pointAttrID, pointFuncInfo in pointValueInfo.items():
pointValue = pointFuncInfo[0](curPlayer)
+ befPQLV = pointFuncInfo[2](curPlayer)
pointFuncInfo[1](curPlayer, 0)
if not pointValue:
continue
@@ -4128,8 +4130,10 @@
pqAttrValueList = pqAttrValueDict[str(curPlayer.GetJob())]
pqAttrValue = 0 if curPQLV > len(pqAttrValueList) else pqAttrValueList[curPQLV - 1]
CalcAttrDict_Type(pqAttrID, pqAttrValue, lingGenQualityAttrList)
- #GameWorld.DebugLog(" 属性点(%s)品阶等级属性: curPQLV=%s,pqAttrID=%s,pqAttrValue=%s" % (pointAttrID, curPQLV, pqAttrID, pqAttrValue))
-
+ #GameWorld.DebugLog(" 属性点(%s)品阶等级属性: befPQLV=%s,curPQLV=%s,pqAttrID=%s,pqAttrValue=%s" % (pointAttrID, befPQLV, curPQLV, pqAttrID, pqAttrValue))
+ if hadRefreshAttr and befPQLV < curPQLV:
+ EventShell.EventRespons_LingGenQualityUP(curPlayer, pointAttrID, curPQLV)
+
#GameWorld.DebugLog("等级属性点加属性: %s" % allAttrList)
#GameWorld.DebugLog("灵根品阶等级属性: %s" % lingGenQualityAttrList)
#GameWorld.DebugLog("灵根点数附加战力: %s" % pointFightPowerEx)
@@ -4563,15 +4567,14 @@
self.__SyncBaseAttr(curPlayer, baseAttrList)
#五行灵根变更需要处理的逻辑
afterPointList = [GetMetal(curPlayer), GetWood(curPlayer), GetWater(curPlayer), GetFire(curPlayer), GetEarth(curPlayer)]
- if beforePointList !=afterPointList:
+ if beforePointList != afterPointList:
diffPointAttrList = []
for i, attrID in enumerate([ShareDefine.Def_Effect_Metal, ShareDefine.Def_Effect_Wood, ShareDefine.Def_Effect_Water,
ShareDefine.Def_Effect_Fire, ShareDefine.Def_Effect_Earth]):
if beforePointList[i] != afterPointList[i]:
diffPointAttrList.append(attrID)
SkillShell.RefreshElementSkillByAttr(curPlayer, diffPointAttrList)
-
-
+
# 同步前端战力,因为有 SetFightPower 所以累加战力放在这里所有刷新及计算处理完后才处理,才能正常触发set同步前端
self.SendModuleFightPowerPack(curPlayer, mfpDict)
billFuncCnt = len(PyGameData.g_refreshAttrBillboardFunc) # 只处理固定次数,防止死循环
@@ -4584,6 +4587,7 @@
# 暂停刷新属性标志,必须被调用
curPlayer.SetDict(ChConfig.Def_Player_RefreshAttr, 0)
curPlayer.SetDict(ChConfig.Def_Player_RefreshAttrByBuff, 0)
+ curPlayer.SetDict(ChConfig.Def_Player_HadRefreshAttr, 1)
GameWorld.DebugLog("End RefreshPlayerAttrStateEx!!!")
return True
--
Gitblit v1.8.0