设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4153|回复: 5
打印 上一主题 下一主题

[已经解决] 请问脚本错误system stack error stacklevel too deep怎么修改正常?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1844
在线时间
254 小时
注册时间
2018-7-5
帖子
78
跳转到指定楼层
1
发表于 2018-7-9 21:54:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这是根据距离自动打开相应独立开关的脚本,应该是和其他脚本冲突了,这种情况要改成怎样才能运行?

  1. =begin
  2.       RGSS3
  3.       
  4.       ★ 距離によるセルフスイッチ自動切り替え ★
  5.       
  6.       イベントのセルフスイッチをプレイヤーとの距離によって
  7.       自動的に切り替えます。
  8.       
  9.       ● 使い方 ●========================================================
  10.       イベントの名前に以下の記述を行ってください。
  11.          SDS:<A,B,C,D>
  12.       A,B,C,Dにはそれぞれのセルフスイッチが切り替わるプレイヤーとの距離を
  13.       数値で設定します。
  14.       距離によるセルフスイッチ切り替えを行わないスイッチには
  15.       0 を設定してください。
  16.       --------------------------------------------------------------------
  17.       各セルフスイッチの距離設定に2種類のオプションを付加することが可能です。
  18.       必要な場合は距離を示す数値の直後に以下のキーワードを付加してください。
  19.       -r => スイッチの切り替わり判定が逆になります。
  20.             設定距離より離れたらON, 近づいたらOFF。
  21.       -o => プレイヤーとの距離によりONには自動で切り替わりますが、
  22.          OFFには自動で切り替わらなくなります。
  23.       --------------------------------------------------------------------
  24.       例) SDS:<0,3-o,6,8-o-r>
  25.       セルフスイッチAに対しては何も行わない。
  26.       
  27.       プレイヤーとの距離が3マス以内の場合、セルフスイッチBをON。
  28.       プレイヤーとの距離が3マスより大きい場合は何もしない。
  29.       
  30.       プレイヤーとの距離が6マス以内の場合、セルフスイッチCをON。
  31.       プレイヤーとの距離が6マスより大きい場合、セルフスイッチCをOFF。
  32.       
  33.       プレイヤーとの距離が8マス以内の場合は何もしない。
  34.       プレイヤーとの距離が8マスより大きい場合、セルフスイッチDをON。
  35.       ====================================================================
  36.       
  37.       ver1.00
  38.       
  39.       Last Update : 2012/06/16
  40.       06/16 : 新規
  41.       
  42.       ろかん   http://kaisou-ryouiki.sakura.ne.jp/
  43. =end

  44. $rsi ||= {}
  45. $rsi["距離によるセルフスイッチ自動切り替え"] = true

  46. class RPG::Event
  47.   def get_distance_switches_conf
  48.     match = @name.scan(/SDS:<(.*)>/)
  49.     result = []
  50.     if match.first
  51.       match.first.first.split(",").each{|split_data|
  52.         result << get_distance_switch_data(split_data)
  53.       }
  54.     end
  55.     result
  56.   end
  57.   def get_distance_switch_data(split_data)
  58.     option = 0
  59.     if split_data.include?('-r')
  60.       option += 1
  61.       split_data.delete!('-r')
  62.     end
  63.     if split_data.include?('-o')
  64.       option += 2
  65.       split_data.delete!('-o')
  66.     end
  67.     [split_data.to_i, option]
  68.   end
  69. end
  70.   
  71. class Game_Event < Game_Character
  72.   SELF_KEY = ['A','B','C','D']
  73.   #--------------------------------------------------------------------------
  74.   # ● リフレッシュ
  75.   #--------------------------------------------------------------------------
  76.   alias _refresh_distance_switch refresh
  77.   def refresh
  78.     set_distance_switch unless @switch_distances
  79.     _refresh_distance_switch
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 距離によるスイッチ切り替え情報の初期化
  83.   #--------------------------------------------------------------------------
  84.   def set_distance_switch
  85.     @switch_distances = @event.get_distance_switches_conf
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● プレイヤーからの距離を取得
  89.   #--------------------------------------------------------------------------
  90.   def distance_from_player
  91.     distance_x_from($game_player.x).abs + distance_y_from($game_player.y).abs
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● フレーム更新
  95.   #--------------------------------------------------------------------------
  96.   alias _update_distance_switch update
  97.   def update
  98.     update_switch unless @switch_distances.empty?
  99.     _update_distance_switch
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 距離によるスイッチ切り替え更新
  103.   #--------------------------------------------------------------------------
  104.   def update_switch
  105.     distance = distance_from_player
  106.     @switch_distances.each_with_index{|conf_data, index|
  107.       unless conf_data[0].zero?
  108.         case conf_data[1]
  109.         when 0
  110.           result = distance <= conf_data[0]
  111.         when 1
  112.           result = distance > conf_data[0]
  113.         when 2
  114.           result = distance <= conf_data[0]
  115.           next unless result
  116.         when 3
  117.           result = distance > conf_data[0]
  118.           next unless result
  119.         end
  120.         $game_self_switches[[@map_id, @event.id, SELF_KEY[index]]] = result
  121.       end
  122.     }
  123.   end
  124. end


复制代码

Lv3.寻梦者

梦石
0
星屑
1844
在线时间
254 小时
注册时间
2018-7-5
帖子
78
2
 楼主| 发表于 2018-7-9 21:56:12 | 只看该作者
或者有没有类似功能的不用前置的脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42404
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

3
发表于 2018-7-10 18:58:44 | 只看该作者
具体是第几行没有提示吗
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1844
在线时间
254 小时
注册时间
2018-7-5
帖子
78
4
 楼主| 发表于 2018-7-10 21:44:27 | 只看该作者
fux2 发表于 2018-7-10 18:58
具体是第几行没有提示吗

没有,载入游戏或者新游戏就弹框,只有 stack level too deep

点评

有提示too deep 就是跟其他脚本重复使用了。 看其他脚本又没相同放2个脚本或是重复调用  发表于 2018-7-15 02:30
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1844
在线时间
254 小时
注册时间
2018-7-5
帖子
78
5
 楼主| 发表于 2018-7-15 15:08:52 | 只看该作者
本帖最后由 URUUR 于 2018-7-15 15:14 编辑

确实是重复了,没仔细查找的结果
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 17:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表