影の出ないtileA4やA1以外でアニメーションができるように

shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

影の出ないtileA4やA1以外でアニメーションができるように

投稿記事by shimei » 2017年5月30日(火) 16:51

もっと自由にアニメーションタイルを配置したり、A4でも影が出なくできるようなスクリプトがほしいです
探してもなさそうなので、よろしくお願いします

TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 影の出ないtileA4やA1以外でアニメーションができるように

投稿記事by TOMO » 2017年5月30日(火) 17:34

後者は手動でどうにかして下さい
ツクール自体の仕様なので、スクリプトでは無理です

前者は、Libのツクールページ様のレイヤーシステム等を使って下さい
shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

Re: 影の出ないtileA4やA1以外でアニメーションができるように

投稿記事by shimei » 2017年5月31日(水) 11:28

RGSS2で月紳士さまのスクリプトにはあったので、RGSS3でもできるものと…

ありがとうございました
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 影の出ないtileA4やA1以外でアニメーションができるように

投稿記事by TOMO » 2017年5月31日(水) 17:09

・・・そういう時は移植のリクエストを出してくれませんか?

ゼロから作るのと、移植とだと、
移植の方が参考資料があって断然楽なので・・・


影消しは多分同じように答えただろうけど、
同じ月紳士様の所にある「追加地形タイプ」は行けたかもしれないのに・・・
shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

Re: 影の出ないtileA4やA1以外でアニメーションができるように

投稿記事by shimei » 2017年5月31日(水) 18:18

移植という概念を初めて知りました。すみません
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 影の出ないtileA4やA1以外でアニメーションができるように

投稿記事by TOMO » 2017年6月01日(木) 20:31

Lib様の方のを使う方が良いと思うけど、
一応、月紳士様ので作ってみました

必要なければ無視して下さい



画像

あと、使う際は、出来れば月紳士様の利用規約を読んでからにして下さい
(移植&改変素材です)

コード: 全て選択

# 「月紳士様【追加地形タイル(VX)】」改変、アニメタイル(A1)追加スクリプト(VXAce)
# 制作者:TOMO
#
# 指定したタイルB~EをタイルA1に追加出来るようにします
#
# ※補足
# 置換するタイルで、「通行:4方向」は設定しないで下さい(それ以外はOK)

# ※改変元
# 紳士の月面工房
# 月紳士様
# http://tsukishinshi.blog73.fc2.com/

# ※参考資料
# 半生@Page(仮)
# 半生様
# https://www.tktkgame.com/
# タイルマップID(VX)



#==============================================================================
# □ カスタマイズ項目
#==============================================================================

module Ex_Field_Tile
  # タイルセットの設定
  # 対象タイル名 => [置換タイル名, [対象タイルID, ・・・]],
  Tileset = {
    "TileE" => ["Dungeon_A1", [260, 261, 262, 263]],
   
  }
 
  # 対象タイルIDは、
  # Bタイル(ID 0~255)、Cタイル(ID 256~511)、
  # Dタイル(ID 512~767)、Eタイル(ID 768~1023)の内から指定できます。

  # ここでIDを挙げた物が、置換タイルに置き換わります
end



class Game_Map
  #--------------------------------------------------------------------------
  # ○ 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :eft_ex_data
  attr_reader   :eff_ex_name
  #--------------------------------------------------------------------------
  # ◎ セットアップ
  #     map_id : マップ ID
  #--------------------------------------------------------------------------
  alias tig_eft_setup setup
  def setup(map_id)
    tig_eft_setup(map_id)
    @eft_ex_data = Table.new(width, height, 4)
    @eff_ex_name = ""
    setup_eft_tiles
  end
  #--------------------------------------------------------------------------
  # ○ 追加地形タイルのセットアップ
  #--------------------------------------------------------------------------
  def setup_eft_tiles
    ex_id ||= []
    4.times do |i|
      if Ex_Field_Tile::Tileset.include?(tileset.tileset_names[i + 5])
        @eff_ex_name = Ex_Field_Tile::Tileset[tileset.tileset_names[i + 5]][0]
        ex_id = Ex_Field_Tile::Tileset[tileset.tileset_names[i + 5]][1]
        break
      end
    end
   
    return if @eff_ex_name.empty?
   
    for x in 0...width
      for y in 0...height
        next unless ex_id.include?(@map.data[x, y, 2])
        index = ex_id.index(@map.data[x, y, 2])
        next if index > 31
       
        auto_tile_id = 0
        if round_y(y - 1) >= 0 and
           @map.data[x, round_y(y-1), 2] != ex_id[index]
          auto_tile_id = 20
        end
        if round_x(x - 1) >= 0 and
           @map.data[round_x(x-1), y, 2] != ex_id[index]
          case auto_tile_id
          when 0  ; auto_tile_id = 16
          when 20 ; auto_tile_id = 34
          end
        end
        if round_x(x + 1) < width and
           @map.data[round_x(x+1), y, 2] != ex_id[index]
          case auto_tile_id
          when 0  ; auto_tile_id = 24
          when 16 ; auto_tile_id = 32
          when 20 ; auto_tile_id = 36
          when 34 ; auto_tile_id = 42
          end
        end
        if round_x(y + 1) < height and
           @map.data[x, round_y(y+1), 2] != ex_id[index]
          case auto_tile_id
          when 0  ; auto_tile_id = 28
          when 16 ; auto_tile_id = 40
          when 20 ; auto_tile_id = 33
          when 24 ; auto_tile_id = 38
          when 32 ; auto_tile_id = 44
          when 34 ; auto_tile_id = 43
          when 36 ; auto_tile_id = 45
          when 42 ; auto_tile_id = 46
          end
        end
        if round_x(x - 1) >= 0 and round_y(y - 1) >= 0 and
           @map.data[round_x(x-1), round_y(y-1), 2] != ex_id[index]
          case auto_tile_id
          when 0  ; auto_tile_id = 1
          when 24 ; auto_tile_id = 26
          when 28 ; auto_tile_id = 29
          when 38 ; auto_tile_id = 39
          end
        end
        if round_x(x + 1) < width and round_y(y - 1) >= 0 and
           @map.data[round_x(x+1), round_y(y-1), 2] != ex_id[index]
          case auto_tile_id
          when 0  ; auto_tile_id = 2
          when 1  ; auto_tile_id = 3
          when 16 ; auto_tile_id = 17
          when 28 ; auto_tile_id = 30
          when 29 ; auto_tile_id = 31
          when 40 ; auto_tile_id = 41
          end
        end
        if round_x(x - 1) >= 0 and round_x(y + 1) < height and
           @map.data[round_x(x-1), round_y(y+1), 2] != ex_id[index]
          case auto_tile_id
          when 0  ; auto_tile_id = 8
          when 1  ; auto_tile_id = 9
          when 2  ; auto_tile_id = 10
          when 3  ; auto_tile_id = 11
          when 20 ; auto_tile_id = 22
          when 24 ; auto_tile_id = 25
          when 26 ; auto_tile_id = 27
          when 36 ; auto_tile_id = 37
          end
        end
        if round_x(x + 1) < width and round_x(y + 1) < height and
           @map.data[round_x(x+1), round_y(y+1), 2] != ex_id[index]
          case auto_tile_id
          when 0  ; auto_tile_id = 4
          when 1  ; auto_tile_id = 5
          when 2  ; auto_tile_id = 6
          when 3  ; auto_tile_id = 7
          when 8  ; auto_tile_id = 12
          when 9  ; auto_tile_id = 13
          when 10 ; auto_tile_id = 14
          when 11 ; auto_tile_id = 15
          when 16 ; auto_tile_id = 18
          when 17 ; auto_tile_id = 19
          when 20 ; auto_tile_id = 21
          when 22 ; auto_tile_id = 23
          when 34 ; auto_tile_id = 35
          end
        end
        @eft_ex_data[x, y, 1] = index * 48 + 2048 + auto_tile_id
      end
    end
   
    for x in 0...width
      for y in 0...height
        next unless ex_id.include?(@map.data[x, y, 2])
        @map.data[x, y, 1] = @map.data[x, y, 2]
        @map.data[x, y, 2] = @map.data[x, y, 0]
      end
    end
  end
end

class Spriteset_Map
  #--------------------------------------------------------------------------
  # ● タイルマップの作成
  #--------------------------------------------------------------------------
  alias tig_eft_create_tilemap create_tilemap
  def create_tilemap
    tig_eft_create_tilemap
    @eff_ex_tilemap = Tilemap.new(@viewport1)
    @eff_ex_tilemap.map_data = $game_map.eft_ex_data
    unless $game_map.eff_ex_name.empty?
      @eff_ex_tilemap.bitmaps[0] = Cache.tileset($game_map.eff_ex_name)
      @eff_ex_tilemap.bitmaps[1] = Cache.tileset(@tileset.tileset_names[1])
      @eff_ex_tilemap.bitmaps[2] = Cache.tileset(@tileset.tileset_names[2])
      @eff_ex_tilemap.bitmaps[3] = Cache.tileset(@tileset.tileset_names[3])
      @eff_ex_tilemap.bitmaps[4] = Cache.tileset(@tileset.tileset_names[4])
      @eff_ex_tilemap.bitmaps[5] = Cache.tileset(@tileset.tileset_names[5])
      @eff_ex_tilemap.bitmaps[6] = Cache.tileset(@tileset.tileset_names[6])
      @eff_ex_tilemap.bitmaps[7] = Cache.tileset(@tileset.tileset_names[7])
      @eff_ex_tilemap.bitmaps[8] = Cache.tileset(@tileset.tileset_names[8])
    end
  end
  #--------------------------------------------------------------------------
  # ● タイルセットのロード
  #--------------------------------------------------------------------------
  alias tig_eft_load_tileset load_tileset
  def load_tileset
    tig_eft_load_tileset
    if @eff_ex_tilemap
      unless $game_map.eff_ex_name.empty?
        @eff_ex_tilemap.bitmaps[0] = Cache.tileset($game_map.eff_ex_name)
        @eff_ex_tilemap.bitmaps[1] = Cache.tileset(@tileset.tileset_names[1])
        @eff_ex_tilemap.bitmaps[2] = Cache.tileset(@tileset.tileset_names[2])
        @eff_ex_tilemap.bitmaps[3] = Cache.tileset(@tileset.tileset_names[3])
        @eff_ex_tilemap.bitmaps[4] = Cache.tileset(@tileset.tileset_names[4])
        @eff_ex_tilemap.bitmaps[5] = Cache.tileset(@tileset.tileset_names[5])
        @eff_ex_tilemap.bitmaps[6] = Cache.tileset(@tileset.tileset_names[6])
        @eff_ex_tilemap.bitmaps[7] = Cache.tileset(@tileset.tileset_names[7])
        @eff_ex_tilemap.bitmaps[8] = Cache.tileset(@tileset.tileset_names[8])
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● タイルマップの解放
  #--------------------------------------------------------------------------
  alias tig_eft_dispose_tilemap dispose_tilemap
  def dispose_tilemap
    tig_eft_dispose_tilemap
    @eff_ex_tilemap.dispose
  end
  #--------------------------------------------------------------------------
  # ● タイルマップの更新
  #--------------------------------------------------------------------------
  alias tig_eft_update_tilemap update_tilemap
  def update_tilemap
    tig_eft_update_tilemap
    @eff_ex_tilemap.map_data = $game_map.eft_ex_data
    @eff_ex_tilemap.ox = $game_map.display_x * 32
    @eff_ex_tilemap.oy = $game_map.display_y * 32
    @eff_ex_tilemap.update
  end
end


対応する画像(月紳士様のTileEみたいなの)は、
自分で作るか、誰かに作って貰って下さい
shimei
記事: 35
登録日時: 2017年4月28日(金) 16:25

Re: 影の出ないtileA4やA1以外でアニメーションができるように

投稿記事by shimei » 2017年6月03日(土) 23:19

>TOMOさま

ありがとうございます。使わせていただきます!

“VX / Ace:スクリプト素材のリクエスト” へ戻る