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

Project1

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

[已经过期] 改造脚本中未应执行的指令却被执行了,求助!!

[复制链接]

Lv3.寻梦者

梦石
3
星屑
50
在线时间
22 小时
注册时间
2014-6-2
帖子
12
跳转到指定楼层
1
发表于 2016-2-5 22:15:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 happinessizumi 于 2016-2-5 22:27 编辑


是这样的,我在前天稍微改造了论坛上LBQ所发布的薄雾年代记存档脚本,
试图利用相同的思路改造一下脚本,不过我虽然看起来思路都正确,但是却出现了这样的问题:



本应该呈现这样的效果,选项选到哪里,那里的底图改变。然而有存档格的地方,会有一张图片贴在上面,然後会根据游戏中的[1]号开关产生变化



不过无论怎麽改,都还是会造成这样的效果。只要有一个存档存在,三个空格都会被贴上那一张图片,相当烦躁!!
但是怎麽想都不对啊,应该已经在判断式中不要让他执行了,他却还是执行了这一点让我非常苦恼。


这个问题已经困扰我两天了T_T 因为自己的程度不高,只能看懂不能编写,所以就去用别人的做改造了,不过还是有些地方看不太懂
但是这边在我脑筋打结的情况下还是出问题了
希望懂脚本的能稍微看一下是不是有什麽问题以及怎麽改善!!

(话说上面有一些我整理的注记,如果有发现错误的也希望可以指出来><谢谢了~~)

※ 下面这串脚本中Face_2是一个与Face_0,Face_1一样大的图片,不过他是完全透明的

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■在 【薄雾年代记 —— 存档公开版 by LBQ v0.2 】上进行修改
  4. #------------------------------------------------------------------------------
  5. #
  6. #==============================================================================
  7. $imported||={}
  8. $imported[:mcr_save] = '0.2'
  9. module MCR
  10.   module Save
  11.   CHAPTER_NUM = 1
  12.  
  13.     end
  14. end
  15.  
  16. module Cache
  17.   include MCR::Save
  18.   #--------------------------------------------------------------------------
  19.   # ● 读取IZUMISAVELOAD中的内容
  20.   #--------------------------------------------------------------------------
  21.   def self.izumisl(filename)
  22.     load_bitmap("Graphics/Izumi_SL/", filename)
  23.   end
  24. end
  25. module DataManager
  26.   #--------------------------------------------------------------------------
  27.   # ● 生成需要使用的数据
  28.   #--------------------------------------------------------------------------
  29.   def self.make_save_header
  30.     header = {}
  31.     header[:characters] = $game_party.characters_for_savefile
  32.     header[:playtime_s] = $game_system.playtime_s
  33.     header[:variables]  = $game_variables
  34.     header[:map_name] = $game_map.display_name
  35.     header
  36.   end
  37. end
  38. #encoding:utf-8
  39. #==============================================================================
  40. # ■ CLASS Sprite
  41. #------------------------------------------------------------------------------
  42. #  作为後续使用
  43. #==============================================================================
  44. class Sprite
  45.   #--------------------------------------------------------------------------
  46.   # ● 创造选项贴图
  47.   #--------------------------------------------------------------------------
  48.   def paste(bitmap)
  49.     sb = bitmap
  50.     a = 0
  51.     b = 0
  52.     src_rect = Rect.new(a,b,sb.width,sb.height)
  53.     self.bitmap.blt(a,b,sb,src_rect)
  54.     bitmap.dispose
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 绘制FILE_X的文字
  58.   #--------------------------------------------------------------------------
  59.   def drawfiletext(text)
  60.     a = 0
  61.     b = 0
  62.     self.z = 200
  63.     self.bitmap = Bitmap.new(880,70)
  64.     src_rect = Rect.new(a,b,self.bitmap.width,self.bitmap.height)
  65.     self.bitmap.font.outline= false
  66.     self.bitmap.font.size = 23
  67.     self.bitmap.font.color.set(175, 175, 175)
  68.     self.bitmap.draw_text(src_rect, text, 1)
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 绘制游戏时间
  72.   #--------------------------------------------------------------------------
  73.   def drawplaytimetext(text)
  74.     a = 0
  75.     b = 30
  76.     self.z = 200
  77.     self.bitmap = Bitmap.new(250,100)
  78.     src_rect = Rect.new(a,b,self.bitmap.width,self.bitmap.height)
  79.     self.bitmap.font.outline= false
  80.     self.bitmap.font.size = 36
  81.     self.bitmap.font.color.set(255, 255, 255)
  82.     self.bitmap.draw_text(src_rect, text, 1)
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 绘制所在地点的文字
  86.   #--------------------------------------------------------------------------
  87.   def drawmaptext(text)
  88.     a = 0
  89.     b = 30
  90.     self.z = 200
  91.  
  92.     self.bitmap = Bitmap.new(800,100)
  93.     src_rect = Rect.new(a,b,self.bitmap.width,self.bitmap.height)
  94.     self.bitmap.font.outline= false
  95.     self.bitmap.font.size = 36
  96.     self.bitmap.font.color.set(255, 255, 255)
  97.     self.bitmap.draw_text(src_rect, text, 1)
  98.   end
  99. end
  100. #encoding:utf-8
  101. #==============================================================================
  102. # ■ CLASS Sprite
  103. #------------------------------------------------------------------------------
  104. #  创造Sprite的父类作为後续使用
  105. #==============================================================================
  106. class Part_Save
  107.   include MCR::Save
  108.   #--------------------------------------------------------------------------
  109.   # ●初始化Part_Save
  110.   #--------------------------------------------------------------------------
  111.   def initialize(index)
  112.     @index = index
  113.     @delegates = []
  114.     @Facenumber
  115.     @sprite = Sprite.new
  116.     @filename = Sprite.new
  117.     @playtime = Sprite.new
  118.     @mapname = Sprite.new
  119.     @delegates << @sprite
  120.     @delegates << @filename
  121.     @delegates << @playtime
  122.     @delegates << @mapname
  123.     @selectin = 1
  124.     #创造数字(File的字样)
  125.     @filename.drawfiletext("FILE   #{@index+1}")
  126.     @filename.x = @sprite.x+520
  127.     #创造数字(游戏时间的字样)
  128.     @playtime.drawplaytimetext(play_time_s)
  129.     @playtime.x = @sprite.x+190
  130.     #创造名称(存档所在地图的字样)
  131.     @mapname.drawmaptext(map)
  132.     @mapname.x = @sprite.x+390
  133.  
  134.     reload
  135.  
  136.     @sprite.bitmap  = Cache.izumisl("SaveScreem_#{@selectin}")
  137.  
  138.     @empty_file = Sprite.new
  139.     if does_not_exist
  140.       @empty_file.bitmap = Cache.izumisl("Face_2")
  141.     else
  142.       @sprite.paste Cache.izumisl("Face_#{@Facenumber}")
  143.     end
  144.     unselected
  145.   end
  146.   #--------------------------------------------------------------------------
  147.   # ● 取得时间的字串
  148.   #--------------------------------------------------------------------------
  149.   def play_time_s
  150.     return 'Empty' if does_not_exist
  151.     return header[:playtime_s].split(":")[0..1].join(':')
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 取得所在地图的字串
  155.   #--------------------------------------------------------------------------
  156.   def map
  157.     return nil if does_not_exist
  158.     return header[:map_name]
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 重建的函数(好像不会被用到)
  162.   #--------------------------------------------------------------------------
  163.   def recreate_sprite
  164.     index = @index
  165.     reload
  166.     @sprite.bitmap  = Cache.izumisl("SaveScreem_#{@selectin}")
  167.     if does_not_exist
  168.       @sprite.paste Cache.izumisl("Face_2")
  169.     else
  170.       @sprite.paste Cache.izumisl("Face_#{@Facenumber}")
  171.     end
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ● 透过1号开关重读Facenumber的数字
  175.   #--------------------------------------------------------------------------
  176.   def reload
  177.     unless does_not_exist
  178.       if  $game_switches[1] == false
  179.       @Facenumber =1
  180.     else
  181.       @Facenumber =0
  182.     end
  183.  
  184.     else
  185.     @Facenumber =2
  186.     end
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # ● 取得变数(不太知道要干嘛TWT
  190.   #--------------------------------------------------------------------------
  191.   def variables
  192.     return if does_not_exist
  193.     return header[:variables]
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● 判断档案是否不存在
  197.   #--------------------------------------------------------------------------
  198.   def does_not_exist
  199.     !header
  200.   end
  201.   #--------------------------------------------------------------------------
  202.   # ● 释放
  203.   #--------------------------------------------------------------------------
  204.   def dispose
  205.     @sprite.dispose
  206.     @sprite=nil
  207.     @filename.dispose
  208.     @playtime.dispose
  209.     @mapname.dispose
  210.     @empty_file.dispose
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ● 取得@index号档案是否存在
  214.   #--------------------------------------------------------------------------
  215.   def header
  216.     return DataManager.load_header(@index)
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 取得是否有在选择状态
  220.   #--------------------------------------------------------------------------
  221.   def selected?
  222.     @selected
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ● 每回刷新
  226.   #--------------------------------------------------------------------------
  227.   def update
  228.     if @selected
  229.       @delegates.each do |d|
  230.         d.opacity = [@sprite.opacity+12,255].min
  231.       end
  232.     else
  233.       @delegates.each do |d|
  234.         d.opacity = [@sprite.opacity-12,150].max
  235.       end
  236.     end
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   # ● 选择时的def
  240.   #--------------------------------------------------------------------------
  241.   def selected
  242.     @selected = true
  243.     @selectin = 2
  244.     #self.opacity = 255
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 没有选择时的def
  248.   #--------------------------------------------------------------------------
  249.   def unselected
  250.     @selected = false
  251.     @selectin = 1
  252.     #self.opacity = 180
  253.   end
  254.  
  255.   #--------------------------------------------------------------------------
  256.   # ● 看不懂,好像是侦错用的
  257.   #--------------------------------------------------------------------------
  258.   def method_missing(id,*args,&block)
  259.     sended = false
  260.     @delegates.each do |d|
  261.       if d.respond_to? id
  262.         sended = true
  263.         d.send id,*args,&block
  264.       end
  265.     end
  266.  
  267.     unless sended
  268.       super
  269.     end
  270.   end
  271.  
  272.  
  273. end
  274. #encoding:utf-8
  275. #==============================================================================
  276. # ■ EasyLoad
  277. #------------------------------------------------------------------------------
  278. #  简单存档的插件
  279. #==============================================================================
  280. module Scene_EasyLoad_Plugin
  281.   def easy_load(index)
  282.     DataManager.load_game(index)
  283.     Sound.play_load
  284.     fadeout_all
  285.     $game_system.on_after_load
  286.     SceneManager.goto(Scene_Map)
  287.   end
  288. end
  289. #encoding:utf-8
  290. #==============================================================================
  291. # ■ SenceBase
  292. #------------------------------------------------------------------------------
  293. #
  294. #==============================================================================
  295. class Scene_Base
  296.   include Scene_EasyLoad_Plugin
  297. end
  298. #encoding:utf-8
  299. #==============================================================================
  300. # ■ Scene_File
  301. #------------------------------------------------------------------------------
  302. #  存档/读档画面的父类
  303. #==============================================================================
  304. class Scene_File < Scene_MenuBase
  305.   include LBQ::IZUMI_Titler
  306.   public_instance_methods(false).each do |m|
  307.     undef_method m
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ● 开始时
  311.   #--------------------------------------------------------------------------
  312.   def start
  313.     super
  314.     @main_timer = 0
  315.     methods.each do |m|
  316.       if m.to_s.include? 'create_'
  317.         send m
  318.       end
  319.     end
  320.     post_create
  321.     @start_fade_out = false
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 结束处理
  325.   #--------------------------------------------------------------------------
  326.   def terminate
  327.     super
  328.     terminate_all_sprites
  329.   end
  330.   #--------------------------------------------------------------------------
  331.   # ● 结束处理所有的sprite
  332.   #--------------------------------------------------------------------------
  333.   def terminate_all_sprites
  334.     @parts.each(&:dispose)
  335.   end
  336.   #--------------------------------------------------------------------------
  337.   # ●开始创造存档格
  338.   #--------------------------------------------------------------------------
  339.   def post_create
  340.     @parts[0].selected
  341.   end
  342.   #--------------------------------------------------------------------------
  343.   # ●回到前一个场景
  344.   #--------------------------------------------------------------------------
  345.   def return_scene
  346.     return
  347.     @start_fade_out = false
  348.   end
  349.   #--------------------------------------------------------------------------
  350.   # ●创造上面那排字
  351.   #--------------------------------------------------------------------------
  352.   def create_header
  353.     @header = Sprite.new
  354.     @header.z = 10
  355.     @header.bitmap = Cache.izumisl('Savefont')
  356.     @header.ox = 145
  357.     @header.x= 512
  358.     @header.y = 62
  359.   end
  360.   #--------------------------------------------------------------------------
  361.   # ● 创造存档格
  362.   #--------------------------------------------------------------------------
  363.   def create_parts
  364.     @parts = []
  365.     @parts[0] = Part_Save.new(0)
  366.     @parts[0].ox = 310
  367.     @parts[0].x = 512
  368.     @parts[0].y = 150
  369.  
  370.     @parts[1] = Part_Save.new(1)
  371.     @parts[1].ox = 310
  372.     @parts[1].x = 512
  373.     @parts[1].y = 295
  374.  
  375.     @parts[2] = Part_Save.new(2)
  376.     @parts[2].ox = 310
  377.     @parts[2].x = 512
  378.     @parts[2].y = 420
  379.   end
  380.   #--------------------------------------------------------------------------
  381.   # ● 遮罩的创造
  382.   #--------------------------------------------------------------------------
  383.   def create_mask
  384.     @mask = Sprite.new
  385.     w = Graphics.width
  386.     h = Graphics.height
  387.     @mask.bitmap = Bitmap.new w, h
  388.     @mask.bitmap.fill_rect(0,0,w,h,Color.new(0,0,0))
  389.     @mask.opacity = 0
  390.     @mask.z = 999
  391.   end
  392.   #--------------------------------------------------------------------------
  393.   # ● 每回刷新
  394.   #--------------------------------------------------------------------------
  395.   def update
  396.     @main_timer += 1 #计时器+1
  397.     methods.each do |m|
  398.       if m.to_s.include? 'update_'
  399.         send m
  400.       end
  401.     end
  402.     deal_with_mask_fade if @start_fade_out
  403.   end
  404.   #--------------------------------------------------------------------------
  405.   # ● 渐入遮罩
  406.   #--------------------------------------------------------------------------
  407.   def deal_with_mask_fade
  408.     @mask.opacity +=8
  409.     if @mask.opacity >=255
  410.       fadeout_all
  411.       SceneManager.return
  412.     end
  413.   end
  414.   #--------------------------------------------------------------------------
  415.   # ● 回传20
  416.   #--------------------------------------------------------------------------
  417.   def transition_speed
  418.     return 20
  419.   end
  420.   #--------------------------------------------------------------------------
  421.   # ● 更新输入
  422.   #--------------------------------------------------------------------------
  423.   def update_input
  424.  
  425.     if Input.trigger? :UP
  426.       i_am_going_to_select  = @parts[current_selected_index - 1]
  427.       if i_am_going_to_select && current_selected_index!=0
  428.         current_selected.unselected
  429.         i_am_going_to_select.selected
  430.         Sound.play_cursor
  431.       else
  432.         Sound.play_buzzer
  433.       end
  434.  
  435.     end
  436.  
  437.  
  438.     if Input.trigger? :DOWN
  439.       i_am_going_to_select = @parts[current_selected_index + 1]
  440.       if i_am_going_to_select
  441.         current_selected.unselected
  442.         i_am_going_to_select.selected
  443.         Sound.play_cursor
  444.       else
  445.         Sound.play_buzzer
  446.       end
  447.     end
  448.  
  449.  
  450.     if Input.trigger? :C
  451.       deal_with_on_ok
  452.     end
  453.  
  454.  
  455.     if Input.trigger? :B
  456.       Sound.play_cancel
  457.       SceneManager.return
  458.     end
  459.  
  460.   end
  461.   #--------------------------------------------------------------------------
  462.   # ●每回将遮罩淡出
  463.   #--------------------------------------------------------------------------
  464.   def update_mask
  465.     @mask.opacity -= 4
  466.   end
  467.   #--------------------------------------------------------------------------
  468.   # ●使用current_selected时回传选取状态
  469.   #--------------------------------------------------------------------------
  470.   def current_selected
  471.     return @parts.select{|p|p.selected?}[0]
  472.   end
  473.   #--------------------------------------------------------------------------
  474.   # ●使用current_selected_index时回传选取到哪一个index
  475.   #--------------------------------------------------------------------------
  476.   def current_selected_index
  477.     return @parts.index current_selected
  478.   end
  479.  
  480.   #--------------------------------------------------------------------------
  481.   # ●更新parts
  482.   #--------------------------------------------------------------------------
  483.   def update_parts
  484.     @parts.each(&:update)
  485.   end
  486.  
  487. end
  488. #encoding:utf-8
  489. #==============================================================================
  490. # ■ SenceSave
  491. #------------------------------------------------------------------------------
  492. #存档画面
  493. #==============================================================================
  494. class Scene_Save < Scene_File
  495.   #--------------------------------------------------------------------------
  496.   # ●存档时存在选择的那一格
  497.   #--------------------------------------------------------------------------
  498.   def deal_with_on_ok
  499.     DataManager.save_game(current_selected_index)
  500.     Sound.play_save
  501.     SceneManager.return
  502.   end
  503. end
  504. #encoding:utf-8
  505. #==============================================================================
  506. # ■ SenceLoad
  507. #------------------------------------------------------------------------------
  508. #读档画面
  509. #==============================================================================
  510. class Scene_Load < Scene_File
  511.   #--------------------------------------------------------------------------
  512.   # ●读档时存在选择的那一格,如果没有档案就放错误音效
  513.   #--------------------------------------------------------------------------
  514.   def deal_with_on_ok
  515.     if current_selected.does_not_exist
  516.       Sound.play_buzzer
  517.       return
  518.     end
  519.     easy_load(current_selected_index)
  520.   end
  521. end
  522.  
  523. #encoding:utf-8
  524. #==============================================================================
  525. # ■ SenceMenu
  526. #------------------------------------------------------------------------------
  527. #渐变画面的设定
  528. #==============================================================================
  529. class Scene_Menu
  530.   def perform_transition
  531.     if Graphics.brightness == 0
  532.       Graphics.transition(0)
  533.       fadein(30)
  534.     else
  535.       super
  536.     end
  537.   end
  538. end
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-17 07:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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