From fb86600c411e628bdf36461783c21c84a8e285c5 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 31 七月 2019 15:03:49 +0800
Subject: [PATCH] 8187 【后端】【主干】优化仙盟宴会体验
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py | 9 ++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py | 8 ++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py | 42 +++++++++++++++++++-
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 6 +++
6 files changed, 63 insertions(+), 4 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
index 39e15f0..0006ff8 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyParty.py
@@ -250,7 +250,14 @@
else:
familyName = PlayerFamily.GetFamilyName_ByID(curFamilyid)
PyGameData.g_familyAnswerDict[curFamilyid] = [1, tick, familyName]
-
+
+ rightCountAward = IpyGameDataPY.GetFuncEvalCfg("PartyReward", 5)
+ if rightCountAward and len(rightCountAward) == 2:
+ perRightCount, addFamilyActivity = rightCountAward
+ if PyGameData.g_familyAnswerDict[curFamilyid][0] % perRightCount == 0:
+ PlayerControl.FamilyNotify(curFamilyid, "Contribution1", [perRightCount, addFamilyActivity])
+ GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_FamilyPartyAddFamilyActivity, [ChConfig.Def_FBMapID_FamilyParty, curFamilyid, addFamilyActivity])
+
PyGameData.g_partyheroAnswerDict[playerID] = PyGameData.g_partyheroAnswerDict.get(playerID, 0) + 1
if PyGameData.g_familyPartyTopInfo:
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index c5739ce..2bd19a9 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -167,6 +167,7 @@
Def_Notify_WorldKey_FamilyBossOpenCount = "FamilyBossOpenCount" # 仙盟boss开启次数
Def_Notify_WorldKey_FamilyPartyInfo = "FamilyPartyInfo" # 仙盟宴会数据
+Def_Notify_WorldKey_FamilyPartyAddFamilyActivity = "FamilyPartyAddFamilyActivity" # 仙盟宴会地图成员增加仙盟活跃令
Def_Notify_WorldKey_AddFamilyAuctionItem = "AddFamilyAuctionItem" # 添加仙盟拍品
Def_Notify_WorldKey_AddSystemAuctionItem = "AddSystemAuctionItem" # 添加系统拍品
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 7134d5c..8e6064a 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
@@ -14,7 +14,8 @@
# 详细描述: 战盟盛宴
#
#---------------------------------------------------------------------
-"""Version = 2018-04-16 17:20"""
+#"""Version = 2018-04-16 17:20"""
+#---------------------------------------------------------------------
import ShareDefine
import FBCommon
import ChConfig
@@ -32,6 +33,7 @@
import ItemCommon
import ItemControler
import Item_AddLV
+import PlayerTalk
#当前副本地图的状态
(
@@ -48,6 +50,8 @@
FBPlayerDict_TotalPoint = 'XMYH_TotalPoint%s' # 获得的总仙盟贡献值
FBPlayerDict_HasCollect = 'XMYH_HasCollect%s' # 是否已采集
FBPlayerDict_HasSit = 'XMYH_HasSit%s' # 是否已传功
+FBPlayerDict_TagPlayerID = 'XMYH_TagPlayerID%s' # 邀请传功目标玩家ID
+FBPlayerDict_HelpCount = 'XMYH_HelpCount%s' # 已经帮助传功次数
g_familyMapPlayerIDDict = {}#{lineid:[playerid,..]}
def OnFBPlayerOnDay(curPlayer):
@@ -170,6 +174,8 @@
gameWorld.SetGameWorldDict(FBPlayerDict_TotalPoint % playerID, 0)
gameWorld.SetGameWorldDict(FBPlayerDict_HasCollect % playerID, 0)
gameWorld.SetGameWorldDict(FBPlayerDict_HasSit % playerID, 0)
+ gameWorld.SetGameWorldDict(FBPlayerDict_TagPlayerID % playerID, 0)
+ gameWorld.SetGameWorldDict(FBPlayerDict_HelpCount % playerID, 0)
FBCommon.ClearAreaRewardRecord(playerID)
@@ -441,8 +447,8 @@
gameWorld.SetGameWorldDict(FBPlayerDict_TotalExpPoint % playerID, newTotalExp/ChConfig.Def_PerPointValue)
- GameWorld.DebugLog("OnGetExp() addExp=%s,updTotalExp=%s"
- % (addExp, newTotalExp), playerID)
+ #GameWorld.DebugLog("OnGetExp() addExp=%s,updTotalExp=%s"
+ # % (addExp, newTotalExp), playerID)
return
##玩家退出副本
@@ -490,6 +496,7 @@
GameWorld.DebugLog('邀请%s打坐,该玩家不在副本里' % tagPlayerID, playerID)
PlayerControl.NotifyCode(curPlayer, 'PartySitFail')
return
+ gameWorld.SetGameWorldDict(FBPlayerDict_TagPlayerID % playerID, tagPlayerID)
curPlayer.StopMove()
curPlayer.Sit()
# if not gameWorld.GetGameWorldDictByKey(FBPlayerDict_HasSit % tagPlayerID):
@@ -535,5 +542,34 @@
gameWorld.SetGameWorldDict(FBPlayerDict_TotalExpPoint % playerID, newTotalExp/ChConfig.Def_PerPointValue)
gameWorld.SetGameWorldDict(FBPlayerDict_HasSit % playerID, 1)
+
+ #帮助传功奖励
+ helpSitActivityAward = IpyGameDataPY.GetFuncEvalCfg('FamilyPartySitAward', 3)
+ if helpSitActivityAward and len(helpSitActivityAward) == 2:
+ helpFamilyActivity, maxHelpAwardCount = helpSitActivityAward
+ helpThanks = IpyGameDataPY.GetFuncCfg('FamilyPartySitAward', 4) % (helpFamilyActivity, maxHelpAwardCount)
+ sitThanks = helpThanks.decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding())
+ tagPlayerID = gameWorld.GetGameWorldDictByKey(FBPlayerDict_TagPlayerID % playerID)
+ PlayerTalk.TalkPrivateByID(curPlayer, tagPlayerID, sitThanks)
+ tagPlayer = GameWorld.GetMapCopyPlayerManager().FindPlayerByID(tagPlayerID)
+ if tagPlayer:
+ helpCount = gameWorld.GetGameWorldDictByKey(FBPlayerDict_HelpCount % tagPlayerID) + 1
+ gameWorld.SetGameWorldDict(FBPlayerDict_HelpCount % tagPlayerID, helpCount)
+ GameWorld.DebugLog("帮助传功奖励: sitPlayerID=%s,tagPlayerID=%s,helpCount=%s" % (playerID, tagPlayerID, helpCount))
+ if helpCount <= maxHelpAwardCount:
+ PlayerControl.GiveMoney(tagPlayer, ShareDefine.TYPE_Price_FamilyActivity, helpFamilyActivity)
+
GameWorld.DebugLog(' 传功结束,giveLV=%s, giveExp=%s, worldlv=%s' % (giveLV, giveExp, worldlv))
return True
+
+def DoAddFamilyMemberFamilyActivity(familyID, addFamilyActivity):
+ playerManager = GameWorld.GetPlayerManager()
+ for index in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(index)
+ if not curPlayer:
+ continue
+ if curPlayer.GetFamilyID() != familyID:
+ continue
+ PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyActivity, addFamilyActivity)
+ GameWorld.DebugLog("增加本仙盟成员答题活跃令, playerID=%s,addFamilyActivity=%s" % (curPlayer.GetPlayerID(), addFamilyActivity))
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index 3a55786..0f2e87a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -1283,6 +1283,12 @@
PyGameData.g_familyPartyInfo = eval(msgValue)
return
+ if key == ShareDefine.Def_Notify_WorldKey_FamilyPartyAddFamilyActivity:
+ mapID, familyID, addFamilyActivity = eval(msgValue)
+ if GameWorld.GetMap().GetMapID() == mapID:
+ GameLogic_FamilyParty.DoAddFamilyMemberFamilyActivity(familyID, addFamilyActivity)
+ return
+
if key == ShareDefine.Def_Notify_WorldKey_AddFamilyAuctionItem:
mapID, familyAuctionItemDict = eval(msgValue)
if GameWorld.GetMap().GetMapID() == mapID:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
index a41ad2e..2e010dd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
@@ -215,6 +215,14 @@
curPlayer.ChatMiByID(sendPack.GetTalkType(), sendPack.GetPlayerID(), content, 0, extras)
return
+def TalkPrivateByID(curPlayer, tagPlayerID, content):
+ #私聊 0为默认 1为1对1聊天
+ talkType = 1
+ extras = GetTalkExtraValue(curPlayer)
+ curPlayer.ChatMiByID(talkType, tagPlayerID, content, 0, extras)
+ return
+
+
## 私聊频道(封包参数)
# @param index 玩家索引
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index c5739ce..2bd19a9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -167,6 +167,7 @@
Def_Notify_WorldKey_FamilyBossOpenCount = "FamilyBossOpenCount" # 仙盟boss开启次数
Def_Notify_WorldKey_FamilyPartyInfo = "FamilyPartyInfo" # 仙盟宴会数据
+Def_Notify_WorldKey_FamilyPartyAddFamilyActivity = "FamilyPartyAddFamilyActivity" # 仙盟宴会地图成员增加仙盟活跃令
Def_Notify_WorldKey_AddFamilyAuctionItem = "AddFamilyAuctionItem" # 添加仙盟拍品
Def_Notify_WorldKey_AddSystemAuctionItem = "AddSystemAuctionItem" # 添加系统拍品
--
Gitblit v1.8.0