查看: 2040|回复: 3

[已经解决] 请问这个脚本怎么用,忘记了1

[复制链接]
梦石
0
星屑
146
在线时间
17 小时
注册时间
2022-3-12
回帖
4
发表于 2022-4-28 19:24:10 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby"]#◆◇◆◇◆  鏡床スクリプトVXA ver 1.00  ◇◆◇◆◇
#  サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
#   by みんと

=begin

■ 更新履歴

○ ver 1.00(2010/11/23)
公開
  
■ 説明

現在キャラクターが立っている
「一歩下」のタイルが、特定のタイルだった場合、
一歩下のタイルにキャラクターの半透明の映像を映し出します。
水面などの演出に向いています。

鏡床とみなされるタイルの登録には地形タグを使用します。
タイルセットの地形タグを任意の値に設定してください。

イベントの場合は、「最初の」実行内容が
「注釈」で、注釈の内容が 鏡床描写 のみの場合、同様に映し出します。
設定していない場合は映し出さないので、
映し出したいイベントにだけ設定してください。

導入場所の注意
エイリアスで構成されていますので、
出来るだけ下のほうに導入してください。

=end

#==============================================================================
# ☆ MINTO
#------------------------------------------------------------------------------
#   様々なフラグを扱うメインモジュールです。
#==============================================================================

module MINTO
  
  # 鏡床スクリプトVXを有効化 ( true で有効 / false で無効 )
  RGSS["鏡床スクリプトVX"] = true
  
  # 鏡床のタイルとして扱う地形タグのID
  # キャラクターが立っている一歩下のレイヤー1~3の中で、
  # 1つでも該当する地形タグがあれば鏡床を作成します
  Mirror_Tile_ID = 1
  
  # 鏡床無効のタイルとして扱う地形タグのID
  # キャラクターが立っている一歩下のレイヤー1~3の中で、
  # 1つでも該当する地形タグがあれば鏡床を無効化します
  # 無効化タイルを使用しない場合は nil を収納してください
  Not_Mirror_Tile_ID = 2
  
  # 機能を一時的に無効化するスイッチ
  # このスイッチが オン の時、機能を無効化します
  Not_Mirror_Switch = 0
  
end

# 鏡床スクリプトVXが有効な場合に以降の処理を実行する
if MINTO::RGSS["鏡床スクリプトVX"] == true then
  
#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
#  マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
# このクラスのインスタンスは $game_map で参照されます。
#==============================================================================

class Game_Map
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :map                      # マップの情報
  #--------------------------------------------------------------------------
  # ● 地形タグの取得
  #    x   : 指定 X 座標
  #    y   : 指定 Y 座標
  #    tag : 指定地形タグ
  #--------------------------------------------------------------------------
  def terrain_tag_include?(x, y, tag)
    # 無効なタイルの場合
    unless valid?(x, y)
      # メソッドを返す
      return false
    end
    # 全レイヤーを検索
    for tile_id in layered_tiles(x, y) do
      # タグを取得
      t = tileset.flags[tile_id] >> 12
      # 地系タグが一致した場合
      if tag == t
        # メソッドを返す
        return true
      end
    end
    # メソッドを返す
    return false
  end
end
#==============================================================================
# ■ Sprite_Character
#------------------------------------------------------------------------------
#  キャラクター表示用のスプライトです。
#   Game_Character クラスのインスタンスを監視し、
#   スプライトの状態を自動的に変化させます。
#==============================================================================

class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # ● 解放
  #    alias : dispose_MINTO_Mirror_Tile
  #--------------------------------------------------------------------------
  alias :dispose_MINTO_Mirror_Tile :dispose
  def dispose
    # 鏡床が存在する場合
    if @mirror_tile_sprite != nil then
      # 鏡床を解放
      @mirror_tile_sprite.bitmap.dispose
      @mirror_tile_sprite.dispose
    end
    # 元の処理を実行
    dispose_MINTO_Mirror_Tile
  end
  #--------------------------------------------------------------------------
  # ● 鏡床有効判定
  #    x  : X 座標
  #    y  : Y 座標
  #--------------------------------------------------------------------------
  def mirror_tile_include?(x, y)
    # 目標のタイルが鏡床の場合
    if $game_map.terrain_tag_include?(x, y, MINTO::Mirror_Tile_ID)
      # 鏡床無効化タイルが有効な場合
      unless MINTO::Not_Mirror_Tile_ID.nil?
        # 鏡床が無効化されていない場合
        unless $game_map.terrain_tag_include?(x, y, MINTO::Not_Mirror_Tile_ID)
          # メソッドを返す
          return true
        end
      # 無効化タイルを使用していない場合
      else
        # メソッドを返す
        return true
      end
    end
    # メソッドを返す
    return false
  end
  #--------------------------------------------------------------------------
  # ● 鏡床の作成
  #--------------------------------------------------------------------------
  def mirror_tile_set
    # 鏡床が存在する場合
    if @mirror_tile_sprite != nil then
      # 鏡床を解放
      @mirror_tile_sprite.bitmap.dispose
      @mirror_tile_sprite.bitmap = nil
      @mirror_tile_sprite.dispose
      @mirror_tile_sprite = nil
    end
    # 最終ファイル名を更新
    @last_tile_id = @character.tile_id
    @last_character_name = @character.character_name.dup
    # 鏡床用のスプライトを生成
    @mirror_tile_sprite = self.dup
    # 座標を調節する
    @mirror_tile_sprite.y = self.y - (self.oy / 6)
    @mirror_tile_sprite.z = self.z
    # 色を白っぽくする
    @mirror_tile_sprite.tone.red = 64
    @mirror_tile_sprite.tone.green = 64
    @mirror_tile_sprite.tone.blue = 64
    # 半透明にする
    @mirror_tile_sprite.opacity = self.opacity * 62 / 100
    # 180度回転させる
    @mirror_tile_sprite.angle = 180
    # 左右を反転させる
    @mirror_tile_sprite.mirror = (not self.mirror == true)
  end
  #--------------------------------------------------------------------------
  # ● 鏡床の更新
  #--------------------------------------------------------------------------
  def update_mirror_tile
    # キャラクターの現在位置を取得
    x = @character.x
    y = @character.y
    # 元々鏡床が存在しない場合
    if @mirror_tile_sprite == nil then
      # メソッドを返す
      return
    end
    # 機能が無効化されている場合
    if $game_switches[MINTO::Not_Mirror_Switch] == true then
      # 不可視状態にする
      @mirror_tile_sprite.visible = false
      # メソッドを返す
      return
    end
    # プレイヤーの場合
    unless @character.is_a?(Game_Event) then
      # 機能が無効化されている場合
      if $game_map.airship.driving == true then
        # 不可視状態にする
        @mirror_tile_sprite.visible = false
        # メソッドを返す
        return
      end
    end
    # 下のタイルが鏡床以外の場合
    if mirror_tile_include?(x, (y + 1)) == false then
      # 鏡床を不可視状態にする
      @mirror_tile_sprite.visible = false
      # メソッドを返す
      return
    # 下のタイルが鏡床の場合
    else
      # Y座標補正値を初期化する
      @y_plus = 6
      #@mirror_tile_sprite.wave_amp = 1
      #@mirror_tile_sprite.wave_length = 60
      #@mirror_tile_sprite.wave_speed = 320
    end
    # 各情報を更新する
    @mirror_tile_sprite.src_rect = self.src_rect.dup
    @mirror_tile_sprite.x = self.x
    @mirror_tile_sprite.y = self.y - (self.oy / 6) + @y_plus
    @mirror_tile_sprite.opacity = self.opacity * 62 / 100
    @mirror_tile_sprite.z = self.z - 1
    @mirror_tile_sprite.visible = self.visible
    @mirror_tile_sprite.update
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #    alias : update_MINTO_Mirror_Tile
  #--------------------------------------------------------------------------
  alias :update_MINTO_Mirror_Tile :update
  def update
    # ファイル名、色相のどれかが現在のものと異なる場合
    if @last_tile_id != @character.tile_id or
      @last_character_name != @character.character_name
      # 鏡床が存在する場合
      if @mirror_tile_sprite != nil then
        # 元の処理を実行
        update_MINTO_Mirror_Tile
        # 鏡床を再作成
        mirror_tile_set
        # 鏡床を更新
        update_mirror_tile
        # メソッドを返す
        return
      end
    end
    # 元の処理を実行
    update_MINTO_Mirror_Tile
    # まだ鏡床を作成していない場合
    if @mirror_tile == nil then
      # キャラクターがイベントの場合
      if @character.is_a?(Game_Event) == true then
        # 有効なイベントの場合
        if @character.list != nil then
          # 最初の内容が注釈の場合
          if @character.list[0].code == 108 then
            # 注釈の内容が「鏡床描写」だった場合
            if @character.list[0].parameters == ["鏡床描写"] then
              # 鏡床を作成
              mirror_tile_set
              # 作成済みフラグをオン
              @mirror_tile = true
            end
          end
        end
      # キャラクターがプレイヤーの場合
      else
        # 鏡床を作成
        mirror_tile_set
        # 作成済みフラグをオン
        @mirror_tile = true
      end
    end
    # 鏡床を更新
    update_mirror_tile
  end
end

end[/pre]

评分

参与人数 1星屑 -10 收起 理由
alexncf125 -10 标题内容不清晰明确

查看全部评分

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2022-4-28 20:05:25 | 显示全部楼层
你把 说明 部分翻译一下不就可以了……
大概就是:
对于图块,如果地形标志为 1,就是可以显示倒影
对于事件,事件页第一个指令为注释,里面写 鏡床描写,就能把这个事件变成也能在图块上显示倒影的角色

评分

参与人数 1星屑 +40 赞 +1 收起 理由
alexncf125 + 40 + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
146
在线时间
17 小时
注册时间
2022-3-12
回帖
4
 楼主| 发表于 2022-4-28 20:07:45 | 显示全部楼层
百里_飞柳 发表于 2022-4-28 20:05
你把 说明 部分翻译一下不就可以了……
大概就是:
对于图块,如果地形标志为 1,就是可以显示倒影

怎么地形标志为1

点评

数据库-图块 里面有专门的一项是设置各个图块的地形标志  发表于 2022-4-28 20:19
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部