From 59131b1a15794d761b345302792eb601dd2c6c82 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 25 十二月 2025 18:32:58 +0800
Subject: [PATCH] 358 【内政】红颜系统-服务端(游历景观未被发现时不通知景观相关信息;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py | 32 +++++++++++++++++++++-----------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 6 ++++--
2 files changed, 25 insertions(+), 13 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index b2118aa..10b32a8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3542,7 +3542,7 @@
Def_PDict_TravelEnergy = "TravelEnergy" # 剩余体力
Def_PDict_TravelEnergyTime = "TravelEnergyTime" # 上次恢复体力时间戳
Def_PDict_TravelCnt = "TravelCnt" # 累计游历次数
-Def_PDict_TravelScenery = "TravelScenery" # 景观信息,景观左上角所在格子索引 * 10 + 景观类型
+Def_PDict_TravelSceneryState = "TravelSceneryState" # 景观状态信息,是否已被找到 * 1000 + 景观左上角所在格子行 * 100 + 列 * 10 + 景观类型
Def_PDict_TravelSceneryLVInfo = "TravelSceneryLVInfo" # 景观等级信息,个位数-第1次升级成功与否,1-成功,2-失败;十位-第2次 ...
Def_PDict_TravelGridInfo = "TravelGridInfo_%s_%s" # 格子信息,参数(行, 列) 事件ID*100+是否双倍*10+开启状态
Def_PDict_TravelState = "TravelState" # 本盘游历记录,1-已领取景观奖励
@@ -4037,7 +4037,9 @@
TriggerWay_FriendDotHurt, # 友方造成持续伤害时(多目标仅触发一次,包含自己) 53
TriggerWay_NoDead, # 不时死(有配置该触发方式的视为有不死,触发死亡时不死保留1点血量) 54
TriggerWay_ImmuneHurt, # 免疫伤害时 55
-) = range(1, 1 + 55)
+TriggerWay_BeSuckHP, # 被吸血时 56
+TriggerWay_SuckHPOne, # 吸血时(多目标仅触发一次) 57
+) = range(1, 1 + 57)
# 不加载的被动触发方式,一般用于本技能固定触发逻辑用的
TriggerWayNoLoadList = [TriggerWay_CurSkillEff, TriggerWay_CurSkillEffLst]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py
index cdd0ca1..99e634c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py
@@ -118,7 +118,7 @@
randRow = random.randint(1, randRowMax)
randCol = random.randint(1, randColMax)
sceneryValue = randRow * 100 + randCol * 10 + sceneryType
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TravelScenery, sceneryValue)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TravelSceneryState, sceneryValue)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TravelSceneryLVInfo, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TravelState, 0)
GameWorld.DebugLog(" 景观位置: randRow=%s,randCol=%s,sceneryValue=%s" % (randRow, randCol, sceneryValue))
@@ -133,15 +133,23 @@
return sceneryType, randRow, randCol
def __getSceneryInfo(curPlayer):
- sceneryValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelScenery)
- sRow = sceneryValue / 100
+ sceneryValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelSceneryState)
+ found = sceneryValue / 1000 # 是否已被找到
+ sRow = sceneryValue % 1000 / 100
sCol = sceneryValue % 100 / 10
sceneryType = sceneryValue % 10
- return sceneryType, sRow, sCol
+ return sceneryType, sRow, sCol, found
+
+def SetSceneryFound(curPlayer):
+ sceneryValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelSceneryState)
+ sceneryValue = sceneryValue % 1000 + 1000
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TravelSceneryState, sceneryValue)
+ GameWorld.DebugLog(" 设置景观被找到了: sceneryValue=%s" % sceneryValue)
+ return
def __checkSceneryOpend(curPlayer):
## 检查景观相关格子是否已全部打开
- sceneryType, sRow, sCol = __getSceneryInfo(curPlayer)
+ sceneryType, sRow, sCol, _ = __getSceneryInfo(curPlayer)
if sceneryType not in SceneryTypeSet:
return
rowSet, colSet = SceneryTypeSet[sceneryType]
@@ -269,6 +277,8 @@
if eventID:
SetGridState(curPlayer, row, col, GridState_Opend)
GameWorld.DebugLog("该游历格子已经有事件ID了! row=%s,col=%s,eventID=%s" % (row, col, eventID))
+ if eventID < EventID_Portal:
+ SetSceneryFound(curPlayer)
return
# 生成事件ID
@@ -404,7 +414,7 @@
if not __checkSceneryOpend(curPlayer):
return
- sceneryType, sRow, sCol = __getSceneryInfo(curPlayer)
+ sceneryType, sRow, sCol, _ = __getSceneryInfo(curPlayer)
ipyDataList = IpyGameDataPY.GetIpyGameDataList("TravelScenery", sceneryType)
if not ipyDataList:
return
@@ -485,17 +495,17 @@
grid.Col = col
grid.State = GetGridState(curPlayer, row, col)
grid.Multi = GetGridMulti(curPlayer, row, col)
- grid.EventID = GetGridEventID(curPlayer, row, col)
+ grid.EventID = GetGridEventID(curPlayer, row, col) if grid.State == GridState_Opend else 0
gridList.append(grid)
- sceneryType, sRow, sCol = __getSceneryInfo(curPlayer)
+ sceneryType, sRow, sCol, found = __getSceneryInfo(curPlayer)
clientPack = ChPyNetSendPack.tagSCTravelInfo()
clientPack.Energy = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelEnergy)
clientPack.EnergyTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelEnergyTime)
clientPack.TravelCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelCnt)
- clientPack.SceneryType = sceneryType
- clientPack.SceneryRow = sRow
- clientPack.SceneryCol = sCol
+ clientPack.SceneryType = sceneryType if found else 0
+ clientPack.SceneryRow = sRow if found else 0
+ clientPack.SceneryCol = sCol if found else 0
clientPack.SceneryLVInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TravelSceneryLVInfo)
clientPack.Result = result
clientPack.GridList = gridList
--
Gitblit v1.8.0