Project1

标题: 做游戏时发现一些错误,求大佬解决一下QAQ,两个脚本问题 [打印本页]

作者: q2315187236    时间: 2019-6-30 10:48
标题: 做游戏时发现一些错误,求大佬解决一下QAQ,两个脚本问题
本帖最后由 VIPArcher 于 2019-7-23 09:05 编辑

这个是打开技能界面出现的bug
貌似和我其他脚本无关。
这是存档脚本问题
存档脚本的编码为
发生了什么我也不是很清楚,这是我所有的脚本截图
然后如果需要我的游戏工程才能解决我可以提供,dalao们先看一下需不需要我的源文件吧emmmm
RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ 薄雾年代记 —— 存档公开版 by LBQ v0.2
  4. #------------------------------------------------------------------------------
  5. #  只是一个笨蛋存档读档界面罢了
  6. #==============================================================================
  7.  
  8.  
  9. $imported||={}
  10. $imported[:mcr_save] = '0.2'
  11. module MCR
  12.   module Save
  13.     CHAPTER_NUM = 1 #章节数用变量 0对应的是第一章 1是第二章 2是第三章
  14.   end
  15. end
  16.  
  17.  
  18.  
  19. module DataManager
  20.  
  21.   #--------------------------------------------------------------------------
  22.   # ● 生成存档的头数据
  23.   #--------------------------------------------------------------------------
  24.   def self.make_save_header
  25.     header = {}
  26.     header[:characters] = $game_party.characters_for_savefile
  27.     header[:playtime_s] = $game_system.playtime_s
  28.     header[:variables]  = $game_variables
  29.     header
  30.   end
  31. end
  32.  
  33. class Sprite
  34.   #blt(x, y, src_bitmap, src_rect[, opacity])
  35.   def paste(bitmap)
  36.     sb = bitmap
  37.     a = 0
  38.     b = 0
  39.     src_rect = Rect.new(a,b,sb.width,sb.height)
  40.     self.bitmap.blt(a,b,sb,src_rect)
  41.     bitmap.dispose
  42.   end
  43.  
  44. end
  45.  
  46.  
  47.  
  48. class Part_Save
  49.   include MCR::Save
  50.   def initialize(index)
  51.     @index = index
  52.     @delegates = []
  53.     @sprite = Sprite.new
  54.     @delegates << @sprite
  55.     @sprite.bitmap  = Cache.system("save#{index+1}")
  56.     @number = Sprite_Number.new(play_time_s)
  57.     @delegates << @number
  58.     @empty_file = Sprite.new
  59.     if does_not_exist
  60.       @empty_file.bitmap = Cache.system("empty_file")
  61.     else
  62.       @sprite.paste Cache.system("chapter#{self.variables[CHAPTER_NUM]+1}")
  63.     end
  64.     unselected
  65.   end
  66.  
  67.  
  68.  
  69.   def recreate_sprite
  70.     index = @index
  71.  
  72.  
  73.     @sprite.bitmap  = Cache.system("save#{index+1}")
  74.     if does_not_exist
  75.       @sprite.paste Cache.system("empty_file")
  76.     else
  77.       @sprite.paste Cache.system("chapter#{self.variables[CHAPTER_NUM]+1}")
  78.     end
  79.   end
  80.  
  81.  
  82.  
  83.   def play_time_s
  84.     return "00:00" if does_not_exist
  85.     return header[:playtime_s].split(":")[0..1].join(':')
  86.   end
  87.  
  88.  
  89.   def does_not_exist
  90.     !header
  91.   end
  92.  
  93.  
  94.  
  95.   def variables
  96.     return if does_not_exist
  97.     return header[:variables]
  98.   end
  99.  
  100.   def dispose
  101.     @empty_file.dispose
  102.     @sprite.dispose
  103.     @sprite=nil
  104.     @number.dispose
  105.     @empty_file.dispose
  106.   end
  107.  
  108.  
  109.  
  110.  
  111.   def header
  112.     return DataManager.load_header(@index)
  113.   end
  114.  
  115.   def selected?
  116.     @selected
  117.   end
  118.  
  119.   def update
  120.     if @selected
  121.       @delegates.each do |d|
  122.         d.opacity = [@sprite.opacity+12,255].min
  123.       end
  124.     else
  125.  
  126.       @delegates.each do |d|
  127.         d.opacity = [@sprite.opacity-12,150].max
  128.       end
  129.  
  130.     end
  131.     @empty_file.y = @sprite.y
  132.  
  133.   end
  134.  
  135.  
  136.   def selected
  137.     @selected = true
  138.     #self.opacity = 255
  139.   end
  140.  
  141.  
  142.   def unselected
  143.     @selected = false
  144.     #self.opacity = 180
  145.   end
  146.  
  147.  
  148.  
  149.   def method_missing(id,*args,&block)
  150.     sended = false
  151.     @delegates.each do |d|
  152.       if d.respond_to? id
  153.         sended = true
  154.         d.send id,*args,&block
  155.       end
  156.  
  157.     end
  158.  
  159.  
  160.     unless sended
  161.       super
  162.     end
  163.  
  164.  
  165.   end
  166.  
  167.  
  168. end
  169.  
  170.  
  171.  
  172. module Scene_EasyLoad_Plugin
  173.   def easy_load(index)
  174.     DataManager.load_game(index)
  175.     Sound.play_load
  176.     fadeout_all
  177.     $game_system.on_after_load
  178.     SceneManager.goto(Scene_Map)
  179.   end
  180. end
  181.  
  182.  
  183. class Scene_Base
  184.   include Scene_EasyLoad_Plugin
  185. end
  186.  
  187.  
  188.  
  189.  
  190. class Scene_File < Scene_MenuBase
  191.   public_instance_methods(false).each do |m|
  192.     undef_method m
  193.   end
  194.  
  195.  
  196.   #--------------------------------------------------------------------------
  197.   # ● 释放背景
  198.   #--------------------------------------------------------------------------
  199.   def dispose_background
  200.     @bg.dispose
  201.   end
  202.  
  203.   def start
  204.     super
  205.     @main_timer = 0
  206.     methods.each do |m|
  207.       if m.to_s.include? 'create_'
  208.         send m
  209.       end
  210.     end
  211.     post_create
  212.     @start_fade_out = false
  213.   end
  214.  
  215.  
  216.   def terminate
  217.     super
  218.     terminate_all_sprites
  219.   end
  220.  
  221.  
  222.  
  223.   def terminate_all_sprites
  224.     @parts.each(&:dispose)
  225.   end
  226.  
  227.  
  228.  
  229.  
  230.  
  231.   def post_create
  232.     @parts[0].selected
  233.   end
  234.  
  235.  
  236.   def return_scene
  237.     return
  238.     @start_fade_out = true
  239.   end
  240.  
  241.  
  242.  
  243.  
  244.   def create_background
  245.     @bg = Plane.new
  246.     @bg.bitmap = Cache.system('bg')
  247.     @bg.oy =330
  248.   end
  249.  
  250.  
  251.   def create_header
  252.     @header = Sprite.new
  253.     @header.z = 10
  254.     @header.bitmap = Cache.system('save_header')
  255.   end
  256.  
  257.   def create_parts
  258.     @parts = []
  259.     @parts[0] = Part_Save.new(0)
  260.     @parts[0].y = 50
  261.  
  262.  
  263.  
  264.     @parts[1] = Part_Save.new(1)
  265.     @parts[1].y = 180
  266.   end
  267.  
  268.  
  269.   def create_mask
  270.     @mask = Sprite.new
  271.     w = Graphics.width
  272.     h = Graphics.height
  273.     @mask.bitmap = Bitmap.new w, h
  274.     @mask.bitmap.fill_rect(0,0,w,h,Color.new(0,0,0))
  275.     @mask.z = 999
  276.   end
  277.  
  278.  
  279.  
  280.   def update
  281.     @main_timer += 1
  282.     methods.each do |m|
  283.       if m.to_s.include? 'update_'
  284.         send m
  285.       end
  286.     end
  287.     deal_with_mask_fade if @start_fade_out
  288.   end
  289.  
  290.  
  291.   def deal_with_mask_fade
  292.     @mask.opacity +=8
  293.     if @mask.opacity >=255
  294.       fadeout_all
  295.       SceneManager.return
  296.  
  297.     end
  298.  
  299.   end
  300.  
  301.  
  302.  
  303.  
  304.   #--------------------------------------------------------------------------
  305.   # ● 获取渐变速度
  306.   #--------------------------------------------------------------------------
  307.   def transition_speed
  308.     return 20
  309.   end
  310.  
  311.  
  312.   def update_input
  313.  
  314.     if Input.trigger? :UP
  315.       i_am_going_to_select  = @parts[current_selected_index - 1]
  316.       if i_am_going_to_select && current_selected_index!=0
  317.         current_selected.unselected
  318.         i_am_going_to_select.selected
  319.         Sound.play_cursor
  320.       else
  321.         Sound.play_buzzer
  322.       end
  323.  
  324.     end
  325.  
  326.  
  327.     if Input.trigger? :DOWN
  328.       i_am_going_to_select = @parts[current_selected_index + 1]
  329.       if i_am_going_to_select
  330.         current_selected.unselected
  331.         i_am_going_to_select.selected
  332.         Sound.play_cursor
  333.       else
  334.         Sound.play_buzzer
  335.       end
  336.  
  337.  
  338.     end
  339.  
  340.  
  341.     if Input.trigger? :C
  342.       deal_with_on_ok
  343.     end
  344.  
  345.  
  346.     if Input.trigger? :B
  347.       Sound.play_cancel
  348.       SceneManager.return
  349.     end
  350.  
  351.   end
  352.  
  353.   def update_background
  354.     @bg.ox += 1 if @main_timer % 2 == 0
  355.   end
  356.  
  357.  
  358.   def update_mask
  359.     @mask.opacity -= 4
  360.   end
  361.  
  362.  
  363.   def current_selected
  364.     return @parts.select{|p|p.selected?}[0]
  365.   end
  366.  
  367.   def current_selected_index
  368.     return @parts.index current_selected
  369.   end
  370.  
  371.   def update_parts
  372.     @parts.each(&:update)
  373.   end
  374.  
  375. end
  376.  
  377.  
  378. class Scene_Save < Scene_File
  379.   def deal_with_on_ok
  380.     DataManager.save_game(current_selected_index)
  381.     Sound.play_save
  382.     SceneManager.return
  383.   end
  384. end
  385.  
  386. class Scene_Load < Scene_File
  387.   def deal_with_on_ok
  388.     if current_selected.does_not_exist
  389.       Sound.play_buzzer
  390.       return
  391.     end
  392.  
  393.     easy_load(current_selected_index)
  394.   end
  395. end
  396.  
  397.  
  398. module Cache
  399.   class << self
  400.     def number(name)
  401.       load_bitmap("Graphics/Numbers/", name)
  402.     end
  403.  
  404.   end
  405. end
  406.  
  407.  
  408. class Sprite_Number < Sprite
  409.  
  410.   INDENT = [123,97]
  411.  
  412.   def initialize(text)
  413.     super(nil)
  414.     @text = text
  415.     refresh
  416.   end
  417.  
  418.   DIC = {
  419.    ':' => 'colon'
  420.   }
  421.  
  422.  
  423.   def text=(x)
  424.     @text = x
  425.     refresh
  426.   end
  427.  
  428.  
  429.   def text
  430.     return @text
  431.   end
  432.  
  433.   def refresh
  434.     self.bitmap = Bitmap.new(Graphics.width,Graphics.height)
  435.     deal_with_text
  436.   end
  437.  
  438.   def deal_with_text
  439.  
  440.     cursor = INDENT[0]
  441.     @text.each_char do |c|
  442.  
  443.  
  444.       if DIC[c]
  445.         c = DIC[c]
  446.         cursor+=3
  447.       end
  448.  
  449.       new_bitmap = Cache.number(c)
  450.       a = cursor
  451.       b = INDENT[1]
  452.       sb = new_bitmap
  453.       sr = Rect.new(0,0,sb.width,sb.height)
  454.       self.bitmap.blt(a,b,sb,sr)
  455.       cursor += sb.width*0.75
  456.       sb.dispose
  457.     end # each
  458.   end
  459.  
  460. end
  461.  
  462. class Scene_Number < Scene_Base
  463.   def start
  464.     super
  465.     @timer = 0
  466.     @sprite = Sprite_Number.new($game_system.playtime_s)
  467.   end
  468.  
  469.   def update
  470.     super
  471.     @timer += 1
  472.     if @timer %60==0
  473.       @sprite.text= $game_system.playtime_s
  474.     end
  475.   end
  476. end
  477.  
  478. class Scene_Menu
  479.   #--------------------------------------------------------------------------
  480.   # ● 执行进入场景时的渐变
  481.   #--------------------------------------------------------------------------
  482.   def perform_transition
  483.     if Graphics.brightness == 0
  484.       Graphics.transition(0)
  485.       fadein(30)
  486.     else
  487.       super
  488.     end
  489.   end
  490. end

作者: hyrious    时间: 2019-6-30 10:48
本帖最后由 hyrious 于 2019-6-30 12:03 编辑

一上来塞这么多插件脚本……反正我是没这个勇气整合
就事论事,首先第一个是你有两个“自动换行”脚本,删掉第二个即可
第二个是 MCR_Save 和“音量设置”脚本冲突,按最小修复原则,在 MCR_Save 的 206 行将 if m.to_s.include? 'create_' 修改为 if m.to_s.include? 'create_' and method(m).arity == 0 即可,同时请删掉任何现有存档



我悲观估计你这个工程还会出各种各样的 bug,建议扔沟
作者: q2315187236    时间: 2019-6-30 10:56
链接:https://pan.baidu.com/s/1-VYEDF9jM3KH-4pbFknylw
提取码:s0ow
想了一下,若是有需要源文件就拿去吧,如果对我游戏里的脚本有兴趣也可以拿去用,先说啦,这这是个连整理的脚本都没有的游戏,甚至连一个游戏正常体验都没有,估计连范例都做不到,里面的资源你们随意拿吧,求解决+1




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1