358 【内政】红颜系统-服务端(游历景观未被发现时不通知景观相关信息;)
2个文件已修改
38 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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]
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