From 7ce2afc5904cb5cde834afc018c42234c7e33ca6 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 14 八月 2018 19:45:38 +0800
Subject: [PATCH] fix:2519【优化】坐骑、灵宠、神兵的信息提示优化

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py       |    7 +++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py          |   27 +++++++++++++++++++++------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py |   15 ++++++++++-----
 PySysDB/PySysDBPY.h                                                                           |    5 +++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py     |    6 ++++--
 5 files changed, 45 insertions(+), 15 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 5934a45..b398eff 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -37,6 +37,7 @@
 	list		AttrType;	//属性类型
 	list		AttrNum;	//属性值
 	DWORD		SkillID;	//激活技能ID
+	char		SysMark;	//系统提示
 };
 
 //功能配置表格 #tagFuncConfig
@@ -190,6 +191,7 @@
 {
 	DWORD		_ID;	//灵兽NPCID
 	BYTE		Quality;	//品质
+	char		UnlockSys;	//解锁广播提示
 	DWORD		UnLockNeedItemID;	//解锁灵兽物品ID
 	BYTE		UnLockNeedItemCnt;	//解锁所需物品数量
 	DWORD		DecomposeExp;	//分解单个解锁物品可获得升阶经验
@@ -198,6 +200,7 @@
 	WORD		UseNeedRank;	//多少阶可切换外观
 	list		SkillID;	//灵兽技能ID
 	list		SkillUnLock;	//灵兽技能解锁需要阶数
+	list		SkillUnLockSys;	//灵兽技能解锁提示
 	DWORD		InitFightPower;	//初始战力
 };
 
@@ -247,6 +250,7 @@
 	BYTE		UseNeedRank;	//多少阶可切换外观
 	BYTE		Quality;		//坐骑品质
 	DWORD		InitFightPower;	//初始战力
+	char		UnlockSys;	//解锁广播提示
 };
 
 
@@ -260,6 +264,7 @@
 	list		AttrType;	//激活加成属性类型
 	list		AttrValue;	//激活加成属性值
 	list		SkillID;	//可获得的技能ID
+	char		SysMark;	//广播提示
 };
 
 //玩家等级表
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index be30960..25ed73d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -62,6 +62,7 @@
                         ("list", "AttrType", 0),
                         ("list", "AttrNum", 0),
                         ("DWORD", "SkillID", 0),
+                        ("char", "SysMark", 0),
                         ),
 
                 "FuncConfig":(
@@ -169,6 +170,7 @@
                 "PetInfo":(
                         ("DWORD", "ID", 1),
                         ("BYTE", "Quality", 0),
+                        ("char", "UnlockSys", 0),
                         ("DWORD", "UnLockNeedItemID", 0),
                         ("BYTE", "UnLockNeedItemCnt", 0),
                         ("DWORD", "DecomposeExp", 0),
@@ -177,6 +179,7 @@
                         ("WORD", "UseNeedRank", 0),
                         ("list", "SkillID", 0),
                         ("list", "SkillUnLock", 0),
+                        ("list", "SkillUnLockSys", 0),
                         ("DWORD", "InitFightPower", 0),
                         ),
 
@@ -210,6 +213,7 @@
                         ("BYTE", "UseNeedRank", 0),
                         ("BYTE", "Quality", 0),
                         ("DWORD", "InitFightPower", 0),
+                        ("char", "UnlockSys", 0),
                         ),
 
                 "HorseUp":(
@@ -219,6 +223,7 @@
                         ("list", "AttrType", 0),
                         ("list", "AttrValue", 0),
                         ("list", "SkillID", 0),
+                        ("char", "SysMark", 0),
                         ),
 
                 "PlayerLV":(
@@ -987,7 +992,8 @@
         self.Exp = 0
         self.AttrType = []
         self.AttrNum = []
-        self.SkillID = 0
+        self.SkillID = 0
+        self.SysMark = ""
         return
         
     def GetType(self): return self.Type # 神兵类型
@@ -995,7 +1001,8 @@
     def GetExp(self): return self.Exp
     def GetAttrType(self): return self.AttrType # 属性类型
     def GetAttrNum(self): return self.AttrNum # 属性值
-    def GetSkillID(self): return self.SkillID # 激活技能ID
+    def GetSkillID(self): return self.SkillID # 激活技能ID
+    def GetSysMark(self): return self.SysMark # 系统提示
 
 # 功能配置表格
 class IPY_FuncConfig():
@@ -1218,6 +1225,7 @@
     def __init__(self):
         self.ID = 0
         self.Quality = 0
+        self.UnlockSys = ""
         self.UnLockNeedItemID = 0
         self.UnLockNeedItemCnt = 0
         self.DecomposeExp = 0
@@ -1226,11 +1234,13 @@
         self.UseNeedRank = 0
         self.SkillID = []
         self.SkillUnLock = []
+        self.SkillUnLockSys = []
         self.InitFightPower = 0
         return
         
     def GetID(self): return self.ID # 灵兽NPCID
     def GetQuality(self): return self.Quality # 品质
+    def GetUnlockSys(self): return self.UnlockSys # 解锁广播提示
     def GetUnLockNeedItemID(self): return self.UnLockNeedItemID # 解锁灵兽物品ID
     def GetUnLockNeedItemCnt(self): return self.UnLockNeedItemCnt # 解锁所需物品数量
     def GetDecomposeExp(self): return self.DecomposeExp # 分解单个解锁物品可获得升阶经验
@@ -1239,6 +1249,7 @@
     def GetUseNeedRank(self): return self.UseNeedRank # 多少阶可切换外观
     def GetSkillID(self): return self.SkillID # 灵兽技能ID
     def GetSkillUnLock(self): return self.SkillUnLock # 灵兽技能解锁需要阶数
+    def GetSkillUnLockSys(self): return self.SkillUnLockSys # 灵兽技能解锁提示
     def GetInitFightPower(self): return self.InitFightPower # 初始战力
 
 # 装备分解属性表
@@ -1296,7 +1307,8 @@
         self.MaxLV = 0
         self.UseNeedRank = 0
         self.Quality = 0
-        self.InitFightPower = 0
+        self.InitFightPower = 0
+        self.UnlockSys = ""
         return
         
     def GetHorseID(self): return self.HorseID # 坐骑编号ID
@@ -1307,7 +1319,8 @@
     def GetMaxLV(self): return self.MaxLV # 坐骑最高等级
     def GetUseNeedRank(self): return self.UseNeedRank # 多少阶可切换外观
     def GetQuality(self): return self.Quality # 坐骑品质
-    def GetInitFightPower(self): return self.InitFightPower # 初始战力
+    def GetInitFightPower(self): return self.InitFightPower # 初始战力
+    def GetUnlockSys(self): return self.UnlockSys # 解锁广播提示
 
 # 坐骑升级表
 class IPY_HorseUp():
@@ -1318,7 +1331,8 @@
         self.NeedExp = 0
         self.AttrType = []
         self.AttrValue = []
-        self.SkillID = []
+        self.SkillID = []
+        self.SysMark = ""
         return
         
     def GetHorseID(self): return self.HorseID # 坐骑编号ID
@@ -1326,7 +1340,8 @@
     def GetNeedExp(self): return self.NeedExp # 升级所需经验
     def GetAttrType(self): return self.AttrType # 激活加成属性类型
     def GetAttrValue(self): return self.AttrValue # 激活加成属性值
-    def GetSkillID(self): return self.SkillID # 可获得的技能ID
+    def GetSkillID(self): return self.SkillID # 可获得的技能ID
+    def GetSysMark(self): return self.SysMark # 广播提示
 
 # 玩家等级表
 class IPY_PlayerLV():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
index 2970f96..7e0f89c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGodWeapon.py
@@ -163,7 +163,7 @@
         curExp = curExp - totalExp
         attrLV += 1
         isLVUP = True
-        GodWeaponLVUP(curPlayer, godWeaponData)
+        GodWeaponLVUP(curPlayer, godWeaponData, attrLV)
         
         totalExp = godWeaponData.GetExp()
         if totalExp == 0:
@@ -180,7 +180,8 @@
         PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_GodWeapon, attrLV, [weaponType])
         if beforeAttrLV == 0:
             # 解封通知
-            PlayerControl.WorldNotify(0, 'GetGodWeapon', [curPlayer.GetName(), weaponType])
+            sysMark = IpyGameDataPY.GetFuncEvalCfg('GodWeaponSys', 1, {}).get(weaponType, 'GetGodWeapon')
+            PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), weaponType])
             
         #{1:[100,200,300,400],2:[100,200,300,400],3:[100,200,300,400]}
         notifyDict = IpyGameDataPY.GetFuncEvalCfg('GodLv', 1, {})
@@ -195,10 +196,14 @@
     return
 
 #神兵升级触发其他功能:技能
-def GodWeaponLVUP(curPlayer, godWeaponData):
+def GodWeaponLVUP(curPlayer, godWeaponData, attrLV):
     skillID = godWeaponData.GetSkillID()
+    
     if skillID:
-        __GiveGodWeaponSkill(curPlayer, skillID)
+        if __GiveGodWeaponSkill(curPlayer, skillID):
+            sysMark = godWeaponData.GetSysMark()
+            if sysMark:
+                PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), attrLV, skillID])
 
 
 
@@ -266,5 +271,5 @@
     #    BuffSkill.DoAddBuff(curPlayer, buffType, skillData, GameWorld.GetGameWorld().GetTick(), [], curPlayer)
     PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer, skillResId)
     PlayerControl.PlayerControl(curPlayer).RefreshSkillFightPowerEx(skillResId, 0)
-    return
+    return True
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
index c11de89..83dde4e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -631,9 +631,10 @@
         
         skillIDList = upIpyData.GetSkillID()
         if skillIDList:
+            sysMark = upIpyData.GetSysMark() or 'MountUpLv'
             for skillID in skillIDList:
                 __GiveSkill(curPlayer, skillID, tick)
-                PlayerControl.WorldNotify(0, 'MountUpLv', [playerName, horseID, updClassLV, skillID])
+                PlayerControl.WorldNotify(0, sysMark, [playerName, horseID, updClassLV, skillID])
         if not skillIDList and updClassLV == maxLV:
             PlayerControl.WorldNotify(0, 'MountUpLvMax', [playerName, horseID])
         
@@ -850,7 +851,8 @@
 
     # 刷属性,更新排行榜
     RefreshHorseAttr(curPlayer)
-    PlayerControl.WorldNotify(0, 'GetMount', [curPlayer.GetName(), ipyData.GetItemID()])
+    sysMark = ipyData.GetUnlockSys() or 'GetMount'
+    PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), ipyData.GetItemID()])
 #    
 #    HorseSkinNotifyDict = ReadChConfig.GetEvalChConfig("HorseSkinNotify")
 #    if horseSkinID in HorseSkinNotifyDict:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
index 6308b40..e79aeea 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPet.py
@@ -455,7 +455,8 @@
     ItemCommon.ReduceItem(curPlayer, itemPack, itemList, needItemCnt, False, ChConfig.ItemDel_Pet)
         
     EventShell.EventRespons_OnActivatePet(curPlayer, petNPCID)
-    PlayerControl.WorldNotify(0, 'GetPet', [curPlayer.GetName(), petNPCID])
+    sysMark = ipyData.GetUnlockSys() or 'GetPet'
+    PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), petNPCID])
     rolePet = curPlayer.GetPetMgr().GetFightPet()
     if not rolePet:
         petItemIndex = GetPetDataItemIndexByNPCID(curPlayer, petNPCID)
@@ -653,6 +654,7 @@
         petIpyData = GetPetIpydata(petNPCID)
         petSkillList = petIpyData.GetSkillID()
         petSkillUnLockList = petIpyData.GetSkillUnLock()
+        sysMarkList = petIpyData.GetSkillUnLockSys()
         learnSkillList = []
         for i, skillid in enumerate(petSkillList):
             limitPetClassLV = petSkillUnLockList[i] # 学习此技能所需宠物阶级
@@ -668,7 +670,8 @@
                 #被动技能不学
                 learnSkillList.append(skillid)
             #广播
-            PlayerControl.WorldNotify(0, 'PetUpLv', [playerName, petNPCID, limitPetClassLV, skillid])
+            sysMark = sysMarkList[i] if i < len(sysMarkList) else 'PetUpLv'
+            PlayerControl.WorldNotify(0, sysMark, [playerName, petNPCID, limitPetClassLV, skillid])
 
         if not learnSkillList and updClassLV + 1 == maxClassLV:
             PlayerControl.WorldNotify(0, 'PetUpLvMax', [playerName, petNPCID])

--
Gitblit v1.8.0