ページ 1 / 1
【RGSS3版】タイルをコピーして置き換え【解決済】
Posted: 2017年4月26日(水) 23:33
by musashi
閲覧ありがとうございます。
VXAceでタイルを置き換えするスクリプトをご存知の方、または作ってくださる方はいらっしゃいますでしょうか?
MV版とVX版だけで、VXAce版を見つけられなかったのでリクエストさせていただきました。
1タイル単位で置き換えができて、元に戻すまでセーブにも保存される仕組みです。
難しいかもしれませんが、どうぞ宜しくお願い致します。
【参考】
MV版 Supponさん作
http://tm.yumineko.com/viewtopic.php?f=5&t=338
VX版 CACAOさん作
http://cacaosoft.webcrow.jp/script/rgss2/chgt.html
Re: 【RGSS3版】タイルをコピーして置き換え
Posted: 2017年4月29日(土) 01:53
by TOMO
こんな感じでどうですか?
コード: 全て選択
# ・タイルの変更
# $game_map.change_tile_id(x, y, z, tile_id)
#
# ・変更したタイルの確認
# p $game_map.ex_tile_ids
#
# ※補足
# $game_map.ex_tile_idsで出てくるデータですが、
# {[マップID, X座標, Y座標, Z座標]=>タイルID}
# といった感じになります
class Game_Map
attr_accessor :ex_tile_ids
#--------------------------------------------------------------------------
# ● タイル ID の変更
#--------------------------------------------------------------------------
def change_tile_id(x, y, z, tile_id)
@ex_tile_ids = {} unless @ex_tile_ids
return if @ex_tile_ids[[@map_id, x, y, z]] == tile_id
@ex_tile_ids[[@map_id, x, y, z]] = tile_id
refresh
end
#--------------------------------------------------------------------------
# ● マップデータの取得
#--------------------------------------------------------------------------
alias tomo_change_tile_ids_data data
def data
@ex_tile_ids = {} unless @ex_tile_ids
data = tomo_change_tile_ids_data
@ex_tile_ids.each do |key, value|
if key[0] == @map_id && data[key[1], key[2], key[3]] != value
data[key[1], key[2], key[3]] = value
end
end
data
end
end
Re: 【RGSS3版】タイルをコピーして置き換え
Posted: 2017年4月29日(土) 13:05
by musashi
TOMOさん、ありがとうございます!
これでタイルの置き換えができて制作の幅が広がります!本当にありがとうございました!
このスレッドは【解決済】にさせていただきます。
他の方へ、ご参考までに。
置き換えたタイルを消す時は$game_map.ex_tile_idsの値を、rubyのハッシュの操作で削除すれば消せました。
消しても見かけ上は残りますが、別のマップに移動して戻れば消えます。