Project1

标题: 请问:ICON的问题 [打印本页]

作者: tommay    时间: 2009-5-6 02:21
标题: 请问:ICON的问题
由一个帖子想到的:
XP能否支持RMVX那样的ICON?
是否有人写过类似的脚本?

多谢!

具体解释见6楼
作者: danny8376    时间: 2009-5-6 02:28
可以是可以  而且很簡單
但是要怎麼選???
作者: 霜冻之狼    时间: 2009-5-6 02:28
如果是XP版的VX素材的花,主站上有下载的.

如果是那样的脚本的花,好像没有人写过.
有人做过八方向行走图脚本,所以我相信这个也不难做到.
作者: 紫苏    时间: 2009-5-6 05:25
没有用过,是什么样的?O.O
作者: 凌辰    时间: 2009-5-6 06:21
以下引用紫苏于2009-5-5 21:25:06的发言:
没有用过,是什么样的?O.O
所有24X24的图标紧紧挨着拼成一张图,横向16个图标,纵向不限……
作者: tommay    时间: 2009-5-6 10:25
抱歉,我来解释一下。

首先,默认的XP的icon是一个一个的小的24*24的图片,有时候在压缩释放的时候会很慢,而且从网上下载的一些icon也是零碎的,默认需要在数据库中一个一个地设置,觉得诸多不便。
我设想的效果图如下:



其实就是把小的图标合成一整张图片。具体行列可以再定义。

我的初步构想是——每行依次为:
武器,盾,头部防具,身体防具,装饰品,剧情物品和一些表示状态的图标。甚至于可以放一些用于别的用途的图标,例如cp槽的小头像等等。

采用这种形式的Iconset时,就免去了数据库中设置的麻烦,而采用在脚本中按id顺序读取icon图的方法。

但是,同是也有一个问题,就是把原来的小图标合成为一张大图是一个很麻烦的过程,有没有什么好的方法可以采用?

以上为一种思路,欢迎讨论。
作者: 后知后觉    时间: 2009-5-6 10:35
这样的东西写脚本是做不到的吧
八方向的行走在工程里鼠标悬着面向的时候仍然是4*4的
这些东西属于操作平台的问题,不是脚本问题的说
在脚本里我们可以把人的HP设置成9999*10的N次方
但是在数据库里最高也就9999
作者: tommay    时间: 2009-5-6 10:43
以下引用后知后觉于2009-5-6 2:35:51的发言:

这样的东西写脚本是做不到的吧
八方向的行走在工程里鼠标悬着面向的时候仍然是4*4的
这些东西属于操作平台的问题,不是脚本问题的说
在脚本里我们可以把人的HP设置成9999*10的N次方
但是在数据库里最高也就9999

难道不可以把这张图放到\Graphics\Pictures里,然后在脚本中设置一个24*24的Rect,然后通过移动Rect左上角坐标来读取作为icon图片吗?

说到编辑器本身的一些限制,比如HP上限为9999,其实不用在意,在编辑器中能设置的东西,应该都能在脚本中通过赋值定义,甚至可以通过读取一个txt文件来定义。区别有二:
1.在编辑器中会提示“请输入0~9999”,在别的地方不会
2.在编辑器中设置很方便,但是能想到通过读取txt文件的人,应该不会觉得写txt文件麻烦了。
重要的是思路,还有脚本的实现。
作者: 紫苏    时间: 2009-5-6 11:57
文件过多增加解压缩时间的问题应该是首要吧,可以:
class Window_Item < Window_Selectable
  def draw_item(index)
    item = @data[index]
    case item
    when RPG::Item
      number = $game_party.item_number(item.id)
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    end
    if item.is_a?(RPG::Item) and
       $game_party.item_can_use?(item.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon("iconset.png")
    item.description.slice!(/\\icon\[(\d+)\]/i)
    if $1 != nil
      index = $1.to_i

      opacity = self.contents.font.color == normal_color ? 255 : 128
      self.contents.blt(x, y + 4, bitmap,
        Rect.new(index % 16 * 24, index / 16 * 24, 24, 24), opacity)
    end
    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
    self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
    self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  end
end

这样在数据库武器、防具、物品描述信息中写上 \icon[x] 就是显示 iconset 中,从左到右、从上到下的索引为 x 的图标~

VX 中添加新的物品后也是直接指定物品图标吧,如果要按照 ID 号直接显示也可以,只分物品、武器、防具、技能、其它这几种还比较简单,因为这三种在数据库中的编号是独立的;但要把防具、物品再分类成头部、身体,草药、钥匙就比较麻烦了……

以下引用后知后觉于2009-5-6 2:35:51的发言:

这样的东西写脚本是做不到的吧
八方向的行走在工程里鼠标悬着面向的时候仍然是4*4的
这些东西属于操作平台的问题,不是脚本问题的说
在脚本里我们可以把人的HP设置成9999*10的N次方
但是在数据库里最高也就9999

呵呵,程序的最大缺陷是有穷性,除此之外人的简单逻辑没有什么是不可能的 [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 后知后觉    时间: 2009-5-6 18:45
如果要用脚本来弄
那还不入用编辑器的功能
毕竟可以直观的看到图像

就用LS的脚本的话,做的时候还得去数那个图标在第几行第几列...... [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 紫苏    时间: 2009-5-6 18:48
这个只是为了解决图标素材过多不好管理的问题~
我说了要按照 ID 自动按照顺序显示图标也是可以的
作者: tommay    时间: 2009-5-6 20:33
多谢以上诸位的讨论,先部分认可了,我想等两天再结贴,欢迎继续讨论~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1