From d7f44d8d871a90c818bdb3ffe9a60af875b7100a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 30 九月 2025 10:12:23 +0800
Subject: [PATCH] 135 【挑战】战锤秘境-服务端(白骨盈野;副本基础;副本扫荡;广告奖励支持;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py |  206 ++++++--------------------------------------------
 1 files changed, 27 insertions(+), 179 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index 747a68f..c6ba2cc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -48,8 +48,6 @@
 import PlayerBossReborn
 import PlayerCrossYaomoBoss
 import PlayerActCollectWords
-import PlayerActGarbageSorting
-import PlayerActBossTrial
 import PlayerTongTianLing
 import CrossPlayerData
 import PlayerFeastWish
@@ -796,115 +794,6 @@
         
     return
 
-#// B4 0F 回收私有专属木桩怪 #tagCMRecyclePriWoodPile
-#
-#struct    tagCMRecyclePriWoodPile
-#{
-#    tagHead        Head;
-#    DWORD        ObjID;
-#};
-def OnRecyclePriWoodPile(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    objID = clientData.ObjID
-    curNPC = GameWorld.FindNPCByID(objID)
-    if not curNPC:
-        return
-    if curNPC.GetType() not in [ChConfig.ntPriWoodPilePVE, ChConfig.ntPriWoodPilePVP]:
-        return
-    summonPlayerID = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_PriWoodPilePlayerID)
-    if curPlayer.GetPlayerID() != summonPlayerID:
-        #GameWorld.DebugLog("非玩家私有木桩...")
-        return
-    SetDeadEx(curNPC)
-    return
-
-#// B4 0C 召唤私有专属木桩怪 #tagCMSummonPriWoodPile
-#
-#struct    tagCMSummonPriWoodPile
-#{
-#    tagHead        Head;
-#    DWORD        NPCID;
-#    BYTE        Count;    //默认1个,最多5个
-#    DWORD        HP;    //默认0取最大值,其中一个血量数值大于0则用指定血量
-#    DWORD        HPEx;    //默认0取最大值,其中一个血量数值大于0则用指定血量
-#};
-def OnSummonPriWoodPile(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    npcID = clientData.NPCID
-    count = clientData.Count
-    hp = clientData.HP
-    hpEx = clientData.HPEx
-    SummonPriWoodPile(curPlayer, npcID, count, hp, hpEx)
-    return
-
-def SummonPriWoodPile(curPlayer, npcID, count, hp=0, hpEx=0):
-    ''' 召唤私有专属木桩怪
-    '''
-    
-    mapID = PlayerControl.GetCustomMapID(curPlayer)
-    lineID = PlayerControl.GetCustomLineID(curPlayer)
-    if mapID:
-        if not FBLogic.OnCanSummonPriWoodPile(curPlayer, mapID, lineID, npcID, count):
-            GameWorld.ErrLog("无法召唤木桩怪!mapID=%s,lineID=%s,npcID=%s,count=%s" % (mapID, lineID, npcID, count))
-            return
-        
-    if count != 1:
-        hp, hpEx = 0, 0 # 指定血量的暂仅适用于单只的
-        
-    playerID = curPlayer.GetPlayerID()
-    if playerID not in PyGameData.g_playerPriWoodPileNPCDict:
-        PyGameData.g_playerPriWoodPileNPCDict[playerID] = []
-    playerPriWoodNPCList = PyGameData.g_playerPriWoodPileNPCDict[playerID]
-    maxCount = 3
-    nowCount = len(playerPriWoodNPCList)
-    summonCount = min(count, maxCount - nowCount)
-    GameWorld.DebugLog("召唤木桩: npcID=%s,count=%s,maxCount=%s,nowCount=%s,summonCount=%s,hp=%s,hpEx=%s" 
-                       % (npcID, count, maxCount, nowCount, summonCount, hp, hpEx))
-    if summonCount <= 0:
-        return
-    
-    npcManager = GameWorld.GetNPCManager()
-    for _ in xrange(summonCount):
-        #summonNPC = curPlayer.SummonNewNPC()
-        summonNPC = npcManager.AddPlayerSummonNPC()
-        
-        #设置召唤兽基础信息
-        summonNPC.SetNPCTypeID(npcID)
-        summonNPC.SetSightLevel(curPlayer.GetSightLevel())
-        #初始化
-        InitNPC(summonNPC)
-        
-        #玩家召唤兽列表添加召唤兽,召唤兽添加主人
-        #summonNPC.SetOwner(curPlayer)
-        summonNPC.SetDict(ChConfig.Def_NPC_Dict_PriWoodPilePlayerID, playerID)
-        
-        #将召唤兽召唤出来
-        #玩家周围随机出生点
-        #技能召唤坐标 ChConfig.Def_SummonAppearDist
-        summonPos = GameMap.GetEmptyPlaceInArea(curPlayer.GetPosX(), curPlayer.GetPosY(), 3)
-        summonNPC.Reborn(summonPos.GetPosX(), summonPos.GetPosY(), False)
-        NPCControl(summonNPC).ResetNPC_Init(isReborn=True)
-        if hp or hpEx:
-            hpTotal = hpEx * ShareDefine.Def_PerPointValue + hp
-            GameObj.SetHP(summonNPC, hpTotal)
-            GameObj.SetMaxHP(summonNPC, hpTotal)
-        summonNPC.NotifyAppear() # 最终统一通知NPC出现
-        playerPriWoodNPCList.append(summonNPC)
-        
-    return
-
-def ClearPriWoodPile(curPlayer):
-    ## 清除私有木桩
-    playerID = curPlayer.GetPlayerID()
-    if playerID not in PyGameData.g_playerPriWoodPileNPCDict:
-        return
-    playerPriWoodNPCList = PyGameData.g_playerPriWoodPileNPCDict.pop(playerID)
-    for summonNPC in playerPriWoodNPCList:
-        if not summonNPC:
-            continue
-        SetDeadEx(summonNPC)
-    return
-
 ## 设置npc死亡及自身处理(请不要将游戏逻辑加在此函数中)
 #  @param curNPC:npc实例
 #  @return 
@@ -936,12 +825,12 @@
     # 暗金boss
     if ChConfig.IsGameBoss(curNPC): 
         # 通知GameServer boss状态 封魔坛在副本里单独处理
-        ipyData = IpyGameDataPY.GetIpyGameDataNotLog('BOSSInfo', npcid)
-        if ipyData and ipyData.GetMapID() not in [ChConfig.Def_FBMapID_SealDemon, ChConfig.Def_FBMapID_ZhuXianBoss]:
-            GameServe_GameWorldBossState(npcid, 0)
-            #GameWorld.GetGameWorld().SetGameWorldDict(ChConfig.Map_NPC_WorldBossDeadTick % npcid, GameWorld.GetGameWorld().GetTick())
-            #因为存在boss分流,所以用gameFB字典,但是存活状态还是用GameWorld字典
-            GameWorld.GetGameFB().SetGameFBDict(ChConfig.Map_NPC_WorldBossDeadTick % npcid, GameWorld.GetGameWorld().GetTick())
+        #ipyData = IpyGameDataPY.GetIpyGameDataNotLog('BOSSInfo', npcid)
+        #if ipyData and ipyData.GetMapID() not in [ChConfig.Def_FBMapID_SealDemon, ChConfig.Def_FBMapID_ZhuXianBoss]:
+        #    GameServe_GameWorldBossState(npcid, 0)
+        #    #GameWorld.GetGameWorld().SetGameWorldDict(ChConfig.Map_NPC_WorldBossDeadTick % npcid, GameWorld.GetGameWorld().GetTick())
+        #    #因为存在boss分流,所以用gameFB字典,但是存活状态还是用GameWorld字典
+        #    GameWorld.GetGameFB().SetGameFBDict(ChConfig.Map_NPC_WorldBossDeadTick % npcid, GameWorld.GetGameWorld().GetTick())
             
         ChNPC.OnNPCSetDead(curNPC)
         
@@ -1067,24 +956,20 @@
         PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_BossHome, 1)
         PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_BossHome, 1)
         
-    if mapID == ChConfig.Def_FBMapID_CrossPenglai:
-        #跨服蓬莱仙境
-        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossPenglai)
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillCrossPenglaiBoss, 1)
-        PlayerGubao.AddGubaoItemEffValue(curPlayer, PlayerGubao.GubaoEffType_KillCrossPenglaiBoss, 1)
-        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_CrossPenglaiBoss, 1)
-    elif mapID == ChConfig.Def_FBMapID_CrossDemonLand:
-        #跨服魔化之地
-        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossDemonLand)
-        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillCrossDemonLandBoss, 1)
-        PlayerGubao.AddGubaoItemEffValue(curPlayer, PlayerGubao.GubaoEffType_KillCrossDemonLandBoss, 1)
-        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_CrossDemonLandBoss, 1)
-    if mapID in [ChConfig.Def_FBMapID_CrossPenglai, ChConfig.Def_FBMapID_CrossDemonLand]:
-        PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_CrossBoss)
-        PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_CrossBoss, 1)
-        
-    if npcData.GetIsBoss() == ChConfig.Def_NPCType_Boss_Dark:
-        PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillBoss)
+#    if mapID == ChConfig.Def_FBMapID_CrossPenglai:
+#        #跨服蓬莱仙境
+#        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossPenglai)
+#        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillCrossPenglaiBoss, 1)
+#        PlayerGubao.AddGubaoItemEffValue(curPlayer, PlayerGubao.GubaoEffType_KillCrossPenglaiBoss, 1)
+#        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_CrossPenglaiBoss, 1)
+#    elif mapID == ChConfig.Def_FBMapID_CrossDemonLand:
+#        #跨服魔化之地
+#        PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_CrossDemonLand)
+#        PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillCrossDemonLandBoss, 1)
+#        PlayerGubao.AddGubaoItemEffValue(curPlayer, PlayerGubao.GubaoEffType_KillCrossDemonLandBoss, 1)
+#        PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_CrossDemonLandBoss, 1)
+#    if mapID in [ChConfig.Def_FBMapID_CrossPenglai, ChConfig.Def_FBMapID_CrossDemonLand]:
+#        PlayerTongTianLing.AddTongTianTaskValue(curPlayer, ChConfig.TTLTaskType_CrossBoss, 1)
         
     # 个人首杀记录
     ipyData = IpyGameDataPY.GetIpyGameDataNotLog("BOSSFirstKill", npcID)
@@ -2605,13 +2490,13 @@
         #杀死NPC, 触发任务
         self.__EventKillNpc()
             
-        mapID = GameWorld.GetMap().GetMapID()
-        killerName = "" if not self.__Killer else self.__Killer.GetPlayerName()
-        # 记录boss击杀信息的NPC
-        bossIpyData = IpyGameDataPY.GetIpyGameDataListNotLog('BOSSInfo', npcID)
-        if bossIpyData and mapID not in [ChConfig.Def_FBMapID_ZhuXianBoss, ChConfig.Def_FBMapID_SealDemon]:
-            killerIDList = [player.GetPlayerID() for player in self.__ownerPlayerList]
-            GameServer_KillGameWorldBoss(curNPC.GetNPCID(), killerName, 0, True, killerIDList)
+        #mapID = GameWorld.GetMap().GetMapID()
+        #killerName = "" if not self.__Killer else self.__Killer.GetPlayerName()
+        ## 记录boss击杀信息的NPC
+        #bossIpyData = IpyGameDataPY.GetIpyGameDataListNotLog('BOSSInfo', npcID)
+        #if bossIpyData and mapID not in [ChConfig.Def_FBMapID_ZhuXianBoss, ChConfig.Def_FBMapID_SealDemon]:
+        #    killerIDList = [player.GetPlayerID() for player in self.__ownerPlayerList]
+        #    GameServer_KillGameWorldBoss(curNPC.GetNPCID(), killerName, 0, True, killerIDList)
             
         if npcID == IpyGameDataPY.GetFuncCfg("BossRebornServerBoss", 3):
             PlayerControl.WorldNotify(0, "BossRebornBossKilled", [curNPC.GetNPCID()])
@@ -3321,7 +3206,6 @@
         else:
             if GetNPCLV(curNPC) >= curPlayer.GetLV() - IpyGameDataPY.GetFuncCfg('DailyQuestKillMonster'):
                 PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_KillNPC)
-                PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillNPC)
                 PlayerActTask.AddActTaskValue(curPlayer, ChConfig.ActTaskType_KillNPC)
             PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_KillSpecificNPC, 1, [npcID])
         #PlayerPrestigeSys.AddRealmTaskValue(curPlayer, PlayerPrestigeSys.RealmTaskType_KillNPC, 1)
@@ -4056,44 +3940,8 @@
         DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData, crossCollectOK=True)
     return
 
-#// A2 34 自定义场景中获取采集奖励 #tagCMGetCustomSceneCollectAward
-#
-#struct    tagCMGetCustomSceneCollectAward
-#{
-#    tagHead        Head;
-#    DWORD        NPCID;    //采集的NPCID
-#};
-def OnGetCustomSceneCollectAward(index, clientData, tick):
-    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
-    playerID = curPlayer.GetPlayerID()
-    npcID = clientData.NPCID
-    if not curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
-        GameWorld.ErrLog("非自定义场景中,无法获取定义采集奖励!", playerID)
-        return
-    mapID = PlayerControl.GetCustomMapID(curPlayer)
-    lineID = PlayerControl.GetCustomLineID(curPlayer)
-    GameWorld.Log("前端场景采集: mapID=%s,lineID=%s,npcID=%s" % (mapID, lineID, npcID), playerID)
-    if not mapID:
-        GameWorld.ErrLog("无自定义场景地图ID,不允许采集!", playerID)
-        return
-    
-    if not FBLogic.OnCustomSceneCollectOK(curPlayer, mapID, lineID, npcID):
-        GameWorld.ErrLog("自定义场景地图不允许采集! mapID=%s,lineID=%s,npcID=%s" % (mapID, lineID, npcID), playerID)
-        return
-    
-    collectNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CollectNPC", npcID)
-    if collectNPCIpyData:
-        DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData)
-    return
-
 def DoGiveCollectNPCAward(curPlayer, npcID, collectNPCIpyData, collectCnt=1, crossCollectOK=False, isSweep=False):
     return
-
-## 采集结果同步
-#  @param None
-#  @param None
-def SyncCollectionItemInfo(curPlayer, addExp, addMoney, addZhenQi, syncItemInfoList, collectNPCID=0):
-    return #暂不同步
 
 def SyncCollNPCTime(curPlayer, npcIDList=None):
     ## 同步采集NPC功能号采集次数

--
Gitblit v1.8.0