From 8d871012152d869ca79d06f36a0ee6647e5a7341 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 25 十月 2018 10:06:55 +0800
Subject: [PATCH] 4296 【后端】【1.2.0】220级开启加点功能(原加点功能不变)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py | 43 ++++++++++++---------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGreatMaster.py | 16 ++++++++
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py | 3 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 25 ++++++++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py | 2 +
7 files changed, 67 insertions(+), 24 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 3011cb5..936c081 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -852,6 +852,7 @@
GameFuncID_FreeGoods = 130 # 极品白拿
GameFuncID_OSSail = 132 # 开服特惠
GameFuncID_HorsePetRobBoss = 139# 骑宠争夺
+GameFuncID_AddPoint = 145 # 加点功能
# 以下为暂时无用的
GameFuncID_Truck = 33 # 运镖
GameFuncID_RunDaily = 34 # 日常跑环
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
index 34fee3f..eac27ae 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
@@ -40,6 +40,7 @@
import PlayerEquipDecompose
import PlayerFreeGoods
import FunctionNPCCommon
+import PlayerGreatMaster
@@ -59,6 +60,8 @@
ShareDefine.GameFuncID_EquipDecompose:lambda curObj:PlayerEquipDecompose.DoEquipDecomposeOpen(curObj),
ShareDefine.GameFuncID_FreeGoods:lambda curObj:PlayerFreeGoods.DoFreeGoodsOpen(curObj),
ShareDefine.GameFuncID_OSSail:lambda curObj:FunctionNPCCommon.OSSaleOpenMail(curObj),
+ ShareDefine.GameFuncID_AddPoint:lambda curObj:PlayerControl.DoAddPointOpen(curObj),
+ ShareDefine.GameFuncID_Talent:lambda curObj:PlayerGreatMaster.DoTalentOpen(curObj),
#ShareDefine.GameFuncID_RunDaily:lambda curObj:FBCommon.DoFuncOpen_RunDaily(curObj),
#ShareDefine.GameFuncID_RunFamily:lambda curObj:FBCommon.DoFuncOpen_RunFamily(curObj),
#ShareDefine.GameFuncID_RefineExp:lambda curObj:Operate_PlayerBuyZhenQi.DoFuncOpen_RefineExp(curObj),
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 8cee0ed..0afbe39 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -3320,18 +3320,33 @@
# @remarks 获得玩家升级, 获得的属性点
def GetLvUp_AddPoint(curPlayer):
curPlayerID = curPlayer.GetID()
- curReinCnt = curPlayer.GetReincarnationLv() # 当前转生次数
+ curLV = curPlayer.GetLV() # 当前等级
- addPointList = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1)
-
- addPoint = addPointList[-1] if curReinCnt >= len(addPointList) else addPointList[curReinCnt]
+ addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
+ addPoint = GameWorld.GetDictValueByRangeKey(addPointDict, curLV, 0)
if addPoint == None:
- raise Exception('玩家获得升级属性点异常, reincarnationLv = %s PlayerID = %s' % (curReinCnt, curPlayerID))
+ raise Exception('玩家获得升级属性点异常, curLV = %s PlayerID = %s' % (curLV, curPlayerID))
return
return int(addPoint)
+def DoAddPointOpen(curPlayer):
+ '''加点功能开启 处理给自由属性点及老号处理
+ 清除老服玩家未加点的点数(清零),以前加的加点属性不清除,属性不变,战力不减, 根据最新的加点开启等级和老服玩家的当前等级,相差的差值给予玩家对应的加点点数'''
+ beforeFreePoint = curPlayer.GetFreePoint()
+ addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {})
+ initFreePoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 2)
+ openLV = GameFuncComm.GetFuncLimitLV(ShareDefine.GameFuncID_AddPoint)
+ setFreePoint = initFreePoint
+ curLV = curPlayer.GetLV()
+ for lv in xrange(openLV, curLV+1):
+ setFreePoint += GameWorld.GetDictValueByRangeKey(addPointDict, lv, 0)
+ addDataDict = {'beforeFreePoint':beforeFreePoint}
+ DataRecordPack.DR_Freepoint(curPlayer, "AddPointOpen", setFreePoint, addDataDict)
+ curPlayer.SetFreePoint(setFreePoint)
+ GameWorld.DebugLog(' 加点功能开启处理 beforeFreePoint=%s,curLV=%s, setFreePoint=%s'%(beforeFreePoint, curLV, setFreePoint), curPlayer.GetID())
+ return
#---------------------------------------------------------------------
## 功能模块战斗力类
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGreatMaster.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGreatMaster.py
index 813fb9d..5c08e81 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGreatMaster.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGreatMaster.py
@@ -37,6 +37,22 @@
return False
return True
+def DoTalentOpen(curPlayer):
+ '''天赋功能开启处理天赋点 '''
+ curLV = curPlayer.GetLV()
+ openLV = GameFuncComm.GetFuncLimitLV(ShareDefine.GameFuncID_Talent)
+ setTalentPoint = 0
+ for lv in xrange(openLV, curLV+1):
+ lvIpyData = PlayerControl.GetPlayerLVIpyData(lv)
+ addTalentPoint = lvIpyData.GetTalentPoint() if lvIpyData else 0
+ setTalentPoint += addTalentPoint
+ curFreeSkillPoint = GetGreatMasterFreeSkillPoint(curPlayer)
+ if setTalentPoint != curFreeSkillPoint:
+ SetGreatMasterFreeSkillPoint(curPlayer, setTalentPoint)
+ Sync_GreatMasterFreeSkillPoint(curPlayer)
+ GameWorld.Log(' 天赋功能开启处理天赋点 beforeTalentPoint=%s,setTalentPoint=%s, curLV=%s'%(curFreeSkillPoint, setTalentPoint, curLV), curPlayer.GetID())
+ return
+
## 登录处理
# @param curPlayer
# @return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py
index 4736a3a..558886d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py
@@ -78,6 +78,7 @@
def OnDay(curPlayer):
actCostRebateInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
if not actCostRebateInfo.get(ShareDefine.ActKey_State):
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellFreeTime, 0)
__SendWishingWellMail(curPlayer, int(time.time()))
return
@@ -121,6 +122,7 @@
if state:
g_randomWellDict = {}
g_specialMarkDict = {}
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellRefreshCnt, 0)
__DoActWishingRefresh(curPlayer, 1, True)
SyncWishingWellInfo(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 3011cb5..936c081 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -852,6 +852,7 @@
GameFuncID_FreeGoods = 130 # 极品白拿
GameFuncID_OSSail = 132 # 开服特惠
GameFuncID_HorsePetRobBoss = 139# 骑宠争夺
+GameFuncID_AddPoint = 145 # 加点功能
# 以下为暂时无用的
GameFuncID_Truck = 33 # 运镖
GameFuncID_RunDaily = 34 # 日常跑环
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
index 8fa3d9f..0e6f4cb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -34,8 +34,6 @@
import ChItem
import PlayerActivity
import ShareDefine
-import PlayerGodWeapon
-import PlayerSuccess
import PlayerGreatMaster
import PlayerHorse
import GameObj
@@ -1924,35 +1922,29 @@
return False
skillManager = curPlayer.GetSkillManager()
- #姿态需求
- #hasStateSkillReq = False
+
#前置技能需求
hasLearnSkillReq = False
#分支点总和
numLearnSkillPoint = 0
- #当前技能姿态需求,姿态等级需求
- #curSkillStateReq = curSkill.GetStateSkillReq()
- #lvCurSkillStateReq = curSkill.GetStateSkillLV()
#当前技能前置技能需求,前置技能等级需求
curSkillLearnReq = curSkill.GetLearnSkillReq()
lvCurSkillLearnReq = curSkill.GetLearnSkillLV()
#需要对应天赋系别点数
- learnSkillPointReq = curSkill.GetLearnSkillPointReq()
+ learnSkillPointReq = curSkill.GetLearnSkillPointReq() #系别*10000+需要点数
needSeries, needSeriesPoint= learnSkillPointReq/10000, learnSkillPointReq%10000
- ipyData = IpyGameDataPY.GetIpyGameDataNotLog('TalentSkill', curSkill.GetSkillTypeID())
+ curSkillTypeID = curSkill.GetSkillTypeID()
+ ipyData = IpyGameDataPY.GetIpyGameDataNotLog('TalentSkill', curSkillTypeID)
curTalentType = ipyData.GetTalentType() if ipyData else 0
#获取玩家目前所有技能
- for i in range(0, skillManager.GetSkillCount()):
+ for i in xrange(skillManager.GetSkillCount()):
skill = skillManager.GetSkillByIndex(i)
if skill == None:
continue
skillTypeID = skill.GetSkillTypeID()
lvSkill = skill.GetSkillLV()
-
- #满足姿态ID需求
-# if skillTypeID == curSkillStateReq and lvSkill >= lvCurSkillStateReq and not hasStateSkillReq:
-# hasStateSkillReq = True
+
#满足前置技能需求
if skillTypeID == curSkillLearnReq and lvSkill >= lvCurSkillLearnReq and not hasLearnSkillReq:
@@ -1966,17 +1958,30 @@
if curSkillLearnReq != 0 and not hasLearnSkillReq:
PlayerControl.NotifyCode(curPlayer, "GeRen_wjr_717982", [curSkillLearnReq, lvCurSkillLearnReq])
return False
-
-# #有姿态ID需求
-# if curSkillStateReq != 0 and not hasStateSkillReq:
-# PlayerControl.NotifyCode(curPlayer, "UseMagicLost15", [ curSkillStateReq, lvCurSkillStateReq ])
-# return False
#有分支点总和要求
if learnSkillPointReq != 0 and numLearnSkillPoint < needSeriesPoint:
PlayerControl.NotifyCode( curPlayer, "UseMagicLost13",[ needSeriesPoint ] )
return False
+ #玩家属性点要求
+ stateSkillLV = curSkill.GetStateSkillLV() #需要基础属性ID*10000+需要属性点
+ needBaseAttrID, needBaseAttrValue = stateSkillLV /10000, stateSkillLV%10000
+ if needBaseAttrID and needBaseAttrValue:
+ baseAttrDict = {
+ ShareDefine.Def_Effect_STR:curPlayer.GetSTR(),
+ ShareDefine.Def_Effect_PHY:curPlayer.GetPHY(),
+ ShareDefine.Def_Effect_CON:curPlayer.GetCON(),
+ ShareDefine.Def_Effect_PNE:curPlayer.GetPNE(),
+ }
+ if needBaseAttrID not in baseAttrDict:
+ GameWorld.ErrLog(' 天赋技能升级属性点条件配置错误,curSkillTypeID=%s,needBaseAttrID=%s'%(curSkillTypeID, needBaseAttrID))
+ return False
+ curBaseAttrValue = baseAttrDict.get(needBaseAttrID, 0)
+ if curBaseAttrValue < needBaseAttrValue:
+ GameWorld.DebugLog('升级技能%s需要属性点 %s达到%s, 当前点数=%s!'%(curSkillTypeID, needBaseAttrID, needBaseAttrValue, curBaseAttrValue))
+ return False
+
return True
#---------------------------------------------------------------------
--
Gitblit v1.8.0