Lines of
残局文料/残局改名.lua
from check-in 91958121fe
that are changed by the sequence of edits moving toward
check-in c4461ce231:
1: package.path = [[.\lua_lib\?.lua;]] .. package.path
2: package.cpath = [[.\lua_lib\?.dll;]] .. package.cpath
3: local 字集码互转库 = require("u8_to_a")
4: local u8 = 字集码互转库.u8_to_a
5: local f = require(u8("常用库"))
6: local 字段名对 = require(u8("字段名"))
7: local 简文件库 = require("lfs")
8: local 简数据库库 = require("lsqlite3")
9: local d = {}
10: do
11: local TYPE_SPELL = 0x2
12: local TYPE_TRAP = 0x4
13: local TYPE_EFFECT = 0x20
14: local TYPE_PENDULUM = 0x1000000
15: local 有效果卡的类排 = {
16: TYPE_SPELL
17: , TYPE_TRAP
18: , TYPE_EFFECT
19: }
20: local 无效果灵摆怪兽排 = {
21: 28363749 --火蛋白石头龙头领
22: , 19474136 --曼陀林草龙
23: , 17390179 --闪光之骑士
24: , 83980492 --铜锣龙
25: }
26: --~ 卡对
27: function d.筛有效果卡(o1_4)
28: for o1 = 1, #有效果卡的类排 do
29: if bit.band(有效果卡的类排[o1], o1_4.type) == 0 then
30: else
31: return o1_4
32: end
33: end
34: if bit.band(TYPE_PENDULUM, o1_4.type) == 0 then
35: else
36: if 无效果灵摆怪兽排[o1_4.id] then
37: else
38: return o1_4
39: end
40: end
41: end
42: end
43: --~ 各文件的卡对排
91958121fe 2024-02-05 44: function d.筛有效果卡的张数(o1_0)
91958121fe 2024-02-05 45: local k1_8
91958121fe 2024-02-05 46: --~ 卡排
91958121fe 2024-02-05 47: k1_8 = f.历排(o1_0, d.筛有效果卡)
91958121fe 2024-02-05 48: return #k1_8
49: end
50: --~ 各文件的卡编排
51: function d.取卡对_一维(o1_0)
52: return f.历排(o1_0, d.取卡对)
53: end
54: --~ 卡编
55: function d.取卡对(o1)
56: local k1_0, k2_0
57: --~ 卡文对
58: k1_0 = d.取卡文(o1)
59: --~ 卡数据对
60: k2_0 = d.取卡数据(o1)
61: return f.连两对(k1_0, k2_0)
62: end
63: --~ 卡编
64: function d.取卡文(o1)
65: for o1_4 in 数据库:nrows("select * from texts where id = " .. o1) do
66: return o1_4
67: end
68: end
69: --~ 卡编
70: function d.取卡数据(o1)
71: for o1_4 in 数据库:nrows("select * from datas where id = " .. o1) do
72: --~ if o1_4.setcode > 0xffffffff then
73: --~ ffi = require("ffi")
74: --~ print(bit.tohex(o1_4.setcode, 16), o1_4.setcode, o1_4.setcode == 36592129229979791, bit.tohex(bit.rshift(o1_4.setcode, 31)), bit.tohex(bit.band(o1_4.setcode, 0xf)), string.format("%x", 36592129229979791 - 36592129229979791), bit.tohex(math.fmod(36592129229979791, 0xffff + 1)), math.fmod(36592129229979791, 0xffff + 1), ffi.new("uint64_t[1]", 36592129229979791)[0], tostring(36592129229979791) == tostring(o1_4.setcode), tonumber(tostring(o1_4.setcode)) == 36592129229979791, math.modf(36592129229979791 / (0xffff + 1)), bit.tohex(bit.band(o1_4.setcode - 4, ffi.new("uint64_t[1]", 0xffff)[0])))
75: --~ print(string.format("%x", 36592129229979791 - 5))
76: --~ else
77: --~ end
78: return o1_4
79: end
80: end
81: --~ 文
82: function d.局筛卡编(o1)
83: local k1_0
84: --~ 卡编排
85: k1_0 = f.历文(o1, string.gmatch, "[^\n]+")
86: k1_0 = f.历排(k1_0, string.match, "Debug%.AddCard.+")
87: return f.历排(k1_0, string.match, "[0-9]+")
88: end
89: --~ 文
90: function d.局筛则数(o1)
91: local k1
92: local k1_0
93: --~ 则数排
94: k1_0 = f.历文(o1, string.gmatch, "[^\n]+")
95: k1_0 = f.历排(k1_0, f.全筛前缀, "Debug.ReloadFieldBegin")
96: --~ 则数
97: k1 = string.match(k1_0[1], "[0-9]")
98: return k1 or 3
99: end
100: --~ 卡对排
101: function d.荐名(o1_0)
102: --~ print(o1_0[1].name)
103: --~ return o1_0[1]
91958121fe 2024-02-05 104: d.荐字段名(o1_0)
91958121fe 2024-02-05 105: end
91958121fe 2024-02-05 106: --~ 卡对排
91958121fe 2024-02-05 107: function d.荐字段名(o1_0)
108: local k1, k2, k3, k4
109: local k1_0
110: --~ 字段对
111: k1_0 = {}
112: for o1 = 1, #o1_0 do
113: --~ 字段数
114: k1 = f.to_uint64(o1_0[o1].setcode)
115: if k1 > 0xffffFFFFffff then
116: k1 = k1 - 1
117: elseif k1 < 1 then
118: else
119: for o2 = 1, 11112222 do
120: if k1 < 1 then
91958121fe 2024-02-05 121: --~ f.历对(k1_0, print)
91958121fe 2024-02-05 122: --~ print(3)
123: break
91958121fe 2024-02-05 124: --~ return
125: else
126: --~ 大字段号
127: k2 = f.位和(k1, 0xffff)
128: k1 = f.位右移(k1, f.乘法(4, 4))
91958121fe 2024-02-05 129: --~ print(k1, k2)
130: --~ 字段名
131: k3 = 字段名对[tonumber(k2)]
91958121fe 2024-02-05 132: --~ print(k3)
133: if k3 then
134: if k1_0[k3] then
135: k1_0[k3] = f.加法(k1_0[k3], 1)
136: else
137: k1_0[k3] = 1
138: end
91958121fe 2024-02-05 139: --~ 小字段号
91958121fe 2024-02-05 140: k4 = f.位和(k1, 0xfff)
91958121fe 2024-02-05 141: k3 = 字段名对[tonumber(k4)]
91958121fe 2024-02-05 142: if k3 then
91958121fe 2024-02-05 143: if k1_0[k3] then
91958121fe 2024-02-05 144: k1_0[k3] = f.加法(k1_0[k3], 1)
91958121fe 2024-02-05 145: else
91958121fe 2024-02-05 146: k1_0[k3] = 1
147: end
148: else
149: end
150: else
151: end
152: end
153: end
154: end
91958121fe 2024-02-05 155: --~ print(string.format("%x", k1))
91958121fe 2024-02-05 156: --~ for o2 = 1, 6 do
91958121fe 2024-02-05 157: --~ print(k1)
91958121fe 2024-02-05 158: --~ if k1 < 1 then
91958121fe 2024-02-05 159: --~ f.历对(k1_0, print)
91958121fe 2024-02-05 160: --~ print(23)
91958121fe 2024-02-05 161: --~ return
91958121fe 2024-02-05 162: --~ else
91958121fe 2024-02-05 163: --~ 大字段号
91958121fe 2024-02-05 164: --~ k2 = f.位和(k1, 0xffff)
91958121fe 2024-02-05 165: --~ k1 = f.位右移(k1, f.乘法(4, 4))
91958121fe 2024-02-05 166: --~ 字段名
91958121fe 2024-02-05 167: --~ k3 = 字段名对[k2]
91958121fe 2024-02-05 168: --~ if k3 then
91958121fe 2024-02-05 169: --~ if k1_0[k3] then
91958121fe 2024-02-05 170: --~ k1_0[k3] = f.加法(k1_0[k3], 1)
91958121fe 2024-02-05 171: --~ else
91958121fe 2024-02-05 172: --~ k1_0[k3] = 1
91958121fe 2024-02-05 173: --~ end
91958121fe 2024-02-05 174: --~ 小字段号
91958121fe 2024-02-05 175: --~ k4 = f.位和(k1, 0xfff)
91958121fe 2024-02-05 176: --~ k3 = 字段名对[k4]
91958121fe 2024-02-05 177: --~ if k3 then
91958121fe 2024-02-05 178: --~ if k1_0[k3] then
91958121fe 2024-02-05 179: --~ k1_0[k3] = f.加法(k1_0[k3], 1)
91958121fe 2024-02-05 180: --~ else
91958121fe 2024-02-05 181: --~ k1_0[k3] = 1
91958121fe 2024-02-05 182: --~ end
91958121fe 2024-02-05 183: --~ else
91958121fe 2024-02-05 184: --~ end
91958121fe 2024-02-05 185: --~ else
91958121fe 2024-02-05 186: --~ end
91958121fe 2024-02-05 187: --~ end
91958121fe 2024-02-05 188:
91958121fe 2024-02-05 189: --~ print(k1, k2)
91958121fe 2024-02-05 190: --~ k2 =
91958121fe 2024-02-05 191: --~ end
91958121fe 2024-02-05 192: --~ 大字段号
91958121fe 2024-02-05 193: --~ k1 = bit.band(o1_0[o1].setcode, 0xffff)
91958121fe 2024-02-05 194: --~ print(o1_0[o1].setcode)
91958121fe 2024-02-05 195: --~ print(f.位和(o1_0[o1].setcode, 0xffff))
91958121fe 2024-02-05 196: --~ if k1 > 0xfff then
91958121fe 2024-02-05 197: --~ 字段名
91958121fe 2024-02-05 198: --~ k2 = 字段名对[k1]
91958121fe 2024-02-05 199: --~ print(k1, k2)
91958121fe 2024-02-05 200: --~ if k1_0[k2] then
91958121fe 2024-02-05 201: --~ k1_0[k2] = k1_0[k2] + 1
91958121fe 2024-02-05 202: --~ else
91958121fe 2024-02-05 203: --~ k1_0[k2] = 1
91958121fe 2024-02-05 204: --~ end
91958121fe 2024-02-05 205: --~ end
91958121fe 2024-02-05 206: --~ 小字段号
91958121fe 2024-02-05 207: --~ k1 = bit.band(o1_0[o1].setcode, 0xfff)
91958121fe 2024-02-05 208: --~ 字段名
91958121fe 2024-02-05 209: --~ k2 = 字段名对[k1]
91958121fe 2024-02-05 210: --~ if k1_0[k2] then
91958121fe 2024-02-05 211: --~ k1_0[k2] = k1_0[k2] + 1
91958121fe 2024-02-05 212: --~ elseif k2 == nil then
91958121fe 2024-02-05 213: --~ else
91958121fe 2024-02-05 214: --~ k1_0[k2] = 1
91958121fe 2024-02-05 215: --~ end
91958121fe 2024-02-05 216: end
91958121fe 2024-02-05 217: f.历对(k1_0, print)
218: end
219: --~ 目对
220: function d.残局改名(o1_0)
91958121fe 2024-02-05 221: local k1_0, k2_0, k3_0, k4_0, k5_0, k6_0
91958121fe 2024-02-05 222: --~ 文件排
223: k1_0 = f.历文(o1_0.文件目, 简文件库.dir)
224: k1_0 = f.历排(k1_0, f.全筛后缀, ".lua")
91958121fe 2024-02-05 225: for o1 = 1, #k1_0 do
91958121fe 2024-02-05 226: k1_0[o1] = f.加前缀(k1_0[o1], o1_0.文件目)
91958121fe 2024-02-05 227: k1_0[o1] = f.读文件(k1_0[o1])
91958121fe 2024-02-05 228: k1_0[o1] = string.gsub(k1_0[o1], "%-%-" .. "%[(=*)%[" .. ".-" .. "%]%1%]", "")
91958121fe 2024-02-05 229: k1_0[o1] = string.gsub(k1_0[o1], "%-%-" .. "[^\n]*", "")
230: end
231: --~ 则数排
91958121fe 2024-02-05 232: k2_0 = f.历排(k1_0, d.局筛则数)
233: --~ 各文件的卡编排
91958121fe 2024-02-05 234: k3_0 = f.历排(k1_0, d.局筛卡编)
235: _G.数据库 = 简数据库库.open(o1_0.数据库路)
236: --~ 各文件的卡对排
91958121fe 2024-02-05 237: k4_0 = f.历排(k3_0, d.取卡对_一维)
238: --~ 有效果卡的张数排
91958121fe 2024-02-05 239: k5_0 = f.历排(k4_0, d.筛有效果卡的张数)
240: --~ 荐名排
91958121fe 2024-02-05 241: k6_0 = f.历排(k4_0, d.荐名)
91958121fe 2024-02-05 242: --~ print(k6_0[0])
243: --~ print(k5_0[2])
244: end
245: d.目对 = {
246: ["文件目"] = "../single/"
247: , ["数据库路"] = [[D:\install\YGOPro\cards.cdb]]
248: }
91958121fe 2024-02-05 249: for o1_0, o2_0 in pairs(d.目对) do
91958121fe 2024-02-05 250: d.目对[o1_0] = f.操类(o2_0, "string", u8)
251: end
252: d.残局改名(d.目对)