查看: 3221|回复: 5

[RMVA发布] CSV表格数据库v1.0【VA】

[复制链接]
梦石
0
星屑
80
在线时间
132 小时
注册时间
2014-5-7
回帖
143
发表于 2015-9-4 21:18:58 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Silentever 于 2015-9-5 13:10 编辑

为什么RGSS没有CSV!?
为什么ASCII-8BIT就是不能转UTF-8!?
为什么CSV不能直接UTF-8必须用记事本转码!?





以上纯属抱怨。

正文:说什么功能反正看标题就知道了吧?总之就是数据库↔CSV表格双向转换,可以转换道具、技能、武器跟防具数据。
支持汉字←请大神别吐槽,无知的小生跟csv编码大战了整整2天。
虽然表格输入说明文字不太美观,但重在方便(实用性至上主义)。

关键部分是抄……参考HimeWorks的脚本,感觉不说出来不太好。

以上完。然后是范例
CSV数据库v1.0.rar (1.43 MB, 下载次数: 331)




另外需要注意的:每次保存csv需要手动转码到utf-8(用记事本),否则汉字会变成乱码。

评分

参与人数 1星屑 +4 收起 理由
574656549 + 4 怎么不要xml 数据裱

查看全部评分

「私が来た!  私が見た!  ならば次わ買つだけのこと!」
梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
发表于 2015-9-4 23:40:46 | 显示全部楼层
本帖最后由 墨凌羽 于 2015-9-4 18:11 编辑

然而我写过这种东西。。。ORZ
下下来看看


脚本有问题ORZ。。。。csv文件已损坏

点评

你光顾着装逼忘了关闭文件  发表于 2015-9-5 22:08
def read(p) return x=[],File.open(p,"r").readlines().each{|i|x.push(i.split(","))} end 不管转码的一行版CSV读取233 返回的是一个二维数组  发表于 2015-9-5 11:30
抱歉,是我太小看csv了,没想到每次保存都会变回ASCII。应该已经没问题了,大概(  发表于 2015-9-5 03:52
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复

使用道具 举报

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2015-9-5 08:35:53 | 显示全部楼层
本帖最后由 VIPArcher 于 2015-9-5 08:49 编辑
ASCII-8BIT就是不能转UTF-8
  1. ASCII_8BIT = '喵喵喵'.unpack('M*').first
  2. ASCII_8BIT.force_encoding __ENCODING__ #=> '喵喵喵'
  3. ASCII_8BIT.force_encoding 'UTF-8' #=> '喵喵喵'
  4. eval ASCII_8BIT.inspect #=> '喵喵喵'
复制代码

点评

另外 经测试 在VA里external_encoding和internal_encoding是无效的【该死又是被eb阉割掉的么ORZ  发表于 2015-9-5 15:19
force_encoding并不能真正意义上改变编码。。。只是修正字符串编码信息ORZ  发表于 2015-9-5 14:38

评分

参与人数 1星屑 +24 收起 理由
kuerlulu + 24 噫

查看全部评分

回复

使用道具 举报

梦石
10
星屑
5748
在线时间
1849 小时
注册时间
2013-2-14
回帖
327

开拓者

发表于 2015-9-5 11:26:23 | 显示全部楼层
于是买了,看看有多方便
回复

使用道具 举报

梦石
0
星屑
48
在线时间
784 小时
注册时间
2013-1-4
回帖
1057
发表于 2015-9-5 15:27:21 | 显示全部楼层
本帖最后由 墨凌羽 于 2015-9-5 09:47 编辑

嗯 试了下新版 貌似除了转码问题没解决之外 还有“no table find...”什么的


嗯 我之前写的csv读取
实际上没必要和那个编码较劲 外部csv文件保持utf-8编码就好了 反正RM里折腾编码会很蛋疼

[pre lang="ruby"]module DataBase

  def self.init
      @classlist = []
  end
  def self.classlist
    return @classlist
  end
  def self.classlist= obj
    @classlist = obj
  end

  module DataBase::CSV

    attr_reader :data_table

    def self.load_data(filename)
      data = readtable(filename)
      class_name = make_data_class(data, filename)
      @data_table = fill_datas(data, class_name)
    end

    #生成数据文件对应的类
    def self.make_data_class(data, filename)
      names = data[0]   
      data_class = DataBase.const_set(filename.capitalize, Class.new)
      data_class.class_eval do
        names.each{|i| attr_accessor i}
        define_method(:initialize) do |val|
          names.each_with_index do |name, i|
            instance_variable_set("@"+name, eval(val))
          end
        end
      end
      DataBase.classlist.push(filename)

      return data_class
    end

    #填充数据
    def self.fill_datas(data, class_name)
      table = []
      table[0] = nil
      #删除头数据
      data.delete_at(0)
      data.each_index{|i| table.push(class_name.new(data))}
      return table
    end

    #读取
    def self.readtable(filename)
      data = File.open("#{$DATAPATH}/#{filename}.csv", "r") do |f|
        f = f.readlines()
        f = f.each_index do |i|
          f = f.split(",")
          f[-1] = f[-1].chomp
        end
      end
    end
  end
end[/pre]
RM-GUI延期。。。最近被黑心老板压迫T_T
二次元少女的shitake,长着长脸,身高165,蓝色卷双马尾,FCUP,瞳色黑色,病气和御宅属性,是天才少女。
回复

使用道具 举报

梦石
0
星屑
80
在线时间
132 小时
注册时间
2014-5-7
回帖
143
 楼主| 发表于 2015-9-5 20:02:38 | 显示全部楼层
本帖最后由 Silentever 于 2015-9-5 13:14 编辑
墨凌羽 发表于 2015-9-5 08:27
嗯 试了下新版 貌似除了转码问题没解决之外 还有“no table find...”什么的


嗯 我之前写的csv读取


其实修复的是写入csv的时候汉字变成乱码的问题。另外也忘了备注csv必须每次手动转码才行……

问题在于从ASCII文件读取汉字会变成乱码,而csv只能用ASCII保存,所以一直在尝试转码解决这个问题。
现在需要每次手动转码才能支持汉字,希望以后能找到更完美的解决办法。

点评

win32API....  发表于 2015-9-5 20:52
「私が来た!  私が見た!  ならば次わ買つだけのこと!」
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部