hxp
2 天以前 b2d9d7914012c8932c823e19489c9c238ecc032a
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTravel.py
@@ -23,7 +23,6 @@
import ItemControler
import PlayerBeauty
import GameWorld
import ObjPool
import random
import time
@@ -119,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))
@@ -134,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]
@@ -255,21 +262,23 @@
        
    return
def __doClickUnOpendGrid(curPlayer, row, col):
def __doClickUnOpendGrid(curPlayer, row, col, isBomb=False):
    ## 执行点击未开启的格子
    gridState = GetGridState(curPlayer, row, col)
    if gridState in [GridState_None, GridState_Crack]:
        __openGridRandEvent(curPlayer, row, col)
        __openGridRandEvent(curPlayer, row, col, isBomb)
    else:
        return
    return True
def __openGridRandEvent(curPlayer, row, col):
def __openGridRandEvent(curPlayer, row, col, isBomb=False):
    ## 执行打开格子随机生成事件
    eventID = GetGridEventID(curPlayer, row, col)
    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
@@ -288,7 +297,8 @@
    else:
        eventID = ipyData.GetEventID()
        awardItemID = ipyData.GetAwardItemID()
        if awardItemID in IpyGameDataPY.GetFuncEvalCfg("TravelRate", 1) and GetGridState(curPlayer, row, col) == GridState_None:
        # 炸弹不出裂纹
        if not isBomb and awardItemID in IpyGameDataPY.GetFuncEvalCfg("TravelRate", 1) and GetGridState(curPlayer, row, col) == GridState_None:
            GameWorld.DebugLog("必出现裂纹的奖励事件! eventID=%s,awardItemID=%s" % (eventID, awardItemID))
            SetGridState(curPlayer, row, col, GridState_Crack)
            
@@ -322,13 +332,15 @@
        rowMax, colMax = IpyGameDataPY.GetFuncEvalCfg("TravelSet", 3) # 行列
        # 同行
        for c in range(1, 1 + colMax):
            if __doClickUnOpendGrid(curPlayer, row, c):
            if __doClickUnOpendGrid(curPlayer, row, c, isBomb=True):
                syncGridList.append([row, c])
        # 同列
        for r in range(1, 1 + rowMax):
            if __doClickUnOpendGrid(curPlayer, r, col):
            if __doClickUnOpendGrid(curPlayer, r, col, isBomb=True):
                syncGridList.append([r, col])
        SetGridEventID(curPlayer, row, col, EventID_Blank) # 炸弹消失
        syncGridList.append([row, col])
    # 传送门
    elif eventID == EventID_Portal:
        GameWorld.DebugLog("点击传送门! row=%s,col=%s,eventID=%s" % (row, col, eventID))
@@ -405,7 +417,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
@@ -481,22 +493,22 @@
                
    gridList = []
    for row, col in syncGridList:
        grid = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCTravelGrid)
        grid = ChPyNetSendPack.tagSCTravelGrid()
        grid.Row = row
        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)
    clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagSCTravelInfo)
    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