赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 18 |
经验 | 0 |
最后登录 | 2024-11-3 |
在线时间 | 254 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1844
- 在线时间
- 254 小时
- 注册时间
- 2018-7-5
- 帖子
- 78
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
这是根据距离自动打开相应独立开关的脚本,应该是和其他脚本冲突了,这种情况要改成怎样才能运行?
- =begin
- RGSS3
-
- ★ 距離によるセルフスイッチ自動切り替え ★
-
- イベントのセルフスイッチをプレイヤーとの距離によって
- 自動的に切り替えます。
-
- ● 使い方 ●========================================================
- イベントの名前に以下の記述を行ってください。
- SDS:<A,B,C,D>
- A,B,C,Dにはそれぞれのセルフスイッチが切り替わるプレイヤーとの距離を
- 数値で設定します。
- 距離によるセルフスイッチ切り替えを行わないスイッチには
- 0 を設定してください。
- --------------------------------------------------------------------
- 各セルフスイッチの距離設定に2種類のオプションを付加することが可能です。
- 必要な場合は距離を示す数値の直後に以下のキーワードを付加してください。
- -r => スイッチの切り替わり判定が逆になります。
- 設定距離より離れたらON, 近づいたらOFF。
- -o => プレイヤーとの距離によりONには自動で切り替わりますが、
- OFFには自動で切り替わらなくなります。
- --------------------------------------------------------------------
- 例) SDS:<0,3-o,6,8-o-r>
- セルフスイッチAに対しては何も行わない。
-
- プレイヤーとの距離が3マス以内の場合、セルフスイッチBをON。
- プレイヤーとの距離が3マスより大きい場合は何もしない。
-
- プレイヤーとの距離が6マス以内の場合、セルフスイッチCをON。
- プレイヤーとの距離が6マスより大きい場合、セルフスイッチCをOFF。
-
- プレイヤーとの距離が8マス以内の場合は何もしない。
- プレイヤーとの距離が8マスより大きい場合、セルフスイッチDをON。
- ====================================================================
-
- ver1.00
-
- Last Update : 2012/06/16
- 06/16 : 新規
-
- ろかん http://kaisou-ryouiki.sakura.ne.jp/
- =end
- $rsi ||= {}
- $rsi["距離によるセルフスイッチ自動切り替え"] = true
- class RPG::Event
- def get_distance_switches_conf
- match = @name.scan(/SDS:<(.*)>/)
- result = []
- if match.first
- match.first.first.split(",").each{|split_data|
- result << get_distance_switch_data(split_data)
- }
- end
- result
- end
- def get_distance_switch_data(split_data)
- option = 0
- if split_data.include?('-r')
- option += 1
- split_data.delete!('-r')
- end
- if split_data.include?('-o')
- option += 2
- split_data.delete!('-o')
- end
- [split_data.to_i, option]
- end
- end
-
- class Game_Event < Game_Character
- SELF_KEY = ['A','B','C','D']
- #--------------------------------------------------------------------------
- # ● リフレッシュ
- #--------------------------------------------------------------------------
- alias _refresh_distance_switch refresh
- def refresh
- set_distance_switch unless @switch_distances
- _refresh_distance_switch
- end
- #--------------------------------------------------------------------------
- # ● 距離によるスイッチ切り替え情報の初期化
- #--------------------------------------------------------------------------
- def set_distance_switch
- @switch_distances = @event.get_distance_switches_conf
- end
- #--------------------------------------------------------------------------
- # ● プレイヤーからの距離を取得
- #--------------------------------------------------------------------------
- def distance_from_player
- distance_x_from($game_player.x).abs + distance_y_from($game_player.y).abs
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- alias _update_distance_switch update
- def update
- update_switch unless @switch_distances.empty?
- _update_distance_switch
- end
- #--------------------------------------------------------------------------
- # ● 距離によるスイッチ切り替え更新
- #--------------------------------------------------------------------------
- def update_switch
- distance = distance_from_player
- @switch_distances.each_with_index{|conf_data, index|
- unless conf_data[0].zero?
- case conf_data[1]
- when 0
- result = distance <= conf_data[0]
- when 1
- result = distance > conf_data[0]
- when 2
- result = distance <= conf_data[0]
- next unless result
- when 3
- result = distance > conf_data[0]
- next unless result
- end
- $game_self_switches[[@map_id, @event.id, SELF_KEY[index]]] = result
- end
- }
- end
- end
复制代码 |
|