龙仔rmxp吧 关注:14贴子:84
  • 1回复贴,共1

【原创RGSS2】RMVX扩建地形标志功能(献给RMVX爱好者= =)

取消只看楼主收藏回复

#==============================================================================
# ■ RM_VX地形标志V3.0_图块版本 By TERENCE(龙皇)    (RM_VX专用脚本)
#------------------------------------------------------------------------------
#    地形标志设置方法:
#    A~E每张图块ID都是从最左上方开始计算(由左到右)
#    001,002,003,004,005,006,007,008
#    009,010,011,012,013,014,015,016
#    ...............................
#    249,250,251,252,253,254,255,256
#
#    { 图块ID=>地形标志值 ,图块ID=>地形标志值 ,.......}
#    如果没设置地形标志值 调用后默认值为0
#------------------------------------------------------
#    ★注意事项:
#    [B页]的第一格空白图块是"不能"设置地形标志的
#    因为它是专门清理图块B~E的工具    而非图块
#    所以图块[B页]的部分 ID从第二格002开始计算
#
#    001[X设置不能],002,003,004,005,006,007,008
#    ...............................
#    另外如果图层地形标志重叠,
#    以高图层的B~E为主!!
#------------------------------------------------------
#    调用方法:
#
#    获取角色当前所在地形标志
#    $game_player.terrain_tag
#   
#    获取某事件当前所在地形标志
#    $game_map.events[事件编号].terrain_tag
#------------------------------------------------------
#    事件脚本中常用的使用方法:
#
#    角色当前所在地形标志 带入 某变量中
#    $game_variables[变量编号] = $game_player.terrain_tag
#
#    某事件当前所在地形标志 带入 某变量中
#    $game_variables[变量编号] = $game_map.events[事件编号].terrain_tag
#------------------------------------------------------
#    事件条件分歧脚本中常用的使用方法:
#
#    角色当前所在地形标志 是否等于 值
#    $game_player.terrain_tag == 值
#
#    某事件当前所在地形标志 是否等于 值
#    $game_map.events[事件编号].terrain_tag == 值
#
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● 地形标志设置区
#--------------------------------------------------------------------------
# 图块A的部分_ID   (ID:1~256)
MAP_TILE_A = {1=>0 ,256=>0}
# 图块B的部分_ID (ID:2~256) ★
MAP_TILE_B = {2=>0 ,256=>0}
# 图块C的部分_ID (ID:1~256)
MAP_TILE_C = {1=>0 ,256=>0}
# 图块D的部分_ID (ID:1~256)
MAP_TILE_D = {1=>0 ,256=>0}
# 图块E的部分_ID (ID:1~256)
MAP_TILE_E = {1=>0 ,256=>0}
#--------------------------------------------------------------------------



1楼2010-01-10 20:49回复
    # ● 获取地形标志
    #--------------------------------------------------------------------------
    def terrain_tag
        
         # 计算图块ID数值
         a = $game_map.map.data[@x, @y, 0]-2000
         map_tile_id_0 = (a >= 0) ? a/48 : (a+593)
         map_tile_id_1 = ($game_map.map.data[@x, @y, 1]-2000) / 48
         map_tile_id_2 = ($game_map.map.data[@x, @y, 2]+1)
             
         map_tile_id_0 = 0 if map_tile_id_0 == -42 # A
         map_tile_id_1 = 0 if map_tile_id_1 == -42 # I
         map_tile_id_2 = 0 if map_tile_id_2 == -42 # B~E
        
         map_tile_id_0 = map_tile_id_1 if map_tile_id_1 != 0 # 图块A的ID矫正
        
         # 获取图块A部分的地形标志
         if (map_tile_id_0 >= 1) and (map_tile_id_0 <= 256) and (map_tile_id_2 == 1)
           return 0 if MAP_TILE_A[map_tile_id_0]==nil
           return MAP_TILE_A[map_tile_id_0]
         end
          
         # 获取图块B部分的地形标志
         if (map_tile_id_2 >= 2) and (map_tile_id_2 <= 256)
           return 0 if MAP_TILE_B[map_tile_id_2]==nil
           return MAP_TILE_B[map_tile_id_2]
         end
        
         # 获取图块C部分的地形标志
         if (map_tile_id_2 >= 257) and (map_tile_id_2 <= 512)
           return 0 if MAP_TILE_C[map_tile_id_2-256]==nil
           return MAP_TILE_C[map_tile_id_2-256]
         end
        
         # 获取图块D部分的地形标志
         if (map_tile_id_2 >= 513) and (map_tile_id_2 <= 768)
           return 0 if MAP_TILE_D[map_tile_id_2-512]==nil
           return MAP_TILE_D[map_tile_id_2-512]
         end
        
         # 获取图块E部分的地形标志
         if (map_tile_id_2 >= 769) and (map_tile_id_2 <= 1024)
           return 0 if MAP_TILE_E[map_tile_id_2-768]==nil
           return MAP_TILE_E[map_tile_id_2-768]
         end
        
         # 黑屏区未定义(尚未规划任何)图块区域 回传0
         return 0    
    end
    end
    #--------------------------------------------------------------------------
    # ● 追加Game_Map定义
    #--------------------------------------------------------------------------
    class Game_Map
    def map
         return @map
    end
    end
    


    2楼2010-01-10 20:49
    回复