设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2180|回复: 2
打印 上一主题 下一主题

[已经过期] 请问下这个脚本的通行度和四方向怎么用

[复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
182 小时
注册时间
2009-4-22
帖子
208
跳转到指定楼层
1
发表于 2014-1-2 12:17:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8星屑
RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2.  
  3. #==============================================================================
  4. # ★ カスタマイズ項目 - Customize ★
  5. #==============================================================================
  6.  
  7. module KGC
  8. module TilesetExtension
  9.   # ◆ タイル画像ファイル名のプレフィックス
  10.   #  タイル画像ファイル名の先頭に必要な文字列。
  11.   TILE_IMAGE_PREFIX = "Tile"
  12.  
  13.   # ◆ タイル画像のプリセット
  14.   #  [SET <セット名>] で使用可能。
  15.   TILE_PRESET = {}  # ← これは消さないこと!
  16.   # ここから下に、プリセットを定義。
  17.   # ↓は設定例
  18.     TILE_PRESET["_1图块"] = {
  19.     "A2"=>"A2_1",
  20.    "A1"=>"A1_1",
  21.    "A4"=>"A4_1",
  22.  
  23.   }
  24.     TILE_PRESET["_沙漠"] = {
  25.     "A1"=>"A1_沙漠",
  26.     "A2"=>"A2_沙漠",
  27.     "A3"=>"A3_沙漠",
  28.     "A4"=>"A4_沙漠",
  29.     "A5"=>"A5_沙漠",
  30.     "E"=>"E_沙漠",
  31.     "B"=>"B_沙漠",
  32.     "C"=>"C_沙漠",
  33.     "D"=>"D_沙漠",
  34.   }
  35.     TILE_PRESET["_沙漠2"] = {
  36.     "A1"=>"A1_沙漠",
  37.     "A2"=>"A2_沙漠",
  38.     "A3"=>"A3_沙漠",
  39.     "A4"=>"A4_沙漠",
  40.     "A5"=>"A5_沙漠",
  41.   }
  42.       TILE_PRESET["_沙漠建筑"] = {
  43.     "A4"=>"A4_1",
  44.     "A2"=>"A2_1",
  45.     "C"=>"C_沙漠",
  46.   }
  47.       TILE_PRESET["_冰窟"] = {
  48.     "A4"=>"A4_冰窟",
  49.  
  50.   }
  51.       TILE_PRESET["_晋城"] = {
  52.     "A1"=>"A1_沙漠",
  53.     "A2"=>"A2_沙漠",
  54.     "A3"=>"A3_晋城",
  55.     "A4"=>"A4_沙漠",
  56.     "A5"=>"A5_沙漠",
  57.     "E"=>"E_晋城",
  58.   }  
  59.       TILE_PRESET["_血洞"] = {
  60.     "A2"=>"A2_血洞",
  61.     "E"=>"E_血洞",
  62.   }
  63.       TILE_PRESET["_狩猎场"] = {
  64.     "E"=>"E_狩猎场",
  65.     }
  66.       TILE_PRESET["_狩猎场2"] = {
  67.     "E"=>"E_狩猎场2",
  68.   }
  69.   # 使うときは、マップ名に [SET 魔王の城] を入れる。
  70.  
  71.   # ◆ 4方向通行・地形タグ確認ボタン (デバッグ用)
  72.   #  このボタンを押すと、プレイヤーが立っている場所の4方向通行設定と
  73.   #  地形タグをダイアログに表示します。
  74.   #  nil にすると、この機能は無効になります。
  75.   #   ※ この機能はテストプレイ中のみ有効になります。
  76.   DEBUG_INFO_BUTTON = Input::F7
  77. end
  78. end
  79.  
  80. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  81.  
  82. $imported = {} if $imported == nil
  83. $imported["TilesetExtension"] = true
  84.  
  85. if $data_mapinfos == nil
  86.   $data_mapinfos = load_data("Data/MapInfos.rvdata")
  87. end
  88.  
  89. # 方向フラグ (4方向通行フラグ対応)
  90. module DirectionFlag
  91.   DOWN  = 0x01
  92.   LEFT  = 0x02
  93.   RIGHT = 0x04
  94.   UP    = 0x08
  95. end
  96.  
  97. module KGC::TilesetExtension
  98.   # 拡張タイルセットのファイル名
  99.   EX_RVDATA = "TilesetEx.rvdata"
  100.  
  101.   # 正規表現
  102.   module Regexp
  103.     # 継承
  104.     INHERIT = /\[INHERIT\]/i
  105.     # プリセット
  106.     PRESET = /\[SET ([\w\-]+)\]/i
  107.   end
  108.  
  109.   # デフォルトタイルセットファイル名
  110.   DEFAULT_FILENAME = {
  111.     "A1"=>"TileA1",
  112.     "A2"=>"TileA2",
  113.     "A3"=>"TileA3",
  114.     "A4"=>"TileA4",
  115.     "A5"=>"TileA5",
  116.     "B"=>"TileB",
  117.     "C"=>"TileC",
  118.     "D"=>"TileD",
  119.     "E"=>"TileE"
  120.   }
  121.   @@__filename = DEFAULT_FILENAME.dup
  122.  
  123.   module_function
  124.   #--------------------------------------------------------------------------
  125.   # ○ 指定マップのタイル画像ファイル名初期化
  126.   #     map_id : マップ ID
  127.   #--------------------------------------------------------------------------
  128.   def init_tileset_filename(map_id)
  129.     @@__filename = get_converted_tileset_filename(map_id)
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # ○ 変換後のタイル画像ファイル名を取得
  133.   #     map_id : マップ ID
  134.   #--------------------------------------------------------------------------
  135.   def get_converted_tileset_filename(map_id)
  136.     info = $data_mapinfos[map_id]
  137.     name = info.original_name
  138.     filename = DEFAULT_FILENAME.dup
  139.     if name =~ Regexp::INHERIT
  140.       # 継承する場合は親を調べる
  141.       parent_id = $data_mapinfos[map_id].parent_id
  142.       if parent_id > 0
  143.         filename = get_converted_tileset_filename(parent_id)
  144.       end
  145.     end
  146.     # 現マップの変換規則を適用
  147.     return convert_tileset_filename(filename, name)
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ○ タイル画像ファイル名変換
  151.   #     filename : ファイル名 (Hash)
  152.   #     map_name : マップ名
  153.   #--------------------------------------------------------------------------
  154.   def convert_tileset_filename(filename, map_name)
  155.     name_buf = filename.dup
  156.     # プリセット適用
  157.     presets = map_name.scan(Regexp::PRESET)
  158.     presets.each { |s|
  159.       if TILE_PRESET.has_key?(s[0])
  160.         TILE_PRESET[s[0]].each { |k, v|
  161.           name_buf[k] = TILE_IMAGE_PREFIX + v
  162.         }
  163.       end
  164.     }
  165.     # 置換
  166.     DEFAULT_FILENAME.keys.each { |key|
  167.       if map_name =~ /\[#{key} ([\w\-]+)\]/
  168.         name_buf[key] = TILE_IMAGE_PREFIX + $1
  169.       end
  170.     }
  171.     return name_buf
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ○ タイル画像ファイル名取得
  175.   #--------------------------------------------------------------------------
  176.   def get_tileset_filename
  177.     return @@__filename
  178.   end
  179. end
  180.  
  181. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  182.  
  183. #==============================================================================
  184. # □ KGC::Commands
  185. #==============================================================================
  186.  
  187. module KGC
  188. module Commands
  189.   module_function
  190.   #--------------------------------------------------------------------------
  191.   # ○ 指定座標の地形タグ取得
  192.   #     x : マップの X 座標
  193.   #     y : マップの Y 座標
  194.   #     variable_id : 取得した地形タグを代入する変数の ID
  195.   #--------------------------------------------------------------------------
  196.   def get_terrain_tag(x, y, variable_id = 0)
  197.     tag = $game_map.terrain_tag(x, y)       # 指定位置のタグを取得
  198.     if variable_id > 0
  199.       $game_variables[variable_id] = tag    # 指定された変数に代入
  200.     end
  201.     return tag
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # ○ 指定イベント ID の位置の地形タグ取得
  205.   #     event_id : イベント ID
  206.   #     variable_id : 取得した地形タグを代入する変数の ID
  207.   #--------------------------------------------------------------------------
  208.   def get_event_terrain_tag(event_id, variable_id = 0)
  209.     event = $game_map.events.values.find { |e| e.id == event_id }
  210.     if event == nil
  211.       # 該当するイベントが無ければ 0
  212.       tag = 0
  213.     else
  214.       tag = $game_map.terrain_tag(event.x, event.y)
  215.     end
  216.  
  217.     # 指定された変数に代入
  218.     if variable_id > 0
  219.       $game_variables[variable_id] = tag
  220.     end
  221.     return tag
  222.   end
  223.   #--------------------------------------------------------------------------
  224.   # ○ プレイヤーの位置の地形タグ取得
  225.   #     variable_id : 取得した地形タグを代入する変数の ID
  226.   #--------------------------------------------------------------------------
  227.   def get_player_terrain_tag(variable_id = 0)
  228.     tag = $game_map.terrain_tag($game_player.x, $game_player.y)
  229.  
  230.     # 指定された変数に代入
  231.     if variable_id > 0
  232.       $game_variables[variable_id] = tag
  233.     end
  234.     return tag
  235.   end
  236. end
  237. end
  238.  
  239. class Game_Interpreter
  240.   include KGC::Commands
  241. end
  242.  
  243. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  244.  
  245. #==============================================================================
  246. # ■ RPG::MapInfo
  247. #==============================================================================
  248.  
  249. class RPG::MapInfo
  250.   #--------------------------------------------------------------------------
  251.   # ● マップ名取得
  252.   #--------------------------------------------------------------------------
  253.   def name
  254.     return @name.gsub(/\[.*\]/) { "" }
  255.   end
  256.   #--------------------------------------------------------------------------
  257.   # ○ オリジナルマップ名取得
  258.   #--------------------------------------------------------------------------
  259.   def original_name
  260.     return @name
  261.   end
  262. end
  263.  
  264. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  265.  
  266. #==============================================================================
  267. # □ RPG::Tileset
  268. #------------------------------------------------------------------------------
  269. #   タイルセットの付加的情報を扱うクラスです。
  270. #==============================================================================
  271.  
  272. class RPG::Tileset
  273.   #--------------------------------------------------------------------------
  274.   # ○ 定数
  275.   #--------------------------------------------------------------------------
  276.   TABLE_SIZE = 8192                       # 通行・地形タグテーブルのサイズ
  277.   #--------------------------------------------------------------------------
  278.   # ○ 公開インスタンス変数
  279.   #--------------------------------------------------------------------------
  280.   attr_accessor :version                  # 内部バージョン
  281.   attr_accessor :passages                 # 4 方向通行フラグ
  282.   attr_accessor :terrain_tags             # 地形タグ
  283.   #--------------------------------------------------------------------------
  284.   # ○ オブジェクト初期化
  285.   #--------------------------------------------------------------------------
  286.   def initialize
  287.     @version = 1
  288.     @passages = Table.new(TABLE_SIZE)
  289.     @terrain_tags = Table.new(TABLE_SIZE)
  290.   end
  291. end
  292.  
  293. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  294.  
  295. #==============================================================================
  296. # ■ Game_Map
  297. #==============================================================================
  298.  
  299. class Game_Map
  300.   LAYERS = [2, 1, 0]
  301.   #--------------------------------------------------------------------------
  302.   # ● セットアップ
  303.   #     map_id : マップ ID
  304.   #--------------------------------------------------------------------------
  305.   alias setup_KGC_TilesetExtension setup
  306.   def setup(map_id)
  307.     @map_id = map_id
  308.     init_tileset_filename
  309.  
  310.     setup_KGC_TilesetExtension(map_id)
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ○ タイルセット画像ファイル名を初期化
  314.   #--------------------------------------------------------------------------
  315.   def init_tileset_filename
  316.     KGC::TilesetExtension.init_tileset_filename(@map_id)
  317.   end
  318.   #--------------------------------------------------------------------------
  319.   # ○ 指定座標の通行フラグ取得
  320.   #     x : X 座標
  321.   #     y : Y 座標
  322.   #--------------------------------------------------------------------------
  323.   def passage(x, y)
  324.     LAYERS.each { |i|
  325.       tile_id = @map.data[x, y, i]
  326.       return 0 if tile_id == nil
  327.       return $data_tileset.passages[tile_id]
  328.     }
  329.     return 0
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ○ 指定座標の地形タグ取得
  333.   #     x : X 座標
  334.   #     y : Y 座標
  335.   #--------------------------------------------------------------------------
  336.   def terrain_tag(x, y)
  337.     LAYERS.each { |i|
  338.       tile_id = @map.data[x, y, i]               # タイル ID を取得
  339.       return 0 if tile_id == nil                 # タイル ID 取得失敗 : タグなし
  340.       tag = $data_tileset.terrain_tags[tile_id]  # 地形タグを取得
  341.       return tag if tag > 0                      # タグが設定してあれば返す
  342.     }
  343.     return 0
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   # ○ 指定方向通行可能判定
  347.   #     x : X 座標
  348.   #     y : Y 座標
  349.   #     d : 移動方向
  350.   #--------------------------------------------------------------------------
  351.   def passable_dir?(x, y, d)
  352.     # 方向 (0,2,4,6,8,10) から 通行フラグ (0,1,2,4,8,0) に変換
  353.     flag = (1 << (d / 2 - 1)) & 0x0F
  354.  
  355.     LAYERS.each { |i|                         # レイヤーの上から順に調べる
  356.       tile_id = @map.data[x, y, i]            # タイル ID を取得
  357.       return false if tile_id == nil          # タイル ID 取得失敗 : 通行不可
  358.       pass = $data_tileset.passages[tile_id]  # タイルセットの通行属性を取得
  359.       return false if pass & flag != 0x00     # フラグが立っていたら通行不可
  360.     }
  361.     return true
  362.   end
  363. end
  364.  
  365. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  366.  
  367. #==============================================================================
  368. # ■ Game_Character
  369. #==============================================================================
  370.  
  371. class Game_Character
  372.   #--------------------------------------------------------------------------
  373.   # ○ 通行可能判定
  374.   #     x : X 座標
  375.   #     y : Y 座標
  376.   #     d : 移動方向 (省略時: 10)
  377.   #--------------------------------------------------------------------------
  378.   def passable?(x, y, d = 10)
  379.     nx = moved_x(x, d)
  380.     ny = moved_y(y, d)
  381.     nx = $game_map.round_x(nx)                         # 横方向ループ補正
  382.     ny = $game_map.round_y(ny)                         # 縦方向ループ補正
  383.     return false unless $game_map.valid?(nx, ny)       # マップ外?
  384.     return true if @through or debug_through?          # すり抜け ON?
  385.     return false unless map_passable?(x, y, d)         # 指定方向に移動不能?
  386.     return false unless map_passable?(nx, ny, 10 - d)  # 移動先が進入不能?
  387.     return false if collide_with_characters?(nx, ny)   # キャラクターに衝突?
  388.     return true                                        # 通行可
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ○ 移動後の X 座標算出
  392.   #     x : X 座標
  393.   #     d : 移動方向
  394.   #    移動後の X 座標を計算する。
  395.   #--------------------------------------------------------------------------
  396.   def moved_x(x, d)
  397.     return x + (d == 6 ? 1 : d == 4 ? -1 : 0)
  398.   end
  399.   #--------------------------------------------------------------------------
  400.   # ○ 移動後の Y 座標算出
  401.   #     y : Y 座標
  402.   #     d : 移動方向
  403.   #    移動後の Y 座標を計算する。
  404.   #--------------------------------------------------------------------------
  405.   def moved_y(y, d)
  406.     return y + (d == 2 ? 1 : d == 8 ? -1 : 0)
  407.   end
  408.   #--------------------------------------------------------------------------
  409.   # ○ マップ通行可能判定
  410.   #     x : X 座標
  411.   #     y : Y 座標
  412.   #     d : 移動方向
  413.   #    指定座標の指定した方向が通行可能かを取得する。
  414.   #--------------------------------------------------------------------------
  415.   def map_passable?(x, y, d)
  416.     return $game_map.passable?(x, y) && $game_map.passable_dir?(x, y, d)
  417.   end
  418.   #--------------------------------------------------------------------------
  419.   # ● 下に移動
  420.   #     turn_ok : その場での向き変更を許可
  421.   #--------------------------------------------------------------------------
  422.   def move_down(turn_ok = true)
  423.     if passable?(@x, @y, 2)                 # 通行可能
  424.       turn_down
  425.       @y = $game_map.round_y(@y+1)
  426.       @real_y = (@y-1)*256
  427.       increase_steps
  428.       @move_failed = false
  429.     else                                    # 通行不可能
  430.       turn_down if turn_ok
  431.       check_event_trigger_touch(@x, @y+1)   # 接触イベントの起動判定
  432.       @move_failed = true
  433.     end
  434.   end
  435.   #--------------------------------------------------------------------------
  436.   # ● 左に移動
  437.   #     turn_ok : その場での向き変更を許可
  438.   #--------------------------------------------------------------------------
  439.   def move_left(turn_ok = true)
  440.     if passable?(@x, @y, 4)                 # 通行可能
  441.       turn_left
  442.       @x = $game_map.round_x(@x-1)
  443.       @real_x = (@x+1)*256
  444.       increase_steps
  445.       @move_failed = false
  446.     else                                    # 通行不可能
  447.       turn_left if turn_ok
  448.       check_event_trigger_touch(@x-1, @y)   # 接触イベントの起動判定
  449.       @move_failed = true
  450.     end
  451.   end
  452.   #--------------------------------------------------------------------------
  453.   # ● 右に移動
  454.   #     turn_ok : その場での向き変更を許可
  455.   #--------------------------------------------------------------------------
  456.   def move_right(turn_ok = true)
  457.     if passable?(@x, @y, 6)                 # 通行可能
  458.       turn_right
  459.       @x = $game_map.round_x(@x+1)
  460.       @real_x = (@x-1)*256
  461.       increase_steps
  462.       @move_failed = false
  463.     else                                    # 通行不可能
  464.       turn_right if turn_ok
  465.       check_event_trigger_touch(@x+1, @y)   # 接触イベントの起動判定
  466.       @move_failed = true
  467.     end
  468.   end
  469.   #--------------------------------------------------------------------------
  470.   # ● 上に移動
  471.   #     turn_ok : その場での向き変更を許可
  472.   #--------------------------------------------------------------------------
  473.   def move_up(turn_ok = true)
  474.     if passable?(@x, @y, 8)                 # 通行可能
  475.       turn_up
  476.       @y = $game_map.round_y(@y-1)
  477.       @real_y = (@y+1)*256
  478.       increase_steps
  479.       @move_failed = false
  480.     else                                    # 通行不可能
  481.       turn_up if turn_ok
  482.       check_event_trigger_touch(@x, @y-1)   # 接触イベントの起動判定
  483.       @move_failed = true
  484.     end
  485.   end
  486.   #--------------------------------------------------------------------------
  487.   # ● 左下に移動
  488.   #--------------------------------------------------------------------------
  489.   def move_lower_left
  490.     unless @direction_fix
  491.       @direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
  492.     end
  493.     if (passable?(@x, @y, 2) && passable?(@x, @y+1, 4)) ||
  494.        (passable?(@x, @y, 4) && passable?(@x-1, @y, 2))
  495.       @x -= 1
  496.       @y += 1
  497.       increase_steps
  498.       @move_failed = false
  499.     else
  500.       @move_failed = true
  501.     end
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   # ● 右下に移動
  505.   #--------------------------------------------------------------------------
  506.   def move_lower_right
  507.     unless @direction_fix
  508.       @direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
  509.     end
  510.     if (passable?(@x, @y, 2) && passable?(@x, @y+1, 6)) ||
  511.        (passable?(@x, @y, 6) && passable?(@x+1, @y, 2))
  512.       @x += 1
  513.       @y += 1
  514.       increase_steps
  515.       @move_failed = false
  516.     else
  517.       @move_failed = true
  518.     end
  519.   end
  520.   #--------------------------------------------------------------------------
  521.   # ● 左上に移動
  522.   #--------------------------------------------------------------------------
  523.   def move_upper_left
  524.     unless @direction_fix
  525.       @direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
  526.     end
  527.     if (passable?(@x, @y, 8) && passable?(@x, @y-1, 4)) ||
  528.        (passable?(@x, @y, 4) && passable?(@x-1, @y, 8))
  529.       @x -= 1
  530.       @y -= 1
  531.       increase_steps
  532.       @move_failed = false
  533.     else
  534.       @move_failed = true
  535.     end
  536.   end
  537.   #--------------------------------------------------------------------------
  538.   # ● 右上に移動
  539.   #--------------------------------------------------------------------------
  540.   def move_upper_right
  541.     unless @direction_fix
  542.       @direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
  543.     end
  544.     if (passable?(@x, @y, 8) && passable?(@x, @y-1, 6)) ||
  545.        (passable?(@x, @y, 6) && passable?(@x+1, @y, 8))
  546.       @x += 1
  547.       @y -= 1
  548.       increase_steps
  549.       @move_failed = false
  550.     else
  551.       @move_failed = true
  552.     end
  553.   end
  554. end
  555.  
  556. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  557.  
  558. #==============================================================================
  559. # ■ Game_Player
  560. #==============================================================================
  561.  
  562. class Game_Player < Game_Character
  563.   #--------------------------------------------------------------------------
  564.   # ○ マップ通行可能判定
  565.   #     x : X 座標
  566.   #     y : Y 座標
  567.   #     d : 移動方向
  568.   #    指定座標の指定した方向が通行可能かを取得する。
  569.   #--------------------------------------------------------------------------
  570.   alias map_passable_KGC_TilesetExtension? map_passable?
  571.   def map_passable?(x, y, d)
  572.     return false unless map_passable_KGC_TilesetExtension?(x, y)
  573.  
  574.     return $game_map.passable_dir?(x, y, d)
  575.   end
  576.  
  577.   if $TEST && KGC::TilesetExtension::DEBUG_INFO_BUTTON != nil
  578.   #--------------------------------------------------------------------------
  579.   # ● フレーム更新
  580.   #--------------------------------------------------------------------------
  581.   alias update_KGC_TilesetExtension update
  582.   def update
  583.     update_KGC_TilesetExtension
  584.  
  585.     if Input.trigger?(KGC::TilesetExtension::DEBUG_INFO_BUTTON)
  586.       show_passage_and_terrain_tag
  587.     end
  588.   end
  589.   #--------------------------------------------------------------------------
  590.   # ○ プレイヤー位置の通行フラグ・地形タグを表示
  591.   #--------------------------------------------------------------------------
  592.   def show_passage_and_terrain_tag
  593.     passage = $game_map.passage(x, y)
  594.     tag = $game_map.terrain_tag(x, y)
  595.  
  596.     # デバッグ情報作成
  597.     s = "通行可能: "
  598.     s += "↓" if passage & DirectionFlag::DOWN  == 0x00
  599.     s += "←" if passage & DirectionFlag::LEFT  == 0x00
  600.     s += "→" if passage & DirectionFlag::RIGHT == 0x00
  601.     s += "↑" if passage & DirectionFlag::UP    == 0x00
  602.     s += "  地形タグ: #{tag}"
  603.  
  604.     p s
  605.   end
  606.   end
  607.  
  608. end
  609.  
  610. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  611.  
  612. #==============================================================================
  613. # ■ Sprite_Character
  614. #==============================================================================
  615.  
  616. class Sprite_Character < Sprite_Base
  617.   #--------------------------------------------------------------------------
  618.   # ● 指定されたタイルが含まれるタイルセット画像の取得
  619.   #     tile_id : タイル ID
  620.   #--------------------------------------------------------------------------
  621.   def tileset_bitmap(tile_id)
  622.     filename = KGC::TilesetExtension.get_tileset_filename
  623.     set_number = tile_id / 256
  624.     return Cache.system(filename["B"]) if set_number == 0
  625.     return Cache.system(filename["C"]) if set_number == 1
  626.     return Cache.system(filename["D"]) if set_number == 2
  627.     return Cache.system(filename["E"]) if set_number == 3
  628.     return nil
  629.   end
  630. end
  631.  
  632. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  633.  
  634. #==============================================================================
  635. # ■ Spriteset_Map
  636. #==============================================================================
  637.  
  638. class Spriteset_Map
  639.   #--------------------------------------------------------------------------
  640.   # ● タイルマップの作成
  641.   #--------------------------------------------------------------------------
  642.   def create_tilemap
  643.     filename = KGC::TilesetExtension.get_tileset_filename
  644.     @tilemap = Tilemap.new(@viewport1)
  645.     @tilemap.bitmaps[0] = Cache.system(filename["A1"])
  646.     @tilemap.bitmaps[1] = Cache.system(filename["A2"])
  647.     @tilemap.bitmaps[2] = Cache.system(filename["A3"])
  648.     @tilemap.bitmaps[3] = Cache.system(filename["A4"])
  649.     @tilemap.bitmaps[4] = Cache.system(filename["A5"])
  650.     @tilemap.bitmaps[5] = Cache.system(filename["B"])
  651.     @tilemap.bitmaps[6] = Cache.system(filename["C"])
  652.     @tilemap.bitmaps[7] = Cache.system(filename["D"])
  653.     @tilemap.bitmaps[8] = Cache.system(filename["E"])
  654.     @tilemap.map_data = $game_map.data
  655.     @tilemap.passages = $game_map.passages
  656.   end
  657. end
  658.  
  659. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  660.  
  661. #==============================================================================
  662. # ■ Scene_Title
  663. #==============================================================================
  664.  
  665. class Scene_Title < Scene_Base
  666.   #--------------------------------------------------------------------------
  667.   # ● データベースのロード
  668.   #--------------------------------------------------------------------------
  669.   alias load_database_KGC_TilesetExtension load_database
  670.   def load_database
  671.     load_database_KGC_TilesetExtension
  672.  
  673.     load_tileset
  674.   end
  675.   #--------------------------------------------------------------------------
  676.   # ○ タイルセット付加情報のロード
  677.   #--------------------------------------------------------------------------
  678.   def load_tileset
  679.     begin
  680.       $data_tileset = load_data("Data/#{KGC::TilesetExtension::EX_RVDATA}")
  681.     rescue
  682.       $data_tileset = RPG::Tileset.new
  683.     end
  684.   end
  685. end
  686.  
  687. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  688.  
  689. #==============================================================================
  690. # ■ Scene_File
  691. #==============================================================================
  692.  
  693. class Scene_File < Scene_Base
  694.   #--------------------------------------------------------------------------
  695.   # ● セーブデータの読み込み
  696.   #     file : 読み込み用ファイルオブジェクト (オープン済み)
  697.   #--------------------------------------------------------------------------
  698.   alias read_save_data_KGC_TilesetExtension read_save_data
  699.   def read_save_data(file)
  700.     read_save_data_KGC_TilesetExtension(file)
  701.  
  702.     $game_map.init_tileset_filename
  703.     Graphics.frame_reset
  704.   end
  705. end


这个脚本的通行度和四方向都怎么用啊?谢谢了,日文为看不懂= =

点评

这个脚本只是替换图块的而已吧。  发表于 2014-1-3 12:29

Lv1.梦旅人

梦石
0
星屑
191
在线时间
835 小时
注册时间
2012-9-16
帖子
1811
2
发表于 2014-1-16 17:40:36 | 只看该作者
很抱歉,这个脚本就是单纯的图块扩张。你加我QQ:1337253857
把。我在QQ上告诉你使用方法

——旧坑欢迎戳
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
2459 小时
注册时间
2011-12-18
帖子
1484
3
发表于 2014-1-19 22:50:51 | 只看该作者
这个脚本过于麻烦,不建议用这个。
话说这个帖子结了吗?
这是一个深不见底的坑,这是一个广袤无边的坑,我才刚刚放上了一抔泥土……

《六道·陈国篇》开坑了……↓点我
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-25 12:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表