Syntax highlight!

This commit is contained in:
Bottersnike 2021-12-28 22:29:33 +00:00
parent fb99158425
commit 61fd25fa51
29 changed files with 1304 additions and 1220 deletions

116
docs.py
View File

@ -1,32 +1,73 @@
from flask import Flask, send_from_directory, render_template from flask import Flask, send_from_directory, render_template
from livereload import Server from livereload import Server
import xml_lexer
import re
import os import os
app = Flask(__name__) app = Flask(__name__)
app.jinja_options.setdefault('extensions', []).append('jinja2_highlight.HighlightExtension')
TEMPLATES = "templates"
PAGES_BASE = "pages"
STATIC = ["images"]
ROOT = os.environ.get("EA_ROOT", "")
def generate_xrpc_list():
output = "<ul>"
proto = TEMPLATES + "/" + PAGES_BASE + "/proto"
for base, _, files in os.walk(proto):
prefix = base[len(proto):].replace("\\", "/").strip("/")
if prefix:
prefix = prefix.replace("/", ".") + "."
for i in files:
delim = "_" if prefix else "."
href = f"{ROOT}/proto{base[len(proto):]}/{i}"
output += f"<li><code><a href=\"{href}\">"
output += prefix + i.replace(".html", delim + "%s")
output += "</code></a></li>"
with open(os.path.join(base, i)) as f:
headers = re.findall('<h2 id="([^"]*?)">', f.read())
output += "<ul>"
for j in headers:
output += f"<li><code><a href=\"{href}#{j}\">"
output += prefix + i.replace(".html", delim + j)
output += "</code></a></li>"
output += "</ul>"
return output + "</ul>"
@app.route("/styles.css") @app.route("/styles.css")
def styles(): def styles():
return send_from_directory(".", "styles.css") return send_from_directory(".", "styles.css")
@app.route("/tango.css")
def tango():
return send_from_directory(".", "tango.css")
for base, folders, files in os.walk("images"): for i in STATIC:
for name in files: for base, _, files in os.walk(i):
def handler(base, name): for name in files:
def handler(): def handler(base, name):
return send_from_directory(base, name) def handler():
return handler return send_from_directory(base, name)
local_base = base.replace("\\", "/").strip(".").strip("/") return handler
route = local_base + "/" + name local_base = base.replace("\\", "/").strip(".").strip("/")
if not route.startswith("/"): route = local_base + "/" + name
route = "/" + route if not route.startswith("/"):
route = "/" + route
handler = handler(base, name) handler = handler(base, name)
handler.__name__ == route handler.__name__ == route
app.add_url_rule(route, route, handler) app.add_url_rule(route, route, handler)
TEMPLATES = "templates"
PAGES_BASE = "pages" for base, _, files in os.walk(TEMPLATES + "/" + PAGES_BASE):
for base, folders, files in os.walk(TEMPLATES + "/" + PAGES_BASE):
if ".git" in base: if ".git" in base:
continue continue
if base.startswith(TEMPLATES): if base.startswith(TEMPLATES):
@ -36,7 +77,11 @@ for base, folders, files in os.walk(TEMPLATES + "/" + PAGES_BASE):
if name.endswith(".html"): if name.endswith(".html"):
def handler(base, name): def handler(base, name):
def handler(): def handler():
return render_template(os.path.join(base, name).strip("/").replace("\\", "/"), ROOT=os.environ.get("EA_ROOT")) return render_template(
os.path.join(base, name).strip("/").replace("\\", "/"),
ROOT=ROOT,
generate_xrpc_list=generate_xrpc_list
)
return handler return handler
local_base = base.replace("\\", "/").strip(".").strip("/") local_base = base.replace("\\", "/").strip(".").strip("/")
@ -54,26 +99,27 @@ for base, folders, files in os.walk(TEMPLATES + "/" + PAGES_BASE):
app.add_url_rule(route, route, handler) app.add_url_rule(route, route, handler)
from flask import url_for # from flask import url_for
def has_no_empty_params(rule): # def has_no_empty_params(rule):
defaults = rule.defaults if rule.defaults is not None else () # defaults = rule.defaults if rule.defaults is not None else ()
arguments = rule.arguments if rule.arguments is not None else () # arguments = rule.arguments if rule.arguments is not None else ()
return len(defaults) >= len(arguments) # return len(defaults) >= len(arguments)
@app.route("/site-map") # @app.route("/site-map")
def site_map(): # def site_map():
links = [] # links = []
for rule in app.url_map.iter_rules(): # for rule in app.url_map.iter_rules():
# Filter out rules we can't navigate to in a browser # if "GET" in rule.methods and has_no_empty_params(rule):
# and rules that require parameters # url = url_for(rule.endpoint, **(rule.defaults or {}))
if "GET" in rule.methods and has_no_empty_params(rule): # links.append((url, rule.endpoint))
url = url_for(rule.endpoint, **(rule.defaults or {})) # return str(links)
links.append((url, rule.endpoint))
return str(links)
if __name__ == '__main__': if __name__ == '__main__':
app.config['TEMPLATES_AUTO_RELOAD'] = True app.config['TEMPLATES_AUTO_RELOAD'] = True
app.config['DEBUG'] = True app.config['DEBUG'] = True
server = Server(app.wsgi_app) app.run(debug=True, port=3000, host="0.0.0.0")
server.watch("templates")
server.serve(port=3000) # server = Server(app.wsgi_app)
# server.watch(".")
# server.serve(port=3000)

View File

@ -14,6 +14,7 @@ table {
overflow-x: auto; overflow-x: auto;
display: block; display: block;
} }
table.code { table.code {
font-family: monospace; font-family: monospace;
} }
@ -28,9 +29,11 @@ td {
padding: 2px; padding: 2px;
min-width: 32px; min-width: 32px;
} }
table:not(.code) td { table:not(.code) td {
padding: 2px 6px; padding: 2px 6px;
} }
table.code td { table.code td {
text-align: center; text-align: center;
} }
@ -54,13 +57,16 @@ code {
border-radius: 4px; border-radius: 4px;
word-break: break-word; word-break: break-word;
} }
td > code {
td>code {
word-break: normal; word-break: normal;
} }
code > a {
code>a {
color: inherit; color: inherit;
} }
pre > code {
pre>code, .highlight {
display: block; display: block;
word-break: normal; word-break: normal;
border-radius: 4px; border-radius: 4px;
@ -72,6 +78,14 @@ pre > code {
line-height: 1.4; line-height: 1.4;
width: min-content; width: min-content;
} }
pre>.highlight {
margin-bottom: -16px;
}
.highlight>pre {
margin: 0;
}
pre { pre {
max-width: 100%; max-width: 100%;
overflow-x: auto; overflow-x: auto;
@ -90,4 +104,4 @@ details {
margin: 4px 0; margin: 4px 0;
overflow-x: auto; overflow-x: auto;
max-width: 100%; max-width: 100%;
} }

77
tango.css Normal file
View File

@ -0,0 +1,77 @@
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #8f5902; font-style: italic } /* Comment */
.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */
.highlight .g { color: #000000 } /* Generic */
.highlight .k { color: #204a87; font-weight: bold } /* Keyword */
.highlight .l { color: #000000 } /* Literal */
.highlight .n { color: #000000 } /* Name */
.highlight .o { color: #ce5c00; font-weight: bold } /* Operator */
.highlight .x { color: #000000 } /* Other */
.highlight .p { color: #000000; font-weight: bold } /* Punctuation */
.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */
.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */
.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */
.highlight .gd { color: #a40000 } /* Generic.Deleted */
.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
.highlight .gr { color: #ef2929 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #000000; font-style: italic } /* Generic.Output */
.highlight .gp { color: #8f5902 } /* Generic.Prompt */
.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
.highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */
.highlight .ld { color: #000000 } /* Literal.Date */
.highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */
.highlight .s { color: #4e9a06 } /* Literal.String */
.highlight .na { color: #c4a000 } /* Name.Attribute */
.highlight .nb { color: #204a87 } /* Name.Builtin */
.highlight .nc { color: #000000 } /* Name.Class */
.highlight .no { color: #000000 } /* Name.Constant */
.highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #ce5c00 } /* Name.Entity */
.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #000000 } /* Name.Function */
.highlight .nl { color: #f57900 } /* Name.Label */
.highlight .nn { color: #000000 } /* Name.Namespace */
.highlight .nx { color: #000000 } /* Name.Other */
.highlight .py { color: #000000 } /* Name.Property */
.highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #000000 } /* Name.Variable */
.highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */
.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */
.highlight .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */
.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */
.highlight .sc { color: #4e9a06 } /* Literal.String.Char */
.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */
.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */
.highlight .se { color: #4e9a06 } /* Literal.String.Escape */
.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */
.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */
.highlight .sx { color: #4e9a06 } /* Literal.String.Other */
.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */
.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */
.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */
.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #000000 } /* Name.Function.Magic */
.highlight .vc { color: #000000 } /* Name.Variable.Class */
.highlight .vg { color: #000000 } /* Name.Variable.Global */
.highlight .vi { color: #000000 } /* Name.Variable.Instance */
.highlight .vm { color: #000000 } /* Name.Variable.Magic */
.highlight .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */

View File

@ -8,6 +8,7 @@
<title>{% block title %}{% endblock %}{% if self.title() %} | {% endif %}e-Amusement API</title> <title>{% block title %}{% endblock %}{% if self.title() %} | {% endif %}e-Amusement API</title>
<link rel="stylesheet" href="{{ROOT}}/styles.css"> <link rel="stylesheet" href="{{ROOT}}/styles.css">
<link rel="stylesheet" href="{{ROOT}}/tango.css">
</head> </head>
<body> <body>

View File

@ -8,24 +8,25 @@
for. My local implementation is in python, so that's all you're getting :). As a free bonus, have some test for. My local implementation is in python, so that's all you're getting :). As a free bonus, have some test
cases too. It's not great code by any stretch, and it liberally uses assertions rather than proper cases too. It's not great code by any stretch, and it liberally uses assertions rather than proper
exceptions, but it should be a good enough starting point for your own version.</p> exceptions, but it should be a good enough starting point for your own version.</p>
<pre><code>import binascii <pre></pre>{% highlight 'python' %}
import binascii
from Crypto.Cipher import DES3 from Crypto.Cipher import DES3
KEY = b"" # Check the <a href="#des">DES section</a> for this KEY = b"" # Check the DES section for this
_KEY = bytes(i * 2 for i in KEY) # Preprocess the key _KEY = bytes(i * 2 for i in KEY) # Preprocess the key
ALPHABET = "0123456789ABCDEFGHJKLMNPRSTUWXYZ" ALPHABET = "0123456789ABCDEFGHJKLMNPRSTUWXYZ"
def enc_des(uid): def enc_des(uid):
cipher = DES3.new(_KEY, DES3.MODE_CBC, iv=b'\0' * 8) cipher = DES3.new(_KEY, DES3.MODE_CBC, iv=b'\0' * 8)
return cipher.encrypt(uid) return cipher.encrypt(uid)
def dec_des(uid): def dec_des(uid):
cipher = DES3.new(_KEY, DES3.MODE_CBC, iv=b'\0' * 8) cipher = DES3.new(_KEY, DES3.MODE_CBC, iv=b'\0' * 8)
return cipher.decrypt(uid) return cipher.decrypt(uid)
def checksum(data): def checksum(data):
@ -38,79 +39,79 @@ return chk
def pack_5(data): def pack_5(data):
data = "".join(f"{i:05b}" for i in data) data = "".join(f"{i:05b}" for i in data)
if len(data) % 8 != 0: if len(data) % 8 != 0:
data += "0" * (8 - (len(data) % 8)) data += "0" * (8 - (len(data) % 8))
return bytes(int(data[i:i+8], 2) for i in range(0, len(data), 8)) return bytes(int(data[i:i+8], 2) for i in range(0, len(data), 8))
def unpack_5(data): def unpack_5(data):
data = "".join(f"{i:08b}" for i in data) data = "".join(f"{i:08b}" for i in data)
if len(data) % 5 != 0: if len(data) % 5 != 0:
data += "0" * (5 - (len(data) % 5)) data += "0" * (5 - (len(data) % 5))
return bytes(int(data[i:i+5], 2) for i in range(0, len(data), 5)) return bytes(int(data[i:i+5], 2) for i in range(0, len(data), 5))
def to_konami_id(uid): def to_konami_id(uid):
assert len(uid) == 16, "UID must be 16 bytes" assert len(uid) == 16, "UID must be 16 bytes"
if uid.upper().startswith("E004"): if uid.upper().startswith("E004"):
card_type = 1 card_type = 1
elif uid.upper().startswith("0"): elif uid.upper().startswith("0"):
card_type = 2 card_type = 2
else: else:
raise ValueError("Invalid UID prefix") raise ValueError("Invalid UID prefix")
kid = binascii.unhexlify(uid) kid = binascii.unhexlify(uid)
assert len(kid) == 8, "ID must be 8 bytes" assert len(kid) == 8, "ID must be 8 bytes"
out = bytearray(unpack_5(enc_des(kid[::-1]))[:13]) + b'\0\0\0' out = bytearray(unpack_5(enc_des(kid[::-1]))[:13]) + b'\0\0\0'
out[0] ^= card_type out[0] ^= card_type
out[13] = 1 out[13] = 1
for i in range(1, 14): for i in range(1, 14):
out[i] ^= out[i - 1] out[i] ^= out[i - 1]
out[14] = card_type out[14] = card_type
out[15] = checksum(out) out[15] = checksum(out)
return "".join(ALPHABET[i] for i in out) return "".join(ALPHABET[i] for i in out)
def to_uid(konami_id): def to_uid(konami_id):
if konami_id[14] == "1": if konami_id[14] == "1":
card_type = 1 card_type = 1
elif konami_id[14] == "2": elif konami_id[14] == "2":
card_type = 2 card_type = 2
else: else:
raise ValueError("Invalid ID") raise ValueError("Invalid ID")
assert len(konami_id) == 16, f"ID must be 16 characters" assert len(konami_id) == 16, f"ID must be 16 characters"
assert all(i in ALPHABET for i in konami_id), "ID contains invalid characters" assert all(i in ALPHABET for i in konami_id), "ID contains invalid characters"
card = [ALPHABET.index(i) for i in konami_id] card = [ALPHABET.index(i) for i in konami_id]
assert card[11] % 2 == card[12] % 2, "Parity check failed" assert card[11] % 2 == card[12] % 2, "Parity check failed"
assert card[13] == card[12] ^ 1, "Card invalid" assert card[13] == card[12] ^ 1, "Card invalid"
assert card[15] == checksum(card), "Checksum failed" assert card[15] == checksum(card), "Checksum failed"
for i in range(13, 0, -1): for i in range(13, 0, -1):
card[i] ^= card[i - 1] card[i] ^= card[i - 1]
card[0] ^= card_type card[0] ^= card_type
card_id = dec_des(pack_5(card[:13])[:8])[::-1] card_id = dec_des(pack_5(card[:13])[:8])[::-1]
card_id = binascii.hexlify(card_id).decode().upper() card_id = binascii.hexlify(card_id).decode().upper()
if card_type == 1: if card_type == 1:
assert card_id[:4] == "E004", "Invalid card type" assert card_id[:4] == "E004", "Invalid card type"
elif card_type == 2: elif card_type == 2:
assert card_id[0] == "0", "Invalid card type" assert card_id[0] == "0", "Invalid card type"
return card_id return card_id
if __name__ == "__main__": if __name__ == "__main__":
assert to_konami_id("0000000000000000") == "007TUT8XJNSSPN2P", "To KID failed" assert to_konami_id("0000000000000000") == "007TUT8XJNSSPN2P", "To KID failed"
assert to_uid("007TUT8XJNSSPN2P") == "0000000000000000", "From KID failed" assert to_uid("007TUT8XJNSSPN2P") == "0000000000000000", "From KID failed"
assert to_uid(to_konami_id("000000100200F000")) == "000000100200F000", "Roundtrip failed" assert to_uid(to_konami_id("000000100200F000")) == "000000100200F000", "Roundtrip failed"
</code></pre> {% endhighlight %}</pre>
</details> </details>
<p>e-Amusement cards use 16 digit IDs. KONAMI IDs are also 16 digits. Are they related? Yes! In fact, KONAMI IDs are <p>e-Amusement cards use 16 digit IDs. KONAMI IDs are also 16 digits. Are they related? Yes! In fact, KONAMI IDs are
derived from the ID stored on the e-Amusement card.</p> derived from the ID stored on the e-Amusement card.</p>
@ -195,7 +196,7 @@ card[0] ^= card_type</code></pre>
<summary>In <i>most</i> languages?</summary> <summary>In <i>most</i> languages?</summary>
<p>Haha well you see we can actually cheat and use string manipulation. Wasteful? Incredibly. Efficient? Not <p>Haha well you see we can actually cheat and use string manipulation. Wasteful? Incredibly. Efficient? Not
at all. Quick and easy? Yup!</p> at all. Quick and easy? Yup!</p>
<pre><code>def pack_5(data): <pre>{% highlight "python" %}def pack_5(data):
data = "".join(f"{i:05b}" for i in data) data = "".join(f"{i:05b}" for i in data)
if len(data) % 8 != 0: if len(data) % 8 != 0:
data += "0" * (8 - (len(data) % 8)) data += "0" * (8 - (len(data) % 8))
@ -205,7 +206,7 @@ def unpack_5(data):
data = "".join(f"{i:08b}" for i in data) data = "".join(f"{i:08b}" for i in data)
if len(data) % 5 != 0: if len(data) % 5 != 0:
data += "0" * (5 - (len(data) % 5)) data += "0" * (5 - (len(data) % 5))
return bytes(int(data[i:i+5], 2) for i in range(0, len(data), 5))</code></pre> return bytes(int(data[i:i+5], 2) for i in range(0, len(data), 5)){% endhighlight %}</pre>
<p>If your language of choice allows this, and you don't care for efficiency, this can be a great time-saver <p>If your language of choice allows this, and you don't care for efficiency, this can be a great time-saver
towards get something working. Truth be told my local implementation originally used the Bemani method towards get something working. Truth be told my local implementation originally used the Bemani method
(it was a line-for-line port, after all), switched to the second method, then I opted for this hacky (it was a line-for-line port, after all), switched to the second method, then I opted for this hacky
@ -272,7 +273,7 @@ card[15] = <a href="#checksum">checksum(card)</a></code></pre>
Either way, my python port didn't do any cleaning up, because we can just use a DES library.</p> Either way, my python port didn't do any cleaning up, because we can just use a DES library.</p>
<details> <details>
<summary>Show me that!</summary> <summary>Show me that!</summary>
<pre><code>DES_KEYMAP = [ <pre>{% highlight "python" %}DES_KEYMAP = [
[0x02080008, 0x02082000, 0x00002008, 0x00000000, 0x02002000, 0x00080008, 0x02080000, 0x02082008, 0x00000008, 0x02000000, 0x00082000, 0x00002008, 0x00082008, 0x02002008, 0x02000008, 0x02080000, 0x00002000, 0x00082008, 0x00080008, 0x02002000, 0x02082008, 0x02000008, 0x00000000, 0x00082000, 0x02000000, 0x00080000, 0x02002008, 0x02080008, 0x00080000, 0x00002000, 0x02082000, 0x00000008, 0x00080000, 0x00002000, 0x02000008, 0x02082008, 0x00002008, 0x02000000, 0x00000000, 0x00082000, 0x02080008, 0x02002008, 0x02002000, 0x00080008, 0x02082000, 0x00000008, 0x00080008, 0x02002000, 0x02082008, 0x00080000, 0x02080000, 0x02000008, 0x00082000, 0x00002008, 0x02002008, 0x02080000, 0x00000008, 0x02082000, 0x00082008, 0x00000000, 0x02000000, 0x02080008, 0x00002000, 0x00082008], [0x02080008, 0x02082000, 0x00002008, 0x00000000, 0x02002000, 0x00080008, 0x02080000, 0x02082008, 0x00000008, 0x02000000, 0x00082000, 0x00002008, 0x00082008, 0x02002008, 0x02000008, 0x02080000, 0x00002000, 0x00082008, 0x00080008, 0x02002000, 0x02082008, 0x02000008, 0x00000000, 0x00082000, 0x02000000, 0x00080000, 0x02002008, 0x02080008, 0x00080000, 0x00002000, 0x02082000, 0x00000008, 0x00080000, 0x00002000, 0x02000008, 0x02082008, 0x00002008, 0x02000000, 0x00000000, 0x00082000, 0x02080008, 0x02002008, 0x02002000, 0x00080008, 0x02082000, 0x00000008, 0x00080008, 0x02002000, 0x02082008, 0x00080000, 0x02080000, 0x02000008, 0x00082000, 0x00002008, 0x02002008, 0x02080000, 0x00000008, 0x02082000, 0x00082008, 0x00000000, 0x02000000, 0x02080008, 0x00002000, 0x00082008],
[0x08000004, 0x00020004, 0x00000000, 0x08020200, 0x00020004, 0x00000200, 0x08000204, 0x00020000, 0x00000204, 0x08020204, 0x00020200, 0x08000000, 0x08000200, 0x08000004, 0x08020000, 0x00020204, 0x00020000, 0x08000204, 0x08020004, 0x00000000, 0x00000200, 0x00000004, 0x08020200, 0x08020004, 0x08020204, 0x08020000, 0x08000000, 0x00000204, 0x00000004, 0x00020200, 0x00020204, 0x08000200, 0x00000204, 0x08000000, 0x08000200, 0x00020204, 0x08020200, 0x00020004, 0x00000000, 0x08000200, 0x08000000, 0x00000200, 0x08020004, 0x00020000, 0x00020004, 0x08020204, 0x00020200, 0x00000004, 0x08020204, 0x00020200, 0x00020000, 0x08000204, 0x08000004, 0x08020000, 0x00020204, 0x00000000, 0x00000200, 0x08000004, 0x08000204, 0x08020200, 0x08020000, 0x00000204, 0x00000004, 0x08020004], [0x08000004, 0x00020004, 0x00000000, 0x08020200, 0x00020004, 0x00000200, 0x08000204, 0x00020000, 0x00000204, 0x08020204, 0x00020200, 0x08000000, 0x08000200, 0x08000004, 0x08020000, 0x00020204, 0x00020000, 0x08000204, 0x08020004, 0x00000000, 0x00000200, 0x00000004, 0x08020200, 0x08020004, 0x08020204, 0x08020000, 0x08000000, 0x00000204, 0x00000004, 0x00020200, 0x00020204, 0x08000200, 0x00000204, 0x08000000, 0x08000200, 0x00020204, 0x08020200, 0x00020004, 0x00000000, 0x08000200, 0x08000000, 0x00000200, 0x08020004, 0x00020000, 0x00020004, 0x08020204, 0x00020200, 0x00000004, 0x08020204, 0x00020200, 0x00020000, 0x08000204, 0x08000004, 0x08020000, 0x00020204, 0x00000000, 0x00000200, 0x08000004, 0x08000204, 0x08020200, 0x08020000, 0x00000204, 0x00000004, 0x08020004],
[0x80040100, 0x01000100, 0x80000000, 0x81040100, 0x00000000, 0x01040000, 0x81000100, 0x80040000, 0x01040100, 0x81000000, 0x01000000, 0x80000100, 0x81000000, 0x80040100, 0x00040000, 0x01000000, 0x81040000, 0x00040100, 0x00000100, 0x80000000, 0x00040100, 0x81000100, 0x01040000, 0x00000100, 0x80000100, 0x00000000, 0x80040000, 0x01040100, 0x01000100, 0x81040000, 0x81040100, 0x00040000, 0x81040000, 0x80000100, 0x00040000, 0x81000000, 0x00040100, 0x01000100, 0x80000000, 0x01040000, 0x81000100, 0x00000000, 0x00000100, 0x80040000, 0x00000000, 0x81040000, 0x01040100, 0x00000100, 0x01000000, 0x81040100, 0x80040100, 0x00040000, 0x81040100, 0x80000000, 0x01000100, 0x80040100, 0x80040000, 0x00040100, 0x01040000, 0x81000100, 0x80000100, 0x01000000, 0x81000000, 0x01040100], [0x80040100, 0x01000100, 0x80000000, 0x81040100, 0x00000000, 0x01040000, 0x81000100, 0x80040000, 0x01040100, 0x81000000, 0x01000000, 0x80000100, 0x81000000, 0x80040100, 0x00040000, 0x01000000, 0x81040000, 0x00040100, 0x00000100, 0x80000000, 0x00040100, 0x81000100, 0x01040000, 0x00000100, 0x80000100, 0x00000000, 0x80040000, 0x01040100, 0x01000100, 0x81040000, 0x81040100, 0x00040000, 0x81040000, 0x80000100, 0x00040000, 0x81000000, 0x00040100, 0x01000100, 0x80000000, 0x01040000, 0x81000100, 0x00000000, 0x00000100, 0x80040000, 0x00000000, 0x81040000, 0x01040100, 0x00000100, 0x01000000, 0x81040100, 0x80040100, 0x00040000, 0x81040100, 0x80000000, 0x01000100, 0x80040100, 0x80040000, 0x00040100, 0x01040000, 0x81000100, 0x80000100, 0x01000000, 0x81000000, 0x01040100],
@ -461,7 +462,7 @@ def load_key(key):
key_data = bytearray(24) key_data = bytearray(24)
for i in range(24): for i in range(24):
key_data[i] = 2 * key[i % len(key)] key_data[i] = 2 * key[i % len(key)]
des3_setkey(KEY_DATA, key_data)</code></pre> des3_setkey(KEY_DATA, key_data){% endhighlight %}</pre>
</details> </details>
</details> </details>
{% endblock %} {% endblock %}

View File

@ -78,7 +78,4 @@
</p> </p>
<a href="./transport.html">Next page</a> <a href="./transport.html">Next page</a>
<p><small>This site intentionally looks not-great. I don't feel like changing that, and honestly quite like the
aesthetic.</small></p>
{% endblock %} {% endblock %}

View File

@ -2,8 +2,8 @@
{% block body %} {% block body %}
<h1>Packet format</h1> <h1>Packet format</h1>
<p>eAmuse uses XML for its application layer payloads*. This XML is either verbatim, or in a custom packed binary <p>e-Amusement uses XML for its application layer payloads. This XML is either verbatim, or in a custom packed binary
format.<br /><small>*Newer games use JSON, but this page is about XML.</small></p> format.</p>
<h2 id="xml">The XML format</h2> <h2 id="xml">The XML format</h2>
@ -12,28 +12,32 @@
have a <code>__count</code> attribute indicating how many items are in the array. Binary blobs additionally have have a <code>__count</code> attribute indicating how many items are in the array. Binary blobs additionally have
a <code>__size</code> attribute indicating their length (this is notably not present on strings, however).</p> a <code>__size</code> attribute indicating their length (this is notably not present on strings, however).</p>
<p>It is perhaps simpler to illustrate with an example, so:</p> <p>It is perhaps simpler to illustrate with an example, so:</p>
<pre><code>&lt;?xml version='1.0' encoding='UTF-8'?&gt; <pre>{% highlight 'xml' %}
&lt;call model="KFC:J:A:A:2019020600" srcid="1000" tag="b0312077"&gt; <?xml version='1.0' encoding='UTF-8'?>
&lt;eventlog method="write"&gt; <call model="KFC:J:A:A:2019020600" srcid="1000" tag="b0312077">
&lt;retrycnt __type="u32" /&gt; <eventlog method="write">
&lt;data&gt; <retrycnt __type="u32" />
&lt;eventid __type="str"&gt;G_CARDED&lt;/eventid&gt; <data>
&lt;eventorder __type="s32"&gt;5&lt;/eventorder&gt; <eventid __type="str">G_CARDED</eventid>
&lt;pcbtime __type="u64"&gt;1639669516779&lt;/pcbtime&gt; <eventorder __type="s32">5</eventorder>
&lt;gamesession __type="s64"&gt;1&lt;/gamesession&gt; <pcbtime __type="u64">1639669516779</pcbtime>
&lt;strdata1 __type="str" /&gt; <gamesession __type="s64">1</gamesession>
&lt;strdata2 __type="str" /&gt; <strdata1 __type="str" />
&lt;numdata1 __type="s64"&gt;1&lt;/numdata1&gt; <strdata2 __type="str" />
&lt;numdata2 __type="s64" /&gt; <numdata1 __type="s64">1</numdata1>
&lt;locationid __type="str"&gt;ea&lt;/locationid&gt; <numdata2 __type="s64" />
&lt;/data&gt; <locationid __type="str">ea</locationid>
&lt;/eventlog&gt; </data>
&lt;/call&gt;</code></pre> </eventlog>
</call>
{% endhighlight %}</pre>
<p>Arrays are encoded by concatenating every value together, with spaces between them. Data types that have multiple <p>Arrays are encoded by concatenating every value together, with spaces between them. Data types that have multiple
values, are serialized similarly.</p> values, are serialized similarly.</p>
<p>Therefore, an element storing an array of <code>3u8</code> (<code>[(1, 2, 3), (4, 5, 6)]</code>) would look like <p>Therefore, an element storing an array of <code>3u8</code> (<code>[(1, 2, 3), (4, 5, 6)]</code>) would look like
this</p> this</p>
<pre><code>&lt;demo __type="3u8" __count="2"&gt;1 2 3 4 5 6&lt;/demo&gt;</code></pre> <pre>{% highlight 'xml' %}
<demo __type="3u8" __count="2">1 2 3 4 5 6</demo>
{% endhighlight %}</pre>
<p>Besides this, this is otherwise a rather standard XML.</p> <p>Besides this, this is otherwise a rather standard XML.</p>
<h2 id="binary">Packed binary overview</h2> <h2 id="binary">Packed binary overview</h2>
@ -182,9 +186,9 @@
</figure> </figure>
<p>This is indexed using the following function, which maps the above encoding IDs to 1, 2, 3, 4 and 5 <p>This is indexed using the following function, which maps the above encoding IDs to 1, 2, 3, 4 and 5
respectively.</p> respectively.</p>
<pre><code>char* xml_get_encoding_name(uint encoding_id) { <pre>{% highlight "c" %}char* xml_get_encoding_name(uint encoding_id) {
return ENCODING_NAME_TABLE[((encoding_id & 0xe0) >> 5) * 4]; return ENCODING_NAME_TABLE[((encoding_id & 0xe0) >> 5) * 4];
}</code></pre> }{% endhighlight %}</pre>
</details> </details>
<p>While validating <code>~E</code> isn't technically required, it acts as a useful assertion that the packet being <p>While validating <code>~E</code> isn't technically required, it acts as a useful assertion that the packet being
parsed is valid.</p> parsed is valid.</p>
@ -839,7 +843,7 @@
<p>While the intuitive way to understand the packing algorithm is via chunks and buckets, a far more efficient <p>While the intuitive way to understand the packing algorithm is via chunks and buckets, a far more efficient
implementation can be made that uses three pointers. Rather than try to explain in words, hopefully this python implementation can be made that uses three pointers. Rather than try to explain in words, hopefully this python
implementation should suffice as explanation: implementation should suffice as explanation:
<pre><code>class Packer: <pre>{% highlight "python" %}class Packer:
def __init__(self, offset=0): def __init__(self, offset=0):
self._word_cursor = offset self._word_cursor = offset
self._short_cursor = offset self._short_cursor = offset
@ -873,7 +877,7 @@
def notify_skipped(self, no_bytes): def notify_skipped(self, no_bytes):
for _ in range(math.ceil(no_bytes / 4)): for _ in range(math.ceil(no_bytes / 4)):
self.request_allocation(4)</code></pre> self.request_allocation(4){% endhighlight %}</pre>
</p> </p>
</details> </details>

View File

@ -3,11 +3,11 @@
<h1><code>apsmanager</code></h1> <h1><code>apsmanager</code></h1>
<h2 id="getstat"><code>apsmanager.getstat</code></h2> <h2 id="getstat"><code>apsmanager.getstat</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;apsmanager method="getstat" model*="" /&gt; <apsmanager method="getstat" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;apsmanager status="<i>status</i>" /&gt; <apsmanager status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -46,9 +46,9 @@
<p>Request information about a card that has been inserted or touched against a reader.</p> <p>Request information about a card that has been inserted or touched against a reader.</p>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;cardmng method="inquire" cardid="" cardtype="" update="" model*="" /&gt; <cardmng method="inquire" cardid="" cardtype="" update="" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<table> <table>
<tr> <tr>
<td><code>update</code></td> <td><code>update</code></td>
@ -56,9 +56,9 @@
</tr> </tr>
</table> </table>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;cardmng status="<i>status</i>" refid="" dataid="" pcode="" newflag="" binded="" expired=" ecflag="" useridflag="" extidflag="" lastupdate="" /&gt; <cardmng status="??status" refid="" dataid="" pcode="" newflag="" binded="" expired="" ecflag="" useridflag="" extidflag="" lastupdate="" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<p>To handle this request, we first must lookup if this <code>cardid</code> has ever been seen by our servers <p>To handle this request, we first must lookup if this <code>cardid</code> has ever been seen by our servers
before. If not, we abort with a <code>112</code> status. Otherwise, we proceeed to check if this card has been before. If not, we abort with a <code>112</code> status. Otherwise, we proceeed to check if this card has been
seen for this specific game. If we have never seen this card used on this game, it is possible this card was seen for this specific game. If we have never seen this card used on this game, it is possible this card was
@ -92,9 +92,9 @@
<h2 id="getrefid"><code>cardmng.getrefid</code></h2> <h2 id="getrefid"><code>cardmng.getrefid</code></h2>
<p>Register a new card to this server.</p> <p>Register a new card to this server.</p>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;cardmng method="getrefid" cardtype="" cardid=" newflag="" passwd="" model*="" /&gt; <cardmng method="getrefid" cardtype="" cardid=" newflag="" passwd="" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<table> <table>
<tr> <tr>
<td><code>newflag</code></td> <td><code>newflag</code></td>
@ -107,9 +107,9 @@
</tr> </tr>
</table> </table>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;cardmng status="<i>status</i>" refid="" dataid="" pcode="" /&gt; <cardmng status="??status" refid="" dataid="" pcode="" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<table> <table>
<tr> <tr>
<td><code>refid</code></td> <td><code>refid</code></td>
@ -128,32 +128,32 @@
<h2 id="bindmodel"><code>cardmng.bindmodel</code></h2> <h2 id="bindmodel"><code>cardmng.bindmodel</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;cardmng method="bindmodel" refid="" newflag="" model*="" /&gt; <cardmng method="bindmodel" refid="" newflag="" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;cardmng status="<i>status</i>" dataid="" /&gt; <cardmng status="??status" dataid="" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="bindcard"><code>cardmng.bindcard</code></h2> <h2 id="bindcard"><code>cardmng.bindcard</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;cardmng method="bindcard" cardtype="" newid="" refid="" model*="" /&gt; <cardmng method="bindcard" cardtype="" newid="" refid="" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;cardmng status="<i>status</i>" /&gt; <cardmng status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="authpass"><code>cardmng.authpass</code></h2> <h2 id="authpass"><code>cardmng.authpass</code></h2>
<p>Test a pin for a card. This request notably uses the <code>refid</code>, so required a <p>Test a pin for a card. This request notably uses the <code>refid</code>, so required a
<code>cardmng.inquire</code> call to be made first. <code>cardmng.inquire</code> call to be made first.
</p> </p>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;cardmng method="authpass" refid="" pass="" model*="" /&gt; <cardmng method="authpass" refid="" pass="" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<table> <table>
<tr> <tr>
<td><code>refid</code></td> <td><code>refid</code></td>
@ -166,47 +166,47 @@
</tr> </tr>
</table> </table>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;cardmng status="<i>status</i>" /&gt; <cardmng status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<p>If the pin is valid, status should be <code>0</code>. Otherwise, <code>116</code>.</p> <p>If the pin is valid, status should be <code>0</code>. Otherwise, <code>116</code>.</p>
<h2 id="getkeepspan"><code>cardmng.getkeepspan</code></h2> <h2 id="getkeepspan"><code>cardmng.getkeepspan</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;cardmng method="getkeepspan" model*="" /&gt; <cardmng method="getkeepspan" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;cardmng status="<i>status</i>" keepspan="" /&gt; <cardmng status="??status" keepspan="" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="getkeepremain"><code>cardmng.getkeepremain</code></h2> <h2 id="getkeepremain"><code>cardmng.getkeepremain</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;cardmng method="getkeepremain" refid="" model*="" /&gt; <cardmng method="getkeepremain" refid="" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;cardmng status="<i>status</i>" keepremain="" /&gt; <cardmng status="??status" keepremain="" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="getdatalist"><code>cardmng.getdatalist</code></h2> <h2 id="getdatalist"><code>cardmng.getdatalist</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;cardmng method="getdatalist" refid="" model*="" /&gt; <cardmng method="getdatalist" refid="" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;cardmng status="<i>status</i>"&gt; <cardmng status="??status">
&lt;item[]&gt; <item[]>
&lt;mcode __type="str" /&gt; <mcode __type="str" />
&lt;dataid __type="str" /&gt; <dataid __type="str" />
&lt;regtime __type="str" /&gt; <regtime __type="str" />
&lt;lasttime __type="str" /&gt; <lasttime __type="str" />
&lt;exptime __type="str" /&gt; <exptime __type="str" />
&lt;expflag __type="u8" /&gt; <expflag __type="u8" />
&lt;/item[]&gt; </item[]>
&lt;/cardmng&gt; </cardmng>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,32 +3,32 @@
<h1><code>dlstatus</code></h1> <h1><code>dlstatus</code></h1>
<h2 id="done"><code>dlstatus.done</code></h2> <h2 id="done"><code>dlstatus.done</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;dlstatus method="done"&gt; <dlstatus method="done">
&lt;url&gt; <url>
&lt;param __type="str" /&gt; <param __type="str" />
&lt;/url&gt; </url>
&lt;name __type="str" /&gt; <name __type="str" />
&lt;size __type="s32" /&gt; <size __type="s32" />
&lt;/dlstatus&gt; </dlstatus>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;dlstatus status="<i>status</i>"&gt; <dlstatus status="??status">
&lt;progress __type="s32" /&gt; <progress __type="s32" />
&lt;/dlstatus&gt; </dlstatus>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="progress"><code>dlstatus.progress</code></h2> <h2 id="progress"><code>dlstatus.progress</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;dlstatus method="progress" /&gt; <dlstatus method="progress" />
&lt;progress __type="s32" /&gt; <progress __type="s32" />
&lt;/dlstatus&gt; </dlstatus>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;dlstatus status="<i>status</i>" /&gt; <dlstatus status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,178 +3,178 @@
<h1><code>eacoin</code></h1> <h1><code>eacoin</code></h1>
<h2 id="checkin"><code>eacoin.checkin</code></h2> <h2 id="checkin"><code>eacoin.checkin</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eacoin method="checkin"&gt; <eacoin method="checkin">
&lt;cardtype __type="str" /&gt; <cardtype __type="str" />
&lt;cardid __type="str" /&gt; <cardid __type="str" />
&lt;passwd __type="str" /&gt; <passwd __type="str" />
&lt;ectype __type="str" /&gt; <ectype __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eacoin status="<i>status</i>"&gt; <eacoin status="??status">
&lt;sequence __type="s16" /&gt; <sequence __type="s16" />
&lt;acstatus __type="u8" /&gt; <acstatus __type="u8" />
&lt;acid __type="str" /&gt; <acid __type="str" />
&lt;acname __type="str" /&gt; <acname __type="str" />
&lt;balance __type="s32" /&gt; <balance __type="s32" />
&lt;sessid __type="str" /&gt; <sessid __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="checkout"><code>eacoin.checkout</code></h2> <h2 id="checkout"><code>eacoin.checkout</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eacoin method="checkout"&gt; <eacoin method="checkout">
&lt;sessid __type="str" /&gt; <sessid __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eacoin status="<i>status</i>" /&gt; <eacoin status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="consume"><code>eacoin.consume</code></h2> <h2 id="consume"><code>eacoin.consume</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eacoin method="consume" esid=""&gt; <eacoin method="consume" esid="">
&lt;sessid __type="str" /&gt; <sessid __type="str" />
&lt;sequence __type="s16" /&gt; <sequence __type="s16" />
&lt;payment __type="s32" /&gt; <payment __type="s32" />
&lt;service __type="s16" /&gt; <service __type="s16" />
&lt;itemtype __type="str" /&gt; <itemtype __type="str" />
&lt;detail __type="str" /&gt; <detail __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eacoin status="<i>status</i>"&gt; <eacoin status="??status">
&lt;acstatus __type="u8" /&gt; <acstatus __type="u8" />
&lt;autocharge __type="u8" /&gt; <autocharge __type="u8" />
&lt;balance __type="s32" /&gt; <balance __type="s32" />
&lt;/eacoin&gt; </eacoin>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="getbalance"><code>eacoin.getbalance</code></h2> <h2 id="getbalance"><code>eacoin.getbalance</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eacoin method="getbalance"&gt; <eacoin method="getbalance">
&lt;sessid __type="str" /&gt; <sessid __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eacoin status="<i>status</i>"&gt; <eacoin status="??status">
&lt;acstatus __type="u8" /&gt; <acstatus __type="u8" />
&lt;balance __type="s32" /&gt; <balance __type="s32" />
&lt;/eacoin&gt; </eacoin>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="getecstatus"><code>eacoin.getecstatus</code></h2> <h2 id="getecstatus"><code>eacoin.getecstatus</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eacoin method="getecstatus" /&gt; <eacoin method="getecstatus" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eacoin status="<i>status</i>"&gt; <eacoin status="??status">
&lt;ectype __type="str" /&gt; <ectype __type="str" />
&lt;ecstatus __type="u8" /&gt; <ecstatus __type="u8" />
&lt;/eacoin&gt; </eacoin>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="touch"><code>eacoin.touch</code></h2> <h2 id="touch"><code>eacoin.touch</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eacoin method="touch"&gt; <eacoin method="touch">
&lt;sessid __type="str" /&gt; <sessid __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eacoin status="<i>status</i>" /&gt; <eacoin status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="opchpass"><code>eacoin.opchpass</code></h2> <h2 id="opchpass"><code>eacoin.opchpass</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eacoin method="opchpass"&gt; <eacoin method="opchpass">
&lt;passwd __type="str" /&gt; <passwd __type="str" />
&lt;newpasswd __type="str" /&gt; <newpasswd __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eacoin status="<i>status</i>" /&gt; <eacoin status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="opcheckin"><code>eacoin.opcheckin</code></h2> <h2 id="opcheckin"><code>eacoin.opcheckin</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eacoin method="opcheckin"&gt; <eacoin method="opcheckin">
&lt;passwd __type="str" /&gt; <passwd __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eacoin status="<i>status</i>"&gt; <eacoin status="??status">
&lt;sessid __type="str" /&gt; <sessid __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="opcheckout"><code>eacoin.opcheckout</code></h2> <h2 id="opcheckout"><code>eacoin.opcheckout</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eacoin method="opcheckout"&gt; <eacoin method="opcheckout">
&lt;sessid __type="str" /&gt; <sessid __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eacoin status="<i>status</i>" /&gt; <eacoin status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="getlog"><code>eacoin.getlog</code></h2> <h2 id="getlog"><code>eacoin.getlog</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eacoin method="getlog"&gt; <eacoin method="getlog">
&lt;sessid __type="str" /&gt; <sessid __type="str" />
&lt;logtype __type="str" /&gt; <logtype __type="str" />
&lt;ectype __type="str" /&gt; <ectype __type="str" />
&lt;target __type="str" /&gt; <target __type="str" />
&lt;perpage __type="s16" /&gt; <perpage __type="s16" />
&lt;page __type="s16" /&gt; <page __type="s16" />
&lt;sesstype __type="str" /&gt; <sesstype __type="str" />
&lt;/eacoin&gt; </eacoin>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eacoin status="<i>status</i>"&gt; <eacoin status="??status">
&lt;processing __type="u8" /&gt; <processing __type="u8" />
&lt;topic&gt; <topic>
&lt;sumdate __type="str" /&gt; <sumdate __type="str" />
&lt;sumfrom __type="str" /&gt; <sumfrom __type="str" />
&lt;sumto __type="str" /&gt; <sumto __type="str" />
&lt;today __type="s32" /&gt; <today __type="s32" />
&lt;average __type="s32" /&gt; <average __type="s32" />
&lt;total __type="s32" /&gt; <total __type="s32" />
&lt;/topic&gt; </topic>
&lt;summary&gt; <summary>
&lt;items __type="s32" /&gt; <items __type="s32" />
&lt;/summary&gt; </summary>
&lt;history&gt; <history>
&lt;item[]&gt; <item[]>
&lt;date __type="str" /&gt; <date __type="str" />
&lt;consume __type="s32" /&gt; <consume __type="s32" />
&lt;service __type="s32" /&gt; <service __type="s32" />
&lt;cardtype __type="str" /&gt; <cardtype __type="str" />
&lt;cardno __type="str" /&gt; <cardno __type="str" />
&lt;title __type="str" /&gt; <title __type="str" />
&lt;systemid __type="str" /&gt; <systemid __type="str" />
&lt;/item[]&gt; </item[]>
&lt;/history&gt; </history>
&lt;/eacoin&gt; </eacoin>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,15 +3,15 @@
<h1><code>esign</code></h1> <h1><code>esign</code></h1>
<h2 id="request"><code>esign.request</code></h2> <h2 id="request"><code>esign.request</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;esign method="request"&gt; <esign method="request">
<i>placeholder</i> <i>placeholder</i>
&lt;/esign&gt; </esign>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;esign status="<i>status</i>"&gt; <esign status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/esign&gt; </esign>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,28 +3,28 @@
<h1><code>esoc</code></h1> <h1><code>esoc</code></h1>
<h2 id="read"><code>esoc.read</code></h2> <h2 id="read"><code>esoc.read</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;esoc method="read"&gt; <esoc method="read">
&lt;senddata /&gt; <senddata />
&lt;/esoc&gt; </esoc>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;esoc status="<i>status</i>"&gt; <esoc status="??status">
&lt;recvdata /&gt; <recvdata />
&lt;/esoc&gt; </esoc>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<p>Go figure.</p> <p>Go figure.</p>
<h2 id="write"><code>esoc.write</code></h2> <h2 id="write"><code>esoc.write</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;esoc method="write"&gt; <esoc method="write">
&lt;senddata /&gt; <senddata />
&lt;/esoc&gt; </esoc>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;esoc status="<i>status</i>" /&gt; <esoc status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,22 +3,22 @@
<h1><code>eventlog</code></h1> <h1><code>eventlog</code></h1>
<h2 id="write"><code>eventlog.write</code></h2> <h2 id="write"><code>eventlog.write</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;eventlog method="write"&gt; <eventlog method="write">
&lt;retrycnt __type="u32" /&gt; <retrycnt __type="u32" />
&lt;data&gt; <data>
&lt;eventid __type="str" /&gt; <eventid __type="str" />
&lt;eventorder __type="s32" /&gt; <eventorder __type="s32" />
&lt;pcbtime __type="u64" /&gt; <pcbtime __type="u64" />
&lt;gamesession __type="s64" /&gt; <gamesession __type="s64" />
&lt;strdata1 __type="str" /&gt; <strdata1 __type="str" />
&lt;strdata2 __type="str" /&gt; <strdata2 __type="str" />
&lt;numdata1 __type="s64" /&gt; <numdata1 __type="s64" />
&lt;numdata2 __type="s64" /&gt; <numdata2 __type="s64" />
&lt;locationid __type="str" /&gt; <locationid __type="str" />
&lt;/data&gt; </data>
&lt;/eventlog&gt; </eventlog>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<p>Event ID list:</p> <p>Event ID list:</p>
<ul> <ul>
<li><code>G_GAMED</code></li> <li><code>G_GAMED</code></li>
@ -27,12 +27,12 @@
<li><code>T_OTDEMO</code></li> <li><code>T_OTDEMO</code></li>
</ul> </ul>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;eventlog status="<i>status</i>"&gt; <eventlog status="??status">
&lt;gamesession __type="s64" /&gt; <gamesession __type="s64" />
&lt;logsendflg __type="s32" /&gt; <logsendflg __type="s32" />
&lt;logerrlevel __type="s32" /&gt; <logerrlevel __type="s32" />
&lt;evtidnosendflg __type="s32" /&gt; <evtidnosendflg __type="s32" />
&lt;/eventlog&gt; </eventlog>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,66 +3,66 @@
<h1><code>facility</code></h1> <h1><code>facility</code></h1>
<h2 id="get"><code>facility.get</code></h2> <h2 id="get"><code>facility.get</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;facility method="get" privateip*="" encoding*="" /&gt; <facility method="get" privateip*="" encoding*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;facility expire=""\ status="<i>status</i>"&gt; <facility expire="" status="??status">
&lt;calendar*&gt; <calendar*>
&lt;year __type="s16" /&gt; <year __type="s16" />
&lt;holiday __type="s16" /&gt; <holiday __type="s16" />
&lt;/calendar&gt; </calendar>
&lt;location&gt; <location>
&lt;id __type="str" /&gt; <id __type="str" />
&lt;country __type="str" /&gt; <country __type="str" />
&lt;region __type="str" /&gt; <region __type="str" />
&lt;name __type="str" /&gt; <name __type="str" />
&lt;type __type="u8" /&gt; <type __type="u8" />
&lt;countryname __type="str" /&gt; <countryname __type="str" />
&lt;countryjname __type="str" /&gt; <countryjname __type="str" />
&lt;regionname __type="str" /&gt; <regionname __type="str" />
&lt;regionjname __type="str" /&gt; <regionjname __type="str" />
&lt;customercode __type="str" /&gt; <customercode __type="str" />
&lt;companycode __type="str" /&gt; <companycode __type="str" />
&lt;latitude __type="s32" /&gt; <latitude __type="s32" />
&lt;longitude __type="s32" /&gt; <longitude __type="s32" />
&lt;accuracy __type="u8" /&gt; <accuracy __type="u8" />
&lt;/location&gt; </location>
&lt;line&gt; <line>
&lt;id __type="str" /&gt; <id __type="str" />
&lt;class __type="u8" /&gt; <class __type="u8" />
&lt;/line&gt; </line>
&lt;portfw&gt; <portfw>
&lt;globalip __type="ip4" /&gt; <globalip __type="ip4" />
&lt;globalport __type="s16" /&gt; <globalport __type="s16" />
&lt;privateport __type="s16" /&gt; <privateport __type="s16" />
&lt;/portfw&gt; </portfw>
&lt;public&gt; <public>
&lt;flag __type="u8" /&gt;1&lt;/ flag&gt; <flag __type="u8" />1</ flag>
&lt;name __type="str" /&gt; <name __type="str" />
&lt;latitude __type="str"&gt;0&lt;latitude&gt; <latitude __type="str">0<latitude>
&lt;longitude __type="str"&gt;0&lt;longitude&gt; <longitude __type="str">0<longitude>
&lt;/public&gt; </public>
&lt;share&gt; <share>
&lt;eapass*&gt; <eapass*>
&lt;valid __type="?" /&gt; <valid __type="?" />
&lt;/eapass&gt; </eapass>
&lt;eacoin&gt; <eacoin>
&lt;notchamount __type="s32" /&gt; <notchamount __type="s32" />
&lt;notchcount __type="s32" /&gt; <notchcount __type="s32" />
&lt;supplylimit __type="s32"&gt;100000&lt;supplylimit&gt; <supplylimit __type="s32">100000<supplylimit>
&lt;/eacoin&gt; </eacoin>
&lt;url&gt; <url>
&lt;eapass __type="str"&gt;www.ea-pass.konami.net&lt;eapass&gt; <eapass __type="str">www.ea-pass.konami.net<eapass>
&lt;arcadefan __type="str"&gt;www.konami.jp/am&lt;arcadefan&gt; <arcadefan __type="str">www.konami.jp/am<arcadefan>
&lt;konaminetdx __type="str"&gt;http://am.573.jp&lt;konaminetdx&gt; <konaminetdx __type="str">http://am.573.jp<konaminetdx>
&lt;konamiid __type="str"&gt;http://id.konami.jp&lt;konamiid&gt; <konamiid __type="str">http://id.konami.jp<konamiid>
&lt;eagate __type="str"&gt;http://eagate.573.jp&lt;eagate&gt; <eagate __type="str">http://eagate.573.jp<eagate>
&lt;/url&gt; </url>
&lt;/share&gt; </share>
&lt;/facility&gt; </facility>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<p><i>I'm not totally sure what type <code>share/eapass/valid</code> is meant to be, but it's optional, so I'd <p><i>I'm not totally sure what type <code>share/eapass/valid</code> is meant to be, but it's optional, so I'd
suggest just not bothering and leaving it out :).</i></p> suggest just not bothering and leaving it out :).</i></p>
<table> <table>

View File

@ -3,365 +3,365 @@
<h1 id="game"><code>game</code></h1> <h1 id="game"><code>game</code></h1>
<h2 id="sample"><code>game.sv4_sample</code></h2> <h2 id="sample"><code>game.sv4_sample</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_sample"&gt; <game method="sv4_sample">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="new"><code>game.sv4_new</code></h2> <h2 id="new"><code>game.sv4_new</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_new"&gt; <game method="sv4_new">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="load"><code>game.sv4_load</code></h2> <h2 id="load"><code>game.sv4_load</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_load"&gt; <game method="sv4_load">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="load_m"><code>game.sv4_load_m</code></h2> <h2 id="load_m"><code>game.sv4_load_m</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_load_m"&gt; <game method="sv4_load_m">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="save"><code>game.sv4_save</code></h2> <h2 id="save"><code>game.sv4_save</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_save"&gt; <game method="sv4_save">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="save_m"><code>game.sv4_save_m</code></h2> <h2 id="save_m"><code>game.sv4_save_m</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_save_m"&gt; <game method="sv4_save_m">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="common"><code>game.sv4_common</code></h2> <h2 id="common"><code>game.sv4_common</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_common"&gt; <game method="sv4_common">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="shop"><code>game.sv4_shop</code></h2> <h2 id="shop"><code>game.sv4_shop</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_shop"&gt; <game method="sv4_shop">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="hiscore"><code>game.sv4_hiscore</code></h2> <h2 id="hiscore"><code>game.sv4_hiscore</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_hiscore"&gt; <game method="sv4_hiscore">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="buy"><code>game.sv4_buy</code></h2> <h2 id="buy"><code>game.sv4_buy</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_buy"&gt; <game method="sv4_buy">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="exception"><code>game.sv4_exception</code></h2> <h2 id="exception"><code>game.sv4_exception</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_exception"&gt; <game method="sv4_exception">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="entry_s"><code>game.sv4_entry_s</code></h2> <h2 id="entry_s"><code>game.sv4_entry_s</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_entry_s"&gt; <game method="sv4_entry_s">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="entry_e"><code>game.sv4_entry_e</code></h2> <h2 id="entry_e"><code>game.sv4_entry_e</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_entry_e"&gt; <game method="sv4_entry_e">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="frozen"><code>game.sv4_frozen</code></h2> <h2 id="frozen"><code>game.sv4_frozen</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_frozen"&gt; <game method="sv4_frozen">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="lounge"><code>game.sv4_lounge</code></h2> <h2 id="lounge"><code>game.sv4_lounge</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_lounge"&gt; <game method="sv4_lounge">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="save_e"><code>game.sv4_save_e</code></h2> <h2 id="save_e"><code>game.sv4_save_e</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_save_e"&gt; <game method="sv4_save_e">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="save_pb"><code>game.sv4_save_pb</code></h2> <h2 id="save_pb"><code>game.sv4_save_pb</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_save_pb"&gt; <game method="sv4_save_pb">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="save_c"><code>game.sv4_save_c</code></h2> <h2 id="save_c"><code>game.sv4_save_c</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_save_c"&gt; <game method="sv4_save_c">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="play_s"><code>game.sv4_play_s</code></h2> <h2 id="play_s"><code>game.sv4_play_s</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_play_s"&gt; <game method="sv4_play_s">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="play_e"><code>game.sv4_play_e</code></h2> <h2 id="play_e"><code>game.sv4_play_e</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_play_e"&gt; <game method="sv4_play_e">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="serial"><code>game.sv4_serial</code></h2> <h2 id="serial"><code>game.sv4_serial</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_serial"&gt; <game method="sv4_serial">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="save_fi"><code>game.sv4_save_fi</code></h2> <h2 id="save_fi"><code>game.sv4_save_fi</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_save_fi"&gt; <game method="sv4_save_fi">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="print"><code>game.sv4_print</code></h2> <h2 id="print"><code>game.sv4_print</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_print"&gt; <game method="sv4_print">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="print_h"><code>game.sv4_print_h</code></h2> <h2 id="print_h"><code>game.sv4_print_h</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_print_h"&gt; <game method="sv4_print_h">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="load_r"><code>game.sv4_load_r</code></h2> <h2 id="load_r"><code>game.sv4_load_r</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_load_r"&gt; <game method="sv4_load_r">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="save_campaign"><code>game.sv4_save_campaign</code></h2> <h2 id="save_campaign"><code>game.sv4_save_campaign</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;game method="sv4_save_campaign"&gt; <game method="sv4_save_campaign">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;game status="<i>status</i>"&gt; <game status="??status">
<i>placeholder</i> <i>placeholder</i>
&lt;/game&gt; </game>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,81 +3,81 @@
<h1><code>matching</code></h1> <h1><code>matching</code></h1>
<h2 id="request"><code>matching.request</code></h2> <h2 id="request"><code>matching.request</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;matching method="request"&gt; <matching method="request">
&lt;info&gt; <info>
&lt;version __type="s32" /&gt; <version __type="s32" />
&lt;/info&gt; </info>
&lt;data&gt; <data>
&lt;matchtyp __type="s32" /&gt; <matchtyp __type="s32" />
&lt;matchgrp __type="s32" /&gt; <matchgrp __type="s32" />
&lt;matchflg __type="s32" /&gt; <matchflg __type="s32" />
&lt;waituser __type="s32" /&gt; <waituser __type="s32" />
&lt;waittime __type="s32" /&gt; <waittime __type="s32" />
&lt;joinip __type="str" /&gt; <joinip __type="str" />
&lt;localip __type="str" /&gt; <localip __type="str" />
&lt;localport __type="s32" /&gt; <localport __type="s32" />
&lt;dataid __type="str" /&gt; <dataid __type="str" />
&lt;gamekind __type="str" /&gt; <gamekind __type="str" />
&lt;locationid __type="str" /&gt; <locationid __type="str" />
&lt;lineid __type="str" /&gt; <lineid __type="str" />
&lt;locationcountry __type="str" /&gt; <locationcountry __type="str" />
&lt;locationregion __type="str" /&gt; <locationregion __type="str" />
&lt;/data&gt; </data>
&lt;/matching&gt; </matching>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;matching status="<i>status</i>"&gt; <matching status="??status">
&lt;hostid __type="s64" /&gt; <hostid __type="s64" />
&lt;result __type="s32" /&gt; <result __type="s32" />
&lt;hostip_g __type="str" /&gt; <hostip_g __type="str" />
&lt;hostip_l __type="str" /&gt; <hostip_l __type="str" />
&lt;hostport_l __type="s32" /&gt; <hostport_l __type="s32" />
&lt;hostport_g __type="s32" /&gt; <hostport_g __type="s32" />
&lt;/matching&gt; </matching>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="wait"><code>matching.wait</code></h2> <h2 id="wait"><code>matching.wait</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;matching method="wait"&gt; <matching method="wait">
&lt;info&gt; <info>
&lt;version __type="s32" /&gt; <version __type="s32" />
&lt;/info&gt; </info>
&lt;data&gt; <data>
&lt;hostid __type="s64" /&gt; <hostid __type="s64" />
&lt;locationid __type="str" /&gt; <locationid __type="str" />
&lt;lineid __type="str" /&gt; <lineid __type="str" />
&lt;/data&gt; </data>
&lt;/matching&gt; </matching>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;matching status="<i>status</i>"&gt; <matching status="??status">
&lt;result __type="s32" /&gt; <result __type="s32" />
&lt;prwtime __type="s32" /&gt; <prwtime __type="s32" />
&lt;/matching&gt; </matching>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="finish"><code>matching.finish</code></h2> <h2 id="finish"><code>matching.finish</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;matching method="finish"&gt; <matching method="finish">
&lt;info&gt; <info>
&lt;version __type="s32" /&gt; <version __type="s32" />
&lt;/info&gt; </info>
&lt;data&gt; <data>
&lt;hostid __type="s64" /&gt; <hostid __type="s64" />
&lt;locationid __type="str" /&gt; <locationid __type="str" />
&lt;lineid __type="str" /&gt; <lineid __type="str" />
&lt;/data&gt; </data>
&lt;/matching&gt; </matching>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;matching status="<i>status</i>"&gt; <matching status="??status">
&lt;result __type="s32" /&gt; <result __type="s32" />
&lt;/matching&gt; </matching>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,13 +3,13 @@
<h1><code>message</code></h1> <h1><code>message</code></h1>
<h2 id="get"><code>message.get</code></h2> <h2 id="get"><code>message.get</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;message method="get" model*="" /&gt; <message method="get" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;message expire="" status="<i>status</i>"&gt; <message expire="" status="??status">
&lt;item[] name="" start="" end="" data="" /&gt; <item[] name="" start="" end="" data="" />
&lt;/message&gt; </message>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,25 +3,25 @@
<h1><code>package</code></h1> <h1><code>package</code></h1>
<h2 id="list"><code>package.list</code></h2> <h2 id="list"><code>package.list</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;package method="list" pkgtype="<i>pkgtype</i>" model*="" /&gt; <package method="list" pkgtype="??pkgtype" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<p><code>all</code> is the only currently observed value for <code>pkgtype</code></p> <p><code>all</code> is the only currently observed value for <code>pkgtype</code></p>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;package status="<i>status</i>"&gt; <package status="??status">
&lt;item[] url="" /&gt; <item[] url="" />
&lt;/package&gt; </package>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<p>A list of all packages available for download.</p> <p>A list of all packages available for download.</p>
<h2 id="intend"><code>package.intend</code></h2> <h2 id="intend"><code>package.intend</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;package method="intend" url="" model*="" /&gt; <package method="intend" url="" model*="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;package status="<i>status</i>" /&gt; <package status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,19 +3,19 @@
<h1><code>pcbevent</code></h1> <h1><code>pcbevent</code></h1>
<h2 id="put"><code>pcbevent.put</code></h2> <h2 id="put"><code>pcbevent.put</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;pcbevent method="put"&gt; <pcbevent method="put">
&lt;time __type="time" /&gt; <time __type="time" />
&lt;seq __type="u32" /&gt; <seq __type="u32" />
&lt;item[]&gt; <item[]>
&lt;name __type="str" /&gt; <name __type="str" />
&lt;value __type="s32" /&gt; <value __type="s32" />
&lt;time __type="time" /&gt; <time __type="time" />
&lt;/item[]&gt; </item[]>
&lt;/pcbevent&gt; </pcbevent>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;pcbevent status="<i>status</i>" /&gt; <pcbevent status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,17 +3,17 @@
<h1><code>pcbtracker</code></h1> <h1><code>pcbtracker</code></h1>
<h2 id="alive"><code>pcbtracker.alive</code></h2> <h2 id="alive"><code>pcbtracker.alive</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;pcbtracker method="alive" model*="" hardid="" softid="" accountid="" agree="" ecflag="" /&gt; <pcbtracker method="alive" model*="" hardid="" softid="" accountid="" agree="" ecflag="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<p><code>ecflag</code> here is determining if the arcade operator allows the use of paseli on this machine.</p> <p><code>ecflag</code> here is determining if the arcade operator allows the use of paseli on this machine.</p>
<p><code>agree@</code> and <code>ecflag@</code> appear to either be totally non present, or present with a value of <p><code>agree@</code> and <code>ecflag@</code> appear to either be totally non present, or present with a value of
<code>"1"</code>, but then again I may be reading the code wrong, so take that with a pinch of salt. <code>"1"</code>, but then again I may be reading the code wrong, so take that with a pinch of salt.
</p> </p>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;pcbtracker status="" time="" limit="" ecenable="" eclimit="" &gt; <pcbtracker status="" time="" limit="" ecenable="" eclimit="" >
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<p>As you might guess, <code>ecenable@</code> is therefore the flag to determine if paseli is enabled (i.e. the <p>As you might guess, <code>ecenable@</code> is therefore the flag to determine if paseli is enabled (i.e. the
arcade operator and the server both allow its use).</p> arcade operator and the server both allow its use).</p>
{% endblock %} {% endblock %}

View File

@ -3,134 +3,134 @@
<h1><code>playerdata</code></h1> <h1><code>playerdata</code></h1>
<h2 id="usergamedata_send"><code>playerdata.usergamedata_send</code></h2> <h2 id="usergamedata_send"><code>playerdata.usergamedata_send</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;playerdata method="usergamedata_send"&gt; <playerdata method="usergamedata_send">
&lt;retrycnt __type="u32" /&gt; <retrycnt __type="u32" />
&lt;info&gt; <info>
&lt;version __type="u32" /&gt; <version __type="u32" />
&lt;/info&gt; </info>
&lt;data&gt; <data>
&lt;refid __type="str" /&gt; <refid __type="str" />
&lt;dataid __type="str" /&gt; <dataid __type="str" />
&lt;gamekind __type="str" /&gt; <gamekind __type="str" />
&lt;datanum __type="u32" /&gt; <datanum __type="u32" />
&lt;record&gt; <record>
&lt;d[] __type="str" /&gt; <d[] __type="str" />
&lt;/record&gt; </record>
&lt;/data&gt; </data>
&lt;/playerdata&gt; </playerdata>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;playerdata status="<i>status</i>"&gt; <playerdata status="??status">
&lt;result __type="s32" /&gt; <result __type="s32" />
&lt;/playerdata&gt; </playerdata>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="usergamedata_recv"><code>playerdata.usergamedata_recv</code></h2> <h2 id="usergamedata_recv"><code>playerdata.usergamedata_recv</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;playerdata method="usergamedata_recv"&gt; <playerdata method="usergamedata_recv">
&lt;info&gt; <info>
&lt;version __type="u32" /&gt; <version __type="u32" />
&lt;/info&gt; </info>
&lt;data&gt; <data>
&lt;refid __type="str"&gt; <refid __type="str">
&lt;dataid __type="str"&gt; <dataid __type="str">
&lt;gamekind __type="str"&gt; <gamekind __type="str">
&lt;recv_num __type="u32"&gt; <recv_num __type="u32">
&lt;/data&gt; </data>
&lt;/playerdata&gt; </playerdata>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;playerdata method="usergamedata_recv"&gt; <playerdata method="usergamedata_recv">
&lt;data&gt; <data>
&lt;refid __type="str"&gt; <refid __type="str">
&lt;dataid __type="str"&gt; <dataid __type="str">
&lt;gamekind __type="str"&gt; <gamekind __type="str">
&lt;recv_csv __type="str"&gt; <recv_csv __type="str">
&lt;/data&gt; </data>
&lt;/playerdata&gt; </playerdata>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;playerdata status="<i>status</i>"&gt; <playerdata status="??status">
&lt;player&gt; <player>
&lt;result&gt; <result>
&lt;record_num __type="u32" /&gt; <record_num __type="u32" />
&lt;/result&gt; </result>
&lt;record&gt; <record>
&lt;d[]&gt; <d[]>
&lt;bin1 __type="str" /&gt; <bin1 __type="str" />
&lt;/d[]&gt; </d[]>
&lt;/record&gt; </record>
&lt;/player&gt; </player>
&lt;/playerdata&gt; </playerdata>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="usergamedata_inheritance"><code>playerdata.usergamedata_inheritance</code></h2> <h2 id="usergamedata_inheritance"><code>playerdata.usergamedata_inheritance</code></h2>
<p>See: <code>playerdata.usergamedata_recv</code></p> <p>See: <code>playerdata.usergamedata_recv</code></p>
<h2 id="usergamedata_condrecv"><code>playerdata.usergamedata_condrecv</code></h2> <h2 id="usergamedata_condrecv"><code>playerdata.usergamedata_condrecv</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;playerdata method="usergamedata_condrecv"&gt; <playerdata method="usergamedata_condrecv">
&lt;info&gt; <info>
&lt;version __type="s32" /&gt; <version __type="s32" />
&lt;/info&gt; </info>
&lt;data&gt; <data>
&lt;dataid __type="str" /&gt; <dataid __type="str" />
&lt;gamekind __type="str" /&gt; <gamekind __type="str" />
&lt;vkey __type="str" /&gt; <vkey __type="str" />
&lt;conditionkey __type="str" /&gt; <conditionkey __type="str" />
&lt;columns_bit __type="u64" /&gt; <columns_bit __type="u64" />
&lt;conditions_num __type="u32" /&gt; <conditions_num __type="u32" />
&lt;where __type="str" /&gt; <where __type="str" />
&lt;order_num __type="u32" /&gt; <order_num __type="u32" />
&lt;order __type="str" /&gt; <order __type="str" />
&lt;recv_num __type="u32" /&gt; <recv_num __type="u32" />
&lt;/info&gt; </info>
&lt;/playerdata&gt; </playerdata>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;playerdata status="<i>status</i>"&gt; <playerdata status="??status">
&lt;player&gt; <player>
&lt;result __type="s32" /&gt; <result __type="s32" />
&lt;record_num __type="s32" /&gt; <record_num __type="s32" />
&lt;record&gt; <record>
&lt;d[]&gt; <d[]>
&lt;bin1 __type="str" /&gt; <bin1 __type="str" />
&lt;/d[]&gt; </d[]>
&lt;record/&gt; <record/>
&lt;/player&gt; </player>
&lt;/playerdata&gt; </playerdata>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="usergamedata_scorerank"><code>playerdata.usergamedata_scorerank</code></h2> <h2 id="usergamedata_scorerank"><code>playerdata.usergamedata_scorerank</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;playerdata method="usergamedata_scorerank"&gt; <playerdata method="usergamedata_scorerank">
&lt;info&gt; <info>
&lt;version __type="s32" /&gt; <version __type="s32" />
&lt;/info&gt; </info>
&lt;data&gt; <data>
&lt;dataid __type="str" /&gt; <dataid __type="str" />
&lt;gamekind __type="str" /&gt; <gamekind __type="str" />
&lt;ckey __type="str" /&gt; <ckey __type="str" />
&lt;conditionkey __type="str" /&gt; <conditionkey __type="str" />
&lt;score __type="str" /&gt; <score __type="str" />
&lt;/data&gt; </data>
&lt;/playerdata&gt; </playerdata>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;playerdata status="<i>status</i>"&gt; <playerdata status="??status">
&lt;rank&gt; <rank>
&lt;result __type="s32" /&gt; <result __type="s32" />
&lt;rank __type="s32" /&gt; <rank __type="s32" />
&lt;updatetime __type="u64" /&gt; <updatetime __type="u64" />
&lt;/rank&gt; </rank>
&lt;/playerdata&gt; </playerdata>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,19 +3,19 @@
<h1><code>services</code></h1> <h1><code>services</code></h1>
<h2 id="get"><code>services.get</code></h2> <h2 id="get"><code>services.get</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;services method="get" model*="" &gt; <services method="get" model*="" >
&lt;info&gt; <info>
&lt;AVS2 __type="str"&gt;<i>AVS2 version</i>&lt;/AVS2&gt; <AVS2 __type="str"><i>AVS2 version</i></AVS2>
&lt;/info&gt; </info>
&lt;/services&gt; </services>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;services expire="" method="get" mode="" status="<i>status</i>"&gt; <services expire="" method="get" mode="" status="??status">
&lt;item[] name="<i>service</i>" url="<i>url</i>" /&gt; <item[] name="??service" url="??url" />
&lt;/services&gt; </services>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<p>Known services are:</p> <p>Known services are:</p>
<ul> <ul>
<li><code>ntp</code></li> <li><code>ntp</code></li>

View File

@ -3,72 +3,72 @@
<h1><code>sidmgr</code></h1> <h1><code>sidmgr</code></h1>
<h2 id="create"><code>sidmgr.create</code></h2> <h2 id="create"><code>sidmgr.create</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;sidmgr method="create"&gt; <sidmgr method="create">
&lt;cardtype __type="str" /&gt; <cardtype __type="str" />
&lt;cardid __type="str" /&gt; <cardid __type="str" />
&lt;cardgid __type="str" /&gt; <cardgid __type="str" />
&lt;steal __type="u8" /&gt; <steal __type="u8" />
&lt;/sidmgr&gt; </sidmgr>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;sidmgr status="<i>status</i>"&gt; <sidmgr status="??status">
&lt;state __type="u32" /&gt; <state __type="u32" />
&lt;e_count __type="u8" /&gt; <e_count __type="u8" />
&lt;last __type="time" /&gt; <last __type="time" />
&lt;locked __type="time" /&gt; <locked __type="time" />
&lt;sid __type="str" /&gt; <sid __type="str" />
&lt;cardid_status __type="u8" /&gt; <cardid_status __type="u8" />
&lt;refid __type="str" /&gt; <refid __type="str" />
&lt;/sidmgr&gt; </sidmgr>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="open"><code>sidmgr.open</code></h2> <h2 id="open"><code>sidmgr.open</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;sidmgr method="open" sid="" &gt; <sidmgr method="open" sid="" >
&lt;pass __type="str" /&gt; <pass __type="str" />
&lt;/sidmgr&gt; </sidmgr>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;sidmgr status="<i>status</i>"&gt; <sidmgr status="??status">
&lt;state __type="u32" /&gt; <state __type="u32" />
&lt;refid __type="str" /&gt; <refid __type="str" />
&lt;locked __type="time" /&gt; <locked __type="time" />
&lt;/sidmgr&gt; </sidmgr>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="touch"><code>sidmgr.touch</code></h2> <h2 id="touch"><code>sidmgr.touch</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;sidmgr method="touch" sid="" /&gt; <sidmgr method="touch" sid="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;sidmgr status="<i>status</i>" /&gt; <sidmgr status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="branch"><code>sidmgr.branch</code></h2> <h2 id="branch"><code>sidmgr.branch</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;sidmgr method="branch" sid="" /&gt; <sidmgr method="branch" sid="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;sidmgr status="<i>status</i>" /&gt; <sidmgr status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="close"><code>sidmgr.close</code></h2> <h2 id="close"><code>sidmgr.close</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;sidmgr method="close" sid="" /&gt; <sidmgr method="close" sid="" />
&lt;cause __type="u32" /&gt; <cause __type="u32" />
&lt;/sidmgr&gt; </sidmgr>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;sidmgr status="<i>status</i>" /&gt; <sidmgr status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,104 +3,104 @@
<h1><code>system</code></h1> <h1><code>system</code></h1>
<h2 id="getmaster"><code>system.getmaster</code></h2> <h2 id="getmaster"><code>system.getmaster</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;system method="getmaster"&gt; <system method="getmaster">
&lt;data&gt; <data>
&lt;gamekind __type="str" /&gt; <gamekind __type="str" />
&lt;datatype __type="str" /&gt; <datatype __type="str" />
&lt;datakey __type="str" /&gt; <datakey __type="str" />
&lt;/data&gt; </data>
&lt;/system&gt; </system>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;system status="<i>status</i>"&gt; <system status="??status">
&lt;result __type="s32" /&gt; <result __type="s32" />
&lt;strdata1 __type="str" /&gt; <strdata1 __type="str" />
&lt;strdata2 __type="str" /&gt; <strdata2 __type="str" />
&lt;updatedate __type="u64" /&gt; <updatedate __type="u64" />
&lt;/system&gt; </system>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="getlocationiplist"><code>system.getlocationiplist</code></h2> <h2 id="getlocationiplist"><code>system.getlocationiplist</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;system method="getlocationiplist"&gt; <system method="getlocationiplist">
&lt;data&gt; <data>
&lt;locationid __type="str" /&gt; <locationid __type="str" />
&lt;lineid __type="str" /&gt; <lineid __type="str" />
&lt;/data&gt; </data>
&lt;/system&gt; </system>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;system status="<i>status</i>"&gt; <system status="??status">
&lt;result __type="s32" /&gt; <result __type="s32" />
&lt;iplist&gt; <iplist>
&lt;record_num __type="s32" /&gt; <record_num __type="s32" />
&lt;record[]&gt; <record[]>
&lt;localconn __type="str" /&gt; <localconn __type="str" />
&lt;/record[]&gt; </record[]>
&lt;/iplist&gt; </iplist>
&lt;/system&gt; </system>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="xrpcproxy"><code>system.xrpcproxy</code></h2> <h2 id="xrpcproxy"><code>system.xrpcproxy</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;system method="xrpcproxy"&gt; <system method="xrpcproxy">
&lt;info&gt; <info>
&lt;version __type="s32" /&gt; <version __type="s32" />
&lt;/info&gt; </info>
&lt;data&gt; <data>
&lt;hostid __type="s64" /&gt; <hostid __type="s64" />
&lt;locationid __type="str" /&gt; <locationid __type="str" />
&lt;lineid __type="str" /&gt; <lineid __type="str" />
&lt;/data&gt; </data>
&lt;/system&gt; </system>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;system status="<i>status</i>"&gt; <system status="??status">
&lt;result __type="s32" /&gt; <result __type="s32" />
&lt;pwrtime __type="s32" /&gt; <pwrtime __type="s32" />
&lt;matchlist&gt; <matchlist>
&lt;record_num __type="u32" /&gt; <record_num __type="u32" />
&lt;record[]&gt; <record[]>
&lt;pcbid __type="str" /&gt; <pcbid __type="str" />
&lt;statusflg __type="str" /&gt; <statusflg __type="str" />
&lt;matchgrp __type="s32" /&gt; <matchgrp __type="s32" />
&lt;hostid __type="s64" /&gt; <hostid __type="s64" />
&lt;jointime __type="u64" /&gt; <jointime __type="u64" />
&lt;connip_g __type="str" /&gt; <connip_g __type="str" />
&lt;connport_g __type="s32" /&gt; <connport_g __type="s32" />
&lt;connip_l __type="str" /&gt; <connip_l __type="str" />
&lt;connport_l __type="s32" /&gt; <connport_l __type="s32" />
&lt;/record[]&gt; </record[]>
&lt;/matchlist&gt; </matchlist>
&lt;/system&gt; </system>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<h2 id="convcardnumber"><code>system.convcardnumber</code></h2> <h2 id="convcardnumber"><code>system.convcardnumber</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;system method="convcardnumber"&gt; <system method="convcardnumber">
&lt;info&gt; <info>
&lt;version __type="s32" /&gt; <version __type="s32" />
&lt;/info&gt; </info>
&lt;data&gt; <data>
&lt;card_id __type="str" /&gt; <card_id __type="str" />
&lt;card_type __type="s32" /&gt; <card_type __type="s32" />
&lt;/data&gt; </data>
&lt;/system&gt; </system>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;system status="<i>status</i>"&gt; <system status="??status">
&lt;result __type="s32" /&gt; <result __type="s32" />
&lt;data&gt; <data>
&lt;card_number __type="str" /&gt; <card_number __type="str" />
&lt;/data&gt; </data>
&lt;/system&gt; </system>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,18 +3,18 @@
<h1><code>traceroute</code></h1> <h1><code>traceroute</code></h1>
<h2 id="send"><code>traceroute.send</code></h2> <h2 id="send"><code>traceroute.send</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;traceroute proto="" method="send"&gt; <traceroute proto="" method="send">
&lt;hop[]&gt; <hop[]>
&lt;valid __type="bool"&gt; <valid __type="bool">
&lt;addr __type="ip4"&gt; <addr __type="ip4">
&lt;usec __type="u64"&gt; <usec __type="u64">
&lt;/hop[]&gt; </hop[]>
&lt;/traceroute&gt; </traceroute>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<p><code>hop</code> repeats for every hop (unsurprisingly)</p> <p><code>hop</code> repeats for every hop (unsurprisingly)</p>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;traceroute status="<i>status</i>" /&gt; <traceroute status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -3,26 +3,26 @@
<h1><code>userdata</code></h1> <h1><code>userdata</code></h1>
<h2 id="read"><code>userdata.read</code></h2> <h2 id="read"><code>userdata.read</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;userdata method="read" card*="" model*="" label="" /&gt; <userdata method="read" card*="" model*="" label="" />
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;userdata status="<i>status</i>" time=""&gt; <userdata status="??status" time="">
&lt;b[] __type="" /&gt; <b[] __type="" />
&lt;/userdata&gt; </userdata>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<p><code>__type</code> here can be either <code>bin</code> or <code>str</code></p> <p><code>__type</code> here can be either <code>bin</code> or <code>str</code></p>
<h2 id="write"><code>userdata.write</code></h2> <h2 id="write"><code>userdata.write</code></h2>
<h3>Request:</h3> <h3>Request:</h3>
<pre><code>&lt;call <i>...</i>&gt; <pre>{% highlight "cxml" %}<call ...>
&lt;userdata method="write" card="" time="" model*="" label*="" &gt; <userdata method="write" card="" time="" model*="" label*="" >
&lt;b[] __type="str" /&gt; <b[] __type="str" />
&lt;/userdata&gt; </userdata>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<h3>Response:</h3> <h3>Response:</h3>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;userdata status="<i>status</i>" /&gt; <userdata status="??status" />
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
{% endblock %} {% endblock %}

View File

@ -23,17 +23,17 @@
</details> </details>
<p>All requests follow a basic format:</p> <p>All requests follow a basic format:</p>
<pre><code>&lt;call model="<i>model</i>" srcid="<i>srcid</i>" tag="<i>tag</i>"&gt; <pre>{% highlight "cxml" %}<call model="??model" srcid="??srcid" tag="??tag">
&lt;<i>module</i> method="<i>method</i>" <i>...attributes</i>&gt; <??module method="??method" ...attributes>
<i>children</i> ...children
&lt;/<i>module</i>&gt; </??module>
&lt;/call&gt;</code></pre> </call>{% endhighlight %}</pre>
<p>The responses follow a similar format:</p> <p>The responses follow a similar format:</p>
<pre><code>&lt;response&gt; <pre>{% highlight "cxml" %}<response>
&lt;<i>module</i> status="<i>status</i>" <i>...attributes</i>&gt; <??module status="??status" ...attributes>
<i>children</i> ...children
&lt;/<i>module</i>&gt; </??module>
&lt;/response&gt;</code></pre> </response>{% endhighlight %}</pre>
<p>With <code>"0"</code> being a successful status. Convention is to identify a specific method as <p>With <code>"0"</code> being a successful status. Convention is to identify a specific method as
<code><i>module</i>.<i>method</i></code>, and we'll be following this convention in this document too. There are <code><i>module</i>.<i>method</i></code>, and we'll be following this convention in this document too. There are
a <i>lot</i> of possible methods, so the majority of this document is a big reference for them all. There are a a <i>lot</i> of possible methods, so the majority of this document is a big reference for them all. There are a
@ -103,149 +103,7 @@
<h2>Possible XRPC requests</h2> <h2>Possible XRPC requests</h2>
<ul> {{ generate_xrpc_list()|safe }}
<li><code><a href="proto/eventlog.html">eventlog.%s</a></code></li>
<ul>
<li><code><a href="proto/eventlog.html#eventlog.write">eventlog.write</a></code></li>
</ul>
<li><code><a href="proto/playerdata.html">playerdata.%s</a></code></li>
<ul>
<li><code><a href="proto/playerdata.html#usergamedata_send">playerdata.usergamedata_send</a></code></li>
<li><code><a href="proto/playerdata.html#usergamedata_recv">playerdata.usergamedata_recv</a></code></li>
<li><code><a href="proto/playerdata.html#usergamedata_inheritance">playerdata.usergamedata_inheritance</a></code>
</li>
<li><code><a href="proto/playerdata.html#usergamedata_condrecv">playerdata.usergamedata_condrecv</a></code>
</li>
<li><code><a href="proto/playerdata.html#usergamedata_scorerank">playerdata.usergamedata_scorerank</a></code>
</li>
</ul>
<li><code><a href="proto/matching.html">matching.%s</a></code></li>
<ul>
<li><code><a href="proto/matching.html#request">matching.request</a></code></li>
<li><code><a href="proto/matching.html#wait">matching.wait</a></code></li>
<li><code><a href="proto/matching.html#finish">matching.finish</a></code></li>
</ul>
<li><code><a href="proto/system.html">system.%s</a></code></li>
<ul>
<li><code><a href="proto/system.html#getmaster">system.getmaster</a></code></li>
<li><code><a href="proto/system.html#getlocationiplist">system.getlocationiplist</a></code></li>
<li><code><a href="proto/system.html#xrpcproxy">system.xrpcproxy</a></code></li>
<li><code><a href="proto/system.html#convcardnumber">system.convcardnumber</a></code></li>
</ul>
<li><code><a href="proto/esoc.html">esoc.%s</a></code></li>
<ul>
<li><code><a href="proto/esoc.html#read">esoc.read</a></code></li>
<li><code><a href="proto/esoc.html#write">esoc.write</a></code></li>
</ul>
<li><code><a href="proto/cardmng.html">cardmng.%s</a></code></li>
<ul>
<li><code><a href="proto/cardmng.html#inquire">cardmng.inquire</a></code></li>
<li><code><a href="proto/cardmng.html#getrefid">cardmng.getrefid</a></code></li>
<li><code><a href="proto/cardmng.html#bindmodel">cardmng.bindmodel</a></code></li>
<li><code><a href="proto/cardmng.html#bindcard">cardmng.bindcard</a></code></li>
<li><code><a href="proto/cardmng.html#authpass">cardmng.authpass</a></code></li>
<li><code><a href="proto/cardmng.html#getkeepspan">cardmng.getkeepspan</a></code></li>
<li><code><a href="proto/cardmng.html#getkeepremain">cardmng.getkeepremain</a></code></li>
<li><code><a href="proto/cardmng.html#getdatalist">cardmng.getdatalist</a></code></li>
</ul>
<li><code><a href="proto/esign.html">esign.%s</a></code></li>
<ul>
<li><code><a href="proto/esign.html#request">esign.request</a></code></li>
</ul>
<li><code><a href="proto/package.html">package.%s</a></code></li>
<ul>
<li><code><a href="proto/package.html#list">package.list</a></code></li>
<li><code><a href="proto/package.html#intend">package.intend</a></code></li>
</ul>
<li><code><a href="proto/userdata.html">userdata.%s</a></code></li>
<ul>
<li><code><a href="proto/userdata.html#read">userdata.read</a></code></li>
<li><code><a href="proto/userdata.html#write">userdata.write</a></code></li>
</ul>
<li><code><a href="proto/services.html">services.%s</a></code></li>
<ul>
<li><code><a href="proto/services.html#get">services.get</a></code></li>
</ul>
<li><code><a href="proto/pcbtracker.html">pcbtracker.%s</a></code></li>
<ul>
<li><code><a href="proto/pcbtracker.html#alive">pcbtracker.alive</a></code></li>
</ul>
<li><code><a href="proto/pcbevent.html">pcbevent.%s</a></code></li>
<ul>
<li><code><a href="proto/pcbevent.html#put">pcbevent.put</a></code></li>
</ul>
<li><code><a href="proto/message.html">message.%s</a></code></li>
<ul>
<li><code><a href="proto/message.html#get">message.get</a></code></li>
</ul>
<li><code><a href="proto/facility.html">facility.%s</a></code></li>
<ul>
<li><code><a href="proto/facility.html#get">facility.get</a></code></li>
</ul>
<li><code><a href="proto/apsmanager.html">apsmanager.%s</a></code></li>
<ul>
<li><code><a href="proto/apsmanager.html#getstat">apsmanager.getstat</a></code></li>
</ul>
<li><code><a href="proto/sidmgr.html">sidmgr.%s</a></code></li>
<ul>
<li><code><a href="proto/sidmgr.html#create">sidmgr.create</a></code></li>
<li><code><a href="proto/sidmgr.html#open">sidmgr.open</a></code></li>
<li><code><a href="proto/sidmgr.html#touch">sidmgr.touch</a></code></li>
<li><code><a href="proto/sidmgr.html#branch">sidmgr.branch</a></code></li>
<li><code><a href="proto/sidmgr.html#close">sidmgr.close</a></code></li>
</ul>
<li><code><a href="proto/dlstatus.html">dlstatus.%s</a></code></li>
<ul>
<li><code><a href="proto/dlstatus.html#done">dlstatus.done</a></code></li>
<li><code><a href="proto/dlstatus.html#progress">dlstatus.progress</a></code></li>
</ul>
<li><code><a href="proto/eacoin.html">eacoin.%s</a></code></li>
<ul>
<li><code><a href="proto/eacoin.html#checkin">eacoin.checkin</a></code></li>
<li><code><a href="proto/eacoin.html#checkout">eacoin.checkout</a></code></li>
<li><code><a href="proto/eacoin.html#consume">eacoin.consume</a></code></li>
<li><code><a href="proto/eacoin.html#getbalance">eacoin.getbalance</a></code></li>
<li><code><a href="proto/eacoin.html#getecstatus">eacoin.getecstatus</a></code></li>
<li><code><a href="proto/eacoin.html#touch">eacoin.touch</a></code></li>
<li><code><a href="proto/eacoin.html#opchpass">eacoin.opchpass</a></code></li>
<li><code><a href="proto/eacoin.html#opcheckin">eacoin.opcheckin</a></code></li>
<li><code><a href="proto/eacoin.html#opcheckout">eacoin.opcheckout</a></code></li>
<li><code><a href="proto/eacoin.html#getlog">eacoin.getlog</a></code></li>
</ul>
<li><code><a href="proto/traceroute.html">traceroute.%s</a></code></li>
<ul>
<li><code><a href="proto/traceroute.html#send">traceroute.send</a></code></li>
</ul>
<li><code><a href="proto/game/sv4.html">game.%s</a></code></li>
<ul>
<li><code><a href="proto/game/sv4.html#sample">game.sv4_sample</a></code></li>
<li><code><a href="proto/game/sv4.html#new">game.sv4_new</a></code></li>
<li><code><a href="proto/game/sv4.html#load">game.sv4_load</a></code></li>
<li><code><a href="proto/game/sv4.html#load_m">game.sv4_load_m</a></code></li>
<li><code><a href="proto/game/sv4.html#save">game.sv4_save</a></code></li>
<li><code><a href="proto/game/sv4.html#save_m">game.sv4_save_m</a></code></li>
<li><code><a href="proto/game/sv4.html#common">game.sv4_common</a></code></li>
<li><code><a href="proto/game/sv4.html#shop">game.sv4_shop</a></code></li>
<li><code><a href="proto/game/sv4.html#hiscore">game.sv4_hiscore</a></code></li>
<li><code><a href="proto/game/sv4.html#buy">game.sv4_buy</a></code></li>
<li><code><a href="proto/game/sv4.html#exception">game.sv4_exception</a></code></li>
<li><code><a href="proto/game/sv4.html#entry_s">game.sv4_entry_s</a></code></li>
<li><code><a href="proto/game/sv4.html#entry_e">game.sv4_entry_e</a></code></li>
<li><code><a href="proto/game/sv4.html#frozen">game.sv4_frozen</a></code></li>
<li><code><a href="proto/game/sv4.html#lounge">game.sv4_lounge</a></code></li>
<li><code><a href="proto/game/sv4.html#save_e">game.sv4_save_e</a></code></li>
<li><code><a href="proto/game/sv4.html#save_pb">game.sv4_save_pb</a></code></li>
<li><code><a href="proto/game/sv4.html#save_c">game.sv4_save_c</a></code></li>
<li><code><a href="proto/game/sv4.html#play_s">game.sv4_play_s</a></code></li>
<li><code><a href="proto/game/sv4.html#play_e">game.sv4_play_e</a></code></li>
<li><code><a href="proto/game/sv4.html#serial">game.sv4_serial</a></code></li>
<li><code><a href="proto/game/sv4.html#save_fi">game.sv4_save_fi</a></code></li>
<li><code><a href="proto/game/sv4.html#print">game.sv4_print</a></code></li>
<li><code><a href="proto/game/sv4.html#print_h">game.sv4_print_h</a></code></li>
<li><code><a href="proto/game/sv4.html#load_r">game.sv4_load_r</a></code></li>
<li><code><a href="proto/game/sv4.html#save_campaign">game.sv4_save_campaign</a></code></li>
</ul>
</ul>
<b>Totally undocumented services (based on <code>services.get</code>):</b> <b>Totally undocumented services (based on <code>services.get</code>):</b>
<ul> <ul>

86
xml_lexer.py Normal file
View File

@ -0,0 +1,86 @@
from pygments.lexer import RegexLexer
from pygments.token import Text, Comment, Operator, Name, String
from pygments.lexers import _lexer_cache
from pygments.lexers._mapping import LEXERS
def italic_attr(lexer, m):
yield m.start(), String, '"'
yield m.start() + 2, Comment, m.group()[3:-1]
yield m.end() - 1, String, '"'
def italic_generic(lexer, m):
yield m.start(), Comment, m.group()
def italic_tag(lexer, m):
yield m.start(), Name.Tag, "<"
name = m.group()[3:]
if name.endswith(">"):
yield m.start() + 1, Comment, name[:-1]
yield m.end() - 1, Name.Tag, ">"
else:
yield m.start() + 1, Comment, name
def italic_tag_close(lexer, m):
yield m.start(), Name.Tag, "</"
yield m.start() + 4, Comment, m.group()[4:-1]
yield m.end() - 1, Name.Tag, ">"
def repeat_tag_close(lexer, m):
before, _, after = m.group().partition("[]")
yield m.start(), Name.Tag, before
yield m.start() + len(before), Operator, "[]"
yield m.start() + len(before) + 2, Name.Tag, after
def italic_attr_name(lexer, m):
name, _, after = m.group().partition("*")
yield m.start(), Name.Attribute, name
yield m.start() + len(name), Operator, "*"
yield m.start() + len(name) + 1, Name.Attribute, after
class CustomXMLLexer(RegexLexer):
name = "customxml"
aliases = ["cxml"]
tokens = {
'root': [
(r'\s*\.\.\.\w*', Comment),
('[^<&]+', Text),
(r'&\S*?;', Name.Entity),
(r'\<\!\[CDATA\[.*?\]\]\>', Comment.Preproc),
(r'<!--(.|\n)*?-->', Comment.Multiline),
(r'<\?.*?\?>', Comment.Preproc),
('<![^>]*>', Comment.Preproc),
(r'<\s*[\w:.-]+', Name.Tag, 'tag'),
(r'<\s*/\s*[\w:.-]+\s*>', Name.Tag),
(r'<\s*\?\?[\w:.-]+', italic_tag, 'tag'),
(r'<\s*/\s*\?\?[\w:.-]+\s*>', italic_tag_close),
(r'<\s*/\s*[\w:.-]+\[\]\s*>', repeat_tag_close),
],
'tag': [
(r'\*', Operator),
(r'\[\]', Operator),
(r'\s+', Text),
(r'\.\.\.\w*', italic_generic),
(r'[\w.:-]+\s*=', Name.Attribute, 'attr'),
(r'[\w.:-]+\*\s*=', italic_attr_name, 'attr'),
(r'/?\s*>', Name.Tag, '#pop'),
],
'attr': [
(r'\s+', Text),
(r'"\?\?[^"]*?"', italic_attr, "#pop"),
('".*?"', String, '#pop'),
("'.*?'", String, '#pop'),
(r'[^\s>]+', String, '#pop'),
],
}
def analyse_text(text):
print("hi?")
_lexer_cache[CustomXMLLexer.__name__] = CustomXMLLexer
LEXERS["CustomXMLLexer"] = ("xml_lexer", "CustomXMLLexer", ("cxml", ), (), ())
__all__ = ("CustomXMLLexer", )