From 655102ee679ee35bc6bb8a93bb57ca8da52a7494 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 13 十月 2023 17:43:40 +0800
Subject: [PATCH] 9952 【BT0.1】【主干】仙盟修改(打坐)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 6 ++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py | 66 ++++++++++++++++++++++++++++++++
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 6 ++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 8 ++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 5 ++
6 files changed, 84 insertions(+), 9 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 7c7059c..90b0787 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -396,7 +396,8 @@
Def_ViewExpType_SysEx, #系统给经验-不需要展示倍率 用来区别于类型0 7
Def_ViewExpType_LYZS, #烈焰战神 特殊特效 8
Def_ViewExpType_Activity, #活跃吸纳 9
-) = range(0, 10)
+ Def_ViewExpType_Chuangong, #传功经验10
+) = range(0, 11)
#物品相关操作类型
@@ -1767,7 +1768,8 @@
DailyActionID_Arena, # 竞技场 33
DailyActionID_CrossDemonLand, # 跨服魔化之地Boss 34
DailyActionID_CrossBattlefield, # 跨服战场 35
-) = range(1, 35 + 1)
+DailyActionID_FamilySit, # 跨服战场 36
+) = range(1, 36 + 1)
# 跨服每日活动编号定义, 从150开始
CrossDailyActionIDList = (
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index ec4a3de..4a53f5a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3787,6 +3787,11 @@
Def_Player_Dict_FamilyPartyTotalExpPoint = "FamilyPartyTotalExpPoint" # 获得的总经验点
Def_Player_Dict_FamilyPartyTotalPoint = "FamilyPartyTotalPoint" # 获得的总仙盟贡献值
+#仙盟打坐
+Def_Player_Dict_FamilySitExpRound = "FamilySitExpRound" # 已给经验轮次
+Def_Player_Dict_FamilySitTotalExp = "FamilySitTotalExp" # 获得的总经验
+Def_Player_Dict_FamilySitTotalExpPoint = "FamilySitTotalExpPoint" # 获得的总经验点
+
#虚拟背包物品数据
Def_PDict_VPackItem = "VPackItem_%s_%s" # 虚拟背包物品数据, 参数(背包类型, 位置索引)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
index aa664fc..7ce205d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
@@ -48,6 +48,10 @@
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyTotalExp, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyTotalExpPoint, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyPartyTotalPoint, 0)
+ #打坐
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilySitExpRound, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilySitTotalExp, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilySitTotalExpPoint, 0)
return
##开启副本
@@ -183,12 +187,62 @@
return
gameWorld = GameWorld.GetGameWorld()
+ sitActionState = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilySit)
partyActionState = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyParty)
- if partyActionState:
+
+ if sitActionState:
+ Process_SitAction(tick)
+
+ # 由于宴会不需要额外处理,只需要同步Help,所以如果打坐进行中,就不需要再重复处理宴会同步
+ elif partyActionState:
FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 5000)
return
+def Process_SitAction(tick):
+ key = "SitActionProcessTick"
+ interval, expRoundMax = IpyGameDataPY.GetFuncEvalCfg("FamilySit", 1)
+ gameFB = GameWorld.GetGameFB()
+ lastTick = gameFB.GetGameFBDictByKey(key)
+ if tick - lastTick < interval * 1000:
+ return
+ gameFB.SetGameFBDict(key, tick)
+
+ worldlv = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
+ playerManager = GameWorld.GetMapCopyPlayerManager()
+ playerCount = playerManager.GetPlayerCount()
+ # 每增加一名仙盟成员加成经验百分比|最高加成百分比,两个人开始算加成
+ perPlayerExpRateAdd, expRateAddMax = IpyGameDataPY.GetFuncEvalCfg("FamilySit", 3)
+ expRateEx = min(expRateAddMax, (playerCount - 1) * perPlayerExpRateAdd) if playerCount > 1 else 0
+
+ for index in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(index)
+ if not curPlayer:
+ continue
+
+ expRound = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilySitExpRound)
+ if expRound < expRoundMax:
+ expRound += 1
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilySitExpRound, expRound)
+
+ # 给经验
+ reLV = curPlayer.GetLV()
+ reExp = PlayerControl.GetPlayerReExp(curPlayer)
+ giveExp = eval(IpyGameDataPY.GetFuncCompileCfg("FamilySit", 2))
+ finalAddExp = PlayerControl.PlayerControl(curPlayer).AddExp(giveExp, ShareDefine.Def_ViewExpType_Sit, expRateEx=expRateEx)
+
+ exp = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilySitTotalExp)
+ expPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilySitTotalExpPoint)
+ newTotalExp = expPoint * ChConfig.Def_PerPointValue + exp + finalAddExp
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilySitTotalExp, newTotalExp % ChConfig.Def_PerPointValue)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilySitTotalExpPoint, newTotalExp / ChConfig.Def_PerPointValue)
+
+ #GameWorld.DebugLog("打坐经验: expRound=%s,reLV=%s,reExp=%s,giveExp=%s,expRateEx=%s,finalAddExp=%s"
+ # % (expRound, reLV, reExp, giveExp, expRateEx, finalAddExp), curPlayer.GetPlayerID())
+
+ DoFBHelp(curPlayer, tick)
+
+ return
def FamilyPartyAnswerRight(curPlayer, answerInfo):
#回答正确,给奖励
@@ -295,6 +349,16 @@
lineID = GameWorld.GetGameWorld().GetLineID()
helpDict['familyPartyPlayer'] = g_familyMapPlayerIDDict.get(lineID, [])
+ # 打坐
+ sitActionState = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilySit)
+ if sitActionState:
+ exp = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilySitTotalExp)
+ expPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilySitTotalExpPoint)
+ expRound = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilySitExpRound)
+ playerCount = GameWorld.GetMapCopyPlayerManager().GetPlayerCount()
+ sitInfo = {FBCommon.Help_exp:exp, FBCommon.Help_expPoint:expPoint, "expRound":expRound, "playerCount":playerCount}
+ helpDict["sitInfo"] = sitInfo
+
GameWorld.DebugLog("DoFBHelp %s" % helpDict, playerID)
FBCommon.Notify_FBHelp(curPlayer, helpDict)
return
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 b6f8e28..e0ba817 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4061,9 +4061,9 @@
# @param expViewType 经验获得的渠道
# @param isSysHint 是否系统提示(默认是)
# @return 布尔值
- def AddExp(self, addExp, expViewType=ShareDefine.Def_ViewExpType_Mission, isSysHint=True, addSkillID=0):
+ def AddExp(self, addExp, expViewType=ShareDefine.Def_ViewExpType_Mission, isSysHint=True, addSkillID=0, expRateEx=0):
curPlayer = self.__Player
- finalAddExp, expNotifyType = self.__AddExp(curPlayer, addExp, expViewType, isSysHint, addSkillID)
+ finalAddExp, expNotifyType = self.__AddExp(curPlayer, addExp, expViewType, isSysHint, addSkillID, expRateEx)
# 通知客户端经验来源
if finalAddExp:
@@ -4080,7 +4080,7 @@
return finalAddExp
# 参数 addSkillID 表示因什么技能杀死NPC获得经验
- def __AddExp(self, curPlayer, addExp, expViewType, isSysHint, addSkillID=0):
+ def __AddExp(self, curPlayer, addExp, expViewType, isSysHint, addSkillID=0, expRateEx=0):
if addExp == 0:
# 不进入计算
return addExp, expViewType
@@ -4123,6 +4123,8 @@
elif expViewType in [ShareDefine.Def_ViewExpType_GameEvent, ShareDefine.Def_ViewExpType_Sit]:
exp_rate = curPlayer.GetGameEventExpRate()
+ exp_rate += GetFamilySitExpPer(curPlayer)
+ exp_rate += expRateEx
else:
exp_rate = max(GameWorld.GetGameWorld().GetExpRate(), ChConfig.Def_MaxRateValue)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
index 43f0e35..3122c3a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
@@ -1267,7 +1267,7 @@
reLV = curPlayer.GetLV()
reExp = PlayerControl.GetPlayerReExp(curPlayer)
giveExp = eval(IpyGameDataPY.GetFuncCompileCfg("FamilyChuangong", 2))
- finalAddExp = playerControl.AddExp(giveExp, ShareDefine.Def_ViewExpType_SysEx)
+ finalAddExp = playerControl.AddExp(giveExp, ShareDefine.Def_ViewExpType_Chuangong)
totalExp += finalAddExp
GameWorld.DebugLog("传功经验: 轮次=%s,reLV=%s,reExp=%s,finalAddExp=%s, %s" % (index, reLV, reExp, finalAddExp, totalExp), playerID)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 7c7059c..90b0787 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -396,7 +396,8 @@
Def_ViewExpType_SysEx, #系统给经验-不需要展示倍率 用来区别于类型0 7
Def_ViewExpType_LYZS, #烈焰战神 特殊特效 8
Def_ViewExpType_Activity, #活跃吸纳 9
-) = range(0, 10)
+ Def_ViewExpType_Chuangong, #传功经验10
+) = range(0, 11)
#物品相关操作类型
@@ -1767,7 +1768,8 @@
DailyActionID_Arena, # 竞技场 33
DailyActionID_CrossDemonLand, # 跨服魔化之地Boss 34
DailyActionID_CrossBattlefield, # 跨服战场 35
-) = range(1, 35 + 1)
+DailyActionID_FamilySit, # 跨服战场 36
+) = range(1, 36 + 1)
# 跨服每日活动编号定义, 从150开始
CrossDailyActionIDList = (
--
Gitblit v1.8.0