From 9b67e4335f655af8c8aef8aa1e7d41e509c50b76 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 12 九月 2025 17:38:35 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(反击改为使用普攻,去除通用反击技能设定;武将特长支持;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py |  252 ++++++++++++++------------------------------------
 1 files changed, 71 insertions(+), 181 deletions(-)

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 11ada8d..d6271f0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -33,8 +33,6 @@
 import PetControl
 import OperControlManager
 import ShareDefine
-import PlayerAutoCheckOnline
-import PlayerGameWallow
 import NetPackCommon
 import ChPyNetSendPack
 import DataRecordPack
@@ -57,7 +55,6 @@
 import PlayerDienstgrad
 import PlayerFreeGoods
 import PlayerRecover
-import PlayerEquipDecompose
 import PlayerCrossRealmPK
 import PlayerCrossChampionship
 import GameFuncComm
@@ -84,18 +81,12 @@
 import PlayerActCollectWords
 import PlayerActTotalRecharge
 import PlayerActRechargePrize
-import PlayerActGarbageSorting
-import PlayerActXianXiaMJ
-import PlayerActGubao
-import PlayerActHorsePetTrain
 import PlayerActLianqi
 import PlayerActGodGift
 import PlayerActFamilyCTGAssist
 import PlayerActRechargeRebateGold
 import PlayerActManyDayRecharge
 import PlayerActSingleRecharge
-import PlayerActHorsePetFeast
-import PlayerActBossTrial
 import PlayerSpringSale
 import GY_Query_BossFirstKill
 import PlayerCrossYaomoBoss
@@ -130,11 +121,10 @@
 import PlayerLove
 import GameObj
 import PlayerChangeJob
-import PlayerGuaji
 import PlayerFace
 import PlayerChatBox
 import PlayerXiangong
-import PlayerMineArea
+import PlayerGoldRush
 import PlayerActLoginNew
 import PlayerActBuyCountGift
 import PlayerActLunhuidian
@@ -461,7 +451,7 @@
     InitPlayerPack(curPlayer)
     
     if GameWorld.IsCrossServer():
-        SkillCommon.PlayerLoginMergeServerSkillLogic(curPlayer, tick)
+        #SkillCommon.PlayerLoginMergeServerSkillLogic(curPlayer, tick)
         # 重置所有技能CD
         
         DoPlayerLoginInMap(curPlayer, tick)
@@ -469,7 +459,7 @@
         DataRecordPack.DR_PlayerLogin(curPlayer)
         EventReport.WriteEvent_login(curPlayer)
         #---玩家上线, 宠物逻辑处理---
-        PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
+        #PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
         return
     
     leaveServerSecond = PlayerControl.GetPlayerLeaveServerSecond(curPlayer)
@@ -494,18 +484,18 @@
     PlayerControl.UpdPlayerServerGroupID(curPlayer)
     
     #上线学习技能
-    SkillCommon.PlayerLoginCheckLearnSkill(curPlayer)
+    #SkillCommon.PlayerLoginCheckLearnSkill(curPlayer)
     
     #刷新技能CD
-    SkillCommon.PlayerLoginUpdateSkillCD(curPlayer, tick)
+    #SkillCommon.PlayerLoginUpdateSkillCD(curPlayer, tick)
     
     #通知玩家技能信息
-    __Sync_ClientSkill(curPlayer)
+    #__Sync_ClientSkill(curPlayer)
     #清除VIPbuff
     #BuffSkill.DelBuffBySkillID(curPlayer, ChConfig.Def_VIPExp_SkillTypeID, tick)
     
     #通知玩家的buff
-    __Sync_ClientBuff(curPlayer)
+    #__Sync_ClientBuff(curPlayer)
     
     #---刷新了玩家属性, 登陆只刷新一次,其他地方不用刷
     DoPlayerLoginInMap(curPlayer, tick)
@@ -522,9 +512,6 @@
     __DoMixServerFirstLogin(curPlayer)
     PlayerBillboard.BillboardOnLogin(curPlayer)
     
-    #上线时通知脱机挂时被击杀的离线时间
-    __Sync_PlayerOffline(curPlayer, tick)
-    
     #玩家扩展信息
     __SyncPlayerInfoEx(curPlayer)
     
@@ -532,16 +519,11 @@
     GiveDownloadPatchAward(curPlayer)
     
     #PK模式
-    SyncPKModel(curPlayer)
+    #SyncPKModel(curPlayer)
     
     #---玩家上线, 宠物逻辑处理---
-    PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
-    PlayerPet.OnPlayerPetLogin(curPlayer)
-    
-    #PlayerLoginNotify(curPlayer, tick)
-    
-    #防沉迷计算下线累积时间
-    PlayerGameWallow.Calc_Wallow_OfflineTime(curPlayer, tick)
+    #PetControl.DoLogic_PetInfo_OnLogin(curPlayer, tick)
+    #PlayerPet.OnPlayerPetLogin(curPlayer)
     
     # 通知等级奖励领取记录
     PlayerLVAward.Sync_LVAwardGetRecordInfo(curPlayer)
@@ -550,17 +532,17 @@
     # 首充/天天首充/充值豪礼
     PlayerGoldGift.OnLogin(curPlayer)
     
-#    #通知功能首次触发情况
+    #通知功能首次触发情况
     GameFuncComm.Sync_FuncOpenState(curPlayer)
-#    
-#    #通知客户端签到信息
+    
+    #通知客户端签到信息
     PlayerSignDay.SignDayOnLogin(curPlayer)
     
     #通知玩家死亡时间
-    PlayerControl.PlayerControl(curPlayer).NotifyPlayerDeadTime(curPlayer)
+    #PlayerControl.PlayerControl(curPlayer).NotifyPlayerDeadTime(curPlayer)
     
     #角色改名次数
-    UpdatePlayerName.Sync_UpdatePlayerNameCount(curPlayer)
+    #UpdatePlayerName.Sync_UpdatePlayerNameCount(curPlayer)
     
     # 坐骑相关通知
     PlayerHorse.PlayerHorseLogin(curPlayer)
@@ -580,7 +562,7 @@
     OpenServerCampaign.OnOpenServerCampaignLogin(curPlayer)
     
     # 采集NPC次数通知
-    NPCCommon.SyncCollNPCTime(curPlayer)
+    #NPCCommon.SyncCollNPCTime(curPlayer)
     
     # 每日活跃度
     PlayerActivity.OnLogin(curPlayer)
@@ -628,7 +610,7 @@
     PlayerControl.NotifyPlayerAllCurrency(curPlayer)
     PlayerControl.NotifyUseMoneyTotal(curPlayer)
     #通知基础属性
-    NotifyPlayerBasePoint(curPlayer)
+    #NotifyPlayerBasePoint(curPlayer)
     
     #跨服充值排行
     CrossActCTGBillboard.OnPlayerLogin(curPlayer)
@@ -669,18 +651,10 @@
     # 通知设置的被动功法
     #PassiveBuffEffMng.OnLoginGFPassive(curPlayer)
     PlayerOnlinePrize.OnPlayerLogin(curPlayer)
-    #装备分解
-    PlayerEquipDecompose.PlayerLogin(curPlayer)
-    #防沉迷
-    PlayerGameWallow.DoLogic_CheckWallow(curPlayer, tick)
     # 极品白拿
     PlayerFreeGoods.OnLogin(curPlayer)
     # BOSS复活活动
     PlayerBossReborn.OnLogin(curPlayer)
-    # boss历练
-    PlayerActBossTrial.OnPlayerLogin(curPlayer)
-    # 骑宠盛宴活动
-    PlayerActHorsePetFeast.OnLogin(curPlayer)
     # 周狂欢活动
     PlayerWeekParty.OnLogin(curPlayer)
     # 购买次数礼包活动
@@ -703,14 +677,6 @@
     PlayerFeastTravel.OnPlayerLogin(curPlayer)
     # 登录奖励活动
     PlayerActLogin.OnLogin(curPlayer)
-    # 垃圾分类活动
-    PlayerActGarbageSorting.OnPlayerLogin(curPlayer)
-    # 仙匣秘境活动
-    PlayerActXianXiaMJ.OnPlayerLogin(curPlayer)
-    # 古宝养成活动
-    PlayerActGubao.OnPlayerLogin(curPlayer)
-    # 骑宠养成活动
-    PlayerActHorsePetTrain.OnPlayerLogin(curPlayer)
     # 炼器活动
     PlayerActLianqi.OnPlayerLogin(curPlayer)
     # 天帝礼包活动
@@ -735,7 +701,7 @@
     SyncLittleHelper(curPlayer)
     PlayerFB.OnLogin(curPlayer)
     #技能专精信息
-    SkillShell.NotifyElementSkillInfo(curPlayer)
+    #SkillShell.NotifyElementSkillInfo(curPlayer)
     #Boss首杀
     GY_Query_BossFirstKill.OnPlayerLogin(curPlayer)
     #通天令
@@ -800,8 +766,7 @@
         PlayerZhanling.OnPlayerLogin(curPlayer)
         PlayerTask.OnPlayerLogin(curPlayer)
         PlayerTree.OnPlayerLogin(curPlayer)
-        PlayerMineArea.OnPlayerLogin(curPlayer)
-        PlayerGuaji.OnPlayerLogin(curPlayer)
+        PlayerGoldRush.OnPlayerLogin(curPlayer)
         PlayerActFamilyGCZ.OnPlayerLogin(curPlayer)
         PlayerTalk.OnPlayerLogin(curPlayer)
         
@@ -838,6 +803,8 @@
     # 那么在DoPlayerLogin 中设置的数据将不会被保存, 如会导致第一个任务重复触发问题,记录多次发送
     EventReport.WriteEvent_Entry(curPlayer, 4)
     #EventReport.EventReport(ShareDefine.Def_UserAction_FirstLogin, "", curPlayer)
+     
+    curPlayer.SetFightPoint(1) # 初始化为1倍消耗
     
     #---补满血满魔---
     GameObj.SetHP(curPlayer, GameObj.GetMaxHP(curPlayer))
@@ -865,6 +832,9 @@
         PlayerControl.SendMailByKey(mailTypeKey, [curPlayer.GetPlayerID()], mailItemList)
         
     PlayerHero.OnPlayerFirstLogin(curPlayer)
+    
+    #淘金初始化
+    PlayerGoldRush.InitGoldEnergy(curPlayer)
     
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FirstLogin, 1)
     return
@@ -930,14 +900,6 @@
     # 同步排行榜
     PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer, isAll=True)
     
-    # boss凭证
-    PlayerActBossTrial.OnMixFirstLogin(curPlayer)
-    # 仙匣秘境
-    PlayerActXianXiaMJ.OnMixFirstLogin(curPlayer)
-    # 古宝养成
-    PlayerActGubao.OnMixFirstLogin(curPlayer)
-    # 骑宠养成
-    PlayerActHorsePetTrain.OnMixFirstLogin(curPlayer)
     # 重置玩家改名次数
     #UpdatePlayerName.ResetChangeNameCnt(curPlayer)
     return
@@ -951,51 +913,6 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_PlayerDeadCnt, 0)
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_DeadTime, 0)
     return
-
-##玩家登陆, 相关活动通知
-#@param curPlayer 玩家实例
-#@param tick 时间戳
-#@return 返回值无意义
-#@remarks 玩家登陆, 相关活动通知
-def PlayerLoginNotify(curPlayer, tick):
-    curTime = GameWorld.GetCurrentTime()
-    
-    #读取上线提示表
-    notifyByTimeSect = ReadChConfig.GetEvalChConfig('PlayerLoginNotify_TimeSect')     #某时间段内上线提示
-    notifyByDict = ReadChConfig.GetEvalChConfig('PlayerLoginNotify_Dict')             #根据字典值给提示
-    
-    #在规定时间段内上线给提示
-    DoNotifyByTimeSect(curPlayer, curTime, notifyByTimeSect)
-    #指定字典值内提示
-    DoNotifyByDict(curPlayer, notifyByDict)
-    return
-#---------------------------------------------------------------------
-##在活动规定时间段内上线给提示
-#@param curPlayer 玩家索引
-#@param curTime 传入时间
-#@param notifyInfo 提示信息
-#@return 返回值无意义
-#@remarks 在活动规定时间段内上线给提示
-def DoNotifyByTimeSect(curPlayer, curTime, notifyInfo):
-    for curNotify in notifyInfo:
-        #有时间段限制,验证时间段
-        if not GameWorld.IsAtActTime(curTime, curNotify[0]):
-            continue
-        
-        PlayerControl.NotifyCode(curPlayer, curNotify[1], curNotify[2])
-
-#---------------------------------------------------------------------
-##指定字典值内提示
-#@param curPlayer 玩家实例
-#@param notifyInfo 提示信息
-#@return 返回值无意义
-#@remarks 指定字典值内提示
-def DoNotifyByDict(curPlayer, notifyInfo):
-    gameWorld = GameWorld.GetGameWorld()
-    for curNotify in notifyInfo:
-        if gameWorld.GetGameWorldDictByKey(curNotify[0]) in curNotify[1]:
-            PlayerControl.NotifyCode(curPlayer, curNotify[2], curNotify[3])
-
 
 #---------------------------------------------------------------------
 ##通知背包详细信息
@@ -1087,54 +1004,6 @@
     clientPack.ObjID = curPlayer.GetID()
     clientPack.BuffType = 99 # 99代表清所有
     NetPackCommon.SendFakePack(curPlayer, clientPack)    
-    return
-
-#---------------------------------------------------------------------
-##上线时通知离线时间(离线挂机功能)
-# @param curPlayer 玩家实例
-# @param tick 时间戳
-# @return 返回值无意义
-# @remarks 上线时通知离线时间(离线挂机功能)
-def __Sync_PlayerOffline(curPlayer, tick):
-    #---等级限制---
-    if GameWorld.IsCrossServer():
-        return
-    
-#===============================================================================
-#    #---等级限制---
-#    lvLimit = ReadChConfig.GetEvalChConfig('OfflineSys_LVLimit')
-#    if curPlayer.GetLV() < lvLimit:
-#        return
-#    
-#    if GameWorld.IsCrossServer():
-#        return
-#    
-#    #当前离线时间(分)
-#    curOfflineMinutes = min(PlayerControl.GetPlayerLeaveServerMinute(curPlayer),
-#                            ChConfig.Def_UpperLimit_DWord)
-#    
-#    #防止服务器时间修改到过去得到负值
-#    if curOfflineMinutes < 0:
-#        GameWorld.ErrLog("Login Time Error, outTime: %s - loginTime :%s" % 
-#                         (curPlayer.GetLogoffTime(), GameWorld.GetCurrentDataTimeStr()),
-#                         curPlayer.GetPlayerID())
-#        curOfflineMinutes = 0
-#    
-#    #时间为分钟
-#    minTimeLimit, maxTimeLimit = ReadChConfig.GetEvalChConfig("OfflineSys_AllTimeUpperLimit")
-#    if curOfflineMinutes >= minTimeLimit:
-#        #总离线时间(分)
-#        allOfflineMinutes = min(curPlayer.GetOfflineMinutes() + curOfflineMinutes, maxTimeLimit)
-#        #记录离线总时间
-#        curPlayer.SetOfflineMinutes(int(allOfflineMinutes))
-#        GameWorld.DebugLog("设置离线奖励时间 %s,curOfflineMinutes=%s" % (allOfflineMinutes, curOfflineMinutes), curPlayer.GetPlayerID())
-#    else:
-#        GameWorld.DebugLog("离线时间过短,不计入离线奖励!curOfflineMinutes=%s" % curOfflineMinutes, curPlayer.GetPlayerID())
-#    
-#    #通知客户端离线时间
-# #    curPlayer.Syn_OfflineTimeRefresh(int(curOfflineMinutes))
-#    curPlayer.Syn_OfflineTimeQueryResult()
-#===============================================================================
     return
 
 #---------------------------------------------------------------------
@@ -3391,26 +3260,6 @@
     NetPackCommon.SendFakePack(curPlayer, awardReceiveState)
     return
 
-## 领取奖励表奖励
-#  @param None None
-#  @return None
-def ClientPlayerGetReward(index, clientData, tick):
-    playerManager = GameWorld.GetPlayerManager()
-    curPlayer = playerManager.GetPlayerByIndex(index)
-    
-    # 背包空间不足
-    if not ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem):
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [IPY_GameWorld.rptItem])
-        return
-    
-    rewardType = clientData.RewardType
-    
-    #通知GameServer领取奖励
-    resultName = str(rewardType)
-    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, 'PlayerGetReward',
-                                                                  resultName, len(resultName))
-    return
-
 #//A5 04 玩家领取奖励 #tagCMPlayerGetReward
 #
 #struct    tagCMPlayerGetReward
@@ -3438,9 +3287,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)
@@ -3570,9 +3416,6 @@
     #战令奖励
     elif rewardType == ChConfig.Def_RewardType_Zhanling:
         PlayerZhanling.GetZhanlingReward(curPlayer, dataEx, dataExStr)
-    #福地聚宝盆奖励
-    elif rewardType == ChConfig.Def_RewardType_MineTreasure:
-        PlayerMineArea.GetMineTreasureAward(curPlayer, dataEx)
     #玩法前瞻奖励
     elif rewardType == ChConfig.Def_RewardType_GameNotice:
         OnGiveAwardByClient(curPlayer, rewardType, ChConfig.Def_PDict_GameNoticeAwardState, IpyGameDataPY.GetFuncEvalCfg("GameNoticeReward", 1))
@@ -4211,3 +4054,50 @@
     #PlayerControl.SetRealmDifficulty(curPlayer, clientData.RealmDifficulty)
     return
 
+#// A0 08 查看通用记录 #tagCSViewGameRec
+#
+#struct    tagCSViewGameRec
+#{
+#    tagHead        Head;
+#    WORD         RecType;        //记录类型
+#    DWORD         RecID;        //自定义记录ID
+#};
+def OnViewGameRec(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    recType = clientData.RecType
+    recID = clientData.RecID
+    if recType not in ShareDefine.Def_GameRecTypeList:
+        return
+    if recType in ShareDefine.Def_ViewGameRecSelfList:
+        recID = curPlayer.GetPlayerID()
+    recTypeIDMgr = DBDataMgr.GetGameRecMgr().GetRecTypeIDMgr(recType, recID)
+    SyncGameRecInfo(curPlayer, recType, recID, recTypeIDMgr.GetDataList())
+    return
+
+def SyncGameRecInfo(curPlayer, recType, recID, recDataList):
+    recList = []
+    for recData in recDataList:
+        if not recData:
+            continue
+        rec = ChPyNetSendPack.tagSCGameRec()
+        rec.Time = recData.GetTime()
+        rec.Value1 = recData.GetValue1()
+        rec.Value2 = recData.GetValue2()
+        rec.Value3 = recData.GetValue3()
+        rec.Value4 = recData.GetValue4()
+        rec.Value5 = recData.GetValue5()
+        rec.Value6 = recData.GetValue6()
+        rec.Value7 = recData.GetValue7()
+        rec.Value8 = recData.GetValue8()
+        rec.UserData = recData.GetUserData()
+        rec.UserDataLen = len(rec.UserData)
+        recList.append(rec)
+        
+    clientPack = ChPyNetSendPack.tagSCGameRecInfo()
+    clientPack.Clear()
+    clientPack.RecType = recType
+    clientPack.RecID = recID
+    clientPack.RecList = recList
+    clientPack.Count = len(clientPack.RecList)
+    NetPackCommon.SendFakePack(curPlayer, clientPack)
+    return

--
Gitblit v1.8.0