From 3e464fe2ec8c40fc317e3ec3d6a4c3d9788cf41a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 13 六月 2024 17:27:18 +0800
Subject: [PATCH] 10178 【越南】【香港】【主干】挂机奖励(B109封包修改)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py |  104 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 101 insertions(+), 3 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
index 202a55f..abb5903 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -2669,8 +2669,6 @@
 #            #帮会日常维持消耗{%S1%}银两帮会资金
 #            PlayerControl.FamilyNotify(family.GetID(), 'jiazu_lhs_272921', [useMoney])
         
-        #仙盟boss
-        PlayerFamilyBoss.FamilyBossFBOnDay(family)
         #通知客户端刷新
         family.Broadcast_FamilyChange()
         #通知地图服务器刷新
@@ -2689,6 +2687,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 +2846,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 +3617,96 @@
         
     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()
+    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
+
+##--------------------------------------------------------------------------------------------------
+

--
Gitblit v1.8.0