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

Project1

 找回密码
 注册会员
搜索

【教程】如何制作储物箱

查看数: 8663 | 评论数: 32 | 收藏 7
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-7-27 20:48

正文摘要:

本帖最后由 guoxiaomi 于 2021-7-28 11:09 编辑 相关问题: https://rpg.blue/thread-486363-1-1.html 示意图: 使用的小技巧: 1. 由于数据存储在全局变量里,会跟随存档一起存下来。 2. 场景绑定不同的变 ...

回复

真·可乐 发表于 2021-10-15 08:11:25
taeckle 发表于 2021-10-15 04:50
报告大神我又来了,

这次请问下如果我想在你这个存储箱脚本的基础上做一个大地图事件,判断当前存储箱子里 ...

评分

参与人数 1+1 收起 理由
taeckle + 1 大神威武!

查看全部评分

taeckle 发表于 2021-10-15 04:50:04
本帖最后由 taeckle 于 2021-10-15 05:03 编辑

报告大神我又来了,

这次请问下如果我想在你这个存储箱脚本的基础上做一个大地图事件,判断当前存储箱子里是否存有第20号武器的话,这个"if"又该在这个大地图事件里怎么写呢?

PS: 在你的这个脚本里你把所有存储箱的存储内容信息都存在了$game_variables[2]里面了,我在想这个if里面肯定会有$game_variables[2], include?(20), RPG::Weapon这些关键词的吧,还请指点一二,多谢了

plain666 发表于 2021-9-19 16:52:16
功能真强大,高手啊。

评分

参与人数 1+1 收起 理由
taeckle + 1 我很赞同

查看全部评分

黑夜守望者 发表于 2021-9-19 15:21:19
太棒了,希望能多有一些这样的脚本教程以供学习参考。

评分

参与人数 1+1 收起 理由
taeckle + 1 我很赞同

查看全部评分

guoxiaomi 发表于 2021-9-9 11:31:06
本帖最后由 guoxiaomi 于 2021-9-9 11:54 编辑

你scene_storage为什么会有contents和visible……必须继承了Window类才有contents、visible这些

你其实就是想创建一个sprite显示图片对吧?直接在create_windows方法里:
@sprite = ::Sprite.new
@sprite.bitmap = RPG::Cache.picture("storage")
在dispose_windows方法里:
@sprite.dispose

然后在其他地方主动改变@sprite.visible就行了

点评

好的,多谢大神指点!  发表于 2021-9-10 07:57
整体思路是对的,凑合能用就行。dispose_window里不需要额外的释放,458,459行  发表于 2021-9-10 07:48
大神我在上一楼又重新改了一下我的代码,现在存储物品时的禁止存储提示信息可以正常显示了!  发表于 2021-9-10 06:32

评分

参与人数 1+1 收起 理由
taeckle + 1 多谢大神指点!

查看全部评分

taeckle 发表于 2021-9-9 05:55:22
本帖最后由 taeckle 于 2021-9-10 06:34 编辑

大神这是我在本帖第22楼Version_0.5的基础上做的更新,主要是想在存储时让一些物品无法存储以及提示信息, 你帮我看看还有啥问题没,多谢了 :

  1. # encoding: utf-8
  2. module Taeckle
  3.   @version = "0.6" #新增无法存储一些物品以及提示信息

  4.   class Data
  5.     attr_reader :items
  6.     attr_reader :weapons
  7.     attr_reader :armors

  8.     def initialize
  9.       @items = {}
  10.       @weapons = {}
  11.       @armors = {}
  12.     end

  13.     #--------------------------------------------------------------------------
  14.     # ● 获取物品的所持数
  15.     #     item_id : 物品 ID
  16.     #--------------------------------------------------------------------------
  17.     def item_number(item_id)
  18.       # 如果 hash 个数数值不存在就返回 0
  19.       return @items.include?(item_id) ? @items[item_id] : 0
  20.     end

  21.     # ● 获取(箱子内或身上)所有物品的数量之和
  22.     def item_number_all
  23.        @item_number_in_all=0
  24.         for i in [email protected]
  25.           @item_number_in_all [email protected][i]
  26.         end  
  27.       return @item_number_in_all
  28.     end   
  29.    
  30.     #--------------------------------------------------------------------------
  31.     # ● 获取武器所持数
  32.     #     weapon_id : 武器 ID
  33.     #--------------------------------------------------------------------------
  34.     def weapon_number(weapon_id)
  35.       # 如果 hash 个数数值不存在就返回 0
  36.       return @weapons.include?(weapon_id) ? @weapons[weapon_id] : 0
  37.     end
  38.    
  39.     # ● 获取(箱子内或身上)所有武器的数量之和
  40.     def weapon_number_all
  41.        @weapon_number_in_all=0
  42.         for i in [email protected]
  43.           @weapon_number_in_all [email protected][i]
  44.         end  
  45.       return @weapon_number_in_all
  46.     end  
  47.     #--------------------------------------------------------------------------
  48.     # ● 获取防具所持数
  49.     #     armor_id : 防具 ID
  50.     #--------------------------------------------------------------------------
  51.     def armor_number(armor_id)
  52.       # 如果 hash 个数数值不存在就返回 0
  53.       return @armors.include?(armor_id) ? @armors[armor_id] : 0
  54.     end

  55.     # ● 获取(箱子内或身上)所有防具的数量之和
  56.     def armor_number_all
  57.        @armor_number_in_all=0
  58.         for i in [email protected]
  59.           @armor_number_in_all [email protected][i]
  60.         end  
  61.       return @armor_number_in_all
  62.     end      
  63.     #--------------------------------------------------------------------------
  64.     # ● 增加物品 (减少)
  65.     #     item_id : 物品 ID
  66.     #     n       : 个数
  67.     #--------------------------------------------------------------------------
  68.     def gain_item(item_id, n)
  69.       # 更新 hash 的个数数据
  70.       if item_id > 0
  71.         @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min
  72.       end
  73.     end

  74.     #--------------------------------------------------------------------------
  75.     # ● 增加武器 (减少)
  76.     #     weapon_id : 武器 ID
  77.     #     n         : 个数
  78.     #--------------------------------------------------------------------------
  79.     def gain_weapon(weapon_id, n)
  80.       # 更新 hash 的个数数据
  81.       if weapon_id > 0
  82.         @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min
  83.       end
  84.     end

  85.     #--------------------------------------------------------------------------
  86.     # ● 增加防具 (减少)
  87.     #     armor_id : 防具 ID
  88.     #     n        : 个数
  89.     #--------------------------------------------------------------------------
  90.     def gain_armor(armor_id, n)
  91.       # 更新 hash 的个数数据
  92.       if armor_id > 0
  93.         @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min
  94.       end
  95.     end   
  96.   end
  97.   
  98.   class Window_Help < ::Window_Help
  99.   end
  100.   
  101.   class Window_Menu < ::Window_Selectable
  102.     def initialize
  103.       super(0, 64, 640, 64)
  104.       @item_max = 3
  105.       @column_max = 3
  106.       @index = 0
  107.       @commands = ["存入", "取出", "离开"]
  108.       self.contents = Bitmap.new(width - 32, height - 32)
  109.       refresh
  110.     end

  111.     #--------------------------------------------------------------------------
  112.     # ● 刷新
  113.     #--------------------------------------------------------------------------
  114.     def refresh
  115.       self.contents.clear
  116.       for i in 0...@item_max
  117.         draw_item(i)
  118.       end
  119.     end

  120.     #--------------------------------------------------------------------------
  121.     # ● 描绘项目
  122.     #     index : 项目编号
  123.     #--------------------------------------------------------------------------
  124.     def draw_item(index)
  125.       self.contents.draw_text(index * 212 - 12, 0, 212, 32, @commands[index], 1)
  126.     end

  127.     def update_help
  128.       case @index
  129.       when 0 then text = "存入物品"
  130.       when 1 then text = "取出物品"
  131.       when 2 then text = "离开场景"
  132.       end
  133.       @help_window.set_text(text, 1)
  134.     end
  135.   end
  136.   
  137.   class Window_Item< ::Window_Selectable
  138.    
  139.   attr_accessor :bind_data   
  140.     #--------------------------------------------------------------------------
  141.     # ● 获取物品
  142.     #--------------------------------------------------------------------------
  143.     def item
  144.       return @data[self.index]
  145.     end

  146.     #--------------------------------------------------------------------------
  147.     # ● 刷新
  148.     #--------------------------------------------------------------------------
  149.     def refresh
  150.       if self.contents != nil
  151.         self.contents.dispose
  152.         self.contents = nil
  153.       end
  154.       @data = []
  155.       # 添加物品
  156.       for i in 1...$data_items.size
  157.         if @bind_data.item_number(i) > 0
  158.           @data.push($data_items[i])
  159.         end
  160.       end
  161.       # 在战斗中以外添加武器、防具
  162.       unless $game_temp.in_battle
  163.         for i in 1...$data_weapons.size
  164.           if @bind_data.weapon_number(i) > 0
  165.             @data.push($data_weapons[i])
  166.           end
  167.         end
  168.         for i in 1...$data_armors.size
  169.           if @bind_data.armor_number(i) > 0
  170.             @data.push($data_armors[i])
  171.           end
  172.         end
  173.       end
  174.       # Sort by description
  175.       if @data.first.respond_to?(:desc)
  176.         @data.sort! { |a, b| a.desc <=> b.desc }
  177.       end
  178.       # 如果项目数不是 0 就生成位图、重新描绘全部项目
  179.       @item_max = @data.size
  180.       if @item_max > 0
  181.         self.contents = Bitmap.new(width - 32, row_max * 32)
  182.         for i in 0...@item_max
  183.           draw_item(i)
  184.         end
  185.       end
  186.     end

  187.     #--------------------------------------------------------------------------
  188.     # ● 描绘项目
  189.     #     index : 项目编号
  190.     #--------------------------------------------------------------------------
  191.     def draw_item(index)
  192.       item = @data[index]
  193.       case item
  194.       when RPG::Item
  195.         number = @bind_data.item_number(item.id)
  196.       when RPG::Weapon
  197.         number = @bind_data.weapon_number(item.id)
  198.       when RPG::Armor
  199.         number = @bind_data.armor_number(item.id)
  200.       end
  201.       if self.active
  202.         self.contents.font.color = normal_color
  203.       else
  204.         self.contents.font.color = disabled_color
  205.       end
  206.       x = 4
  207.       y = index * 32
  208.       rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  209.       self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  210.       bitmap = RPG::Cache.icon(item.icon_name)
  211.       opacity = self.contents.font.color == normal_color ? 255 : 128
  212.       self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  213.       self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  214.       self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  215.       self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  216.     end

  217.     #--------------------------------------------------------------------------
  218.     # ● 刷新帮助文本
  219.     #--------------------------------------------------------------------------
  220.     def update_help
  221.       @help_window.set_text(self.item == nil ? "" : self.item.description)
  222.     end
  223.   end  

  224. # ■ Storage_Prompt_Window
  225. #------------------------------------------------------------------------------
  226. #  提示仓库已满窗口或禁止存储某个物品。
  227. #==============================================================================
  228. class Storage_Prompt_Window < Window_Base
  229.   #--------------------------------------------------------------------------
  230.   # ● 初始化对像
  231.   #--------------------------------------------------------------------------
  232.   def initialize
  233.     super(140, 60, 370,100)
  234.     self.contents = Bitmap.new(width - 32, height - 32)
  235.   end  

  236.   def draw_text_2
  237.     self.contents.clear
  238.     self.contents.font.size = 25
  239.     self.contents.font.color = Color.new(255, 255, 128, 255)
  240.     self.contents.draw_text(5, 0, self.width - 32, 32, "这个道具无法存储!")
  241.   end   
  242. end   
  243.   
  244.   class Scene_Storage
  245.     attr_reader :data

  246.     def initialize     
  247.       @scene_class = $scene.class
  248.       if !$game_system.storage_data.is_a?(Data)
  249.       $game_system.storage_data = Data.new  #记得在class Game_System里建个@storage_data
  250.       end
  251.       @data = $game_system.storage_data

  252.     end
  253.                  
  254.     def main
  255.       create_windows
  256.       scene_loop
  257.       dispose_windows
  258.     end

  259.     # layout
  260.     # ----------------------------------------- #
  261.     # Help Window (640 x 64)                    #
  262.     # ----------------------------------------- #
  263.     # Menu Window (640 x 64)                    #
  264.     # --------------------+-------------------- #
  265.     # Item Window Party   | Item Window Storage #
  266.     #    (320 x 352)      |    (320 x 352)      #
  267.     # --------------------+-------------------- #
  268.     def create_windows
  269.       # Help Window
  270.       @help_window = Window_Help.new
  271.       # Horizontal Command Window
  272.       @menu_window = Window_Menu.new
  273.       @menu_window.active = true
  274.       # Item Window left: Party items
  275.       @item_window_party = Window_Item.new(0, 128, 320, 352)
  276.       @item_window_party.bind_data = $game_party
  277.       @item_window_party.active = false        
  278.       @item_window_party.index = -1
  279.       @item_window_party.refresh
  280.       # 生成提示仓库已满提示窗口
  281.       @storage_noplace_window = Storage_Prompt_Window.new
  282.       @storage_noplace_window.draw_text_1
  283.       @storage_noplace_window.x = 210
  284.       @storage_noplace_window.y = 180
  285.       @storage_noplace_window.active = false   
  286.       @storage_noplace_window.visible = false     
  287.       @storage_noplace_window.opacity = 255
  288.       # 生成道具禁止存储提示窗口
  289.       @storage_prohibition_window = Storage_Prompt_Window.new
  290.       @storage_prohibition_window.draw_text_2
  291.       @storage_prohibition_window.x = 210
  292.       @storage_prohibition_window.y = 180
  293.       @storage_prohibition_window.active = false   
  294.       @storage_prohibition_window.visible = false     
  295.       @storage_prohibition_window.opacity = 255         
  296.       # Item Window right: Storage items
  297.       @item_window_storage = Window_Item.new(320, 128, 320, 352)
  298.       @item_window_storage.bind_data = @data
  299.       @item_window_storage.active = false
  300.       @item_window_storage.index = -1
  301.       @item_window_storage.refresh
  302.       # binding help windows
  303.       @menu_window.help_window = @help_window
  304.       @item_window_party.help_window = @help_window
  305.       @item_window_storage.help_window = @help_window
  306.     end

  307.     def update
  308.       @help_window.update
  309.       # update active window
  310.       if @menu_window.active
  311.         @menu_window.update
  312.         if Input.trigger?(Input::C)
  313.           $game_system.se_play($data_system.decision_se)
  314.           case @menu_window.index
  315.           when 0
  316.             @item_window_party.active = true
  317.             @menu_window.active = false
  318.             if @item_window_party.index == -1
  319.               @item_window_party.index = 0
  320.             end
  321.           when 1
  322.             @item_window_storage.active = true
  323.             @menu_window.active = false
  324.             if @item_window_storage.index == -1
  325.               @item_window_storage.index = 0
  326.             end
  327.           when 2
  328.             $scene = @scene_class.new
  329.             return
  330.           end
  331.           @item_window_party.refresh
  332.           @item_window_storage.refresh
  333.         end
  334.         return
  335.       end

  336.       if @item_window_party.active
  337.         @item_window_party.update
  338.        if Input.trigger?(Input::B)
  339.           $game_system.se_play($data_system.cancel_se)
  340.           @item_window_party.active = false
  341.           @menu_window.active = true
  342.           @item_window_party.index = -1
  343.           @item_window_storage.index = -1
  344.           @item_window_party.refresh
  345.           @item_window_storage.refresh
  346.        end
  347.         
  348.        if Input.trigger?(Input::C)
  349.         if @item_window_party.item.is_a?(RPG::Item) && [1].include?(@item_window_party.item.id)  #1号物品无法存储
  350.           $game_system.se_play($data_system.buzzer_se)      
  351.           @item_window_party.active = false     
  352.           @storage_prohibition_window.active = true
  353.           @storage_prohibition_window.visible = true
  354.         elsif @item_window_party.item.is_a?(RPG::Weapon) && [1].include?(@item_window_party.item.id) #1号武器无法存储
  355.           $game_system.se_play($data_system.buzzer_se)     
  356.           @item_window_party.active = false     
  357.           @storage_prohibition_window.active = true
  358.           @storage_prohibition_window.visible = true
  359.         elsif @item_window_party.item.is_a?(RPG::Armor) && [1].include?(@item_window_party.item.id) #1号防具无法存储
  360.           $game_system.se_play($data_system.buzzer_se)     
  361.           @item_window_party.active = false     
  362.           @storage_prohibition_window.active = true
  363.           @storage_prohibition_window.visible = true      
  364.         else         
  365.          if store(@item_window_party.item)
  366.           $game_system.se_play($data_system.decision_se)
  367.           @item_window_party.refresh
  368.           @item_window_storage.refresh
  369.          else
  370.           $game_system.se_play($data_system.buzzer_se)
  371.          end        
  372.         end
  373.         return
  374.        end
  375.       end

  376.       if @item_window_storage.active
  377.         @item_window_storage.update
  378.         if Input.trigger?(Input::B)
  379.           $game_system.se_play($data_system.cancel_se)
  380.           @item_window_storage.active = false
  381.           @menu_window.active = true
  382.           @item_window_party.index = -1
  383.           @item_window_storage.index = -1
  384.           @item_window_party.refresh
  385.           @item_window_storage.refresh
  386.         end
  387.         if Input.trigger?(Input::C)
  388.           ret = fetch(@item_window_storage.item)
  389.           if ret
  390.             $game_system.se_play($data_system.decision_se)
  391.             @item_window_party.refresh
  392.             @item_window_storage.refresh
  393.           else
  394.             $game_system.se_play($data_system.buzzer_se)
  395.           end
  396.         end
  397.         return
  398.       end
  399.       
  400.       #更新仓库已满提示窗口
  401.       if @storage_noplace_window.active
  402.        update_noplace_window
  403.        return
  404.       end  
  405.       #更新禁止存储提示窗口
  406.       if @storage_prohibition_window.active
  407.        update_prohibition_window
  408.        return
  409.       end      
  410.       
  411.     end

  412.     def scene_loop
  413.       Graphics.transition
  414.       # 主循环
  415.       loop do
  416.         # 刷新游戏画面
  417.         Graphics.update
  418.         # 刷新输入信息
  419.         Input.update
  420.         # 刷新画面
  421.         update
  422.         # 如果画面切换就中断循环
  423.         if $scene != self
  424.           break
  425.         end
  426.       end
  427.       # 准备过渡
  428.       Graphics.freeze
  429.     end

  430.     def dispose_windows
  431.       self.instance_variables.each do |name|
  432.         obj = self.instance_variable_get(name)
  433.         obj.dispose if obj.is_a?(Window)
  434.       end
  435.     @storage_noplace_window.dispose
  436.     @storage_prohibition_window.dispose         
  437.     end

  438.     def update_noplace_window
  439.      if Input.trigger?(Input::B)
  440.      # 演奏取消 SE
  441.      $game_system.se_play($data_system.cancel_se)
  442.      @storage_noplace_window.active = false
  443.      @storage_noplace_window.visible = false
  444.      @item_window_party.active = true      
  445.      return
  446.      end
  447.      if Input.trigger?(Input::C)
  448.      # 演奏取消 SE
  449.      $game_system.se_play($data_system.cancel_se)      
  450.      @storage_noplace_window.active = false
  451.      @storage_noplace_window.visible = false
  452.      @item_window_party.active = true      
  453.      return         
  454.      end  
  455.     end   

  456.     def update_prohibition_window
  457.      if Input.trigger?(Input::B)
  458.      # 演奏取消 SE
  459.      $game_system.se_play($data_system.cancel_se)
  460.      @storage_prohibition_window.active = false
  461.      @storage_prohibition_window.visible = false
  462.      @item_window_party.active = true      
  463.      return
  464.      end
  465.      if Input.trigger?(Input::C)
  466.      # 演奏取消 SE
  467.      $game_system.se_play($data_system.cancel_se)      
  468.      @storage_prohibition_window.active = false
  469.      @storage_prohibition_window.visible = false
  470.      @item_window_party.active = true      
  471.      return         
  472.      end  
  473.     end     
  474.    
  475.     def store(item, number = 1)
  476.       # RPG::Item
  477.         num_storage_item = @data.item_number_all
  478.         num_storage_weapon = @data.weapon_number_all
  479.         num_storage_armor = @data.armor_number_all           
  480.       if item.is_a?(RPG::Item)
  481.         num_party = $game_party.item_number(item.id)
  482.         num_storage = @data.item_number(item.id)        
  483.         if can_store?(num_storage_item, num_storage_weapon, num_storage_armor,number)      
  484.           $game_party.lose_item(item.id, number)
  485.           @data.gain_item(item.id, number)
  486.           return true
  487.         else
  488.           box_limit= 3*$game_variables[1]
  489.           print "箱子内已经有#{box_limit}个东西了,已经存满了"           
  490.         end
  491.       end
  492.       # RPG::Weapon
  493.       if item.is_a?(RPG::Weapon)
  494.         num_party = $game_party.weapon_number(item.id)
  495.         num_storage = @data.weapon_number(item.id)      
  496.         if can_store?(num_storage_item, num_storage_weapon, num_storage_armor,number)
  497.           $game_party.lose_weapon(item.id, number)
  498.           @data.gain_weapon(item.id, number)
  499.           return true
  500.         else
  501.           box_limit= 3*$game_variables[1]
  502.           print "箱子内已经有#{box_limit}个东西了,已经存满了"           
  503.         end
  504.       end
  505.       # RPG::Armor
  506.       if item.is_a?(RPG::Armor)
  507.         num_party = $game_party.armor_number(item.id)
  508.         num_storage = @data.armor_number(item.id)     
  509.         if can_store?(num_storage_item, num_storage_weapon, num_storage_armor,number)
  510.           $game_party.lose_armor(item.id, number)
  511.           @data.gain_armor(item.id, number)
  512.           return true
  513.         else
  514.           box_limit= 3*$game_variables[1]
  515.           print "箱子内已经有#{box_limit}个东西了,已经存满了"           
  516.         end
  517.       end
  518.       return false
  519.     end

  520.     def fetch(item, number = 1)
  521.       if item.is_a?(RPG::Item)
  522.         num_party = $game_party.item_number(item.id)
  523.         num_storage = @data.item_number(item.id)        
  524.         $game_party.gain_item(item.id, number)
  525.         @data.gain_item(item.id, -number)
  526.         return true
  527.       end
  528.       # RPG::Weapon
  529.       if item.is_a?(RPG::Weapon)
  530.         num_party = $game_party.weapon_number(item.id)
  531.         num_storage = @data.weapon_number(item.id)      
  532.         $game_party.gain_weapon(item.id, number)
  533.         @data.gain_weapon(item.id, -number)
  534.         return true
  535.       end
  536.       # RPG::Armor
  537.       if item.is_a?(RPG::Armor)
  538.         num_party = $game_party.armor_number(item.id)
  539.         num_storage = @data.armor_number(item.id)     
  540.         $game_party.gain_armor(item.id, number)
  541.         @data.gain_armor(item.id, -number)
  542.         return true
  543.       end
  544.       return false
  545.     end
  546.    
  547.     def can_store?(num_storage_item, num_storage_weapon, num_storage_armor,number=1)
  548.       num_storage_item+num_storage_weapon+num_storage_armor+number <= 3*$game_variables[1] #@item_max_size
  549.     end   
  550.   end
  551. end
复制代码


taeckle 发表于 2021-9-3 05:14:42
本帖最后由 taeckle 于 2021-9-3 15:36 编辑

大神我还想设置第22号防具禁止存入这个存储箱子里(当玩家试图存放第22号道具时会有提示信息"此物品无法存储"出现,再按下enter键这个提示信息会消失),

请问为了实现这个目的又该怎么搞呢?

点评

那我就不知道能不能了,你自己尝试吧  发表于 2021-9-3 19:36
大神你在下面提到的多创建一个新的window,Window_Hint类继承::Window_Base,然后操作scene#update控制它的visible属性这个方法我已经学会了  发表于 2021-9-3 19:12
我这次不想做1个新的class然后实例化来搞了, 想换一种方法, 比如可不可以直接在class Scene_Storage的def initialize里面借助个def draw_text搞出来同样的效果呢?  发表于 2021-9-3 19:11
是啊..你到底想学什么...  发表于 2021-9-3 18:43
我已经不知道你想学什么了,关于scene我这里面的知识应该除了解释器之外全部覆盖了  发表于 2021-9-3 18:39
taeckle 发表于 2021-8-27 02:55:32
还有大神我在本帖第22楼发的version_0.5里的第407, 420, 433行的print怎么才能换成一个好看一点的提示框啊?稍微好看点就行了,

点评

好的,这个问题我自己搞出来了  发表于 2021-8-27 16:18
修改upsate_help或者自己添加一个新窗口显示提醒  发表于 2021-8-27 03:30
taeckle 发表于 2021-8-27 02:50:21
本帖最后由 taeckle 于 2021-8-27 02:56 编辑

大神我突然又有个地方想不明白了:
在你的这个存储箱脚本version_0.3里的第50行"if store(@item_window_party.item)"为啥可以调用下面做的def store里面的内容呢?if不是仅用来判断真假的嘛?怎么这里也可以用来表示执行了呢?

点评

建议这么做。但是ruby的函数返回值有独特的设计,所以没有也是可以的……  发表于 2021-8-27 22:49
像这种if后面跟着一个函数名的情况时,这个函数内部是不是必须要有个return true啊?  发表于 2021-8-27 22:19
有返回值的方法调用时会执行一次该方法再返回..即使是用IF 也是会调用方法..不过应该要有返回值?  发表于 2021-8-27 19:20
这么说这里是先执行def store里面涉及到判断的内容(比如if item.is_a?(RPG::Item)), 然后若是can_store?结果为return true的话再执行下面两个refresh,是这样的吗?  发表于 2021-8-27 19:07
f1里有对if语句的讲解  发表于 2021-8-27 17:15
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-12-4 00:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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