From 328648da94a07437fc46024f3e9b7e48c2e2ae38 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 29 十月 2024 17:15:29 +0800
Subject: [PATCH] 10275 【越南】【英语】【砍树】【tqxbqy】仙盟珍宝阁-后端

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py |  109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 109 insertions(+), 0 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
index 1d7f145..d42e119 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamily.py
@@ -183,6 +183,7 @@
     curPlayer.SetFamilyActiveValue(0)
     curPlayer.SetLastWeekFamilyActiveValue(0)
     curPlayer.SetFamilyLV(0)
+    PlayerControl.SetLeaveFamilyTimeEx(curPlayer, int(time.time()))
     
     #触发玩家离开家族的任务
     EventShell.EventResponse_OnLeaveFamily(curPlayer)
@@ -637,6 +638,10 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyMoneyDonateCount, 0)
     Sync_FamilyDayRewardState(curPlayer)
     __FamilyAffair_Refresh(curPlayer, True)
+    
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeCut, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy, 0)
+    Sync_ZhenbaogeInfo(curPlayer)
     return
 
 
@@ -652,6 +657,7 @@
     Sync_FamilyDayRewardState(curPlayer)
     __FamilyAffair_CheckReset(curPlayer)
     PlayerFamilyZhenfa.OnPlayerLogin(curPlayer)
+    Sync_ZhenbaogeInfo(curPlayer)
     return
 
 def FamilyPlayerOnLoginCross(curPlayer):
@@ -1301,3 +1307,106 @@
     return
 
 ##--------------------------------------------------------------------------------------------------
+##----------------------------------------- 珍宝阁 --------------------------------------------------
+#// A6 16 珍宝阁操作 #tagCMZhenbaogeOP
+#
+#struct    tagCMZhenbaogeOP
+#{
+#    tagHead     Head;
+#    BYTE    OpType;    // 操作:0-砍价;1-购买
+#};
+def OnZhenbaogeOP(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    opType = clientData.OpType
+    playerID = curPlayer.GetPlayerID()
+    if not curPlayer.GetFamilyID():
+        GameWorld.DebugLog("没有仙盟无法操作珍宝阁!", playerID)
+        return
+    
+    # 砍价
+    if opType == 0:
+        leaveTimeEx = PlayerControl.GetLeaveFamilyTimeEx(curPlayer)
+        cutState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeCut)
+        if cutState and leaveTimeEx:
+            cutCDTimes = IpyGameDataPY.GetFuncCfg("Zhenbaoge", 3) * 60
+            passTimes = int(time.time()) - leaveTimeEx
+            if passTimes < cutCDTimes:
+                GameWorld.DebugLog("今日已砍价变更仙盟砍价CD中! passTimes=%s < %s" % (passTimes, cutCDTimes), playerID)
+                return
+        SendGameServer_FamilyZhenbaoge(curPlayer, "Cut", [])
+        
+    # 购买
+    elif opType == 1:
+        buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy)
+        if buyState:
+            GameWorld.DebugLog("珍宝阁今日已购买!", playerID)
+            return
+        moneyType = IpyGameDataPY.GetFuncCfg("Zhenbaoge", 1)
+        playerMoneyValue = PlayerControl.GetMoney(curPlayer, moneyType)
+        SendGameServer_FamilyZhenbaoge(curPlayer, "Buy", [playerMoneyValue])
+        
+    return
+
+def SendGameServer_FamilyZhenbaoge(curPlayer, msgType, msgData):
+    playerID = curPlayer.GetPlayerID()
+    tick = GameWorld.GetGameWorld().GetTick()
+    if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_FamilyZhenbaoge, tick):
+        GameWorld.DebugLog("请求CD中...", playerID)
+        return
+    GameWorld.DebugLog("珍宝阁同步GameServer: msgType=%s,%s" % (msgType, msgData), playerID)
+    msgInfo = str([msgType, msgData])
+    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(playerID, 0, 0, "FamilyZhenbaoge", msgInfo, len(msgInfo))
+    return
+
+def GameServer_FamilyZhenbaogeRet(curPlayer, resultList):
+    curPlayer.SetTickByType(ChConfig.TYPE_Player_Tick_FamilyZhenbaoge, 0)
+    playerID = curPlayer.GetPlayerID()
+    msgType, _ = resultList[:2]
+    retData = resultList[2:]
+    GameWorld.Log("仙盟珍宝阁GameServer返回: %s" % str(resultList), playerID)
+    if msgType == "Cut":
+        cutPrice = retData[0]
+        if not cutPrice:
+            # 砍价失败不处理后续
+            return
+        PlayerControl.NotifyCode(curPlayer, "ZhenbaogeCut", [cutPrice])
+        if not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeCut):
+            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeCut, 1)
+            Sync_ZhenbaogeInfo(curPlayer)
+        
+    elif msgType == "Buy":
+        isOK = retData[0]
+        if not isOK:
+            return
+        buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy)
+        if buyState:
+            #一天只能买一次,防止变更仙盟刷
+            return
+        nowPrice, giveItemList = retData[1:]
+        
+        moneyType = IpyGameDataPY.GetFuncCfg("Zhenbaoge", 1)
+        if nowPrice > 0:
+            if not PlayerControl.PayMoney(curPlayer, moneyType, nowPrice, "Zhenbaoge"):
+                GameWorld.ErrLog("珍宝阁购买货币不足! nowPrice=%s" % nowPrice, playerID)
+                return
+        elif nowPrice < 0:
+            PlayerControl.GiveMoney(curPlayer, moneyType, -nowPrice, "Zhenbaoge")
+        else: # 0不处理
+            pass
+        
+        if giveItemList:
+            ItemControler.GivePlayerItemOrMail(curPlayer, giveItemList, event=["Zhenbaoge", False, {}])
+            
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy, 1)
+        Sync_ZhenbaogeInfo(curPlayer)
+            
+    return
+
+def Sync_ZhenbaogeInfo(curPlayer):
+    clientPack = ChPyNetSendPack.tagMCFamilyZhenbaogeInfo()
+    clientPack.CutState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeCut)
+    clientPack.BuyState = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyZhenbaogeBuy)
+    NetPackCommon.SendFakePack(curPlayer, clientPack)
+    return
+
+##--------------------------------------------------------------------------------------------------

--
Gitblit v1.8.0