From 50cabbbc229d1adc0e427df765cab2dc0889cdf1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 15 一月 2020 15:58:20 +0800
Subject: [PATCH] 8369 境界修改(升级境界给技能格式改为json字典)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 6 +-
PySysDB/PySysDBPY.h | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py | 67 +++++++++++++++++++++------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py | 2
4 files changed, 48 insertions(+), 29 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 911158f..3de1825 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -48,7 +48,7 @@
DWORD BuffID; //给全服在线玩家增加buff
DWORD ExpRate; //修为池经验速率
DWORD ExpLimit; //修为池经验上限
- list LearnSkillIDInfo; //学习技能ID信息 [职业1技能ID,职业2技能ID, ...]
+ dict LearnSkillIDInfo; //学习技能ID信息 {"职业":[技能ID, ...], ...}
BYTE AddFreePoint; //增加自由属性点
};
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index bc38160..947d31f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -70,7 +70,7 @@
("DWORD", "BuffID", 0),
("DWORD", "ExpRate", 0),
("DWORD", "ExpLimit", 0),
- ("list", "LearnSkillIDInfo", 0),
+ ("dict", "LearnSkillIDInfo", 0),
("BYTE", "AddFreePoint", 0),
),
@@ -1644,7 +1644,7 @@
self.BuffID = 0
self.ExpRate = 0
self.ExpLimit = 0
- self.LearnSkillIDInfo = []
+ self.LearnSkillIDInfo = {}
self.AddFreePoint = 0
return
@@ -1659,7 +1659,7 @@
def GetBuffID(self): return self.BuffID # 给全服在线玩家增加buff
def GetExpRate(self): return self.ExpRate # 修为池经验速率
def GetExpLimit(self): return self.ExpLimit # 修为池经验上限
- def GetLearnSkillIDInfo(self): return self.LearnSkillIDInfo # 学习技能ID信息 [职业1技能ID,职业2技能ID, ...]
+ def GetLearnSkillIDInfo(self): return self.LearnSkillIDInfo # 学习技能ID信息 {"职业":[技能ID, ...], ...}
def GetAddFreePoint(self): return self.AddFreePoint # 增加自由属性点
# 神兵表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
index c0aef9c..3f73b84 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -205,7 +205,7 @@
else:
PlayerControl.WorldNotify(0, 'RealmUpSuccess', [curPlayer.GetName(), curPlayer.GetID(), nextRealmLv])
- SkillCommon.GivePlayerSkillByJobSkillList(curPlayer, nextRealmIpyData.GetLearnSkillIDInfo())
+ SkillCommon.GivePlayerSkillByJobSkill(curPlayer, nextRealmIpyData.GetLearnSkillIDInfo())
addFreePoint = nextRealmIpyData.GetAddFreePoint()
if addFreePoint:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
index a6cdc18..e283f46 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -188,42 +188,61 @@
return
-def GivePlayerSkillByJobSkillList(curPlayer, jobSkillList):
- ## 根据职业技能ID列表给玩家技能
+def GivePlayerSkillByJobSkill(curPlayer, jobSkillInfo):
+ ## 根据职业技能ID给玩家技能, 支持字典{"job":[skillID, ...], ...} {job:[skillID, ...], ...} 或 列表[skillID, ...]
+
+ if not jobSkillInfo:
+ return
+
+ jobSkillList = []
+ if isinstance(jobSkillInfo, dict):
+ job = curPlayer.GetJob()
+ if job in jobSkillInfo:
+ jobSkillList = jobSkillInfo[job]
+ elif str(job) in jobSkillInfo:
+ jobSkillList = jobSkillInfo[str(job)]
+ elif isinstance(jobSkillInfo, list) or isinstance(jobSkillInfo, tuple):
+ jobSkillList = jobSkillInfo
+ jobSkillList = list(jobSkillList)
if not jobSkillList:
return
- skillLV = 1
- giveSkill = None
+ skillManager = curPlayer.GetSkillManager()
+ playerControl = PlayerControl.PlayerControl(curPlayer)
+ GameWorld.DebugLog("给玩家技能: %s" % jobSkillList)
for skillID in jobSkillList:
- skillData = GameWorld.GetGameData().FindSkillByType(skillID, skillLV)
+ skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
if skillData == None:
continue
if not CheckSkillJob(curPlayer, skillData):
continue
if not SkillShell.CheckLearnSkillCondition(curPlayer, skillData):
continue
- giveSkill = skillData
- break
-
- if not giveSkill:
- GameWorld.ErrLog("找不到可以给的技能!jobSkillList=%s" % str(jobSkillList))
- return
-
- skillTypeID = giveSkill.GetSkillTypeID()
- skillManager = curPlayer.GetSkillManager()
- if skillManager.FindSkillBySkillTypeID(skillTypeID):
- #GameWorld.DebugLog("已经有该技能!")
- return
- skillManager.LVUpSkillBySkillTypeID(skillTypeID)
- GameWorld.DebugLog(" 给玩家技能: skillTypeID=%s" % (skillTypeID), curPlayer.GetID())
-
- if isPassiveSkill(giveSkill):
- PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer, skillTypeID)
- DataRecordPack.DR_LearnORUPSkill(curPlayer, skillTypeID, skillLV)
- PlayerControl.PlayerControl(curPlayer).RefreshSkillFightPowerEx(skillTypeID, 0)
+ if skillManager.FindSkillBySkillID(skillID):
+ #GameWorld.DebugLog("已经有该技能!skillID=%s" % skillID)
+ continue
+
+ skillLV = skillData.GetSkillLV()
+ skillTypeID = skillData.GetSkillTypeID()
+ beforeFightPower = 0
+ if skillLV > 1:
+ befSkill = skillManager.FindSkillBySkillTypeID(skillTypeID)
+ beforeFightPower = 0 if not befSkill else befSkill.GetFightPower()
+
+ skillManager.LVUPSkillByID(skillID)
+ GameWorld.DebugLog(" 给玩家技能: skillTypeID=%s,skillID=%s,skillLV=%s" % (skillTypeID, skillID, skillLV), curPlayer.GetID())
+
+ DataRecordPack.DR_LearnORUPSkill(curPlayer, skillTypeID, skillLV)
+
+ if isPassiveSkill(skillData):
+ pass
+ #PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer, skillTypeID)
+
+ playerControl.RefreshSkillFightPowerEx(skillID, beforeFightPower, isRefreshState=False)
+
+ playerControl.RefreshPlayerAttrState()
return
## 玩家登录检查学习技能(上线)
--
Gitblit v1.8.0