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