From 3da8e5eb44d92945d64ddd9bc075b9322a088d94 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 19 三月 2019 17:08:55 +0800
Subject: [PATCH] 6341  【后端】【2.0】境界改版开发单(经验buff)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                         |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_904.py     |   12 ++-
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py                                       |    4 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py                       |    7 +
 PySysDB/PySysDBPY.h                                                                                        |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py                  |    9 +-
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                              |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddBuff.py |   54 ++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py            |   14 ++--
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDuJie.py                                       |   15 +++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                            |    2 
 11 files changed, 105 insertions(+), 19 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 0845bc6..f2868e4 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -21,6 +21,7 @@
 	list		AddAttrType;	//境界加成属性类型	
 	list		AddAttrNum;	//境界加成属性值
 	DWORD		BossID;	//渡劫bossid
+	DWORD		BuffID;	//给全服在线玩家增加buff
 };
 
 //神兵表 #tagGodWeapon
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDuJie.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDuJie.py
index 9bcdbd5..8135e02 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDuJie.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerDuJie.py
@@ -297,3 +297,18 @@
     sendMsg = str(sendInfo)
     curPlayer.MapServer_QueryPlayerResult(0, 0, 'DuJieHelpInfo', sendMsg, len(sendMsg))
     return
+
+def DoRealmUpAddBuff(sendMsg):
+    #境界提升给全服在线玩家加经验BUFF
+    minRealmLVLimit = IpyGameDataPY.GetFuncCfg('RadioExpRealm')
+    playerManager = GameWorld.GetPlayerManager()
+    for i in xrange(playerManager.GetActivePlayerCount()):
+        curPlayer = playerManager.GetActivePlayerAt(i)
+        if curPlayer == None or not curPlayer.GetInitOK():
+            continue
+        if PlayerControl.GetIsTJG(curPlayer):
+            continue
+        if curPlayer.GetOfficialRank() < minRealmLVLimit:
+            continue
+        curPlayer.MapServer_QueryPlayerResult(0, 0, 'AddBuff', sendMsg, len(sendMsg))
+    return
\ No newline at end of file
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
index 5bd2379..f4b7f99 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerQuery.py
@@ -762,6 +762,10 @@
     if callName =="DuJieFBOver":
         PlayerDuJie.DoDuJieFBOver(eval(resultName))
         return
+    #境界提升全服buff
+    if callName =="RealmUpAddBuff":
+        PlayerDuJie.DoRealmUpAddBuff(resultName)
+        return
     
     # 组队副本队长请求进入询问结果
     if callName == "EnterFBTeamAsk":
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 96b19c9..12ec4f7 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -295,7 +295,8 @@
     Def_ViewExpType_Sit        ,            #打坐获取经验 3
     Def_ViewExpType_KillNPCSuper,           #杀怪获得经验暴击 4
     Def_ViewExpType_Sys        ,            #系统给经验-需要展示倍率,实际不享受 5
-) = range(0, 6)
+    Def_ViewExpType_RealmBuff,           #境界全服福利经验(玄女天花) 6
+) = range(0, 7)
 
 
 #物品相关操作类型
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 7f4b5ac..f9a2064 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -729,7 +729,7 @@
 Def_SkillID_PetSignDay = 47111   # 灵宠签到属性技能, 单次签到的加成
 Def_SkillID_LFZ = 47100   # 龙凤镯技能(打怪概率经验加成)
 Def_SkillID_HorsePetRobBossKillCntBuff = 21020   # 骑宠的怨念buff
-
+Def_SkillID_RealmBuff = 6100   # 境界经验buff
 
 Def_SkillID_FamilyWar_CWinBuff = 22101 # 仙盟联赛 - 连胜buff, 由连胜次数决定等级
 Def_SkillID_FamilyWar_JoinBuff = 22131 # 仙盟联赛 - 参与buff, 由人数决定等级
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 4cc1b83..b15a118 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -49,6 +49,7 @@
                         ("list", "AddAttrType", 0),
                         ("list", "AddAttrNum", 0),
                         ("DWORD", "BossID", 0),
+                        ("DWORD", "BuffID", 0),
                         ),
 
                 "GodWeapon":(
@@ -1441,7 +1442,8 @@
         self.NeedItemCnt = 0
         self.AddAttrType = []
         self.AddAttrNum = []
-        self.BossID = 0
+        self.BossID = 0
+        self.BuffID = 0
         return
         
     def GetLv(self): return self.Lv # 境界等级
@@ -1450,7 +1452,8 @@
     def GetNeedItemCnt(self): return self.NeedItemCnt # 消耗的道具数量
     def GetAddAttrType(self): return self.AddAttrType # 境界加成属性类型
     def GetAddAttrNum(self): return self.AddAttrNum # 境界加成属性值
-    def GetBossID(self): return self.BossID # 渡劫bossid
+    def GetBossID(self): return self.BossID # 渡劫bossid
+    def GetBuffID(self): return self.BuffID # 给全服在线玩家增加buff
 
 # 神兵表
 class IPY_GodWeapon():
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 cccdde8..382d223 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -67,6 +67,7 @@
 #注意2:
 #玩家移动的时候, 如果玩家有马匹 , 则允许玩家移动
 ################################################
+Def_HorseEquipIndex = 5
 
 ## 玩家骑马脚本(封包参数)
 #  @param index 玩家索引
@@ -200,7 +201,7 @@
     
     #检查是否装备指定ID物品
     playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    itemRideHorse = playerEquip.GetAt(ShareDefine.retHorse)
+    itemRideHorse = playerEquip.GetAt(Def_HorseEquipIndex)
     #无指定道具
     if itemRideHorse.IsEmpty():
         #PlayerControl.NotifyCode(curPlayer, "NotPrepareSteed")
@@ -402,7 +403,7 @@
 #    
 #    #---执行玩家换装逻辑---
 #    tick = GameWorld.GetGameWorld().GetTick()
-#    ChEquip.DoPlayerEquipItem(curPlayer, curHorse, ShareDefine.retHorse, tick)
+#    ChEquip.DoPlayerEquipItem(curPlayer, curHorse, Def_HorseEquipIndex, tick)
 #    
 #    __HorseLearnSkill(curPlayer, 0)
 #    # 计算属性 防止给第一只坐骑后,客户端坐骑战斗力为0
@@ -930,7 +931,7 @@
     PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Horse, horseID, False)
     
     playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
-    itemRideHorse = playerEquip.GetAt(ShareDefine.retHorse)
+    itemRideHorse = playerEquip.GetAt(Def_HorseEquipIndex)
     #无指定道具
     if itemRideHorse.IsEmpty():
         DoChangeHorse(curPlayer, horseID, tick)
@@ -943,7 +944,7 @@
 #        tick = GameWorld.GetGameWorld().GetTick()
 #        PlayerRideHorseDown(curPlayer, False)
 #        # 执行玩家换装逻辑
-#        if ChEquip.DoPlayerEquipItem(curPlayer, curHorseSkin, ShareDefine.retHorse, tick):
+#        if ChEquip.DoPlayerEquipItem(curPlayer, curHorseSkin, Def_HorseEquipIndex, tick):
 #            PlayerRideHorseUp(curPlayer, False)
          
         
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 683d721..fb88005 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerPrestigeSys.py
@@ -32,11 +32,6 @@
 import DataRecordPack
 
 #------------------------------------------------------------------------------
-(
-StopSitType1, #离线中断
-StopSitType2, #主动中断
-StopSitType3, #被采集打断
-)=range(1,4)
 
 
 def DoOfficialOpen(curPlayer):
@@ -152,7 +147,14 @@
     curPlayer.SetOfficialRank(nextRealmLv)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_RealmFBIsOpen, 0)
     if needSys:
-        PlayerControl.WorldNotify(0, 'RealmUpSuccess', [curPlayer.GetName(), nextRealmLv])
+        addBuffID = nextRealmIpyData.GetBuffID()
+        if addBuffID:
+            PlayerControl.WorldNotify(0, 'BigRealmUpSuccess', [curPlayer.GetName(), nextRealmLv, IpyGameDataPY.GetFuncCfg('RadioExpRealm')])
+            msgStr = str(addBuffID)
+            GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'RealmUpAddBuff', msgStr, len(msgStr))
+        else:
+            PlayerControl.WorldNotify(0, 'RealmUpSuccess', [curPlayer.GetName(), nextRealmLv])
+            
     RefreshOfficialAttr(curPlayer)
     GameFuncComm.DoFuncOpenLogic(curPlayer)
     SyncRealmFBState(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddBuff.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddBuff.py
new file mode 100644
index 0000000..aa4b774
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_AddBuff.py
@@ -0,0 +1,54 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#---------------------------------------------------------------------
+#
+#---------------------------------------------------------------------
+##@package GY_Query_AddBuff
+# @todo: 增加buff
+#
+# @author: xdh
+# @date 2019-03-19 21:00
+# @version 1.0
+#
+# @note: 增加buff
+#---------------------------------------------------------------------
+#"""Version = 2019-03-19 21:00""" 
+#---------------------------------------------------------------------
+import GameWorld
+import SkillCommon
+import BuffSkill
+#---------------------------------------------------------------------
+
+## XX
+#  @param query_Type 请求类型
+#  @param query_ID 请求的玩家ID
+#  @param packCMDList 发包命令
+#  @param tick 当前时间
+#  @return "True" or "False" or ""
+def DoLogic(query_Type, query_ID, packCMDList, tick):
+    return ''
+
+
+## 登陆信息
+#  @param curPlayer 发出请求的玩家
+#  @param callFunName 功能名称
+#  @param funResult 查询的结果
+#  @param tick 当前时间
+#  @return None
+def DoResult(curPlayer, callFunName, funResult, tick):
+    playerID = curPlayer.GetPlayerID()
+    GameWorld.DebugLog("GY_Query_AddBuff funResult=%s" % funResult, playerID)
+    buffID = GameWorld.ToIntDef(funResult, 0)
+    if not buffID:
+        return
+    
+    skillBuff = GameWorld.GetGameData().GetSkillBySkillID(buffID)
+    if not skillBuff:
+        GameWorld.Log("GY_Query_AddBuff   找不到技能%s" % buffID, playerID)
+        return
+
+    buffType = SkillCommon.GetBuffType(skillBuff)
+    BuffSkill.DoAddBuff(curPlayer, buffType, skillBuff, tick)
+    return
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 96b19c9..12ec4f7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -295,7 +295,8 @@
     Def_ViewExpType_Sit        ,            #打坐获取经验 3
     Def_ViewExpType_KillNPCSuper,           #杀怪获得经验暴击 4
     Def_ViewExpType_Sys        ,            #系统给经验-需要展示倍率,实际不享受 5
-) = range(0, 6)
+    Def_ViewExpType_RealmBuff,           #境界全服福利经验(玄女天花) 6
+) = range(0, 7)
 
 
 #物品相关操作类型
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_904.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_904.py
index be78169..fae16b2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_904.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_904.py
@@ -17,6 +17,8 @@
 import IPY_GameWorld
 import GameWorld
 import PlayerControl
+import ShareDefine
+import ChConfig
 #---------------------------------------------------------------------
 #全局变量
 #---------------------------------------------------------------------
@@ -33,7 +35,6 @@
 def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
     #---检查Buff可行性---
     curObjType = defender.GetGameObjType()
-
     # 给予经验,只支持玩家对象
     if curObjType != IPY_GameWorld.gotPlayer:
         
@@ -42,15 +43,18 @@
         return
     
     # 玩家最小等级限制
-    if defender.GetLV() < curEffect.GetEffectValue(1):
+    if defender.GetLV() < curEffect.GetEffectValue(2):
         return
     
     reExp = PlayerControl.GetPlayerReExp(defender)
-    giveExp = int(curEffect.GetEffectValue(0)*reExp)
+    giveExp = int(curEffect.GetEffectValue(0)*reExp+curEffect.GetEffectValue(1))
     
     if giveExp <= 0:
         return
     
     playerControl = PlayerControl.PlayerControl(defender)
-    playerControl.AddExp(giveExp) 
+    if curBuff.GetSkill().GetSkillTypeID() == ChConfig.Def_SkillID_RealmBuff:
+        playerControl.AddExp(giveExp, ShareDefine.Def_ViewExpType_RealmBuff)
+    else:
+        playerControl.AddExp(giveExp)
     return

--
Gitblit v1.8.0