From 736f0f77848f217db1b3a76693cd8289cb5e03ea Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 28 八月 2025 19:16:28 +0800
Subject: [PATCH] 16 卡牌服务端(功能开启删除不需要字段;支持任务开启功能;)

---
 /dev/null                                                                                        |  455 -----------------------------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py               |   13 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py           |  201 ---------------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py             |   10 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py           |    5 
 PySysDB/PySysDBPY.h                                                                              |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py       |   51 +--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py        |    3 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                  |   13 -
 10 files changed, 31 insertions(+), 725 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index e81be86..577891a 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -549,10 +549,8 @@
 {
 	DWORD		_FuncId;	//功能标识
 	DWORD		LimitLV;	//开启等级
-	DWORD		LimitMagicWeapon;	//需要解锁法宝ID
 	WORD		LimiRealmLV;	//需要境界等级
 	DWORD		LimitMissionID;	//需要完成的任务ID
-	BYTE		LimitVIPLV;	//需要VIP等级
 	char		MailKey;	//邮件
 };
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index c0ee79c..a9774a4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4116,19 +4116,6 @@
 Def_PDict_GFPassiveIndex = "GFP_%s_%s"   # 被动功法 页数-索引
 Def_PDict_GFPassivePage = "GFPPage"   # 被动功法选中页数
 
-# 挂机收益
-Def_PDict_GuajiCalcTime = "GuajiCalcTime"   # 上次统计收益时间戳
-Def_PDict_GuajiAwardSeconds = "GuajiAwardSeconds"   # 已累计收益时长,秒
-Def_PDict_GuajiQuickCount = "GuajiQuickCount"   # 今日已快速收益次数
-Def_PDict_GuajiExp = "GuajiExp"   # 经验
-Def_PDict_GuajiExpPoint = "GuajiExpPoint"   # 经验超过E部分
-Def_PDict_GuajiMoneyType = "GuajiMoneyType_%s" # 获得货币类型,参数(索引)
-Def_PDict_GuajiMoneyValue = "GuajiMoneyValue_%s" # 获得货币值,参数(索引)
-Def_PDict_GuajiMoneyUnSeconds = "GuajiMoneyUnSeconds_%s" # 计算获得货币值时未处理收益的累计时长,秒,参数(货币类型)
-Def_PDict_GuajiItemUnSeconds = "GuajiItemUnSeconds" # 计算获得物品次数时未处理收益的累计时长,秒
-Def_PDict_GuajiItemID = "GuajiItemID_%s" # 获得物品ID,参数(索引)
-Def_PDict_GuajiItemCount = "GuajiItemCount_%s" # 获得物品个数,参数(索引)
-
 #套装
 Def_PDict_EquipPartSuiteLV = "EQPartSuiteLV_%s_%s" #部位套装等级 参数 部位、套装类型
 Def_PDict_EquipPartSuiteActivate = "EQPartSuiteActivate_%s" #套装激活记录 参数 key编号
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c350bd4..b2ec32a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -42053,207 +42053,6 @@
 
 
 #------------------------------------------------------
-# B1 09 玩家挂机系统信息 #tagMCGuajiInfo
-
-class  tagMCGuajiMoney(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("MoneyType", c_ubyte),    
-                  ("MoneyValue", c_int),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.MoneyType = 0
-        self.MoneyValue = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCGuajiMoney)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B1 09 玩家挂机系统信息 //tagMCGuajiInfo:
-                                MoneyType:%d,
-                                MoneyValue:%d
-                                '''\
-                                %(
-                                self.MoneyType,
-                                self.MoneyValue
-                                )
-        return DumpString
-
-
-class  tagMCGuajiItem(Structure):
-    _pack_ = 1
-    _fields_ = [
-                  ("ItemID", c_int),    
-                  ("Count", c_ushort),    
-                  ]
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, stringData, _pos=0, _len=0):
-        self.Clear()
-        memmove(addressof(self), stringData[_pos:], self.GetLength())
-        return _pos + self.GetLength()
-
-    def Clear(self):
-        self.ItemID = 0
-        self.Count = 0
-        return
-
-    def GetLength(self):
-        return sizeof(tagMCGuajiItem)
-
-    def GetBuffer(self):
-        return string_at(addressof(self), self.GetLength())
-
-    def OutputString(self):
-        DumpString = '''// B1 09 玩家挂机系统信息 //tagMCGuajiInfo:
-                                ItemID:%d,
-                                Count:%d
-                                '''\
-                                %(
-                                self.ItemID,
-                                self.Count
-                                )
-        return DumpString
-
-
-class  tagMCGuajiInfo(Structure):
-    Head = tagHead()
-    QuickAwardCount = 0    #(BYTE QuickAwardCount)// 今日已快速挂机收益次数
-    AwardType = 0    #(BYTE AwardType)// 收益类型: 0-已累计预览;1-领取结算结果(包含常规领取跟快速领取)
-    AwardSeconds = 0    #(DWORD AwardSeconds)// 已累计收益时长,秒
-    Exp = 0    #(DWORD Exp)// 已累计经验,求余亿部分
-    ExpPoint = 0    #(DWORD ExpPoint)// 已累计经验,整除亿部分
-    MoneyLen = 0    #(BYTE MoneyLen)
-    MoneyList = list()    #(vector<tagMCGuajiMoney> MoneyList)// 已累计货币
-    ItemLen = 0    #(BYTE ItemLen)
-    ItemList = list()    #(vector<tagMCGuajiItem> ItemList)// 已累计物品
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB1
-        self.Head.SubCmd = 0x09
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.QuickAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AwardType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.AwardSeconds,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.MoneyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.MoneyLen):
-            temMoneyList = tagMCGuajiMoney()
-            _pos = temMoneyList.ReadData(_lpData, _pos)
-            self.MoneyList.append(temMoneyList)
-        self.ItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        for i in range(self.ItemLen):
-            temItemList = tagMCGuajiItem()
-            _pos = temItemList.ReadData(_lpData, _pos)
-            self.ItemList.append(temItemList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB1
-        self.Head.SubCmd = 0x09
-        self.QuickAwardCount = 0
-        self.AwardType = 0
-        self.AwardSeconds = 0
-        self.Exp = 0
-        self.ExpPoint = 0
-        self.MoneyLen = 0
-        self.MoneyList = list()
-        self.ItemLen = 0
-        self.ItemList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += 4
-        length += 4
-        length += 4
-        length += 1
-        for i in range(self.MoneyLen):
-            length += self.MoneyList[i].GetLength()
-        length += 1
-        for i in range(self.ItemLen):
-            length += self.ItemList[i].GetLength()
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.QuickAwardCount)
-        data = CommFunc.WriteBYTE(data, self.AwardType)
-        data = CommFunc.WriteDWORD(data, self.AwardSeconds)
-        data = CommFunc.WriteDWORD(data, self.Exp)
-        data = CommFunc.WriteDWORD(data, self.ExpPoint)
-        data = CommFunc.WriteBYTE(data, self.MoneyLen)
-        for i in range(self.MoneyLen):
-            data = CommFunc.WriteString(data, self.MoneyList[i].GetLength(), self.MoneyList[i].GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ItemLen)
-        for i in range(self.ItemLen):
-            data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                QuickAwardCount:%d,
-                                AwardType:%d,
-                                AwardSeconds:%d,
-                                Exp:%d,
-                                ExpPoint:%d,
-                                MoneyLen:%d,
-                                MoneyList:%s,
-                                ItemLen:%d,
-                                ItemList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.QuickAwardCount,
-                                self.AwardType,
-                                self.AwardSeconds,
-                                self.Exp,
-                                self.ExpPoint,
-                                self.MoneyLen,
-                                "...",
-                                self.ItemLen,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagMCGuajiInfo=tagMCGuajiInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGuajiInfo.Head.Cmd,m_NAtagMCGuajiInfo.Head.SubCmd))] = m_NAtagMCGuajiInfo
-
-
-#------------------------------------------------------
 # B1 22 武将信息 #tagSCHeroInfo
 
 class  tagSCHero(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 97e9c79..c297f5d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -485,10 +485,8 @@
                 "FuncOpenLV":(
                         ("DWORD", "FuncId", 1),
                         ("DWORD", "LimitLV", 0),
-                        ("DWORD", "LimitMagicWeapon", 0),
                         ("WORD", "LimiRealmLV", 0),
                         ("DWORD", "LimitMissionID", 0),
-                        ("BYTE", "LimitVIPLV", 0),
                         ("char", "MailKey", 0),
                         ),
 
@@ -3322,11 +3320,9 @@
         
     def GetFuncId(self): return self.attrTuple[0] # 功能标识 DWORD
     def GetLimitLV(self): return self.attrTuple[1] # 开启等级 DWORD
-    def GetLimitMagicWeapon(self): return self.attrTuple[2] # 需要解锁法宝ID DWORD
-    def GetLimiRealmLV(self): return self.attrTuple[3] # 需要境界等级 WORD
-    def GetLimitMissionID(self): return self.attrTuple[4] # 需要完成的任务ID DWORD
-    def GetLimitVIPLV(self): return self.attrTuple[5] # 需要VIP等级 BYTE
-    def GetMailKey(self): return self.attrTuple[6] # 邮件 char
+    def GetLimiRealmLV(self): return self.attrTuple[2] # 需要境界等级 WORD
+    def GetLimitMissionID(self): return self.attrTuple[3] # 需要完成的任务ID DWORD
+    def GetMailKey(self): return self.attrTuple[4] # 邮件 char
 
 # 合成表
 class IPY_ItemCompound():
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py
deleted file mode 100644
index 0826f7e..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_GuajiAward.py
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package UseItem.Item_GuajiAward
-#
-# @todo:直接给挂机收益
-# @author hxp
-# @date 2024-06-21
-# @version 1.0
-#
-# 详细描述: 直接给挂机收益
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2024-06-21 11:00"""
-#-------------------------------------------------------------------------------
-
-import PlayerGuaji
-import ItemCommon
-
-def BatchUseItem(curPlayer, curRoleItem, tick, useCnt, exData):
-    awardSeconds = curRoleItem.GetEffectByIndex(0).GetEffectValue(0) * useCnt * 60
-    if awardSeconds <= 0:
-        return
-    PlayerGuaji.GiveGuajiAward(curPlayer, awardSeconds)
-    ItemCommon.DelItem(curPlayer, curRoleItem, useCnt, True, "GuajiAward")
-    return True, useCnt
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index bfc75ea..3e6b376 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -128,7 +128,6 @@
 import PlayerLove
 import GameObj
 import PlayerChangeJob
-import PlayerGuaji
 import PlayerFace
 import PlayerChatBox
 import PlayerXiangong
@@ -789,7 +788,6 @@
         PlayerTask.OnPlayerLogin(curPlayer)
         PlayerTree.OnPlayerLogin(curPlayer)
         PlayerMineArea.OnPlayerLogin(curPlayer)
-        PlayerGuaji.OnPlayerLogin(curPlayer)
         PlayerActFamilyGCZ.OnPlayerLogin(curPlayer)
         PlayerTalk.OnPlayerLogin(curPlayer)
         
@@ -3313,9 +3311,6 @@
     # 活跃放置奖励
     elif rewardType == ChConfig.Def_RewardType_ActivityPlace:
         PlayerActivity.GetActivityPlaceReward(curPlayer)
-    # 挂机奖励
-    elif rewardType == ChConfig.Def_RewardType_Guaji:
-        PlayerGuaji.OnGetGuajiAward(curPlayer, dataEx)
     # 仙树免费减时
     elif rewardType == ChConfig.Def_RewardType_TreeFreeTime:
         PlayerTree.FreeReduceTreeLVTime(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
index 56cd07e..a61fc98 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
@@ -24,9 +24,9 @@
 import ChPyNetSendPack
 import GameWorld
 import NetPackCommon
-import PlayerGodWeapon
-import PlayerHorse
-import PlayerPet
+#import PlayerGodWeapon
+#import PlayerHorse
+#import PlayerPet
 import ShareDefine
 import IpyGameDataPY
 import PlayerControl
@@ -34,45 +34,40 @@
 import PlayerBillboard
 import PlayerTreasure
 import PlayerSignDay
-import PlayerGoldGift
-import PlayerEquipDecompose
-import PlayerCrossChampionship
-import PlayerFreeGoods
-import FunctionNPCCommon
+#import PlayerGoldGift
+#import PlayerEquipDecompose
+#import PlayerCrossChampionship
+#import PlayerFreeGoods
+#import FunctionNPCCommon
 import PlayerActBuyCountGift
 import PlayerActLoginNew
 import PlayerActTask
 import IPY_GameWorld
 import ItemCommon
 import ItemControler
-import PlayerLianTi
 import PlayerArena
-import PlayerFaQi
-import PlayerGuaji
+#import PlayerLianTi
+#import PlayerFaQi
 
 
 # 功能开启需执行的函数{功能ID:执行函数, ...} 函数需返回是否激活成功, 功能开启有需要处理功能逻辑的这里增加函数调用配置即可
 FuncOpenLogicDict = {
-                     ShareDefine.GameFuncID_Horse:lambda curObj:PlayerHorse.DoHorseOpen(curObj),
-                     ShareDefine.GameFuncID_GodWeapon:lambda curObj:PlayerGodWeapon.DoGodWeaponOpen(curObj),
-                     ShareDefine.GameFuncID_Pet:lambda curObj:PlayerPet.DoPetOpen(curObj),
                      ShareDefine.GameFuncID_Official:lambda curObj:PlayerPrestigeSys.DoOfficialOpen(curObj),
                      ShareDefine.GameFuncID_Billboard:lambda curObj:PlayerBillboard.DoBillboardOpen(curObj),
                      ShareDefine.GameFuncID_SignDay:lambda curObj:PlayerSignDay.DoSignDayOpen(curObj),
                      ShareDefine.GameFuncID_Treasure:lambda curObj:PlayerTreasure.DoTreasureOpen(curObj),
-                     ShareDefine.GameFuncID_FirstGoldTip:lambda curObj:PlayerGoldGift.DoFirstGoldOpen(curObj),
-                     ShareDefine.GameFuncID_EquipDecompose:lambda curObj:PlayerEquipDecompose.DoEquipDecomposeOpen(curObj),
-                     ShareDefine.GameFuncID_FreeGoods:lambda curObj:PlayerFreeGoods.DoFreeGoodsOpen(curObj),
-                     ShareDefine.GameFuncID_OSSail:lambda curObj:FunctionNPCCommon.OSSaleOpenMail(curObj),
-                     ShareDefine.GameFuncID_AddPoint:lambda curObj:PlayerControl.DoAddPointOpen(curObj),
                      ShareDefine.GameFuncID_Arena:lambda curObj:PlayerArena.DoArenaOpen(curObj),
-                     ShareDefine.GameFuncID_FaQi:lambda curObj:PlayerFaQi.DoFaQiOpen(curObj),
-                     ShareDefine.GameFuncID_LianTi:lambda curObj:PlayerLianTi.DoLianTiOpen(curObj),
-                     ShareDefine.GameFuncID_Championship:lambda curObj:PlayerCrossChampionship.DoChampionshipOpen(curObj),
-                     ShareDefine.GameFuncID_Guaji:lambda curObj:PlayerGuaji.DoGuajiOpen(curObj),
-                     #ShareDefine.GameFuncID_RunDaily:lambda curObj:FBCommon.DoFuncOpen_RunDaily(curObj),
-                     #ShareDefine.GameFuncID_RunFamily:lambda curObj:FBCommon.DoFuncOpen_RunFamily(curObj),
-
+                     #ShareDefine.GameFuncID_Horse:lambda curObj:PlayerHorse.DoHorseOpen(curObj),
+                     #ShareDefine.GameFuncID_GodWeapon:lambda curObj:PlayerGodWeapon.DoGodWeaponOpen(curObj),
+                     #ShareDefine.GameFuncID_Pet:lambda curObj:PlayerPet.DoPetOpen(curObj),
+                     #ShareDefine.GameFuncID_FirstGoldTip:lambda curObj:PlayerGoldGift.DoFirstGoldOpen(curObj),
+                     #ShareDefine.GameFuncID_EquipDecompose:lambda curObj:PlayerEquipDecompose.DoEquipDecomposeOpen(curObj),
+                     #ShareDefine.GameFuncID_FreeGoods:lambda curObj:PlayerFreeGoods.DoFreeGoodsOpen(curObj),
+                     #ShareDefine.GameFuncID_OSSail:lambda curObj:FunctionNPCCommon.OSSaleOpenMail(curObj),
+                     #ShareDefine.GameFuncID_AddPoint:lambda curObj:PlayerControl.DoAddPointOpen(curObj),
+                     #ShareDefine.GameFuncID_FaQi:lambda curObj:PlayerFaQi.DoFaQiOpen(curObj),
+                     #ShareDefine.GameFuncID_LianTi:lambda curObj:PlayerLianTi.DoLianTiOpen(curObj),
+                     #ShareDefine.GameFuncID_Championship:lambda curObj:PlayerCrossChampionship.DoChampionshipOpen(curObj),
                      }
 
 ## 注意:功能开启需执行的函数 及 功能开启后升级逻辑 只会执行其中一个
@@ -123,10 +118,6 @@
         
         limitMissionID = ipyData.GetLimitMissionID()
         if limitMissionID and not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_MissionFinish % limitMissionID):
-            continue
-        
-        limitVIPLV = ipyData.GetLimitVIPLV()
-        if limitVIPLV and curPlayer.GetVIPLv() < limitVIPLV:
             continue
         
         # 先更新值再处理开启逻辑,不能可能导致在功能开启逻辑中再开启功能引发的递归死循环
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index dc748e3..0a3c9f7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -97,7 +97,6 @@
 import IpyGameDataPY
 import PlayerArena
 import PyGameData
-import PlayerGuaji
 import PlayerXiangong
 import PlayerMineArea
 import PlayerBillboard
@@ -335,8 +334,6 @@
         PlayerArena.OnDayEx(curPlayer)
         #福地
         PlayerMineArea.PlayerOnDay(curPlayer)
-        #挂机
-        PlayerGuaji.PlayerOnDay(curPlayer)
         #特殊时间点过天的,一般是游戏功能,此时立即同步一次跨服玩家数据
         CrossPlayerData.SendMergePlayerDataNow(curPlayer)
         
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py
deleted file mode 100644
index 8c8b912..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py
+++ /dev/null
@@ -1,455 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#-------------------------------------------------------------------------------
-#
-##@package Player.PlayerGuaji
-#
-# @todo:挂机收益
-# @author hxp
-# @date 2024-06-12
-# @version 1.0
-#
-# 详细描述: 挂机收益
-#
-#-------------------------------------------------------------------------------
-#"""Version = 2024-06-12 18:00"""
-#-------------------------------------------------------------------------------
-
-import ChConfig
-import ShareDefine
-import PlayerControl
-import ChPyNetSendPack
-import PlayerActGarbageSorting
-import PlayerActCollectWords
-import PlayerGoldInvest
-import FormulaControl
-import NetPackCommon
-import IpyGameDataPY
-import ItemControler
-import GameFuncComm
-import GameWorld
-
-import time
-
-Def_Process_Seconds = 60 # 在线定时处理间隔,秒,离线上线后一次性处理
-
-def DoGuajiOpen(curPlayer):
-    return
-    openAwardMinutes = IpyGameDataPY.GetFuncCfg("GuajiTime", 1) # 功能开启获得收益时长,分钟
-    AddGuajiAward(curPlayer, openAwardMinutes * 60)
-    return
-
-def OnPlayerLogin(curPlayer):
-    return
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Guaji):
-        return
-    if not ProcessGuaji(curPlayer):
-        Sync_GuajiAward(curPlayer)
-    return
-
-def PlayerOnDay(curPlayer):
-    return
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Guaji):
-        return
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiQuickCount, 0)
-    Sync_GuajiAward(curPlayer)
-    return
-
-def ProcessGuaji(curPlayer):
-    ## 挂机定时处理收益
-    return
-    if GameWorld.IsCrossServer():
-        return
-    
-    if not GameWorld.IsNormalPlayer(curPlayer):
-        return
-    
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Guaji):
-        return
-    
-    curTime = int(time.time())
-    lastCalcTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiCalcTime)
-    if not lastCalcTime:
-        lastCalcTime = curTime
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiCalcTime, curTime)
-        
-    awardSeconds = passSeconds = curTime - lastCalcTime
-    if passSeconds <= Def_Process_Seconds:
-        # 每满x秒统计一次
-        return
-    
-    if awardSeconds < Def_Process_Seconds + 10:
-        awardSeconds = Def_Process_Seconds
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiCalcTime, lastCalcTime + awardSeconds)
-    else:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiCalcTime, curTime)        
-        
-    return AddGuajiAward(curPlayer, awardSeconds)
-
-def AddGuajiAward(curPlayer, awardSeconds):
-    ## 增加挂机奖励
-    if awardSeconds <= 0:
-        return
-    
-    playerID = curPlayer.GetPlayerID()
-    curAwardSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiAwardSeconds)
-    maxSeconds = GetGuajiSecondsMax(curPlayer)
-    if curAwardSeconds >= maxSeconds:
-        #GameWorld.DebugLog("挂机收益时长已达上限: curAwardSeconds=%s >= %s" % (curAwardSeconds, maxSeconds), playerID)
-        return
-    
-    awardSeconds = min(maxSeconds - curAwardSeconds, awardSeconds)
-    if awardSeconds <= 0:
-        return
-    
-    addExp, giveMoneyDict, giveItemDict = CalcGuajiAward(curPlayer, awardSeconds, True)
-    
-    updAwardSeconds = curAwardSeconds + awardSeconds
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiAwardSeconds, updAwardSeconds)
-    #GameWorld.DebugLog("保存挂机累计收益: curAwardSeconds=%s,updAwardSeconds=%s,maxSeconds=%s" % (curAwardSeconds, updAwardSeconds, maxSeconds), playerID)
-    
-    # 经验
-    exp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiExpPoint) * ChConfig.Def_PerPointValue \
-        + curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiExp) + addExp
-    updExpPoint = exp / ChConfig.Def_PerPointValue
-    updExp = exp % ChConfig.Def_PerPointValue
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiExpPoint, updExpPoint)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiExp, updExp)
-    #GameWorld.DebugLog("    累计经验: %s亿%s" % (updExpPoint, updExp), playerID)
-    
-    # 货币
-    for moneyType, addValue in giveMoneyDict.items():
-        saveNum = GetSaveNum(curPlayer, ChConfig.Def_PDict_GuajiMoneyType, moneyType)
-        if saveNum == None:
-            continue
-        moneyValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiMoneyValue % saveNum)
-        updMoney = min(moneyValue + addValue, ChConfig.Def_UpperLimit_DWord)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiMoneyType % saveNum, moneyType)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiMoneyValue % saveNum, updMoney)
-        #GameWorld.DebugLog("    累计货币: moneyType=%s,updMoney=%s,saveNum=%s" % (moneyType, updMoney, saveNum), playerID)
-        
-    # 物品
-    for itemID, addCount in giveItemDict.items():
-        saveNum = GetSaveNum(curPlayer, ChConfig.Def_PDict_GuajiItemID, itemID)
-        if saveNum == None:
-            continue
-        curCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiItemCount % saveNum)
-        updCount = min(curCount + addCount, ChConfig.Def_UpperLimit_DWord)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemID % saveNum, itemID)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemCount % saveNum, updCount)
-        #GameWorld.DebugLog("    累计物品: itemID=%s,updCount=%s,saveNum=%s" % (itemID, updCount, saveNum), playerID)
-        
-    Sync_GuajiAward(curPlayer)
-    return True
-
-def GetSaveNum(curPlayer, key, compValue):
-    for num in range(100):
-        value = curPlayer.NomalDictGetProperty(key % num)
-        if not value or compValue == value:
-            # 空值或者命中
-            return num
-    return
-
-def GetGuajiSecondsMax(curPlayer):
-    ## 挂机收益时长上限,秒
-    # 初始
-    initHours = IpyGameDataPY.GetFuncCfg("GuajiTime", 2) # 初始时长,小时
-    
-    # 境界增加
-    curRealmLV = curPlayer.GetOfficialRank()
-    realmAddHours = 0
-    realmAddHoursDict = IpyGameDataPY.GetFuncEvalCfg("GuajiTime", 3, {})
-    realmLVList = [int(k) for k in realmAddHoursDict.keys()]
-    realmLVList.sort()
-    for realmLV in realmLVList:
-        if curRealmLV >= realmLV:
-            realmAddHours = realmAddHoursDict[str(realmLV)]
-        else:
-            break
-    
-    totalHours = initHours + realmAddHours
-    return totalHours * 3600
-
-def GetGuajiAwardInfoSave(curPlayer):
-    ## 获取已保存的累计挂机收益信息
-    lastCalcTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiCalcTime)
-    awardSeconds = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiAwardSeconds)
-    if lastCalcTime:
-        awardSeconds += max(0, int(time.time() - lastCalcTime))
-    awardSeconds = min(awardSeconds, GetGuajiSecondsMax(curPlayer))
-    
-    exp = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiExpPoint) * ChConfig.Def_PerPointValue + \
-        curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiExp)
-        
-    moneyDict = {}
-    for num in range(100):
-        moneyType = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiMoneyType % num)
-        if not moneyType:
-            break
-        moneyDict[moneyType] = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiMoneyValue % num)
-        
-    itemDict = {}
-    for num in range(100):
-        itemID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiItemID % num)
-        if not itemID:
-            break
-        itemDict[itemID] = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiItemCount % num)
-        
-    return awardSeconds, exp, moneyDict, itemDict
-
-def CalcGuajiAward(curPlayer, awardSeconds, useUnsecond):
-    ## 计算挂机收益,只计算收益,不做结算,结算逻辑由外层决定
-    
-    playerID = curPlayer.GetPlayerID()
-    reLV = curPlayer.GetLV()
-    lvIpyData = None #PlayerControl.GetPlayerLVIpyData(reLV)
-    reExp = lvIpyData.GetReExp() if lvIpyData else 0
-    worldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv)
-    #GameWorld.DebugLog("计算挂机收益: awardSeconds=%s,useUnsecond=%s,reLV=%s,reExp=%s,worldLV=%s" 
-    #                   % (awardSeconds, useUnsecond, reLV, reExp, worldLV), playerID)
-    
-    # 经验
-    expRate = GetGuajiExpRate(curPlayer)
-    secondBaseExp = int(eval(FormulaControl.GetCompileFormula("GuajiExp", IpyGameDataPY.GetFuncCfg("GuajiAward", 1))))
-    secondExp = int(secondBaseExp * expRate / float(ChConfig.Def_MaxRateValue))
-    addExp = awardSeconds * secondExp
-    #GameWorld.DebugLog("    每秒经验: %s, addExp=%s,secondBaseExp=%s,expRate=%s" % (secondExp, addExp, secondBaseExp, expRate), playerID)
-    
-    # 每秒产出货币
-    moneyDict = {}
-    perSecondMoneyFromulaDict = IpyGameDataPY.GetFuncEvalCfg("GuajiAward", 2, {}) # 每秒获得货币公式 {货币类型:"每秒获得数量公式", ...}
-    for moneyType, formula in perSecondMoneyFromulaDict.items():
-        secondMoney = int(eval(FormulaControl.GetCompileFormula("GuajiMoney_%s" % moneyType, formula)))
-        moneyValue = awardSeconds * secondMoney
-        moneyDict[moneyType] = moneyValue
-        #GameWorld.DebugLog("    每秒货币: moneyType=%s,secondMoney=%s,moneyValue=%s" % (moneyType, secondMoney, moneyValue), playerID)
-        
-    # 每x秒产出1货币
-    perMoneyTimeFromulaDict = IpyGameDataPY.GetFuncEvalCfg("GuajiAward", 3, {}) # 每x秒获得1个货币公式 {货币类型:"x秒公式", ...}
-    for moneyType, formula in perMoneyTimeFromulaDict.items():
-        moneyAwardSeconds = awardSeconds
-        if useUnsecond:
-            moneyAwardSeconds += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiMoneyUnSeconds % moneyType)
-        oneMoneyNeedSeconds = int(eval(FormulaControl.GetCompileFormula("GuajiMoney_%s" % moneyType, formula)))
-        moneyValue = moneyAwardSeconds / oneMoneyNeedSeconds
-        moneyDict[moneyType] = moneyValue
-        #GameWorld.DebugLog("    每X秒货币: moneyType=%s,oneMoneyNeedSeconds=%s,moneyValue=%s,moneyAwardSeconds=%s" 
-        #                   % (moneyType, oneMoneyNeedSeconds, moneyValue, moneyAwardSeconds), playerID)
-        
-        if useUnsecond:
-            unSeconds = moneyAwardSeconds % oneMoneyNeedSeconds
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiMoneyUnSeconds % moneyType, unSeconds)
-            #GameWorld.DebugLog("        moneyType=%s,unSeconds=%s" % (moneyType, unSeconds), playerID)
-            
-    # 物品
-    giveItemSecondsSet = IpyGameDataPY.GetFuncCfg("GuajiAward", 4) # 每x秒获得一次随机物品机会
-    lvItemRateDict = IpyGameDataPY.GetFuncEvalCfg("GuajiAward", 5, {})
-    itemAwardSeconds = awardSeconds
-    if useUnsecond:
-        itemAwardSeconds += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiItemUnSeconds)
-            
-    itemAwardTimes = itemAwardSeconds / giveItemSecondsSet # 给物品次数
-    #GameWorld.DebugLog("    给物品次数: %s, itemAwardSeconds=%s,giveItemSecondsSet=%s" % (itemAwardTimes, itemAwardSeconds, giveItemSecondsSet), playerID)
-    
-    if useUnsecond:
-        unSeconds = itemAwardSeconds % giveItemSecondsSet
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemUnSeconds, unSeconds)
-        #GameWorld.DebugLog("    给物品未处理秒数=%s" % unSeconds, playerID)
-        
-    lvList = lvItemRateDict.keys()
-    lvList.sort()
-    itemRateList = []
-    for lv in lvList:
-        if reLV >= lv:
-            itemRateList = lvItemRateDict[lv]
-        else:
-            break
-        
-    dropCountTotal = 0
-    itemDict = {}
-    maxRate = itemRateList[-1][0]
-    #GameWorld.DebugLog("    itemRateList=%s,maxRate=%s" % (itemRateList, maxRate), playerID)
-    if itemAwardTimes > 100: # 超过x次的,先进行批量处理
-        preRate = 0
-        for rateInfo in itemRateList:
-            rate, itemInfo = rateInfo
-            curRate = rate - preRate
-            preRate = rate
-            if curRate <= 0:
-                continue
-            totalRate = curRate * itemAwardTimes # 总概率
-            dropCount = totalRate / maxRate # 可掉落件数
-            rateEx = totalRate % maxRate # 剩余概率
-            if GameWorld.CanHappen(rateEx, maxRate):
-                dropCount += 1
-            dropCountTotal += dropCount # 产出是是空物品也要算执行掉落次数
-            #GameWorld.DebugLog("    挂机物品: itemInfo=%s,curRate=%s,totalRate=%s,rateEx=%s,dropCount=%s,dropCountTotal=%s" 
-            #                   % (itemInfo, curRate, totalRate, rateEx, dropCount, dropCountTotal), playerID)
-            if not dropCount:
-                continue
-            
-            if not itemInfo:
-                continue
-            itemID, itemCount = itemInfo
-            itemDict[itemID] = itemDict.get(itemID, 0) + itemCount * dropCount
-            
-    awardTimesEx = itemAwardTimes - dropCountTotal
-    #GameWorld.DebugLog("    awardTimesEx=%s" % awardTimesEx, playerID)
-    if awardTimesEx > 0:
-        for _ in range(awardTimesEx):
-            itemInfo = GameWorld.GetResultByRandomList(itemRateList)
-            if not itemInfo:
-                continue
-            itemID, itemCount = itemInfo
-            itemDict[itemID] = itemDict.get(itemID, 0) + itemCount
-            
-    # 集字掉落
-    dropWordsCountDict = PlayerActCollectWords.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond)
-    for itemID, dropCount in dropWordsCountDict.items():
-        itemDict[itemID] = itemDict.get(itemID, 0) + dropCount
-        
-    # 垃圾回收
-    giveGarbageItemList = PlayerActGarbageSorting.OnGetGuajiAwardItemDict(curPlayer, awardSeconds, useUnsecond)
-    for itemID, dropCount in giveGarbageItemList.items():
-        itemDict[itemID] = itemDict.get(itemID, 0) + dropCount
-        
-    #GameWorld.DebugLog("    itemDict=%s" % (itemDict), playerID)
-    return addExp, moneyDict, itemDict
-
-def GetGuajiExpRate(curPlayer):
-    ## 挂机收益经验加成
-    expRate = curPlayer.GetFightExpRate() # 系统及功能累加
-    return expRate
-
-def OnGetGuajiAward(curPlayer, isQuick):
-    ## 领取挂机收益
-    # @param isQuick: 是否快速收益
-    
-    playerID = curPlayer.GetPlayerID()
-    GameWorld.DebugLog("领取挂机收益!  isQuick=%s" % isQuick, playerID)
-    
-    if isQuick:
-        quickCountToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiQuickCount)
-        quickCountFree = IpyGameDataPY.GetFuncCfg("GuajiQuick", 2)
-        quickCountMax = quickCountFree
-        if quickCountToday >= quickCountMax:
-            GameWorld.DebugLog("快速挂机收益次数已达每日上限!  quickCountToday=%s" % quickCountToday, playerID)
-            return
-        
-        if quickCountToday >= quickCountFree and not PlayerGoldInvest.GetInvestState(curPlayer, ChConfig.InvestType_Life):
-            todayBuyCount = quickCountToday - quickCountFree # 今日已购买次数
-            costMoneyType = IpyGameDataPY.GetFuncCfg("GuajiQuick", 3)
-            costMoneyList = IpyGameDataPY.GetFuncEvalCfg("GuajiQuick", 4)
-            if not costMoneyType or not costMoneyList:
-                return
-            costMoneyValue = costMoneyList[todayBuyCount] if len(costMoneyList) > todayBuyCount else costMoneyList[-1]
-            
-            GameWorld.DebugLog("    todayBuyCount=%s,costMoneyType=%s,costMoneyValue=%s" 
-                               % (todayBuyCount, costMoneyType, costMoneyValue), playerID)
-            if not PlayerControl.PayMoney(curPlayer, costMoneyType, costMoneyValue, "Guaji"):
-                return
-            
-        awardSeconds = IpyGameDataPY.GetFuncCfg("GuajiQuick", 1) * 3600
-        exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, False)
-        
-        quickCountToday += 1
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiQuickCount, quickCountToday)
-        GameWorld.DebugLog("    更新快速挂机收益次数: quickCountToday=%s,quickCountMax=%s" % (quickCountToday, quickCountMax), playerID)
-    else:
-        awardSeconds, exp, moneyDict, itemDict = GetGuajiAwardInfoSave(curPlayer)
-        
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiCalcTime, int(time.time())) # 设置统计时间,重新统计 
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiAwardSeconds, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiExp, 0)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiExpPoint, 0)
-        for num in range(100):
-            if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiMoneyType % num):
-                break
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiMoneyType % num, 0)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiMoneyValue % num, 0)
-        for num in range(100):
-            if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiItemID % num):
-                break
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemID % num, 0)
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GuajiItemCount % num, 0)
-        Sync_GuajiAward(curPlayer)
-        
-    __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict)
-    return
-
-def GiveGuajiAward(curPlayer, awardSeconds):
-    ## 直接给挂机收益
-    GameWorld.DebugLog("直接给挂机收益: awardSeconds=%s" % awardSeconds, curPlayer.GetPlayerID())
-    exp, moneyDict, itemDict = CalcGuajiAward(curPlayer, awardSeconds, False)
-    __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict)
-    return
-
-def __DoGiveGuajiAward(curPlayer, awardSeconds, exp, moneyDict, itemDict):
-    ## 实际给挂机收益,仅做发放收益
-    playerID = curPlayer.GetPlayerID()
-    GameWorld.DebugLog("给挂机收益: awardSeconds=%s,exp=%s,moneyDict=%s,itemDict=%s" % (awardSeconds, exp, moneyDict, itemDict), playerID)
-    
-    playerControl = PlayerControl.PlayerControl(curPlayer)
-    playerControl.AddExp(exp, ShareDefine.Def_ViewExpType_Guaji)
-    
-    for moneyType, moneyValue in moneyDict.items():
-        PlayerControl.GiveMoney(curPlayer, moneyType, moneyValue, "Guaji")
-        
-    # 分背包放入
-    packTypeItemDict = {}
-    for itemID, itemCount in itemDict.items():
-        itemData = GameWorld.GetGameData().GetItemByTypeID(itemID)
-        if not itemData:
-            continue
-        packType = ChConfig.GetItemPackType(itemData)
-        if packType not in packTypeItemDict:
-            packTypeItemDict[packType] = []
-        giveItemList = packTypeItemDict[packType]
-        giveItemList.append([itemID, itemCount, 0])
-        
-    for packType, giveItemList in packTypeItemDict.items():
-        # 垃圾分类背包直接放入
-        if packType == ShareDefine.rptGarbage:
-            for itemID, itemCount, isAuctionItem in giveItemList:
-                ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [packType], event=["Guaji", False, {}])
-        else:
-            ItemControler.GivePlayerItemOrMail(curPlayer, giveItemList, event=["Guaji", False, {}])
-            
-    Sync_GuajiAward(curPlayer, 1, awardSeconds, exp, moneyDict, itemDict)
-    return
-
-def Sync_GuajiAward(curPlayer, awardType=0, awardSeconds=0, exp=0, moneyDict=None, itemDict=None):
-    ## 同步挂机收益信息
-    
-    #  收益类型: 0-已累计预览;1-领取结算结果(包含常规领取跟快速领取)
-    if awardType == 0:
-        awardSeconds, exp, moneyDict, itemDict = GetGuajiAwardInfoSave(curPlayer)
-        
-    clientPack = ChPyNetSendPack.tagMCGuajiInfo()
-    clientPack.QuickAwardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GuajiQuickCount)
-    clientPack.AwardType = awardType
-    clientPack.AwardSeconds = awardSeconds
-    clientPack.Exp = exp % ChConfig.Def_PerPointValue
-    clientPack.ExpPoint = exp / ChConfig.Def_PerPointValue
-    
-    clientPack.MoneyList = []
-    if moneyDict:
-        for moneyType, moneyValue in moneyDict.items():
-            money = ChPyNetSendPack.tagMCGuajiMoney()
-            money.MoneyType = moneyType
-            money.MoneyValue = moneyValue
-            clientPack.MoneyList.append(money)
-    clientPack.MoneyLen = len(clientPack.MoneyList)
-    
-    clientPack.ItemList = []
-    if itemDict:
-        for itemID, itemCount in itemDict.items():
-            item = ChPyNetSendPack.tagMCGuajiItem()
-            item.ItemID = itemID
-            item.Count = itemCount
-            clientPack.ItemList.append(item)
-    clientPack.ItemLen = len(clientPack.ItemList)
-    
-    NetPackCommon.SendFakePack(curPlayer, clientPack)
-    return
-
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
index 81d6998..2f28b04 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -1033,9 +1033,6 @@
     #副本相关时间处理
     #PlayerFB.DoPlayerFBTimeProcess(curPlayer, tick)
     
-    #挂机收益
-    #PlayerGuaji.ProcessGuaji(curPlayer)
-    
     #恶意攻击时间处理
     #AttackCommon.ProcessMaliciousAttackPlayer(curPlayer, tick)
     #成就
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 317b8c4..04f875a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -923,23 +923,25 @@
 ) = range(1, 4)
 
 # 游戏功能ID定义,需确保唯一,与PyGameFuncControl.txt中FuncId一致
+GameFuncID_Official = 12        # 官爵,境界
+GameFuncID_Family = 15          # 战盟,仙盟
+GameFuncID_Billboard = 72       # 排行榜
+GameFuncID_SignDay = 81         # 签到
+GameFuncID_Treasure = 99        # 寻宝
+GameFuncID_Arena = 195          # 竞技场
+
 GameFuncID_Wing = 3             # 翅膀
 GameFuncID_Pet = 6              # 宠物,灵宠
 GameFuncID_MagicWeapon = 7      # 法宝
 GameFuncID_Horse = 8            # 坐骑
-GameFuncID_Official = 12        # 官爵,境界
-GameFuncID_Family = 15          # 战盟,仙盟
 GameFuncID_GodWeapon = 20       # 神器
 GameFuncID_Talent = 149         # 天赋
 GameFuncID_RefineExp = 60       # 经验炼制,祈愿
 GameFuncID_RefineMoney = 61     # 金币炼制,祈愿
 GameFuncID_WorldLV = 71         # 世界等级
-GameFuncID_Billboard = 72       # 排行榜
 GameFuncID_Friend = 73          # 好友
-GameFuncID_SignDay = 81         # 签到
 GameFuncID_RefineStove = 87     # 炼丹炉
 GameFuncID_EquipWash = 91       # 洗练
-GameFuncID_Treasure = 99        # 寻宝
 GameFuncID_FirstGoldTip = 128      # 首充优势提示
 GameFuncID_EquipDecompose = 123 # 装备分解
 GameFuncID_DailyQuest = 78      # 日常
@@ -953,7 +955,6 @@
 GameFuncID_CrossRealmPK = 157   # 跨服天梯
 GameFuncID_PenglaiBoss = 162    # 蓬莱仙境
 GameFuncID_ZhuXianBoss = 163    # 诛仙BOSS
-GameFuncID_Arena = 195          # 竞技场
 GameFuncID_FaQi = 199           # 法器
 GameFuncID_LianTi = 207         # 炼体
 GameFuncID_CrossBattlefield = 208   # 跨服古神战场

--
Gitblit v1.8.0