From bc433db8262081f0400bcb9c2c3476000662daf3 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 七月 2024 14:24:53 +0800
Subject: [PATCH] 10205 【越南】【主干】【港台】【砍树】自选礼包(支持一次性放入超65535个数叠加物品;邮件同步支持一次性领取超65535个数叠加物品)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py | 175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 171 insertions(+), 4 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
index 202a55f..5c0244a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -35,6 +35,8 @@
import NetPackCommon
import PyDataManager
import PyGameData
+import PlayerBillboard
+import PlayerActBossTrial
import PlayerCompensation
import PlayerFamilyParty
import PlayerFamilySWRH
@@ -73,6 +75,9 @@
if not family:
return 0
return GetFamilyTotalFightPower(family)
+# 徽章
+def GetFamilyEmblem(curFamily): return curFamily.GetExtra6()
+def SetFamilyEmblem(curFamily, value): return curFamily.SetExtra6(value)
# 公告修改次数
def GetFamilyBroadcastCnt(curFamily): return curFamily.GetExtra3()
@@ -98,6 +103,53 @@
def GetMemberJoinTime(curMember): return curMember.GetExattr4()
def SetMemberJoinTime(curMember, joinTime): return curMember.SetExattr4(joinTime)
#----------------------------------------------------------------------
+
+def OnGameServerInitOK():
+ ## 服务器启动成功处理
+ DoFamilySort()
+ return
+
+def OnMixServerInit():
+ ## 合服后首次启动成功处理
+
+ # 仙盟联赛重置
+ GameWorldFamilyWar.DoFamilyWarReset()
+ # 重置所有仙盟联赛评级
+ familyManager = GameWorld.GetFamilyManager()
+ for i in xrange(familyManager.GetCount()):
+ family = familyManager.GetAt(i)
+ SetFamilyWarRank(family, 0)
+
+ # 仙盟榜相关榜单重新上榜
+ familyID = family.GetID()
+ familyBillInfo = GetFamilyBillboardInfo(family)
+
+ familySubmitTotal = PlayerActBossTrial.GetFamilySubmitTotalByID(familyID)
+ PlayerBillboard.UpdateFamilyBillboard(ShareDefine.Def_BT_BossTrialSubmitFamily, familyBillInfo, familySubmitTotal)
+
+ DoFamilySort()
+ return
+
+def OnLoadDBPlayerOK():
+ ## 服务器启动加载DB玩家成功处理
+
+ # 检查仙盟ServerID
+ familyManager = GameWorld.GetFamilyManager()
+ for i in xrange(familyManager.GetCount()):
+ family = familyManager.GetAt(i)
+ if family.GetServerID():
+ continue
+ familyID = family.GetID()
+ # 没有则默认取盟主的
+ leaderID = family.GetLeaderID()
+ leaderAccID = PlayerControl.GetDBPlayerAccIDByID(leaderID)
+ if not leaderAccID:
+ continue
+ serverID = GameWorld.GetAccIDServerID(leaderAccID)
+ family.SetServerID(serverID)
+ GameWorld.Log("启动更新仙盟所属服务器ID: familyID=%s,serverID=%s,leaderID=%s,%s" % (familyID, serverID, leaderID, leaderAccID))
+
+ return
def RandomFakeFamily():
'''随机3个假仙盟'''
@@ -277,6 +329,7 @@
return
GameWorld.Log("创建仙盟: familyID=%s,playerID=%s" % (curFamily.GetID(), curPlayerID))
#---创建家族---
+ curFamily.SetServerID(GameWorld.GetAccIDServerID(curPlayer.GetAccID()))
curFamily.SetCreateTime(GameWorld.GetCurrentDataTimeStr())
curFamily.SetLV(1)
curFamily.SetAcceptJoin(ShareDefine.FamilyAcceptJoin_Agree) #设置收人方式为直接通过申请
@@ -2077,7 +2130,7 @@
curMember.SetLV(curPlayer.GetLV())
curMember.SetReincarnationLv(curPlayer.GetReincarnationLv())
curMember.SetJob(curPlayer.GetJob())
- curMember.SetOperateInfo(curPlayer.GetOperateInfo())
+ curMember.SetOperateInfo(curPlayer.GetFace()) #curPlayer.GetOperateInfo()
curMember.SetOfficialRank(curPlayer.GetOfficialRank())
return
#---------------------------------------------------------------------
@@ -2669,8 +2722,6 @@
# #帮会日常维持消耗{%S1%}银两帮会资金
# PlayerControl.FamilyNotify(family.GetID(), 'jiazu_lhs_272921', [useMoney])
- #仙盟boss
- PlayerFamilyBoss.FamilyBossFBOnDay(family)
#通知客户端刷新
family.Broadcast_FamilyChange()
#通知地图服务器刷新
@@ -2689,6 +2740,13 @@
__SetFamilyActivityDayStateValue(0)
return
+def FamilyOnDayEx(tick):
+ familyManager = GameWorld.GetFamilyManager()
+ for i in range(0, familyManager.GetCount()):
+ family = familyManager.GetAt(i)
+ #仙盟boss
+ PlayerFamilyBoss.FamilyBossFBOnDayEx(family)
+ return
#---------------------------------------------------------------------
##家族过周
@@ -2841,7 +2899,7 @@
GameWorld.ErrLog("key = %s not in tagFamily.txt" % familyLv)
return 0
keyStr = ChConfig.FamilySettingDict[index]
- return getattr(curFamilyLvSetting, keyStr)
+ return getattr(curFamilyLvSetting, "Get%s" % keyStr)()
#===============================================================================
@@ -3612,3 +3670,112 @@
PlayerControl.NotifyCode(curPlayer, "jiazu_pan_500807")
return
+
+##--------------------------------------- 仙盟传功 --------------------------------------------------
+def MapServer_FamilyChuangong(curPlayer, msgList):
+ msgType, msgData = msgList
+
+ if msgType == "Invite":
+ tagPlayerID = msgData[0]
+ __DoChuangong_Invite(curPlayer, tagPlayerID)
+ return
+
+ if msgType == "Response":
+ tagPlayerID, isOK = msgData
+ __DoChuangong_Response(curPlayer, tagPlayerID, isOK)
+ return
+
+ return
+
+def __CheckChuangongPlayer(curPlayer, tagPlayerID):
+ curFamily = curPlayer.GetFamily()
+ if not curFamily:
+ return
+ tagMember = curFamily.FindMember(tagPlayerID)
+ if not tagMember:
+ GameWorld.DebugLog("非盟友无法传功! tagPlayerID=%s" % tagPlayerID, curPlayer.GetPlayerID())
+ return
+ tagPlayer = tagMember.GetPlayer()
+ if not tagPlayer:
+ PlayerControl.NotifyCode(curPlayer, "FairyFeastPlayerOffline")
+ return
+ return tagPlayer
+
+def __DoChuangong_Invite(curPlayer, tagPlayerID):
+ ## 邀请
+ playerID = curPlayer.GetPlayerID()
+ tagPlayer = __CheckChuangongPlayer(curPlayer, tagPlayerID)
+ if not tagPlayer:
+ return
+ invitePlayerIDList = PyGameData.g_chuangongPlayerDict.get(playerID, [])
+ if tagPlayerID not in invitePlayerIDList:
+ invitePlayerIDList.append(tagPlayerID)
+ PyGameData.g_chuangongPlayerDict[playerID] = invitePlayerIDList
+ clientPack = ChPyNetSendPack.tagGCChuangongInviteInfo()
+ clientPack.Clear()
+ clientPack.PlayerID = curPlayer.GetPlayerID()
+ clientPack.Name = curPlayer.GetName()
+ clientPack.NameLen = len(clientPack.Name)
+ clientPack.LV = curPlayer.GetLV()
+ clientPack.Job = curPlayer.GetJob()
+ clientPack.RealmLV = curPlayer.GetOfficialRank()
+ clientPack.Face = curPlayer.GetFace()
+ NetPackCommon.SendFakePack(tagPlayer, clientPack)
+ GameWorld.DebugLog("邀请传功: tagPlayerID=%s, %s" % (tagPlayerID, PyGameData.g_chuangongPlayerDict), playerID)
+ return
+
+def __DoChuangong_Response(curPlayer, tagPlayerID, isOK):
+ ## 相应
+ playerID = curPlayer.GetPlayerID()
+ tagPlayer = __CheckChuangongPlayer(curPlayer, tagPlayerID)
+ if not tagPlayer:
+ return
+ invitePlayerIDList = PyGameData.g_chuangongPlayerDict.get(tagPlayerID, [])
+ if not isOK:
+ if playerID in invitePlayerIDList:
+ invitePlayerIDList.remove(playerID)
+ PyGameData.g_chuangongPlayerDict[tagPlayerID] = invitePlayerIDList
+ GameWorld.DebugLog("拒绝传功: tagPlayerID=%s, %s" % (tagPlayerID, PyGameData.g_chuangongPlayerDict), playerID)
+ return
+ if not invitePlayerIDList:
+ PlayerControl.NotifyCode(curPlayer, "TagHadFinishChuangong")
+ return
+ if playerID not in invitePlayerIDList:
+ GameWorld.DebugLog("不在对方邀请列表了,无法传功: tagPlayerID=%s, %s" % (tagPlayerID, invitePlayerIDList), playerID)
+ return
+ PyGameData.g_chuangongPlayerDict.pop(tagPlayerID)
+
+ # 通知双方开始传功
+ __NotifyChuangongStart(curPlayer, tagPlayer)
+ __NotifyChuangongStart(tagPlayer, curPlayer)
+ return
+
+def __NotifyChuangongStart(curPlayer, tagPlayer):
+ clientPack = ChPyNetSendPack.tagGCChuangongStart()
+ clientPack.Clear()
+ clientPack.PlayerID = tagPlayer.GetPlayerID()
+ clientPack.Name = tagPlayer.GetName()
+ clientPack.NameLen = len(clientPack.Name)
+ clientPack.LV = tagPlayer.GetLV()
+ clientPack.Job = tagPlayer.GetJob()
+ clientPack.RealmLV = tagPlayer.GetOfficialRank()
+ NetPackCommon.SendFakePack(curPlayer, clientPack)
+ return
+
+##--------------------------------------------------------------------------------------------------
+
+def GetFamilyBillboardInfo(curFamily):
+ ## 获取仙盟榜单信息 区服ID、徽章、仙盟名、盟主名、仙盟总战力、仙盟等级
+ familyID = curFamily.GetID()
+ name = curFamily.GetName()
+ id2 = curFamily.GetLeaderID()
+ name2 = curFamily.GetLeaderName()
+ fightPower = GetFamilyTotalFightPower(curFamily)
+ value1 = fightPower / ChConfig.Def_PerPointValue
+ value2 = fightPower % ChConfig.Def_PerPointValue
+ value3 = GetFamilyEmblem(curFamily)
+ value4 = curFamily.GetLV()
+ value5 = curFamily.GetServerID()
+ return {"id":familyID, "name":name, "id2":id2, "name2":name2, "value1":value1, "value2":value2,
+ "value3":value3, "value4":value4, "value5":value5}
+
--
Gitblit v1.8.0