查看: 2934|回复: 9

[已经解决] 关于读取备注

[复制链接]
梦石
0
星屑
3557
在线时间
2337 小时
注册时间
2015-8-25
回帖
928

开拓者

发表于 2016-9-29 15:00:10 | 显示全部楼层 |阅读模式

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

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

×
请教一下。
  
  如何读取数据库中带有某备注的已持有道具,并存起来?

--

正在写一个道具窗口,功能是只显示数据库中备注有<TYPE_A>的已持有物品。

我的思路是改写:

  def make_item_list
    @data = $game_party.all_items
  end

↓ ↓

  def make_item_list
    @temp_data = 带有备注的物品数据
    @data = @temp_data
  end

--
这个获取的写法不是很清楚。。

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2016-9-29 15:14:41 | 显示全部楼层
未测试
@data.collect{|i| i.note.include?('<TYPE_A>')}
回复

使用道具 举报

梦石
0
星屑
3557
在线时间
2337 小时
注册时间
2015-8-25
回帖
928

开拓者

 楼主| 发表于 2016-9-29 15:47:26 | 显示全部楼层
本帖最后由 七重 于 2016-9-30 09:20 编辑
喵呜喵5 发表于 2016-9-29 15:14
未测试
@data.collect{|i| i.note.include?('')}


唔。。貌似不行。

$game_party.all_items里面放的好像只有键值。

--
我现在打算在Game_Party里面定义一个这样的属性。

  def items_type_a
    $krst_data_item = $data_items.select{|x| x.note.include?("<TYPA_A>")}
    @items.keys.sort.collect {|id| $krst_data_item[id] }
  end

我的想法是打算先获取带有备注的数据,再获取这组数据的键值,但是不知为何会出错。

报错,note未定义。

==
追记:
这里真的是完全理解错了。。
  all_item里面的是持有物品的数组。
  而game_party里面的貌似是物品列表
回复

使用道具 举报

梦石
0
星屑
644
在线时间
830 小时
注册时间
2016-7-24
回帖
644

开拓者

发表于 2016-9-29 16:57:17 | 显示全部楼层
不知道有沒有理解錯誤
七重醬這個功能應該是這個方法吧?
  1.   def draw_item(index)
  2.     item = @data[index]
  3.     if item&&item.note.include?('<TYPE_A>')
  4.       rect = item_rect(index)
  5.       rect.width -= 4
  6.       draw_item_name(item, rect.x, rect.y, enable?(item))
  7.       draw_item_number(rect, item)
  8.     end
  9.   end
复制代码

评分

参与人数 1星屑 +250 梦石 +1 收起 理由
RaidenInfinity + 250 + 1 楼主认可的解答

查看全部评分

2016/07/17 加入RPG製作,勿忘初衷!
回复

使用道具 举报

梦石
0
星屑
3557
在线时间
2337 小时
注册时间
2015-8-25
回帖
928

开拓者

 楼主| 发表于 2016-9-29 19:59:51 | 显示全部楼层
QQ蚊子湯 发表于 2016-9-29 16:57
不知道有沒有理解錯誤
七重醬這個功能應該是這個方法吧?

看來我最初的思路就錯了呢。。

按你寫的現在可以運行了,謝謝解答!
回复

使用道具 举报

梦石
0
星屑
3557
在线时间
2337 小时
注册时间
2015-8-25
回帖
928

开拓者

 楼主| 发表于 2016-9-30 11:13:29 | 显示全部楼层
本帖最后由 七重 于 2016-9-30 12:49 编辑

仔细一看还是不对。。。如果不在对@data赋值之前就处理好数据的话,会在物品栏中描画出空格(不止一个的物品的情况下)。。

按照原来的想法新定义了一个

[pre lang="ruby"]  def all_items_TYPE_A
    a = items.size
    e = 0
    c = 0
    d = []
    loop do
      b = items[e]
      if b.note.include?("<TYPE_A>")
        d[c] = b
        c += 1
      end
      e += 1
      if e == a
        break
      end
    end
    p e
    p c
    return d
  end[/pre]

终于可以了。。。

点评

言重言重了0v0/  发表于 2016-9-30 17:05
抱歉抱歉!直覺上覺得是繪製的問題~自己試寫看到物品不見就想說好了(土下座)  发表于 2016-9-30 15:19
QAQ感谢指正。。当我发现又犯了这种错误时已然泪崩  发表于 2016-9-30 12:52
if e = a 改成 if e == a  发表于 2016-9-30 12:15
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部