From 7bd89df4994934b9a5810e6b62383e6773b8339b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 十月 2023 20:28:47 +0800
Subject: [PATCH] 9952 【BT0.1】【主干】仙盟修改(传功)

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

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
index 34a2da9..44b1b6d 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -3617,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