PyNetPack
@@ -1 +1 @@ Subproject commit 8f2ab740c1e7139456629265d52d237a273b8177 Subproject commit 2aa3c20dde03d0e46b9bb422cf48784c5e171c76 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldActionControl.py
@@ -865,6 +865,7 @@ # 骑宠争夺活动开始前同步有效人数到地图 if dailyActionID == ShareDefine.DailyActionID_FamilyRobBoss: GameWorldBoss.SyncMapServer_HorsePetRobBossPlayerCount() GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ActionBossRebornSign % dailyActionID, int(time.time())) #通知Mapserver,设置字典 GameWorld.SendMapServerMsgEx(dictName, state) ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py
@@ -995,13 +995,18 @@ if not totalPoint: GameWorld.Log(' 增加boss复活点 没有总点数!!!!') return rebornCnt = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornCnt) maxRebornCnt = IpyGameDataPY.GetFuncCfg('BossRebornTotalPoint', 3) if rebornCnt >= maxRebornCnt: GameWorld.DebugLog(' boss复活已达到最大次数! maxRebornCnt=%s' % maxRebornCnt) return curPoint = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornPoint) updPoint = (curPoint+addPoint)%totalPoint PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornPoint, updPoint) if curPoint+addPoint >= totalPoint: #重生boss rebornCnt = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornCnt) PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornCnt, rebornCnt+1) killBossCntLimitDict = IpyGameDataPY.GetFuncEvalCfg('KillBossCntLimit', 1, {}) @@ -1027,6 +1032,8 @@ PyGameData.g_sortBOSSRefreshList.sort(key=lambda asd:max(0, asd[2] - (curTime - asd[1]))) GameWorld.Log(' boss复活活动 重生boss bossIDList=%s'%bossIDList) g_lastBossRebornTime = curTime GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ActionBossRebornSign % ShareDefine.OperationActionName_BossReborn, int(time.time())) else: #广播 needNotifyPointPerList = IpyGameDataPY.GetFuncEvalCfg('BossRebornNotify') ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -146,6 +146,7 @@ Def_Notify_WorldKey_MapServerScriptReloadVersion = 'MapServerScriptReloadVersion' # MapServer 脚本重读版本标记 Def_Notify_WorldKey_InitGameWorldTime = "InitGameWorldTime" #启动服务器时间 Def_Notify_WorldKey_OperationActionInfo = "OperationActionInfo_%s" # 运营活动信息,参数为运营活动名 Def_Notify_WorldKey_ActionBossRebornSign = "ActBossSign_%s" # 活动boss重生标记,参数为日常活动ID 或 运营活动名 Def_Notify_WorldKey_DailyActionState = "DailyActionState_%s" # 日常活动状态,参数为日常活动ID Def_Notify_WorldKey_CrossDailyActionState = "CrossDailyActionState_%s" # 跨服日常活动状态,参数为日常活动ID Def_Notify_WorldKey_FBEnterTimeLimiitMapID = "FBEnterTimeLimiitMapID" # 进入副本有时间限制的地图ID列表 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -1998,7 +1998,7 @@ Map_Player_AreaReward_GetCnt = "AreaAward_GetCnt%s" # 玩家战场区域福利-累计获得次数 #---地图NPC--- Map_NPC_ActivityBossRebornCount = 'ActivityBossRebornCount_%s' # 活动boss已刷新只数,参数(标识点) Map_NPC_ActBossLastRebornSign = 'ActBossRebornSign_%s' # 活动boss上次复活标记,参数为刷新标识点 Map_NPC_WorldBossLastReBornTick = 'WorldBossLastReBornTick_%s' # 世界boss上次重生时间 Map_NPC_WorldBossDeadTick = 'WorldBossDeadTick_%s' # 世界boss死亡时间 Map_NPC_RandomMapNPCID = 'RandMapNPCID_%s' # 当前地图随机NPCID, 参数为标识点mark ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/Boss.py
@@ -66,7 +66,7 @@ bossKey = ChConfig.Map_NPC_WorldBossLastReBornTick % ipyData.GetStoneNPCID() GameWorld.GetGameFB().SetGameFBDict(bossKey, 0) GameWorld.GetGameFB().SetGameFBDict(ChConfig.Map_NPC_ActivityBossRebornCount % ipyData.GetRefreshMark(), 0) GameWorld.GetGameFB().SetGameFBDict(ChConfig.Map_NPC_ActBossLastRebornSign % ipyData.GetRefreshMark(), 0) gameNPCManager = GameWorld.GetNPCManager() tick = GameWorld.GetGameWorld().GetTick() ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py
@@ -22,6 +22,7 @@ import PlayerControl import IPY_GameWorld import IpyGameDataPY import PyGameData import GameWorld import FBCommon import FBLogic @@ -315,31 +316,6 @@ def NPCRefresh_219(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) def NPCRefresh_220(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) def ResetActivityBossRefreshCount(): ## 重置活动boss刷怪个数 # gameFb 要取活动线 activityLineIndex = 0 # 活动线, 默认1线 mapID = GameWorld.GetMap().GetMapID() activityMapLineDict = IpyGameDataPY.GetFuncEvalCfg("MapLine", 2, {}) if mapID in activityMapLineDict: activityLineIndex = max(0, activityMapLineDict[mapID] - 1) gameWorld = IPY_GameWorld.IPY_GameWorld(activityLineIndex) gameFB = gameWorld.GetGameFBByFbIndex(activityLineIndex) if not gameFB: return gameNPC = GameWorld.GetNPCManager() # NPC标识点的无所谓,哪条线都可以,因为都一样 for i in xrange(gameNPC.GetCustomNPCRefreshCount()): npcRefresh = gameNPC.GetCustomNPCRefreshAt(i) refreshMark = npcRefresh.GetRefreshMark() if gameFB.GetGameFBDictByKey(ChConfig.Map_NPC_ActivityBossRebornCount % refreshMark): gameFB.SetGameFBDict(ChConfig.Map_NPC_ActivityBossRebornCount % refreshMark, 0) GameWorld.DebugLog("重置活动boss刷怪点刷怪个数: activityLineIndex=%s,refreshMark=%s" % (activityLineIndex, refreshMark)) return ## 世界boss刷怪 # @param npcRefresh 刷新实例 # @param tick 当前时间 @@ -355,7 +331,7 @@ mapID = GameWorld.GetMap().GetMapID() refreshMark = npcRefresh.GetRefreshMark() lineID = GameWorld.GetGameWorld().GetLineID() relatedType, relatedID = 0, 0 relatedType, relatedID = 0, "" isNeedShunt = 0 if mapID == ChConfig.Def_FBMapID_SealDemon: bossID = GameLogic_SealDemon.CurFBLineBOSSID() @@ -392,15 +368,21 @@ return gameFB = GameWorld.GetGameFB() gameWorldMgr = GameWorld.GetGameWorld() isActivityBoss = False # 是否活动boss forceReborn = False # 强制重生 actBossRebornSign = 0 mapActBossRebornSign = 0 # 关联日常活动 if relatedType == 1: relatedID = int(relatedID) actionKey = ShareDefine.Def_Notify_WorldKey_DailyActionState % relatedID rebornBossState = 1 if gameWorldMgr.GetGameWorldDictByKey(actionKey) else 0 isActivityBoss = True # 关联运营活动,待扩展 elif relatedType == 2: pass operationActionInfo = PyGameData.g_operationActionDict.get(relatedID, {}) operationActionState = operationActionInfo.get(ShareDefine.ActKey_State, 0) rebornBossState = 1 if operationActionState else 0 else: bosskey = ShareDefine.Def_Notify_WorldKey_GameWorldBossReborn % bossID rebornBossState = gameWorldMgr.GetGameWorldDictByKey(bosskey) @@ -410,13 +392,19 @@ if mapID in activityMapLineDict: activityLineID = max(0, activityMapLineDict[mapID] - 1) # 活动boss只在活动线路刷 if isActivityBoss: activityBossRebornCount = gameFB.GetGameFBDictByKey(ChConfig.Map_NPC_ActivityBossRebornCount % refreshMark) # 关联活动boss if relatedType: rebornLineID = activityLineID # 活动boss只刷在活动线 # 不是活动线 if rebornBossState and lineID != rebornLineID: rebornBossState = 0 # 关联活动boss只要复活标记与上次不同,则强制重生 actBossRebornSign = gameWorldMgr.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ActionBossRebornSign % relatedID) mapActBossRebornSign = gameFB.GetGameFBDictByKey(ChConfig.Map_NPC_ActBossLastRebornSign % refreshMark) rebornBossState = rebornBossState and actBossRebornSign if rebornBossState and actBossRebornSign != mapActBossRebornSign: forceReborn = True # 非活动boss活动线不刷, 1线除外 else: @@ -433,7 +421,7 @@ # 复活状态 if rebornBossState: if curNPC: if curNPC.GetNPCID() == bossID: if not forceReborn and curNPC.GetNPCID() == bossID: return #去掉非bossNPC NPCCommon.SetDeadEx(curNPC) @@ -442,9 +430,9 @@ if lineID != rebornLineID and not isNeedShunt and mapID not in [ChConfig.Def_FBMapID_SealDemon, ChConfig.Def_FBMapID_ZhuXianBoss]: return if isActivityBoss and activityBossRebornCount > 0: #GameWorld.DebugLog("活动线已经刷过不再刷活动boss: lineID=%s,rebornLineID=%s,refreshMark=%s,bossID=%s,activityBossRebornCount=%s" # % (lineID, rebornLineID, refreshMark, bossID, activityBossRebornCount)) if mapActBossRebornSign and actBossRebornSign == mapActBossRebornSign: #GameWorld.DebugLog("活动线已经刷过不再刷活动boss: lineID=%s,rebornLineID=%s,refreshMark=%s,bossID=%s,actBossRebornSign=%s" # % (lineID, rebornLineID, refreshMark, bossID, actBossRebornSign)) return # 死亡状态 @@ -456,9 +444,12 @@ if curNPC.GetNPCID() == stoneNPCID: return # 活动的boss if curNPC.GetNPCID() == bossID and isActivityBoss: if curNPC.GetNPCID() == bossID and relatedType: GameWorld.Log("活动boss,活动结束,系统设置boss死亡!bossID=%s" % bossID) PlayerControl.FBNotify("FairyGrabBossNoDead", [bossID]) if relatedID == ShareDefine.DailyActionID_FamilyRobBoss: PlayerControl.FBNotify("FairyGrabBossNoDead", [bossID]) elif relatedID == ShareDefine.OperationActionName_BossReborn: pass #去掉非墓碑NPC NPCCommon.SetDeadEx(curNPC) @@ -485,8 +476,8 @@ __InitNewBornNPC(npcRefresh, tick) gameFB.SetGameFBDict(key, tick) if isActivityBoss and rebornBossState: gameFB.SetGameFBDict(ChConfig.Map_NPC_ActivityBossRebornCount % refreshMark, activityBossRebornCount + 1) if actBossRebornSign and rebornBossState: gameFB.SetGameFBDict(ChConfig.Map_NPC_ActBossLastRebornSign % refreshMark, actBossRebornSign) GameWorld.DebugLog("BossRefresh mapID=%s,rebornLineID=%s,refreshMark=%s,rebornNPCID=%s,isNeedShunt=%s,OK!" % (mapID, rebornLineID, refreshMark, rebornNPCID, isNeedShunt), lineID) ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -1447,11 +1447,6 @@ continue PlayerWorldAverageLv.UpdatePlayerWorldAverageLv(curPlayer) # 日常活动 elif key.startswith(ShareDefine.Def_Notify_WorldKey_DailyActionState[:-2]): if value and gameWorldMgr.GetGameWorldDictByKey(key) != value: NPCCustomRefresh.ResetActivityBossRefreshCount() #通用设置 befValue = gameWorldMgr.GetGameWorldDictByKey(key) gameWorldMgr.SetGameWorldDict(key, value) ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -146,6 +146,7 @@ Def_Notify_WorldKey_MapServerScriptReloadVersion = 'MapServerScriptReloadVersion' # MapServer 脚本重读版本标记 Def_Notify_WorldKey_InitGameWorldTime = "InitGameWorldTime" #启动服务器时间 Def_Notify_WorldKey_OperationActionInfo = "OperationActionInfo_%s" # 运营活动信息,参数为运营活动名 Def_Notify_WorldKey_ActionBossRebornSign = "ActBossSign_%s" # 活动boss重生标记,参数为日常活动ID 或 运营活动名 Def_Notify_WorldKey_DailyActionState = "DailyActionState_%s" # 日常活动状态,参数为日常活动ID Def_Notify_WorldKey_CrossDailyActionState = "CrossDailyActionState_%s" # 跨服日常活动状态,参数为日常活动ID Def_Notify_WorldKey_FBEnterTimeLimiitMapID = "FBEnterTimeLimiitMapID" # 进入副本有时间限制的地图ID列表