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

Project1

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

[已经解决] 关于扩展E图块的方法

[复制链接]

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
跳转到指定楼层
1
发表于 2010-7-9 23:01:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问 怎样增加E图块的数量,之前似乎拜访过一贴,有无限图块的效果,不过似乎未收藏【找不到了】,搜索又似乎只有雪流星的那汉化脚本...请问增加E图块数量有多少种方法?

点评

请您在48小时内对此帖做出回应,否则将由版主结贴。  发表于 2010-7-18 15:07

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
2
发表于 2010-7-10 00:34:21 | 只看该作者
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ タイルセット拡張 - KGC_TilesetExtension ◆ VX ◆
  3. #_/    ◇ Last update : 2008/07/13 ◇
  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.   # ◆ 预设的图块图像
  17.   #  使用[SET <预设组名称>]设定。
  18.   TILE_PRESET = {}  # ← 这行不可删除
  19.   # ここから下に、プリセットを定義。
  20.   # ↓は設定例
  21.   TILE_PRESET["魔王の城"] = {
  22.     "A1"=>"A1-Maou",
  23.     "A2"=>"A2-Maou",
  24.     "B"=>"B-Maou",
  25.     "D"=>"D-Maou",
  26.   }
  27.   # 使うときは、マップ名に [SET 魔王の城] を入れる。

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

  36. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

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

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

  42. # 方向フラグ (4方向通行フラグ対応)
  43. module DirectionFlag
  44.   DOWN  = 0x01
  45.   LEFT  = 0x02
  46.   RIGHT = 0x04
  47.   UP    = 0x08
  48. end

  49. module KGC::TilesetExtension
  50.   # 拡張タイルセットのファイル名
  51.   EX_RVDATA = "TilesetEx.rvdata"

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

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

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

  129. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

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

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

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

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

  182. class Game_Interpreter
  183.   include KGC::Commands
  184. end

  185. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  186. #==============================================================================
  187. # ■ RPG::MapInfo
  188. #==============================================================================

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

  203. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

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

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

  229. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  230. #==============================================================================
  231. # ■ Game_Map
  232. #==============================================================================

  233. class Game_Map
  234.   LAYERS = [2, 1, 0]
  235.   #--------------------------------------------------------------------------
  236.   # ● セットアップ
  237.   #     map_id : マップ ID
  238.   #--------------------------------------------------------------------------
  239.   alias setup_KGC_TilesetExtension setup
  240.   def setup(map_id)
  241.     @map_id = map_id
  242.     init_tileset_filename

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

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

  296. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  297. #==============================================================================
  298. # ■ Game_Character
  299. #==============================================================================

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

  484. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  485. #==============================================================================
  486. # ■ Game_Player
  487. #==============================================================================

  488. class Game_Player < Game_Character
  489.   #--------------------------------------------------------------------------
  490.   # ○ マップ通行可能判定
  491.   #     x : X 座標
  492.   #     y : Y 座標
  493.   #     d : 移動方向
  494.   #    指定座標の指定した方向が通行可能かを取得する。
  495.   #--------------------------------------------------------------------------
  496.   alias map_passable_KGC_TilesetExtension? map_passable?
  497.   def map_passable?(x, y, d)
  498.     return false unless map_passable_KGC_TilesetExtension?(x, y)

  499.     return $game_map.passable_dir?(x, y, d)
  500.   end

  501.   if $TEST && KGC::TilesetExtension::DEBUG_INFO_BUTTON != nil
  502.   #--------------------------------------------------------------------------
  503.   # ● フレーム更新
  504.   #--------------------------------------------------------------------------
  505.   alias update_KGC_TilesetExtension update
  506.   def update
  507.     update_KGC_TilesetExtension

  508.     if Input.trigger?(KGC::TilesetExtension::DEBUG_INFO_BUTTON)
  509.       show_passage_and_terrain_tag
  510.     end
  511.   end
  512.   #--------------------------------------------------------------------------
  513.   # ○ プレイヤー位置の通行フラグ・地形タグを表示
  514.   #--------------------------------------------------------------------------
  515.   def show_passage_and_terrain_tag
  516.     passage = $game_map.passage(x, y)
  517.     tag = $game_map.terrain_tag(x, y)

  518.     # デバッグ情報作成
  519.     s = "通行可能: "
  520.     s += "↓" if passage & DirectionFlag::DOWN  == 0x00
  521.     s += "←" if passage & DirectionFlag::LEFT  == 0x00
  522.     s += "→" if passage & DirectionFlag::RIGHT == 0x00
  523.     s += "↑" if passage & DirectionFlag::UP    == 0x00
  524.     s += "  地形タグ: #{tag}"

  525.     p s
  526.   end
  527.   end

  528. end

  529. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  530. #==============================================================================
  531. # ■ Sprite_Character
  532. #==============================================================================

  533. class Sprite_Character < Sprite_Base
  534.   #--------------------------------------------------------------------------
  535.   # ● 指定されたタイルが含まれるタイルセット画像の取得
  536.   #     tile_id : タイル ID
  537.   #--------------------------------------------------------------------------
  538.   def tileset_bitmap(tile_id)
  539.     filename = KGC::TilesetExtension.get_tileset_filename
  540.     set_number = tile_id / 256
  541.     return Cache.system(filename["B"]) if set_number == 0
  542.     return Cache.system(filename["C"]) if set_number == 1
  543.     return Cache.system(filename["D"]) if set_number == 2
  544.     return Cache.system(filename["E"]) if set_number == 3
  545.     return nil
  546.   end
  547. end

  548. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  549. #==============================================================================
  550. # ■ Spriteset_Map
  551. #==============================================================================

  552. class Spriteset_Map
  553.   #--------------------------------------------------------------------------
  554.   # ● タイルマップの作成
  555.   #--------------------------------------------------------------------------
  556.   def create_tilemap
  557.     filename = KGC::TilesetExtension.get_tileset_filename
  558.     @tilemap = Tilemap.new(@viewport1)
  559.     @tilemap.bitmaps[0] = Cache.system(filename["A1"])
  560.     @tilemap.bitmaps[1] = Cache.system(filename["A2"])
  561.     @tilemap.bitmaps[2] = Cache.system(filename["A3"])
  562.     @tilemap.bitmaps[3] = Cache.system(filename["A4"])
  563.     @tilemap.bitmaps[4] = Cache.system(filename["A5"])
  564.     @tilemap.bitmaps[5] = Cache.system(filename["B"])
  565.     @tilemap.bitmaps[6] = Cache.system(filename["C"])
  566.     @tilemap.bitmaps[7] = Cache.system(filename["D"])
  567.     @tilemap.bitmaps[8] = Cache.system(filename["E"])
  568.     @tilemap.map_data = $game_map.data
  569.     @tilemap.passages = $game_map.passages
  570.   end
  571. end

  572. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  573. #==============================================================================
  574. # ■ Scene_Title
  575. #==============================================================================

  576. class Scene_Title < Scene_Base
  577.   #--------------------------------------------------------------------------
  578.   # ● データベースのロード
  579.   #--------------------------------------------------------------------------
  580.   alias load_database_KGC_TilesetExtension load_database
  581.   def load_database
  582.     load_database_KGC_TilesetExtension

  583.     load_tileset
  584.   end
  585.   #--------------------------------------------------------------------------
  586.   # ○ タイルセット付加情報のロード
  587.   #--------------------------------------------------------------------------
  588.   def load_tileset
  589.     begin
  590.       $data_tileset = load_data("Data/#{KGC::TilesetExtension::EX_RVDATA}")
  591.     rescue
  592.       $data_tileset = RPG::Tileset.new
  593.     end
  594.   end
  595. end

  596. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  597. #==============================================================================
  598. # ■ Scene_File
  599. #==============================================================================

  600. class Scene_File < Scene_Base
  601.   #--------------------------------------------------------------------------
  602.   # ● セーブデータの読み込み
  603.   #     file : 読み込み用ファイルオブジェクト (オープン済み)
  604.   #--------------------------------------------------------------------------
  605.   alias read_save_data_KGC_TilesetExtension read_save_data
  606.   def read_save_data(file)
  607.     read_save_data_KGC_TilesetExtension(file)

  608.     $game_map.init_tileset_filename
  609.     Graphics.frame_reset
  610.   end
  611. end
复制代码
  1. =begin
  2. 把地图编号填入[]之中,
  3. 左边的数字是通行度文件编号,
  4. 右边是使用该编号文件设定通行度的地图ID

  5. 通行度文件的制作方式:
  6.    1. 新建工程(也可以使用一个工程专门用来制作通行度文件)
  7.    2. 使用新建的工程设置好E图块的通行度
  8.    3. 打开工程的Data文件夹
  9.    4. 将System.rvdata复制进入游戏文件夹的Data文件夹
  10.       (不要覆盖原文件!!!)
  11.    5. 将新复制的System.rvdata 改名为 System编号.rvdata
  12.        例如: System2.rvdata
  13.       
  14. 若是使用了四方通行设定/图块加强脚本
  15. 请把 37~40 以及 43~47 行取消注释
  16. =end
  17. Map_Passage = {
  18.     1 => [],
  19.     2 => [],
  20.     3 => []
  21. }


  22. class Game_Map
  23.   alias setup_multi_passage setup
  24.   def setup(map_id)
  25.     a = 0
  26.     for key in Map_Passage.keys
  27.       if Map_Passage[key].include?(map_id)
  28.         a = key
  29.         break
  30.       end
  31.     end
  32.     if a == 0
  33.       $data_system = load_data("Data/System.rvdata")
  34.       if $imported["TilesetEx"]
  35.         b = KGC::TilesetExtension::EX_RVDATA.clone
  36.         $data_tileset = load_data("Data/#{b}")
  37.       end
  38.     else
  39.       $data_system = load_data("Data/System#{a}.rvdata")
  40.       if $imported["TilesetEx"]
  41.         b = KGC::TilesetExtension::EX_RVDATA.clone
  42.         b = b.insert(-8, "#{a}")
  43.         $data_tileset = load_data("Data/#{b}")
  44.       end
  45.     end
  46.     setup_multi_passage(map_id)
  47.   end
  48. end
复制代码
http://ytomy.sakura.ne.jp/software/tkool/index.html
通行度设置工具

评分

参与人数 1星屑 +200 收起 理由
木葬枫 + 200 鼓励参与讨论。

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
3
 楼主| 发表于 2010-7-11 00:54:31 | 只看该作者
这个不是我说的吗...还有雪流星的汉化版呢...不过还是谢谢了 此贴估计沉了
曾记否,刚复活时有个帖子叫什么来着,就是关于这东西,应该不是这个方法...
再次感谢
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
4
发表于 2010-7-11 01:20:23 | 只看该作者
本帖最后由 wangswz 于 2010-7-11 01:22 编辑

这个方法不仅可以无限扩充图块还能设置无限种通行度
除了和队伍跟随冲突严重
超好用
我记得有个类似的国人的E扩充脚本
设置简单 功能也简单。。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
5
 楼主| 发表于 2010-7-11 17:37:40 | 只看该作者
我用了扩展队伍系统 就放弃了队伍跟随...
认可你的答案,另外 方便把【类似的国人的E扩充脚本】放出吗...谢谢了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
416 小时
注册时间
2006-10-21
帖子
1245
6
发表于 2010-7-11 18:11:17 | 只看该作者
http://rpg.blue/forum.php?mod=vi ... 7%E6%89%A9%E5%BC%A0
搜索啊搜索
队伍扩展和队伍跟随不冲突啊

点评

我果然是不擅长搜索的懒人一个...我搜索“图块” 再搜索“图块扩展”...  发表于 2010-7-12 00:40
这个...就第三句话而言,如果你发现一个游戏里面有8个人或者更多排成一个路队... 嗯...  发表于 2010-7-12 00:35

评分

参与人数 1星屑 +700 收起 理由
木葬枫 + 700 认可答案,66RPG感谢您的热情解答 ...

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
723
在线时间
530 小时
注册时间
2010-6-9
帖子
840
7
 楼主| 发表于 2010-7-12 00:38:02 | 只看该作者
  1. ----------------注意,此脚本不能直接用来制作游戏使用-----------
复制代码
此句怎解...??谢谢楼上 就是他了...不过 以上很刺眼...

点评

哪来的.. 我的队伍20多人 除了像贪吃蛇 气势磅礴啊  发表于 2010-7-16 10:04
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-27 23:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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