ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.14
Committed: Fri Jun 13 21:20:59 2003 UTC (20 years, 11 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.13: +391 -55 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 pcg 1.1 <html>
2     <head>
3     <title>KGS Protocol Description</title>
4     <!--
5     Copyright (C) 2003 Marc Lehmannn &lt;pcg@goof.com&gt;
6    
7     You can redistribute and/or modify this document under the terms of
8     the GNU General Public License as published by the Free Software
9     Foundation; either version 2 of the License, or (at your option) any
10     later version.
11    
12     This document is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15     General Public License for more details.
16    
17     You should have received a copy of the GNU General Public License
18     along with this program; if not, write to the Free Software
19     Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20     -->
21     </head>
22     <body>
23    
24 pcg 1.14 <h1>$Revision: 1.15 $</h1>
25 pcg 1.9
26 pcg 1.1 <h1>KGS Protocol Description</h1>
27    
28     <p>This XML document describes the KGS protocol. It is also used
29     to automatically generate the perl parser for all the messages and
30     structures in the protocol. Adapting it to other languages should be
31     trivial.</p>
32    
33 pcg 1.9 <p>
34     <b>Please note that the author of KGS has told me that he will
35     change the protocol in response to my efforts. This does not
36     necessarily mean that he will change the protocol just to make it
37     difficult to reverse-engineer the protocol, but if this happens,
38     I might not have the resources the track them, if they are too
39     extensive. Anyway, he made it clear that no help whatsoever is to be
40     expected.</b>
41     </p>
42    
43 pcg 1.4 <p>If you feel you need to update the visual appearance of this
44 pcg 1.10 document, feel free to look <tt>doc/doc2html.xsl</tt> and improve
45 pcg 1.4 it.</p>
46    
47 pcg 1.7 <p>The current version of this document can always be found at
48     <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/kgsueme/kgsueme/doc/protocol.xml?rev=HEAD&amp;content-type=text/xml">here</a>, while
49     the HTML version of it can be found
50     <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/kgsueme/kgsueme/doc/protocol.html?rev=HEAD&amp;content-type=text/html">here</a>.
51     </p>
52    
53 pcg 1.1 <h2>Structure and conventions of this document and the protocol</h2>
54    
55     <p>"Send" means messages send from the client to the server, while
56     "received" means messages send by the server to the client.</p>
57    
58 pcg 1.4 <p>Everything on the wire is in little-endian format (what a shame).</p>
59 pcg 1.1
60 pcg 1.4 <p>Primitive types are mostly integers (signed
61     "<code>I</code>&lt;bits&gt;", unsigned "<code>U</code>&lt;bits&gt;"),
62     ascii strings ("<code>username</code>"), or zero-terminated
63     UCS2-Strings ("<code>STRING</code>"). Yes, I know java is supposed to
64     do UTF-16, but no implementation seems to care...</p>
65 pcg 1.1
66     <p>For the rest, go figure or bug me, Marc Lehmann &lt;pcg@goof.com&gt;</p>
67    
68     <h2>Stream and message structure.</h2>
69    
70 pcg 1.4 <p>After connecting to the server, a handshake byte is sent. It's
71     the major version number of the protocol the client expects to
72     receive. Version 3 and 4 are mostly the same, except that Version 4
73     clients expect server messages to be compressed, version 3 clients
74     not.</p>
75    
76     <p>The server sends back his protocol number, which is always 3 in
77     the current protocol. Most of the protocol variation is determined by
78     the server using the client version that is used in the initial login
79     message, not the initial handshake byte.</p>
80 pcg 1.1
81     <p>After the initial handshake, the client sends uncompressed
82     messages, while the server sends back a zlib-compressed
83     stream (<a href="http://rfc1950.x42.com/">rfc1950</a> and <a href="http://rfc1950.x42.com/">rfc1951</a>).</p>
84    
85     <p>All messages have the same header:</p>
86    
87 pcg 1.3 <h4>STRUCTURE message_header</h4>
88 pcg 1.1 <table border="1">
89     <tr>
90     <th>NAME</th>
91     <th>TYPE</th>
92     <th>DEFAULT</th>
93 pcg 1.3 <th>DEC-GUARD</th>
94 pcg 1.1 </tr>
95     <tr>
96     <td colspan="4">
97     </td>
98     </tr>
99     <tr>
100     <td>_unknown</td>
101 pcg 1.3 <td>U16</td>
102 pcg 1.1 <td></td>
103 pcg 1.3 <td>
104 pcg 1.4 <b></b> </td>
105 pcg 1.1 </tr>
106     <tr>
107     <td colspan="4">
108     </td>
109     </tr>
110     <tr>
111     <td>length</td>
112 pcg 1.3 <td>U16</td>
113 pcg 1.1 <td></td>
114 pcg 1.3 <td>
115 pcg 1.4 <b></b> </td>
116 pcg 1.1 </tr>
117     <tr>
118     <td colspan="4">
119     The length is the length of the full message including the header.
120     </td>
121     </tr>
122     <tr>
123     <td>type</td>
124 pcg 1.3 <td>U16</td>
125 pcg 1.1 <td></td>
126 pcg 1.3 <td>
127 pcg 1.4 <b></b> </td>
128 pcg 1.1 </tr>
129     <tr>
130     <td colspan="4">
131     If the type is &gt;= 0x4000 this is a message for a specific channel. The channel
132 pcg 1.3 number is always the next U16.
133 pcg 1.1 </td>
134     </tr>
135     </table>
136    
137 pcg 1.3 <h2>Primitive types used in the protocol.</h2>
138    
139 pcg 1.9 <p>Apart from the basic types, I need to define some extra types to
140     deal with fixed-point values (based on integer types) or fixed-length
141     strings (either 7-bit-ascii or more limited (<code>A</code>), or UCS-2
142     based (<code>S</code>)).</p>
143    
144 pcg 1.4 <h4>TYPE username</h4>
145     BASE TYPE: A<br />
146     LENGTH: 12<br />
147     MULTIPLIER: <br />
148 pcg 1.8
149     <p>The basic user or login name, used throughout the protocol
150     as a handle to the user.</p>
151    
152 pcg 1.4 <h4>TYPE roomname</h4>
153     BASE TYPE: S<br />
154     LENGTH: 25<br />
155     MULTIPLIER: <br />
156 pcg 1.3 <!-- argh, how horribly broken -->
157 pcg 1.8
158     <p>Many strings in the protocol are fixed-width for no good reason
159     (maybe this is one reason for using compression in enwer versions, as
160     the packets itself are wasting lots of space.</p>
161    
162 pcg 1.14 <h4>TYPE realname</h4>
163     BASE TYPE: S<br />
164     LENGTH: 50<br />
165     MULTIPLIER: <br />
166     <h4>TYPE email</h4>
167     BASE TYPE: S<br />
168     LENGTH: 70<br />
169     MULTIPLIER: <br />
170     <h4>TYPE userinfo</h4>
171     BASE TYPE: S<br />
172     LENGTH: 1000<br />
173     MULTIPLIER: <br />
174     <h4>TYPE url</h4>
175     BASE TYPE: A<br />
176     LENGTH: 100<br />
177     MULTIPLIER: <br />
178    
179     <p>Used in user_record.</p>
180    
181 pcg 1.4 <h4>TYPE locale</h4>
182     BASE TYPE: A<br />
183     LENGTH: 5<br />
184     MULTIPLIER: <br />
185 pcg 1.8
186     <p>A kind of locale specifier. It seems the general format seems to be
187     lowercase language, underscore, uppercase location, e.g. en_US. More
188     fancy specifications don't fit.</p>
189    
190 pcg 1.4 <h4>TYPE flag</h4>
191     BASE TYPE: U8<br />
192     LENGTH: <br />
193     MULTIPLIER: 1<br />
194 pcg 1.8
195     <p>Just a simple boolean value. 0 means false, and 1 generally true,
196     but I suggest ccepting != 0 as true.</p>
197    
198 pcg 1.6 <h4>TYPE komi16</h4>
199     BASE TYPE: I16<br />
200     LENGTH: <br />
201     MULTIPLIER: 2<br />
202     <h4>TYPE komi32</h4>
203 pcg 1.4 BASE TYPE: I32<br />
204     LENGTH: <br />
205     MULTIPLIER: 2<br />
206 pcg 1.8
207     <p>Komi values are multiplied by 2 to make them integer in the
208 pcg 1.11 protocol.</p>
209 pcg 1.8
210 pcg 1.4 <h4>TYPE result</h4>
211     BASE TYPE: I32<br />
212     LENGTH: <br />
213     MULTIPLIER: 2<br />
214 pcg 1.8
215 pcg 1.13 <p>The game result is also multiplied by two to give it higher
216     resolution. There are also special values for wins by time etc., either
217     in result or in the score* types, or both :)</p>
218 pcg 1.8
219 pcg 1.11 <h4>TYPE score16</h4>
220     BASE TYPE: I16<br />
221     LENGTH: <br />
222     MULTIPLIER: 4<br />
223     <h4>TYPE score32</h4>
224 pcg 1.4 BASE TYPE: I32<br />
225     LENGTH: <br />
226     MULTIPLIER: 4<br />
227 pcg 1.8
228     <p>A score value (used for displaying the score at the end of a game)
229 pcg 1.13 are multiplied by four for a change (the 0.25 resolution is not
230     used). In game structures it is encoded by dividing by two, though, so
231     watch out!</p>
232 pcg 1.8
233 pcg 1.4 <h4>TYPE time</h4>
234     BASE TYPE: U32<br />
235     LENGTH: <br />
236 pcg 1.6 MULTIPLIER: 1000<br />
237 pcg 1.8
238     <p>Time values are multiplied by 1000, giving them millisecond
239     accuracy.</p>
240 pcg 1.3
241 pcg 1.14 <h4>TYPE timestamp</h4>
242     BASE TYPE: U64<br />
243     LENGTH: <br />
244     MULTIPLIER: 1000<br />
245    
246     <p>64 bit timeval, milliseconds since posix epoch, e.g. <code>my
247     ($year, $month, $day) = (gmtime $date * 0.001)[5,4,3];</code>
248     </p>
249    
250 pcg 1.3 <h2>Constants, enumeration and set types used in the protocol.</h2>
251 pcg 1.1
252     <p>Baaah... not yet.</p>
253    
254 pcg 1.3 <h2>Structs used in send &amp; receive messages</h2>
255 pcg 1.1
256 pcg 1.3 <h4>STRUCTURE user</h4>
257     CLASS: KGS::User<br />
258 pcg 1.1 <table border="1">
259     <tr>
260     <th>NAME</th>
261     <th>TYPE</th>
262     <th>DEFAULT</th>
263 pcg 1.3 <th>DEC-GUARD</th>
264 pcg 1.1 </tr>
265     <tr>
266     <td colspan="4">
267 pcg 1.9
268     Everywhere a user + flags is required, even used in some places
269     where only a username is required. I see no general rule on when a
270     complete user and when a partial user is required.
271    
272 pcg 1.1 </td>
273     </tr>
274     <tr>
275     <td>name</td>
276 pcg 1.3 <td>username</td>
277 pcg 1.1 <td></td>
278 pcg 1.3 <td>
279 pcg 1.4 <b></b> </td>
280 pcg 1.1 </tr>
281     <tr>
282     <td colspan="4">
283     </td>
284     </tr>
285     <tr>
286     <td>flags</td>
287 pcg 1.3 <td>U32</td>
288 pcg 1.1 <td>1</td>
289 pcg 1.3 <td>
290 pcg 1.4 <b></b> </td>
291 pcg 1.1 </tr>
292     <tr>
293     <td colspan="4">
294     </td>
295     </tr>
296     </table>
297    
298 pcg 1.6 <h4>STRUCTURE rules</h4>
299     CLASS: KGS::Rules<br />
300     <table border="1">
301     <tr>
302     <th>NAME</th>
303     <th>TYPE</th>
304     <th>DEFAULT</th>
305     <th>DEC-GUARD</th>
306     </tr>
307     <tr>
308     <td colspan="4">
309 pcg 1.9
310     This structure is used for challanges as well as in the special
311     TREE "subprotocol". It tightly encodes the game parameters.
312    
313 pcg 1.6 </td>
314     </tr>
315     <tr>
316     <td>ruleset</td>
317     <td>U8</td>
318     <td></td>
319     <td>
320     <b></b> </td>
321     </tr>
322     <tr>
323     <td colspan="4">
324     </td>
325     </tr>
326     <tr>
327     <td>size</td>
328     <td>U8</td>
329     <td></td>
330     <td>
331     <b></b> </td>
332     </tr>
333     <tr>
334     <td colspan="4">
335     </td>
336     </tr>
337     <tr>
338     <td>handicap</td>
339     <td>U8</td>
340     <td></td>
341     <td>
342     <b></b> </td>
343     </tr>
344     <tr>
345     <td colspan="4">
346     </td>
347     </tr>
348     <tr>
349     <td>komi</td>
350     <td>komi16</td>
351     <td></td>
352     <td>
353     <b></b> </td>
354     </tr>
355     <tr>
356     <td colspan="4">
357     </td>
358     </tr>
359     <tr>
360     <td>timesys</td>
361     <td>U8</td>
362     <td></td>
363     <td>
364     <b></b> </td>
365     </tr>
366     <tr>
367     <td colspan="4">
368     </td>
369     </tr>
370     <tr>
371     <td>time</td>
372     <td>U32</td>
373     <td></td>
374     <td>
375     <b></b> </td>
376     </tr>
377     <tr>
378     <td colspan="4">
379     </td>
380     </tr>
381     <tr>
382     <td>interval</td>
383     <td>U32</td>
384     <td></td>
385     <td>
386     <b></b> </td>
387     </tr>
388     <tr>
389     <td colspan="4">
390     byo-yomi time / canadian time
391     </td>
392     </tr>
393     <tr>
394     <td>count</td>
395     <td>U16</td>
396     <td></td>
397     <td>
398     <b></b> </td>
399     </tr>
400     <tr>
401     <td colspan="4">
402     periods / moves
403     </td>
404     </tr>
405     </table>
406    
407 pcg 1.3 <h2>Structs used in send messages</h2>
408 pcg 1.1
409     <h4>MESSAGE login</h4>
410     NUMERIC TYPE (hex): 0000 SEND<table border="1">
411     <tr>
412     <th>NAME</th>
413     <th>TYPE</th>
414     <th>DEFAULT</th>
415 pcg 1.3 <th>DEC-GUARD</th>
416 pcg 1.1 </tr>
417     <tr>
418     <td colspan="4">
419 pcg 1.9
420     Send on the initial login. The password needs to be set when the
421     guest flag is true.
422    
423 pcg 1.1 </td>
424     </tr>
425     <tr>
426     <td>ver_major</td>
427 pcg 1.3 <td>U32</td>
428 pcg 1.1 <td>2</td>
429 pcg 1.3 <td>
430 pcg 1.4 <b></b> </td>
431 pcg 1.1 </tr>
432     <tr>
433     <td colspan="4">
434     </td>
435     </tr>
436     <tr>
437     <td>ver_minor</td>
438 pcg 1.3 <td>U32</td>
439 pcg 1.1 <td>4</td>
440 pcg 1.3 <td>
441 pcg 1.4 <b></b> </td>
442 pcg 1.1 </tr>
443     <tr>
444     <td colspan="4">
445     </td>
446     </tr>
447     <tr>
448     <td>ver_micro</td>
449 pcg 1.3 <td>U32</td>
450 pcg 1.1 <td>67</td>
451 pcg 1.3 <td>
452 pcg 1.4 <b></b> </td>
453 pcg 1.1 </tr>
454     <tr>
455     <td colspan="4">
456     </td>
457     </tr>
458     <tr>
459 pcg 1.3 <td>name</td>
460     <td>username</td>
461 pcg 1.1 <td></td>
462 pcg 1.3 <td>
463 pcg 1.4 <b></b> </td>
464 pcg 1.1 </tr>
465     <tr>
466     <td colspan="4">
467     </td>
468     </tr>
469     <tr>
470     <td>password </td>
471 pcg 1.3 <td>U64</td>
472 pcg 1.1 <td>0</td>
473 pcg 1.3 <td>
474 pcg 1.4 <b></b> </td>
475 pcg 1.1 </tr>
476     <tr>
477     <td colspan="4">
478 pcg 1.3 Password is a number calculated as follows (VERY insecure, basically plaintext!):
479 pcg 1.4 password = 0; for char in characters do password ← password * 1055 + ascii_code (char);
480 pcg 1.1 </td>
481     </tr>
482     <tr>
483 pcg 1.2 <td>guest</td>
484 pcg 1.3 <td>flag</td>
485 pcg 1.1 <td>1</td>
486 pcg 1.3 <td>
487 pcg 1.4 <b></b> </td>
488 pcg 1.1 </tr>
489     <tr>
490     <td colspan="4">
491     </td>
492     </tr>
493     <tr>
494     <td>_unknown3</td>
495 pcg 1.3 <td>U16</td>
496 pcg 1.1 <td>0</td>
497 pcg 1.3 <td>
498 pcg 1.4 <b></b> </td>
499 pcg 1.1 </tr>
500     <tr>
501     <td colspan="4">
502     </td>
503     </tr>
504     <tr>
505 pcg 1.2 <td>locale</td>
506 pcg 1.3 <td>locale</td>
507     <td>"en_US"</td>
508     <td>
509 pcg 1.4 <b></b> </td>
510 pcg 1.1 </tr>
511     <tr>
512     <td colspan="4">
513     </td>
514     </tr>
515     <tr>
516     <td>clientver</td>
517     <td>DATA</td>
518 pcg 1.3 <td>"1.4.1_01:Swing app:Sun Microsystems Inc."</td>
519     <td>
520 pcg 1.4 <b></b> </td>
521 pcg 1.1 </tr>
522     <tr>
523     <td colspan="4">
524 pcg 1.4 The "default" is the java vm version, not exactly he client version. However,
525     you should always send a tetx like "Jonathan's C client bersion 0.6" or somesuch,
526     so the server can, if necessary, block broken clients or client versions.
527 pcg 1.1 </td>
528     </tr>
529     </table>
530    
531     <h4>MESSAGE server_stats</h4>
532 pcg 1.2 NUMERIC TYPE (hex): 0014 SEND<table border="1">
533 pcg 1.1 <tr>
534     <th>NAME</th>
535     <th>TYPE</th>
536     <th>DEFAULT</th>
537 pcg 1.3 <th>DEC-GUARD</th>
538 pcg 1.1 </tr>
539     <tr>
540     <td colspan="4">
541     Request server statistics.
542     </td>
543     </tr>
544     </table>
545    
546     <h4>MESSAGE pic_req</h4>
547 pcg 1.2 NUMERIC TYPE (hex): 0021 SEND<table border="1">
548 pcg 1.1 <tr>
549     <th>NAME</th>
550     <th>TYPE</th>
551     <th>DEFAULT</th>
552 pcg 1.3 <th>DEC-GUARD</th>
553 pcg 1.1 </tr>
554     <tr>
555     <td colspan="4">
556 pcg 1.9 Request a user picture from the server. Results in a userpic-reply
557     or a timeout :/.
558 pcg 1.1 </td>
559     </tr>
560     <tr>
561     <td>name</td>
562 pcg 1.3 <td>username</td>
563 pcg 1.1 <td></td>
564 pcg 1.3 <td>
565 pcg 1.4 <b></b> </td>
566 pcg 1.1 </tr>
567     <tr>
568     <td colspan="4">
569     </td>
570     </tr>
571     </table>
572    
573     <h4>MESSAGE pic_upload</h4>
574 pcg 1.2 NUMERIC TYPE (hex): 0021 SEND<table border="1">
575 pcg 1.1 <tr>
576     <th>NAME</th>
577     <th>TYPE</th>
578     <th>DEFAULT</th>
579 pcg 1.3 <th>DEC-GUARD</th>
580 pcg 1.1 </tr>
581     <tr>
582     <td colspan="4">
583     Same code as pic_req, but with an additional data section that
584 pcg 1.4 must contain a JPEG image that is &lt;=7KB. It must have 141×200 pixels.
585 pcg 1.1 </td>
586     </tr>
587     <tr>
588     <td>name</td>
589 pcg 1.3 <td>username</td>
590 pcg 1.1 <td></td>
591 pcg 1.3 <td>
592 pcg 1.4 <b></b> </td>
593 pcg 1.1 </tr>
594     <tr>
595     <td colspan="4">
596     </td>
597     </tr>
598     <tr>
599     <td>data</td>
600     <td>DATA</td>
601     <td></td>
602 pcg 1.3 <td>
603 pcg 1.4 <b></b> </td>
604 pcg 1.1 </tr>
605     <tr>
606     <td colspan="4">
607     </td>
608     </tr>
609     </table>
610    
611     <h4>MESSAGE gnotice</h4>
612 pcg 1.2 NUMERIC TYPE (hex): 0100 SEND<table border="1">
613 pcg 1.1 <tr>
614     <th>NAME</th>
615     <th>TYPE</th>
616     <th>DEFAULT</th>
617 pcg 1.3 <th>DEC-GUARD</th>
618 pcg 1.1 </tr>
619     <tr>
620     <td colspan="4">
621     Send a global message. Maybe. Never tried, for obvious reasons :/
622     </td>
623     </tr>
624     <tr>
625     <td>notice</td>
626     <td>STRING</td>
627     <td></td>
628 pcg 1.3 <td>
629 pcg 1.4 <b></b> </td>
630 pcg 1.1 </tr>
631     <tr>
632     <td colspan="4">
633     </td>
634     </tr>
635     </table>
636    
637     <h4>MESSAGE list_rooms</h4>
638 pcg 1.2 NUMERIC TYPE (hex): 0318 SEND<table border="1">
639 pcg 1.1 <tr>
640     <th>NAME</th>
641     <th>TYPE</th>
642     <th>DEFAULT</th>
643 pcg 1.3 <th>DEC-GUARD</th>
644 pcg 1.1 </tr>
645     <tr>
646     <td colspan="4">
647 pcg 1.9 List the rooms in a specific group/category. Results in a upd_rooms message.
648 pcg 1.1 </td>
649     </tr>
650     <tr>
651     <td>group</td>
652 pcg 1.3 <td>U8</td>
653 pcg 1.1 <td></td>
654 pcg 1.3 <td>
655 pcg 1.4 <b></b> </td>
656 pcg 1.1 </tr>
657     <tr>
658     <td colspan="4">
659     </td>
660     </tr>
661     </table>
662    
663     <h4>MESSAGE new_room</h4>
664 pcg 1.2 NUMERIC TYPE (hex): 031a SEND<table border="1">
665 pcg 1.1 <tr>
666     <th>NAME</th>
667     <th>TYPE</th>
668     <th>DEFAULT</th>
669 pcg 1.3 <th>DEC-GUARD</th>
670 pcg 1.1 </tr>
671     <tr>
672     <td colspan="4">
673     Create a new room. Not verified.
674     </td>
675     </tr>
676     <tr>
677     <td>name</td>
678 pcg 1.3 <td>username</td>
679 pcg 1.1 <td></td>
680 pcg 1.3 <td>
681 pcg 1.4 <b></b> </td>
682 pcg 1.1 </tr>
683     <tr>
684     <td colspan="4">
685     </td>
686     </tr>
687     <tr>
688     <td>i1</td>
689 pcg 1.3 <td>U32</td>
690 pcg 1.1 <td>0</td>
691 pcg 1.3 <td>
692 pcg 1.4 <b></b> </td>
693 pcg 1.1 </tr>
694     <tr>
695     <td colspan="4">
696     </td>
697     </tr>
698     <tr>
699     <td>b1</td>
700 pcg 1.3 <td>U8</td>
701 pcg 1.1 <td>0</td>
702 pcg 1.3 <td>
703 pcg 1.4 <b></b> </td>
704 pcg 1.1 </tr>
705     <tr>
706     <td colspan="4">
707     </td>
708     </tr>
709     <tr>
710     <td>b2</td>
711 pcg 1.3 <td>U8</td>
712 pcg 1.1 <td>255</td>
713 pcg 1.3 <td>
714 pcg 1.4 <b></b> </td>
715 pcg 1.1 </tr>
716     <tr>
717     <td colspan="4">
718     </td>
719     </tr>
720     <tr>
721     <td>b3</td>
722 pcg 1.3 <td>U8</td>
723 pcg 1.1 <td>255</td>
724 pcg 1.3 <td>
725 pcg 1.4 <b></b> </td>
726 pcg 1.1 </tr>
727     <tr>
728     <td colspan="4">
729     </td>
730     </tr>
731     <tr>
732     <td>group</td>
733 pcg 1.3 <td>U8</td>
734 pcg 1.1 <td>1</td>
735 pcg 1.3 <td>
736 pcg 1.4 <b></b> </td>
737 pcg 1.1 </tr>
738     <tr>
739     <td colspan="4">
740     </td>
741     </tr>
742     <tr>
743     <td>name</td>
744     <td>STRING</td>
745     <td></td>
746 pcg 1.3 <td>
747 pcg 1.4 <b></b> </td>
748 pcg 1.1 </tr>
749     <tr>
750     <td colspan="4">
751     </td>
752     </tr>
753     <tr>
754     <td>description</td>
755     <td>STRING</td>
756     <td></td>
757 pcg 1.3 <td>
758 pcg 1.4 <b></b> </td>
759 pcg 1.1 </tr>
760     <tr>
761     <td colspan="4">
762     </td>
763     </tr>
764     <tr>
765     <td>flags</td>
766 pcg 1.3 <td>U8</td>
767 pcg 1.1 <td></td>
768 pcg 1.3 <td>
769 pcg 1.4 <b></b> </td>
770 pcg 1.1 </tr>
771     <tr>
772     <td colspan="4">
773     0x10 .. private room etc.. see code
774     </td>
775     </tr>
776     </table>
777    
778 pcg 1.14 <h4>MESSAGE game_record</h4>
779     NUMERIC TYPE (hex): 0413 SEND<table border="1">
780     <tr>
781     <th>NAME</th>
782     <th>TYPE</th>
783     <th>DEFAULT</th>
784     <th>DEC-GUARD</th>
785     </tr>
786     <tr>
787     <td colspan="4">
788     Requests part of the users game record to be sent (game_record reply).
789     </td>
790     </tr>
791     <tr>
792     <td>name</td>
793     <td>username</td>
794     <td></td>
795     <td>
796     <b></b> </td>
797     </tr>
798     <tr>
799     <td colspan="4">
800     </td>
801     </tr>
802     <tr>
803     <td>timestamp</td>
804     <td>timestamp</td>
805     <td></td>
806     <td>
807     <b></b> </td>
808     </tr>
809     <tr>
810     <td colspan="4">
811     If zero, start at the newest games, else only send games
812     before the given timestap.
813     </td>
814     </tr>
815     </table>
816    
817 pcg 1.1 <h4>MESSAGE join_room</h4>
818     NUMERIC TYPE (hex): 4300 SEND<table border="1">
819     <tr>
820     <th>NAME</th>
821     <th>TYPE</th>
822     <th>DEFAULT</th>
823 pcg 1.3 <th>DEC-GUARD</th>
824 pcg 1.1 </tr>
825     <tr>
826     <td colspan="4">
827 pcg 1.9 Joins the given room. join_room messages for yourself
828     and all users in that room, as well as the initial gamelist, are
829     send if the room exists. If not, timeout...
830 pcg 1.1 </td>
831     </tr>
832     <tr>
833     <td>channel</td>
834 pcg 1.3 <td>U16</td>
835 pcg 1.1 <td></td>
836 pcg 1.3 <td>
837 pcg 1.4 <b></b> </td>
838 pcg 1.1 </tr>
839     <tr>
840     <td colspan="4">
841     </td>
842     </tr>
843     <tr>
844     <td>user</td>
845     <td>user</td>
846     <td></td>
847 pcg 1.3 <td>
848 pcg 1.4 <b></b> </td>
849 pcg 1.1 </tr>
850     <tr>
851     <td colspan="4">
852     </td>
853     </tr>
854     </table>
855    
856     <h4>MESSAGE msg_room</h4>
857     NUMERIC TYPE (hex): 4301 SEND<table border="1">
858     <tr>
859     <th>NAME</th>
860     <th>TYPE</th>
861     <th>DEFAULT</th>
862 pcg 1.3 <th>DEC-GUARD</th>
863 pcg 1.1 </tr>
864     <tr>
865     <td colspan="4">
866 pcg 1.9 Send a message to the room.
867 pcg 1.1 </td>
868     </tr>
869     <tr>
870     <td>channel</td>
871 pcg 1.3 <td>U16</td>
872 pcg 1.1 <td></td>
873 pcg 1.3 <td>
874 pcg 1.4 <b></b> </td>
875 pcg 1.1 </tr>
876     <tr>
877     <td colspan="4">
878     </td>
879     </tr>
880     <tr>
881     <td>name</td>
882 pcg 1.3 <td>username</td>
883 pcg 1.1 <td></td>
884 pcg 1.3 <td>
885 pcg 1.4 <b></b> </td>
886 pcg 1.1 </tr>
887     <tr>
888     <td colspan="4">
889 pcg 1.9 Must be the login-name of the user.
890 pcg 1.1 </td>
891     </tr>
892     <tr>
893     <td>message</td>
894     <td>STRING</td>
895     <td></td>
896 pcg 1.3 <td>
897 pcg 1.4 <b></b> </td>
898 pcg 1.1 </tr>
899     <tr>
900     <td colspan="4">
901     </td>
902     </tr>
903     </table>
904    
905     <h4>MESSAGE part_room</h4>
906     NUMERIC TYPE (hex): 4302 SEND<table border="1">
907     <tr>
908     <th>NAME</th>
909     <th>TYPE</th>
910     <th>DEFAULT</th>
911 pcg 1.3 <th>DEC-GUARD</th>
912 pcg 1.1 </tr>
913     <tr>
914     <td colspan="4">
915 pcg 1.9 Remove yourself (or maybe others as admin) from a room.
916 pcg 1.1 </td>
917     </tr>
918     <tr>
919     <td>channel</td>
920 pcg 1.3 <td>U16</td>
921 pcg 1.1 <td></td>
922 pcg 1.3 <td>
923 pcg 1.4 <b></b> </td>
924 pcg 1.1 </tr>
925     <tr>
926     <td colspan="4">
927     </td>
928     </tr>
929     <tr>
930     <td>name</td>
931 pcg 1.3 <td>username</td>
932 pcg 1.1 <td></td>
933 pcg 1.3 <td>
934 pcg 1.4 <b></b> </td>
935 pcg 1.1 </tr>
936     <tr>
937     <td colspan="4">
938     </td>
939     </tr>
940     </table>
941    
942     <h4>MESSAGE new_game</h4>
943     NUMERIC TYPE (hex): 4305 SEND<table border="1">
944     <tr>
945     <th>NAME</th>
946     <th>TYPE</th>
947     <th>DEFAULT</th>
948 pcg 1.3 <th>DEC-GUARD</th>
949 pcg 1.1 </tr>
950     <tr>
951     <td colspan="4">
952 pcg 1.9 Unclear.
953 pcg 1.1 </td>
954     </tr>
955     <tr>
956     <td>channel</td>
957 pcg 1.3 <td>U16</td>
958 pcg 1.1 <td></td>
959 pcg 1.3 <td>
960 pcg 1.4 <b></b> </td>
961 pcg 1.1 </tr>
962     <tr>
963     <td colspan="4">
964     </td>
965     </tr>
966     <tr>
967     <td>id</td>
968 pcg 1.3 <td>U16</td>
969 pcg 1.1 <td></td>
970 pcg 1.3 <td>
971 pcg 1.4 <b></b> </td>
972 pcg 1.1 </tr>
973     <tr>
974     <td colspan="4">
975     </td>
976     </tr>
977     <tr>
978     <td>gametype</td>
979 pcg 1.3 <td>U32</td>
980 pcg 1.1 <td></td>
981 pcg 1.3 <td>
982 pcg 1.4 <b></b> </td>
983 pcg 1.1 </tr>
984     <tr>
985     <td colspan="4">
986     </td>
987     </tr>
988     <tr>
989     <td>rules</td>
990     <td>rules</td>
991     <td></td>
992 pcg 1.3 <td>
993 pcg 1.4 <b></b> </td>
994 pcg 1.1 </tr>
995     <tr>
996     <td colspan="4">
997     </td>
998     </tr>
999     <tr>
1000     <td>notes</td>
1001     <td>STRING</td>
1002     <td></td>
1003 pcg 1.3 <td>
1004 pcg 1.4 <b></b> </td>
1005 pcg 1.1 </tr>
1006     <tr>
1007     <td colspan="4">
1008     </td>
1009     </tr>
1010     </table>
1011    
1012     <h4>MESSAGE req_games</h4>
1013     NUMERIC TYPE (hex): 430b SEND<table border="1">
1014     <tr>
1015     <th>NAME</th>
1016     <th>TYPE</th>
1017     <th>DEFAULT</th>
1018 pcg 1.3 <th>DEC-GUARD</th>
1019 pcg 1.1 </tr>
1020     <tr>
1021     <td colspan="4">
1022 pcg 1.9 Request to update room game list (send this once per minute to get
1023     updated). Results in upd_games messages.
1024 pcg 1.1 </td>
1025     </tr>
1026     <tr>
1027     <td>channel</td>
1028 pcg 1.3 <td>U16</td>
1029 pcg 1.1 <td></td>
1030 pcg 1.3 <td>
1031 pcg 1.4 <b></b> </td>
1032 pcg 1.1 </tr>
1033     <tr>
1034     <td colspan="4">
1035     </td>
1036     </tr>
1037     </table>
1038    
1039     <h4>MESSAGE req_desc</h4>
1040     NUMERIC TYPE (hex): 4319 SEND<table border="1">
1041     <tr>
1042     <th>NAME</th>
1043     <th>TYPE</th>
1044     <th>DEFAULT</th>
1045 pcg 1.3 <th>DEC-GUARD</th>
1046 pcg 1.1 </tr>
1047     <tr>
1048     <td colspan="4">
1049     Request room description.
1050     </td>
1051     </tr>
1052     <tr>
1053     <td>channel</td>
1054 pcg 1.3 <td>U16</td>
1055 pcg 1.1 <td></td>
1056 pcg 1.3 <td>
1057 pcg 1.4 <b></b> </td>
1058 pcg 1.1 </tr>
1059     <tr>
1060     <td colspan="4">
1061     </td>
1062     </tr>
1063     </table>
1064    
1065     <h4>MESSAGE send_chal</h4>
1066     NUMERIC TYPE (hex): 4400 SEND<table border="1">
1067     <tr>
1068     <th>NAME</th>
1069     <th>TYPE</th>
1070     <th>DEFAULT</th>
1071 pcg 1.3 <th>DEC-GUARD</th>
1072 pcg 1.1 </tr>
1073     <tr>
1074     <td colspan="4">
1075 pcg 1.9 Unclear.
1076 pcg 1.1 </td>
1077     </tr>
1078     <tr>
1079     <td>channel</td>
1080 pcg 1.3 <td>U16</td>
1081 pcg 1.1 <td></td>
1082 pcg 1.3 <td>
1083 pcg 1.4 <b></b> </td>
1084 pcg 1.1 </tr>
1085     <tr>
1086     <td colspan="4">
1087     </td>
1088     </tr>
1089     <tr>
1090     <td>black</td>
1091 pcg 1.3 <td>username</td>
1092 pcg 1.1 <td></td>
1093 pcg 1.3 <td>
1094 pcg 1.4 <b></b> </td>
1095 pcg 1.1 </tr>
1096     <tr>
1097     <td colspan="4">
1098     </td>
1099     </tr>
1100     <tr>
1101     <td>white</td>
1102 pcg 1.3 <td>username</td>
1103 pcg 1.1 <td></td>
1104 pcg 1.3 <td>
1105 pcg 1.4 <b></b> </td>
1106 pcg 1.1 </tr>
1107     <tr>
1108     <td colspan="4">
1109     More following... TREE or challenge.
1110     </td>
1111     </tr>
1112     </table>
1113    
1114     <h4>MESSAGE join_game</h4>
1115     NUMERIC TYPE (hex): 4403 SEND<table border="1">
1116     <tr>
1117     <th>NAME</th>
1118     <th>TYPE</th>
1119     <th>DEFAULT</th>
1120 pcg 1.3 <th>DEC-GUARD</th>
1121 pcg 1.1 </tr>
1122     <tr>
1123     <td colspan="4">
1124 pcg 1.9 Join a game. See join_room.
1125 pcg 1.1 </td>
1126     </tr>
1127     <tr>
1128 pcg 1.5 <td>channel</td>
1129     <td>U16</td>
1130 pcg 1.1 <td></td>
1131 pcg 1.3 <td>
1132 pcg 1.4 <b></b> </td>
1133 pcg 1.1 </tr>
1134     <tr>
1135     <td colspan="4">
1136     </td>
1137     </tr>
1138     <tr>
1139 pcg 1.5 <td>user</td>
1140     <td>user</td>
1141 pcg 1.1 <td></td>
1142 pcg 1.3 <td>
1143 pcg 1.4 <b></b> </td>
1144 pcg 1.1 </tr>
1145     <tr>
1146     <td colspan="4">
1147     </td>
1148     </tr>
1149     </table>
1150    
1151     <h4>MESSAGE part_game</h4>
1152     NUMERIC TYPE (hex): 4404 SEND<table border="1">
1153     <tr>
1154     <th>NAME</th>
1155     <th>TYPE</th>
1156     <th>DEFAULT</th>
1157 pcg 1.3 <th>DEC-GUARD</th>
1158 pcg 1.1 </tr>
1159     <tr>
1160     <td colspan="4">
1161 pcg 1.9 Leave (or kick as admin?) a certain user from a game.
1162 pcg 1.1 </td>
1163     </tr>
1164     <tr>
1165     <td>channel</td>
1166 pcg 1.3 <td>U16</td>
1167 pcg 1.1 <td></td>
1168 pcg 1.3 <td>
1169 pcg 1.4 <b></b> </td>
1170 pcg 1.1 </tr>
1171     <tr>
1172     <td colspan="4">
1173     </td>
1174     </tr>
1175     <tr>
1176     <td>name</td>
1177 pcg 1.3 <td>username</td>
1178 pcg 1.1 <td></td>
1179 pcg 1.3 <td>
1180 pcg 1.4 <b></b> </td>
1181 pcg 1.1 </tr>
1182     <tr>
1183     <td colspan="4">
1184     </td>
1185     </tr>
1186     </table>
1187    
1188     <h4>MESSAGE set_tree</h4>
1189     NUMERIC TYPE (hex): 4405 SEND<table border="1">
1190     <tr>
1191     <th>NAME</th>
1192     <th>TYPE</th>
1193     <th>DEFAULT</th>
1194 pcg 1.3 <th>DEC-GUARD</th>
1195 pcg 1.1 </tr>
1196     <tr>
1197     <td colspan="4">
1198 pcg 1.9 Upload a partial game tree to the server. This is used
1199     to send moves and even in-game comments to the server. For the comments,
1200     the server prepends the username and rank.
1201 pcg 1.1 </td>
1202     </tr>
1203     <tr>
1204     <td>channel</td>
1205 pcg 1.3 <td>U16</td>
1206 pcg 1.1 <td></td>
1207 pcg 1.3 <td>
1208 pcg 1.4 <b></b> </td>
1209 pcg 1.1 </tr>
1210     <tr>
1211     <td colspan="4">
1212     </td>
1213     </tr>
1214     <tr>
1215     <td>tree</td>
1216     <td>TREE</td>
1217     <td></td>
1218 pcg 1.3 <td>
1219 pcg 1.4 <b></b> </td>
1220 pcg 1.1 </tr>
1221     <tr>
1222     <td colspan="4">
1223     </td>
1224     </tr>
1225     </table>
1226    
1227     <h4>MESSAGE get_tree</h4>
1228     NUMERIC TYPE (hex): 4408 SEND<table border="1">
1229     <tr>
1230     <th>NAME</th>
1231     <th>TYPE</th>
1232     <th>DEFAULT</th>
1233 pcg 1.3 <th>DEC-GUARD</th>
1234 pcg 1.1 </tr>
1235     <tr>
1236     <td colspan="4">
1237 pcg 1.9 Request the game tree starting at a given node. This is used
1238     when the server only sends a partial tree (with end code "more").
1239 pcg 1.1 </td>
1240     </tr>
1241     <tr>
1242     <td>channel</td>
1243 pcg 1.3 <td>U16</td>
1244 pcg 1.1 <td></td>
1245 pcg 1.3 <td>
1246 pcg 1.4 <b></b> </td>
1247 pcg 1.1 </tr>
1248     <tr>
1249     <td colspan="4">
1250     </td>
1251     </tr>
1252     <tr>
1253     <td>node</td>
1254 pcg 1.3 <td>U32</td>
1255 pcg 1.1 <td></td>
1256 pcg 1.3 <td>
1257 pcg 1.4 <b></b> </td>
1258 pcg 1.1 </tr>
1259     <tr>
1260     <td colspan="4">
1261     </td>
1262     </tr>
1263     </table>
1264    
1265     <h4>MESSAGE claim_win</h4>
1266     NUMERIC TYPE (hex): 440c SEND<table border="1">
1267     <tr>
1268     <th>NAME</th>
1269     <th>TYPE</th>
1270     <th>DEFAULT</th>
1271 pcg 1.3 <th>DEC-GUARD</th>
1272 pcg 1.1 </tr>
1273     <tr>
1274     <td colspan="4">
1275 pcg 1.9 Unclear.
1276 pcg 1.1 </td>
1277     </tr>
1278     <tr>
1279     <td>channel</td>
1280 pcg 1.3 <td>U16</td>
1281 pcg 1.1 <td></td>
1282 pcg 1.3 <td>
1283 pcg 1.4 <b></b> </td>
1284 pcg 1.1 </tr>
1285     <tr>
1286     <td colspan="4">
1287     </td>
1288     </tr>
1289     <tr>
1290     <td>_byte</td>
1291 pcg 1.3 <td>U8 </td>
1292 pcg 1.1 <td></td>
1293 pcg 1.3 <td>
1294 pcg 1.4 <b></b> </td>
1295 pcg 1.1 </tr>
1296     <tr>
1297     <td colspan="4">
1298     Player colour maybe? Unclear.
1299     </td>
1300     </tr>
1301     </table>
1302    
1303     <h4>MESSAGE add_time</h4>
1304     NUMERIC TYPE (hex): 440d SEND<table border="1">
1305     <tr>
1306     <th>NAME</th>
1307     <th>TYPE</th>
1308     <th>DEFAULT</th>
1309 pcg 1.3 <th>DEC-GUARD</th>
1310 pcg 1.1 </tr>
1311     <tr>
1312     <td colspan="4">
1313 pcg 1.9 Not checked.
1314    
1315 pcg 1.1 </td>
1316     </tr>
1317     <tr>
1318     <td>channel</td>
1319 pcg 1.3 <td>U16</td>
1320 pcg 1.1 <td></td>
1321 pcg 1.3 <td>
1322 pcg 1.4 <b></b> </td>
1323 pcg 1.1 </tr>
1324     <tr>
1325     <td colspan="4">
1326     </td>
1327     </tr>
1328     <tr>
1329     <td>time</td>
1330 pcg 1.3 <td>U32</td>
1331 pcg 1.1 <td></td>
1332 pcg 1.3 <td>
1333 pcg 1.4 <b></b> </td>
1334 pcg 1.1 </tr>
1335     <tr>
1336     <td colspan="4">
1337     </td>
1338     </tr>
1339     <tr>
1340     <td>player</td>
1341 pcg 1.3 <td>U8</td>
1342 pcg 1.1 <td></td>
1343 pcg 1.3 <td>
1344 pcg 1.4 <b></b> </td>
1345 pcg 1.1 </tr>
1346     <tr>
1347     <td colspan="4">
1348     </td>
1349     </tr>
1350     </table>
1351    
1352     <h4>MESSAGE grant_undo</h4>
1353     NUMERIC TYPE (hex): 440f SEND<table border="1">
1354     <tr>
1355     <th>NAME</th>
1356     <th>TYPE</th>
1357     <th>DEFAULT</th>
1358 pcg 1.3 <th>DEC-GUARD</th>
1359 pcg 1.1 </tr>
1360     <tr>
1361     <td colspan="4">
1362 pcg 1.9 Can be send after a req_undo message was received to grant the undo.
1363 pcg 1.1 </td>
1364     </tr>
1365     <tr>
1366     <td>channel</td>
1367 pcg 1.3 <td>U16</td>
1368 pcg 1.1 <td></td>
1369 pcg 1.3 <td>
1370 pcg 1.4 <b></b> </td>
1371 pcg 1.1 </tr>
1372     <tr>
1373     <td colspan="4">
1374     </td>
1375     </tr>
1376     </table>
1377    
1378     <h4>MESSAGE resign_game</h4>
1379     NUMERIC TYPE (hex): 4410 SEND<table border="1">
1380     <tr>
1381     <th>NAME</th>
1382     <th>TYPE</th>
1383     <th>DEFAULT</th>
1384 pcg 1.3 <th>DEC-GUARD</th>
1385 pcg 1.1 </tr>
1386     <tr>
1387     <td colspan="4">
1388 pcg 1.9 Resign the game.
1389 pcg 1.1 </td>
1390     </tr>
1391     <tr>
1392     <td>channel</td>
1393 pcg 1.3 <td>U16</td>
1394 pcg 1.1 <td></td>
1395 pcg 1.3 <td>
1396 pcg 1.4 <b></b> </td>
1397 pcg 1.1 </tr>
1398     <tr>
1399     <td colspan="4">
1400     </td>
1401     </tr>
1402     <tr>
1403     <td>player</td>
1404 pcg 1.3 <td>U8</td>
1405 pcg 1.1 <td></td>
1406 pcg 1.3 <td>
1407 pcg 1.4 <b></b> </td>
1408 pcg 1.1 </tr>
1409     <tr>
1410     <td colspan="4">
1411     </td>
1412     </tr>
1413     </table>
1414    
1415     <h4>MESSAGE set_teacher</h4>
1416     NUMERIC TYPE (hex): 441a SEND<table border="1">
1417     <tr>
1418     <th>NAME</th>
1419     <th>TYPE</th>
1420     <th>DEFAULT</th>
1421 pcg 1.3 <th>DEC-GUARD</th>
1422 pcg 1.1 </tr>
1423     <tr>
1424     <td colspan="4">
1425 pcg 1.9 Change the teacher to somebody else (or possibly yourself == take it).
1426 pcg 1.1 </td>
1427     </tr>
1428     <tr>
1429     <td>channel</td>
1430 pcg 1.3 <td>U16</td>
1431 pcg 1.1 <td></td>
1432 pcg 1.3 <td>
1433 pcg 1.4 <b></b> </td>
1434 pcg 1.1 </tr>
1435     <tr>
1436     <td colspan="4">
1437     </td>
1438     </tr>
1439     <tr>
1440     <td>name</td>
1441 pcg 1.3 <td>username</td>
1442 pcg 1.1 <td></td>
1443 pcg 1.3 <td>
1444 pcg 1.4 <b></b> </td>
1445 pcg 1.1 </tr>
1446     <tr>
1447     <td colspan="4">
1448     </td>
1449     </tr>
1450     </table>
1451    
1452     <h4>MESSAGE add_user</h4>
1453     NUMERIC TYPE (hex): 4422 SEND<table border="1">
1454     <tr>
1455     <th>NAME</th>
1456     <th>TYPE</th>
1457     <th>DEFAULT</th>
1458 pcg 1.3 <th>DEC-GUARD</th>
1459 pcg 1.1 </tr>
1460     <tr>
1461     <td colspan="4">
1462 pcg 1.9 Unclear. Maybe allow users to talk? No idea, really.
1463    
1464 pcg 1.1 </td>
1465     </tr>
1466     <tr>
1467     <td>channel</td>
1468 pcg 1.3 <td>U16</td>
1469 pcg 1.1 <td></td>
1470 pcg 1.3 <td>
1471 pcg 1.4 <b></b> </td>
1472 pcg 1.1 </tr>
1473     <tr>
1474     <td colspan="4">
1475     </td>
1476     </tr>
1477     <tr>
1478     <td>othername</td>
1479 pcg 1.3 <td>username</td>
1480 pcg 1.1 <td></td>
1481 pcg 1.3 <td>
1482 pcg 1.4 <b></b> </td>
1483 pcg 1.1 </tr>
1484     <tr>
1485     <td colspan="4">
1486     </td>
1487     </tr>
1488     <tr>
1489     <td>name</td>
1490 pcg 1.3 <td>username</td>
1491 pcg 1.1 <td></td>
1492 pcg 1.3 <td>
1493 pcg 1.4 <b></b> </td>
1494 pcg 1.1 </tr>
1495     <tr>
1496     <td colspan="4">; # gives user access to the game (to what? ;)
1497     </td>
1498     </tr>
1499     </table>
1500    
1501     <h4>MESSAGE set_privacy</h4>
1502     NUMERIC TYPE (hex): 4423 SEND<table border="1">
1503     <tr>
1504     <th>NAME</th>
1505     <th>TYPE</th>
1506     <th>DEFAULT</th>
1507 pcg 1.3 <th>DEC-GUARD</th>
1508 pcg 1.1 </tr>
1509     <tr>
1510     <td colspan="4">
1511 pcg 1.9 Probably sets the "quiet" flag. Not checked.
1512 pcg 1.1 </td>
1513     </tr>
1514     <tr>
1515     <td>channel</td>
1516 pcg 1.3 <td>U16</td>
1517 pcg 1.1 <td></td>
1518 pcg 1.3 <td>
1519 pcg 1.4 <b></b> </td>
1520 pcg 1.1 </tr>
1521     <tr>
1522     <td colspan="4">
1523     </td>
1524     </tr>
1525     <tr>
1526     <td>private</td>
1527 pcg 1.3 <td>U8</td>
1528 pcg 1.1 <td></td>
1529 pcg 1.3 <td>
1530 pcg 1.4 <b></b> </td>
1531 pcg 1.1 </tr>
1532     <tr>
1533     <td colspan="4">
1534     </td>
1535     </tr>
1536     </table>
1537    
1538     <h4>MESSAGE reject_chal</h4>
1539     NUMERIC TYPE (hex): 4429 SEND<table border="1">
1540     <tr>
1541     <th>NAME</th>
1542     <th>TYPE</th>
1543     <th>DEFAULT</th>
1544 pcg 1.3 <th>DEC-GUARD</th>
1545 pcg 1.1 </tr>
1546     <tr>
1547     <td colspan="4">
1548 pcg 1.9 Reject a challenge from a given user. Not checked.
1549    
1550 pcg 1.1 </td>
1551     </tr>
1552     <tr>
1553     <td>channel</td>
1554 pcg 1.3 <td>U16</td>
1555 pcg 1.1 <td></td>
1556 pcg 1.3 <td>
1557 pcg 1.4 <b></b> </td>
1558 pcg 1.1 </tr>
1559     <tr>
1560     <td colspan="4">
1561     </td>
1562     </tr>
1563     <tr>
1564     <td>name</td>
1565 pcg 1.3 <td>username</td>
1566 pcg 1.1 <td></td>
1567 pcg 1.3 <td>
1568 pcg 1.4 <b></b> </td>
1569 pcg 1.1 </tr>
1570     <tr>
1571     <td colspan="4">
1572     </td>
1573     </tr>
1574     </table>
1575    
1576     <h4>MESSAGE req_result</h4>
1577     NUMERIC TYPE (hex): 4433 SEND<table border="1">
1578     <tr>
1579     <th>NAME</th>
1580     <th>TYPE</th>
1581     <th>DEFAULT</th>
1582 pcg 1.3 <th>DEC-GUARD</th>
1583 pcg 1.1 </tr>
1584     <tr>
1585     <td colspan="4">
1586 pcg 1.9 I forgot.
1587    
1588 pcg 1.1 </td>
1589     </tr>
1590     <tr>
1591     <td>channel</td>
1592 pcg 1.3 <td>U16</td>
1593 pcg 1.1 <td></td>
1594 pcg 1.3 <td>
1595 pcg 1.4 <b></b> </td>
1596 pcg 1.1 </tr>
1597     <tr>
1598     <td colspan="4">
1599     </td>
1600     </tr>
1601     </table>
1602    
1603 pcg 1.3 <h2>Structs mainly used in receive messages</h2>
1604 pcg 1.1
1605 pcg 1.3 <h4>STRUCTURE challenge_defaults</h4>
1606 pcg 1.1 <table border="1">
1607     <tr>
1608     <th>NAME</th>
1609     <th>TYPE</th>
1610     <th>DEFAULT</th>
1611 pcg 1.3 <th>DEC-GUARD</th>
1612 pcg 1.1 </tr>
1613     <tr>
1614     <td colspan="4">
1615 pcg 1.9 Send soon after log-in to set the defaults for game challenges.
1616 pcg 1.1 </td>
1617     </tr>
1618     <tr>
1619     <td>gametype</td>
1620 pcg 1.3 <td>U32</td>
1621 pcg 1.1 <td></td>
1622 pcg 1.3 <td>
1623 pcg 1.4 <b></b> </td>
1624 pcg 1.1 </tr>
1625     <tr>
1626     <td colspan="4">
1627     </td>
1628     </tr>
1629     <tr>
1630     <td>size</td>
1631 pcg 1.3 <td>U32</td>
1632 pcg 1.1 <td></td>
1633 pcg 1.3 <td>
1634 pcg 1.4 <b></b> </td>
1635 pcg 1.1 </tr>
1636     <tr>
1637     <td colspan="4">
1638     </td>
1639     </tr>
1640     <tr>
1641     <td>timesys</td>
1642 pcg 1.3 <td>U32</td>
1643 pcg 1.1 <td></td>
1644 pcg 1.3 <td>
1645 pcg 1.4 <b></b> </td>
1646 pcg 1.1 </tr>
1647     <tr>
1648     <td colspan="4">
1649     </td>
1650     </tr>
1651     <tr>
1652     <td>time</td>
1653 pcg 1.3 <td>U32</td>
1654 pcg 1.1 <td></td>
1655 pcg 1.3 <td>
1656 pcg 1.4 <b></b> </td>
1657 pcg 1.1 </tr>
1658     <tr>
1659     <td colspan="4">
1660     </td>
1661     </tr>
1662     <tr>
1663     <td>byo_time</td>
1664 pcg 1.3 <td>U32</td>
1665 pcg 1.1 <td></td>
1666 pcg 1.3 <td>
1667 pcg 1.4 <b></b> </td>
1668 pcg 1.1 </tr>
1669     <tr>
1670     <td colspan="4">
1671     </td>
1672     </tr>
1673     <tr>
1674     <td>byo_periods</td>
1675 pcg 1.3 <td>U32</td>
1676 pcg 1.1 <td></td>
1677 pcg 1.3 <td>
1678 pcg 1.4 <b></b> </td>
1679 pcg 1.1 </tr>
1680     <tr>
1681     <td colspan="4">
1682     </td>
1683     </tr>
1684     <tr>
1685     <td>can_time</td>
1686 pcg 1.3 <td>U32</td>
1687 pcg 1.1 <td></td>
1688 pcg 1.3 <td>
1689 pcg 1.4 <b></b> </td>
1690 pcg 1.1 </tr>
1691     <tr>
1692     <td colspan="4">
1693     </td>
1694     </tr>
1695     <tr>
1696     <td>can_stones</td>
1697 pcg 1.3 <td>U32</td>
1698 pcg 1.1 <td></td>
1699 pcg 1.3 <td>
1700 pcg 1.4 <b></b> </td>
1701 pcg 1.1 </tr>
1702     <tr>
1703 pcg 1.3 <td colspan="4">
1704 pcg 1.1 </td>
1705     </tr>
1706     </table>
1707    
1708 pcg 1.3 <h4>STRUCTURE challenge</h4>
1709     CLASS: KGS::Challenge<br />
1710 pcg 1.1 <table border="1">
1711     <tr>
1712     <th>NAME</th>
1713     <th>TYPE</th>
1714     <th>DEFAULT</th>
1715 pcg 1.3 <th>DEC-GUARD</th>
1716 pcg 1.1 </tr>
1717     <tr>
1718     <td colspan="4">
1719 pcg 1.9 A challenge.
1720    
1721 pcg 1.1 </td>
1722     </tr>
1723     <tr>
1724     <td>user1</td>
1725     <td>user</td>
1726     <td></td>
1727 pcg 1.3 <td>
1728 pcg 1.4 <b></b> </td>
1729 pcg 1.1 </tr>
1730     <tr>
1731     <td colspan="4">
1732     </td>
1733     </tr>
1734     <tr>
1735     <td>user2</td>
1736     <td>user</td>
1737     <td></td>
1738 pcg 1.3 <td>
1739 pcg 1.4 <b></b> </td>
1740 pcg 1.1 </tr>
1741     <tr>
1742     <td colspan="4">
1743     </td>
1744     </tr>
1745     <tr>
1746     <td>gametype</td>
1747 pcg 1.3 <td>U32</td>
1748 pcg 1.1 <td></td>
1749 pcg 1.3 <td>
1750 pcg 1.4 <b></b> </td>
1751 pcg 1.1 </tr>
1752     <tr>
1753     <td colspan="4">
1754     </td>
1755     </tr>
1756     <tr>
1757     <td>rules</td>
1758     <td>rules</td>
1759     <td></td>
1760 pcg 1.3 <td>
1761 pcg 1.4 <b></b> </td>
1762 pcg 1.1 </tr>
1763     <tr>
1764     <td colspan="4">
1765     Maybe the rules" are in TREE format. I forgot.
1766     </td>
1767     </tr>
1768     </table>
1769    
1770 pcg 1.3 <h4>STRUCTURE game</h4>
1771     CLASS: KGS::Game<br />
1772 pcg 1.1 <table border="1">
1773     <tr>
1774     <th>NAME</th>
1775     <th>TYPE</th>
1776     <th>DEFAULT</th>
1777 pcg 1.3 <th>DEC-GUARD</th>
1778 pcg 1.1 </tr>
1779     <tr>
1780     <td colspan="4">
1781 pcg 1.9 Basic information about a game. Used in rooms for the gamelist and
1782     in games to detect when a game is saved, changed type (e.g. R =&gt; D)
1783     etc.
1784    
1785 pcg 1.1 </td>
1786     </tr>
1787     <tr>
1788     <td>channel</td>
1789 pcg 1.3 <td>U16</td>
1790 pcg 1.1 <td></td>
1791 pcg 1.3 <td>
1792 pcg 1.4 <b></b> </td>
1793 pcg 1.1 </tr>
1794     <tr>
1795     <td colspan="4">
1796     </td>
1797     </tr>
1798     <tr>
1799 pcg 1.3 <td>type</td>
1800     <td>U32</td>
1801 pcg 1.1 <td></td>
1802 pcg 1.3 <td>
1803 pcg 1.4 <b></b> </td>
1804 pcg 1.1 </tr>
1805     <tr>
1806     <td colspan="4">
1807     </td>
1808     </tr>
1809     <tr>
1810     <td>user1</td>
1811     <td>user</td>
1812     <td></td>
1813 pcg 1.3 <td>
1814 pcg 1.4 <b></b> </td>
1815 pcg 1.1 </tr>
1816     <tr>
1817     <td colspan="4">
1818     White
1819     </td>
1820     </tr>
1821     <tr>
1822     <td>user2</td>
1823     <td>user</td>
1824     <td></td>
1825 pcg 1.3 <td>
1826 pcg 1.4 <b></b> </td>
1827 pcg 1.1 </tr>
1828     <tr>
1829     <td colspan="4">
1830     Black
1831     </td>
1832     </tr>
1833     <tr>
1834     <td>user3</td>
1835     <td>user</td>
1836     <td></td>
1837 pcg 1.3 <td>
1838 pcg 1.4 <b></b> </td>
1839 pcg 1.1 </tr>
1840     <tr>
1841     <td colspan="4">
1842     Owner
1843     </td>
1844     </tr>
1845     <tr>
1846     <td>size</td>
1847 pcg 1.3 <td>U32</td>
1848 pcg 1.1 <td></td>
1849 pcg 1.3 <td>
1850 pcg 1.4 <b></b> </td>
1851 pcg 1.1 </tr>
1852     <tr>
1853     <td colspan="4">
1854     </td>
1855     </tr>
1856     <tr>
1857     <td>handicap</td>
1858     <td>I32</td>
1859     <td></td>
1860 pcg 1.3 <td>
1861 pcg 1.4 <b></b> </td>
1862 pcg 1.1 </tr>
1863     <tr>
1864     <td colspan="4">
1865     &lt; 0 not fully setup
1866     </td>
1867     </tr>
1868     <tr>
1869     <td>komi</td>
1870 pcg 1.6 <td>komi32</td>
1871 pcg 1.1 <td></td>
1872 pcg 1.3 <td>
1873 pcg 1.4 <b></b> </td>
1874 pcg 1.1 </tr>
1875     <tr>
1876     <td colspan="4">
1877     </td>
1878     </tr>
1879     <tr>
1880     <td>moves</td>
1881 pcg 1.13 <td>I16</td>
1882 pcg 1.1 <td></td>
1883 pcg 1.3 <td>
1884 pcg 1.4 <b></b> </td>
1885 pcg 1.1 </tr>
1886     <tr>
1887     <td colspan="4">
1888 pcg 1.12 This field reflects either the movenum or the score, sorry, not even guards help, as
1889 pcg 1.13 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
1890     score (NOT score16!).
1891 pcg 1.1 </td>
1892     </tr>
1893     <tr>
1894     <td>flags</td>
1895 pcg 1.3 <td>U16</td>
1896 pcg 1.1 <td></td>
1897 pcg 1.3 <td>
1898 pcg 1.4 <b></b> </td>
1899 pcg 1.1 </tr>
1900     <tr>
1901     <td colspan="4">
1902     </td>
1903     </tr>
1904     <tr>
1905     <td>observers</td>
1906 pcg 1.3 <td>U32</td>
1907 pcg 1.1 <td></td>
1908 pcg 1.3 <td>
1909 pcg 1.4 <b></b> </td>
1910 pcg 1.1 </tr>
1911     <tr>
1912     <td colspan="4">
1913     </td>
1914     </tr>
1915     <tr>
1916     <td>saved</td>
1917 pcg 1.3 <td>flag</td>
1918 pcg 1.1 <td></td>
1919 pcg 1.3 <td>
1920 pcg 1.4 <b></b> </td>
1921 pcg 1.1 </tr>
1922     <tr>
1923     <td colspan="4">
1924     </td>
1925     </tr>
1926     <tr>
1927     <td>notes</td>
1928     <td>STRING</td>
1929     <td></td>
1930 pcg 1.3 <td>
1931 pcg 1.4 <b>handicap</b> &lt; 0</td>
1932 pcg 1.1 </tr>
1933     <tr>
1934     <td colspan="4">
1935     </td>
1936     </tr>
1937     </table>
1938    
1939 pcg 1.3 <h4>STRUCTURE room_obs</h4>
1940 pcg 1.1 <table border="1">
1941     <tr>
1942     <th>NAME</th>
1943     <th>TYPE</th>
1944     <th>DEFAULT</th>
1945 pcg 1.3 <th>DEC-GUARD</th>
1946 pcg 1.1 </tr>
1947     <tr>
1948     <td colspan="4">
1949 pcg 1.9 Obsolete.
1950    
1951 pcg 1.1 </td>
1952     </tr>
1953     <tr>
1954     <td>name</td>
1955 pcg 1.3 <td>roomname</td>
1956 pcg 1.1 <td></td>
1957 pcg 1.3 <td>
1958 pcg 1.4 <b></b> </td>
1959 pcg 1.1 </tr>
1960     <tr>
1961     <td colspan="4">
1962     </td>
1963     </tr>
1964     <tr>
1965     <td>channel</td>
1966 pcg 1.3 <td>U16</td>
1967 pcg 1.1 <td></td>
1968 pcg 1.3 <td>
1969 pcg 1.4 <b></b> </td>
1970 pcg 1.1 </tr>
1971     <tr>
1972     <td colspan="4">
1973     </td>
1974     </tr>
1975     <tr>
1976     <td>flags</td>
1977 pcg 1.3 <td>U32</td>
1978 pcg 1.1 <td></td>
1979 pcg 1.3 <td>
1980 pcg 1.4 <b></b> </td>
1981 pcg 1.1 </tr>
1982     <tr>
1983     <td colspan="4">
1984     </td>
1985     </tr>
1986     <tr>
1987     <td>users</td>
1988 pcg 1.3 <td>U32</td>
1989 pcg 1.1 <td></td>
1990 pcg 1.3 <td>
1991 pcg 1.4 <b></b> </td>
1992 pcg 1.1 </tr>
1993     <tr>
1994 pcg 1.4 <td colspan="4">
1995 pcg 1.1 </td>
1996     </tr>
1997     </table>
1998    
1999 pcg 1.3 <h4>STRUCTURE room</h4>
2000     CLASS: KGS::Room<br />
2001 pcg 1.1 <table border="1">
2002     <tr>
2003     <th>NAME</th>
2004     <th>TYPE</th>
2005     <th>DEFAULT</th>
2006 pcg 1.3 <th>DEC-GUARD</th>
2007 pcg 1.1 </tr>
2008     <tr>
2009     <td colspan="4">
2010     </td>
2011     </tr>
2012     <tr>
2013     <td>channel</td>
2014 pcg 1.3 <td>U16</td>
2015 pcg 1.1 <td></td>
2016 pcg 1.3 <td>
2017 pcg 1.4 <b></b> </td>
2018 pcg 1.1 </tr>
2019     <tr>
2020     <td colspan="4">
2021     </td>
2022     </tr>
2023     <tr>
2024     <td>flags</td>
2025 pcg 1.3 <td>U8</td>
2026 pcg 1.1 <td></td>
2027 pcg 1.3 <td>
2028 pcg 1.4 <b></b> </td>
2029 pcg 1.1 </tr>
2030     <tr>
2031     <td colspan="4">
2032     </td>
2033     </tr>
2034     <tr>
2035     <td>group</td>
2036 pcg 1.3 <td>U8</td>
2037 pcg 1.1 <td></td>
2038 pcg 1.3 <td>
2039 pcg 1.4 <b></b> </td>
2040 pcg 1.1 </tr>
2041     <tr>
2042     <td colspan="4">
2043     </td>
2044     </tr>
2045     <tr>
2046     <td>users</td>
2047 pcg 1.3 <td>U16</td>
2048 pcg 1.1 <td></td>
2049 pcg 1.3 <td>
2050 pcg 1.4 <b></b> </td>
2051 pcg 1.1 </tr>
2052     <tr>
2053     <td colspan="4">
2054     </td>
2055     </tr>
2056     <tr>
2057     <td>games</td>
2058 pcg 1.3 <td>U16</td>
2059 pcg 1.1 <td></td>
2060 pcg 1.3 <td>
2061 pcg 1.4 <b></b> </td>
2062 pcg 1.1 </tr>
2063     <tr>
2064     <td colspan="4">
2065     </td>
2066     </tr>
2067     <tr>
2068     <td>name</td>
2069     <td>STRING</td>
2070     <td></td>
2071 pcg 1.3 <td>
2072 pcg 1.4 <b></b> </td>
2073 pcg 1.1 </tr>
2074     <tr>
2075 pcg 1.4 <td colspan="4">
2076 pcg 1.1 </td>
2077     </tr>
2078     </table>
2079    
2080 pcg 1.10 <h4>STRUCTURE scorevalues</h4>
2081 pcg 1.3 CLASS: KGS::Score<br />
2082 pcg 1.1 <table border="1">
2083     <tr>
2084     <th>NAME</th>
2085     <th>TYPE</th>
2086     <th>DEFAULT</th>
2087 pcg 1.3 <th>DEC-GUARD</th>
2088 pcg 1.1 </tr>
2089     <tr>
2090     <td colspan="4">
2091     </td>
2092     </tr>
2093     <tr>
2094     <td>score</td>
2095 pcg 1.11 <td>score32</td>
2096 pcg 1.1 <td></td>
2097 pcg 1.3 <td>
2098 pcg 1.4 <b></b> </td>
2099 pcg 1.1 </tr>
2100     <tr>
2101     <td colspan="4">
2102     </td>
2103     </tr>
2104     <tr>
2105     <td>territory</td>
2106 pcg 1.3 <td>U32</td>
2107 pcg 1.1 <td></td>
2108 pcg 1.3 <td>
2109 pcg 1.4 <b></b> </td>
2110 pcg 1.1 </tr>
2111     <tr>
2112     <td colspan="4">
2113     </td>
2114     </tr>
2115     <tr>
2116     <td>captures</td>
2117 pcg 1.3 <td>U32</td>
2118 pcg 1.1 <td></td>
2119 pcg 1.3 <td>
2120 pcg 1.4 <b></b> </td>
2121 pcg 1.1 </tr>
2122     <tr>
2123     <td colspan="4">
2124     </td>
2125     </tr>
2126     <tr>
2127     <td>i3</td>
2128 pcg 1.3 <td>U32</td>
2129 pcg 1.1 <td></td>
2130 pcg 1.3 <td>
2131 pcg 1.4 <b></b> </td>
2132 pcg 1.1 </tr>
2133     <tr>
2134     <td colspan="4">
2135     </td>
2136     </tr>
2137     <tr>
2138     <td>f2</td>
2139 pcg 1.3 <td>U32</td>
2140 pcg 1.1 <td></td>
2141 pcg 1.3 <td>
2142 pcg 1.4 <b></b> </td>
2143 pcg 1.1 </tr>
2144     <tr>
2145     <td colspan="4">
2146     </td>
2147     </tr>
2148     <tr>
2149     <td>komi</td>
2150 pcg 1.6 <td>komi32</td>
2151 pcg 1.1 <td></td>
2152 pcg 1.3 <td>
2153 pcg 1.4 <b></b> </td>
2154 pcg 1.1 </tr>
2155     <tr>
2156     <td colspan="4">
2157     </td>
2158     </tr>
2159     <tr>
2160     <td>i4</td>
2161 pcg 1.3 <td>U32</td>
2162 pcg 1.1 <td></td>
2163 pcg 1.3 <td>
2164 pcg 1.4 <b></b> </td>
2165 pcg 1.1 </tr>
2166     <tr>
2167 pcg 1.4 <td colspan="4">
2168 pcg 1.3 Apparently the i3, f2, i4 are zero.
2169 pcg 1.1 </td>
2170     </tr>
2171     </table>
2172    
2173 pcg 1.14 <h4>STRUCTURE game_record</h4>
2174     CLASS: KGS::GameRecord<br />
2175     <table border="1">
2176     <tr>
2177     <th>NAME</th>
2178     <th>TYPE</th>
2179     <th>DEFAULT</th>
2180     <th>DEC-GUARD</th>
2181     </tr>
2182     <tr>
2183     <td colspan="4">
2184     A single game record entry, as seen in userinfo etc.
2185    
2186     </td>
2187     </tr>
2188     <tr>
2189     <td>timestamp</td>
2190     <td>timestamp</td>
2191     <td></td>
2192     <td>
2193     <b></b> </td>
2194     </tr>
2195     <tr>
2196     <td colspan="4">
2197     Time this game was played.
2198     </td>
2199     </tr>
2200     <tr>
2201     <td>flags</td>
2202     <td>U8</td>
2203     <td></td>
2204     <td>
2205     <b></b> </td>
2206     </tr>
2207     <tr>
2208     <td colspan="4">
2209     High four bits are handicap, low four bits are gametype (encoded strangely? unclear).
2210     </td>
2211     </tr>
2212     <tr>
2213     <td>user1</td>
2214     <td>user</td>
2215     <td></td>
2216     <td>
2217     <b></b> </td>
2218     </tr>
2219     <tr>
2220     <td colspan="4">
2221     White, flags contain low 8 bits of revision (bits 16-23).
2222     </td>
2223     </tr>
2224     <tr>
2225     <td>user2</td>
2226     <td>user</td>
2227     <td></td>
2228     <td>
2229     <b></b> </td>
2230     </tr>
2231     <tr>
2232     <td colspan="4">
2233     Black, flags contain high 8 bits of revision (bits 16-23).
2234     </td>
2235     </tr>
2236     <tr>
2237     <td>user3</td>
2238     <td>user</td>
2239     <td></td>
2240     <td>
2241     <b></b> </td>
2242     </tr>
2243     <tr>
2244     <td colspan="4">
2245     Owner (or empty)
2246     </td>
2247     </tr>
2248     <tr>
2249     <td>komi</td>
2250     <td>komi16</td>
2251     <td></td>
2252     <td>
2253     <b></b> </td>
2254     </tr>
2255     <tr>
2256     <td colspan="4">
2257     </td>
2258     </tr>
2259     <tr>
2260     <td>score</td>
2261     <td>score16</td>
2262     <td></td>
2263     <td>
2264     <b></b> </td>
2265     </tr>
2266     <tr>
2267     <td colspan="4">
2268     </td>
2269     </tr>
2270     <tr>
2271     <td>status</td>
2272     <td>U8</td>
2273     <td></td>
2274     <td>
2275     <b></b> </td>
2276     </tr>
2277     <tr>
2278     <td colspan="4">
2279     0x80 inprogress
2280     </td>
2281     </tr>
2282     </table>
2283    
2284 pcg 1.1 <h2>Receive messages</h2>
2285    
2286     <h4>MESSAGE login</h4>
2287     NUMERIC TYPE (hex): 0001 RECV<table border="1">
2288     <tr>
2289     <th>NAME</th>
2290     <th>TYPE</th>
2291     <th>DEFAULT</th>
2292 pcg 1.3 <th>DEC-GUARD</th>
2293 pcg 1.1 </tr>
2294     <tr>
2295     <td colspan="4">
2296     </td>
2297     </tr>
2298     <tr>
2299     <td>result</td>
2300     <td>CONSTANT</td>
2301 pcg 1.3 <td>"login ok"</td>
2302     <td>
2303 pcg 1.4 <b></b> </td>
2304 pcg 1.1 </tr>
2305     <tr>
2306     <td colspan="4">
2307     </td>
2308     </tr>
2309     <tr>
2310     <td>success</td>
2311     <td>CONSTANT</td>
2312     <td>1</td>
2313 pcg 1.3 <td>
2314 pcg 1.4 <b></b> </td>
2315 pcg 1.1 </tr>
2316     <tr>
2317     <td colspan="4">
2318     </td>
2319     </tr>
2320     </table>
2321    
2322     <h4>MESSAGE login</h4>
2323     NUMERIC TYPE (hex): 0002 RECV<table border="1">
2324     <tr>
2325     <th>NAME</th>
2326     <th>TYPE</th>
2327     <th>DEFAULT</th>
2328 pcg 1.3 <th>DEC-GUARD</th>
2329 pcg 1.1 </tr>
2330     <tr>
2331     <td colspan="4">
2332     </td>
2333     </tr>
2334     <tr>
2335     <td>result</td>
2336     <td>CONSTANT</td>
2337 pcg 1.3 <td>"guest login ok"</td>
2338     <td>
2339 pcg 1.4 <b></b> </td>
2340 pcg 1.1 </tr>
2341     <tr>
2342     <td colspan="4">
2343     </td>
2344     </tr>
2345     <tr>
2346     <td>success</td>
2347     <td>CONSTANT</td>
2348     <td>1</td>
2349 pcg 1.3 <td>
2350 pcg 1.4 <b></b> </td>
2351 pcg 1.1 </tr>
2352     <tr>
2353     <td colspan="4">
2354     </td>
2355     </tr>
2356     </table>
2357    
2358     <h4>MESSAGE login</h4>
2359     NUMERIC TYPE (hex): 0003 RECV<table border="1">
2360     <tr>
2361     <th>NAME</th>
2362     <th>TYPE</th>
2363     <th>DEFAULT</th>
2364 pcg 1.3 <th>DEC-GUARD</th>
2365 pcg 1.1 </tr>
2366     <tr>
2367     <td colspan="4">
2368     </td>
2369     </tr>
2370     <tr>
2371     <td>result</td>
2372     <td>CONSTANT</td>
2373 pcg 1.3 <td>"login error 3"</td>
2374     <td>
2375 pcg 1.4 <b></b> </td>
2376 pcg 1.1 </tr>
2377     <tr>
2378     <td colspan="4">
2379     ** maybe more following? **
2380     </td>
2381     </tr>
2382     </table>
2383    
2384     <h4>MESSAGE login</h4>
2385     NUMERIC TYPE (hex): 0004 RECV<table border="1">
2386     <tr>
2387     <th>NAME</th>
2388     <th>TYPE</th>
2389     <th>DEFAULT</th>
2390 pcg 1.3 <th>DEC-GUARD</th>
2391 pcg 1.1 </tr>
2392     <tr>
2393     <td colspan="4">
2394     </td>
2395     </tr>
2396     <tr>
2397     <td>result</td>
2398     <td>CONSTANT</td>
2399 pcg 1.3 <td>"wrong password"</td>
2400     <td>
2401 pcg 1.4 <b></b> </td>
2402 pcg 1.1 </tr>
2403     <tr>
2404     <td colspan="4">
2405     ** maybe more following? **
2406     </td>
2407     </tr>
2408     </table>
2409    
2410     <h4>MESSAGE login</h4>
2411     NUMERIC TYPE (hex): 0005 RECV<table border="1">
2412     <tr>
2413     <th>NAME</th>
2414     <th>TYPE</th>
2415     <th>DEFAULT</th>
2416 pcg 1.3 <th>DEC-GUARD</th>
2417 pcg 1.1 </tr>
2418     <tr>
2419     <td colspan="4">
2420     </td>
2421     </tr>
2422     <tr>
2423     <td>result</td>
2424     <td>CONSTANT</td>
2425 pcg 1.3 <td>"user unknown"</td>
2426     <td>
2427 pcg 1.4 <b></b> </td>
2428 pcg 1.1 </tr>
2429     <tr>
2430     <td colspan="4">
2431     ** maybe more following? **
2432     </td>
2433     </tr>
2434     </table>
2435    
2436     <h4>MESSAGE login</h4>
2437     NUMERIC TYPE (hex): 0006 RECV<table border="1">
2438     <tr>
2439     <th>NAME</th>
2440     <th>TYPE</th>
2441     <th>DEFAULT</th>
2442 pcg 1.3 <th>DEC-GUARD</th>
2443 pcg 1.1 </tr>
2444     <tr>
2445     <td colspan="4">
2446     </td>
2447     </tr>
2448     <tr>
2449     <td>result</td>
2450     <td>CONSTANT</td>
2451 pcg 1.3 <td>"user exists"</td>
2452     <td>
2453 pcg 1.4 <b></b> </td>
2454 pcg 1.1 </tr>
2455     <tr>
2456     <td colspan="4">
2457     ** maybe more following? **
2458     </td>
2459     </tr>
2460     </table>
2461    
2462 pcg 1.14 <h4>MESSAGE user_record</h4>
2463     NUMERIC TYPE (hex): 0008 RECV<table border="1">
2464     <tr>
2465     <th>NAME</th>
2466     <th>TYPE</th>
2467     <th>DEFAULT</th>
2468     <th>DEC-GUARD</th>
2469     </tr>
2470     <tr>
2471     <td colspan="4">
2472     User record.
2473     </td>
2474     </tr>
2475     <tr>
2476     <td>user</td>
2477     <td>user</td>
2478     <td></td>
2479     <td>
2480     <b></b> </td>
2481     </tr>
2482     <tr>
2483     <td colspan="4">
2484     </td>
2485     </tr>
2486     <tr>
2487     <td>u64</td>
2488     <td>timestamp</td>
2489     <td></td>
2490     <td>
2491     <b></b> </td>
2492     </tr>
2493     <tr>
2494     <td colspan="4">
2495     Maybe some time.
2496     </td>
2497     </tr>
2498     <tr>
2499     <td>realname</td>
2500     <td>realname</td>
2501     <td></td>
2502     <td>
2503     <b></b> </td>
2504     </tr>
2505     <tr>
2506     <td colspan="4">
2507     </td>
2508     </tr>
2509     <tr>
2510     <td>email</td>
2511     <td>email</td>
2512     <td></td>
2513     <td>
2514     <b></b> </td>
2515     </tr>
2516     <tr>
2517     <td colspan="4">
2518     </td>
2519     </tr>
2520     <tr>
2521     <td>info</td>
2522     <td>userinfo</td>
2523     <td></td>
2524     <td>
2525     <b></b> </td>
2526     </tr>
2527     <tr>
2528     <td colspan="4">
2529     </td>
2530     </tr>
2531     <tr>
2532     <td>homepage</td>
2533     <td>url</td>
2534     <td></td>
2535     <td>
2536     <b></b> </td>
2537     </tr>
2538     <tr>
2539     <td colspan="4">
2540     </td>
2541     </tr>
2542     <tr>
2543     <td>regdate</td>
2544     <td>timestamp</td>
2545     <td></td>
2546     <td>
2547     <b></b> </td>
2548     </tr>
2549     <tr>
2550     <td colspan="4">
2551     When the user registered (0 == never registered).
2552     </td>
2553     </tr>
2554     <tr>
2555     <td>lastlogin</td>
2556     <td>timestamp</td>
2557     <td></td>
2558     <td>
2559     <b></b> </td>
2560     </tr>
2561     <tr>
2562     <td colspan="4">
2563     When the user logged in for the last time.
2564     </td>
2565     </tr>
2566     <tr>
2567     <td colspan="4">
2568     </td>
2569     </tr>
2570     </table>
2571    
2572 pcg 1.1 <h4>MESSAGE login</h4>
2573     NUMERIC TYPE (hex): 0018 RECV<table border="1">
2574     <tr>
2575     <th>NAME</th>
2576     <th>TYPE</th>
2577     <th>DEFAULT</th>
2578 pcg 1.3 <th>DEC-GUARD</th>
2579 pcg 1.1 </tr>
2580     <tr>
2581     <td colspan="4">
2582     </td>
2583     </tr>
2584     <tr>
2585     <td>result</td>
2586     <td>CONSTANT</td>
2587 pcg 1.3 <td>"login error 18"</td>
2588     <td>
2589 pcg 1.4 <b></b> </td>
2590 pcg 1.1 </tr>
2591     <tr>
2592     <td colspan="4">
2593     ** maybe more following? **
2594     </td>
2595     </tr>
2596     </table>
2597    
2598     <h4>MESSAGE login</h4>
2599     NUMERIC TYPE (hex): 0022 RECV<table border="1">
2600     <tr>
2601     <th>NAME</th>
2602     <th>TYPE</th>
2603     <th>DEFAULT</th>
2604 pcg 1.3 <th>DEC-GUARD</th>
2605 pcg 1.1 </tr>
2606     <tr>
2607     <td colspan="4">
2608     </td>
2609     </tr>
2610     <tr>
2611     <td colspan="4">
2612     </td>
2613     </tr>
2614     <tr>
2615     <td>result</td>
2616     <td>CONSTANT</td>
2617 pcg 1.3 <td>"user or ip blocked"</td>
2618     <td>
2619 pcg 1.4 <b></b> </td>
2620 pcg 1.1 </tr>
2621     <tr>
2622     <td colspan="4">
2623     </td>
2624     </tr>
2625     <tr>
2626     <td>reason</td>
2627     <td>STRING</td>
2628     <td></td>
2629 pcg 1.3 <td>
2630 pcg 1.4 <b></b> </td>
2631 pcg 1.1 </tr>
2632     <tr>
2633     <td colspan="4">
2634     </td>
2635     </tr>
2636     </table>
2637    
2638     <h4>MESSAGE msg_chat</h4>
2639     NUMERIC TYPE (hex): 0013 RECV<table border="1">
2640     <tr>
2641     <th>NAME</th>
2642     <th>TYPE</th>
2643     <th>DEFAULT</th>
2644 pcg 1.3 <th>DEC-GUARD</th>
2645 pcg 1.1 </tr>
2646     <tr>
2647     <td colspan="4">
2648     </td>
2649     </tr>
2650     <tr>
2651     <td>user1</td>
2652 pcg 1.3 <td>username</td>
2653 pcg 1.1 <td></td>
2654 pcg 1.3 <td>
2655 pcg 1.4 <b></b> </td>
2656 pcg 1.1 </tr>
2657     <tr>
2658     <td colspan="4">
2659     </td>
2660     </tr>
2661     <tr>
2662     <td>user2</td>
2663 pcg 1.3 <td>username</td>
2664 pcg 1.1 <td></td>
2665 pcg 1.3 <td>
2666 pcg 1.4 <b></b> </td>
2667 pcg 1.1 </tr>
2668     <tr>
2669     <td colspan="4">
2670     </td>
2671     </tr>
2672     <tr>
2673     <td>message</td>
2674     <td>STRING</td>
2675     <td></td>
2676 pcg 1.3 <td>
2677 pcg 1.4 <b></b> </td>
2678 pcg 1.1 </tr>
2679     <tr>
2680     <td colspan="4">
2681     </td>
2682     </tr>
2683     </table>
2684    
2685     <h4>MESSAGE stats</h4>
2686     NUMERIC TYPE (hex): 0015 RECV<table border="1">
2687     <tr>
2688     <th>NAME</th>
2689     <th>TYPE</th>
2690     <th>DEFAULT</th>
2691 pcg 1.3 <th>DEC-GUARD</th>
2692 pcg 1.1 </tr>
2693     <tr>
2694     <td colspan="4">
2695     </td>
2696     </tr>
2697     <tr>
2698     <td>ver_major</td>
2699 pcg 1.3 <td>U16</td>
2700 pcg 1.1 <td></td>
2701 pcg 1.3 <td>
2702 pcg 1.4 <b></b> </td>
2703 pcg 1.1 </tr>
2704     <tr>
2705     <td colspan="4">
2706     </td>
2707     </tr>
2708     <tr>
2709     <td>ver_minor</td>
2710 pcg 1.3 <td>U16</td>
2711 pcg 1.1 <td></td>
2712 pcg 1.3 <td>
2713 pcg 1.4 <b></b> </td>
2714 pcg 1.1 </tr>
2715     <tr>
2716     <td colspan="4">
2717     </td>
2718     </tr>
2719     <tr>
2720     <td>ver_micro</td>
2721 pcg 1.3 <td>U16</td>
2722 pcg 1.1 <td></td>
2723 pcg 1.3 <td>
2724 pcg 1.4 <b></b> </td>
2725 pcg 1.1 </tr>
2726     <tr>
2727     <td colspan="4">
2728     </td>
2729     </tr>
2730     <tr>
2731     <td>boot_time</td>
2732 pcg 1.14 <td>timestamp</td>
2733 pcg 1.1 <td></td>
2734 pcg 1.3 <td>
2735 pcg 1.4 <b></b> </td>
2736 pcg 1.1 </tr>
2737     <tr>
2738     <td colspan="4">
2739     </td>
2740     </tr>
2741     <tr>
2742     <td>users_cur</td>
2743 pcg 1.3 <td>U32</td>
2744 pcg 1.1 <td></td>
2745 pcg 1.3 <td>
2746 pcg 1.4 <b></b> </td>
2747 pcg 1.1 </tr>
2748     <tr>
2749     <td colspan="4">
2750     </td>
2751     </tr>
2752     <tr>
2753     <td>users_max</td>
2754 pcg 1.3 <td>U32</td>
2755 pcg 1.1 <td></td>
2756 pcg 1.3 <td>
2757 pcg 1.4 <b></b> </td>
2758 pcg 1.1 </tr>
2759     <tr>
2760     <td colspan="4">
2761     </td>
2762     </tr>
2763     <tr>
2764     <td>users_lim</td>
2765 pcg 1.3 <td>U32</td>
2766 pcg 1.1 <td></td>
2767 pcg 1.3 <td>
2768 pcg 1.4 <b></b> </td>
2769 pcg 1.1 </tr>
2770     <tr>
2771     <td colspan="4">
2772     </td>
2773     </tr>
2774     <tr>
2775     <td>accts_cur</td>
2776 pcg 1.3 <td>U32</td>
2777 pcg 1.1 <td></td>
2778 pcg 1.3 <td>
2779 pcg 1.4 <b></b> </td>
2780 pcg 1.1 </tr>
2781     <tr>
2782     <td colspan="4">
2783     </td>
2784     </tr>
2785     <tr>
2786     <td>accts_max</td>
2787 pcg 1.3 <td>U32</td>
2788 pcg 1.1 <td></td>
2789 pcg 1.3 <td>
2790 pcg 1.4 <b></b> </td>
2791 pcg 1.1 </tr>
2792     <tr>
2793     <td colspan="4">
2794     </td>
2795     </tr>
2796     <tr>
2797     <td>unknown1</td>
2798 pcg 1.3 <td>U32</td>
2799 pcg 1.1 <td></td>
2800 pcg 1.3 <td>
2801 pcg 1.4 <b></b> </td>
2802 pcg 1.1 </tr>
2803     <tr>
2804     <td colspan="4">
2805     </td>
2806     </tr>
2807     <tr>
2808     <td>work_max</td>
2809 pcg 1.3 <td>U32</td>
2810 pcg 1.1 <td></td>
2811 pcg 1.3 <td>
2812 pcg 1.4 <b></b> </td>
2813 pcg 1.1 </tr>
2814     <tr>
2815     <td colspan="4">
2816     </td>
2817     </tr>
2818     <tr>
2819     <td>rooms_cur</td>
2820 pcg 1.3 <td>U32</td>
2821 pcg 1.1 <td></td>
2822 pcg 1.3 <td>
2823 pcg 1.4 <b></b> </td>
2824 pcg 1.1 </tr>
2825     <tr>
2826     <td colspan="4">
2827     </td>
2828     </tr>
2829     <tr>
2830     <td>rooms_max</td>
2831 pcg 1.3 <td>U32</td>
2832 pcg 1.1 <td></td>
2833 pcg 1.3 <td>
2834 pcg 1.4 <b></b> </td>
2835 pcg 1.1 </tr>
2836     <tr>
2837     <td colspan="4">
2838     </td>
2839     </tr>
2840     <tr>
2841     <td>rooms_lim</td>
2842 pcg 1.3 <td>U32</td>
2843 pcg 1.1 <td></td>
2844 pcg 1.3 <td>
2845 pcg 1.4 <b></b> </td>
2846 pcg 1.1 </tr>
2847     <tr>
2848     <td colspan="4">
2849     </td>
2850     </tr>
2851     <tr>
2852     <td>games_cur</td>
2853 pcg 1.3 <td>U32</td>
2854 pcg 1.1 <td></td>
2855 pcg 1.3 <td>
2856 pcg 1.4 <b></b> </td>
2857 pcg 1.1 </tr>
2858     <tr>
2859     <td colspan="4">
2860     </td>
2861     </tr>
2862     <tr>
2863     <td>games_max</td>
2864 pcg 1.3 <td>U32</td>
2865 pcg 1.1 <td></td>
2866 pcg 1.3 <td>
2867 pcg 1.4 <b></b> </td>
2868 pcg 1.1 </tr>
2869     <tr>
2870     <td colspan="4">
2871     </td>
2872     </tr>
2873     <tr>
2874     <td>games_lim</td>
2875 pcg 1.3 <td>U32</td>
2876 pcg 1.1 <td></td>
2877 pcg 1.3 <td>
2878 pcg 1.4 <b></b> </td>
2879 pcg 1.1 </tr>
2880     <tr>
2881     <td colspan="4">
2882     </td>
2883     </tr>
2884     <tr>
2885     <td>results_cur</td>
2886 pcg 1.3 <td>U32</td>
2887 pcg 1.1 <td></td>
2888 pcg 1.3 <td>
2889 pcg 1.4 <b></b> </td>
2890 pcg 1.1 </tr>
2891     <tr>
2892     <td colspan="4">
2893     </td>
2894     </tr>
2895     <tr>
2896     <td>results_max</td>
2897 pcg 1.3 <td>U32</td>
2898 pcg 1.1 <td></td>
2899 pcg 1.3 <td>
2900 pcg 1.4 <b></b> </td>
2901 pcg 1.1 </tr>
2902     <tr>
2903     <td colspan="4">
2904     </td>
2905     </tr>
2906     <tr>
2907     <td>unknown2</td>
2908 pcg 1.3 <td>U32</td>
2909 pcg 1.1 <td></td>
2910 pcg 1.3 <td>
2911 pcg 1.4 <b></b> </td>
2912 pcg 1.1 </tr>
2913     <tr>
2914     <td colspan="4">
2915     </td>
2916     </tr>
2917     <tr>
2918     <td>params_cur</td>
2919 pcg 1.3 <td>U32</td>
2920 pcg 1.1 <td></td>
2921 pcg 1.3 <td>
2922 pcg 1.4 <b></b> </td>
2923 pcg 1.1 </tr>
2924     <tr>
2925     <td colspan="4">
2926     </td>
2927     </tr>
2928     <tr>
2929     <td>params_max</td>
2930 pcg 1.3 <td>U32</td>
2931 pcg 1.1 <td></td>
2932 pcg 1.3 <td>
2933 pcg 1.4 <b></b> </td>
2934 pcg 1.1 </tr>
2935     <tr>
2936     <td colspan="4">
2937     </td>
2938     </tr>
2939     <tr>
2940     <td>bytes_in</td>
2941 pcg 1.3 <td>U64</td>
2942 pcg 1.1 <td></td>
2943 pcg 1.3 <td>
2944 pcg 1.4 <b></b> </td>
2945 pcg 1.1 </tr>
2946     <tr>
2947     <td colspan="4">
2948     </td>
2949     </tr>
2950     <tr>
2951     <td>packets_in</td>
2952 pcg 1.3 <td>U64</td>
2953 pcg 1.1 <td></td>
2954 pcg 1.3 <td>
2955 pcg 1.4 <b></b> </td>
2956 pcg 1.1 </tr>
2957     <tr>
2958     <td colspan="4">
2959     </td>
2960     </tr>
2961     <tr>
2962     <td>bytes_out</td>
2963 pcg 1.3 <td>U64</td>
2964 pcg 1.1 <td></td>
2965 pcg 1.3 <td>
2966 pcg 1.4 <b></b> </td>
2967 pcg 1.1 </tr>
2968     <tr>
2969     <td colspan="4">
2970     </td>
2971     </tr>
2972     <tr>
2973     <td>packets_out</td>
2974 pcg 1.3 <td>U64</td>
2975 pcg 1.1 <td></td>
2976 pcg 1.3 <td>
2977 pcg 1.4 <b></b> </td>
2978 pcg 1.1 </tr>
2979     <tr>
2980 pcg 1.4 <td colspan="4">
2981 pcg 1.1 </td>
2982     </tr>
2983     </table>
2984    
2985     <h4>MESSAGE idle_warn</h4>
2986     NUMERIC TYPE (hex): 0016 RECV<table border="1">
2987     <tr>
2988     <th>NAME</th>
2989     <th>TYPE</th>
2990     <th>DEFAULT</th>
2991 pcg 1.3 <th>DEC-GUARD</th>
2992 pcg 1.1 </tr>
2993     <tr>
2994     <td colspan="4">
2995     idle warning, autologout soon (10 minutes...)
2996     </td>
2997     </tr>
2998     </table>
2999    
3000     <h4>MESSAGE timewarning_default</h4>
3001     NUMERIC TYPE (hex): 001b RECV<table border="1">
3002     <tr>
3003     <th>NAME</th>
3004     <th>TYPE</th>
3005     <th>DEFAULT</th>
3006 pcg 1.3 <th>DEC-GUARD</th>
3007 pcg 1.1 </tr>
3008     <tr>
3009     <td colspan="4">
3010     WILD guess
3011     </td>
3012     </tr>
3013     <tr>
3014     <td>channel</td>
3015 pcg 1.3 <td>U16</td>
3016 pcg 1.1 <td></td>
3017 pcg 1.3 <td>
3018 pcg 1.4 <b></b> </td>
3019 pcg 1.1 </tr>
3020     <tr>
3021     <td colspan="4">
3022     </td>
3023     </tr>
3024     <tr>
3025     <td>time</td>
3026 pcg 1.3 <td>U16</td>
3027 pcg 1.1 <td></td>
3028 pcg 1.3 <td>
3029 pcg 1.4 <b></b> </td>
3030 pcg 1.1 </tr>
3031     <tr>
3032     <td colspan="4">
3033     </td>
3034     </tr>
3035     </table>
3036    
3037     <h4>MESSAGE idle_err</h4>
3038     NUMERIC TYPE (hex): 001c RECV<table border="1">
3039     <tr>
3040     <th>NAME</th>
3041     <th>TYPE</th>
3042     <th>DEFAULT</th>
3043 pcg 1.3 <th>DEC-GUARD</th>
3044 pcg 1.1 </tr>
3045     <tr>
3046     <td colspan="4">
3047     autologout
3048     </td>
3049     </tr>
3050     </table>
3051    
3052     <h4>MESSAGE ping</h4>
3053     NUMERIC TYPE (hex): 001d RECV<table border="1">
3054     <tr>
3055     <th>NAME</th>
3056     <th>TYPE</th>
3057     <th>DEFAULT</th>
3058 pcg 1.3 <th>DEC-GUARD</th>
3059 pcg 1.1 </tr>
3060     <tr>
3061     <td colspan="4">
3062 pcg 1.14 Sent by the server regularly, but not answering them
3063     isn't valid. Strange form of keepalive?
3064 pcg 1.1 </td>
3065     </tr>
3066     </table>
3067    
3068     <h4>MESSAGE userpic</h4>
3069     NUMERIC TYPE (hex): 0021 RECV<table border="1">
3070     <tr>
3071     <th>NAME</th>
3072     <th>TYPE</th>
3073     <th>DEFAULT</th>
3074 pcg 1.3 <th>DEC-GUARD</th>
3075 pcg 1.1 </tr>
3076     <tr>
3077     <td colspan="4">
3078     </td>
3079     </tr>
3080     <tr>
3081     <td>name</td>
3082 pcg 1.3 <td>username</td>
3083 pcg 1.1 <td></td>
3084 pcg 1.3 <td>
3085 pcg 1.4 <b></b> </td>
3086 pcg 1.1 </tr>
3087     <tr>
3088     <td colspan="4">
3089     Reply to pic_req, contains an image in jpeg format.
3090     </td>
3091     </tr>
3092     <tr>
3093     <td>data</td>
3094     <td>DATA</td>
3095     <td></td>
3096 pcg 1.3 <td>
3097 pcg 1.4 <b></b> </td>
3098 pcg 1.1 </tr>
3099     <tr>
3100     <td colspan="4">
3101     </td>
3102     </tr>
3103     </table>
3104    
3105     <h4>MESSAGE gnotice</h4>
3106     NUMERIC TYPE (hex): 0100 RECV<table border="1">
3107     <tr>
3108     <th>NAME</th>
3109     <th>TYPE</th>
3110     <th>DEFAULT</th>
3111 pcg 1.3 <th>DEC-GUARD</th>
3112 pcg 1.1 </tr>
3113     <tr>
3114     <td colspan="4">
3115     global notice, sent to everybody
3116     </td>
3117     </tr>
3118     <tr>
3119     <td>notice</td>
3120     <td>STRING</td>
3121     <td></td>
3122 pcg 1.3 <td>
3123 pcg 1.4 <b></b> </td>
3124 pcg 1.1 </tr>
3125     <tr>
3126     <td colspan="4">
3127     </td>
3128     </tr>
3129     </table>
3130    
3131 pcg 1.14 <h4>MESSAGE upd_user</h4>
3132     NUMERIC TYPE (hex): 0202 RECV<table border="1">
3133     <tr>
3134     <th>NAME</th>
3135     <th>TYPE</th>
3136     <th>DEFAULT</th>
3137     <th>DEC-GUARD</th>
3138     </tr>
3139     <tr>
3140     <td colspan="4">
3141     # loc 0" type="chat(?) loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
3142     </td>
3143     </tr>
3144     <tr>
3145     <td>location</td>
3146     <td>U32</td>
3147     <td></td>
3148     <td>
3149     <b></b> </td>
3150     </tr>
3151     <tr>
3152     <td colspan="4">
3153     </td>
3154     </tr>
3155     <tr>
3156     <td>user</td>
3157     <td>user</td>
3158     <td></td>
3159     <td>
3160     <b></b> </td>
3161     </tr>
3162     <tr>
3163     <td colspan="4">
3164     </td>
3165     </tr>
3166     <tr>
3167     <td>lotsofinfo</td>
3168     <td>DATA</td>
3169     <td></td>
3170     <td>
3171     <b>location</b> == 2</td>
3172     </tr>
3173     <tr>
3174     <td colspan="4">
3175     </td>
3176     </tr>
3177     </table>
3178 pcg 1.1
3179     <h4>MESSAGE priv_room</h4>
3180     NUMERIC TYPE (hex): 0310 RECV<table border="1">
3181     <tr>
3182     <th>NAME</th>
3183     <th>TYPE</th>
3184     <th>DEFAULT</th>
3185 pcg 1.3 <th>DEC-GUARD</th>
3186 pcg 1.1 </tr>
3187     <tr>
3188     <td colspan="4">
3189     "permission denied" when joining a room
3190     </td>
3191     </tr>
3192     <tr>
3193     <td>name</td>
3194     <td>STRING</td>
3195     <td></td>
3196 pcg 1.3 <td>
3197 pcg 1.4 <b></b> </td>
3198 pcg 1.1 </tr>
3199     <tr>
3200     <td colspan="4">
3201     </td>
3202     </tr>
3203     </table>
3204    
3205     <h4>MESSAGE upd_rooms</h4>
3206     NUMERIC TYPE (hex): 0318 RECV<table border="1">
3207     <tr>
3208     <th>NAME</th>
3209     <th>TYPE</th>
3210     <th>DEFAULT</th>
3211 pcg 1.3 <th>DEC-GUARD</th>
3212 pcg 1.1 </tr>
3213     <tr>
3214     <td colspan="4">
3215     </td>
3216     </tr>
3217     <tr>
3218     <td>rooms</td>
3219     <td>room</td>
3220     <td></td>
3221 pcg 1.3 <td>
3222 pcg 1.4 <b></b> </td>
3223 pcg 1.1 </tr>
3224     <tr>
3225     <td colspan="4">
3226     </td>
3227     </tr>
3228     </table>
3229    
3230 pcg 1.14 <h4>MESSAGE chal_defaults</h4>
3231     NUMERIC TYPE (hex): 0411 RECV<table border="1">
3232 pcg 1.1 <tr>
3233     <th>NAME</th>
3234     <th>TYPE</th>
3235     <th>DEFAULT</th>
3236 pcg 1.3 <th>DEC-GUARD</th>
3237 pcg 1.1 </tr>
3238     <tr>
3239     <td colspan="4">
3240     </td>
3241     </tr>
3242     <tr>
3243 pcg 1.14 <td>channel</td>
3244 pcg 1.3 <td>U16</td>
3245 pcg 1.1 <td></td>
3246 pcg 1.3 <td>
3247 pcg 1.4 <b></b> </td>
3248 pcg 1.1 </tr>
3249     <tr>
3250     <td colspan="4">
3251     </td>
3252     </tr>
3253     <tr>
3254 pcg 1.14 <td>defaults</td>
3255     <td>challenge_defaults</td>
3256 pcg 1.1 <td></td>
3257 pcg 1.3 <td>
3258 pcg 1.4 <b></b> </td>
3259 pcg 1.1 </tr>
3260     <tr>
3261     <td colspan="4">
3262     </td>
3263     </tr>
3264     </table>
3265    
3266 pcg 1.14 <h4>MESSAGE game_record</h4>
3267     NUMERIC TYPE (hex): 0414 RECV<table border="1">
3268 pcg 1.1 <tr>
3269     <th>NAME</th>
3270     <th>TYPE</th>
3271     <th>DEFAULT</th>
3272 pcg 1.3 <th>DEC-GUARD</th>
3273 pcg 1.1 </tr>
3274     <tr>
3275     <td colspan="4">
3276 pcg 1.14 The users game record.
3277     </td>
3278     </tr>
3279     <tr>
3280     <td>name</td>
3281     <td>username</td>
3282     <td></td>
3283     <td>
3284     <b></b> </td>
3285     </tr>
3286     <tr>
3287     <td colspan="4">
3288     </td>
3289     </tr>
3290     <tr>
3291     <td>more</td>
3292     <td>flag</td>
3293     <td></td>
3294     <td>
3295     <b></b> </td>
3296     </tr>
3297     <tr>
3298     <td colspan="4">
3299     Wether more games are available (must be requested manually)
3300 pcg 1.1 </td>
3301     </tr>
3302     <tr>
3303 pcg 1.14 <td>games</td>
3304     <td>game_record</td>
3305 pcg 1.1 <td></td>
3306 pcg 1.3 <td>
3307 pcg 1.4 <b></b> </td>
3308 pcg 1.1 </tr>
3309     <tr>
3310     <td colspan="4">
3311 pcg 1.14 </td>
3312     </tr>
3313     </table>
3314    
3315     <h4>MESSAGE upd_game2</h4>
3316     NUMERIC TYPE (hex): 041c RECV<table border="1">
3317     <tr>
3318     <th>NAME</th>
3319     <th>TYPE</th>
3320     <th>DEFAULT</th>
3321     <th>DEC-GUARD</th>
3322     </tr>
3323     <tr>
3324     <td colspan="4">
3325 pcg 1.1 </td>
3326     </tr>
3327     <tr>
3328 pcg 1.14 <td>channel_junk</td>
3329     <td>U16</td>
3330 pcg 1.1 <td></td>
3331 pcg 1.3 <td>
3332 pcg 1.4 <b></b> </td>
3333 pcg 1.1 </tr>
3334     <tr>
3335     <td colspan="4">
3336     </td>
3337     </tr>
3338     <tr>
3339 pcg 1.14 <td>game</td>
3340     <td>game</td>
3341 pcg 1.1 <td></td>
3342 pcg 1.3 <td>
3343 pcg 1.14 <b></b> </td>
3344 pcg 1.1 </tr>
3345     <tr>
3346     <td colspan="4">
3347     </td>
3348     </tr>
3349     </table>
3350    
3351     <h3>Room messages</h3>
3352    
3353     <p>Not all room messages are for rooms only, and rooms need to parse
3354     not only these messages. Orthogonality, what for?</p>
3355    
3356     <h4>MESSAGE join_room</h4>
3357     NUMERIC TYPE (hex): 4300 RECV<table border="1">
3358     <tr>
3359     <th>NAME</th>
3360     <th>TYPE</th>
3361     <th>DEFAULT</th>
3362 pcg 1.3 <th>DEC-GUARD</th>
3363 pcg 1.1 </tr>
3364     <tr>
3365     <td colspan="4">
3366     </td>
3367     </tr>
3368     <tr>
3369     <td>channel</td>
3370 pcg 1.3 <td>U16</td>
3371 pcg 1.1 <td></td>
3372 pcg 1.3 <td>
3373 pcg 1.4 <b></b> </td>
3374 pcg 1.1 </tr>
3375     <tr>
3376     <td colspan="4">
3377     </td>
3378     </tr>
3379     <tr>
3380     <td>users</td>
3381     <td>user</td>
3382     <td></td>
3383 pcg 1.3 <td>
3384 pcg 1.4 <b></b> </td>
3385 pcg 1.1 </tr>
3386     <tr>
3387     <td colspan="4">
3388     </td>
3389     </tr>
3390     </table>
3391    
3392     <h4>MESSAGE msg_room</h4>
3393     NUMERIC TYPE (hex): 4301 RECV<table border="1">
3394     <tr>
3395     <th>NAME</th>
3396     <th>TYPE</th>
3397     <th>DEFAULT</th>
3398 pcg 1.3 <th>DEC-GUARD</th>
3399 pcg 1.1 </tr>
3400     <tr>
3401     <td colspan="4">
3402     </td>
3403     </tr>
3404     <tr>
3405     <td>channel</td>
3406 pcg 1.3 <td>U16</td>
3407 pcg 1.1 <td></td>
3408 pcg 1.3 <td>
3409 pcg 1.4 <b></b> </td>
3410 pcg 1.1 </tr>
3411     <tr>
3412     <td colspan="4">
3413     </td>
3414     </tr>
3415     <tr>
3416     <td>name</td>
3417 pcg 1.3 <td>username</td>
3418 pcg 1.1 <td></td>
3419 pcg 1.3 <td>
3420 pcg 1.4 <b></b> </td>
3421 pcg 1.1 </tr>
3422     <tr>
3423     <td colspan="4">
3424     </td>
3425     </tr>
3426     <tr>
3427     <td>message</td>
3428     <td>STRING</td>
3429     <td></td>
3430 pcg 1.3 <td>
3431 pcg 1.4 <b></b> </td>
3432 pcg 1.1 </tr>
3433     <tr>
3434     <td colspan="4">
3435     </td>
3436     </tr>
3437     </table>
3438    
3439     <h4>MESSAGE part_room</h4>
3440     NUMERIC TYPE (hex): 4302 RECV<table border="1">
3441     <tr>
3442     <th>NAME</th>
3443     <th>TYPE</th>
3444     <th>DEFAULT</th>
3445 pcg 1.3 <th>DEC-GUARD</th>
3446 pcg 1.1 </tr>
3447     <tr>
3448     <td colspan="4">
3449     </td>
3450     </tr>
3451     <tr>
3452     <td>channel</td>
3453 pcg 1.3 <td>U16</td>
3454 pcg 1.1 <td></td>
3455 pcg 1.3 <td>
3456 pcg 1.4 <b></b> </td>
3457 pcg 1.1 </tr>
3458     <tr>
3459     <td colspan="4">
3460     </td>
3461     </tr>
3462     <tr>
3463     <td>user</td>
3464     <td>user</td>
3465     <td></td>
3466 pcg 1.3 <td>
3467 pcg 1.4 <b></b> </td>
3468 pcg 1.1 </tr>
3469     <tr>
3470     <td colspan="4">
3471     </td>
3472     </tr>
3473     </table>
3474    
3475     <h4>MESSAGE del_room</h4>
3476     NUMERIC TYPE (hex): 4303 RECV<table border="1">
3477     <tr>
3478     <th>NAME</th>
3479     <th>TYPE</th>
3480     <th>DEFAULT</th>
3481 pcg 1.3 <th>DEC-GUARD</th>
3482 pcg 1.1 </tr>
3483     <tr>
3484     <td colspan="4">
3485     </td>
3486     </tr>
3487     <tr>
3488     <td>channel</td>
3489 pcg 1.3 <td>U16</td>
3490 pcg 1.1 <td></td>
3491 pcg 1.3 <td>
3492 pcg 1.4 <b></b> </td>
3493 pcg 1.1 </tr>
3494     <tr>
3495     <td colspan="4">
3496     </td>
3497     </tr>
3498     </table>
3499    
3500     <h4>MESSAGE upd_games</h4>
3501     NUMERIC TYPE (hex): 4304 RECV<table border="1">
3502     <tr>
3503     <th>NAME</th>
3504     <th>TYPE</th>
3505     <th>DEFAULT</th>
3506 pcg 1.3 <th>DEC-GUARD</th>
3507 pcg 1.1 </tr>
3508     <tr>
3509     <td colspan="4">
3510     </td>
3511     </tr>
3512     <tr>
3513     <td>channel</td>
3514 pcg 1.3 <td>U16</td>
3515 pcg 1.1 <td></td>
3516 pcg 1.3 <td>
3517 pcg 1.4 <b></b> </td>
3518 pcg 1.1 </tr>
3519     <tr>
3520     <td colspan="4">
3521     </td>
3522     </tr>
3523     <tr>
3524     <td>games</td>
3525     <td>game</td>
3526     <td></td>
3527 pcg 1.3 <td>
3528 pcg 1.4 <b></b> </td>
3529 pcg 1.1 </tr>
3530     <tr>
3531     <td colspan="4">
3532     </td>
3533     </tr>
3534     </table>
3535    
3536     <h4>MESSAGE desc_room</h4>
3537     NUMERIC TYPE (hex): 4319 RECV<table border="1">
3538     <tr>
3539     <th>NAME</th>
3540     <th>TYPE</th>
3541     <th>DEFAULT</th>
3542 pcg 1.3 <th>DEC-GUARD</th>
3543 pcg 1.1 </tr>
3544     <tr>
3545     <td colspan="4">
3546     </td>
3547     </tr>
3548     <tr>
3549     <td>channel</td>
3550 pcg 1.3 <td>U16</td>
3551 pcg 1.1 <td></td>
3552 pcg 1.3 <td>
3553 pcg 1.4 <b></b> </td>
3554 pcg 1.1 </tr>
3555     <tr>
3556     <td colspan="4">
3557     </td>
3558     </tr>
3559     <tr>
3560     <td>owner</td>
3561 pcg 1.3 <td>username</td>
3562 pcg 1.1 <td></td>
3563 pcg 1.3 <td>
3564 pcg 1.4 <b></b> </td>
3565 pcg 1.1 </tr>
3566     <tr>
3567     <td colspan="4">
3568     </td>
3569     </tr>
3570     <tr>
3571     <td>description</td>
3572     <td>STRING</td>
3573     <td></td>
3574 pcg 1.3 <td>
3575 pcg 1.4 <b></b> </td>
3576 pcg 1.1 </tr>
3577     <tr>
3578     <td colspan="4">
3579     </td>
3580     </tr>
3581     </table>
3582    
3583     <h3>Game messages</h3>
3584    
3585     <h4>MESSAGE upd_chal</h4>
3586     NUMERIC TYPE (hex): 4400 RECV<table border="1">
3587     <tr>
3588     <th>NAME</th>
3589     <th>TYPE</th>
3590     <th>DEFAULT</th>
3591 pcg 1.3 <th>DEC-GUARD</th>
3592 pcg 1.1 </tr>
3593     <tr>
3594     <td colspan="4">
3595     Unclear.
3596     </td>
3597     </tr>
3598     <tr>
3599     <td>channel</td>
3600 pcg 1.3 <td>U16</td>
3601 pcg 1.1 <td></td>
3602 pcg 1.3 <td>
3603 pcg 1.4 <b></b> </td>
3604 pcg 1.1 </tr>
3605     <tr>
3606     <td colspan="4">
3607     </td>
3608     </tr>
3609     <tr>
3610     <td>challenge</td>
3611     <td>challenge</td>
3612     <td></td>
3613 pcg 1.3 <td>
3614 pcg 1.4 <b></b> </td>
3615 pcg 1.1 </tr>
3616     <tr>
3617     <td colspan="4">
3618     </td>
3619     </tr>
3620     </table>
3621    
3622     <h4>MESSAGE upd_game</h4>
3623     NUMERIC TYPE (hex): 4401 RECV<table border="1">
3624     <tr>
3625     <th>NAME</th>
3626     <th>TYPE</th>
3627     <th>DEFAULT</th>
3628 pcg 1.3 <th>DEC-GUARD</th>
3629 pcg 1.1 </tr>
3630     <tr>
3631     <td colspan="4">
3632     </td>
3633     </tr>
3634     <tr>
3635     <td>channel</td>
3636 pcg 1.3 <td>U16</td>
3637 pcg 1.1 <td></td>
3638 pcg 1.3 <td>
3639 pcg 1.4 <b></b> </td>
3640 pcg 1.1 </tr>
3641     <tr>
3642     <td colspan="4">
3643     </td>
3644     </tr>
3645     <tr>
3646     <td>game</td>
3647     <td>game</td>
3648     <td></td>
3649 pcg 1.3 <td>
3650 pcg 1.4 <b></b> </td>
3651 pcg 1.1 </tr>
3652     <tr>
3653     <td colspan="4">
3654     </td>
3655     </tr>
3656     </table>
3657    
3658     <h4>MESSAGE del_game</h4>
3659     NUMERIC TYPE (hex): 4402 RECV<table border="1">
3660     <tr>
3661     <th>NAME</th>
3662     <th>TYPE</th>
3663     <th>DEFAULT</th>
3664 pcg 1.3 <th>DEC-GUARD</th>
3665 pcg 1.1 </tr>
3666     <tr>
3667     <td colspan="4">
3668     </td>
3669     </tr>
3670     <tr>
3671     <td>channel</td>
3672 pcg 1.3 <td>U16</td>
3673 pcg 1.1 <td></td>
3674 pcg 1.3 <td>
3675 pcg 1.4 <b></b> </td>
3676 pcg 1.1 </tr>
3677     <tr>
3678     <td colspan="4">
3679     </td>
3680     </tr>
3681     </table>
3682    
3683     <h4>MESSAGE upd_observers</h4>
3684     NUMERIC TYPE (hex): 4403 RECV<table border="1">
3685     <tr>
3686     <th>NAME</th>
3687     <th>TYPE</th>
3688     <th>DEFAULT</th>
3689 pcg 1.3 <th>DEC-GUARD</th>
3690 pcg 1.1 </tr>
3691     <tr>
3692     <td colspan="4">
3693     </td>
3694     </tr>
3695     <tr>
3696     <td>channel</td>
3697 pcg 1.3 <td>U16</td>
3698 pcg 1.1 <td></td>
3699 pcg 1.3 <td>
3700 pcg 1.4 <b></b> </td>
3701 pcg 1.1 </tr>
3702     <tr>
3703     <td colspan="4">
3704     </td>
3705     </tr>
3706     <tr>
3707     <td>users</td>
3708     <td>user</td>
3709     <td></td>
3710 pcg 1.3 <td>
3711 pcg 1.4 <b></b> </td>
3712 pcg 1.1 </tr>
3713     <tr>
3714     <td colspan="4">
3715     </td>
3716     </tr>
3717     </table>
3718    
3719     <h4>MESSAGE del_observer</h4>
3720     NUMERIC TYPE (hex): 4404 RECV<table border="1">
3721     <tr>
3722     <th>NAME</th>
3723     <th>TYPE</th>
3724     <th>DEFAULT</th>
3725 pcg 1.3 <th>DEC-GUARD</th>
3726 pcg 1.1 </tr>
3727     <tr>
3728     <td colspan="4">
3729     </td>
3730     </tr>
3731     <tr>
3732     <td>channel</td>
3733 pcg 1.3 <td>U16</td>
3734 pcg 1.1 <td></td>
3735 pcg 1.3 <td>
3736 pcg 1.4 <b></b> </td>
3737 pcg 1.1 </tr>
3738     <tr>
3739     <td colspan="4">
3740     </td>
3741     </tr>
3742     <tr>
3743     <td>name</td>
3744 pcg 1.3 <td>username</td>
3745 pcg 1.1 <td></td>
3746 pcg 1.3 <td>
3747 pcg 1.4 <b></b> </td>
3748 pcg 1.1 </tr>
3749     <tr>
3750     <td colspan="4">
3751     </td>
3752     </tr>
3753     </table>
3754    
3755     <h4>MESSAGE set_tree</h4>
3756     NUMERIC TYPE (hex): 4405 RECV<table border="1">
3757     <tr>
3758     <th>NAME</th>
3759     <th>TYPE</th>
3760     <th>DEFAULT</th>
3761 pcg 1.3 <th>DEC-GUARD</th>
3762 pcg 1.1 </tr>
3763     <tr>
3764     <td colspan="4">
3765     </td>
3766     </tr>
3767     <tr>
3768     <td>channel</td>
3769 pcg 1.3 <td>U16</td>
3770 pcg 1.1 <td></td>
3771 pcg 1.3 <td>
3772 pcg 1.4 <b></b> </td>
3773 pcg 1.1 </tr>
3774     <tr>
3775     <td colspan="4">
3776     </td>
3777     </tr>
3778     <tr>
3779     <td>tree</td>
3780     <td>TREE</td>
3781     <td></td>
3782 pcg 1.3 <td>
3783 pcg 1.4 <b></b> </td>
3784 pcg 1.1 </tr>
3785     <tr>
3786     <td colspan="4">
3787     </td>
3788     </tr>
3789     </table>
3790    
3791     <h4>MESSAGE upd_tree</h4>
3792     NUMERIC TYPE (hex): 4406 RECV<table border="1">
3793     <tr>
3794     <th>NAME</th>
3795     <th>TYPE</th>
3796     <th>DEFAULT</th>
3797 pcg 1.3 <th>DEC-GUARD</th>
3798 pcg 1.1 </tr>
3799     <tr>
3800     <td colspan="4">
3801     </td>
3802     </tr>
3803     <tr>
3804     <td>channel</td>
3805 pcg 1.3 <td>U16</td>
3806 pcg 1.1 <td></td>
3807 pcg 1.3 <td>
3808 pcg 1.4 <b></b> </td>
3809 pcg 1.1 </tr>
3810     <tr>
3811     <td colspan="4">
3812     </td>
3813     </tr>
3814     <tr>
3815     <td>tree</td>
3816     <td>TREE</td>
3817     <td></td>
3818 pcg 1.3 <td>
3819 pcg 1.4 <b></b> </td>
3820 pcg 1.1 </tr>
3821     <tr>
3822     <td colspan="4">
3823     </td>
3824     </tr>
3825     </table>
3826    
3827     <h4>MESSAGE set_node</h4>
3828     NUMERIC TYPE (hex): 4407 RECV<table border="1">
3829     <tr>
3830     <th>NAME</th>
3831     <th>TYPE</th>
3832     <th>DEFAULT</th>
3833 pcg 1.3 <th>DEC-GUARD</th>
3834 pcg 1.1 </tr>
3835     <tr>
3836     <td colspan="4">
3837     </td>
3838     </tr>
3839     <tr>
3840     <td>channel</td>
3841 pcg 1.3 <td>U16</td>
3842 pcg 1.1 <td></td>
3843 pcg 1.3 <td>
3844 pcg 1.4 <b></b> </td>
3845 pcg 1.1 </tr>
3846     <tr>
3847     <td colspan="4">
3848     </td>
3849     </tr>
3850     <tr>
3851     <td>node</td>
3852 pcg 1.3 <td>U32</td>
3853 pcg 1.1 <td></td>
3854 pcg 1.3 <td>
3855 pcg 1.4 <b></b> </td>
3856 pcg 1.1 </tr>
3857     <tr>
3858     <td colspan="4">
3859     </td>
3860     </tr>
3861     </table>
3862    
3863     <h4>MESSAGE superko</h4>
3864     NUMERIC TYPE (hex): 4409 RECV<table border="1">
3865     <tr>
3866     <th>NAME</th>
3867     <th>TYPE</th>
3868     <th>DEFAULT</th>
3869 pcg 1.3 <th>DEC-GUARD</th>
3870 pcg 1.1 </tr>
3871     <tr>
3872     <td colspan="4">
3873     Superko-warning.
3874     </td>
3875     </tr>
3876     <tr>
3877     <td>channel</td>
3878 pcg 1.3 <td>U16</td>
3879 pcg 1.1 <td></td>
3880 pcg 1.3 <td>
3881 pcg 1.4 <b></b> </td>
3882 pcg 1.1 </tr>
3883     <tr>
3884     <td colspan="4">
3885     </td>
3886     </tr>
3887     </table>
3888    
3889     <h4>MESSAGE final_result</h4>
3890     NUMERIC TYPE (hex): 440b RECV<table border="1">
3891     <tr>
3892     <th>NAME</th>
3893     <th>TYPE</th>
3894     <th>DEFAULT</th>
3895 pcg 1.3 <th>DEC-GUARD</th>
3896 pcg 1.1 </tr>
3897     <tr>
3898     <td colspan="4">
3899     </td>
3900     </tr>
3901     <tr>
3902     <td>channel</td>
3903 pcg 1.3 <td>U16</td>
3904 pcg 1.1 <td></td>
3905 pcg 1.3 <td>
3906 pcg 1.4 <b></b> </td>
3907 pcg 1.1 </tr>
3908     <tr>
3909     <td colspan="4">
3910     </td>
3911     </tr>
3912     <tr>
3913     <td>blackscore</td>
3914 pcg 1.10 <td>scorevalues</td>
3915 pcg 1.1 <td></td>
3916 pcg 1.3 <td>
3917 pcg 1.4 <b></b> </td>
3918 pcg 1.1 </tr>
3919     <tr>
3920     <td colspan="4">
3921     </td>
3922     </tr>
3923     <tr>
3924     <td>whitescore</td>
3925 pcg 1.10 <td>scorevalues</td>
3926 pcg 1.1 <td></td>
3927 pcg 1.3 <td>
3928 pcg 1.4 <b></b> </td>
3929 pcg 1.1 </tr>
3930     <tr>
3931     <td colspan="4">
3932     </td>
3933     </tr>
3934     </table>
3935    
3936     <h4>MESSAGE req_undo</h4>
3937     NUMERIC TYPE (hex): 440e RECV<table border="1">
3938     <tr>
3939     <th>NAME</th>
3940     <th>TYPE</th>
3941     <th>DEFAULT</th>
3942 pcg 1.3 <th>DEC-GUARD</th>
3943 pcg 1.1 </tr>
3944     <tr>
3945     <td colspan="4">
3946     </td>
3947     </tr>
3948     <tr>
3949     <td>channel</td>
3950 pcg 1.3 <td>U16</td>
3951 pcg 1.1 <td></td>
3952 pcg 1.3 <td>
3953 pcg 1.4 <b></b> </td>
3954 pcg 1.1 </tr>
3955     <tr>
3956     <td colspan="4">
3957    
3958     </td>
3959     </tr>
3960     </table>
3961    
3962     <h4>MESSAGE resign_game</h4>
3963     NUMERIC TYPE (hex): 4410 RECV<table border="1">
3964     <tr>
3965     <th>NAME</th>
3966     <th>TYPE</th>
3967     <th>DEFAULT</th>
3968 pcg 1.3 <th>DEC-GUARD</th>
3969 pcg 1.1 </tr>
3970     <tr>
3971     <td colspan="4">
3972     </td>
3973     </tr>
3974     <tr>
3975     <td>channel</td>
3976 pcg 1.3 <td>U16</td>
3977 pcg 1.1 <td></td>
3978 pcg 1.3 <td>
3979 pcg 1.4 <b></b> </td>
3980 pcg 1.1 </tr>
3981     <tr>
3982     <td colspan="4">
3983     </td>
3984     </tr>
3985     <tr>
3986     <td>player</td>
3987 pcg 1.3 <td>U8</td>
3988 pcg 1.1 <td></td>
3989 pcg 1.3 <td>
3990 pcg 1.4 <b></b> </td>
3991 pcg 1.1 </tr>
3992     <tr>
3993     <td colspan="4">
3994     </td>
3995     </tr>
3996     </table>
3997    
3998     <h4>MESSAGE set_teacher</h4>
3999     NUMERIC TYPE (hex): 441a RECV<table border="1">
4000     <tr>
4001     <th>NAME</th>
4002     <th>TYPE</th>
4003     <th>DEFAULT</th>
4004 pcg 1.3 <th>DEC-GUARD</th>
4005 pcg 1.1 </tr>
4006     <tr>
4007     <td colspan="4">
4008     </td>
4009     </tr>
4010     <tr>
4011     <td>channel</td>
4012 pcg 1.3 <td>U16</td>
4013 pcg 1.1 <td></td>
4014 pcg 1.3 <td>
4015 pcg 1.4 <b></b> </td>
4016 pcg 1.1 </tr>
4017     <tr>
4018     <td colspan="4">
4019     </td>
4020     </tr>
4021     <tr>
4022     <td>name</td>
4023 pcg 1.3 <td>username</td>
4024 pcg 1.1 <td></td>
4025 pcg 1.3 <td>
4026 pcg 1.4 <b></b> </td>
4027 pcg 1.1 </tr>
4028     <tr>
4029     <td colspan="4">
4030     </td>
4031     </tr>
4032     </table>
4033    
4034     <h4>MESSAGE owner_left</h4>
4035     NUMERIC TYPE (hex): 441d RECV<table border="1">
4036     <tr>
4037     <th>NAME</th>
4038     <th>TYPE</th>
4039     <th>DEFAULT</th>
4040 pcg 1.3 <th>DEC-GUARD</th>
4041 pcg 1.1 </tr>
4042     <tr>
4043     <td colspan="4">
4044     Unclear.
4045     </td>
4046     </tr>
4047     <tr>
4048     <td>channel</td>
4049 pcg 1.3 <td>U16</td>
4050 pcg 1.1 <td></td>
4051 pcg 1.3 <td>
4052 pcg 1.4 <b></b> </td>
4053 pcg 1.1 </tr>
4054     <tr>
4055     <td colspan="4">
4056     </td>
4057     </tr>
4058     </table>
4059    
4060     <h4>MESSAGE teacher_left</h4>
4061     NUMERIC TYPE (hex): 441e RECV<table border="1">
4062     <tr>
4063     <th>NAME</th>
4064     <th>TYPE</th>
4065     <th>DEFAULT</th>
4066 pcg 1.3 <th>DEC-GUARD</th>
4067 pcg 1.1 </tr>
4068     <tr>
4069     <td colspan="4">
4070     Unclear.
4071     </td>
4072     </tr>
4073     <tr>
4074     <td>channel</td>
4075 pcg 1.3 <td>U16</td>
4076 pcg 1.1 <td></td>
4077 pcg 1.3 <td>
4078 pcg 1.4 <b></b> </td>
4079 pcg 1.1 </tr>
4080     <tr>
4081     <td colspan="4">
4082     </td>
4083     </tr>
4084     </table>
4085    
4086     <h4>MESSAGE unknown4422</h4>
4087     NUMERIC TYPE (hex): 4422 RECV<table border="1">
4088     <tr>
4089     <th>NAME</th>
4090     <th>TYPE</th>
4091     <th>DEFAULT</th>
4092 pcg 1.3 <th>DEC-GUARD</th>
4093 pcg 1.1 </tr>
4094     <tr>
4095     <td colspan="4">
4096     change teacher? something to do with editing?
4097     </td>
4098     </tr>
4099     <tr>
4100     <td>channel</td>
4101 pcg 1.3 <td>U16</td>
4102 pcg 1.1 <td></td>
4103 pcg 1.3 <td>
4104 pcg 1.4 <b></b> </td>
4105 pcg 1.1 </tr>
4106     <tr>
4107     <td colspan="4">
4108     </td>
4109     </tr>
4110     <tr>
4111     <td>name1</td>
4112 pcg 1.3 <td>username</td>
4113 pcg 1.1 <td></td>
4114 pcg 1.3 <td>
4115 pcg 1.4 <b></b> </td>
4116 pcg 1.1 </tr>
4117     <tr>
4118     <td colspan="4">
4119     </td>
4120     </tr>
4121     <tr>
4122     <td>name2</td>
4123 pcg 1.3 <td>username</td>
4124 pcg 1.1 <td></td>
4125 pcg 1.3 <td>
4126 pcg 1.4 <b></b> </td>
4127 pcg 1.1 </tr>
4128     <tr>
4129     <td colspan="4">
4130     </td>
4131     </tr>
4132     </table>
4133    
4134     <h4>MESSAGE req_result</h4>
4135     NUMERIC TYPE (hex): 4433 RECV<table border="1">
4136     <tr>
4137     <th>NAME</th>
4138     <th>TYPE</th>
4139     <th>DEFAULT</th>
4140 pcg 1.3 <th>DEC-GUARD</th>
4141 pcg 1.1 </tr>
4142     <tr>
4143     <td colspan="4">
4144     Unclear.
4145     </td>
4146     </tr>
4147     <tr>
4148     <td>channel</td>
4149 pcg 1.3 <td>U16</td>
4150 pcg 1.1 <td></td>
4151 pcg 1.3 <td>
4152 pcg 1.4 <b></b> </td>
4153 pcg 1.1 </tr>
4154     <tr>
4155     <td colspan="4">
4156     # # recv_result(?)
4157     </td>
4158     </tr>
4159     </table>
4160    
4161     <h4>MESSAGE unknown4434</h4>
4162     NUMERIC TYPE (hex): 4434 RECV<table border="1">
4163     <tr>
4164     <th>NAME</th>
4165     <th>TYPE</th>
4166     <th>DEFAULT</th>
4167 pcg 1.3 <th>DEC-GUARD</th>
4168 pcg 1.1 </tr>
4169     <tr>
4170     <td colspan="4">
4171     </td>
4172     </tr>
4173     <tr>
4174     <td>channel</td>
4175 pcg 1.3 <td>U16</td>
4176 pcg 1.1 <td></td>
4177 pcg 1.3 <td>
4178 pcg 1.4 <b></b> </td>
4179 pcg 1.1 </tr>
4180     <tr>
4181     <td colspan="4">
4182     </td>
4183     </tr>
4184     <tr>
4185     <td>b1</td>
4186 pcg 1.3 <td>U8</td>
4187 pcg 1.1 <td></td>
4188 pcg 1.3 <td>
4189 pcg 1.4 <b></b> </td>
4190 pcg 1.1 </tr>
4191     <tr>
4192     <td colspan="4">
4193     ?? !demonstration game??
4194     </td>
4195     </tr>
4196     </table>
4197    
4198     </body>
4199     </html>