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

Project1

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

[已经解决] 关于双币种商店的问题[已解决]

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1293
在线时间
118 小时
注册时间
2017-7-14
帖子
148
跳转到指定楼层
1
发表于 2019-4-2 13:19:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 wyw838 于 2019-4-5 10:03 编辑

加入金币和银币的分类后...进行商店处理时默认购买和卖出为银币。如果说要加入可用金币购买物品的话...我想请教各位大佬,有没有比以下处理方法更好的办法(关于商店处理,修改过的脚本如下)
处理方法一:在数据库定义物品(包括武器,防具)时,进行ID分割,在某个设定ID后的物品,流通使用金币。具体实现方法:在涉及到物品买卖处理时,加入分支,判断该物品ID是否越过设定ID,越过设定id则将流通单位处理转化为金币。
目测优点:操作简单,技术含量低
目测缺点:在数据库设定时麻烦
处理方法二:在脚本中定义物品时,为物品多压入一个名为gold的数组,在数据库定义时,在描述中处理物品的gold值。在涉及到物品买卖处理时,加入分支,判定该物品的gold值是否为0,为零则用银币描述,否则转为金币描述。
目测优点:数据库定义物品时方便
目测缺点:在我的能力范围内无法实现压入数组和描述中处理gold值的操作。
商店图片和修改过的商店相关的代码(仅加入了币种图片的显示)如下[pre lang="ruby" file="Window_ShopBuy *"]
  1. #==============================================================================
  2. # ■ Window_ShopBuy
  3. #------------------------------------------------------------------------------
  4. #  商店画面、浏览显示可以购买的商品的窗口。
  5. #==============================================================================
  6. #添加了币种图片的描述
  7. class Window_ShopBuy < Window_Selectable
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #     shop_goods : 商品
  11.   #--------------------------------------------------------------------------
  12.   def initialize(shop_goods)
  13.     super(0, 128, 368, 352)
  14.     @shop_goods = shop_goods
  15.     refresh
  16.     self.index = 0
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 获取物品
  20.   #--------------------------------------------------------------------------
  21.   def item
  22.     return @data[self.index]
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 刷新
  26.   #--------------------------------------------------------------------------
  27.   def refresh
  28.     if self.contents != nil
  29.       self.contents.dispose
  30.       self.contents = nil
  31.     end
  32.     @data = []
  33.     for goods_item in @shop_goods
  34.       case goods_item[0]
  35.       when 0
  36.         item = $data_items[goods_item[1]]
  37.       when 1
  38.         item = $data_weapons[goods_item[1]]
  39.       when 2
  40.         item = $data_armors[goods_item[1]]
  41.       end
  42.       if item != nil
  43.         @data.push(item)
  44.       end
  45.     end
  46.     # 如果项目数不是 0 就生成位图、描绘全部项目
  47.     @item_max = @data.size
  48.     if @item_max > 0
  49.       self.contents = Bitmap.new(width - 32, row_max * 32)
  50.       for i in 0...@item_max
  51.         draw_item(i)
  52.       end
  53.     end
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 描绘项目
  57.   #     index : 项目编号
  58.   #--------------------------------------------------------------------------
  59.   def draw_item(index)
  60.     item = @data[index]
  61.     # 获取物品所持数
  62.     case item
  63.     when RPG::Item
  64.       number = $game_party.item_number(item.id)
  65.     when RPG::Weapon
  66.       number = $game_party.weapon_number(item.id)
  67.     when RPG::Armor
  68.       number = $game_party.armor_number(item.id)
  69.     end
  70.     # 价格在所持金以下、并且所持数不是 99 的情况下为普通文字颜色
  71.     # 除此之外的情况设置为无效文字色
  72.     if item.price <= $game_party.gold and number < 99
  73.       self.contents.font.color = normal_color
  74.     else
  75.       self.contents.font.color = disabled_color
  76.     end
  77.     x = 4
  78.     y = index * 32
  79.     rect = Rect.new(x, y, self.width - 32, 32)
  80.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  81.     bitmap = RPG::Cache.icon(item.icon_name)
  82.     p_money=Bitmap.new("Graphics/Money/" +"银币.png")
  83.     opacity = self.contents.font.color == normal_color ? 255 : 128
  84.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  85.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  86.     self.contents.draw_text(x + 216, y, 88, 32, item.price.to_s, 2)
  87.     self.contents.blt(x+312, y+8, p_money,Rect.new(0,0,16,16),255)
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 刷新帮助文本
  91.   #--------------------------------------------------------------------------
  92.   def update_help
  93.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  94.   end
  95. end[pre lang="ruby" file="Window_ShopNumber *"]#==============================================================================
  96. # ■ Window_ShopNumber
  97. #------------------------------------------------------------------------------
  98. #  商店画面、输入买卖数量的窗口。
  99. #==============================================================================
  100. #添加了币种图片的描述
  101. class Window_ShopNumber < Window_Base
  102.   #--------------------------------------------------------------------------
  103.   # ● 初始化对像
  104.   #--------------------------------------------------------------------------
  105.   def initialize
  106.     super(0, 128, 368, 352)
  107.     self.contents = Bitmap.new(width - 32, height - 32)
  108.     @item = nil
  109.     @max = 1
  110.     @price = 0
  111.     @number = 1
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 设置物品、最大个数、价格
  115.   #--------------------------------------------------------------------------
  116.   def set(item, max, price)
  117.     @item = item
  118.     @max = max
  119.     @price = price
  120.     @number = 1
  121.     refresh
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● 被输入的件数设置
  125.   #--------------------------------------------------------------------------
  126.   def number
  127.     return @number
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 刷新
  131.   #--------------------------------------------------------------------------
  132.   def refresh
  133.     self.contents.clear
  134.     draw_item_name(@item, 4, 96)
  135.     bitmap = Bitmap.new("Graphics/Money/" +"银币.png")
  136.     self.contents.font.color = normal_color
  137.     self.contents.draw_text(272, 96, 32, 32, "×")
  138.     self.contents.draw_text(308, 96, 24, 32, @number.to_s, 2)
  139.     self.cursor_rect.set(304, 96, 32, 32)
  140.     # 描绘合计价格和货币单位
  141.     domination = $data_system.words.gold
  142.     cx = contents.text_size(domination).width
  143.     total_price = @price * @number#(x, y, bitmap, Rect.new(x, y, 宽, 高),透明度)
  144.     self.contents.font.color = normal_color
  145.     self.contents.draw_text(4, 160, 328-cx-2, 32, total_price.to_s, 2)
  146.     self.contents.font.color = system_color
  147.     self.contents.blt(332-cx, 168, bitmap,Rect.new(0,0,16,16),255)
  148.     #self.contents.draw_text(332-cx, 160, cx, 32, domination, 2)
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 刷新画面
  152.   #--------------------------------------------------------------------------
  153.   def update
  154.     super
  155.     if self.active
  156.       # 光标右 (+1)
  157.       if Input.repeat?(Input::RIGHT) and @number < @max
  158.         $game_system.se_play($data_system.cursor_se)
  159.         @number += 1
  160.         refresh
  161.       end
  162.       # 光标左 (-1)
  163.       if Input.repeat?(Input::LEFT) and @number > 1
  164.         $game_system.se_play($data_system.cursor_se)
  165.         @number -= 1
  166.         refresh
  167.       end
  168.       # 光标上 (+10)
  169.       if Input.repeat?(Input::UP) and @number < @max
  170.         $game_system.se_play($data_system.cursor_se)
  171.         @number = [@number + 10, @max].min
  172.         refresh
  173.       end
  174.       # 光标下 (-10)
  175.       if Input.repeat?(Input::DOWN) and @number > 1
  176.         $game_system.se_play($data_system.cursor_se)
  177.         @number = [@number - 10, 1].max
  178.         refresh
  179.       end
  180.     end
  181.   end
  182. end
  183. [/pre]
复制代码
[/pre]

68`@0P{TS7LOZ0GB@WXT]RK.png (601.46 KB, 下载次数: 22)

68`@0P{TS7LOZ0GB@WXT]RK.png

U_N`73AEZOQNSBG`0LWXMWB.png (608.58 KB, 下载次数: 22)

U_N`73AEZOQNSBG`0LWXMWB.png

Lv5.捕梦者

梦石
0
星屑
39021
在线时间
5719 小时
注册时间
2006-11-10
帖子
6619
2
发表于 2019-4-2 14:36:23 | 只看该作者
做法嘛
1, 价格分割法, 做法: 把物品价格重定义,  个十百为 银币, 千 万 十万 为金币 , 设定价格 999000 的物品就是售价999个金币

优点:绿色无污染,  缺点:通货膨胀没辙

2,备注法, 做法: 分割定义description, 给物品强行增加参数

优点:为所欲为,  做法: 抢地盘现象严重, 而且要检查也不容易

3,常数法, 做法: 到脚本里设置一个常数数组, 在该数组里的物品判断为金币通货

优点: 省地盘,  缺点: 容易遗漏

4,属性法, 做法: 定义一个属性"金币货", 然后有勾上这个属性的道具判断为金币通货

优点: 设置简单,查找方便,  缺点:技能,敌人什么的不小心勾到这个属性就会影响伤害计算

大致上就是以上做法了

其实, 定义是小事,  麻烦的是在 商店价格结算, 金额显示, 金额输入, 倒卖处理这里 , 嘛, 加油吧骚年

点评

还有一点就是...关于商店的处理也没找到==感觉如果找到商店的处理的话..只要根据属性加if改单位就行了吧=显示部分也差不多  发表于 2019-4-3 13:09
emm...参考一下你的做法,感觉属性法很好用==但是请问应该如何判断物品的属性呢...  发表于 2019-4-3 13:07

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1293
在线时间
118 小时
注册时间
2017-7-14
帖子
148
3
 楼主| 发表于 2019-4-4 17:33:28 | 只看该作者
灯笼菜刀王 发表于 2019-4-2 14:36
做法嘛
1, 价格分割法, 做法: 把物品价格重定义,  个十百为 银币, 千 万 十万 为金币 , 设定价格 ...

经过我自己的研究,我把代码写成了这样==用名为element的变量去获取当前物品的金币属性是否开启。金币属性放在999的变量盒子中。然而,实测的时候...发现金币物品和银币物品并没有什么吊区别==想请问我哪写错了QAQ代码附下(没全改完,只改动了一部分
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Shop
  3. #------------------------------------------------------------------------------
  4. #  处理商店画面的类。
  5. #==============================================================================
  6.  
  7. class Scene_Shop
  8.   #--------------------------------------------------------------------------
  9.   # ● 主处理
  10.   #--------------------------------------------------------------------------
  11.   def main
  12.     # 生成帮助窗口
  13.     @help_window = Window_Help.new
  14.     # 生成指令窗口
  15.     @command_window = Window_ShopCommand.new
  16.     # 生成金钱窗口
  17.     @gold_window = Window_Gold.new
  18.     @gold_window.x = 480
  19.     @gold_window.y = 64
  20.     # 生成时间窗口
  21.     @dummy_window = Window_Base.new(0, 128, 640, 352)
  22.     # 生成购买窗口
  23.     @buy_window = Window_ShopBuy.new($game_temp.shop_goods)
  24.     @buy_window.active = false
  25.     @buy_window.visible = false
  26.     @buy_window.help_window = @help_window
  27.     # 生成卖出窗口
  28.     @sell_window = Window_ShopSell.new
  29.     @sell_window.active = false
  30.     @sell_window.visible = false
  31.     @sell_window.help_window = @help_window
  32.     # 生成数量输入窗口
  33.     @number_window = Window_ShopNumber.new
  34.     @number_window.active = false
  35.     @number_window.visible = false
  36.     # 生成状态窗口
  37.     @status_window = Window_ShopStatus.new
  38.     @status_window.visible = false
  39.     # 执行过渡
  40.     Graphics.transition
  41.     # 主循环
  42.     loop do
  43.       # 刷新游戏画面
  44.       Graphics.update
  45.       # 刷新输入信息
  46.       Input.update
  47.       # 刷新画面
  48.       update
  49.       # 如果画面切换的话就中断循环
  50.       if $scene != self
  51.         break
  52.       end
  53.     end
  54.     # 准备过渡
  55.     Graphics.freeze
  56.     # 释放窗口
  57.     @help_window.dispose
  58.     @command_window.dispose
  59.     @gold_window.dispose
  60.     @dummy_window.dispose
  61.     @buy_window.dispose
  62.     @sell_window.dispose
  63.     @number_window.dispose
  64.     @status_window.dispose
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 刷新画面
  68.   #--------------------------------------------------------------------------
  69.   def update
  70.     # 刷新窗口
  71.     @help_window.update
  72.     @command_window.update
  73.     @gold_window.update
  74.     @dummy_window.update
  75.     @buy_window.update
  76.     @sell_window.update
  77.     @number_window.update
  78.     @status_window.update
  79.     # 指令窗口激活的情况下: 调用 update_command
  80.     if @command_window.active
  81.       update_command
  82.       return
  83.     end
  84.     # 购买窗口激活的情况下: 调用 update_buy
  85.     if @buy_window.active
  86.       update_buy
  87.       return
  88.     end
  89.     # 卖出窗口激活的情况下: 调用 update_sell
  90.     if @sell_window.active
  91.       update_sell
  92.       return
  93.     end
  94.     # 个数输入窗口激活的情况下: 调用 update_number
  95.     if @number_window.active
  96.       update_number
  97.       return
  98.     end
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 刷新画面 (指令窗口激活的情况下)
  102.   #--------------------------------------------------------------------------
  103.   def update_command
  104.     # 按下 B 键的情况下
  105.     if Input.trigger?(Input::B)
  106.       # 演奏取消 SE
  107.       $game_system.se_play($data_system.cancel_se)
  108.       # 切换到地图画面
  109.       $scene = Scene_Map.new
  110.       return
  111.     end
  112.     # 按下 C 键的情况下
  113.     if Input.trigger?(Input::C)
  114.       # 命令窗口光标位置分支
  115.       case @command_window.index
  116.       when 0  # 购买
  117.         # 演奏确定 SE
  118.         $game_system.se_play($data_system.decision_se)
  119.         # 窗口状态转向购买模式
  120.         @command_window.active = false
  121.         @dummy_window.visible = false
  122.         @buy_window.active = true
  123.         @buy_window.visible = true
  124.         @buy_window.refresh
  125.         @status_window.visible = true
  126.       when 1  # 卖出
  127.         # 演奏确定 SE
  128.         $game_system.se_play($data_system.decision_se)
  129.         # 窗口状态转向卖出模式
  130.         @command_window.active = false
  131.         @dummy_window.visible = false
  132.         @sell_window.active = true
  133.         @sell_window.visible = true
  134.         @sell_window.refresh
  135.       when 2  # 取消
  136.         # 演奏确定 SE
  137.         $game_system.se_play($data_system.decision_se)
  138.         # 切换到地图画面
  139.         $scene = Scene_Map.new
  140.       end
  141.       return
  142.     end
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 刷新画面 (购买窗口激活的情况下)
  146.   #--------------------------------------------------------------------------
  147.   def update_buy
  148.     # 设置状态窗口的物品
  149.     @status_window.item = @buy_window.item
  150.     # 按下 B 键的情况下
  151.     if Input.trigger?(Input::B)
  152.       # 演奏取消 SE
  153.       $game_system.se_play($data_system.cancel_se)
  154.       # 窗口状态转向初期模式
  155.       @command_window.active = true
  156.       @dummy_window.visible = true
  157.       @buy_window.active = false
  158.       @buy_window.visible = false
  159.       @status_window.visible = false
  160.       @status_window.item = nil
  161.       # 删除帮助文本
  162.       @help_window.set_text("")
  163.       return
  164.     end
  165.     # 按下 C 键的情况下
  166.     if Input.trigger?(Input::C)
  167.       # 获取物品
  168.       @item = @buy_window.item
  169.       #获取物品币种
  170.       case @item
  171.       when RPG::Item
  172.         element = $game_party.item_number(@item.element_set[999])
  173.       when RPG::Weapon
  174.         element = $game_party.weapon_number(@item.element_set[999])
  175.       when RPG::Armor
  176.         element = $game_party.armor_number(@item.element_set[999])
  177.       end
  178.       # 物品无效的情况下、或者价格在所持金以上的情况下
  179.       if element==false
  180.         if @item == nil or @item.price > $game_party.gold
  181.           # 演奏冻结 SE
  182.           $game_system.se_play($data_system.buzzer_se)
  183.           return
  184.         end
  185.       else
  186.         if @item == nil or @item.price > $game_party.silver
  187.           # 演奏冻结 SE
  188.           $game_system.se_play($data_system.buzzer_se)
  189.           return
  190.         end
  191.       end
  192.       # 获取物品所持数
  193.       case @item
  194.       when RPG::Item
  195.         number = $game_party.item_number(@item.id)
  196.       when RPG::Weapon
  197.         number = $game_party.weapon_number(@item.id)
  198.       when RPG::Armor
  199.         number = $game_party.armor_number(@item.id)
  200.       end
  201.       # 如果已经拥有了 99 个情况下
  202.       if number == 99
  203.         # 演奏冻结 SE
  204.         $game_system.se_play($data_system.buzzer_se)
  205.         return
  206.       end
  207.       # 演奏确定 SE
  208.       $game_system.se_play($data_system.decision_se)
  209.       # 计算可以最多购买的数量
  210.       if element==0
  211.         max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  212.         max = [max, 99 - number].min
  213.       else
  214.         max = @item.price == 0 ? 99 : $game_party.silver / @item.price
  215.         max = [max, 99 - number].min
  216.       end
  217.       # 窗口状态转向数值输入模式
  218.       @buy_window.active = false
  219.       @buy_window.visible = false
  220.       @number_window.set(@item, max, @item.price)
  221.       @number_window.active = true
  222.       @number_window.visible = true
  223.     end
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 画面更新 (卖出窗口激活的情况下)
  227.   #--------------------------------------------------------------------------
  228.   def update_sell
  229.     # 按下 B 键的情况下
  230.     if Input.trigger?(Input::B)
  231.       # 演奏取消 SE
  232.       $game_system.se_play($data_system.cancel_se)
  233.       # 窗口状态转向初期模式
  234.       @command_window.active = true
  235.       @dummy_window.visible = true
  236.       @sell_window.active = false
  237.       @sell_window.visible = false
  238.       @status_window.item = nil
  239.       # 删除帮助文本
  240.       @help_window.set_text("")
  241.       return
  242.     end
  243.     # 按下 C 键的情况下
  244.     if Input.trigger?(Input::C)
  245.       # 获取物品
  246.       @item = @sell_window.item
  247.       # 设置状态窗口的物品
  248.       @status_window.item = @item
  249.       # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下
  250.       if @item == nil or @item.price == 0
  251.         # 演奏冻结 SE
  252.         $game_system.se_play($data_system.buzzer_se)
  253.         return
  254.       end
  255.       # 演奏确定 SE
  256.       $game_system.se_play($data_system.decision_se)
  257.       # 获取物品的所持数
  258.       case @item
  259.       when RPG::Item
  260.         number = $game_party.item_number(@item.id)
  261.       when RPG::Weapon
  262.         number = $game_party.weapon_number(@item.id)
  263.       when RPG::Armor
  264.         number = $game_party.armor_number(@item.id)
  265.       end
  266.       # 最大卖出个数 = 物品的所持数
  267.       max = number
  268.       # 窗口状态转向个数输入模式
  269.       @sell_window.active = false
  270.       @sell_window.visible = false
  271.       @number_window.set(@item, max, @item.price / 2)
  272.       @number_window.active = true
  273.       @number_window.visible = true
  274.       @status_window.visible = true
  275.     end
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ● 刷新画面 (个数输入窗口激活的情况下)
  279.   #--------------------------------------------------------------------------
  280.   def update_number
  281.     # 按下 B 键的情况下
  282.     if Input.trigger?(Input::B)
  283.       # 演奏取消 SE
  284.       $game_system.se_play($data_system.cancel_se)
  285.       # 设置个数输入窗口为不活动·非可视状态
  286.       @number_window.active = false
  287.       @number_window.visible = false
  288.       # 命令窗口光标位置分支
  289.       case @command_window.index
  290.       when 0  # 购买
  291.         # 窗口状态转向购买模式
  292.         @buy_window.active = true
  293.         @buy_window.visible = true
  294.       when 1  # 卖出
  295.         # 窗口状态转向卖出模式
  296.         @sell_window.active = true
  297.         @sell_window.visible = true
  298.         @status_window.visible = false
  299.       end
  300.       return
  301.     end
  302.     # 按下 C 键的情况下
  303.     if Input.trigger?(Input::C)
  304.       # 演奏商店 SE
  305.       $game_system.se_play($data_system.shop_se)
  306.       # 设置个数输入窗口为不活动·非可视状态
  307.       @number_window.active = false
  308.       @number_window.visible = false
  309.       # 命令窗口光标位置分支
  310.       case @command_window.index
  311.       when 0  # 购买
  312.         # 购买处理
  313.         case @item
  314.         when RPG::Item
  315.           element = $game_party.item_number(@item.element_set[999])
  316.           $game_party.gain_item(@item.id, @number_window.number)
  317.         when RPG::Weapon
  318.           element = $game_party.weapon_number(@item.element_set[999])
  319.           $game_party.gain_weapon(@item.id, @number_window.number)
  320.         when RPG::Armor
  321.           element = $game_party.armor_number(@item.element_set[999])
  322.           $game_party.gain_armor(@item.id, @number_window.number)
  323.         end
  324.         if element==0
  325.           $game_party.lose_gold(@number_window.number * @item.price)
  326.         else
  327.           $game_party.lose_silver(@number_window.number * @item.price)
  328.         end
  329.         # 刷新各窗口
  330.         @gold_window.refresh
  331.         @buy_window.refresh
  332.         @status_window.refresh
  333.         # 窗口状态转向购买模式
  334.         @buy_window.active = true
  335.         @buy_window.visible = true
  336.       when 1  # 卖出
  337.         # 卖出处理
  338.         if element==0
  339.           $game_party.gain_gold(@number_window.number * (@item.price / 2))
  340.         else
  341.           $game_party.gain_silver(@number_window.number * (@item.price / 2))
  342.         end
  343.         case @item
  344.         when RPG::Item
  345.           $game_party.lose_item(@item.id, @number_window.number)
  346.         when RPG::Weapon
  347.           $game_party.lose_weapon(@item.id, @number_window.number)
  348.         when RPG::Armor
  349.           $game_party.lose_armor(@item.id, @number_window.number)
  350.         end
  351.         # 刷新各窗口
  352.         @gold_window.refresh
  353.         @sell_window.refresh
  354.         @status_window.refresh
  355.         # 窗口状态转向卖出模式
  356.         @sell_window.active = true
  357.         @sell_window.visible = true
  358.         @status_window.visible = false
  359.       end
  360.       return
  361.     end
  362.   end
  363. end

(OV0AEF_6@{8K4~ENA(0YMA.png (769.51 KB, 下载次数: 21)

(OV0AEF_6@{8K4~ENA(0YMA.png

点评

我能想到的问题可能是两个原因...其一...数据库里的第999号属性存在998的数组盒子里(如果从0开始算吧),其二...element不是bool型的变量。  发表于 2019-4-4 17:36
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39021
在线时间
5719 小时
注册时间
2006-11-10
帖子
6619
4
发表于 2019-4-4 18:07:56 | 只看该作者
你是不是误会了什么了...  道具的element_set 是一个数组, 它里面的单位就是你在数据库里,打钩的那个属性ID的集合, 所以, 除非你勾上1000个属性, 否则 element_set[999]的返回值就是nil

判断道具是否有10086号属性, 直接用  item.element_set.include?(10086)  就可以了

点评

谢谢dalao,问题已经解决了QWQ  发表于 2019-4-4 19:27
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1293
在线时间
118 小时
注册时间
2017-7-14
帖子
148
5
 楼主| 发表于 2019-4-4 19:19:56 | 只看该作者
灯笼菜刀王 发表于 2019-4-4 18:07
你是不是误会了什么了...  道具的element_set 是一个数组, 它里面的单位就是你在数据库里,打钩的 ...

感谢大佬...这个问题解决了...原来这个数组不是按位取的===这么说的话这不是更像动态数组么==但是改完之后又出现了这个玩意...测试之后发现是购买完物品后按esc键时错误==

WBG[{S[3BSFKHPITWJL[C3L.png (450.79 KB, 下载次数: 14)

WBG[{S[3BSFKHPITWJL[C3L.png

点评

emmm...我刚刚不小心摸了个1上去==问题解决了=  发表于 2019-4-4 19:25
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 10:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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