Project1

标题: 怎样让地图素材模块的选项卡多起来? [打印本页]

作者: DeoxysUser    时间: 2014-1-30 08:50
标题: 怎样让地图素材模块的选项卡多起来?
就是在选择画地图用什么来画的那个框的下面,怎样让ABCDE变得更多?
作者: DeoxysUser    时间: 2014-1-30 10:18
就是在选择画地图用什么来画的那个框的下面,怎样让ABCDE变得更多?
作者: 美丽晨露    时间: 2014-1-30 10:33
无法更多了
这是VX软件的弊端
要像使用更多图块的话
使用图块转换脚本吧
作者: Password    时间: 2014-1-30 15:07
需求不大的话只能靠合理布局和E选项卡{:2_276:}

有大需求和实力的话可以考虑用图块扩张脚本
作者: 抠脚大妈    时间: 2014-1-30 17:29
楼上几位太屌了,放脚本,里面有注释,怎么用应该看得懂
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 图块扩张 - KGC_TilesetExtension ◆ VX ◆
  3. #_/    ◇ Last update : 2008/01/20 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/       变更图块图像、增加4方向通行、地形标记功能。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. =begin

  8.   在地图名称加上[默认地图图块图档名称 新地图图块图档名称]
  9.   
  10.   例如:
  11.   
  12.   森林[A2 A2_2][B B_3]
  13.   就是说用 TileA2_2 代替 TileA2
  14.         用 TileB_3 代替 TileB

  15.   脚本中定义方法
  16.   
  17.   在30行下面定义哈希表:
  18.   TILE_PRESET["组名称"] = {
  19.     "默认地图图块图档名称1"=>"新地图图块图档名称",
  20.     "默认地图图块图档名称2"=>"新地图图块图档名称",
  21.     "默认地图图块图档名称3"=>"新地图图块图档名称",
  22.     "默认地图图块图档名称4"=>"新地图图块图档名称",
  23.     ...
  24.   }
  25.   然後在地图名称使用
  26.   
  27.   地图名称 [SET 组名称]

  28.   例如:
  29.   TILE_PRESET["魔王之城"] = {
  30.     "A1" => "A1-Maou",
  31.     "A2" => "A2-Maou",
  32.     "B"  => "B-Maou",
  33.     "D"  => "D-Maou",
  34.   }

  35.   魔王城─走廊[SET 魔王之城]
  36.   
  37.   就等於
  38.   魔王城─走廊[A1 A1-Maou][A2 A2-Maou][B B-Maou][D D-Maou]
  39.   
  40.   继承自定义图块:
  41.   在地图名称使用[inherit]就能继承其在地图管理器中父地图所定义的图块
  42.   
  43.   例如:
  44.   魔王城─走廊[A1 A1-Maou][A2 A2-Maou][B B-Maou][D D-Maou]
  45.    +--魔王城─房间一[inherit]
  46.    
  47.   如此「魔王城─房间一」就继承了魔王城─走廊已经定义过的所有图块。
  48.   PS:地图管理器就是RMVX介面左下角(图块选择器的下面)那个

  49.   变更的优先度:
  50.   1. 继承
  51.   2. 脚本自定义
  52.   3. 个别设定
  53.   
  54.   
  55.   例如
  56.   - 魔王城堡[A1 A1-2][B B2][C C2]
  57.       魔王城堡大厅[inherit][A2 A2-2]
  58.     - 魔王城堡走廊[inherit][B B3]
  59.         魔王城堡房间一[inherit][D D2]
  60.     - 魔王城堡後院[A1 A1-100]
  61.         魔王城堡─谜之间[inherit]
  62.   
  63.   则效果:
  64.   *魔王城堡
  65.       A1: TileA1-2
  66.       B : TileB2
  67.       C : TileC2
  68.   *魔王城堡大厅
  69.       A1: TileA1-2
  70.       A2: TileA2-2
  71.       B : TileB2
  72.       C : TileC2
  73.   *魔王城堡走廊
  74.       A1: TileA1-2
  75.       B : TileB3
  76.       C : TileC2
  77.   *魔王城堡房间一
  78.       A1: TileA1-2
  79.       B : TileB3
  80.       C : TileC2
  81.       D : TileD2
  82.   *魔王城堡後院
  83.       A1: TileA1-100
  84.   *魔王城堡─谜之间
  85.       A1: TileA1-100


  86. 四方向和地形标记需要软体
  87.   下载:http://f44.aaa.livedoor.jp/~ytomy/cgi-bin/dl/dl.php?dl=vxtiletool
  88.   
  89.   说明:与XP相同,就是四方向
  90.   地形标记可以增加到1~99个,不设置的话默认为0
  91.   使用插件软件设置时,用shift + 点击可以将地形标记增加 10
  92.   使用方式请看XP的说明
  93.   
  94.   
  95.   
  96.   地形标记相关脚本:
  97.   get_terrain_tag(x, y[, variable_id])
  98.     返回指定图块的地形标记至指定的变量
  99.       x, y: 指定图块的XY座标
  100.       variable_id:返回值储存位置(变量ID)(可不填)
  101.       
  102.       例如:get_terrain_tag(0, 32, 1)返回座标为(0,32)的地形标记并储存至1号变量
  103.             $game_variable[1] = get_terrain_tag(0, 32) 同上
  104.   
  105.   get_event_terrain_tag(event_id[, variable_id])
  106.     返回指定事件的地形标记至指定的变量
  107.       event_id:指定事件的ID
  108.       variable_id:返回值储存位置(变量ID)(可不填)
  109.       
  110.       例如:get_event_terrain_tag(32, 1)返回32号事件所在的地形标记并储存至1号变量
  111.             $game_variable[1] = get_event_terrain_tag(32) 同上
  112.       
  113.   get_player_terrain_tag[(variable_id)]
  114.     返回玩家角色的地形标记至指定的变量
  115.       variable_id:返回值储存位置(变量ID)(可不填)
  116.       
  117.       例如:get_event_terrain_tag(1)返回玩家角色所在的地形标记并储存至1号变量
  118.             $game_variable[1] = get_event_terrain_tag 同上
  119.       
  120. =end
  121. #==============================================================================
  122. # ★ 自定义項目 - Customize ★
  123. #==============================================================================

  124. module KGC
  125. module TilesetExtension
  126.   # ◆ 图块图像的字首
  127.   #  图块图像名称前方的文字(如 TileA1 中的 Tile)

  128.   TILE_IMAGE_PREFIX = "Tile"

  129.   # ◆ 预设的图块图像
  130.   #  使用[SET <预设组名称>]设定。

  131.   TILE_PRESET = {}  # ← 这行不可删除
  132.   # 预设在下方。
  133.   # ↓范例


  134. # 使用时,在地图名插入[SET 魔王之城]

  135.   # ◆ 4方向通行、地形标记确认的按钮 (DEBUG用)
  136.   #  按下此键之时,就会以对话框的方式显现
  137.   #  当前玩家所在图块的可通行方向和地形标记。
  138.   #  当设定为nil时则关闭此功能
  139.   #   ※ 此功能只有在游戏测试时有效
  140.   DEBUG_INFO_BUTTON = Input::F7
  141. end
  142. end

  143. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  144. $imported = {} if $imported == nil
  145. $imported["TilesetExtension"] = true

  146. if $data_mapinfos == nil
  147.   $data_mapinfos = load_data("Data/MapInfos.rvdata")
  148. end

  149. # 方向通行度 (4方向通行对应)
  150. module DirectionFlag
  151.   DOWN  = 0x01
  152.   LEFT  = 0x02
  153.   RIGHT = 0x04
  154.   UP    = 0x08
  155. end

  156. module KGC::TilesetExtension
  157.   # 扩张时储存的档案名称
  158.   EX_RVDATA = "TilesetEx.rvdata"

  159.   # 正規表現
  160.   module Regexp
  161.     # 継承
  162.     INHERIT = /\[INHERIT\]/i
  163.     # プリセット
  164.     PRESET = /\[SET ([\w\-]+)\]/i
  165.   end

  166.   # デフォルトタイルセットファイル名
  167.   DEFAULT_FILENAME = {
  168.     "A1"=>"TileA1",
  169.     "A2"=>"TileA2",
  170.     "A3"=>"TileA3",
  171.     "A4"=>"TileA4",
  172.     "A5"=>"TileA5",
  173.     "B"=>"TileB",
  174.     "C"=>"TileC",
  175.     "D"=>"TileD",
  176.     "E"=>"TileE"
  177.   }
  178.   @@__filename = DEFAULT_FILENAME.dup

  179.   module_function
  180.   #--------------------------------------------------------------------------
  181.   # ○ 指定マップのタイル画像ファイル名初期化
  182.   #     map_id : マップ ID
  183.   #--------------------------------------------------------------------------
  184.   def init_tileset_filename(map_id)
  185.     @@__filename = get_converted_tileset_filename(map_id)
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ○ 変換後のタイル画像ファイル名を取得
  189.   #     map_id : マップ ID
  190.   #--------------------------------------------------------------------------
  191.   def get_converted_tileset_filename(map_id)
  192.     info = $data_mapinfos[map_id]
  193.     name = info.original_name
  194.     filename = DEFAULT_FILENAME.dup
  195.     if name =~ Regexp::INHERIT
  196.       # 継承する場合は親を調べる
  197.       parent_id = $data_mapinfos[map_id].parent_id
  198.       if parent_id > 0
  199.         filename = get_converted_tileset_filename(parent_id)
  200.       end
  201.     end
  202.     # 現マップの変換規則を適用
  203.     return convert_tileset_filename(filename, name)
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ○ タイル画像ファイル名変換
  207.   #     filename : ファイル名 (Hash)
  208.   #     map_name : マップ名
  209.   #--------------------------------------------------------------------------
  210.   def convert_tileset_filename(filename, map_name)
  211.     name_buf = filename.dup
  212.     # プリセット適用
  213.     presets = map_name.scan(Regexp::PRESET)
  214.     presets.each { |s|
  215.       if TILE_PRESET.has_key?(s[0])
  216.         TILE_PRESET[s[0]].each { |k, v|
  217.           name_buf[k] = TILE_IMAGE_PREFIX + v
  218.         }
  219.       end
  220.     }
  221.     # 置換
  222.     DEFAULT_FILENAME.keys.each { |key|
  223.       if map_name =~ /\[#{key} ([\w\-]+)\]/
  224.         name_buf[key] = TILE_IMAGE_PREFIX + $1
  225.       end
  226.     }
  227.     return name_buf
  228.   end
  229.   #--------------------------------------------------------------------------
  230.   # ○ タイル画像ファイル名取得
  231.   #--------------------------------------------------------------------------
  232.   def get_tileset_filename
  233.     return @@__filename
  234.   end
  235. end

  236. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  237. #==============================================================================
  238. # □ KGC::Commands
  239. #==============================================================================

  240. module KGC::Commands
  241.   module_function
  242.   #--------------------------------------------------------------------------
  243.   # ○ 指定座標の地形タグ取得
  244.   #     x : マップの X 座標
  245.   #     y : マップの Y 座標
  246.   #     variable_id : 取得した地形タグを代入する変数の ID
  247.   #--------------------------------------------------------------------------
  248.   def get_terrain_tag(x, y, variable_id = 0)
  249.     tag = $game_map.terrain_tag(x, y)       # 指定位置のタグを取得
  250.     if variable_id > 0
  251.       $game_variables[variable_id] = tag    # 指定された変数に代入
  252.     end
  253.     return tag
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ○ 指定イベント ID の位置の地形タグ取得
  257.   #     event_id : イベント ID
  258.   #     variable_id : 取得した地形タグを代入する変数の ID
  259.   #--------------------------------------------------------------------------
  260.   def get_event_terrain_tag(event_id, variable_id = 0)
  261.     event = $game_map.events.values.find { |e| e.id == event_id }
  262.     if event == nil
  263.       # 該当するイベントが無ければ 0
  264.       tag = 0
  265.     else
  266.       tag = $game_map.terrain_tag(event.x, event.y)
  267.     end

  268.     # 指定された変数に代入
  269.     if variable_id > 0
  270.       $game_variables[variable_id] = tag
  271.     end
  272.     return tag
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # ○ プレイヤーの位置の地形タグ取得
  276.   #     variable_id : 取得した地形タグを代入する変数の ID
  277.   #--------------------------------------------------------------------------
  278.   def get_player_terrain_tag(variable_id = 0)
  279.     tag = $game_map.terrain_tag($game_player.x, $game_player.y)

  280.     # 指定された変数に代入
  281.     if variable_id > 0
  282.       $game_variables[variable_id] = tag
  283.     end
  284.     return tag
  285.   end
  286. end

  287. class Game_Interpreter
  288.   include KGC::Commands
  289. end

  290. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  291. #==============================================================================
  292. # ■ RPG::MapInfo
  293. #==============================================================================

  294. class RPG::MapInfo
  295.   #--------------------------------------------------------------------------
  296.   # ● マップ名取得
  297.   #--------------------------------------------------------------------------
  298.   def name
  299.     return @name.gsub(/\[.*\]/) { "" }
  300.   end
  301.   #--------------------------------------------------------------------------
  302.   # ○ オリジナルマップ名取得
  303.   #--------------------------------------------------------------------------
  304.   def original_name
  305.     return @name
  306.   end
  307. end

  308. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  309. #==============================================================================
  310. # □ RPG::Tileset
  311. #------------------------------------------------------------------------------
  312. #   タイルセットの付加的情報を扱うクラスです。
  313. #==============================================================================

  314. class RPG::Tileset
  315.   #--------------------------------------------------------------------------
  316.   # ○ 定数
  317.   #--------------------------------------------------------------------------
  318.   TABLE_SIZE = 8192                       # 通行・地形タグテーブルのサイズ
  319.   #--------------------------------------------------------------------------
  320.   # ○ 公開インスタンス変数
  321.   #--------------------------------------------------------------------------
  322.   attr_accessor :version                  # 内部バージョン
  323.   attr_accessor :passages                 # 4 方向通行フラグ
  324.   attr_accessor :terrain_tags             # 地形タグ
  325.   #--------------------------------------------------------------------------
  326.   # ○ オブジェクト初期化
  327.   #--------------------------------------------------------------------------
  328.   def initialize
  329.     @version = 1
  330.     @passages = Table.new(TABLE_SIZE)
  331.     @terrain_tags = Table.new(TABLE_SIZE)
  332.   end
  333. end

  334. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  335. #==============================================================================
  336. # ■ Game_Map
  337. #==============================================================================

  338. class Game_Map
  339.   LAYERS = [2, 1, 0]
  340.   #--------------------------------------------------------------------------
  341.   # ● セットアップ
  342.   #     map_id : マップ ID
  343.   #--------------------------------------------------------------------------
  344.   alias setup_KGC_TilesetExtension setup
  345.   def setup(map_id)
  346.     # タイルセット画像ファイル名を初期化
  347.     KGC::TilesetExtension.init_tileset_filename(map_id)

  348.     setup_KGC_TilesetExtension(map_id)
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ○ 指定座標の通行フラグ取得
  352.   #     x : X 座標
  353.   #     y : Y 座標
  354.   #--------------------------------------------------------------------------
  355.   def passage(x, y)
  356.     LAYERS.each { |i|
  357.       tile_id = @map.data[x, y, i]
  358.       return 0 if tile_id == nil
  359.       return $data_tileset.passages[tile_id]
  360.     }
  361.     return 0
  362.   end
  363.   #--------------------------------------------------------------------------
  364.   # ○ 指定座標の地形タグ取得
  365.   #     x : X 座標
  366.   #     y : Y 座標
  367.   #--------------------------------------------------------------------------
  368.   def terrain_tag(x, y)
  369.     LAYERS.each { |i|
  370.       tile_id = @map.data[x, y, i]               # タイル ID を取得
  371.       return 0 if tile_id == nil                 # タイル ID 取得失敗 : タグなし
  372.       tag = $data_tileset.terrain_tags[tile_id]  # 地形タグを取得
  373.       return tag if tag > 0                      # タグが設定してあれば返す
  374.     }
  375.     return 0
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ○ 指定方向通行可能判定
  379.   #     x : X 座標
  380.   #     y : Y 座標
  381.   #     d : 移動方向
  382.   #--------------------------------------------------------------------------
  383.   def passable_dir?(x, y, d)
  384.     # 方向 (0,2,4,6,8,10) から 通行フラグ (0,1,2,4,8,0) に変換
  385.     flag = (1 << (d / 2 - 1)) & 0x0F

  386.     LAYERS.each { |i|                         # レイヤーの上から順に調べる
  387.       tile_id = @map.data[x, y, i]            # タイル ID を取得
  388.       return false if tile_id == nil          # タイル ID 取得失敗 : 通行不可
  389.       pass = $data_tileset.passages[tile_id]  # タイルセットの通行属性を取得
  390.       return false if pass & flag != 0x00     # フラグが立っていたら通行不可
  391.     }
  392.     return true
  393.   end
  394. end

  395. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  396. #==============================================================================
  397. # ■ Game_Character
  398. #==============================================================================

  399. class Game_Character
  400.   #--------------------------------------------------------------------------
  401.   # ○ 通行可能判定
  402.   #     x : X 座標
  403.   #     y : Y 座標
  404.   #     d : 移動方向 (省略時: 10)
  405.   #--------------------------------------------------------------------------
  406.   def passable?(x, y, d = 10)
  407.     nx = moved_x(x, d)
  408.     ny = moved_y(y, d)
  409.     nx = $game_map.round_x(nx)                         # 横方向ループ補正
  410.     ny = $game_map.round_y(ny)                         # 縦方向ループ補正
  411.     return false unless $game_map.valid?(nx, ny)       # マップ外?
  412.     return true if @through or debug_through?          # すり抜け ON?
  413.     return false unless map_passable?(x, y, d)         # 指定方向に移動不能?
  414.     return false unless map_passable?(nx, ny, 10 - d)  # 移動先が進入不能?
  415.     return false if collide_with_characters?(nx, ny)   # キャラクターに衝突?
  416.     return true                                        # 通行可
  417.   end
  418.   #--------------------------------------------------------------------------
  419.   # ○ 移動後の X 座標算出
  420.   #     x : X 座標
  421.   #     d : 移動方向
  422.   #    移動後の X 座標を計算する。
  423.   #--------------------------------------------------------------------------
  424.   def moved_x(x, d)
  425.     return x + (d == 6 ? 1 : d == 4 ? -1 : 0)
  426.   end
  427.   #--------------------------------------------------------------------------
  428.   # ○ 移動後の Y 座標算出
  429.   #     y : Y 座標
  430.   #     d : 移動方向
  431.   #    移動後の Y 座標を計算する。
  432.   #--------------------------------------------------------------------------
  433.   def moved_y(y, d)
  434.     return y + (d == 2 ? 1 : d == 8 ? -1 : 0)
  435.   end
  436.   #--------------------------------------------------------------------------
  437.   # ○ マップ通行可能判定
  438.   #     x : X 座標
  439.   #     y : Y 座標
  440.   #     d : 移動方向
  441.   #    指定座標の指定した方向が通行可能かを取得する。
  442.   #--------------------------------------------------------------------------
  443.   def map_passable?(x, y, d)
  444.     return $game_map.passable?(x, y) && $game_map.passable_dir?(x, y, d)
  445.   end
  446.   #--------------------------------------------------------------------------
  447.   # ● 下に移動
  448.   #     turn_ok : その場での向き変更を許可
  449.   #--------------------------------------------------------------------------
  450.   def move_down(turn_ok = true)
  451.     if passable?(@x, @y, 2)                 # 通行可能
  452.       turn_down
  453.       @y = $game_map.round_y(@y+1)
  454.       @real_y = (@y-1)*256
  455.       increase_steps
  456.       @move_failed = false
  457.     else                                    # 通行不可能
  458.       turn_down if turn_ok
  459.       check_event_trigger_touch(@x, @y+1)   # 接触イベントの起動判定
  460.       @move_failed = true
  461.     end
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # ● 左に移動
  465.   #     turn_ok : その場での向き変更を許可
  466.   #--------------------------------------------------------------------------
  467.   def move_left(turn_ok = true)
  468.     if passable?(@x, @y, 4)                 # 通行可能
  469.       turn_left
  470.       @x = $game_map.round_x(@x-1)
  471.       @real_x = (@x+1)*256
  472.       increase_steps
  473.       @move_failed = false
  474.     else                                    # 通行不可能
  475.       turn_left if turn_ok
  476.       check_event_trigger_touch(@x-1, @y)   # 接触イベントの起動判定
  477.       @move_failed = true
  478.     end
  479.   end
  480.   #--------------------------------------------------------------------------
  481.   # ● 右に移動
  482.   #     turn_ok : その場での向き変更を許可
  483.   #--------------------------------------------------------------------------
  484.   def move_right(turn_ok = true)
  485.     if passable?(@x, @y, 6)                 # 通行可能
  486.       turn_right
  487.       @x = $game_map.round_x(@x+1)
  488.       @real_x = (@x-1)*256
  489.       increase_steps
  490.       @move_failed = false
  491.     else                                    # 通行不可能
  492.       turn_right if turn_ok
  493.       check_event_trigger_touch(@x+1, @y)   # 接触イベントの起動判定
  494.       @move_failed = true
  495.     end
  496.   end
  497.   #--------------------------------------------------------------------------
  498.   # ● 上に移動
  499.   #     turn_ok : その場での向き変更を許可
  500.   #--------------------------------------------------------------------------
  501.   def move_up(turn_ok = true)
  502.     if passable?(@x, @y, 8)                 # 通行可能
  503.       turn_up
  504.       @y = $game_map.round_y(@y-1)
  505.       @real_y = (@y+1)*256
  506.       increase_steps
  507.       @move_failed = false
  508.     else                                    # 通行不可能
  509.       turn_up if turn_ok
  510.       check_event_trigger_touch(@x, @y-1)   # 接触イベントの起動判定
  511.       @move_failed = true
  512.     end
  513.   end
  514.   #--------------------------------------------------------------------------
  515.   # ● 左下に移動
  516.   #--------------------------------------------------------------------------
  517.   def move_lower_left
  518.     unless @direction_fix
  519.       @direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
  520.     end
  521.     if (passable?(@x, @y, 2) && passable?(@x, @y+1, 4)) ||
  522.        (passable?(@x, @y, 4) && passable?(@x-1, @y, 2))
  523.       @x -= 1
  524.       @y += 1
  525.       increase_steps
  526.       @move_failed = false
  527.     else
  528.       @move_failed = true
  529.     end
  530.   end
  531.   #--------------------------------------------------------------------------
  532.   # ● 右下に移動
  533.   #--------------------------------------------------------------------------
  534.   def move_lower_right
  535.     unless @direction_fix
  536.       @direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
  537.     end
  538.     if (passable?(@x, @y, 2) && passable?(@x, @y+1, 6)) ||
  539.        (passable?(@x, @y, 6) && passable?(@x+1, @y, 2))
  540.       @x += 1
  541.       @y += 1
  542.       increase_steps
  543.       @move_failed = false
  544.     else
  545.       @move_failed = true
  546.     end
  547.   end
  548.   #--------------------------------------------------------------------------
  549.   # ● 左上に移動
  550.   #--------------------------------------------------------------------------
  551.   def move_upper_left
  552.     unless @direction_fix
  553.       @direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
  554.     end
  555.     if (passable?(@x, @y, 8) && passable?(@x, @y-1, 4)) ||
  556.        (passable?(@x, @y, 4) && passable?(@x-1, @y, 8))
  557.       @x -= 1
  558.       @y -= 1
  559.       increase_steps
  560.       @move_failed = false
  561.     else
  562.       @move_failed = true
  563.     end
  564.   end
  565.   #--------------------------------------------------------------------------
  566.   # ● 右上に移動
  567.   #--------------------------------------------------------------------------
  568.   def move_upper_right
  569.     unless @direction_fix
  570.       @direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
  571.     end
  572.     if (passable?(@x, @y, 8) && passable?(@x, @y-1, 6)) ||
  573.        (passable?(@x, @y, 6) && passable?(@x+1, @y, 8))
  574.       @x += 1
  575.       @y -= 1
  576.       increase_steps
  577.       @move_failed = false
  578.     else
  579.       @move_failed = true
  580.     end
  581.   end
  582. end

  583. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  584. #==============================================================================
  585. # ■ Game_Player
  586. #==============================================================================

  587. class Game_Player < Game_Character
  588.   #--------------------------------------------------------------------------
  589.   # ○ マップ通行可能判定
  590.   #     x : X 座標
  591.   #     y : Y 座標
  592.   #     d : 移動方向
  593.   #    指定座標の指定した方向が通行可能かを取得する。
  594.   #--------------------------------------------------------------------------
  595.   alias map_passable_KGC_TilesetExtension? map_passable?
  596.   def map_passable?(x, y, d)
  597.     return false unless map_passable_KGC_TilesetExtension?(x, y)

  598.     return $game_map.passable_dir?(x, y, d)
  599.   end

  600.   if $TEST && KGC::TilesetExtension::DEBUG_INFO_BUTTON != nil
  601.   #--------------------------------------------------------------------------
  602.   # ● フレーム更新
  603.   #--------------------------------------------------------------------------
  604.   alias update_KGC_TilesetExtension update
  605.   def update
  606.     update_KGC_TilesetExtension

  607.     if Input.trigger?(KGC::TilesetExtension::DEBUG_INFO_BUTTON)
  608.       show_passage_and_terrain_tag
  609.     end
  610.   end
  611.   #--------------------------------------------------------------------------
  612.   # ○ プレイヤー位置の通行フラグ・地形タグを表示
  613.   #--------------------------------------------------------------------------
  614.   def show_passage_and_terrain_tag
  615.     passage = $game_map.passage(x, y)
  616.     tag = $game_map.terrain_tag(x, y)

  617.     # デバッグ情報作成
  618.     s = "通行可能: "
  619.     s += "↓" if passage & DirectionFlag::DOWN  == 0x00
  620.     s += "←" if passage & DirectionFlag::LEFT  == 0x00
  621.     s += "→" if passage & DirectionFlag::RIGHT == 0x00
  622.     s += "↑" if passage & DirectionFlag::UP    == 0x00
  623.     s += "  地形标记: #{tag}"

  624.     p s
  625.   end
  626.   end

  627. end

  628. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  629. #==============================================================================
  630. # ■ Sprite_Character
  631. #==============================================================================

  632. class Sprite_Character < Sprite_Base
  633.   #--------------------------------------------------------------------------
  634.   # ● 指定されたタイルが含まれるタイルセット画像の取得
  635.   #     tile_id : タイル ID
  636.   #--------------------------------------------------------------------------
  637.   def tileset_bitmap(tile_id)
  638.     filename = KGC::TilesetExtension.get_tileset_filename
  639.     set_number = tile_id / 256
  640.     return Cache.system(filename["B"]) if set_number == 0
  641.     return Cache.system(filename["C"]) if set_number == 1
  642.     return Cache.system(filename["D"]) if set_number == 2
  643.     return Cache.system(filename["E"]) if set_number == 3
  644.     return nil
  645.   end
  646. end

  647. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  648. #==============================================================================
  649. # ■ Spriteset_Map
  650. #==============================================================================

  651. class Spriteset_Map
  652.   #--------------------------------------------------------------------------
  653.   # ● タイルマップの作成
  654.   #--------------------------------------------------------------------------
  655.   def create_tilemap
  656.     filename = KGC::TilesetExtension.get_tileset_filename
  657.     @tilemap = Tilemap.new(@viewport1)
  658.     @tilemap.bitmaps[0] = Cache.system(filename["A1"])
  659.     @tilemap.bitmaps[1] = Cache.system(filename["A2"])
  660.     @tilemap.bitmaps[2] = Cache.system(filename["A3"])
  661.     @tilemap.bitmaps[3] = Cache.system(filename["A4"])
  662.     @tilemap.bitmaps[4] = Cache.system(filename["A5"])
  663.     @tilemap.bitmaps[5] = Cache.system(filename["B"])
  664.     @tilemap.bitmaps[6] = Cache.system(filename["C"])
  665.     @tilemap.bitmaps[7] = Cache.system(filename["D"])
  666.     @tilemap.bitmaps[8] = Cache.system(filename["E"])
  667.     @tilemap.map_data = $game_map.data
  668.     @tilemap.passages = $game_map.passages
  669.   end
  670. end

  671. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  672. #==============================================================================
  673. # ■ Scene_Title
  674. #==============================================================================

  675. class Scene_Title < Scene_Base
  676.   #--------------------------------------------------------------------------
  677.   # ● データベースのロード
  678.   #--------------------------------------------------------------------------
  679.   alias load_database_KGC_TilesetExtension load_database
  680.   def load_database
  681.     load_database_KGC_TilesetExtension

  682.     load_tileset
  683.   end
  684.   #--------------------------------------------------------------------------
  685.   # ○ タイルセット付加情報のロード
  686.   #--------------------------------------------------------------------------
  687.   def load_tileset
  688.     begin
  689.       $data_tileset = load_data("Data/#{KGC::TilesetExtension::EX_RVDATA}")
  690.     rescue
  691.       $data_tileset = RPG::Tileset.new
  692.     end
  693.   end
  694. end
复制代码

作者: DeoxysUser    时间: 2014-1-31 09:07
抠脚大妈 发表于 2014-1-30 17:29
楼上几位太屌了,放脚本,里面有注释,怎么用应该看得懂

非常感谢!!!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1