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

Project1

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

[RMVX发布] VX图块加强(汉化)

 关闭 [复制链接]

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

跳转到指定楼层
1
发表于 2008-2-25 20:25:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这个脚本neneko曾经在论坛上转载过
       VX四方通行和地形标签设置工具
不过是未汉化版的,而且说明也不完全

这是汉化版的:
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 图块扩张 - KGC_TilesetExtension ◆ VX ◆
  3. #_/    ◇ Last update : 2008/01/20 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/       变更图块图像、增加4方向通行、地形标记功能。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  7. #==============================================================================
  8. # ★ 自定义項目 - Customize ★
  9. #==============================================================================

  10. module KGC
  11. module TilesetExtension
  12.   # ◆ 图块图像的字首
  13.   #  图块图像名称前方的文字(如 TileA1 中的 Tile)

  14.   TILE_IMAGE_PREFIX = "Tile"

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

  17.   TILE_PRESET = {}  # ← 这行不可删除
  18.   # 预设在下方。
  19.   # ↓范例
  20.   TILE_PRESET["魔王之城"] = {
  21.     "A1"=>"A1-Maou",
  22.     "A2"=>"A2-Maou",
  23.     "B"=>"B-Maou",
  24.     "D"=>"D-Maou",
  25.   }
  26.   # 使用时,在地图名插入[SET 魔王之城]

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

  35. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  36. $imported = {} if $imported == nil
  37. $imported["TilesetExtension"] = true

  38. if $data_mapinfos == nil
  39.   $data_mapinfos = load_data("Data/MapInfos.rvdata")
  40. end

  41. # 方向通行度 (4方向通行对应)
  42. module DirectionFlag
  43.   DOWN  = 0x01
  44.   LEFT  = 0x02
  45.   RIGHT = 0x04
  46.   UP    = 0x08
  47. end

  48. module KGC::TilesetExtension
  49.   # 扩张时储存的档案名称
  50.   EX_RVDATA = "TilesetEx.rvdata"

  51.   # 正規表現
  52.   module Regexp
  53.     # 継承
  54.     INHERIT = /\[INHERIT\]/i
  55.     # プリセット
  56.     PRESET = /\[SET ([\w\-]+)\]/i
  57.   end

  58.   # デフォルトタイルセットファイル名
  59.   DEFAULT_FILENAME = {
  60.     "A1"=>"TileA1",
  61.     "A2"=>"TileA2",
  62.     "A3"=>"TileA3",
  63.     "A4"=>"TileA4",
  64.     "A5"=>"TileA5",
  65.     "B"=>"TileB",
  66.     "C"=>"TileC",
  67.     "D"=>"TileD",
  68.     "E"=>"TileE"
  69.   }
  70.   @@__filename = DEFAULT_FILENAME.dup

  71.   module_function
  72.   #--------------------------------------------------------------------------
  73.   # ○ 指定マップのタイル画像ファイル名初期化
  74.   #     map_id : マップ ID
  75.   #--------------------------------------------------------------------------
  76.   def init_tileset_filename(map_id)
  77.     @@__filename = get_converted_tileset_filename(map_id)
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ○ 変換後のタイル画像ファイル名を取得
  81.   #     map_id : マップ ID
  82.   #--------------------------------------------------------------------------
  83.   def get_converted_tileset_filename(map_id)
  84.     info = $data_mapinfos[map_id]
  85.     name = info.original_name
  86.     filename = DEFAULT_FILENAME.dup
  87.     if name =~ Regexp::INHERIT
  88.       # 継承する場合は親を調べる
  89.       parent_id = $data_mapinfos[map_id].parent_id
  90.       if parent_id > 0
  91.         filename = get_converted_tileset_filename(parent_id)
  92.       end
  93.     end
  94.     # 現マップの変換規則を適用
  95.     return convert_tileset_filename(filename, name)
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ○ タイル画像ファイル名変換
  99.   #     filename : ファイル名 (Hash)
  100.   #     map_name : マップ名
  101.   #--------------------------------------------------------------------------
  102.   def convert_tileset_filename(filename, map_name)
  103.     name_buf = filename.dup
  104.     # プリセット適用
  105.     presets = map_name.scan(Regexp::PRESET)
  106.     presets.each { |s|
  107.       if TILE_PRESET.has_key?(s[0])
  108.         TILE_PRESET[s[0]].each { |k, v|
  109.           name_buf[k] = TILE_IMAGE_PREFIX + v
  110.         }
  111.       end
  112.     }
  113.     # 置換
  114.     DEFAULT_FILENAME.keys.each { |key|
  115.       if map_name =~ /\[#{key} ([\w\-]+)\]/
  116.         name_buf[key] = TILE_IMAGE_PREFIX + $1
  117.       end
  118.     }
  119.     return name_buf
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ○ タイル画像ファイル名取得
  123.   #--------------------------------------------------------------------------
  124.   def get_tileset_filename
  125.     return @@__filename
  126.   end
  127. end

  128. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  129. #==============================================================================
  130. # □ KGC::Commands
  131. #==============================================================================

  132. module KGC::Commands
  133.   module_function
  134.   #--------------------------------------------------------------------------
  135.   # ○ 指定座標の地形タグ取得
  136.   #     x : マップの X 座標
  137.   #     y : マップの Y 座標
  138.   #     variable_id : 取得した地形タグを代入する変数の ID
  139.   #--------------------------------------------------------------------------
  140.   def get_terrain_tag(x, y, variable_id = 0)
  141.     tag = $game_map.terrain_tag(x, y)       # 指定位置のタグを取得
  142.     if variable_id > 0
  143.       $game_variables[variable_id] = tag    # 指定された変数に代入
  144.     end
  145.     return tag
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ○ 指定イベント ID の位置の地形タグ取得
  149.   #     event_id : イベント ID
  150.   #     variable_id : 取得した地形タグを代入する変数の ID
  151.   #--------------------------------------------------------------------------
  152.   def get_event_terrain_tag(event_id, variable_id = 0)
  153.     event = $game_map.events.values.find { |e| e.id == event_id }
  154.     if event == nil
  155.       # 該当するイベントが無ければ 0
  156.       tag = 0
  157.     else
  158.       tag = $game_map.terrain_tag(event.x, event.y)
  159.     end

  160.     # 指定された変数に代入
  161.     if variable_id > 0
  162.       $game_variables[variable_id] = tag
  163.     end
  164.     return tag
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ○ プレイヤーの位置の地形タグ取得
  168.   #     variable_id : 取得した地形タグを代入する変数の ID
  169.   #--------------------------------------------------------------------------
  170.   def get_player_terrain_tag(variable_id = 0)
  171.     tag = $game_map.terrain_tag($game_player.x, $game_player.y)

  172.     # 指定された変数に代入
  173.     if variable_id > 0
  174.       $game_variables[variable_id] = tag
  175.     end
  176.     return tag
  177.   end
  178. end

  179. class Game_Interpreter
  180.   include KGC::Commands
  181. end

  182. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  183. #==============================================================================
  184. # ■ RPG::MapInfo
  185. #==============================================================================

  186. class RPG::MapInfo
  187.   #--------------------------------------------------------------------------
  188.   # ● マップ名取得
  189.   #--------------------------------------------------------------------------
  190.   def name
  191.     return @name.gsub(/\[.*\]/) { "" }
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ○ オリジナルマップ名取得
  195.   #--------------------------------------------------------------------------
  196.   def original_name
  197.     return @name
  198.   end
  199. end

  200. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  201. #==============================================================================
  202. # □ RPG::Tileset
  203. #------------------------------------------------------------------------------
  204. #   タイルセットの付加的情報を扱うクラスです。
  205. #==============================================================================

  206. class RPG::Tileset
  207.   #--------------------------------------------------------------------------
  208.   # ○ 定数
  209.   #--------------------------------------------------------------------------
  210.   TABLE_SIZE = 8192                       # 通行・地形タグテーブルのサイズ
  211.   #--------------------------------------------------------------------------
  212.   # ○ 公開インスタンス変数
  213.   #--------------------------------------------------------------------------
  214.   attr_accessor :version                  # 内部バージョン
  215.   attr_accessor :passages                 # 4 方向通行フラグ
  216.   attr_accessor :terrain_tags             # 地形タグ
  217.   #--------------------------------------------------------------------------
  218.   # ○ オブジェクト初期化
  219.   #--------------------------------------------------------------------------
  220.   def initialize
  221.     @version = 1
  222.     @passages = Table.new(TABLE_SIZE)
  223.     @terrain_tags = Table.new(TABLE_SIZE)
  224.   end
  225. end

  226. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  227. #==============================================================================
  228. # ■ Game_Map
  229. #==============================================================================

  230. class Game_Map
  231.   LAYERS = [2, 1, 0]
  232.   #--------------------------------------------------------------------------
  233.   # ● セットアップ
  234.   #     map_id : マップ ID
  235.   #--------------------------------------------------------------------------
  236.   alias setup_KGC_TilesetExtension setup
  237.   def setup(map_id)
  238.     # タイルセット画像ファイル名を初期化
  239.     KGC::TilesetExtension.init_tileset_filename(map_id)

  240.     setup_KGC_TilesetExtension(map_id)
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ○ 指定座標の通行フラグ取得
  244.   #     x : X 座標
  245.   #     y : Y 座標
  246.   #--------------------------------------------------------------------------
  247.   def passage(x, y)
  248.     LAYERS.each { |i|
  249.       tile_id = @map.data[x, y, i]
  250.       return 0 if tile_id == nil
  251.       return $data_tileset.passages[tile_id]
  252.     }
  253.     return 0
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ○ 指定座標の地形タグ取得
  257.   #     x : X 座標
  258.   #     y : Y 座標
  259.   #--------------------------------------------------------------------------
  260.   def terrain_tag(x, y)
  261.     LAYERS.each { |i|
  262.       tile_id = @map.data[x, y, i]               # タイル ID を取得
  263.       return 0 if tile_id == nil                 # タイル ID 取得失敗 : タグなし
  264.       tag = $data_tileset.terrain_tags[tile_id]  # 地形タグを取得
  265.       return tag if tag > 0                      # タグが設定してあれば返す
  266.     }
  267.     return 0
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # ○ 指定方向通行可能判定
  271.   #     x : X 座標
  272.   #     y : Y 座標
  273.   #     d : 移動方向
  274.   #--------------------------------------------------------------------------
  275.   def passable_dir?(x, y, d)
  276.     # 方向 (0,2,4,6,8,10) から 通行フラグ (0,1,2,4,8,0) に変換
  277.     flag = (1 << (d / 2 - 1)) & 0x0F

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

  287. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  288. #==============================================================================
  289. # ■ Game_Character
  290. #==============================================================================

  291. class Game_Character
  292.   #--------------------------------------------------------------------------
  293.   # ○ 通行可能判定
  294.   #     x : X 座標
  295.   #     y : Y 座標
  296.   #     d : 移動方向 (省略時: 10)
  297.   #--------------------------------------------------------------------------
  298.   def passable?(x, y, d = 10)
  299.     nx = moved_x(x, d)
  300.     ny = moved_y(y, d)
  301.     nx = $game_map.round_x(nx)                         # 横方向ループ補正
  302.     ny = $game_map.round_y(ny)                         # 縦方向ループ補正
  303.     return false unless $game_map.valid?(nx, ny)       # マップ外?
  304.     return true if @through or debug_through?          # すり抜け ON?
  305.     return false unless map_passable?(x, y, d)         # 指定方向に移動不能?
  306.     return false unless map_passable?(nx, ny, 10 - d)  # 移動先が進入不能?
  307.     return false if collide_with_characters?(nx, ny)   # キャラクターに衝突?
  308.     return true                                        # 通行可
  309.   end
  310.   #--------------------------------------------------------------------------
  311.   # ○ 移動後の X 座標算出
  312.   #     x : X 座標
  313.   #     d : 移動方向
  314.   #    移動後の X 座標を計算する。
  315.   #--------------------------------------------------------------------------
  316.   def moved_x(x, d)
  317.     return x + (d == 6 ? 1 : d == 4 ? -1 : 0)
  318.   end
  319.   #--------------------------------------------------------------------------
  320.   # ○ 移動後の Y 座標算出
  321.   #     y : Y 座標
  322.   #     d : 移動方向
  323.   #    移動後の Y 座標を計算する。
  324.   #--------------------------------------------------------------------------
  325.   def moved_y(y, d)
  326.     return y + (d == 2 ? 1 : d == 8 ? -1 : 0)
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ○ マップ通行可能判定
  330.   #     x : X 座標
  331.   #     y : Y 座標
  332.   #     d : 移動方向
  333.   #    指定座標の指定した方向が通行可能かを取得する。
  334.   #--------------------------------------------------------------------------
  335.   def map_passable?(x, y, d)
  336.     return $game_map.passable?(x, y) && $game_map.passable_dir?(x, y, d)
  337.   end
  338.   #--------------------------------------------------------------------------
  339.   # ● 下に移動
  340.   #     turn_ok : その場での向き変更を許可
  341.   #--------------------------------------------------------------------------
  342.   def move_down(turn_ok = true)
  343.     if passable?(@x, @y, 2)                 # 通行可能
  344.       turn_down
  345.       @y = $game_map.round_y(@y+1)
  346.       @real_y = (@y-1)*256
  347.       increase_steps
  348.       @move_failed = false
  349.     else                                    # 通行不可能
  350.       turn_down if turn_ok
  351.       check_event_trigger_touch(@x, @y+1)   # 接触イベントの起動判定
  352.       @move_failed = true
  353.     end
  354.   end
  355.   #--------------------------------------------------------------------------
  356.   # ● 左に移動
  357.   #     turn_ok : その場での向き変更を許可
  358.   #--------------------------------------------------------------------------
  359.   def move_left(turn_ok = true)
  360.     if passable?(@x, @y, 4)                 # 通行可能
  361.       turn_left
  362.       @x = $game_map.round_x(@x-1)
  363.       @real_x = (@x+1)*256
  364.       increase_steps
  365.       @move_failed = false
  366.     else                                    # 通行不可能
  367.       turn_left if turn_ok
  368.       check_event_trigger_touch(@x-1, @y)   # 接触イベントの起動判定
  369.       @move_failed = true
  370.     end
  371.   end
  372.   #--------------------------------------------------------------------------
  373.   # ● 右に移動
  374.   #     turn_ok : その場での向き変更を許可
  375.   #--------------------------------------------------------------------------
  376.   def move_right(turn_ok = true)
  377.     if passable?(@x, @y, 6)                 # 通行可能
  378.       turn_right
  379.       @x = $game_map.round_x(@x+1)
  380.       @real_x = (@x-1)*256
  381.       increase_steps
  382.       @move_failed = false
  383.     else                                    # 通行不可能
  384.       turn_right if turn_ok
  385.       check_event_trigger_touch(@x+1, @y)   # 接触イベントの起動判定
  386.       @move_failed = true
  387.     end
  388.   end
  389.   #--------------------------------------------------------------------------
  390.   # ● 上に移動
  391.   #     turn_ok : その場での向き変更を許可
  392.   #--------------------------------------------------------------------------
  393.   def move_up(turn_ok = true)
  394.     if passable?(@x, @y, 8)                 # 通行可能
  395.       turn_up
  396.       @y = $game_map.round_y(@y-1)
  397.       @real_y = (@y+1)*256
  398.       increase_steps
  399.       @move_failed = false
  400.     else                                    # 通行不可能
  401.       turn_up if turn_ok
  402.       check_event_trigger_touch(@x, @y-1)   # 接触イベントの起動判定
  403.       @move_failed = true
  404.     end
  405.   end
  406.   #--------------------------------------------------------------------------
  407.   # ● 左下に移動
  408.   #--------------------------------------------------------------------------
  409.   def move_lower_left
  410.     unless @direction_fix
  411.       @direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
  412.     end
  413.     if (passable?(@x, @y, 2) && passable?(@x, @y+1, 4)) ||
  414.        (passable?(@x, @y, 4) && passable?(@x-1, @y, 2))
  415.       @x -= 1
  416.       @y += 1
  417.       increase_steps
  418.       @move_failed = false
  419.     else
  420.       @move_failed = true
  421.     end
  422.   end
  423.   #--------------------------------------------------------------------------
  424.   # ● 右下に移動
  425.   #--------------------------------------------------------------------------
  426.   def move_lower_right
  427.     unless @direction_fix
  428.       @direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
  429.     end
  430.     if (passable?(@x, @y, 2) && passable?(@x, @y+1, 6)) ||
  431.        (passable?(@x, @y, 6) && passable?(@x+1, @y, 2))
  432.       @x += 1
  433.       @y += 1
  434.       increase_steps
  435.       @move_failed = false
  436.     else
  437.       @move_failed = true
  438.     end
  439.   end
  440.   #--------------------------------------------------------------------------
  441.   # ● 左上に移動
  442.   #--------------------------------------------------------------------------
  443.   def move_upper_left
  444.     unless @direction_fix
  445.       @direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
  446.     end
  447.     if (passable?(@x, @y, 8) && passable?(@x, @y-1, 4)) ||
  448.        (passable?(@x, @y, 4) && passable?(@x-1, @y, 8))
  449.       @x -= 1
  450.       @y -= 1
  451.       increase_steps
  452.       @move_failed = false
  453.     else
  454.       @move_failed = true
  455.     end
  456.   end
  457.   #--------------------------------------------------------------------------
  458.   # ● 右上に移動
  459.   #--------------------------------------------------------------------------
  460.   def move_upper_right
  461.     unless @direction_fix
  462.       @direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
  463.     end
  464.     if (passable?(@x, @y, 8) && passable?(@x, @y-1, 6)) ||
  465.        (passable?(@x, @y, 6) && passable?(@x+1, @y, 8))
  466.       @x += 1
  467.       @y -= 1
  468.       increase_steps
  469.       @move_failed = false
  470.     else
  471.       @move_failed = true
  472.     end
  473.   end
  474. end

  475. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  476. #==============================================================================
  477. # ■ Game_Player
  478. #==============================================================================

  479. class Game_Player < Game_Character
  480.   #--------------------------------------------------------------------------
  481.   # ○ マップ通行可能判定
  482.   #     x : X 座標
  483.   #     y : Y 座標
  484.   #     d : 移動方向
  485.   #    指定座標の指定した方向が通行可能かを取得する。
  486.   #--------------------------------------------------------------------------
  487.   alias map_passable_KGC_TilesetExtension? map_passable?
  488.   def map_passable?(x, y, d)
  489.     return false unless map_passable_KGC_TilesetExtension?(x, y)

  490.     return $game_map.passable_dir?(x, y, d)
  491.   end

  492.   if $TEST && KGC::TilesetExtension::DEBUG_INFO_BUTTON != nil
  493.   #--------------------------------------------------------------------------
  494.   # ● フレーム更新
  495.   #--------------------------------------------------------------------------
  496.   alias update_KGC_TilesetExtension update
  497.   def update
  498.     update_KGC_TilesetExtension

  499.     if Input.trigger?(KGC::TilesetExtension::DEBUG_INFO_BUTTON)
  500.       show_passage_and_terrain_tag
  501.     end
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   # ○ プレイヤー位置の通行フラグ・地形タグを表示
  505.   #--------------------------------------------------------------------------
  506.   def show_passage_and_terrain_tag
  507.     passage = $game_map.passage(x, y)
  508.     tag = $game_map.terrain_tag(x, y)

  509.     # デバッグ情報作成
  510.     s = "通行可能: "
  511.     s += "↓" if passage & DirectionFlag::DOWN  == 0x00
  512.     s += "←" if passage & DirectionFlag::LEFT  == 0x00
  513.     s += "→" if passage & DirectionFlag::RIGHT == 0x00
  514.     s += "↑" if passage & DirectionFlag::UP    == 0x00
  515.     s += "  地形标记: #{tag}"

  516.     p s
  517.   end
  518.   end

  519. end

  520. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  521. #==============================================================================
  522. # ■ Sprite_Character
  523. #==============================================================================

  524. class Sprite_Character < Sprite_Base
  525.   #--------------------------------------------------------------------------
  526.   # ● 指定されたタイルが含まれるタイルセット画像の取得
  527.   #     tile_id : タイル ID
  528.   #--------------------------------------------------------------------------
  529.   def tileset_bitmap(tile_id)
  530.     filename = KGC::TilesetExtension.get_tileset_filename
  531.     set_number = tile_id / 256
  532.     return Cache.system(filename["B"]) if set_number == 0
  533.     return Cache.system(filename["C"]) if set_number == 1
  534.     return Cache.system(filename["D"]) if set_number == 2
  535.     return Cache.system(filename["E"]) if set_number == 3
  536.     return nil
  537.   end
  538. end

  539. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  540. #==============================================================================
  541. # ■ Spriteset_Map
  542. #==============================================================================

  543. class Spriteset_Map
  544.   #--------------------------------------------------------------------------
  545.   # ● タイルマップの作成
  546.   #--------------------------------------------------------------------------
  547.   def create_tilemap
  548.     filename = KGC::TilesetExtension.get_tileset_filename
  549.     @tilemap = Tilemap.new(@viewport1)
  550.     @tilemap.bitmaps[0] = Cache.system(filename["A1"])
  551.     @tilemap.bitmaps[1] = Cache.system(filename["A2"])
  552.     @tilemap.bitmaps[2] = Cache.system(filename["A3"])
  553.     @tilemap.bitmaps[3] = Cache.system(filename["A4"])
  554.     @tilemap.bitmaps[4] = Cache.system(filename["A5"])
  555.     @tilemap.bitmaps[5] = Cache.system(filename["B"])
  556.     @tilemap.bitmaps[6] = Cache.system(filename["C"])
  557.     @tilemap.bitmaps[7] = Cache.system(filename["D"])
  558.     @tilemap.bitmaps[8] = Cache.system(filename["E"])
  559.     @tilemap.map_data = $game_map.data
  560.     @tilemap.passages = $game_map.passages
  561.   end
  562. end

  563. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  564. #==============================================================================
  565. # ■ Scene_Title
  566. #==============================================================================

  567. class Scene_Title < Scene_Base
  568.   #--------------------------------------------------------------------------
  569.   # ● データベースのロード
  570.   #--------------------------------------------------------------------------
  571.   alias load_database_KGC_TilesetExtension load_database
  572.   def load_database
  573.     load_database_KGC_TilesetExtension

  574.     load_tileset
  575.   end
  576.   #--------------------------------------------------------------------------
  577.   # ○ タイルセット付加情報のロード
  578.   #--------------------------------------------------------------------------
  579.   def load_tileset
  580.     begin
  581.       $data_tileset = load_data("Data/#{KGC::TilesetExtension::EX_RVDATA}")
  582.     rescue
  583.       $data_tileset = RPG::Tileset.new
  584.     end
  585.   end
  586. end
复制代码
使用方法
  在地图名称加上[RTP图档名称 新图档名称]
  
  例如:
  
  森林[A2 A2_2][B B_3]
  就是说用 TileA2_2 代替 TileA2
      而用 TileB_3  代替 TileB
      在[]里面不需要写Tile这个字


  直接在脚本中定义方法
      在脚本里定义可以不用在地图名称里打那麽长的定义

  在30行下面定义哈希表:
  TILE_PRESET["组名称"] = {
    "默认地图图块图档名称1"=>"新地图图块图档名称",
    "默认地图图块图档名称2"=>"新地图图块图档名称",
    "默认地图图块图档名称3"=>"新地图图块图档名称",
    "默认地图图块图档名称4"=>"新地图图块图档名称",
    ...
  }
  然後在地图名称使用
  
  地图名称 [SET 组名称]

  例如:
  TILE_PRESET["魔王之城"] = {
    "A1" => "A1-Maou",
    "A2" => "A2-Maou",
    "B"  => "B-Maou",
    "D"  => "D-Maou",
  }

所以
  魔王城─走廊[SET 魔王之城]
  
就等於
  魔王城─走廊[A1 A1-Maou][A2 A2-Maou][B B-Maou][D D-Maou]
  


  继承自定义图块:
  在地图名称使用[inherit]就能继承其在地图管理器中父地图所定义的图块
    (这段有点程序设计的意味,不懂的人就略过)
  
  例如:
  魔王城─走廊[A1 A1-Maou][A2 A2-Maou][B B-Maou][D D-Maou]
   +--魔王城─房间一[inherit]
   
  如此「魔王城─房间一」就继承了魔王城─走廊已经定义过的所有图块。
  PS:地图管理器就是RMVX介面左下角(图块选择器的下面)那个

  变更的优先度:
  1. 继承
  2. 脚本自定义
  3. 个别设定
  
  
  例如
  - 魔王城堡[A1 A1-2][B B2][C C2]
      魔王城堡大厅[inherit][A2 A2-2]
    - 魔王城堡走廊[inherit][B B3]
        魔王城堡房间一[inherit][D D2]
    - 魔王城堡後院[A1 A1-100]
        魔王城堡─谜之间[inherit]
  
  则效果:
  *魔王城堡
      A1: TileA1-2
      B : TileB2
      C : TileC2
  *魔王城堡大厅
      A1: TileA1-2
      A2: TileA2-2
      B : TileB2
      C : TileC2
  *魔王城堡走廊
      A1: TileA1-2
      B : TileB3
      C : TileC2
  *魔王城堡房间一
      A1: TileA1-2
      B : TileB3
      C : TileC2
      D : TileD2
  *魔王城堡後院
      A1: TileA1-100
  *魔王城堡─谜之间
      A1: TileA1-100



四方向和地形标记需要软体
  下载:http://f44.aaa.livedoor.jp/~ytomy/cgi-bin/dl/dl.php?dl=vxtiletool
  
  说明:与XP相同,就是四方向
  地形标记可以增加到1~99个,不设置的话默认为0
  使用插件软件设置时,用shift + 点击可以将地形标记增加 10
  使用方式请看XP的说明
  
  
  
  地形标记相关脚本:
  get_terrain_tag(x, y[, variable_id])
    返回指定图块的地形标记至指定的变量
      x, y: 指定图块的XY座标
      variable_id:返回值储存位置(变量ID)(可不填)
      
      例如:get_terrain_tag(0, 32, 1)返回座标为(0,32)的地形标记并储存至1号变量
            $game_variable[1] = get_terrain_tag(0, 32) 同上
  
  get_event_terrain_tag(event_id[, variable_id])
    返回指定事件的地形标记至指定的变量
      event_id:指定事件的ID
      variable_id:返回值储存位置(变量ID)(可不填)
      
      例如:get_event_terrain_tag(32, 1)返回32号事件所在的地形标记并储存至1号变量
            $game_variable[1] = get_event_terrain_tag(32) 同上
      
  get_player_terrain_tag[(variable_id)]
    返回玩家角色的地形标记至指定的变量
      variable_id:返回值储存位置(变量ID)(可不填)
      
      例如:get_event_terrain_tag(1)返回玩家角色所在的地形标记并储存至1号变量
            $game_variable[1] = get_event_terrain_tag 同上


范例:VX图块加强
VA脚本开工中...
偷窃脚本1.0 - 已完成

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

2
发表于 2008-2-25 21:40:37 | 只看该作者
无解..........无限..........支持个
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

万物创造者

梦石
0
星屑
54
在线时间
352 小时
注册时间
2008-2-15
帖子
2432
3
发表于 2008-2-26 05:00:00 | 只看该作者
似乎……好吧……支持个……
From mortal hope immortal power springs.
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

喵,小柯的宠物

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-15
帖子
2310
4
发表于 2008-3-8 05:36:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2006-5-21
帖子
773
5
发表于 2008-3-8 06:17:33 | 只看该作者
绝对支持.虽然我不会用
MadniMStudio|Beside
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

6
 楼主| 发表于 2008-3-8 07:11:19 | 只看该作者
MS很多人不会用{/pz}
现在不是有很多人在叫VX的图块不够用吗?
这个就是解决方法

上面的说明看不懂不要紧
这段看的懂就好了:
森林[A2 A2_2][B B_3]
就是说用 TileA2_2 代替 TileA2
       用 TileB_3 代替 TileB
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

7
发表于 2008-3-8 07:23:18 | 只看该作者
依旧看不懂^
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

8
 楼主| 发表于 2008-3-8 07:55:18 | 只看该作者
{/kuk}{/kuk}
真有那麽难懂吗??


地图的名称[RTP文件名 自定义文件名]

我不是有个范例吗?
难道还看不懂??
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

胃:伪·好人之怨念<

梦石
0
星屑
50
在线时间
4 小时
注册时间
2007-6-24
帖子
5058

开拓者VX城市地图大赛亚军

9
发表于 2008-3-8 23:58:25 | 只看该作者
咳,星大不要这么生气……
反正我是看明白了{/cy}
但是不同的风格的图块混用效果并不一定好,用来扩展E图块倒是很不错……
哈哈哈哈哈
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

10
 楼主| 发表于 2008-3-9 20:32:26 | 只看该作者
我倒不是生气,不过MS小柯好像是故意GL的{/bz}

有点ORZ
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-21 21:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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