summaryrefslogtreecommitdiff
path: root/pad/init_code.lua
diff options
context:
space:
mode:
Diffstat (limited to 'pad/init_code.lua')
-rw-r--r--pad/init_code.lua71
1 files changed, 71 insertions, 0 deletions
diff --git a/pad/init_code.lua b/pad/init_code.lua
new file mode 100644
index 0000000..e0fbfdf
--- /dev/null
+++ b/pad/init_code.lua
@@ -0,0 +1,71 @@
+if event.init then
+ local accounts = {}
+ S.acc = S.acc or accounts
+end
+
+F.ack = function(n, c)
+ local r
+ local acc_n
+
+ if n ~= nil and c ~= nil then
+ acc_n = S.acc and S.acc[n]
+ if acc_n then
+ r = S.acc[n][c]
+ end
+
+ if r ~= nil and r > 0 then
+ S.acc[n][c] = S.acc[n][c] - 1
+ end
+ end
+
+ return r
+end
+
+F.ick = function (m)
+ local wm, au, out, r
+ local a, b, c, d
+
+ if m ~= nil then
+ a = m:find("\\u0003watermark\\u0002")
+ c = m:find("\\u0003owner\\u0002")
+ end
+
+ if a ~= nil then
+ wm = m:sub(a+21)
+ end
+
+ if c ~= nil then
+ au = m:sub(c+17)
+ end
+
+ if wm ~= nil then
+ b = wm:find("\\u0003")
+ if b then
+ wm = wm:sub(1, b - 1)
+ end
+ end
+
+ if au ~= nil then
+ d = au:find("\\u0003")
+ if d then
+ au = au:sub(1, d - 1)
+ end
+ if au and au:sub(-9) == "(printed)" then
+ au = au:sub(1, -11)
+ end
+ end
+
+ if au ~= nil and wm ~= nil then
+ r = F.ack(au, wm)
+ else
+ return "ERR:Not a valid transport pass"
+ end
+
+ if r ~= nil and r > 0 then
+ out = "ACC:" .. tostring(r-1) .. " remaining uses"
+ else
+ out = "ERR:No remaining uses. Please top-up."
+ end
+
+ return out
+end \ No newline at end of file