某個腳本衝突

查看数: 1623 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-4-5 19:03

正文摘要:

如題 這是一個可以讓事件繞圈圈的腳本,不過似乎衝突出錯了,可以請高手幫忙修正嗎? [pre lang="ruby"]#============================================================================== # ★ RGSS3_キャラク ...

回复

cinderelmini 发表于 2016-4-7 17:22:00
噗……看起来是同名方法的锅……
随便打开这两个的其中一个,
把里面所有的【clear_ex_param】字段都改成【clear_ex_param_b】试试看。

点评

收到! 這就去試XD  发表于 2016-4-7 23:06

评分

参与人数 2星屑 +15 梦石 +1 收起 理由
丿梁丶小柒 + 1 认可答案
duzine + 15 认可答案

查看全部评分

duzine 发表于 2016-4-7 15:54:16
cinderelmini 发表于 2016-4-7 12:32
排除读旧档和冲突的问题,
如果是事件要用这个效果的话,还要另外设置一些东西,
在事件的名字或者事件内容 ...

我好像查出來

只要高於我底下這個腳本就會出錯,而低於則會導致底下這個腳本出錯...
底下這個可以做出一點事件位移的效果,然而同作者的腳本居然打架了...

[pre lang="ruby"]=begin

作者:tomoaky
webサイト:ひきも記は閉鎖しました。 (http://hikimoki.sakura.ne.jp/)

キャラクタースプライトに以下の機能を追加します。
  ・表示座標の補正
  ・任意の拡大率に変更
  ・任意の回転角度に変更

イベントコマンド『スクリプト』で以下のコマンドが使えるようになります。
  set_shift(shift_x, shift_y, event_id)
    指定したIDのイベントのをX方向に shift_x、Y方向に shift_y だけ
    ずらして表示します。
  
  set_angle(angle, event_id)
    指定したIDのイベントの回転角度を angle に変更します(0 ~ 360)

  set_zoom(zoom_x, zoom_y, event_id)
    指定したIDのイベントの拡大率を zoom_x, zoom_y に変更します、
    set_zoom(1.5, 3.0, 1) とした場合はイベントID1を横1.5倍、縦3倍。

event_id を省略、あるいは 0 を指定した場合は実行中のイベントを対象とし、
-1 が指定されればプレイヤーが対象となります。

すべての値を省略することでパラメータを初期値に戻すことができます。

スクリプトコマンドを使う方法以外に、イベント名や注釈コマンドを使って
設定することもできます。以下の文字列をイベント名か注釈に加えてください。
  <st 4, 8>   … 座標補正の設定、右に4、下に8ドット
  <zm 1.5, 2.0> … 拡大率の設定、横1.5倍、縦2倍
  <an 45>    … 回転角度の設定、半時計回りに45度
  
  注釈コマンドを使う場合は必ずイベント実行内容の一番上で設定してください。
  
  
=== 注意 ===
 ・設定したパラメータはイベントページの変更などによって初期化されます、
  イベントコマンドとイベント名、注釈をうまく使い分けてください。

2015/10/01  Ver1.01
・説明にあるのに実装されていなかった機能を実装

2015/09/11  Ver1.0
公開
  
=end

#==============================================================================
# □ モジュール
#==============================================================================
module TMSUPERSPR
  REGEXP_ST = /<st\s*(\-*\d+)\s*\,\s*(\-*\d+)>/i
  REGEXP_ZM = /<zm\s*(\d+(?:\.\d+)?)\s*\,\s*(\d+(?:\.\d+)?)>/i
  REGEXP_AN = /<an\s*(\-*\d+)>/i
module Commands
  #--------------------------------------------------------------------------
  # ○ キャラクタースプライトの座標補正値を変更
  #--------------------------------------------------------------------------
  def set_shift(shift_x = 0, shift_y = 0, event_id = 0)
    target = get_character(event_id)
    return unless target
    target.shift_x_ex = shift_x
    target.shift_y_ex = shift_y
  end
  #--------------------------------------------------------------------------
  # ○ キャラクタースプライトの回転角度を変更
  #--------------------------------------------------------------------------
  def set_angle(angle = 0, event_id = 0)
    target = get_character(event_id)
    return unless target
    target.angle = angle
  end
  #--------------------------------------------------------------------------
  # ○ キャラクタースプライトの拡大率を変更
  #--------------------------------------------------------------------------
  def set_zoom(zoom_x = 1.0, zoom_y = 1.0, event_id = 0)
    target = get_character(event_id)
    return unless target
    target.zoom_x = zoom_x
    target.zoom_y = zoom_y
  end
end # module Commands
end # module TMSUPERSPR

#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :shift_x_ex                 # X方向の座標補正値
  attr_accessor :shift_y_ex                 # Y方向の座標補正値
  attr_accessor :zoom_x                     # X方向の拡大率
  attr_accessor :zoom_y                     # Y方向の拡大率
  attr_accessor :angle                      # 回転角度
  #--------------------------------------------------------------------------
  # ● 公開メンバ変数の初期化
  #--------------------------------------------------------------------------
  alias tmsuperspr_game_character_init_public_members init_public_members
  def init_public_members
    tmsuperspr_game_character_init_public_members
    clear_ex_param
  end
  #--------------------------------------------------------------------------
  # ● 画面 X 座標の取得
  #--------------------------------------------------------------------------
  def screen_x
    super + @shift_x_ex
  end
  #--------------------------------------------------------------------------
  # ● 画面 Y 座標の取得
  #--------------------------------------------------------------------------
  def screen_y
    super + @shift_y_ex
  end
  #--------------------------------------------------------------------------
  # ○ キャラクター拡張用パラメータの初期化
  #--------------------------------------------------------------------------
  def clear_ex_param
    @shift_x_ex = 0
    @shift_y_ex = 0
    @zoom_x = 1.0
    @zoom_y = 1.0
    @angle = 0
  end
end

#==============================================================================
# ■ Game_Event
#==============================================================================
class Game_Event < Game_Character
  include TMSUPERSPR::Commands
  #--------------------------------------------------------------------------
  # ● イベントページの設定をセットアップ
  #--------------------------------------------------------------------------
  alias tmsuperspr_game_event_setup_page_settings setup_page_settings
  def setup_page_settings
    tmsuperspr_game_event_setup_page_settings
    clear_ex_param
    if @list
      @shift_x_ex, @shift_y_ex = $1.to_i, $2.to_i if TMSUPERSPR::REGEXP_ST =~ @event.name
      @zoom_x, @zoom_y = $1.to_f, $2.to_f if TMSUPERSPR::REGEXP_ZM =~ @event.name
      @angle = $1.to_i if TMSUPERSPR::REGEXP_AN =~ @event.name
      @list.each do |list|
        if list.code == 108 || list.code == 408
          text = list.parameters[0]
          @shift_x_ex, @shift_y_ex = $1.to_i, $2.to_i if TMSUPERSPR::REGEXP_ST =~ text
          @zoom_x, @zoom_y = $1.to_f, $2.to_f if TMSUPERSPR::REGEXP_ZM =~ text
          @angle = $1.to_i if TMSUPERSPR::REGEXP_AN =~ text
        else
          break
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ キャラクターの取得
  #     param : -1 ならプレイヤー、0 ならこのイベント、それ以外はイベント ID
  #--------------------------------------------------------------------------
  def get_character(param)
    if param < 0
      $game_player
    else
      $game_map.events[param > 0 ? param : @id]
    end
  end
end

#==============================================================================
# ■ Sprite_Character
#==============================================================================
class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias tmsuperspr_sprite_character_update update
  def update
    tmsuperspr_sprite_character_update
    self.zoom_x = @character.zoom_x
    self.zoom_y = @character.zoom_y
    self.angle = @character.angle
  end
end

#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
  include TMSUPERSPR::Commands
end[/pre]
cinderelmini 发表于 2016-4-7 12:32:43
排除读旧档和冲突的问题,
如果是事件要用这个效果的话,还要另外设置一些东西,
在事件的名字或者事件内容里使用【注释】功能输入上面代码框的53~58行的内容……

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

在本版发帖返回顶部