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

Project1

 找回密码
 注册会员
搜索

【已解决】自己改了下物品得失的脚本后存档就出错

查看数: 2298 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-12-7 21:45

正文摘要:

本帖最后由 maotouying 于 2017-12-8 23:23 编辑 。。不知道标题怎么写了,其实就是我瞎改物品得失的脚本,给改成了在得失物品时显示物品的图片(自己定义的,不是图标,用那个物品界面显示物品图片的脚本改的) ...

回复

梦幻想 发表于 2017-12-8 21:13:47
把 @item_window_pic2改成 item_window_pic2

点评

正解,看上去好像跟$game_map无关,但是interpreter类的实例是@map_interpreter  发表于 2017-12-9 20:54
谢谢,没有出错了!看来还是得好好学脚本啊  发表于 2017-12-8 21:17

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

maotouying 发表于 2017-12-8 19:01:23
guoxiaomi 发表于 2017-12-8 18:42
报错已经很明显的指出了是因为,试图将一个 Window 类的实例存档,而并没有对应的 Marshal_dump 方法。实际 ...

我改的脚本,加的部分只有用横线隔起来的部分和下面那块

  1. #==============================================================================# 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  2. #==============================================================================
  3. # 注意!!!在对话后得到物品,请在对话后先用事件等待3帧,否则对话框来不及消失。
  4. # 开关定义:
  5. $不显示金钱窗口 = 41
  6. $不显示物品窗口 = 41
  7. $不显示武器窗口 = 41
  8. $不显示防具窗口 = 41
  9. # 以上开关,当打开的时候,获得物品将不会提示,比如默认打开41号开关,获得金钱不再提示
  10. #显示物品图片的功能,名字后加@图片名
  11. # ————————————————————————————————————
  12. class Interpreter
  13.   #--------------------------------------------------------------------------
  14.   # ● 增减金钱
  15.   #--------------------------------------------------------------------------
  16.   def command_125
  17.     value = operate_value(@parameters[0], @parameters[1], @parameters[2])
  18.     $game_party.gain_gold(value)
  19.     if $game_switches[$不显示金钱窗口]==false
  20.       carol3_66RPG = Window_Base.new((640-160)/2,128,180,100)
  21.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  22.       if value >= 0
  23.         carol3_66RPG.contents.draw_text(0,0,240,32,"获得金钱:")
  24.         #——声效,可以自己改
  25.         Audio.se_play("Audio/SE/"+"006-System06",80,100)
  26.       else
  27.         carol3_66RPG.contents.draw_text(0,0,240,32,"失去金钱:")
  28.         #——声效,可以自己改
  29.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  30.       end   
  31.       carol3_66RPG.contents.draw_text(0,32,240,32,value.abs.to_s)
  32.       carol3_66RPG.contents.draw_text(0,32,140,32, $data_system.words.gold,2)
  33.       carol3_66RPG.opacity = 160
  34.       for i in 0..30
  35.         Graphics.update
  36.       end
  37.       for i in 0..10
  38.         carol3_66RPG.opacity -= 30
  39.         carol3_66RPG.contents_opacity -= 30
  40.         Graphics.update
  41.       end
  42.       carol3_66RPG.dispose
  43.     end
  44.     return true
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 增减物品
  48.   #--------------------------------------------------------------------------
  49.   def command_126
  50.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  51.     $game_party.gain_item(@parameters[0], value)
  52.     if $game_switches[$不显示物品窗口]==false
  53.       carol3_66RPG_item = $data_items[@parameters[0]]
  54.       carol3_66RPG = Window_Base.new(250,128,300,100)
  55.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  56.       if value >= 0
  57.         carol3_66RPG.contents.draw_text(0,0,240,32,"信息更新:")   
  58.         #——声效,可以自己改
  59.         Audio.se_play("Audio/SE/"+"006-System06",80,100)
  60.       else
  61.         carol3_66RPG.contents.draw_text(0,0,240,32,"信息失去:")   
  62.         #——声效,可以自己改
  63.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  64.       end
  65.       #========================================================
  66.       @item_window_pic2 = Window_Item_Pic2.new
  67.       @item_window_pic2.set_item(carol3_66RPG_item)
  68.       #===========================================================
  69.       carol3_66RPG_bitmap = RPG::Cache.icon(carol3_66RPG_item.icon_name)
  70.       carol3_66RPG.contents.blt(0, 32, carol3_66RPG_bitmap, Rect.new(0, 0, 24, 24), 255)
  71.       carol3_66RPG.contents.draw_text(0 + 28, 32, 212, 32, carol3_66RPG_item.name, 0)
  72.       carol3_66RPG.contents.draw_text(0, 32, 268, 32, " ",2)#+value.abs.to_s, 2)
  73.       carol3_66RPG.opacity = 160
  74.       for i in 0..30
  75.         Graphics.update
  76.       end
  77.       for i in 0..10
  78.         carol3_66RPG.opacity -= 30
  79.         carol3_66RPG.contents_opacity -= 30
  80.         #==========================================
  81.         @item_window_pic2.opacity -= 30
  82.         @item_window_pic2.contents_opacity -= 30
  83.         #===========================================
  84.         Graphics.update
  85.       end
  86.       carol3_66RPG.dispose
  87.       #=====================================
  88.       @item_window_pic2.dispose
  89.       #========================================
  90.     end
  91.     return true
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 增减武器
  95.   #--------------------------------------------------------------------------
  96.   def command_127
  97.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  98.     $game_party.gain_weapon(@parameters[0], value)
  99.     if $game_switches[$不显示武器窗口]==false
  100.       carol3_66RPG_item = $data_weapons[@parameters[0]]
  101.       carol3_66RPG = Window_Base.new(250,128,300,100)
  102.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  103.       if value >= 0
  104.         carol3_66RPG.contents.draw_text(0,0,240,32,"获得成就:")   
  105.         #——声效,可以自己改
  106.         Audio.me_play("Audio/ME/"+"001-Victory01",80,100)
  107.       else
  108.         carol3_66RPG.contents.draw_text(0,0,240,32,"失去武器:")   
  109.         #——声效,可以自己改
  110.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  111.       end
  112.       #========================================================
  113.       @item_window_pic2 = Window_Item_Pic2.new
  114.       @item_window_pic2.set_item(carol3_66RPG_item)
  115.       #===========================================================
  116.       carol3_66RPG_bitmap = RPG::Cache.icon(carol3_66RPG_item.icon_name)
  117.       carol3_66RPG.contents.blt(0, 32, carol3_66RPG_bitmap, Rect.new(0, 0, 24, 24), 255)
  118.       carol3_66RPG.contents.draw_text(0 + 28, 32, 212, 32, carol3_66RPG_item.name, 0)
  119.       carol3_66RPG.contents.draw_text(0, 32, 268, 32, "×"+value.abs.to_s, 2)
  120.       carol3_66RPG.opacity = 160
  121.       for i in 0..30
  122.         Graphics.update
  123.       end
  124.       for i in 0..10
  125.         carol3_66RPG.opacity -= 30
  126.         carol3_66RPG.contents_opacity -= 30
  127.         #==========================================
  128.         @item_window_pic2.opacity -= 30
  129.         @item_window_pic2.contents_opacity -= 30
  130.         #===========================================
  131.         Graphics.update
  132.       end
  133.       carol3_66RPG.dispose
  134.       #=====================================
  135.       @item_window_pic2.dispose
  136.       #========================================
  137.     end
  138.     return true
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # ● 增减防具
  142.   #--------------------------------------------------------------------------
  143.   def command_128
  144.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  145.     $game_party.gain_armor(@parameters[0], value)
  146.     if $game_switches[$不显示防具窗口]==false
  147.       carol3_66RPG_item = $data_armors[@parameters[0]]
  148.       carol3_66RPG = Window_Base.new(250,128,300,100)
  149.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  150.       if value >= 0
  151.         carol3_66RPG.contents.draw_text(0,0,240,32,"获得防具:")   
  152.         #——声效,可以自己改
  153.         Audio.se_play("Audio/SE/"+"006-System06",80,100)
  154.       else
  155.         carol3_66RPG.contents.draw_text(0,0,240,32,"失去防具:")   
  156.         #——声效,可以自己改
  157.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  158.       end
  159.       #========================================================
  160.       @item_window_pic2 = Window_Item_Pic2.new
  161.       @item_window_pic2.set_item(carol3_66RPG_item)
  162.       #===========================================================
  163.       carol3_66RPG_bitmap = RPG::Cache.icon(carol3_66RPG_item.icon_name)
  164.       carol3_66RPG.contents.blt(0, 32, carol3_66RPG_bitmap, Rect.new(0, 0, 24, 24), 255)
  165.       carol3_66RPG.contents.draw_text(0 + 28, 32, 212, 32, carol3_66RPG_item.name, 0)
  166.       carol3_66RPG.contents.draw_text(0, 32, 268, 32, "×"+value.abs.to_s, 2)
  167.       carol3_66RPG.opacity = 160
  168.       for i in 0..30
  169.         Graphics.update
  170.       end
  171.       for i in 0..10
  172.         carol3_66RPG.opacity -= 30
  173.         carol3_66RPG.contents_opacity -= 30
  174.         #==========================================
  175.         @item_window_pic2.opacity -= 30
  176.         @item_window_pic2.contents_opacity -= 30
  177.         #===========================================
  178.         Graphics.update
  179.       end
  180.       carol3_66RPG.dispose
  181.       #=====================================
  182.       @item_window_pic2.dispose
  183.       #========================================
  184.     end
  185.     return true
  186.   end
  187. end

  188. #===========================================================================
  189. module RPG
  190.   class Weapon
  191.     def name
  192.       name = @name.split(/@/)[0]
  193.       return name != nil ? name : ''
  194.     end
  195.     def pic_name
  196.       pic_name = @name.split(/@/)[1]
  197.       return pic_name != nil ? pic_name : ""
  198.     end
  199.   end
  200.   class Armor
  201.     def name
  202.       name = @name.split(/@/)[0]
  203.       return name != nil ? name : ''
  204.     end
  205.     def pic_name
  206.       pic_name = @name.split(/@/)[1]
  207.       return pic_name != nil ? pic_name : ""
  208.     end
  209.   end
  210.   class Item
  211.   def name
  212.       name = @name.split(/@/)[0]
  213.       return name != nil ? name : ''
  214.     end
  215.     def pic_name
  216.       pic_name = @name.split(/@/)[1]
  217.       return pic_name != nil ? pic_name.to_s : ""
  218.     end
  219.   end
  220. end

  221. class Window_Item_Pic2 < Window_Base
  222.   #--------------------------------------------------------------------------
  223.   # ● 初始化对像
  224.   #--------------------------------------------------------------------------
  225.   def initialize
  226.     super(30, 110, 220, 220)
  227.     @item = nil
  228.     self.back_opacity = 160
  229.     self.contents = Bitmap.new(width - 32, height - 32)
  230.     self.opacity = 255
  231.     #bearrpg
  232.     #refresh去掉了
  233.     end
  234.    #--------------------------------------------------------------------------
  235.   # ● 获取物品
  236.   #--------------------------------------------------------------------------
  237.   def item
  238.     return @data[self.index]
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● 刷新
  242.   #--------------------------------------------------------------------------
  243.   def set_item(item)
  244.     self.contents.clear
  245.     @item = item
  246.     if item != nil
  247.       bitmap = RPG::Cache.picture(@item.pic_name)
  248.       pic_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  249.       self.contents.blt(0, 0, bitmap, pic_rect)
  250.     end
  251.   end
  252. end
  253. #==============================================================================
  254. # ■ Window_Equip
  255. #------------------------------------------------------------------------------
  256. #  装备物品大图标显示。
  257. #==============================================================================

  258. class Window_Equip < Window_Base
  259.   #--------------------------------------------------------------------------
  260.   # ● 初始化对像
  261.   #--------------------------------------------------------------------------
  262.   def initialize
  263.     super(0, 0, 640, 480)
  264.     @item = nil
  265.     self.contents = Bitmap.new(width - 32, height - 32)
  266.     self.opacity = 0
  267.     refresh
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # ● 刷新
  271.   #--------------------------------------------------------------------------
  272.   def refresh
  273.     self.contents.clear
  274.     if @item != nil
  275.       bitmap = RPG::Cache.picture(@item.pic_name)
  276.       pic_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  277.       self.contents.blt(0, 0, bitmap, pic_rect)
  278.     end
  279.   end
  280.   def set_item(carol3_66RPG_item)
  281.     @item = carol3_66RPG_item
  282.   end
  283. end

  284. #==============================================================================
  285. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  286. #==============================================================================
复制代码


guoxiaomi 发表于 2017-12-8 18:42:49
报错已经很明显的指出了是因为,试图将一个 Window 类的实例存档,而并没有对应的 Marshal_dump 方法。实际上也没有这种必要,因为 Window 只是拿来展示东西的,不应该被存起来。

原因多半是在 $game_map (Game_Map) 里创建了一个指向 Window 类的实例变量。自查一下脚本吧。

点评

或者你把脚本挂出来吧,懒得下载~  发表于 2017-12-8 18:50
当然是全局搜索 Window_Item_Pic2.new  发表于 2017-12-8 18:50
请问应该怎么查呢。。。  发表于 2017-12-8 18:47
芯☆淡茹水 发表于 2017-12-8 08:08:26
你把窗口拿来储存是干嘛?!

点评

没有啊。。我除了加了个物品得失显示图片的其他都没动过啊 求教一下应该怎么改啊  发表于 2017-12-8 18:31
(ノ≧∇≦)ノ噗——很迷地戳中了笑点,想象了一下,别人都是把文档打印装订整齐的塞进存档箱子里面,然后有一个人把窗户从墙上拆下来,Duang!  发表于 2017-12-8 10:16
chd114 发表于 2017-12-7 22:26:01
开新的游戏,不要用旧存档,这样会出错吗?

点评

开新游戏之后如果获得物品了再存档就会报错,再读档时光标到之前存档的位置也会报错,如果没有获得物品读档存档都不会报错  发表于 2017-12-7 22:33
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-27 16:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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