From 3f862208516829ee806168cbb633bc9221f0cf6a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 11 十月 2025 20:30:10 +0800
Subject: [PATCH] 271 【内政】古宝系统-服务端

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py |   64 ++++++++++---------------------
 1 files changed, 21 insertions(+), 43 deletions(-)

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 bf664fa..fd02f54 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -58,7 +58,6 @@
 import CrossPlayerData
 import ChNetSendPack
 import PlayerState
-import PlayerGubao
 import PlayerOnline
 import PlayerTask
 import PlayerMail
@@ -414,10 +413,6 @@
         
     if not GameWorld.IsCrossServer() and GetCrossMapID(curPlayer):
         NotifyCode(curPlayer, "CrossMap10") 
-        return False
-    
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-        GameWorld.Log("客户端自定义场景下无法传送!", curPlayer.GetPlayerID())
         return False
     
     return True
@@ -1000,10 +995,8 @@
     playerID = curPlayer.GetPlayerID()
     if not isDisconnect:
         CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
-        PyGameData.g_fbBuyBuffTimeDict.pop(playerID, None)
     #清除地图玩家缓存
     PyGameData.g_playerReqEnterFBEx.pop(playerID, None)
-    NPCCommon.ClearPriWoodPile(curPlayer)
     #移除地图缓存的境界难度玩家ID信息
     for playerIDList in PyGameData.g_realmDiffPlayerDict.values():
         if playerID in playerIDList:
@@ -1408,7 +1401,7 @@
     #进入副本通用检查
     fbIpyData = FBCommon.GetFBIpyData(mapID)
     fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID)
-    sceneMapID = mapID if not fbLineIpyData else fbLineIpyData.GetMapID()
+    sceneMapID = mapID #if not fbLineIpyData else fbLineIpyData.GetMapID()
     #过滤封包地图ID
     if not GameWorld.GetMap().IsMapIDExist(sceneMapID):
         GameWorld.ErrLog('###非法地图数据,sceneMapID: %s' % (sceneMapID), curPlayer.GetID())
@@ -1437,15 +1430,14 @@
             GameWorld.Log("非队长,无法发起进入组队副本请求!", curPlayer.GetPlayerID())
             return
         isSendToGameServer = True
-    if isSendToGameServer or mapID in ChConfig.Def_MapID_SendToGameServer \
-        or mapID in ReadChConfig.GetEvalChConfig("MapID_SendToGameServer"):
+    if isSendToGameServer:
         extendParamList = []
         if mapID in ChConfig.Def_MapID_LineIDToPropertyID:
-            enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % mapID)
+            enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FbEnterCnt % mapID)
             extendParamList = [enterCnt]
-        elif mapID in ChConfig.MirrorBattleMapIDList:
-            reqInfoEx["sceneMapID"] = sceneMapID
-            extendParamList = [reqInfoEx]
+        #elif mapID in ChConfig.MirrorBattleMapIDList:
+        #    reqInfoEx["sceneMapID"] = sceneMapID
+        #    extendParamList = [reqInfoEx]
         SendToGameServerEnterFB(curPlayer, mapID, lineID, tick, extendParamList)
         return
     
@@ -1536,12 +1528,6 @@
         if isNotify:
             NotifyCode(curPlayer, "Carry_lhs_697674")
         return ShareDefine.EntFBAskRet_Sit
-    
-    if curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-        if isNotify:
-            NotifyCode(curPlayer, "Carry_lhs_697674")
-        GameWorld.Log("客户端自定义场景下无法进入副本!", curPlayer.GetPlayerID())
-        return ShareDefine.EntFBAskRet_Other
     
     if playerAction in ChConfig.Def_Player_Cannot_TransState:
         #Carry_lhs_697674:您当前所处的状态不能进行传送!
@@ -1675,8 +1661,7 @@
     curPlayer.SetDict(ChConfig.Def_PlayerKey_TransTick, tick)
     
     mapID = FBCommon.GetRecordMapID(mapID)
-    fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, funcLineID)
-    sceneMapID = mapID if not fbLineIpyData else fbLineIpyData.GetMapID()
+    sceneMapID = mapID #if not fbLineIpyData else fbLineIpyData.GetMapID()
     
     # 地图分流, 减少单地图压力
     FBMapShuntDict = ReadChConfig.GetEvalChConfig("FBMapShunt")
@@ -1836,8 +1821,8 @@
         return tagLineID
     tagLinePlayerCountDict = PyGameData.g_commMapLinePlayerCountDict[tagMapID] # 此分线包含所有分线,含未开放的及活动分线
     
-    if bossID and tagMapID != ChConfig.Def_FBMapID_BossHome:
-        tagLineID = 0 # Boss的话未分流前先强制1线,即为0
+    #if bossID and tagMapID != ChConfig.Def_FBMapID_BossHome:
+    #    tagLineID = 0 # Boss的话未分流前先强制1线,即为0
     playerID = curPlayer.GetPlayerID()
     playChangeLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_PlayChangeLineID)
     funcChangeLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FuncChangeLineID)
@@ -2995,6 +2980,9 @@
         GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_GiveMoney, msgInfo, [serverGroupID])
         return True
     
+    if priceType == ShareDefine.TYPE_Price_FamilyExp:
+        return PlayerFamily.AddFamilyExp(curPlayer, value)
+    
     befMoney = GetMoney(curPlayer, priceType)
     if priceType == IPY_GameWorld.TYPE_Price_Gold_Money:
         updPlayerGold = GetMoneyReal(curPlayer, priceType) + value
@@ -3077,6 +3065,9 @@
     
     PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_GetMoney, value, [priceType])
     
+    if priceType == ShareDefine.TYPE_Price_FamilyCoin:
+        PlayerFamily.AddFamilyContrib(curPlayer, value) # 公会币同步增加公会贡献
+        
     if priceType not in [IPY_GameWorld.TYPE_Price_Gold_Money, IPY_GameWorld.TYPE_Price_Gold_Paper, ShareDefine.TYPE_Price_PayCoin] \
         and giveType == ChConfig.Def_GiveMoney_Unknown:
         #GameWorld.DebugLog("该货币没有指定来源类型不记录!priceType=%s,giveType=%s" % (priceType, giveType))
@@ -3528,7 +3519,6 @@
                 
             #if aftFreePoint > befFreePoint:
             #    curPlayer.SetFreePoint(aftFreePoint)
-            PlayerGubao.DoGubaoAddFreePoint(curPlayer)
             
             # 升级需要执行的游戏功能处理
             GameFuncComm.DoFuncOpenLogic(curPlayer)
@@ -4214,11 +4204,11 @@
         if actExpIpyData and curPlayer.GetLV() >= actExpIpyData.GetLVLimit():
             fightExpRate += actExpIpyData.GetAddExpRate()
             
-    if curPlayer.GetMapID() not in [ChConfig.Def_FBMapID_FamilyInvade]: #守卫人皇不加组队加成
-        fightExpRate += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamExpRate) # 组队
+    #if curPlayer.GetMapID() not in [ChConfig.Def_FBMapID_FamilyInvade]: #守卫人皇不加组队加成
+    #    fightExpRate += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TeamExpRate) # 组队
     
     #地图多倍经验加成,默认是1倍不加成
-    mapExpAddMultiple = max(0, FBCommon.GetAreaRewardMultiple(curPlayer) - 1)
+    mapExpAddMultiple = 0
     fightExpRate += mapExpAddMultiple * ChConfig.Def_MaxRateValue
     
     if totalExpRate != fightExpRate:
@@ -4373,6 +4363,8 @@
     value = ComMainLevelValue(chapterID, levelNum, wave)
     SetMainLevelPassValue(curPlayer, value)
     if wave == 0:
+        lvID = chapterID * 100 + levelNum
+        PlayerBillboard.UpdatePlayerBillboard(curPlayer, ShareDefine.Def_BT_MainLevel, lvID)
         PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_MainLevel)
     return value
 def GetMainLevelPassInfo(curPlayer):
@@ -4435,16 +4427,6 @@
     curPlayer.SetExAttr5(value, False, True)
     if not value:
         CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
-    return
-
-## 前端自定义场景
-def GetCustomMapID(curPlayer): return curPlayer.GetExAttr14() / 1000
-def GetCustomLineID(curPlayer): return curPlayer.GetExAttr14() % 1000
-## 自定义场景后端判断已结算后需直接重置为0,防止前端没有退出场景直接下线导致数据没有重置,可能引发可以重复进
-def SetCustomMap(curPlayer, mapID, lineID):
-    value = mapID * 1000 + lineID
-    if value != curPlayer.GetExAttr14():
-        curPlayer.SetExAttr14(value, False, True)
     return
 
 ## 铜钱点, 支持铜钱超20亿
@@ -4559,7 +4541,7 @@
         NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FightPower_HighestEx, highestFightPower / ChConfig.Def_PerPointValue)
         
     GameWorld.DebugLog("总战力: %s, 历史最高战力: %s, beforeFightPower=%s" % (value, highestFightPower, beforeFightPower), curPlayer.GetPlayerID())
-    PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer)
+    #PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer)
     # 记录开服活动数据
     #OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_FightPower, totalFightPower)
     #if beforeFightPower != totalFightPower:
@@ -4854,10 +4836,6 @@
 
 # 血瓶恢复效果
 def GetHPCureEnhance(curPlayer): return 0
-
-# 仙盟徽章ID
-def GetFamilyEmblemID(curPlayer): return curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyEmblemID)
-def SetFamilyEmblemID(curPlayer, emblemID): NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyEmblemID, emblemID)
 
 # 仙盟职位,使用 GetReceivedSalary,因为FamilyMemberLV没有入库
 def GetFamilyMemberLV(curPlayer): return curPlayer.GetReceivedSalary()

--
Gitblit v1.8.0