卡片数据库 - Fluorohydride/ygopro GitHub Wiki

卡片数据库说明

YGOPro 的卡片数据库采用 SQLite 格式,文件名为 cards.cdb,存放于程序根目录。

部分字段使用二进制位进行表示。

数据库结构

CREATE TABLE datas(
	id INTEGER PRIMARY KEY,
	ot INTEGER,
	alias INTEGER,
	setcode INTEGER,
	type INTEGER,
	atk INTEGER,
	def INTEGER,
	level INTEGER,
	race INTEGER,
	attribute INTEGER,
	category INTEGER
);

CREATE TABLE texts(
	id INTEGER PRIMARY KEY,
	name TEXT,
	"desc" TEXT,
	str1 TEXT,
	str2 TEXT,
	str3 TEXT,
	str4 TEXT,
	str5 TEXT,
	str6 TEXT,
	str7 TEXT,
	str8 TEXT,
	str9 TEXT,
	str10 TEXT,
	str11 TEXT,
	str12 TEXT,
	str13 TEXT,
	str14 TEXT,
	str15 TEXT,
	str16 TEXT
);

数据库字段说明

datas

  • id:卡片左下角的 8 位密码

    • 衍生物卡:创造衍生物的卡片密码 +1
    • 无密码卡:YGOPro 自行编码
  • ot:卡片的归属(OCG/TCG 等)

    • 0x1AVAIL_OCG
    • 0x2AVAIL_TCG
    • 0x4AVAIL_CUSTOM(自定义卡片)
    • 0x8AVAIL_SC(简体中文)
  • alias:卡片的同名卡

    • 0:非同名卡
    • abs(alias - id) < CARD_ARTWORK_VERSIONS_OFFSET:异画卡,alias 为实际密码,id 为实际密码 +1
      • 例如,初版 青眼白龙id89631139alias0,异画 青眼白龙id8963114089631141 等,alias89631139
    • 其他 alias:规则上的同名卡,alias 为对应同名卡片的密码,id 为实际密码
      • 例如,id22702055alias0传说之都 亚特兰蒂斯id295517alias22702055
  • setcode:卡片的系列(卡名中包含的字段)

    • 将 4 个值存储于 1 个 int64 中,每个值占 16 位
    • 每个值的后 12 位为根字段,前 4 位为子字段
      • 例如,0x10dc超级量子战士0x20dc超级量子机兽,其中 0x0dc 为根字段 超级量子0x10000x2000 为子字段
      • 注意子字段间的包含关系,例如 0x107a圣骑士0x207a圣剑0x507a焰圣骑士,其中 0x507a(子字段 0b0101)包含 0x107a(子字段 0b0001)但不包含 0x207a(子字段 0b0010
    • 列表见 strings.conf 中的 setnames 部分
  • type:卡片的类型

    • constants.lua 中的 TYPE_*
    • 通常魔法和通常陷阱不使用 TYPE_NORMAL
    • 陷阱怪兽不在数据库中设置 TYPE_TRAPMONSTER,但需要设置属性、等级、攻守等数据
  • atk:卡片的攻击力

    • -1:表示记载的攻击力为问号
  • def:卡片的守备力

    • -1:表示记载的守备力为问号
    • 连接怪兽在此字段存储连接箭头,参考 constants.lua 中的 LINK_MARKER_* 或数字键盘布局
  • level:卡片的等级

    • 此字段为一个 32 位整数:
      • 第 0-7 位:表示卡片的等级
      • 第 8-15 位:保留
      • 第 16-23 位:表示右灵摆刻度
      • 第 24-31 位:表示左灵摆刻度
    • 例如,0x04040007 表示等级 7 的灵摆怪兽,左刻度 4,右刻度 4
    • 超量怪兽的阶级和连接怪兽的连接值也视为等级存储在此字段
  • race:卡片的种族

    • constants.lua 中的 RACE_*
  • attribute:卡片的属性

    • constants.lua 中的 ATTRIBUTE_*
  • category:卡片的效果类型

    • 仅供搜索使用
    • system.conf!system 1100 开始的部分

texts

  • id:卡片左下角的 8 位密码

    • datas 表的 id 一致
  • name:卡片的名称

  • desc:卡片的效果文本

    • 灵摆怪兽的格式约定为:

      ←(左刻度) 【灵摆】 (右刻度)→
      (灵摆效果)
      【怪兽效果】
      (怪兽效果)
      
  • str1 ~ str16:卡片的提示文本

    • 用于决斗中的弹窗提示等