Project1

标题: RM数据库编辑的EXCEL解决方案 [打印本页]

作者: galaxys    时间: 2011-10-2 14:32
标题: RM数据库编辑的EXCEL解决方案

搜索了一下论坛,发现好多个数据库编辑的方法,但都无法100%满足我的需求……尤其是其中有个前辈说了一句话,那是深得我心啊:真正麻烦的东西还是UI……要做的人性化且高效很不容易。……所以说,如果把EXCEL当做你的数据库编辑器的UI,那不就人性化且高效了么?灭哈哈哈哈哈哈……

一句话原理:在EXCEL中按照一定格式输入数据,然后用宏把数据处理成RGSS代码,最后在RM中运行这段代码来导入数据。

下面就是那个“按照一定格式输入数据,然后用宏把数据处理成RGSS代码”的EXCEL表格:
Abilitys.rar (29.38 KB, 下载次数: 302)

注意,范例中的excel表需要启用宏才能正常使用。
第一个表的名称必须正确:处理成RGSS代码时,生成的RGSS类的名称和数据库文件的名称,就等于第一个表的名称。
布尔值:EXCEL中,0、""、false都被作为false处理;其它的值作为true处理。


为什么要用EXCEL?
数据库可以看作“表格的集合”。而说到快速方便地编辑表格,还有什么工具比得上EXCEL呢?
如果你的游戏中有2000种以上的道具、300种以上的敌人、1000条各种合成配方以及400个技能,那么使用EXCEL来输入这些数据,将会比用RM内置的编辑器快好几十倍、并且更不容易出错。
更重要的是,这样大规模的项目,很多时候都会用到批量数据处理:比如说,你觉得有一类的武器(比如说,枪)的攻击力都太强了。此时使用EXCEL可以在几分钟内完成数据编辑,而如果用RM的数据库编辑器则可能需要几十分钟翻找那些枪都在什么地方(你有2000个条目要查看!),然后一个一个地修改数据。
编辑数据的方便程度跟游戏的品质有很大的关系。因为人都是有惰性的,如果游戏中明明有些数据有问题,但改起这些数据来很麻烦,你可能就会选择无视它,并且告诉自己“只是个小问题,没关系的。”
另外,RM的数据库编辑器也不支持添加字段或者添加新的数据库;数据的条目也无法超过1000。而使用本解决方案,你可以很轻易地做到这些,只是你需要有“如何在RM中新建数据库”的相关知识。……论坛已有的几个解决方案都具备这个基本功能。

目前这个解决方案的缺陷很多很多:
如果只是编辑少量数据,那么它操作相当麻烦。哪怕只修改一个数据也要把全套过程弄一遍。
只能写入数据,而不能读取……
EXCEL只是一个表格编辑软件,它不像数据库软件那样有防止误操作的功能。如果你输入了错误的数据格式(比如说在number类的字段中输入文字),导入数据时就会出错。如果你输入一个不存在的文件位置或图标ID,使用数据时就会出错。如果你把一个字段名输入错了,整个字段的数据都不会导入。
支持的数据类型有限,目前只支持字符串、数字和布尔值这3种,不支持数组。因此RM自带的数据库大部分都没法编辑……这对我自己来说不是什么问题,如果有人想要的话就回帖吧。
导入大量数据时需要一些时间等待,这时候很无聊。尤其是在调试的时候,很影响心情。

所以说,如果你的工程数据量并不大,我推荐你使用另一个数据库工具:
http://rpg.blue/forum.php?mod=viewthread&tid=50801
这个工具没有以上的缺陷,它的缺点只是编辑大量数据时有些不方便而已。


PS:假如能够编写一个EXCEL插件,使它支持rvdata文件格式,那是最好的。但是这个我就完全不知道怎么弄了……
PPS:我不知道2000种道具的话会不会卡。但据我认识的程序说,70多个字段,2000种道具的物品表也不过占大概4M的内存,所以应该没关系吧……

作者: IamI    时间: 2011-10-2 17:15
本帖最后由 IamI 于 2011-10-2 17:17 编辑

终于见到了呢呵呵。留名马克 Rm的数据格式极度整齐,请加油吧。
作者: summer92    时间: 2011-10-2 17:35
:lol能不能支持 记事本
作者: yangff    时间: 2011-10-2 20:12
WIN32OLE.new("excel.application")
我会到处乱说吗?
作者: galaxys    时间: 2011-10-2 21:26
  1.     require 'win32ole'  
  2.     excel = WIN32OLE.new('Excel.Application')  
  3.     book = excel.workbooks.add  
  4.     sheets = book.worksheets(1)  
  5.     cells = sheets.cells("A1:A5")  
  6.     cells.each do |cell|  
  7.       cell.value = 10  
  8.     end  
复制代码
运行这个提示“require方法没有定义”……所以说这个WIN32OLE.new('Excel.Application')  要怎么用法呢?请指教
作者: 英顺的马甲    时间: 2011-10-5 21:59
galaxys 发表于 2011-10-2 21:26
运行这个提示“require方法没有定义”……所以说这个WIN32OLE.new('Excel.Application')  要怎么用法呢?请 ...

win32ole.rb 源码
至于 win32ole.so Ruby 程序中就有了(其实这个也有)
  1. require 'win32ole.so'

  2. # re-define Thread#initialize
  3. # bug #2618(ruby-core:27634)

  4. class Thread
  5.   alias :org_initialize :initialize
  6.   def initialize(*arg, &block)
  7.     if block
  8.       org_initialize(*arg) {
  9.         WIN32OLE.ole_initialize
  10.         begin
  11.           block.call(*arg)
  12.         ensure
  13.           WIN32OLE.ole_uninitialize
  14.         end
  15.       }
  16.     else
  17.       org_initialize(*arg)
  18.     end
  19.   end
  20. end
复制代码
rmxp1.3 可以 require .so 文件
作者: qx490135894    时间: 2012-3-22 09:50
您介绍的第二个工具 打不开!


‘‘──qx490135894于2012-3-22 09:51补充以下内容

用excel怎么编辑数据库,能说说具体的步骤吗?
’’




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