Project1
标题:
请问脚本错误system stack error stacklevel too deep怎么修改正常?
[打印本页]
作者:
URUUR
时间:
2018-7-9 21:54
标题:
请问脚本错误system stack error stacklevel too deep怎么修改正常?
这是根据距离自动打开相应独立开关的脚本,应该是和其他脚本冲突了,这种情况要改成怎样才能运行?
=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
复制代码
作者:
URUUR
时间:
2018-7-9 21:56
或者有没有类似功能的不用前置的脚本
作者:
fux2
时间:
2018-7-10 18:58
具体是第几行没有提示吗
作者:
URUUR
时间:
2018-7-10 21:44
fux2 发表于 2018-7-10 18:58
具体是第几行没有提示吗
没有,载入游戏或者新游戏就弹框,只有 stack level too deep
作者:
URUUR
时间:
2018-7-15 15:08
本帖最后由 URUUR 于 2018-7-15 15:14 编辑
确实是重复了,没仔细查找的结果
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1