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

Project1

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

[已经过期] 素材界面不够用啊

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2013-12-12
帖子
12
跳转到指定楼层
1
发表于 2013-12-27 01:58:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
地图素材导入只有ABCDE啊 有没有可能扩张到FGH。。。等等啊 完全不够用啊 每次换来换去好麻烦啊

Lv1.梦旅人

梦石
0
星屑
196
在线时间
835 小时
注册时间
2012-9-16
帖子
1811
2
发表于 2013-12-27 06:53:03 | 只看该作者
不够么。。。用图块扩张脚本或悬赏10VIP以上球人帮忙改下Vx这个软件吧。话说你用的是mack还是vs图块?应该是充足的啊

——旧坑欢迎戳
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
182 小时
注册时间
2009-4-22
帖子
208
3
发表于 2013-12-30 13:58:32 | 只看该作者
  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.   TILE_PRESET["北方王城"] = {
  135.     "A1"=>"A1",
  136.     "A2"=>"A2",
  137. #~     "A4"=>"A4_0",
  138. #~    "B"=>"B_9",
  139.     "D"=>"D",
  140. #~      "E"=>"E_5",
  141.   }

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

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

  151. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  152. $imported = {} if $imported == nil
  153. $imported["TilesetExtension"] = true

  154. if $data_mapinfos == nil
  155.   $data_mapinfos = load_data("Data/MapInfos.rvdata")
  156. end

  157. # 方向通行度 (4方向通行对应)
  158. module DirectionFlag
  159.   DOWN  = 0x01
  160.   LEFT  = 0x02
  161.   RIGHT = 0x04
  162.   UP    = 0x08
  163. end

  164. module KGC::TilesetExtension
  165.   # 扩张时储存的档案名称
  166.   EX_RVDATA = "TilesetEx.rvdata"

  167.   # 正規表現
  168.   module Regexp
  169.     # 継承
  170.     INHERIT = /\[INHERIT\]/i
  171.     # プリセット
  172.     PRESET = /\[SET ([\w\-]+)\]/i
  173.   end

  174.   # デフォルトタイルセットファイル名
  175.   DEFAULT_FILENAME = {
  176.     "A1"=>"TileA1",
  177.     "A2"=>"TileA2",
  178.     "A3"=>"TileA3",
  179.     "A4"=>"TileA4",
  180.     "A5"=>"TileA5",
  181.     "B"=>"TileB",
  182.     "C"=>"TileC",
  183.     "D"=>"TileD",
  184.     "E"=>"TileE"
  185.   }
  186.   @@__filename = DEFAULT_FILENAME.dup

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

  244. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  245. #==============================================================================
  246. # □ KGC::Commands
  247. #==============================================================================

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

  276.     # 指定された変数に代入
  277.     if variable_id > 0
  278.       $game_variables[variable_id] = tag
  279.     end
  280.     return tag
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ○ プレイヤーの位置の地形タグ取得
  284.   #     variable_id : 取得した地形タグを代入する変数の ID
  285.   #--------------------------------------------------------------------------
  286.   def get_player_terrain_tag(variable_id = 0)
  287.     tag = $game_map.terrain_tag($game_player.x, $game_player.y)

  288.     # 指定された変数に代入
  289.     if variable_id > 0
  290.       $game_variables[variable_id] = tag
  291.     end
  292.     return tag
  293.   end
  294. end

  295. class Game_Interpreter
  296.   include KGC::Commands
  297. end

  298. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  299. #==============================================================================
  300. # ■ RPG::MapInfo
  301. #==============================================================================

  302. class RPG::MapInfo
  303.   #--------------------------------------------------------------------------
  304.   # ● マップ名取得
  305.   #--------------------------------------------------------------------------
  306.   def name
  307.     return @name.gsub(/\[.*\]/) { "" }
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ○ オリジナルマップ名取得
  311.   #--------------------------------------------------------------------------
  312.   def original_name
  313.     return @name
  314.   end
  315. end

  316. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  317. #==============================================================================
  318. # □ RPG::Tileset
  319. #------------------------------------------------------------------------------
  320. #   タイルセットの付加的情報を扱うクラスです。
  321. #==============================================================================

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

  342. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  343. #==============================================================================
  344. # ■ Game_Map
  345. #==============================================================================

  346. class Game_Map
  347.   LAYERS = [2, 1, 0]
  348.   #--------------------------------------------------------------------------
  349.   # ● セットアップ
  350.   #     map_id : マップ ID
  351.   #--------------------------------------------------------------------------
  352.   alias setup_KGC_TilesetExtension setup
  353.   def setup(map_id)
  354.     # タイルセット画像ファイル名を初期化
  355.     KGC::TilesetExtension.init_tileset_filename(map_id)

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

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

  403. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  404. #==============================================================================
  405. # ■ Game_Character
  406. #==============================================================================

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

  591. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  592. #==============================================================================
  593. # ■ Game_Player
  594. #==============================================================================

  595. class Game_Player < Game_Character
  596.   #--------------------------------------------------------------------------
  597.   # ○ マップ通行可能判定
  598.   #     x : X 座標
  599.   #     y : Y 座標
  600.   #     d : 移動方向
  601.   #    指定座標の指定した方向が通行可能かを取得する。
  602.   #--------------------------------------------------------------------------
  603.   alias map_passable_KGC_TilesetExtension? map_passable?
  604.   def map_passable?(x, y, d)
  605.     return false unless map_passable_KGC_TilesetExtension?(x, y)

  606.     return $game_map.passable_dir?(x, y, d)
  607.   end

  608.   if $TEST && KGC::TilesetExtension::DEBUG_INFO_BUTTON != nil
  609.   #--------------------------------------------------------------------------
  610.   # ● フレーム更新
  611.   #--------------------------------------------------------------------------
  612.   alias update_KGC_TilesetExtension update
  613.   def update
  614.     update_KGC_TilesetExtension

  615.     if Input.trigger?(KGC::TilesetExtension::DEBUG_INFO_BUTTON)
  616.       show_passage_and_terrain_tag
  617.     end
  618.   end
  619.   #--------------------------------------------------------------------------
  620.   # ○ プレイヤー位置の通行フラグ・地形タグを表示
  621.   #--------------------------------------------------------------------------
  622.   def show_passage_and_terrain_tag
  623.     passage = $game_map.passage(x, y)
  624.     tag = $game_map.terrain_tag(x, y)

  625.     # デバッグ情報作成
  626.     s = "通行可能: "
  627.     s += "↓" if passage & DirectionFlag::DOWN  == 0x00
  628.     s += "←" if passage & DirectionFlag::LEFT  == 0x00
  629.     s += "→" if passage & DirectionFlag::RIGHT == 0x00
  630.     s += "↑" if passage & DirectionFlag::UP    == 0x00
  631.     s += "  地形标记: #{tag}"

  632.     p s
  633.   end
  634.   end

  635. end

  636. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  637. #==============================================================================
  638. # ■ Sprite_Character
  639. #==============================================================================

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

  655. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  656. #==============================================================================
  657. # ■ Spriteset_Map
  658. #==============================================================================

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

  679. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  680. #==============================================================================
  681. # ■ Scene_Title
  682. #==============================================================================

  683. class Scene_Title < Scene_Base
  684.   #--------------------------------------------------------------------------
  685.   # ● データベースのロード
  686.   #--------------------------------------------------------------------------
  687.   alias load_database_KGC_TilesetExtension load_database
  688.   def load_database
  689.     load_database_KGC_TilesetExtension

  690.     load_tileset
  691.   end
  692.   #--------------------------------------------------------------------------
  693.   # ○ タイルセット付加情報のロード
  694.   #--------------------------------------------------------------------------
  695.   def load_tileset
  696.     begin
  697.       $data_tileset = load_data("Data/#{KGC::TilesetExtension::EX_RVDATA}")
  698.     rescue
  699.       $data_tileset = RPG::Tileset.new
  700.     end
  701.   end
  702. end
复制代码
附上图块扩张脚本
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-1 09:24

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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