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

Project1

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

[已经过期] 帮我看看我这个脚本为什么会掉贞,是哪没释放

[复制链接]

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

跳转到指定楼层
1
发表于 2016-10-29 13:59:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 yang1zhi 于 2016-10-30 20:17 编辑

RUBY 代码复制
  1. #==============================================================================
  2. # ■ $scene =Scene_cunli.new
  3. #------------------------------------------------------------------------------
  4. module CUNLI
  5.   #列表
  6.   CL_LB = {
  7.   4 => ["休息","镇街","兽栏","探险"], #主角家
  8.   6 => ["传授间","怪伴间","道具间","回家"],    #兽栏
  9.   7 => ["食品店","装备店","宠物店","镇街"],  #商店街
  10.   14 => ["竞技","决斗街"],  #竞技场
  11.   21 => ["商店街","决斗街","公园","回家"] ,     #镇街
  12.   33 => ["买卖","商店街"] ,     #食品店
  13.   34 => ["买卖","商店街"] ,     #装备店
  14.   35 => ["买卖","商店街"] ,     #道具店
  15.   38 => [] ,     #休息
  16.   39 => ["竞技场","比赛","镇街"] ,     #决斗街
  17.   40 => ["竞技场","比赛","镇街"]      #公园
  18.   }
  19. end
  20. class Scene_cunli
  21.  
  22. #--------------------------------------------------------------------------
  23.   # ● 主处理
  24.   #--------------------------------------------------------------------------
  25.   def main
  26.     #清理变量
  27.     $game_temp.common_event_id = 5
  28.     # 生成活动块
  29.     @spriteset = Spriteset_Map.new
  30.     # 生成信息窗口
  31.     @message_window = Window_Message.new
  32.     #生成对话框
  33.     @duihua_window = Window_Duihua.new
  34.     @duihua_window.z = 0
  35.     @duihua_window.opacity = 255
  36.     @duihua_window.back_opacity = 255
  37.       # 生成介绍窗口
  38.     @jies_window = Window_cunlijies.new
  39.     @jies_window.z =10
  40.     #生成选择窗口
  41.      @cunlicommand_window = Window_cunliCommand.new
  42.     @cunlicommand_window.z =10
  43.      @cunlicommand_window.index = 0      
  44.     @cunlicommand_window.opacity = 255
  45. @cunlicommand_window.back_opacity = 255
  46. $game_map.autoplay
  47.     # 执行过度
  48.     Graphics.transition
  49.     # 主循环
  50.     loop do
  51.       # 刷新游戏画面
  52.       Graphics.update
  53.       # 刷新输入信息
  54.       Input.update
  55.       # 刷新画面
  56.       update
  57.       # 如果画面切换就中断循环
  58.       if $scene != self
  59.         break
  60.       end
  61.     end
  62.     # 装备过渡
  63.     Graphics.freeze
  64.     # 释放窗口
  65.     @message_window.dispose
  66.     @spriteset.dispose
  67.     @jies_window.dispose
  68.     @cunlicommand_window.dispose
  69.     @duihua_window.dispose
  70.  
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 刷新画面
  74.   #--------------------------------------------------------------------------
  75.   def update
  76.     if   $game_switches[51] == true
  77.       @duihua_window.z = 20
  78.     else
  79.       @duihua_window.z = 0
  80.       end
  81.         #对话以及奖励
  82.     duihua_jiangli
  83.     updatenew
  84.     # 更新判断
  85.       update_command
  86.       #对话中不能选项
  87.       if $game_switches[51] == false
  88.       # 光标下 (+1)
  89.       if Input.trigger?(Input::UP)
  90.         #播放SE
  91.         $game_system.se_play($data_system.cursor_se)
  92.         @cunlicommand_window.index -= 1
  93.     @cunlicommand_window.index = CUNLI::CL_LB[$game_map.map_id].size - 1   if @cunlicommand_window.index < 0
  94.  
  95.     end
  96.       # 光标上 (-1)
  97.       if Input.trigger?(Input::DOWN)
  98.         $game_system.se_play($data_system.cursor_se)
  99.         @cunlicommand_window.index += 1
  100.      @cunlicommand_window.index = 0   if @cunlicommand_window.index > CUNLI::CL_LB[$game_map.map_id].size - 1
  101.    end
  102.    end
  103.    #介绍窗口
  104.     @jies_window.set_ren(@cunlicommand_window.index)
  105.    end
  106. def update_command
  107.    if Input.trigger?(Input::B)
  108.       # 演奏取消 SE
  109.       $game_system.se_play($data_system.cancel_se)
  110.       # 切换的菜单画面
  111.       $scene = Scene_Menu.new
  112.       return
  113.     end
  114.    if Input.trigger?(Input::C)  and  $game_switches[51] == false and @duihua_window.z == 0
  115.       # 演奏取消 SE
  116.       $game_system.se_play($data_system.cancel_se)
  117.       if $game_map.map_id == 4 #主角的房间
  118.       if @cunlicommand_window.index == 0 #休息
  119.       $scene = Scene_Save.new
  120.   if $game_variables[74] == 0
  121.     $game_variables[72] = "初梦"
  122.     $game_variables[57] = "ZZZZZZZZZ/"
  123.     $game_party.gb_quan_huifu
  124.     $game_switches[51] = true
  125.     $game_switches[52] = true
  126. end
  127.       return
  128.  
  129.      elsif @cunlicommand_window.index == 1 #镇街
  130.        # 设置新地图
  131.       $game_map.setup(21)
  132.       # 设置主角位置
  133.       $game_player.moveto(9,9)
  134.       elsif @cunlicommand_window.index == 2 #兽栏
  135.       # 设置新地图
  136.       $game_map.setup(6)
  137.       # 设置主角位置
  138.       $game_player.moveto(9, 9)
  139.     elsif @cunlicommand_window.index == 3 #探险
  140.       $game_temp.common_event_id = 1
  141.       # 设置新地图
  142.       $game_map.setup(11)
  143.       # 设置主角位置
  144.       $game_player.moveto(0,15)
  145.     end
  146.   elsif $game_map.map_id == 6 #兽栏
  147.     if @cunlicommand_window.index == 0 #传授间
  148.                   #队伍刷新
  149. $game_variables[1] = 7
  150. $game_party.refresh_fbs
  151. $game_party.friend_party_update
  152. BFS_Friends.weapon_recheck
  153. $game_temp.friends_need_refresh
  154.       $scene = Scene_jiaojineng_xuanren.new
  155.       return
  156.     elsif @cunlicommand_window.index == 1 #怪伴间
  157.       $scene = Chaochao_Scene_Party.new
  158.       return
  159.     elsif @cunlicommand_window.index == 2 #道具间
  160.       $scene = Scene_Warehouse.new
  161.       return
  162.     elsif @cunlicommand_window.index == 3 #回家
  163.       # 设置新地图
  164.       $game_map.setup(4)
  165.       # 设置主角位置
  166.       $game_player.moveto(9,9)
  167.     end
  168.   elsif $game_map.map_id == 7 #商店街
  169.       if @cunlicommand_window.index == 0 #食品店
  170.       # 设置新地图
  171.       $game_map.setup(33)
  172.       # 设置主角位置
  173.       $game_player.moveto(9,9)
  174.     elsif @cunlicommand_window.index == 1 #装备店
  175.       # 设置新地图
  176.       $game_map.setup(34)
  177.       # 设置主角位置
  178.       $game_player.moveto(9,9)
  179.     elsif @cunlicommand_window.index == 2 #道具店
  180.       # 设置新地图
  181.       $game_map.setup(35)
  182.       # 设置主角位置
  183.       $game_player.moveto(9,9)
  184.     elsif @cunlicommand_window.index == 3 #镇街
  185.       # 设置新地图
  186.       $game_map.setup(21)
  187.       # 设置主角位置
  188.       $game_player.moveto(9,9)
  189.     end
  190.   elsif $game_map.map_id == 33 #食品店
  191.       if @cunlicommand_window.index == 0 #买卖
  192.       $game_temp.shop_goods = []
  193.       for i in 1..6
  194.     $game_temp.shop_goods.push([0,i])
  195.     end
  196.       for i in 35..43
  197.     $game_temp.shop_goods.push([0,i])
  198.     end
  199.     # 清除商店调用标志
  200.     $game_temp.shop_calling = false
  201.     # 矫正主角姿势
  202.     $game_player.straighten
  203.     # 切换到商店画面
  204.     $scene = Scene_Shop.new
  205.     return
  206.     elsif @cunlicommand_window.index == 1 #商店街
  207.       # 设置新地图
  208.       $game_map.setup(7)
  209.       # 设置主角位置
  210.       $game_player.moveto(9,9)
  211.     end
  212.   elsif $game_map.map_id == 34 #装备店
  213.       if @cunlicommand_window.index == 0 #买卖
  214.       $game_temp.shop_goods = []
  215.       for i in 11..25
  216.     $game_temp.shop_goods.push([2,i])
  217.     end
  218.     # 清除商店调用标志
  219.     $game_temp.shop_calling = false
  220.     # 矫正主角姿势
  221.     $game_player.straighten
  222.     # 切换到商店画面
  223.     $scene = Scene_Shop.new
  224.     return
  225.     elsif @cunlicommand_window.index == 1 #商店街
  226.       # 设置新地图
  227.       $game_map.setup(7)
  228.       # 设置主角位置
  229.       $game_player.moveto(9,9)
  230.     end  elsif $game_map.map_id == 35 #道具店
  231.       if @cunlicommand_window.index == 0 #买卖
  232.       $game_temp.shop_goods = []
  233.       for i in 100..102
  234.     $game_temp.shop_goods.push([0,i])
  235.     end
  236.     # 清除商店调用标志
  237.     $game_temp.shop_calling = false
  238.     # 矫正主角姿势
  239.     $game_player.straighten
  240.     # 切换到商店画面
  241.     $scene = Scene_Shop.new
  242.     return
  243.     elsif @cunlicommand_window.index == 1 #商店街
  244.       # 设置新地图
  245.       $game_map.setup(7)
  246.       # 设置主角位置
  247.       $game_player.moveto(9,9)
  248.     end
  249.   elsif $game_map.map_id == 21 #镇街
  250.       if @cunlicommand_window.index == 0 #商店街
  251.       # 设置新地图
  252.       $game_map.setup(7)
  253.       # 设置主角位置
  254.       $game_player.moveto(9,9)
  255.     elsif @cunlicommand_window.index == 1 #决斗街
  256.       # 设置新地图
  257.       $game_map.setup(39)
  258.       # 设置主角位置
  259.       $game_player.moveto(9,9)
  260.     elsif @cunlicommand_window.index == 2 #公园
  261.       # 设置新地图
  262.       $game_map.setup(40)
  263.       # 设置主角位置
  264.       $game_player.moveto(9,9)
  265.     elsif @cunlicommand_window.index == 3 #回家
  266.       # 设置新地图
  267.       $game_map.setup(4)
  268.       # 设置主角位置
  269.       $game_player.moveto(9,9)
  270.     end
  271.     elsif $game_map.map_id == 39 #决斗街
  272.       if @cunlicommand_window.index == 0 #竞技场
  273.       # 设置新地图
  274.       $game_map.setup(14)
  275.       # 设置主角位置
  276.       $game_player.moveto(9,9)
  277.     elsif @cunlicommand_window.index == 1 #比赛
  278.       # 设置新地图
  279.       $game_map.setup(8)
  280.       # 设置主角位置
  281.       $game_player.moveto(9,9)
  282.     elsif @cunlicommand_window.index == 2 #镇街
  283.       # 设置新地图
  284.       $game_map.setup(21)
  285.       # 设置主角位置
  286.       $game_player.moveto(9, 9)
  287.     end
  288.     elsif $game_map.map_id == 14 #竞技场
  289.       if @cunlicommand_window.index == 0 #竞技
  290.       $scene =Scene_jjc.new
  291.       return
  292.      elsif @cunlicommand_window.index == 1 #决斗街
  293.       # 设置新地图
  294.       $game_map.setup(39)
  295.       # 设置主角位置
  296.       $game_player.moveto(9,9)
  297.     end
  298.   elsif $game_map.map_id == 40 #公园
  299.  
  300.     end
  301.       $scene = Scene_Map.new
  302.       return
  303.     end
  304.  
  305. end
  306.     #--------------------------------------------------------------------------
  307.   # ● 刷新画面
  308.   #--------------------------------------------------------------------------
  309.   def updatenew
  310.     $game_party.refresh_fbs  if $game_variables[49] != $game_map.map_id
  311.     $game_variables[49] = $game_map.map_id
  312.     # 循环
  313.     loop do
  314.       # 按照地图、实例、主角的顺序刷新
  315.       # (本更新顺序不会在满足事件的执行条件下成为给予角色瞬间移动
  316.       #  的机会的重要因素)
  317.       $game_map.update
  318.    #   $game_system.map_interpreter.update
  319.       $game_player.update
  320.       # 系统 (计时器)、画面刷新
  321.       $game_system.update
  322.       $game_screen.update
  323.       # 如果主角在场所移动中就中断循环
  324.       unless $game_temp.player_transferring
  325.         break
  326.      end
  327.       # 执行场所移动
  328.       transfer_player
  329.       # 处理过渡中的情况下、中断循环
  330.       if $game_temp.transition_processing
  331.         break
  332.       end
  333.     end
  334.     # 刷新活动块
  335.     @spriteset.update
  336.     # 刷新信息窗口
  337.     @message_window.update
  338.     # 游戏结束的情况下
  339.   #  if $game_temp.gameover
  340.       # 切换的游戏结束画面
  341.   #    $scene = Scene_Gameover.new
  342.   #    return
  343.   #  end
  344.     # 返回标题画面的情况下
  345. #   if $game_temp.to_title
  346.       # 切换到标题画面
  347.   #    $scene = Scene_Title.new
  348.   #    return
  349. #   end
  350.     # 处理过渡中的情况下
  351.     if $game_temp.transition_processing
  352.       # 清除过渡处理中标志
  353.       $game_temp.transition_processing = false
  354.       # 执行过渡
  355.       if $game_temp.transition_name == ""
  356.         Graphics.transition(20)
  357.       else
  358.         Graphics.transition(40, "Graphics/Transitions/" +
  359.           $game_temp.transition_name)
  360.       end
  361.     end
  362.  
  363.     # 显示信息窗口中的情况下
  364. #   if $game_temp.message_window_showing
  365.   #    return
  366. #   end
  367.   end
  368.  
  369.   end
  370.  
  371.  
  372.  
  373. ##########
  374. #光标窗口
  375. class Window_cunliCommand < Window_Selectable
  376.   #--------------------------------------------------------------------------
  377.   # ● 初始化对像
  378.   #     width    : 窗口的宽
  379.   #     commands : 命令字符串序列
  380.   #--------------------------------------------------------------------------
  381.   def initialize
  382.     # 由命令的个数计算出窗口的高
  383.         super(0, 320, 120, 160)
  384.         self.contents = Bitmap.new(width - 32, height - 32)
  385.     $cunliCommands = CUNLI::CL_LB[$game_map.map_id]
  386.     refresh
  387.     self.opacity = 255
  388.     self.back_opacity = 255
  389.   end
  390.   #--------------------------------------------------------------------------
  391.   # ● 刷新
  392.   #--------------------------------------------------------------------------
  393.   def refresh
  394.     self.contents.clear
  395.     for i in 0...CUNLI::CL_LB[$game_map.map_id].size
  396.       draw_lieb(i, normal_color)
  397.     end
  398.  
  399.   end
  400.   #--------------------------------------------------------------------------
  401.   # ● 描绘项目
  402.   #     index : 项目编号
  403.   #     color : 文字色
  404.   #--------------------------------------------------------------------------
  405.   def draw_lieb(index, color)
  406.     self.contents.font.color = color
  407.     rect = Rect.new(20, 32 * index, 64, 32)
  408.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  409.       name_lb = []
  410.   suoyou_gb = [] if suoyou_gb == nil
  411.   suoyou_gb = $game_party.actors + $game_party.waiting_actors + $game_party.actors2
  412.   self.contents.draw_text(rect, $cunliCommands[index]) if index < $cunliCommands.size
  413.     self.contents.font.color.set(200, 200, 0)
  414.     rectid = Rect.new(0, 32 * index, 32 , 32)
  415.     self.contents.draw_text(rectid, (index+1).to_s)
  416.  
  417.     end
  418.   #--------------------------------------------------------------------------
  419.   # ● 项目无效化
  420.   #     index : 项目编号
  421.   #--------------------------------------------------------------------------
  422.   def disable_lieb(index)
  423.     draw_lieb(index, disabled_color)
  424.   end
  425. end
  426. ################
  427. #################
  428. class Window_cunlijies < Window_Base
  429.   #--------------------------------------------------------------------------
  430.   # ● 初始化对像
  431.   #--------------------------------------------------------------------------
  432.   def initialize
  433.     #坐标,长宽
  434.     super(120, 320, 520, 160)
  435.     #位图大小
  436.     self.contents = Bitmap.new(width - 32, height - 32)
  437.         self.opacity = 255
  438. self.back_opacity = 255
  439.   end
  440.   #--------------------------------------------------------------------------
  441.   # ● 设置敌人
  442.   #     enemy : 要显示名字和状态的敌人
  443.   #--------------------------------------------------------------------------
  444.   def set_ren(ren)
  445.     draw_cunli_graphic($cunliCommands[ren],ren) unless $cunliCommands == nil
  446.   end
  447.  
  448.  
  449.     #########################################
  450.   def draw_cunli_graphic(name,id)
  451.     self.contents.font.color = system_color
  452.   bitmap = RPG::Cache.Panoramas($cunliCommands[id]) rescue nil
  453.   cw = bitmap.width
  454.   ch = bitmap.height
  455.   src_rect = Rect.new(0, 0, cw, ch)
  456.   self.contents.blt(0,0, bitmap, src_rect)
  457. end
  458.   ###########################################
  459.  
  460.  
  461. end

Lv5.捕梦者 (管理员)

老黄鸡

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

开拓者贵宾

2
发表于 2016-10-29 16:29:46 | 只看该作者
可能你使用了一些不完善的脚本,在场景过渡时没有销毁部分资源(bitmap,sprite之类),导致泄露产生卡顿。
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

3
 楼主| 发表于 2016-10-30 20:18:15 | 只看该作者
fux2 发表于 2016-10-29 16:29
可能你使用了一些不完善的脚本,在场景过渡时没有销毁部分资源(bitmap,sprite之类),导致泄露产生卡顿。 ...

放上脚本了,能帮我看看吗
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 04:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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