赞 | 1 |
VIP | 6 |
好人卡 | 1 |
积分 | 65 |
经验 | 9766 |
最后登录 | 2024-11-28 |
在线时间 | 493 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 6496
- 在线时间
- 493 小时
- 注册时间
- 2010-8-27
- 帖子
- 254
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 zxlxp2006 于 2013-2-17 20:32 编辑
好吧我又来问问题了
试着搜索了一下没找到管用的办法。
刚打开的时候没事,点开始游戏后就会直接黑屏掉。
按F12后,系统弹出了:
Ocorreu um erro em SystemStackError, durante opera??o de script. stack level too deep.
脚本运行过程中发生错误SystemStackError。堆栈过深。
……的提示,然后就自动关闭了。
重启过系统,没有用,可能不是电脑本身的问题。
用的是天圣的AVG范例系统,CG鉴赏那一块都还能正常运行就是一开始游戏就黑屏……
系统是在我加了这两段事件后突然就出了问题的:
我猜可能跟那个ED有关……
求帮助,感激不尽,如果需要具体的工程请提出来。
(全废党给跪了……)
需要用到工程么?我先把我改过的脚本粘上来。- =begin
- ★修改方面的罗嗦★
- 素材替换和排版参见Scene_Menu,这个就不说了。
- 这系统其实用起来原理很简单,自定义的部分也多,当然最麻烦的也在于此。
- 脚本里你需要修改的大部分只是数字,我会尽可能详细地解释,也欢迎repo使用中
- 出现的问题。
- =end
- class Window_CG < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化窗口
- #--------------------------------------------------------------------------
- def initialize
- super(-16, -16, 656, 496) #去掉因为边框而导致的坐标误差
- self.contents = Bitmap.new(width - 32, height - 32)
- self.opacity = 0
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- self.contents.clear
- #从这里开始进入缩略图出现与否的判定。做好教程里提到的『三步骤』之后,
- #系统已经记录了你继承的物品数据。接下来就是直接用其判定。
- #注意3号变量被用来记录当前选定CG的编号。
- #请看下面的例子。
- #=========================================================
- if $game_party.item_number(1) > 0 #1号物品(CG1)如果已经获得的话
- bitmap=Bitmap.new("Graphics/pictures/CG1_s") #显示CG1的缩略图
- src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
- if $game_variables[3] == 1
- self.contents.blt(100, 40, bitmap, src_rect,255)
- #前两个数字是坐标可自定义。最后一个数字是判定当该CG被选中时透明度是正常的。
- else #否则透明度降低表示尚未被选中。
- self.contents.blt(100, 40, bitmap, src_rect,155)
- end
- end
- #=========================================================
- #这是CG2的设置,改几个小地方即可
- if $game_party.item_number(2) > 0 #这里是对应的2号物品
- bitmap=Bitmap.new("Graphics/pictures/CG2_s") #显示CG2的缩略图
- src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
- if $game_variables[3] == 2 #选中CG变量改为2
- self.contents.blt(250, 40, bitmap, src_rect,255) #坐标……
- else
- self.contents.blt(250, 40, bitmap, src_rect,155)
- end
- end
-
- #=========================================================
- #以此类推,做好你的CG3、CG4……这样基础排版就已经完成了。
- #没有得到的CG,因为物品数为0,所以不会显示出来。底图上可以画个空框啥的……
- if $game_party.item_number(3) > 0 #这里是对应的3号物品
- bitmap=Bitmap.new("Graphics/pictures/CG3_s") #显示CG2的缩略图
- src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
- if $game_variables[3] == 3 #选中CG变量改为3
- self.contents.blt(400, 40, bitmap, src_rect,255) #坐标……
- else
- self.contents.blt(400, 40, bitmap, src_rect,155)
- end
- end
- ##########
- if $game_party.item_number(4) > 0
- bitmap=Bitmap.new("Graphics/pictures/CG4_s")
- src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
- if $game_variables[3] == 4
- self.contents.blt(100, 180, bitmap, src_rect,255)
- else
- self.contents.blt(100, 180, bitmap, src_rect,155)
- end
- end
- ##########
- if $game_party.item_number(5) > 0
- bitmap=Bitmap.new("Graphics/pictures/CG5_s")
- src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
- if $game_variables[3] == 5
- self.contents.blt(250, 180, bitmap, src_rect,255)
- else
- self.contents.blt(250, 180, bitmap, src_rect,155)
- end
- end
- ##########
- if $game_party.item_number(6) > 0
- bitmap=Bitmap.new("Graphics/pictures/bg01_s")
- src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
- if $game_variables[3] == 6
- self.contents.blt(400, 180, bitmap, src_rect,255)
- else
- self.contents.blt(400, 180, bitmap, src_rect,155)
- end
- end
- ##########
- end
- end
- #==============================================================================
- # ■ Scene_CG
- #------------------------------------------------------------------------------
- # 处理CG鉴赏画面的类。
- #==============================================================================
- class Scene_CG
- #--------------------------------------------------------------------------
- # ● 主处理
- #--------------------------------------------------------------------------
- def main
- $game_variables[3] = 0 #初始化变量
- @cg_window = Window_CG.new
- @back = Sprite.new
- @back.bitmap = RPG::Cache.picture("ui_log")
- # 执行过渡
- Graphics.transition
- # 主循环
- loop do
- # 刷新游戏画面
- Graphics.update
- # 刷新输入信息
- Input.update
- # 刷新画面
- update
- # 如果画面被切换的话就中断循环
- if $scene != self
- break
- end
- end
- # 准备过渡
- Graphics.freeze
- # 释放窗口
- # @command_window.dispose
- @cg_window.dispose
- @back.dispose
- end
- #--------------------------------------------------------------------------
- # ● 刷新画面
- #--------------------------------------------------------------------------
- def update
- $mouse_x, $mouse_y = Mouse.get_mouse_pos #获得鼠标的即时坐标
- # 按下 B 键的情况下
- if Input.trigger?(Input::B)
- # 演奏取消 SE
- $game_system.se_play($data_system.cancel_se)
- # 切换到菜单画面
- $scene = Scene_Title.new
- return
- end
- #
-
- #【重点注意】关于鼠标的刷新。其实原理就是判断鼠标是否落在缩略图上。
-
- #如果落在上面了,则给变量赋值表示选中了某CG。否则将变量清零。
-
- #以CG1为例,上面设置过X坐标100,Y坐标40(左上角原点坐标)。
- #宽高分别是120和90(按你自己做的缩略图大小)。
-
- #所以,CG左上角在(100,40)处,右上角在(220,40)处,左下角在(100,130)处,
-
- #右下角在(220,130)处。(还搞不清的自己画个长方形就知道怎么回事了)
-
- #所以鼠标的X坐标如果在100~220之间同时Y坐标在40~130之间,
-
- #即表示鼠标移动到了这张缩略图上。
-
- if $mouse_x <= 220 and $mouse_x >= 100 and $mouse_y <= 130 and $mouse_y >= 40
- if $game_party.item_number(1) > 0 #CG已经获得时才进行判定
- if $game_variables[3] != 1 #如果现在还没选中该CG的话
- $game_system.se_play($data_system.cursor_se)
- $game_variables[3] = 1 #当前选定CG1
- @cg_window.refresh #刷新一下CG窗口,让原本半透明的CG正回来
- end
- end
-
- elsif $mouse_x <= 370 and $mouse_x >= 250 and $mouse_y <= 130 and $mouse_y >= 40
- if $game_party.item_number(2) > 0 #CG2已经获得时才进行判定
- if $game_variables[3] != 2 #如果现在还没选中该CG的话
- $game_system.se_play($data_system.cursor_se)
- $game_variables[3] = 2 #当前选定CG2
- @cg_window.refresh
- end
- end #这是第二张CG的判定范例。需要更多请用elsif继续接下去。
-
- elsif $mouse_x <= 520 and $mouse_x >= 400 and $mouse_y <= 130 and $mouse_y >= 40
- if $game_party.item_number(3) > 0 #CG3已经获得时才进行判定
- if $game_variables[3] != 3 #如果现在还没选中该CG的话
- $game_system.se_play($data_system.cursor_se)
- $game_variables[3] = 3 #当前选定CG3
- @cg_window.refresh
- end
- end
-
- elsif $mouse_x <= 220 and $mouse_x >= 100 and $mouse_y <= 270 and $mouse_y >= 180
- if $game_party.item_number(4) > 0 #CG4已经获得时才进行判定
- if $game_variables[3] != 4 #如果现在还没选中该CG的话
- $game_system.se_play($data_system.cursor_se)
- $game_variables[3] = 4 #当前选定CG4
- @cg_window.refresh
- end
- end
-
- elsif $mouse_x <= 370 and $mouse_x >= 250 and $mouse_y <= 270 and $mouse_y >= 180
- if $game_party.item_number(5) > 0 #CG5已经获得时才进行判定
- if $game_variables[3] != 5 #如果现在还没选中该CG的话
- $game_system.se_play($data_system.cursor_se)
- $game_variables[3] = 5 #当前选定CG5
- @cg_window.refresh
- end
- end
-
- elsif $mouse_x <= 520 and $mouse_x >= 400 and $mouse_y <= 270 and $mouse_y >= 180
- if $game_party.item_number(6) > 0
- if $game_variables[3] != 6
- $game_system.se_play($data_system.cursor_se)
- $game_variables[3] = 6
- @cg_window.refresh
- end
- end
-
- else
- $game_variables[3] = 0
- @cg_window.refresh
- end
- if Input.trigger?(Input::C)
- if $game_variables[3] != 0 #有CG被选中的时候
- $game_system.se_play($data_system.decision_se)
- $game_map.setup(2) #移动到2号地图。(地图ID在新建地图可看到)编号自己能改。
- $game_player.moveto(0,0)
- $game_player.refresh
- $game_map.autoplay
- $game_map.update
- $scene = Scene_Map.new
- #接下来显示出CG或者制作回想之类的内容就都是那张地图上的事情了。
- #因为3号变量已经被赋值,所以直接利用条件分歧显示不同图片即可。
- end
- end
- end
- end
复制代码 |
|