ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.17
Committed: Sat Jun 14 09:19:28 2003 UTC (20 years, 11 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.16: +3248 -2614 lines
Log Message:
*** empty log message ***

File Contents

# Content
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 <h1>$Revision: 1.17 $</h1>
25
26 <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 <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 <p>If you feel you need to update the visual appearance of this
44 document, feel free to look <tt>doc/doc2html.xsl</tt> and improve
45 it.</p>
46
47 <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 <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 <p>Everything on the wire is in little-endian format (what a shame).</p>
59
60 <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
66 <p>For the rest, go figure or bug me, <a href="mailto:pcg@goof.com">Marc Lehmann &lt;pcg@goof.com&gt;</a>
67 </p>
68
69 <h2>Stream and message structure.</h2>
70
71 <p>After connecting to the server, a handshake byte is sent. It's
72 the major version number of the protocol the client expects to
73 receive. Version 3 and 4 are mostly the same, except that Version 4
74 clients expect server messages to be compressed, version 3 clients
75 not.</p>
76
77 <p>The server sends back his protocol number, which is always 3 in
78 the current protocol. Most of the protocol variation is determined by
79 the server using the client version that is used in the initial login
80 message, not the initial handshake byte.</p>
81
82 <p>After the initial handshake, the client sends uncompressed
83 messages, while the server sends back a zlib-compressed
84 stream (<a href="http://rfc1950.x42.com/">rfc1950</a> and <a href="http://rfc1950.x42.com/">rfc1951</a>).</p>
85
86 <p>All messages have the same header:</p>
87
88 <h4>STRUCTURE message_header</h4>
89 <p>
90 </p>
91 <table border="1" width="100%">
92 <tr>
93 <th width="10%">NAME</th>
94 <th width="10%">TYPE</th>
95 <th width="15%">DEFAULT</th>
96 <th>DESCRIPTION</th>
97 <th width="15%">DEC-GUARD</th>
98 </tr>
99 <tr>
100 <td>_unknown</td>
101 <td>U16</td>
102 <td> </td>
103 <td>
104
105  
106 </td>
107 <td>
108 <b></b>
109  
110 </td>
111 </tr>
112 <tr>
113 <td>length</td>
114 <td>U16</td>
115 <td> </td>
116 <td>
117
118  
119 </td>
120 <td>
121 <b></b>
122  
123 </td>
124 </tr>
125 <tr>
126 <td>type</td>
127 <td>U16</td>
128 <td> </td>
129 <td>
130
131  
132 </td>
133 <td>
134 <b></b>
135  
136 </td>
137 </tr>
138 </table>
139
140 <h2>Primitive types used in the protocol.</h2>
141
142 <p>Apart from the basic types, I need to define some extra types to
143 deal with fixed-point values (based on integer types) or fixed-length
144 strings (either 7-bit-ascii or more limited (<code>A</code>), or UCS-2
145 based (<code>S</code>)).</p>
146
147 <h4>TYPE username</h4>
148 BASE TYPE A, LENGTH 12, MULTIPLIER <br />
149
150 <p>The basic user or login name, used throughout the protocol
151 as a handle to the user.</p>
152
153 <h4>TYPE roomname</h4>
154 BASE TYPE S, LENGTH 25, MULTIPLIER <br />
155 <!-- argh, how horribly broken -->
156
157 <p>Many strings in the protocol are fixed-width for no good reason
158 (maybe this is one reason for using compression in newer versions, as
159 the packets itself are wasting lots of space.</p>
160
161 <h4>TYPE realname</h4>
162 BASE TYPE S, LENGTH 50, MULTIPLIER <br />
163 <h4>TYPE email</h4>
164 BASE TYPE S, LENGTH 70, MULTIPLIER <br />
165 <h4>TYPE userinfo</h4>
166 BASE TYPE S, LENGTH 1000, MULTIPLIER <br />
167 <h4>TYPE url</h4>
168 BASE TYPE A, LENGTH 100, MULTIPLIER <br />
169
170 <p>Used in user_record.</p>
171
172 <h4>TYPE locale</h4>
173 BASE TYPE A, LENGTH 5, MULTIPLIER <br />
174
175 <p>A kind of locale specifier. It seems the general format seems to be
176 lowercase language, underscore, uppercase location, e.g. en_US. More
177 fancy specifications don't fit.</p>
178
179 <h4>TYPE flag</h4>
180 BASE TYPE U8, LENGTH , MULTIPLIER 1<br />
181
182 <p>Just a simple boolean value. 0 means false, and 1 generally true,
183 but I suggest ccepting != 0 as true.</p>
184
185 <h4>TYPE komi16</h4>
186 BASE TYPE I16, LENGTH , MULTIPLIER 2<br />
187 <h4>TYPE komi32</h4>
188 BASE TYPE I32, LENGTH , MULTIPLIER 2<br />
189
190 <p>Komi values are multiplied by 2 to make them integer in the
191 protocol.</p>
192
193 <h4>TYPE result</h4>
194 BASE TYPE I32, LENGTH , MULTIPLIER 2<br />
195
196 <p>The game result is also multiplied by two to give it higher
197 resolution. There are also special values for wins by time etc., either
198 in result or in the score* types, or both :)</p>
199
200 <h4>TYPE score16</h4>
201 BASE TYPE I16, LENGTH , MULTIPLIER 4<br />
202 <h4>TYPE score32</h4>
203 BASE TYPE I32, LENGTH , MULTIPLIER 4<br />
204
205 <p>A score value (used for displaying the score at the end of a game)
206 are multiplied by four for a change (the 0.25 resolution is not
207 used). In game structures it is encoded by dividing by two, though, so
208 watch out!</p>
209
210 <h4>TYPE time</h4>
211 BASE TYPE U32, LENGTH , MULTIPLIER 1000<br />
212
213 <p>Time values are multiplied by 1000, giving them millisecond
214 accuracy.</p>
215
216 <h4>TYPE timestamp</h4>
217 BASE TYPE U64, LENGTH , MULTIPLIER 1000<br />
218
219 <p>64 bit timeval, milliseconds since posix epoch, e.g. <code>my
220 ($year, $month, $day) = (gmtime $date * 0.001)[5,4,3];</code>
221 </p>
222
223 <h4>TYPE password</h4>
224 BASE TYPE U64, LENGTH , MULTIPLIER <br />
225
226 <p>Password is a number calculated as follows (VERY insecure, basically
227 plaintext!): <code>password = 0; for char in characters do password ←
228 password * 1055 + ascii_code (char)</code>
229 </p>
230
231 <h2>Constants, enumeration and set types used in the protocol.</h2>
232
233 <p>Baaah... not yet.</p>
234
235 <h2>Structs used in send &amp; receive messages</h2>
236
237 <h4>STRUCTURE user</h4>
238 CLASS: KGS::User<br />
239 <p>
240
241 <p>Everywhere a user + flags is required, even used in some places
242 where only a username is required. I see no general rule on when a
243 complete user and when a partial user is required.</p>
244 </p>
245 <table border="1" width="100%">
246 <tr>
247 <th width="10%">NAME</th>
248 <th width="10%">TYPE</th>
249 <th width="15%">DEFAULT</th>
250 <th>DESCRIPTION</th>
251 <th width="15%">DEC-GUARD</th>
252 </tr>
253 <tr>
254 <td>name</td>
255 <td>username</td>
256 <td> </td>
257 <td>
258
259  
260 </td>
261 <td>
262 <b></b>
263  
264 </td>
265 </tr>
266 <tr>
267 <td>flags</td>
268 <td>U32</td>
269 <td>1 </td>
270 <td>
271
272  
273 </td>
274 <td>
275 <b></b>
276  
277 </td>
278 </tr>
279 </table>
280
281 <h4>STRUCTURE rules</h4>
282 CLASS: KGS::Rules<br />
283 <p>
284
285 <p>This structure is used for challanges as well as in the special
286 TREE "subprotocol". It tightly encodes the game parameters.</p>
287 </p>
288 <table border="1" width="100%">
289 <tr>
290 <th width="10%">NAME</th>
291 <th width="10%">TYPE</th>
292 <th width="15%">DEFAULT</th>
293 <th>DESCRIPTION</th>
294 <th width="15%">DEC-GUARD</th>
295 </tr>
296 <tr>
297 <td>ruleset</td>
298 <td>U8</td>
299 <td> </td>
300 <td>
301
302  
303 </td>
304 <td>
305 <b></b>
306  
307 </td>
308 </tr>
309 <tr>
310 <td>size</td>
311 <td>U8</td>
312 <td> </td>
313 <td>
314
315  
316 </td>
317 <td>
318 <b></b>
319  
320 </td>
321 </tr>
322 <tr>
323 <td>handicap</td>
324 <td>U8</td>
325 <td> </td>
326 <td>
327
328  
329 </td>
330 <td>
331 <b></b>
332  
333 </td>
334 </tr>
335 <tr>
336 <td>komi</td>
337 <td>komi16</td>
338 <td> </td>
339 <td>
340
341  
342 </td>
343 <td>
344 <b></b>
345  
346 </td>
347 </tr>
348 <tr>
349 <td>timesys</td>
350 <td>U8</td>
351 <td> </td>
352 <td>
353
354  
355 </td>
356 <td>
357 <b></b>
358  
359 </td>
360 </tr>
361 <tr>
362 <td>time</td>
363 <td>U32</td>
364 <td> </td>
365 <td>
366
367  
368 </td>
369 <td>
370 <b></b>
371  
372 </td>
373 </tr>
374 <tr>
375 <td>interval</td>
376 <td>U32</td>
377 <td> </td>
378 <td>
379 byo-yomi time / canadian time
380
381  
382 </td>
383 <td>
384 <b></b>
385  
386 </td>
387 </tr>
388 <tr>
389 <td>count</td>
390 <td>U16</td>
391 <td> </td>
392 <td>
393 periods / moves
394
395  
396 </td>
397 <td>
398 <b></b>
399  
400 </td>
401 </tr>
402 </table>
403
404 <h2>Structs used in send messages</h2>
405
406 <h2>Send messages</h2>
407
408 <h4>
409 <a name="S0000"></a>SEND
410 MESSAGE login</h4>
411 NUMERIC TYPE (hex): 0000<p>
412
413 <p>Sent to login, usually the first message sent. The password needs to be set when the
414 guest flag is true.
415 Possible replies: <a href="#R0001">login(0001)</a>
416 <a href="#R0002">login(0002)</a>
417 <a href="#R0003">login(0003)</a>
418 <a href="#R0004">login(0004)</a>
419 <a href="#R0005">login(0005)</a>
420 <a href="#R0006">login(0006)</a>
421 <a href="#R0018">login(0018)</a>
422 <a href="#R0022">login(0022)</a>. Followed by: <a href="#R001b">timewarning_default(001b)</a> <a href="#R0411">chal_defaults(0411)</a>
423 </p>
424 </p>
425 <table border="1" width="100%">
426 <tr>
427 <th width="10%">NAME</th>
428 <th width="10%">TYPE</th>
429 <th width="15%">DEFAULT</th>
430 <th>DESCRIPTION</th>
431 <th width="15%">DEC-GUARD</th>
432 </tr>
433 <tr>
434 <td>ver_major</td>
435 <td>U32</td>
436 <td>2 </td>
437 <td>
438
439  
440 </td>
441 <td>
442 <b></b>
443  
444 </td>
445 </tr>
446 <tr>
447 <td>ver_minor</td>
448 <td>U32</td>
449 <td>4 </td>
450 <td>
451
452  
453 </td>
454 <td>
455 <b></b>
456  
457 </td>
458 </tr>
459 <tr>
460 <td>ver_micro</td>
461 <td>U32</td>
462 <td>67 </td>
463 <td>
464
465  
466 </td>
467 <td>
468 <b></b>
469  
470 </td>
471 </tr>
472 <tr>
473 <td>name</td>
474 <td>username</td>
475 <td> </td>
476 <td>
477
478  
479 </td>
480 <td>
481 <b></b>
482  
483 </td>
484 </tr>
485 <tr>
486 <td>password</td>
487 <td>password</td>
488 <td>0 </td>
489 <td>
490
491  
492 </td>
493 <td>
494 <b></b>
495  
496 </td>
497 </tr>
498 <tr>
499 <td>guest</td>
500 <td>flag</td>
501 <td>1 </td>
502 <td>
503
504  
505 </td>
506 <td>
507 <b></b>
508  
509 </td>
510 </tr>
511 <tr>
512 <td>_unknown3</td>
513 <td>U16</td>
514 <td>0 </td>
515 <td>
516
517  
518 </td>
519 <td>
520 <b></b>
521  
522 </td>
523 </tr>
524 <tr>
525 <td>locale</td>
526 <td>locale</td>
527 <td>"en_US" </td>
528 <td>
529
530  
531 </td>
532 <td>
533 <b></b>
534  
535 </td>
536 </tr>
537 <tr>
538 <td>clientver</td>
539 <td>DATA</td>
540 <td>"1.4.1_01:Swing app:Sun Microsystems Inc." </td>
541 <td>
542 The "default" is the java vm version, not exactly he client version. However,
543 you should always send a text like "Jonathan's C client bersion 0.6" or somesuch,
544 so the server can, if necessary, block broken clients or client versions.
545
546  
547 </td>
548 <td>
549 <b></b>
550  
551 </td>
552 </tr>
553 </table>
554
555 <h4>
556 <a name="S0007"></a>SEND
557 MESSAGE req_userinfo</h4>
558 NUMERIC TYPE (hex): 0007<p>
559 <p>Request info about a certain user. Possible reply: <a href="#R0008">userinfo(0008)</a>
560 </p>
561 </p>
562 <table border="1" width="100%">
563 <tr>
564 <th width="10%">NAME</th>
565 <th width="10%">TYPE</th>
566 <th width="15%">DEFAULT</th>
567 <th>DESCRIPTION</th>
568 <th width="15%">DEC-GUARD</th>
569 </tr>
570 <tr>
571 <td>name</td>
572 <td>username</td>
573 <td> </td>
574 <td>
575
576  
577 </td>
578 <td>
579 <b></b>
580  
581 </td>
582 </tr>
583 </table>
584
585 <h4>
586 <a name="S0007"></a>SEND
587 MESSAGE update_userinfo</h4>
588 NUMERIC TYPE (hex): 0007<p>
589 <p>Update user info. Message structure is very similar
590 to <a href="#R0008">userinfo(0008)</a>.</p>
591 </p>
592 <table border="1" width="100%">
593 <tr>
594 <th width="10%">NAME</th>
595 <th width="10%">TYPE</th>
596 <th width="15%">DEFAULT</th>
597 <th>DESCRIPTION</th>
598 <th width="15%">DEC-GUARD</th>
599 </tr>
600 <tr>
601 <td>setpass</td>
602 <td>flag</td>
603 <td> </td>
604 <td>
605 Should the password be updated?
606
607  
608 </td>
609 <td>
610 <b></b>
611  
612 </td>
613 </tr>
614 <tr>
615 <td>password</td>
616 <td>password</td>
617 <td>0 </td>
618 <td>
619
620  
621 </td>
622 <td>
623 <b></b>
624  
625 </td>
626 </tr>
627 <tr>
628 <td>realname</td>
629 <td>realname</td>
630 <td> </td>
631 <td>
632
633  
634 </td>
635 <td>
636 <b></b>
637  
638 </td>
639 </tr>
640 <tr>
641 <td>email</td>
642 <td>email</td>
643 <td> </td>
644 <td>
645
646  
647 </td>
648 <td>
649 <b></b>
650  
651 </td>
652 </tr>
653 <tr>
654 <td>info</td>
655 <td>userinfo</td>
656 <td> </td>
657 <td>
658
659  
660 </td>
661 <td>
662 <b></b>
663  
664 </td>
665 </tr>
666 <tr>
667 <td>homepage</td>
668 <td>url</td>
669 <td> </td>
670 <td>
671
672  
673 </td>
674 <td>
675 <b></b>
676  
677 </td>
678 </tr>
679 <tr>
680 <td>_unused</td>
681 <td>U64</td>
682 <td>0 </td>
683 <td>
684
685  
686 </td>
687 <td>
688 <b></b>
689  
690 </td>
691 </tr>
692 <tr>
693 <td>_unused</td>
694 <td>U64</td>
695 <td>0 </td>
696 <td>
697
698  
699 </td>
700 <td>
701 <b></b>
702  
703 </td>
704 </tr>
705 </table>
706
707 <h4>
708 <a name="S0014"></a>SEND
709 MESSAGE req_stats</h4>
710 NUMERIC TYPE (hex): 0014<p>
711 <p>Request server statistics. Replied with <a href="#R0015">stats(0015)</a>
712 </p>
713 </p>
714 <table border="1" width="100%">
715 <tr>
716 <th width="10%">NAME</th>
717 <th width="10%">TYPE</th>
718 <th width="15%">DEFAULT</th>
719 <th>DESCRIPTION</th>
720 <th width="15%">DEC-GUARD</th>
721 </tr>
722 </table>
723
724 <h4>
725 <a name="S001e"></a>SEND
726 MESSAGE req_usergraph</h4>
727 NUMERIC TYPE (hex): 001e<p>
728 <p>Request user graph data, replied with <a href="#R001e">usergraph(001e)</a>.</p>
729 </p>
730 <table border="1" width="100%">
731 <tr>
732 <th width="10%">NAME</th>
733 <th width="10%">TYPE</th>
734 <th width="15%">DEFAULT</th>
735 <th>DESCRIPTION</th>
736 <th width="15%">DEC-GUARD</th>
737 </tr>
738 <tr>
739 <td>name</td>
740 <td>username</td>
741 <td> </td>
742 <td>
743
744  
745 </td>
746 <td>
747 <b></b>
748  
749 </td>
750 </tr>
751 </table>
752
753 <h4>
754 <a name="S001f"></a>SEND
755 MESSAGE fetch_memos</h4>
756 NUMERIC TYPE (hex): 001f<p>
757 <p>Unclear. Fetch all outstanding memos? Replied with <a href="#R001f">memo(001f)</a>
758 </p>
759 </p>
760 <table border="1" width="100%">
761 <tr>
762 <th width="10%">NAME</th>
763 <th width="10%">TYPE</th>
764 <th width="15%">DEFAULT</th>
765 <th>DESCRIPTION</th>
766 <th width="15%">DEC-GUARD</th>
767 </tr>
768 </table>
769
770 <h4>
771 <a name="S0021"></a>SEND
772 MESSAGE req_pic</h4>
773 NUMERIC TYPE (hex): 0021<p>
774 <p>Request a user picture from the server. Results in a <a href="#R0021">userpic(0021)</a>
775 or a timeout.</p>
776 </p>
777 <table border="1" width="100%">
778 <tr>
779 <th width="10%">NAME</th>
780 <th width="10%">TYPE</th>
781 <th width="15%">DEFAULT</th>
782 <th>DESCRIPTION</th>
783 <th width="15%">DEC-GUARD</th>
784 </tr>
785 <tr>
786 <td>name</td>
787 <td>username</td>
788 <td> </td>
789 <td>
790
791  
792 </td>
793 <td>
794 <b></b>
795  
796 </td>
797 </tr>
798 </table>
799
800 <h4>
801 <a name="S0021"></a>SEND
802 MESSAGE upload_pic</h4>
803 NUMERIC TYPE (hex): 0021<p>
804 Same code as pic_req, but with an additional data section that
805 must contain a JPEG image that is &lt;=7KB. It must have 141×200 pixels.
806 </p>
807 <table border="1" width="100%">
808 <tr>
809 <th width="10%">NAME</th>
810 <th width="10%">TYPE</th>
811 <th width="15%">DEFAULT</th>
812 <th>DESCRIPTION</th>
813 <th width="15%">DEC-GUARD</th>
814 </tr>
815 <tr>
816 <td>name</td>
817 <td>username</td>
818 <td> </td>
819 <td>
820
821  
822 </td>
823 <td>
824 <b></b>
825  
826 </td>
827 </tr>
828 <tr>
829 <td>data</td>
830 <td>DATA</td>
831 <td> </td>
832 <td>
833
834  
835 </td>
836 <td>
837 <b></b>
838  
839 </td>
840 </tr>
841 </table>
842
843 <h4>
844 <a name="S0100"></a>SEND
845 MESSAGE gnotice</h4>
846 NUMERIC TYPE (hex): 0100<p>
847 <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results
848 in a <a href="#R0100">gnotice(0100)</a> sent to all users.</p>
849 </p>
850 <table border="1" width="100%">
851 <tr>
852 <th width="10%">NAME</th>
853 <th width="10%">TYPE</th>
854 <th width="15%">DEFAULT</th>
855 <th>DESCRIPTION</th>
856 <th width="15%">DEC-GUARD</th>
857 </tr>
858 <tr>
859 <td>notice</td>
860 <td>STRING</td>
861 <td> </td>
862 <td>
863
864  
865 </td>
866 <td>
867 <b></b>
868  
869 </td>
870 </tr>
871 </table>
872
873 <h4>
874 <a name="S0318"></a>SEND
875 MESSAGE list_rooms</h4>
876 NUMERIC TYPE (hex): 0318<p>
877 <p>List the rooms in a specific group/category. Results in a <a href="#R0318">upd_rooms(0318)</a> message.</p>
878 </p>
879 <table border="1" width="100%">
880 <tr>
881 <th width="10%">NAME</th>
882 <th width="10%">TYPE</th>
883 <th width="15%">DEFAULT</th>
884 <th>DESCRIPTION</th>
885 <th width="15%">DEC-GUARD</th>
886 </tr>
887 <tr>
888 <td>group</td>
889 <td>U8</td>
890 <td> </td>
891 <td>
892
893  
894 </td>
895 <td>
896 <b></b>
897  
898 </td>
899 </tr>
900 </table>
901
902 <h4>
903 <a name="S031a"></a>SEND
904 MESSAGE new_room</h4>
905 NUMERIC TYPE (hex): 031a<p>
906 Create a new room. Not verified.
907 </p>
908 <table border="1" width="100%">
909 <tr>
910 <th width="10%">NAME</th>
911 <th width="10%">TYPE</th>
912 <th width="15%">DEFAULT</th>
913 <th>DESCRIPTION</th>
914 <th width="15%">DEC-GUARD</th>
915 </tr>
916 <tr>
917 <td>name</td>
918 <td>username</td>
919 <td> </td>
920 <td>
921
922  
923 </td>
924 <td>
925 <b></b>
926  
927 </td>
928 </tr>
929 <tr>
930 <td>i1</td>
931 <td>U32</td>
932 <td>0 </td>
933 <td>
934
935  
936 </td>
937 <td>
938 <b></b>
939  
940 </td>
941 </tr>
942 <tr>
943 <td>b1</td>
944 <td>U8</td>
945 <td>0 </td>
946 <td>
947
948  
949 </td>
950 <td>
951 <b></b>
952  
953 </td>
954 </tr>
955 <tr>
956 <td>b2</td>
957 <td>U8</td>
958 <td>255 </td>
959 <td>
960
961  
962 </td>
963 <td>
964 <b></b>
965  
966 </td>
967 </tr>
968 <tr>
969 <td>b3</td>
970 <td>U8</td>
971 <td>255 </td>
972 <td>
973
974  
975 </td>
976 <td>
977 <b></b>
978  
979 </td>
980 </tr>
981 <tr>
982 <td>group</td>
983 <td>U8</td>
984 <td>1 </td>
985 <td>
986
987  
988 </td>
989 <td>
990 <b></b>
991  
992 </td>
993 </tr>
994 <tr>
995 <td>name</td>
996 <td>STRING</td>
997 <td> </td>
998 <td>
999
1000  
1001 </td>
1002 <td>
1003 <b></b>
1004  
1005 </td>
1006 </tr>
1007 <tr>
1008 <td>description</td>
1009 <td>STRING</td>
1010 <td> </td>
1011 <td>
1012
1013  
1014 </td>
1015 <td>
1016 <b></b>
1017  
1018 </td>
1019 </tr>
1020 <tr>
1021 <td>flags</td>
1022 <td>U8</td>
1023 <td> </td>
1024 <td>
1025 0x10 .. private room etc.. see code
1026
1027  
1028 </td>
1029 <td>
1030 <b></b>
1031  
1032 </td>
1033 </tr>
1034 </table>
1035
1036 <h4>
1037 <a name="S0413"></a>SEND
1038 MESSAGE req_game_record</h4>
1039 NUMERIC TYPE (hex): 0413<p>
1040 <p>Requests part of the users game record to be sent. Results in a <a href="#R0414">game_record(0414)</a> or maybe a timeout.</p>
1041 </p>
1042 <table border="1" width="100%">
1043 <tr>
1044 <th width="10%">NAME</th>
1045 <th width="10%">TYPE</th>
1046 <th width="15%">DEFAULT</th>
1047 <th>DESCRIPTION</th>
1048 <th width="15%">DEC-GUARD</th>
1049 </tr>
1050 <tr>
1051 <td>name</td>
1052 <td>username</td>
1053 <td> </td>
1054 <td>
1055
1056  
1057 </td>
1058 <td>
1059 <b></b>
1060  
1061 </td>
1062 </tr>
1063 <tr>
1064 <td>timestamp</td>
1065 <td>timestamp</td>
1066 <td> </td>
1067 <td>
1068 If zero, start at the newest games, else only send games
1069 before the given timestap.
1070
1071  
1072 </td>
1073 <td>
1074 <b></b>
1075  
1076 </td>
1077 </tr>
1078 </table>
1079
1080 <h4>
1081 <a name="S4300"></a>SEND
1082 MESSAGE join_room</h4>
1083 NUMERIC TYPE (hex): 4300<p>
1084 <p>Joins the given room. <a href="#R4300">join_room(4300)</a> messages for yourself
1085 and all users in that room, as well as the initial gamelist, are
1086 send if the room exists. If not, timeout...</p>
1087 </p>
1088 <table border="1" width="100%">
1089 <tr>
1090 <th width="10%">NAME</th>
1091 <th width="10%">TYPE</th>
1092 <th width="15%">DEFAULT</th>
1093 <th>DESCRIPTION</th>
1094 <th width="15%">DEC-GUARD</th>
1095 </tr>
1096 <tr>
1097 <td>channel</td>
1098 <td>U16</td>
1099 <td> </td>
1100 <td>
1101
1102  
1103 </td>
1104 <td>
1105 <b></b>
1106  
1107 </td>
1108 </tr>
1109 <tr>
1110 <td>user</td>
1111 <td>user</td>
1112 <td> </td>
1113 <td>
1114
1115  
1116 </td>
1117 <td>
1118 <b></b>
1119  
1120 </td>
1121 </tr>
1122 </table>
1123
1124 <h4>
1125 <a name="S4301"></a>SEND
1126 MESSAGE msg_room</h4>
1127 NUMERIC TYPE (hex): 4301<p>
1128 Send a message to the room.
1129 </p>
1130 <table border="1" width="100%">
1131 <tr>
1132 <th width="10%">NAME</th>
1133 <th width="10%">TYPE</th>
1134 <th width="15%">DEFAULT</th>
1135 <th>DESCRIPTION</th>
1136 <th width="15%">DEC-GUARD</th>
1137 </tr>
1138 <tr>
1139 <td>channel</td>
1140 <td>U16</td>
1141 <td> </td>
1142 <td>
1143
1144  
1145 </td>
1146 <td>
1147 <b></b>
1148  
1149 </td>
1150 </tr>
1151 <tr>
1152 <td>name</td>
1153 <td>username</td>
1154 <td> </td>
1155 <td>
1156 Must be the login-name of the user.
1157
1158  
1159 </td>
1160 <td>
1161 <b></b>
1162  
1163 </td>
1164 </tr>
1165 <tr>
1166 <td>message</td>
1167 <td>STRING</td>
1168 <td> </td>
1169 <td>
1170
1171  
1172 </td>
1173 <td>
1174 <b></b>
1175  
1176 </td>
1177 </tr>
1178 </table>
1179
1180 <h4>
1181 <a name="S4302"></a>SEND
1182 MESSAGE part_room</h4>
1183 NUMERIC TYPE (hex): 4302<p>
1184 Remove yourself (or maybe others as admin) from a room.
1185 </p>
1186 <table border="1" width="100%">
1187 <tr>
1188 <th width="10%">NAME</th>
1189 <th width="10%">TYPE</th>
1190 <th width="15%">DEFAULT</th>
1191 <th>DESCRIPTION</th>
1192 <th width="15%">DEC-GUARD</th>
1193 </tr>
1194 <tr>
1195 <td>channel</td>
1196 <td>U16</td>
1197 <td> </td>
1198 <td>
1199
1200  
1201 </td>
1202 <td>
1203 <b></b>
1204  
1205 </td>
1206 </tr>
1207 <tr>
1208 <td>name</td>
1209 <td>username</td>
1210 <td> </td>
1211 <td>
1212
1213  
1214 </td>
1215 <td>
1216 <b></b>
1217  
1218 </td>
1219 </tr>
1220 </table>
1221
1222 <h4>
1223 <a name="S4305"></a>SEND
1224 MESSAGE new_game</h4>
1225 NUMERIC TYPE (hex): 4305<p>
1226 Unclear. Start a new game.
1227 </p>
1228 <table border="1" width="100%">
1229 <tr>
1230 <th width="10%">NAME</th>
1231 <th width="10%">TYPE</th>
1232 <th width="15%">DEFAULT</th>
1233 <th>DESCRIPTION</th>
1234 <th width="15%">DEC-GUARD</th>
1235 </tr>
1236 <tr>
1237 <td>channel</td>
1238 <td>U16</td>
1239 <td> </td>
1240 <td>
1241
1242  
1243 </td>
1244 <td>
1245 <b></b>
1246  
1247 </td>
1248 </tr>
1249 <tr>
1250 <td>id</td>
1251 <td>U16</td>
1252 <td> </td>
1253 <td>
1254
1255  
1256 </td>
1257 <td>
1258 <b></b>
1259  
1260 </td>
1261 </tr>
1262 <tr>
1263 <td>gametype</td>
1264 <td>U32</td>
1265 <td> </td>
1266 <td>
1267
1268  
1269 </td>
1270 <td>
1271 <b></b>
1272  
1273 </td>
1274 </tr>
1275 <tr>
1276 <td>rules</td>
1277 <td>rules</td>
1278 <td> </td>
1279 <td>
1280
1281  
1282 </td>
1283 <td>
1284 <b></b>
1285  
1286 </td>
1287 </tr>
1288 <tr>
1289 <td>notes</td>
1290 <td>STRING</td>
1291 <td> </td>
1292 <td>
1293
1294  
1295 </td>
1296 <td>
1297 <b></b>
1298  
1299 </td>
1300 </tr>
1301 </table>
1302
1303 <h4>
1304 <a name="S430b"></a>SEND
1305 MESSAGE req_games</h4>
1306 NUMERIC TYPE (hex): 430b<p>
1307 Request to update room game list (send this once per minute to get
1308 updated). Results in upd_games messages.
1309 </p>
1310 <table border="1" width="100%">
1311 <tr>
1312 <th width="10%">NAME</th>
1313 <th width="10%">TYPE</th>
1314 <th width="15%">DEFAULT</th>
1315 <th>DESCRIPTION</th>
1316 <th width="15%">DEC-GUARD</th>
1317 </tr>
1318 <tr>
1319 <td>channel</td>
1320 <td>U16</td>
1321 <td> </td>
1322 <td>
1323
1324  
1325 </td>
1326 <td>
1327 <b></b>
1328  
1329 </td>
1330 </tr>
1331 </table>
1332
1333 <h4>
1334 <a name="S4319"></a>SEND
1335 MESSAGE req_desc</h4>
1336 NUMERIC TYPE (hex): 4319<p>
1337 Request room description.
1338 </p>
1339 <table border="1" width="100%">
1340 <tr>
1341 <th width="10%">NAME</th>
1342 <th width="10%">TYPE</th>
1343 <th width="15%">DEFAULT</th>
1344 <th>DESCRIPTION</th>
1345 <th width="15%">DEC-GUARD</th>
1346 </tr>
1347 <tr>
1348 <td>channel</td>
1349 <td>U16</td>
1350 <td> </td>
1351 <td>
1352
1353  
1354 </td>
1355 <td>
1356 <b></b>
1357  
1358 </td>
1359 </tr>
1360 </table>
1361
1362 <h4>
1363 <a name="S4400"></a>SEND
1364 MESSAGE send_chal</h4>
1365 NUMERIC TYPE (hex): 4400<p>
1366 Unclear.
1367 </p>
1368 <table border="1" width="100%">
1369 <tr>
1370 <th width="10%">NAME</th>
1371 <th width="10%">TYPE</th>
1372 <th width="15%">DEFAULT</th>
1373 <th>DESCRIPTION</th>
1374 <th width="15%">DEC-GUARD</th>
1375 </tr>
1376 <tr>
1377 <td>channel</td>
1378 <td>U16</td>
1379 <td> </td>
1380 <td>
1381
1382  
1383 </td>
1384 <td>
1385 <b></b>
1386  
1387 </td>
1388 </tr>
1389 <tr>
1390 <td>black</td>
1391 <td>username</td>
1392 <td> </td>
1393 <td>
1394
1395  
1396 </td>
1397 <td>
1398 <b></b>
1399  
1400 </td>
1401 </tr>
1402 <tr>
1403 <td>white</td>
1404 <td>username</td>
1405 <td> </td>
1406 <td>
1407 More following... TREE or challenge.
1408
1409  
1410 </td>
1411 <td>
1412 <b></b>
1413  
1414 </td>
1415 </tr>
1416 </table>
1417
1418 <h4>
1419 <a name="S4403"></a>SEND
1420 MESSAGE join_game</h4>
1421 NUMERIC TYPE (hex): 4403<p>
1422 Join a game. See join_room.
1423 </p>
1424 <table border="1" width="100%">
1425 <tr>
1426 <th width="10%">NAME</th>
1427 <th width="10%">TYPE</th>
1428 <th width="15%">DEFAULT</th>
1429 <th>DESCRIPTION</th>
1430 <th width="15%">DEC-GUARD</th>
1431 </tr>
1432 <tr>
1433 <td>channel</td>
1434 <td>U16</td>
1435 <td> </td>
1436 <td>
1437
1438  
1439 </td>
1440 <td>
1441 <b></b>
1442  
1443 </td>
1444 </tr>
1445 <tr>
1446 <td>user</td>
1447 <td>user</td>
1448 <td> </td>
1449 <td>
1450
1451  
1452 </td>
1453 <td>
1454 <b></b>
1455  
1456 </td>
1457 </tr>
1458 </table>
1459
1460 <h4>
1461 <a name="S4404"></a>SEND
1462 MESSAGE part_game</h4>
1463 NUMERIC TYPE (hex): 4404<p>
1464 Leave (or kick as admin?) a certain user from a game.
1465 </p>
1466 <table border="1" width="100%">
1467 <tr>
1468 <th width="10%">NAME</th>
1469 <th width="10%">TYPE</th>
1470 <th width="15%">DEFAULT</th>
1471 <th>DESCRIPTION</th>
1472 <th width="15%">DEC-GUARD</th>
1473 </tr>
1474 <tr>
1475 <td>channel</td>
1476 <td>U16</td>
1477 <td> </td>
1478 <td>
1479
1480  
1481 </td>
1482 <td>
1483 <b></b>
1484  
1485 </td>
1486 </tr>
1487 <tr>
1488 <td>name</td>
1489 <td>username</td>
1490 <td> </td>
1491 <td>
1492
1493  
1494 </td>
1495 <td>
1496 <b></b>
1497  
1498 </td>
1499 </tr>
1500 </table>
1501
1502 <h4>
1503 <a name="S4405"></a>SEND
1504 MESSAGE set_tree</h4>
1505 NUMERIC TYPE (hex): 4405<p>
1506 Upload a partial game tree to the server. This is used
1507 to send moves and even in-game comments to the server. For the comments,
1508 the server prepends the username and rank.
1509 </p>
1510 <table border="1" width="100%">
1511 <tr>
1512 <th width="10%">NAME</th>
1513 <th width="10%">TYPE</th>
1514 <th width="15%">DEFAULT</th>
1515 <th>DESCRIPTION</th>
1516 <th width="15%">DEC-GUARD</th>
1517 </tr>
1518 <tr>
1519 <td>channel</td>
1520 <td>U16</td>
1521 <td> </td>
1522 <td>
1523
1524  
1525 </td>
1526 <td>
1527 <b></b>
1528  
1529 </td>
1530 </tr>
1531 <tr>
1532 <td>tree</td>
1533 <td>TREE</td>
1534 <td> </td>
1535 <td>
1536
1537  
1538 </td>
1539 <td>
1540 <b></b>
1541  
1542 </td>
1543 </tr>
1544 </table>
1545
1546 <h4>
1547 <a name="S4408"></a>SEND
1548 MESSAGE get_tree</h4>
1549 NUMERIC TYPE (hex): 4408<p>
1550 Request the game tree starting at a given node. This is used
1551 when the server only sends a partial tree (with end code "more").
1552 </p>
1553 <table border="1" width="100%">
1554 <tr>
1555 <th width="10%">NAME</th>
1556 <th width="10%">TYPE</th>
1557 <th width="15%">DEFAULT</th>
1558 <th>DESCRIPTION</th>
1559 <th width="15%">DEC-GUARD</th>
1560 </tr>
1561 <tr>
1562 <td>channel</td>
1563 <td>U16</td>
1564 <td> </td>
1565 <td>
1566
1567  
1568 </td>
1569 <td>
1570 <b></b>
1571  
1572 </td>
1573 </tr>
1574 <tr>
1575 <td>node</td>
1576 <td>U32</td>
1577 <td> </td>
1578 <td>
1579
1580  
1581 </td>
1582 <td>
1583 <b></b>
1584  
1585 </td>
1586 </tr>
1587 </table>
1588
1589 <h4>
1590 <a name="S440c"></a>SEND
1591 MESSAGE claim_win</h4>
1592 NUMERIC TYPE (hex): 440c<p>
1593 Unclear.
1594 </p>
1595 <table border="1" width="100%">
1596 <tr>
1597 <th width="10%">NAME</th>
1598 <th width="10%">TYPE</th>
1599 <th width="15%">DEFAULT</th>
1600 <th>DESCRIPTION</th>
1601 <th width="15%">DEC-GUARD</th>
1602 </tr>
1603 <tr>
1604 <td>channel</td>
1605 <td>U16</td>
1606 <td> </td>
1607 <td>
1608
1609  
1610 </td>
1611 <td>
1612 <b></b>
1613  
1614 </td>
1615 </tr>
1616 <tr>
1617 <td>_byte</td>
1618 <td>U8 </td>
1619 <td> </td>
1620 <td>
1621 Player colour maybe? Unclear.
1622
1623  
1624 </td>
1625 <td>
1626 <b></b>
1627  
1628 </td>
1629 </tr>
1630 </table>
1631
1632 <h4>
1633 <a name="S440d"></a>SEND
1634 MESSAGE add_time</h4>
1635 NUMERIC TYPE (hex): 440d<p>
1636 Not checked.
1637
1638 </p>
1639 <table border="1" width="100%">
1640 <tr>
1641 <th width="10%">NAME</th>
1642 <th width="10%">TYPE</th>
1643 <th width="15%">DEFAULT</th>
1644 <th>DESCRIPTION</th>
1645 <th width="15%">DEC-GUARD</th>
1646 </tr>
1647 <tr>
1648 <td>channel</td>
1649 <td>U16</td>
1650 <td> </td>
1651 <td>
1652
1653  
1654 </td>
1655 <td>
1656 <b></b>
1657  
1658 </td>
1659 </tr>
1660 <tr>
1661 <td>time</td>
1662 <td>U32</td>
1663 <td> </td>
1664 <td>
1665
1666  
1667 </td>
1668 <td>
1669 <b></b>
1670  
1671 </td>
1672 </tr>
1673 <tr>
1674 <td>player</td>
1675 <td>U8</td>
1676 <td> </td>
1677 <td>
1678
1679  
1680 </td>
1681 <td>
1682 <b></b>
1683  
1684 </td>
1685 </tr>
1686 </table>
1687
1688 <h4>
1689 <a name="S440f"></a>SEND
1690 MESSAGE grant_undo</h4>
1691 NUMERIC TYPE (hex): 440f<p>
1692 Can be send after a req_undo message was received to grant the undo.
1693 </p>
1694 <table border="1" width="100%">
1695 <tr>
1696 <th width="10%">NAME</th>
1697 <th width="10%">TYPE</th>
1698 <th width="15%">DEFAULT</th>
1699 <th>DESCRIPTION</th>
1700 <th width="15%">DEC-GUARD</th>
1701 </tr>
1702 <tr>
1703 <td>channel</td>
1704 <td>U16</td>
1705 <td> </td>
1706 <td>
1707
1708  
1709 </td>
1710 <td>
1711 <b></b>
1712  
1713 </td>
1714 </tr>
1715 </table>
1716
1717 <h4>
1718 <a name="S4410"></a>SEND
1719 MESSAGE resign_game</h4>
1720 NUMERIC TYPE (hex): 4410<p>
1721 Resign the game.
1722 </p>
1723 <table border="1" width="100%">
1724 <tr>
1725 <th width="10%">NAME</th>
1726 <th width="10%">TYPE</th>
1727 <th width="15%">DEFAULT</th>
1728 <th>DESCRIPTION</th>
1729 <th width="15%">DEC-GUARD</th>
1730 </tr>
1731 <tr>
1732 <td>channel</td>
1733 <td>U16</td>
1734 <td> </td>
1735 <td>
1736
1737  
1738 </td>
1739 <td>
1740 <b></b>
1741  
1742 </td>
1743 </tr>
1744 <tr>
1745 <td>player</td>
1746 <td>U8</td>
1747 <td> </td>
1748 <td>
1749
1750  
1751 </td>
1752 <td>
1753 <b></b>
1754  
1755 </td>
1756 </tr>
1757 </table>
1758
1759 <h4>
1760 <a name="S441a"></a>SEND
1761 MESSAGE set_teacher</h4>
1762 NUMERIC TYPE (hex): 441a<p>
1763 Change the teacher to somebody else (or possibly yourself == take it).
1764 </p>
1765 <table border="1" width="100%">
1766 <tr>
1767 <th width="10%">NAME</th>
1768 <th width="10%">TYPE</th>
1769 <th width="15%">DEFAULT</th>
1770 <th>DESCRIPTION</th>
1771 <th width="15%">DEC-GUARD</th>
1772 </tr>
1773 <tr>
1774 <td>channel</td>
1775 <td>U16</td>
1776 <td> </td>
1777 <td>
1778
1779  
1780 </td>
1781 <td>
1782 <b></b>
1783  
1784 </td>
1785 </tr>
1786 <tr>
1787 <td>name</td>
1788 <td>username</td>
1789 <td> </td>
1790 <td>
1791
1792  
1793 </td>
1794 <td>
1795 <b></b>
1796  
1797 </td>
1798 </tr>
1799 </table>
1800
1801 <h4>
1802 <a name="S4422"></a>SEND
1803 MESSAGE add_user</h4>
1804 NUMERIC TYPE (hex): 4422<p>
1805 Unclear. Maybe allow users to talk? No idea, really.
1806
1807 </p>
1808 <table border="1" width="100%">
1809 <tr>
1810 <th width="10%">NAME</th>
1811 <th width="10%">TYPE</th>
1812 <th width="15%">DEFAULT</th>
1813 <th>DESCRIPTION</th>
1814 <th width="15%">DEC-GUARD</th>
1815 </tr>
1816 <tr>
1817 <td>channel</td>
1818 <td>U16</td>
1819 <td> </td>
1820 <td>
1821
1822  
1823 </td>
1824 <td>
1825 <b></b>
1826  
1827 </td>
1828 </tr>
1829 <tr>
1830 <td>othername</td>
1831 <td>username</td>
1832 <td> </td>
1833 <td>
1834
1835  
1836 </td>
1837 <td>
1838 <b></b>
1839  
1840 </td>
1841 </tr>
1842 <tr>
1843 <td>name</td>
1844 <td>username</td>
1845 <td> </td>
1846 <td>; # gives user access to the game (to what? ;)
1847
1848  
1849 </td>
1850 <td>
1851 <b></b>
1852  
1853 </td>
1854 </tr>
1855 </table>
1856
1857 <h4>
1858 <a name="S4423"></a>SEND
1859 MESSAGE set_privacy</h4>
1860 NUMERIC TYPE (hex): 4423<p>
1861 Probably sets the "quiet" flag. Not checked.
1862 </p>
1863 <table border="1" width="100%">
1864 <tr>
1865 <th width="10%">NAME</th>
1866 <th width="10%">TYPE</th>
1867 <th width="15%">DEFAULT</th>
1868 <th>DESCRIPTION</th>
1869 <th width="15%">DEC-GUARD</th>
1870 </tr>
1871 <tr>
1872 <td>channel</td>
1873 <td>U16</td>
1874 <td> </td>
1875 <td>
1876
1877  
1878 </td>
1879 <td>
1880 <b></b>
1881  
1882 </td>
1883 </tr>
1884 <tr>
1885 <td>private</td>
1886 <td>U8</td>
1887 <td> </td>
1888 <td>
1889
1890  
1891 </td>
1892 <td>
1893 <b></b>
1894  
1895 </td>
1896 </tr>
1897 </table>
1898
1899 <h4>
1900 <a name="S4429"></a>SEND
1901 MESSAGE reject_chal</h4>
1902 NUMERIC TYPE (hex): 4429<p>
1903 Reject a challenge from a given user. Not checked.
1904
1905 </p>
1906 <table border="1" width="100%">
1907 <tr>
1908 <th width="10%">NAME</th>
1909 <th width="10%">TYPE</th>
1910 <th width="15%">DEFAULT</th>
1911 <th>DESCRIPTION</th>
1912 <th width="15%">DEC-GUARD</th>
1913 </tr>
1914 <tr>
1915 <td>channel</td>
1916 <td>U16</td>
1917 <td> </td>
1918 <td>
1919
1920  
1921 </td>
1922 <td>
1923 <b></b>
1924  
1925 </td>
1926 </tr>
1927 <tr>
1928 <td>name</td>
1929 <td>username</td>
1930 <td> </td>
1931 <td>
1932
1933  
1934 </td>
1935 <td>
1936 <b></b>
1937  
1938 </td>
1939 </tr>
1940 </table>
1941
1942 <h4>
1943 <a name="S4433"></a>SEND
1944 MESSAGE req_result</h4>
1945 NUMERIC TYPE (hex): 4433<p>
1946 I forgot.
1947
1948 </p>
1949 <table border="1" width="100%">
1950 <tr>
1951 <th width="10%">NAME</th>
1952 <th width="10%">TYPE</th>
1953 <th width="15%">DEFAULT</th>
1954 <th>DESCRIPTION</th>
1955 <th width="15%">DEC-GUARD</th>
1956 </tr>
1957 <tr>
1958 <td>channel</td>
1959 <td>U16</td>
1960 <td> </td>
1961 <td>
1962
1963  
1964 </td>
1965 <td>
1966 <b></b>
1967  
1968 </td>
1969 </tr>
1970 </table>
1971
1972 <h2>Structs mainly used in receive messages</h2>
1973
1974 <h4>STRUCTURE challenge_defaults</h4>
1975 <p>
1976 Send soon after log-in to set the defaults for game challenges.
1977 </p>
1978 <table border="1" width="100%">
1979 <tr>
1980 <th width="10%">NAME</th>
1981 <th width="10%">TYPE</th>
1982 <th width="15%">DEFAULT</th>
1983 <th>DESCRIPTION</th>
1984 <th width="15%">DEC-GUARD</th>
1985 </tr>
1986 <tr>
1987 <td>gametype</td>
1988 <td>U32</td>
1989 <td> </td>
1990 <td>
1991
1992  
1993 </td>
1994 <td>
1995 <b></b>
1996  
1997 </td>
1998 </tr>
1999 <tr>
2000 <td>size</td>
2001 <td>U32</td>
2002 <td> </td>
2003 <td>
2004
2005  
2006 </td>
2007 <td>
2008 <b></b>
2009  
2010 </td>
2011 </tr>
2012 <tr>
2013 <td>timesys</td>
2014 <td>U32</td>
2015 <td> </td>
2016 <td>
2017
2018  
2019 </td>
2020 <td>
2021 <b></b>
2022  
2023 </td>
2024 </tr>
2025 <tr>
2026 <td>time</td>
2027 <td>U32</td>
2028 <td> </td>
2029 <td>
2030
2031  
2032 </td>
2033 <td>
2034 <b></b>
2035  
2036 </td>
2037 </tr>
2038 <tr>
2039 <td>byo_time</td>
2040 <td>U32</td>
2041 <td> </td>
2042 <td>
2043
2044  
2045 </td>
2046 <td>
2047 <b></b>
2048  
2049 </td>
2050 </tr>
2051 <tr>
2052 <td>byo_periods</td>
2053 <td>U32</td>
2054 <td> </td>
2055 <td>
2056
2057  
2058 </td>
2059 <td>
2060 <b></b>
2061  
2062 </td>
2063 </tr>
2064 <tr>
2065 <td>can_time</td>
2066 <td>U32</td>
2067 <td> </td>
2068 <td>
2069
2070  
2071 </td>
2072 <td>
2073 <b></b>
2074  
2075 </td>
2076 </tr>
2077 <tr>
2078 <td>can_stones</td>
2079 <td>U32</td>
2080 <td> </td>
2081 <td>
2082
2083  
2084 </td>
2085 <td>
2086 <b></b>
2087  
2088 </td>
2089 </tr>
2090 </table>
2091
2092 <h4>STRUCTURE challenge</h4>
2093 CLASS: KGS::Challenge<br />
2094 <p>
2095 A challenge.
2096
2097 </p>
2098 <table border="1" width="100%">
2099 <tr>
2100 <th width="10%">NAME</th>
2101 <th width="10%">TYPE</th>
2102 <th width="15%">DEFAULT</th>
2103 <th>DESCRIPTION</th>
2104 <th width="15%">DEC-GUARD</th>
2105 </tr>
2106 <tr>
2107 <td>user1</td>
2108 <td>user</td>
2109 <td> </td>
2110 <td>
2111
2112  
2113 </td>
2114 <td>
2115 <b></b>
2116  
2117 </td>
2118 </tr>
2119 <tr>
2120 <td>user2</td>
2121 <td>user</td>
2122 <td> </td>
2123 <td>
2124
2125  
2126 </td>
2127 <td>
2128 <b></b>
2129  
2130 </td>
2131 </tr>
2132 <tr>
2133 <td>gametype</td>
2134 <td>U32</td>
2135 <td> </td>
2136 <td>
2137
2138  
2139 </td>
2140 <td>
2141 <b></b>
2142  
2143 </td>
2144 </tr>
2145 <tr>
2146 <td>rules</td>
2147 <td>rules</td>
2148 <td> </td>
2149 <td>
2150 Maybe the rules" are in TREE format. I forgot.
2151
2152  
2153 </td>
2154 <td>
2155 <b></b>
2156  
2157 </td>
2158 </tr>
2159 </table>
2160
2161 <h4>STRUCTURE game</h4>
2162 CLASS: KGS::Game<br />
2163 <p>
2164 Basic information about a game. Used in rooms for the gamelist and
2165 in games to detect when a game is saved, changed type (e.g. R =&gt; D)
2166 etc.
2167
2168 </p>
2169 <table border="1" width="100%">
2170 <tr>
2171 <th width="10%">NAME</th>
2172 <th width="10%">TYPE</th>
2173 <th width="15%">DEFAULT</th>
2174 <th>DESCRIPTION</th>
2175 <th width="15%">DEC-GUARD</th>
2176 </tr>
2177 <tr>
2178 <td>channel</td>
2179 <td>U16</td>
2180 <td> </td>
2181 <td>
2182
2183  
2184 </td>
2185 <td>
2186 <b></b>
2187  
2188 </td>
2189 </tr>
2190 <tr>
2191 <td>type</td>
2192 <td>U32</td>
2193 <td> </td>
2194 <td>
2195
2196  
2197 </td>
2198 <td>
2199 <b></b>
2200  
2201 </td>
2202 </tr>
2203 <tr>
2204 <td>user1</td>
2205 <td>user</td>
2206 <td> </td>
2207 <td>
2208 White
2209
2210  
2211 </td>
2212 <td>
2213 <b></b>
2214  
2215 </td>
2216 </tr>
2217 <tr>
2218 <td>user2</td>
2219 <td>user</td>
2220 <td> </td>
2221 <td>
2222 Black
2223
2224  
2225 </td>
2226 <td>
2227 <b></b>
2228  
2229 </td>
2230 </tr>
2231 <tr>
2232 <td>user3</td>
2233 <td>user</td>
2234 <td> </td>
2235 <td>
2236 Owner
2237
2238  
2239 </td>
2240 <td>
2241 <b></b>
2242  
2243 </td>
2244 </tr>
2245 <tr>
2246 <td>size</td>
2247 <td>U32</td>
2248 <td> </td>
2249 <td>
2250
2251  
2252 </td>
2253 <td>
2254 <b></b>
2255  
2256 </td>
2257 </tr>
2258 <tr>
2259 <td>handicap</td>
2260 <td>I32</td>
2261 <td> </td>
2262 <td>
2263 &lt; 0 not fully setup
2264
2265  
2266 </td>
2267 <td>
2268 <b></b>
2269  
2270 </td>
2271 </tr>
2272 <tr>
2273 <td>komi</td>
2274 <td>komi32</td>
2275 <td> </td>
2276 <td>
2277
2278  
2279 </td>
2280 <td>
2281 <b></b>
2282  
2283 </td>
2284 </tr>
2285 <tr>
2286 <td>moves</td>
2287 <td>I16</td>
2288 <td> </td>
2289 <td>
2290 This field reflects either the movenum or the score, sorry, not even guards help, as
2291 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
2292 score (NOT score16!).
2293
2294  
2295 </td>
2296 <td>
2297 <b></b>
2298  
2299 </td>
2300 </tr>
2301 <tr>
2302 <td>flags</td>
2303 <td>U16</td>
2304 <td> </td>
2305 <td>
2306
2307  
2308 </td>
2309 <td>
2310 <b></b>
2311  
2312 </td>
2313 </tr>
2314 <tr>
2315 <td>observers</td>
2316 <td>U32</td>
2317 <td> </td>
2318 <td>
2319
2320  
2321 </td>
2322 <td>
2323 <b></b>
2324  
2325 </td>
2326 </tr>
2327 <tr>
2328 <td>saved</td>
2329 <td>flag</td>
2330 <td> </td>
2331 <td>
2332
2333  
2334 </td>
2335 <td>
2336 <b></b>
2337  
2338 </td>
2339 </tr>
2340 <tr>
2341 <td>notes</td>
2342 <td>STRING</td>
2343 <td> </td>
2344 <td>
2345
2346  
2347 </td>
2348 <td>
2349 <b>handicap</b> &lt; 0
2350  
2351 </td>
2352 </tr>
2353 </table>
2354
2355 <h4>STRUCTURE room_obs</h4>
2356 <p>
2357 Obsolete.
2358
2359 </p>
2360 <table border="1" width="100%">
2361 <tr>
2362 <th width="10%">NAME</th>
2363 <th width="10%">TYPE</th>
2364 <th width="15%">DEFAULT</th>
2365 <th>DESCRIPTION</th>
2366 <th width="15%">DEC-GUARD</th>
2367 </tr>
2368 <tr>
2369 <td>name</td>
2370 <td>roomname</td>
2371 <td> </td>
2372 <td>
2373
2374  
2375 </td>
2376 <td>
2377 <b></b>
2378  
2379 </td>
2380 </tr>
2381 <tr>
2382 <td>channel</td>
2383 <td>U16</td>
2384 <td> </td>
2385 <td>
2386
2387  
2388 </td>
2389 <td>
2390 <b></b>
2391  
2392 </td>
2393 </tr>
2394 <tr>
2395 <td>flags</td>
2396 <td>U32</td>
2397 <td> </td>
2398 <td>
2399
2400  
2401 </td>
2402 <td>
2403 <b></b>
2404  
2405 </td>
2406 </tr>
2407 <tr>
2408 <td>users</td>
2409 <td>U32</td>
2410 <td> </td>
2411 <td>
2412
2413  
2414 </td>
2415 <td>
2416 <b></b>
2417  
2418 </td>
2419 </tr>
2420 </table>
2421
2422 <h4>STRUCTURE room</h4>
2423 CLASS: KGS::Room<br />
2424 <p>
2425 </p>
2426 <table border="1" width="100%">
2427 <tr>
2428 <th width="10%">NAME</th>
2429 <th width="10%">TYPE</th>
2430 <th width="15%">DEFAULT</th>
2431 <th>DESCRIPTION</th>
2432 <th width="15%">DEC-GUARD</th>
2433 </tr>
2434 <tr>
2435 <td>channel</td>
2436 <td>U16</td>
2437 <td> </td>
2438 <td>
2439
2440  
2441 </td>
2442 <td>
2443 <b></b>
2444  
2445 </td>
2446 </tr>
2447 <tr>
2448 <td>flags</td>
2449 <td>U8</td>
2450 <td> </td>
2451 <td>
2452
2453  
2454 </td>
2455 <td>
2456 <b></b>
2457  
2458 </td>
2459 </tr>
2460 <tr>
2461 <td>group</td>
2462 <td>U8</td>
2463 <td> </td>
2464 <td>
2465
2466  
2467 </td>
2468 <td>
2469 <b></b>
2470  
2471 </td>
2472 </tr>
2473 <tr>
2474 <td>users</td>
2475 <td>U16</td>
2476 <td> </td>
2477 <td>
2478
2479  
2480 </td>
2481 <td>
2482 <b></b>
2483  
2484 </td>
2485 </tr>
2486 <tr>
2487 <td>games</td>
2488 <td>U16</td>
2489 <td> </td>
2490 <td>
2491
2492  
2493 </td>
2494 <td>
2495 <b></b>
2496  
2497 </td>
2498 </tr>
2499 <tr>
2500 <td>name</td>
2501 <td>STRING</td>
2502 <td> </td>
2503 <td>
2504
2505  
2506 </td>
2507 <td>
2508 <b></b>
2509  
2510 </td>
2511 </tr>
2512 </table>
2513
2514 <h4>STRUCTURE scorevalues</h4>
2515 CLASS: KGS::Score<br />
2516 <p>
2517 </p>
2518 <table border="1" width="100%">
2519 <tr>
2520 <th width="10%">NAME</th>
2521 <th width="10%">TYPE</th>
2522 <th width="15%">DEFAULT</th>
2523 <th>DESCRIPTION</th>
2524 <th width="15%">DEC-GUARD</th>
2525 </tr>
2526 <tr>
2527 <td>score</td>
2528 <td>score32</td>
2529 <td> </td>
2530 <td>
2531
2532  
2533 </td>
2534 <td>
2535 <b></b>
2536  
2537 </td>
2538 </tr>
2539 <tr>
2540 <td>territory</td>
2541 <td>U32</td>
2542 <td> </td>
2543 <td>
2544
2545  
2546 </td>
2547 <td>
2548 <b></b>
2549  
2550 </td>
2551 </tr>
2552 <tr>
2553 <td>captures</td>
2554 <td>U32</td>
2555 <td> </td>
2556 <td>
2557
2558  
2559 </td>
2560 <td>
2561 <b></b>
2562  
2563 </td>
2564 </tr>
2565 <tr>
2566 <td>i3</td>
2567 <td>U32</td>
2568 <td> </td>
2569 <td>
2570
2571  
2572 </td>
2573 <td>
2574 <b></b>
2575  
2576 </td>
2577 </tr>
2578 <tr>
2579 <td>f2</td>
2580 <td>U32</td>
2581 <td> </td>
2582 <td>
2583
2584  
2585 </td>
2586 <td>
2587 <b></b>
2588  
2589 </td>
2590 </tr>
2591 <tr>
2592 <td>komi</td>
2593 <td>komi32</td>
2594 <td> </td>
2595 <td>
2596
2597  
2598 </td>
2599 <td>
2600 <b></b>
2601  
2602 </td>
2603 </tr>
2604 <tr>
2605 <td>i4</td>
2606 <td>U32</td>
2607 <td> </td>
2608 <td>
2609 Apparently the i3, f2, i4 are zero.
2610
2611  
2612 </td>
2613 <td>
2614 <b></b>
2615  
2616 </td>
2617 </tr>
2618 </table>
2619
2620 <h4>STRUCTURE game_record</h4>
2621 CLASS: KGS::GameRecord<br />
2622 <p>
2623 <p>A single game record entry, as seen in <a href="#R0008">userinfo(0008)</a>.</p>
2624 </p>
2625 <table border="1" width="100%">
2626 <tr>
2627 <th width="10%">NAME</th>
2628 <th width="10%">TYPE</th>
2629 <th width="15%">DEFAULT</th>
2630 <th>DESCRIPTION</th>
2631 <th width="15%">DEC-GUARD</th>
2632 </tr>
2633 <tr>
2634 <td>timestamp</td>
2635 <td>timestamp</td>
2636 <td> </td>
2637 <td>
2638 Time this game was played.
2639
2640  
2641 </td>
2642 <td>
2643 <b></b>
2644  
2645 </td>
2646 </tr>
2647 <tr>
2648 <td>flags</td>
2649 <td>U8</td>
2650 <td> </td>
2651 <td>
2652 High four bits are handicap, low four bits are gametype (encoded strangely? unclear).
2653
2654  
2655 </td>
2656 <td>
2657 <b></b>
2658  
2659 </td>
2660 </tr>
2661 <tr>
2662 <td>user1</td>
2663 <td>user</td>
2664 <td> </td>
2665 <td>
2666 White, flags contain low 8 bits of revision (bits 16-23).
2667
2668  
2669 </td>
2670 <td>
2671 <b></b>
2672  
2673 </td>
2674 </tr>
2675 <tr>
2676 <td>user2</td>
2677 <td>user</td>
2678 <td> </td>
2679 <td>
2680 Black, flags contain high 8 bits of revision (bits 16-23).
2681
2682  
2683 </td>
2684 <td>
2685 <b></b>
2686  
2687 </td>
2688 </tr>
2689 <tr>
2690 <td>user3</td>
2691 <td>user</td>
2692 <td> </td>
2693 <td>
2694 Owner (or empty)
2695
2696  
2697 </td>
2698 <td>
2699 <b></b>
2700  
2701 </td>
2702 </tr>
2703 <tr>
2704 <td>komi</td>
2705 <td>komi16</td>
2706 <td> </td>
2707 <td>
2708
2709  
2710 </td>
2711 <td>
2712 <b></b>
2713  
2714 </td>
2715 </tr>
2716 <tr>
2717 <td>score</td>
2718 <td>score16</td>
2719 <td> </td>
2720 <td>
2721
2722  
2723 </td>
2724 <td>
2725 <b></b>
2726  
2727 </td>
2728 </tr>
2729 <tr>
2730 <td>status</td>
2731 <td>U8</td>
2732 <td> </td>
2733 <td>
2734 0x80 inprogress
2735
2736  
2737 </td>
2738 <td>
2739 <b></b>
2740  
2741 </td>
2742 </tr>
2743 </table>
2744
2745 <h2>Receive messages</h2>
2746
2747 <h4>
2748 <a name="R0001"></a>RECV
2749 MESSAGE login</h4>
2750 NUMERIC TYPE (hex): 0001
2751 (possibly in response to
2752 <a href="#S0000">login(0000)</a>
2753 )
2754 <p>
2755 </p>
2756 <table border="1" width="100%">
2757 <tr>
2758 <th width="10%">NAME</th>
2759 <th width="10%">TYPE</th>
2760 <th width="15%">DEFAULT</th>
2761 <th>DESCRIPTION</th>
2762 <th width="15%">DEC-GUARD</th>
2763 </tr>
2764 <tr>
2765 <td>result</td>
2766 <td>CONSTANT</td>
2767 <td>"login ok" </td>
2768 <td>
2769
2770  
2771 </td>
2772 <td>
2773 <b></b>
2774  
2775 </td>
2776 </tr>
2777 <tr>
2778 <td>success</td>
2779 <td>CONSTANT</td>
2780 <td>1 </td>
2781 <td>
2782
2783  
2784 </td>
2785 <td>
2786 <b></b>
2787  
2788 </td>
2789 </tr>
2790 </table>
2791
2792 <h4>
2793 <a name="R0002"></a>RECV
2794 MESSAGE login</h4>
2795 NUMERIC TYPE (hex): 0002
2796 (possibly in response to
2797 <a href="#S0000">login(0000)</a>
2798 )
2799 <p>
2800 </p>
2801 <table border="1" width="100%">
2802 <tr>
2803 <th width="10%">NAME</th>
2804 <th width="10%">TYPE</th>
2805 <th width="15%">DEFAULT</th>
2806 <th>DESCRIPTION</th>
2807 <th width="15%">DEC-GUARD</th>
2808 </tr>
2809 <tr>
2810 <td>result</td>
2811 <td>CONSTANT</td>
2812 <td>"guest login ok" </td>
2813 <td>
2814
2815  
2816 </td>
2817 <td>
2818 <b></b>
2819  
2820 </td>
2821 </tr>
2822 <tr>
2823 <td>success</td>
2824 <td>CONSTANT</td>
2825 <td>1 </td>
2826 <td>
2827
2828  
2829 </td>
2830 <td>
2831 <b></b>
2832  
2833 </td>
2834 </tr>
2835 </table>
2836
2837 <h4>
2838 <a name="R0003"></a>RECV
2839 MESSAGE login</h4>
2840 NUMERIC TYPE (hex): 0003
2841 (possibly in response to
2842 <a href="#S0000">login(0000)</a>
2843 )
2844 <p>
2845 </p>
2846 <table border="1" width="100%">
2847 <tr>
2848 <th width="10%">NAME</th>
2849 <th width="10%">TYPE</th>
2850 <th width="15%">DEFAULT</th>
2851 <th>DESCRIPTION</th>
2852 <th width="15%">DEC-GUARD</th>
2853 </tr>
2854 <tr>
2855 <td>result</td>
2856 <td>CONSTANT</td>
2857 <td>"login error 3" </td>
2858 <td>
2859 ** maybe more following? **
2860
2861  
2862 </td>
2863 <td>
2864 <b></b>
2865  
2866 </td>
2867 </tr>
2868 </table>
2869
2870 <h4>
2871 <a name="R0004"></a>RECV
2872 MESSAGE login</h4>
2873 NUMERIC TYPE (hex): 0004
2874 (possibly in response to
2875 <a href="#S0000">login(0000)</a>
2876 )
2877 <p>
2878 </p>
2879 <table border="1" width="100%">
2880 <tr>
2881 <th width="10%">NAME</th>
2882 <th width="10%">TYPE</th>
2883 <th width="15%">DEFAULT</th>
2884 <th>DESCRIPTION</th>
2885 <th width="15%">DEC-GUARD</th>
2886 </tr>
2887 <tr>
2888 <td>result</td>
2889 <td>CONSTANT</td>
2890 <td>"wrong password" </td>
2891 <td>
2892 ** maybe more following? **
2893
2894  
2895 </td>
2896 <td>
2897 <b></b>
2898  
2899 </td>
2900 </tr>
2901 </table>
2902
2903 <h4>
2904 <a name="R0005"></a>RECV
2905 MESSAGE login</h4>
2906 NUMERIC TYPE (hex): 0005
2907 (possibly in response to
2908 <a href="#S0000">login(0000)</a>
2909 )
2910 <p>
2911 </p>
2912 <table border="1" width="100%">
2913 <tr>
2914 <th width="10%">NAME</th>
2915 <th width="10%">TYPE</th>
2916 <th width="15%">DEFAULT</th>
2917 <th>DESCRIPTION</th>
2918 <th width="15%">DEC-GUARD</th>
2919 </tr>
2920 <tr>
2921 <td>result</td>
2922 <td>CONSTANT</td>
2923 <td>"user unknown" </td>
2924 <td>
2925 ** maybe more following? **
2926
2927  
2928 </td>
2929 <td>
2930 <b></b>
2931  
2932 </td>
2933 </tr>
2934 </table>
2935
2936 <h4>
2937 <a name="R0006"></a>RECV
2938 MESSAGE login</h4>
2939 NUMERIC TYPE (hex): 0006
2940 (possibly in response to
2941 <a href="#S0000">login(0000)</a>
2942 )
2943 <p>
2944 </p>
2945 <table border="1" width="100%">
2946 <tr>
2947 <th width="10%">NAME</th>
2948 <th width="10%">TYPE</th>
2949 <th width="15%">DEFAULT</th>
2950 <th>DESCRIPTION</th>
2951 <th width="15%">DEC-GUARD</th>
2952 </tr>
2953 <tr>
2954 <td>result</td>
2955 <td>CONSTANT</td>
2956 <td>"user exists" </td>
2957 <td>
2958 ** maybe more following? **
2959
2960  
2961 </td>
2962 <td>
2963 <b></b>
2964  
2965 </td>
2966 </tr>
2967 </table>
2968
2969 <h4>
2970 <a name="R0008"></a>RECV
2971 MESSAGE userinfo</h4>
2972 NUMERIC TYPE (hex): 0008
2973 (possibly in response to
2974 <a href="#S0007">req_userinfo(0007)</a>
2975 )
2976 <p>
2977 User info.
2978 </p>
2979 <table border="1" width="100%">
2980 <tr>
2981 <th width="10%">NAME</th>
2982 <th width="10%">TYPE</th>
2983 <th width="15%">DEFAULT</th>
2984 <th>DESCRIPTION</th>
2985 <th width="15%">DEC-GUARD</th>
2986 </tr>
2987 <tr>
2988 <td>user</td>
2989 <td>user</td>
2990 <td> </td>
2991 <td>
2992
2993  
2994 </td>
2995 <td>
2996 <b></b>
2997  
2998 </td>
2999 </tr>
3000 <tr>
3001 <td>_unused</td>
3002 <td>U64</td>
3003 <td> </td>
3004 <td>
3005
3006  
3007 </td>
3008 <td>
3009 <b></b>
3010  
3011 </td>
3012 </tr>
3013 <tr>
3014 <td>realname</td>
3015 <td>realname</td>
3016 <td> </td>
3017 <td>
3018
3019  
3020 </td>
3021 <td>
3022 <b></b>
3023  
3024 </td>
3025 </tr>
3026 <tr>
3027 <td>email</td>
3028 <td>email</td>
3029 <td> </td>
3030 <td>
3031
3032  
3033 </td>
3034 <td>
3035 <b></b>
3036  
3037 </td>
3038 </tr>
3039 <tr>
3040 <td>info</td>
3041 <td>userinfo</td>
3042 <td> </td>
3043 <td>
3044
3045  
3046 </td>
3047 <td>
3048 <b></b>
3049  
3050 </td>
3051 </tr>
3052 <tr>
3053 <td>homepage</td>
3054 <td>url</td>
3055 <td> </td>
3056 <td>
3057
3058  
3059 </td>
3060 <td>
3061 <b></b>
3062  
3063 </td>
3064 </tr>
3065 <tr>
3066 <td>regdate</td>
3067 <td>timestamp</td>
3068 <td> </td>
3069 <td>
3070 When the user registered (0 == never registered).
3071
3072  
3073 </td>
3074 <td>
3075 <b></b>
3076  
3077 </td>
3078 </tr>
3079 <tr>
3080 <td>lastlogin</td>
3081 <td>timestamp</td>
3082 <td> </td>
3083 <td>
3084 When the user logged in for the last time.
3085
3086  
3087 </td>
3088 <td>
3089 <b></b>
3090  
3091 </td>
3092 </tr>
3093 </table>
3094
3095 <h4>
3096 <a name="R0018"></a>RECV
3097 MESSAGE login</h4>
3098 NUMERIC TYPE (hex): 0018
3099 (possibly in response to
3100 <a href="#S0000">login(0000)</a>
3101 )
3102 <p>
3103 </p>
3104 <table border="1" width="100%">
3105 <tr>
3106 <th width="10%">NAME</th>
3107 <th width="10%">TYPE</th>
3108 <th width="15%">DEFAULT</th>
3109 <th>DESCRIPTION</th>
3110 <th width="15%">DEC-GUARD</th>
3111 </tr>
3112 <tr>
3113 <td>result</td>
3114 <td>CONSTANT</td>
3115 <td>"login error 18" </td>
3116 <td>
3117 ** maybe more following? **
3118
3119  
3120 </td>
3121 <td>
3122 <b></b>
3123  
3124 </td>
3125 </tr>
3126 </table>
3127
3128 <h4>
3129 <a name="R0022"></a>RECV
3130 MESSAGE login</h4>
3131 NUMERIC TYPE (hex): 0022
3132 (possibly in response to
3133 <a href="#S0000">login(0000)</a>
3134 )
3135 <p>
3136 </p>
3137 <table border="1" width="100%">
3138 <tr>
3139 <th width="10%">NAME</th>
3140 <th width="10%">TYPE</th>
3141 <th width="15%">DEFAULT</th>
3142 <th>DESCRIPTION</th>
3143 <th width="15%">DEC-GUARD</th>
3144 </tr>
3145 <tr>
3146 <td>result</td>
3147 <td>CONSTANT</td>
3148 <td>"user or ip blocked" </td>
3149 <td>
3150
3151  
3152 </td>
3153 <td>
3154 <b></b>
3155  
3156 </td>
3157 </tr>
3158 <tr>
3159 <td>reason</td>
3160 <td>STRING</td>
3161 <td> </td>
3162 <td>
3163
3164  
3165 </td>
3166 <td>
3167 <b></b>
3168  
3169 </td>
3170 </tr>
3171 </table>
3172
3173 <h4>
3174 <a name="R0013"></a>RECV
3175 MESSAGE msg_chat</h4>
3176 NUMERIC TYPE (hex): 0013<p>
3177 </p>
3178 <table border="1" width="100%">
3179 <tr>
3180 <th width="10%">NAME</th>
3181 <th width="10%">TYPE</th>
3182 <th width="15%">DEFAULT</th>
3183 <th>DESCRIPTION</th>
3184 <th width="15%">DEC-GUARD</th>
3185 </tr>
3186 <tr>
3187 <td>user1</td>
3188 <td>username</td>
3189 <td> </td>
3190 <td>
3191
3192  
3193 </td>
3194 <td>
3195 <b></b>
3196  
3197 </td>
3198 </tr>
3199 <tr>
3200 <td>user2</td>
3201 <td>username</td>
3202 <td> </td>
3203 <td>
3204
3205  
3206 </td>
3207 <td>
3208 <b></b>
3209  
3210 </td>
3211 </tr>
3212 <tr>
3213 <td>message</td>
3214 <td>STRING</td>
3215 <td> </td>
3216 <td>
3217
3218  
3219 </td>
3220 <td>
3221 <b></b>
3222  
3223 </td>
3224 </tr>
3225 </table>
3226
3227 <h4>
3228 <a name="R0015"></a>RECV
3229 MESSAGE stats</h4>
3230 NUMERIC TYPE (hex): 0015
3231 (possibly in response to
3232 <a href="#S0014">req_stats(0014)</a>
3233 )
3234 <p>
3235 </p>
3236 <table border="1" width="100%">
3237 <tr>
3238 <th width="10%">NAME</th>
3239 <th width="10%">TYPE</th>
3240 <th width="15%">DEFAULT</th>
3241 <th>DESCRIPTION</th>
3242 <th width="15%">DEC-GUARD</th>
3243 </tr>
3244 <tr>
3245 <td>ver_major</td>
3246 <td>U16</td>
3247 <td> </td>
3248 <td>
3249
3250  
3251 </td>
3252 <td>
3253 <b></b>
3254  
3255 </td>
3256 </tr>
3257 <tr>
3258 <td>ver_minor</td>
3259 <td>U16</td>
3260 <td> </td>
3261 <td>
3262
3263  
3264 </td>
3265 <td>
3266 <b></b>
3267  
3268 </td>
3269 </tr>
3270 <tr>
3271 <td>ver_micro</td>
3272 <td>U16</td>
3273 <td> </td>
3274 <td>
3275
3276  
3277 </td>
3278 <td>
3279 <b></b>
3280  
3281 </td>
3282 </tr>
3283 <tr>
3284 <td>boot_time</td>
3285 <td>timestamp</td>
3286 <td> </td>
3287 <td>
3288
3289  
3290 </td>
3291 <td>
3292 <b></b>
3293  
3294 </td>
3295 </tr>
3296 <tr>
3297 <td>users_cur</td>
3298 <td>U32</td>
3299 <td> </td>
3300 <td>
3301
3302  
3303 </td>
3304 <td>
3305 <b></b>
3306  
3307 </td>
3308 </tr>
3309 <tr>
3310 <td>users_max</td>
3311 <td>U32</td>
3312 <td> </td>
3313 <td>
3314
3315  
3316 </td>
3317 <td>
3318 <b></b>
3319  
3320 </td>
3321 </tr>
3322 <tr>
3323 <td>users_lim</td>
3324 <td>U32</td>
3325 <td> </td>
3326 <td>
3327
3328  
3329 </td>
3330 <td>
3331 <b></b>
3332  
3333 </td>
3334 </tr>
3335 <tr>
3336 <td>accts_cur</td>
3337 <td>U32</td>
3338 <td> </td>
3339 <td>
3340
3341  
3342 </td>
3343 <td>
3344 <b></b>
3345  
3346 </td>
3347 </tr>
3348 <tr>
3349 <td>accts_max</td>
3350 <td>U32</td>
3351 <td> </td>
3352 <td>
3353
3354  
3355 </td>
3356 <td>
3357 <b></b>
3358  
3359 </td>
3360 </tr>
3361 <tr>
3362 <td>unknown1</td>
3363 <td>U32</td>
3364 <td> </td>
3365 <td>
3366
3367  
3368 </td>
3369 <td>
3370 <b></b>
3371  
3372 </td>
3373 </tr>
3374 <tr>
3375 <td>work_max</td>
3376 <td>U32</td>
3377 <td> </td>
3378 <td>
3379
3380  
3381 </td>
3382 <td>
3383 <b></b>
3384  
3385 </td>
3386 </tr>
3387 <tr>
3388 <td>rooms_cur</td>
3389 <td>U32</td>
3390 <td> </td>
3391 <td>
3392
3393  
3394 </td>
3395 <td>
3396 <b></b>
3397  
3398 </td>
3399 </tr>
3400 <tr>
3401 <td>rooms_max</td>
3402 <td>U32</td>
3403 <td> </td>
3404 <td>
3405
3406  
3407 </td>
3408 <td>
3409 <b></b>
3410  
3411 </td>
3412 </tr>
3413 <tr>
3414 <td>rooms_lim</td>
3415 <td>U32</td>
3416 <td> </td>
3417 <td>
3418
3419  
3420 </td>
3421 <td>
3422 <b></b>
3423  
3424 </td>
3425 </tr>
3426 <tr>
3427 <td>games_cur</td>
3428 <td>U32</td>
3429 <td> </td>
3430 <td>
3431
3432  
3433 </td>
3434 <td>
3435 <b></b>
3436  
3437 </td>
3438 </tr>
3439 <tr>
3440 <td>games_max</td>
3441 <td>U32</td>
3442 <td> </td>
3443 <td>
3444
3445  
3446 </td>
3447 <td>
3448 <b></b>
3449  
3450 </td>
3451 </tr>
3452 <tr>
3453 <td>games_lim</td>
3454 <td>U32</td>
3455 <td> </td>
3456 <td>
3457
3458  
3459 </td>
3460 <td>
3461 <b></b>
3462  
3463 </td>
3464 </tr>
3465 <tr>
3466 <td>results_cur</td>
3467 <td>U32</td>
3468 <td> </td>
3469 <td>
3470
3471  
3472 </td>
3473 <td>
3474 <b></b>
3475  
3476 </td>
3477 </tr>
3478 <tr>
3479 <td>results_max</td>
3480 <td>U32</td>
3481 <td> </td>
3482 <td>
3483
3484  
3485 </td>
3486 <td>
3487 <b></b>
3488  
3489 </td>
3490 </tr>
3491 <tr>
3492 <td>unknown2</td>
3493 <td>U32</td>
3494 <td> </td>
3495 <td>
3496
3497  
3498 </td>
3499 <td>
3500 <b></b>
3501  
3502 </td>
3503 </tr>
3504 <tr>
3505 <td>params_cur</td>
3506 <td>U32</td>
3507 <td> </td>
3508 <td>
3509
3510  
3511 </td>
3512 <td>
3513 <b></b>
3514  
3515 </td>
3516 </tr>
3517 <tr>
3518 <td>params_max</td>
3519 <td>U32</td>
3520 <td> </td>
3521 <td>
3522
3523  
3524 </td>
3525 <td>
3526 <b></b>
3527  
3528 </td>
3529 </tr>
3530 <tr>
3531 <td>bytes_in</td>
3532 <td>U64</td>
3533 <td> </td>
3534 <td>
3535
3536  
3537 </td>
3538 <td>
3539 <b></b>
3540  
3541 </td>
3542 </tr>
3543 <tr>
3544 <td>packets_in</td>
3545 <td>U64</td>
3546 <td> </td>
3547 <td>
3548
3549  
3550 </td>
3551 <td>
3552 <b></b>
3553  
3554 </td>
3555 </tr>
3556 <tr>
3557 <td>bytes_out</td>
3558 <td>U64</td>
3559 <td> </td>
3560 <td>
3561
3562  
3563 </td>
3564 <td>
3565 <b></b>
3566  
3567 </td>
3568 </tr>
3569 <tr>
3570 <td>packets_out</td>
3571 <td>U64</td>
3572 <td> </td>
3573 <td>
3574
3575  
3576 </td>
3577 <td>
3578 <b></b>
3579  
3580 </td>
3581 </tr>
3582 </table>
3583
3584 <h4>
3585 <a name="R0016"></a>RECV
3586 MESSAGE idle_warn</h4>
3587 NUMERIC TYPE (hex): 0016<p>
3588 idle warning, autologout soon (10 minutes...)
3589 </p>
3590 <table border="1" width="100%">
3591 <tr>
3592 <th width="10%">NAME</th>
3593 <th width="10%">TYPE</th>
3594 <th width="15%">DEFAULT</th>
3595 <th>DESCRIPTION</th>
3596 <th width="15%">DEC-GUARD</th>
3597 </tr>
3598 </table>
3599
3600 <h4>
3601 <a name="R001b"></a>RECV
3602 MESSAGE timewarning_default</h4>
3603 NUMERIC TYPE (hex): 001b
3604 (possibly in response to
3605 <a href="#S0000">login(0000)</a>
3606 )
3607 <p>
3608 WILD guess
3609 </p>
3610 <table border="1" width="100%">
3611 <tr>
3612 <th width="10%">NAME</th>
3613 <th width="10%">TYPE</th>
3614 <th width="15%">DEFAULT</th>
3615 <th>DESCRIPTION</th>
3616 <th width="15%">DEC-GUARD</th>
3617 </tr>
3618 <tr>
3619 <td>channel</td>
3620 <td>U16</td>
3621 <td> </td>
3622 <td>
3623
3624  
3625 </td>
3626 <td>
3627 <b></b>
3628  
3629 </td>
3630 </tr>
3631 <tr>
3632 <td>time</td>
3633 <td>U16</td>
3634 <td> </td>
3635 <td>
3636
3637  
3638 </td>
3639 <td>
3640 <b></b>
3641  
3642 </td>
3643 </tr>
3644 </table>
3645
3646 <h4>
3647 <a name="R001c"></a>RECV
3648 MESSAGE idle_err</h4>
3649 NUMERIC TYPE (hex): 001c<p>
3650 autologout
3651 </p>
3652 <table border="1" width="100%">
3653 <tr>
3654 <th width="10%">NAME</th>
3655 <th width="10%">TYPE</th>
3656 <th width="15%">DEFAULT</th>
3657 <th>DESCRIPTION</th>
3658 <th width="15%">DEC-GUARD</th>
3659 </tr>
3660 </table>
3661
3662 <h4>
3663 <a name="R001d"></a>RECV
3664 MESSAGE ping</h4>
3665 NUMERIC TYPE (hex): 001d<p>
3666 Sent by the server regularly, but not answering them
3667 isn't valid. Strange form of keepalive?
3668 </p>
3669 <table border="1" width="100%">
3670 <tr>
3671 <th width="10%">NAME</th>
3672 <th width="10%">TYPE</th>
3673 <th width="15%">DEFAULT</th>
3674 <th>DESCRIPTION</th>
3675 <th width="15%">DEC-GUARD</th>
3676 </tr>
3677 </table>
3678
3679 <h4>
3680 <a name="R001e"></a>RECV
3681 MESSAGE usergraph</h4>
3682 NUMERIC TYPE (hex): 001e
3683 (possibly in response to
3684 <a href="#S001e">req_usergraph(001e)</a>
3685 )
3686 <p>
3687 User graph data.
3688 </p>
3689 <table border="1" width="100%">
3690 <tr>
3691 <th width="10%">NAME</th>
3692 <th width="10%">TYPE</th>
3693 <th width="15%">DEFAULT</th>
3694 <th>DESCRIPTION</th>
3695 <th width="15%">DEC-GUARD</th>
3696 </tr>
3697 <tr>
3698 <td>data</td>
3699 <td>I16</td>
3700 <td> </td>
3701 <td>
3702 If empty, no graph is available. The unit seems to
3703 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
3704 There is probably one entry per day, the newest one last.
3705
3706  
3707 </td>
3708 <td>
3709 <b></b>
3710  
3711 </td>
3712 </tr>
3713 </table>
3714
3715 <h4>
3716 <a name="R001f"></a>RECV
3717 MESSAGE memo</h4>
3718 NUMERIC TYPE (hex): 001f
3719 (possibly in response to
3720 <a href="#S001f">fetch_memos(001f)</a>
3721 )
3722 <p>
3723 Unclear. "Leave Message"?
3724 6 strings following.
3725 </p>
3726 <table border="1" width="100%">
3727 <tr>
3728 <th width="10%">NAME</th>
3729 <th width="10%">TYPE</th>
3730 <th width="15%">DEFAULT</th>
3731 <th>DESCRIPTION</th>
3732 <th width="15%">DEC-GUARD</th>
3733 </tr>
3734 <tr>
3735 <td>s1</td>
3736 <td>STRING</td>
3737 <td> </td>
3738 <td>
3739
3740  
3741 </td>
3742 <td>
3743 <b></b>
3744  
3745 </td>
3746 </tr>
3747 <tr>
3748 <td>s2</td>
3749 <td>STRING</td>
3750 <td> </td>
3751 <td>
3752
3753  
3754 </td>
3755 <td>
3756 <b></b>
3757  
3758 </td>
3759 </tr>
3760 <tr>
3761 <td>s3</td>
3762 <td>STRING</td>
3763 <td> </td>
3764 <td>
3765
3766  
3767 </td>
3768 <td>
3769 <b></b>
3770  
3771 </td>
3772 </tr>
3773 <tr>
3774 <td>s4</td>
3775 <td>STRING</td>
3776 <td> </td>
3777 <td>
3778
3779  
3780 </td>
3781 <td>
3782 <b></b>
3783  
3784 </td>
3785 </tr>
3786 <tr>
3787 <td>s5</td>
3788 <td>STRING</td>
3789 <td> </td>
3790 <td>
3791
3792  
3793 </td>
3794 <td>
3795 <b></b>
3796  
3797 </td>
3798 </tr>
3799 <tr>
3800 <td>s6</td>
3801 <td>STRING</td>
3802 <td> </td>
3803 <td>
3804
3805  
3806 </td>
3807 <td>
3808 <b></b>
3809  
3810 </td>
3811 </tr>
3812 </table>
3813
3814 <h4>
3815 <a name="R0021"></a>RECV
3816 MESSAGE userpic</h4>
3817 NUMERIC TYPE (hex): 0021
3818 (possibly in response to
3819 <a href="#S0021">req_pic(0021)</a>
3820 )
3821 <p>
3822 </p>
3823 <table border="1" width="100%">
3824 <tr>
3825 <th width="10%">NAME</th>
3826 <th width="10%">TYPE</th>
3827 <th width="15%">DEFAULT</th>
3828 <th>DESCRIPTION</th>
3829 <th width="15%">DEC-GUARD</th>
3830 </tr>
3831 <tr>
3832 <td>name</td>
3833 <td>username</td>
3834 <td> </td>
3835 <td>
3836 Reply to pic_req, contains an image in jpeg format.
3837
3838  
3839 </td>
3840 <td>
3841 <b></b>
3842  
3843 </td>
3844 </tr>
3845 <tr>
3846 <td>data</td>
3847 <td>DATA</td>
3848 <td> </td>
3849 <td>
3850
3851  
3852 </td>
3853 <td>
3854 <b></b>
3855  
3856 </td>
3857 </tr>
3858 </table>
3859
3860 <h4>
3861 <a name="R0100"></a>RECV
3862 MESSAGE gnotice</h4>
3863 NUMERIC TYPE (hex): 0100
3864 (possibly in response to
3865 <a href="#S0100">gnotice(0100)</a>
3866 )
3867 <p>
3868 global notice, sent to everybody
3869 </p>
3870 <table border="1" width="100%">
3871 <tr>
3872 <th width="10%">NAME</th>
3873 <th width="10%">TYPE</th>
3874 <th width="15%">DEFAULT</th>
3875 <th>DESCRIPTION</th>
3876 <th width="15%">DEC-GUARD</th>
3877 </tr>
3878 <tr>
3879 <td>notice</td>
3880 <td>STRING</td>
3881 <td> </td>
3882 <td>
3883
3884  
3885 </td>
3886 <td>
3887 <b></b>
3888  
3889 </td>
3890 </tr>
3891 </table>
3892
3893 <h4>
3894 <a name="R0202"></a>RECV
3895 MESSAGE upd_user</h4>
3896 NUMERIC TYPE (hex): 0202<p>
3897 # maybe soe notify? Totally unclear.
3898 # loc 0" type="chat(?) loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
3899 </p>
3900 <table border="1" width="100%">
3901 <tr>
3902 <th width="10%">NAME</th>
3903 <th width="10%">TYPE</th>
3904 <th width="15%">DEFAULT</th>
3905 <th>DESCRIPTION</th>
3906 <th width="15%">DEC-GUARD</th>
3907 </tr>
3908 <tr>
3909 <td>location</td>
3910 <td>U32</td>
3911 <td> </td>
3912 <td>
3913
3914  
3915 </td>
3916 <td>
3917 <b></b>
3918  
3919 </td>
3920 </tr>
3921 <tr>
3922 <td>user</td>
3923 <td>user</td>
3924 <td> </td>
3925 <td>
3926
3927  
3928 </td>
3929 <td>
3930 <b></b>
3931  
3932 </td>
3933 </tr>
3934 <tr>
3935 <td>lotsofinfo</td>
3936 <td>DATA</td>
3937 <td> </td>
3938 <td>
3939
3940  
3941 </td>
3942 <td>
3943 <b>location</b> == 2
3944  
3945 </td>
3946 </tr>
3947 </table>
3948
3949 <h4>
3950 <a name="R0310"></a>RECV
3951 MESSAGE priv_room</h4>
3952 NUMERIC TYPE (hex): 0310<p>
3953 "permission denied" when joining a room
3954 </p>
3955 <table border="1" width="100%">
3956 <tr>
3957 <th width="10%">NAME</th>
3958 <th width="10%">TYPE</th>
3959 <th width="15%">DEFAULT</th>
3960 <th>DESCRIPTION</th>
3961 <th width="15%">DEC-GUARD</th>
3962 </tr>
3963 <tr>
3964 <td>name</td>
3965 <td>STRING</td>
3966 <td> </td>
3967 <td>
3968
3969  
3970 </td>
3971 <td>
3972 <b></b>
3973  
3974 </td>
3975 </tr>
3976 </table>
3977
3978 <h4>
3979 <a name="R0318"></a>RECV
3980 MESSAGE upd_rooms</h4>
3981 NUMERIC TYPE (hex): 0318
3982 (possibly in response to
3983 <a href="#S0318">list_rooms(0318)</a>
3984 )
3985 <p>
3986 </p>
3987 <table border="1" width="100%">
3988 <tr>
3989 <th width="10%">NAME</th>
3990 <th width="10%">TYPE</th>
3991 <th width="15%">DEFAULT</th>
3992 <th>DESCRIPTION</th>
3993 <th width="15%">DEC-GUARD</th>
3994 </tr>
3995 <tr>
3996 <td>rooms</td>
3997 <td>room</td>
3998 <td> </td>
3999 <td>
4000
4001  
4002 </td>
4003 <td>
4004 <b></b>
4005  
4006 </td>
4007 </tr>
4008 </table>
4009
4010 <h4>
4011 <a name="R0411"></a>RECV
4012 MESSAGE chal_defaults</h4>
4013 NUMERIC TYPE (hex): 0411
4014 (possibly in response to
4015 <a href="#S0000">login(0000)</a>
4016 )
4017 <p>
4018 </p>
4019 <table border="1" width="100%">
4020 <tr>
4021 <th width="10%">NAME</th>
4022 <th width="10%">TYPE</th>
4023 <th width="15%">DEFAULT</th>
4024 <th>DESCRIPTION</th>
4025 <th width="15%">DEC-GUARD</th>
4026 </tr>
4027 <tr>
4028 <td>channel</td>
4029 <td>U16</td>
4030 <td> </td>
4031 <td>
4032
4033  
4034 </td>
4035 <td>
4036 <b></b>
4037  
4038 </td>
4039 </tr>
4040 <tr>
4041 <td>defaults</td>
4042 <td>challenge_defaults</td>
4043 <td> </td>
4044 <td>
4045
4046  
4047 </td>
4048 <td>
4049 <b></b>
4050  
4051 </td>
4052 </tr>
4053 </table>
4054
4055 <h4>
4056 <a name="S0412"></a>SEND
4057 MESSAGE rej_game</h4>
4058 NUMERIC TYPE (hex): 0412<p>
4059 Unable to create challenge. The channel might be optional.
4060 </p>
4061 <table border="1" width="100%">
4062 <tr>
4063 <th width="10%">NAME</th>
4064 <th width="10%">TYPE</th>
4065 <th width="15%">DEFAULT</th>
4066 <th>DESCRIPTION</th>
4067 <th width="15%">DEC-GUARD</th>
4068 </tr>
4069 <tr>
4070 <td>channel</td>
4071 <td>U16</td>
4072 <td> </td>
4073 <td>
4074
4075  
4076 </td>
4077 <td>
4078 <b></b>
4079  
4080 </td>
4081 </tr>
4082 </table>
4083
4084 <h4>
4085 <a name="R0414"></a>RECV
4086 MESSAGE game_record</h4>
4087 NUMERIC TYPE (hex): 0414
4088 (possibly in response to
4089 <a href="#S0413">req_game_record(0413)</a>
4090 )
4091 <p>
4092 The users game record.
4093 </p>
4094 <table border="1" width="100%">
4095 <tr>
4096 <th width="10%">NAME</th>
4097 <th width="10%">TYPE</th>
4098 <th width="15%">DEFAULT</th>
4099 <th>DESCRIPTION</th>
4100 <th width="15%">DEC-GUARD</th>
4101 </tr>
4102 <tr>
4103 <td>name</td>
4104 <td>username</td>
4105 <td> </td>
4106 <td>
4107
4108  
4109 </td>
4110 <td>
4111 <b></b>
4112  
4113 </td>
4114 </tr>
4115 <tr>
4116 <td>more</td>
4117 <td>flag</td>
4118 <td> </td>
4119 <td>
4120 Wether more games are available (must be requested manually)
4121
4122  
4123 </td>
4124 <td>
4125 <b></b>
4126  
4127 </td>
4128 </tr>
4129 <tr>
4130 <td>games</td>
4131 <td>game_record</td>
4132 <td> </td>
4133 <td>
4134
4135  
4136 </td>
4137 <td>
4138 <b></b>
4139  
4140 </td>
4141 </tr>
4142 </table>
4143
4144 <h4>
4145 <a name="R041c"></a>RECV
4146 MESSAGE upd_game2</h4>
4147 NUMERIC TYPE (hex): 041c<p>
4148 Unclear.
4149 </p>
4150 <table border="1" width="100%">
4151 <tr>
4152 <th width="10%">NAME</th>
4153 <th width="10%">TYPE</th>
4154 <th width="15%">DEFAULT</th>
4155 <th>DESCRIPTION</th>
4156 <th width="15%">DEC-GUARD</th>
4157 </tr>
4158 <tr>
4159 <td>channel_junk</td>
4160 <td>U16</td>
4161 <td> </td>
4162 <td>
4163
4164  
4165 </td>
4166 <td>
4167 <b></b>
4168  
4169 </td>
4170 </tr>
4171 <tr>
4172 <td>game</td>
4173 <td>game</td>
4174 <td> </td>
4175 <td>
4176
4177  
4178 </td>
4179 <td>
4180 <b></b>
4181  
4182 </td>
4183 </tr>
4184 </table>
4185
4186 <h3>Room messages</h3>
4187
4188 <p>Not all room messages are for rooms only, and rooms need to parse
4189 not only these messages. Orthogonality, what for?</p>
4190
4191 <h4>
4192 <a name="R4300"></a>RECV
4193 MESSAGE join_room</h4>
4194 NUMERIC TYPE (hex): 4300
4195 (possibly in response to
4196 <a href="#S4300">join_room(4300)</a>
4197 )
4198 <p>
4199 </p>
4200 <table border="1" width="100%">
4201 <tr>
4202 <th width="10%">NAME</th>
4203 <th width="10%">TYPE</th>
4204 <th width="15%">DEFAULT</th>
4205 <th>DESCRIPTION</th>
4206 <th width="15%">DEC-GUARD</th>
4207 </tr>
4208 <tr>
4209 <td>channel</td>
4210 <td>U16</td>
4211 <td> </td>
4212 <td>
4213
4214  
4215 </td>
4216 <td>
4217 <b></b>
4218  
4219 </td>
4220 </tr>
4221 <tr>
4222 <td>users</td>
4223 <td>user</td>
4224 <td> </td>
4225 <td>
4226
4227  
4228 </td>
4229 <td>
4230 <b></b>
4231  
4232 </td>
4233 </tr>
4234 </table>
4235
4236 <h4>
4237 <a name="R4301"></a>RECV
4238 MESSAGE msg_room</h4>
4239 NUMERIC TYPE (hex): 4301<p>
4240 </p>
4241 <table border="1" width="100%">
4242 <tr>
4243 <th width="10%">NAME</th>
4244 <th width="10%">TYPE</th>
4245 <th width="15%">DEFAULT</th>
4246 <th>DESCRIPTION</th>
4247 <th width="15%">DEC-GUARD</th>
4248 </tr>
4249 <tr>
4250 <td>channel</td>
4251 <td>U16</td>
4252 <td> </td>
4253 <td>
4254
4255  
4256 </td>
4257 <td>
4258 <b></b>
4259  
4260 </td>
4261 </tr>
4262 <tr>
4263 <td>name</td>
4264 <td>username</td>
4265 <td> </td>
4266 <td>
4267
4268  
4269 </td>
4270 <td>
4271 <b></b>
4272  
4273 </td>
4274 </tr>
4275 <tr>
4276 <td>message</td>
4277 <td>STRING</td>
4278 <td> </td>
4279 <td>
4280
4281  
4282 </td>
4283 <td>
4284 <b></b>
4285  
4286 </td>
4287 </tr>
4288 </table>
4289
4290 <h4>
4291 <a name="R4302"></a>RECV
4292 MESSAGE part_room</h4>
4293 NUMERIC TYPE (hex): 4302<p>
4294 </p>
4295 <table border="1" width="100%">
4296 <tr>
4297 <th width="10%">NAME</th>
4298 <th width="10%">TYPE</th>
4299 <th width="15%">DEFAULT</th>
4300 <th>DESCRIPTION</th>
4301 <th width="15%">DEC-GUARD</th>
4302 </tr>
4303 <tr>
4304 <td>channel</td>
4305 <td>U16</td>
4306 <td> </td>
4307 <td>
4308
4309  
4310 </td>
4311 <td>
4312 <b></b>
4313  
4314 </td>
4315 </tr>
4316 <tr>
4317 <td>user</td>
4318 <td>user</td>
4319 <td> </td>
4320 <td>
4321
4322  
4323 </td>
4324 <td>
4325 <b></b>
4326  
4327 </td>
4328 </tr>
4329 </table>
4330
4331 <h4>
4332 <a name="R4303"></a>RECV
4333 MESSAGE del_room</h4>
4334 NUMERIC TYPE (hex): 4303<p>
4335 </p>
4336 <table border="1" width="100%">
4337 <tr>
4338 <th width="10%">NAME</th>
4339 <th width="10%">TYPE</th>
4340 <th width="15%">DEFAULT</th>
4341 <th>DESCRIPTION</th>
4342 <th width="15%">DEC-GUARD</th>
4343 </tr>
4344 <tr>
4345 <td>channel</td>
4346 <td>U16</td>
4347 <td> </td>
4348 <td>
4349
4350  
4351 </td>
4352 <td>
4353 <b></b>
4354  
4355 </td>
4356 </tr>
4357 </table>
4358
4359 <h4>
4360 <a name="R4304"></a>RECV
4361 MESSAGE upd_games</h4>
4362 NUMERIC TYPE (hex): 4304<p>
4363 </p>
4364 <table border="1" width="100%">
4365 <tr>
4366 <th width="10%">NAME</th>
4367 <th width="10%">TYPE</th>
4368 <th width="15%">DEFAULT</th>
4369 <th>DESCRIPTION</th>
4370 <th width="15%">DEC-GUARD</th>
4371 </tr>
4372 <tr>
4373 <td>channel</td>
4374 <td>U16</td>
4375 <td> </td>
4376 <td>
4377
4378  
4379 </td>
4380 <td>
4381 <b></b>
4382  
4383 </td>
4384 </tr>
4385 <tr>
4386 <td>games</td>
4387 <td>game</td>
4388 <td> </td>
4389 <td>
4390
4391  
4392 </td>
4393 <td>
4394 <b></b>
4395  
4396 </td>
4397 </tr>
4398 </table>
4399
4400 <h4>
4401 <a name="R4319"></a>RECV
4402 MESSAGE desc_room</h4>
4403 NUMERIC TYPE (hex): 4319<p>
4404 </p>
4405 <table border="1" width="100%">
4406 <tr>
4407 <th width="10%">NAME</th>
4408 <th width="10%">TYPE</th>
4409 <th width="15%">DEFAULT</th>
4410 <th>DESCRIPTION</th>
4411 <th width="15%">DEC-GUARD</th>
4412 </tr>
4413 <tr>
4414 <td>channel</td>
4415 <td>U16</td>
4416 <td> </td>
4417 <td>
4418
4419  
4420 </td>
4421 <td>
4422 <b></b>
4423  
4424 </td>
4425 </tr>
4426 <tr>
4427 <td>owner</td>
4428 <td>username</td>
4429 <td> </td>
4430 <td>
4431
4432  
4433 </td>
4434 <td>
4435 <b></b>
4436  
4437 </td>
4438 </tr>
4439 <tr>
4440 <td>description</td>
4441 <td>STRING</td>
4442 <td> </td>
4443 <td>
4444
4445  
4446 </td>
4447 <td>
4448 <b></b>
4449  
4450 </td>
4451 </tr>
4452 </table>
4453
4454 <h3>Game messages</h3>
4455
4456 <h4>
4457 <a name="R4400"></a>RECV
4458 MESSAGE upd_chal</h4>
4459 NUMERIC TYPE (hex): 4400<p>
4460 Unclear.
4461 </p>
4462 <table border="1" width="100%">
4463 <tr>
4464 <th width="10%">NAME</th>
4465 <th width="10%">TYPE</th>
4466 <th width="15%">DEFAULT</th>
4467 <th>DESCRIPTION</th>
4468 <th width="15%">DEC-GUARD</th>
4469 </tr>
4470 <tr>
4471 <td>channel</td>
4472 <td>U16</td>
4473 <td> </td>
4474 <td>
4475
4476  
4477 </td>
4478 <td>
4479 <b></b>
4480  
4481 </td>
4482 </tr>
4483 <tr>
4484 <td>challenge</td>
4485 <td>challenge</td>
4486 <td> </td>
4487 <td>
4488
4489  
4490 </td>
4491 <td>
4492 <b></b>
4493  
4494 </td>
4495 </tr>
4496 </table>
4497
4498 <h4>
4499 <a name="R4401"></a>RECV
4500 MESSAGE upd_game</h4>
4501 NUMERIC TYPE (hex): 4401<p>
4502 </p>
4503 <table border="1" width="100%">
4504 <tr>
4505 <th width="10%">NAME</th>
4506 <th width="10%">TYPE</th>
4507 <th width="15%">DEFAULT</th>
4508 <th>DESCRIPTION</th>
4509 <th width="15%">DEC-GUARD</th>
4510 </tr>
4511 <tr>
4512 <td>channel</td>
4513 <td>U16</td>
4514 <td> </td>
4515 <td>
4516
4517  
4518 </td>
4519 <td>
4520 <b></b>
4521  
4522 </td>
4523 </tr>
4524 <tr>
4525 <td>game</td>
4526 <td>game</td>
4527 <td> </td>
4528 <td>
4529
4530  
4531 </td>
4532 <td>
4533 <b></b>
4534  
4535 </td>
4536 </tr>
4537 </table>
4538
4539 <h4>
4540 <a name="R4402"></a>RECV
4541 MESSAGE del_game</h4>
4542 NUMERIC TYPE (hex): 4402<p>
4543 </p>
4544 <table border="1" width="100%">
4545 <tr>
4546 <th width="10%">NAME</th>
4547 <th width="10%">TYPE</th>
4548 <th width="15%">DEFAULT</th>
4549 <th>DESCRIPTION</th>
4550 <th width="15%">DEC-GUARD</th>
4551 </tr>
4552 <tr>
4553 <td>channel</td>
4554 <td>U16</td>
4555 <td> </td>
4556 <td>
4557
4558  
4559 </td>
4560 <td>
4561 <b></b>
4562  
4563 </td>
4564 </tr>
4565 </table>
4566
4567 <h4>
4568 <a name="R4403"></a>RECV
4569 MESSAGE upd_observers</h4>
4570 NUMERIC TYPE (hex): 4403<p>
4571 </p>
4572 <table border="1" width="100%">
4573 <tr>
4574 <th width="10%">NAME</th>
4575 <th width="10%">TYPE</th>
4576 <th width="15%">DEFAULT</th>
4577 <th>DESCRIPTION</th>
4578 <th width="15%">DEC-GUARD</th>
4579 </tr>
4580 <tr>
4581 <td>channel</td>
4582 <td>U16</td>
4583 <td> </td>
4584 <td>
4585
4586  
4587 </td>
4588 <td>
4589 <b></b>
4590  
4591 </td>
4592 </tr>
4593 <tr>
4594 <td>users</td>
4595 <td>user</td>
4596 <td> </td>
4597 <td>
4598
4599  
4600 </td>
4601 <td>
4602 <b></b>
4603  
4604 </td>
4605 </tr>
4606 </table>
4607
4608 <h4>
4609 <a name="R4404"></a>RECV
4610 MESSAGE del_observer</h4>
4611 NUMERIC TYPE (hex): 4404<p>
4612 </p>
4613 <table border="1" width="100%">
4614 <tr>
4615 <th width="10%">NAME</th>
4616 <th width="10%">TYPE</th>
4617 <th width="15%">DEFAULT</th>
4618 <th>DESCRIPTION</th>
4619 <th width="15%">DEC-GUARD</th>
4620 </tr>
4621 <tr>
4622 <td>channel</td>
4623 <td>U16</td>
4624 <td> </td>
4625 <td>
4626
4627  
4628 </td>
4629 <td>
4630 <b></b>
4631  
4632 </td>
4633 </tr>
4634 <tr>
4635 <td>name</td>
4636 <td>username</td>
4637 <td> </td>
4638 <td>
4639
4640  
4641 </td>
4642 <td>
4643 <b></b>
4644  
4645 </td>
4646 </tr>
4647 </table>
4648
4649 <h4>
4650 <a name="R4405"></a>RECV
4651 MESSAGE set_tree</h4>
4652 NUMERIC TYPE (hex): 4405<p>
4653 </p>
4654 <table border="1" width="100%">
4655 <tr>
4656 <th width="10%">NAME</th>
4657 <th width="10%">TYPE</th>
4658 <th width="15%">DEFAULT</th>
4659 <th>DESCRIPTION</th>
4660 <th width="15%">DEC-GUARD</th>
4661 </tr>
4662 <tr>
4663 <td>channel</td>
4664 <td>U16</td>
4665 <td> </td>
4666 <td>
4667
4668  
4669 </td>
4670 <td>
4671 <b></b>
4672  
4673 </td>
4674 </tr>
4675 <tr>
4676 <td>tree</td>
4677 <td>TREE</td>
4678 <td> </td>
4679 <td>
4680
4681  
4682 </td>
4683 <td>
4684 <b></b>
4685  
4686 </td>
4687 </tr>
4688 </table>
4689
4690 <h4>
4691 <a name="R4406"></a>RECV
4692 MESSAGE upd_tree</h4>
4693 NUMERIC TYPE (hex): 4406<p>
4694 </p>
4695 <table border="1" width="100%">
4696 <tr>
4697 <th width="10%">NAME</th>
4698 <th width="10%">TYPE</th>
4699 <th width="15%">DEFAULT</th>
4700 <th>DESCRIPTION</th>
4701 <th width="15%">DEC-GUARD</th>
4702 </tr>
4703 <tr>
4704 <td>channel</td>
4705 <td>U16</td>
4706 <td> </td>
4707 <td>
4708
4709  
4710 </td>
4711 <td>
4712 <b></b>
4713  
4714 </td>
4715 </tr>
4716 <tr>
4717 <td>tree</td>
4718 <td>TREE</td>
4719 <td> </td>
4720 <td>
4721
4722  
4723 </td>
4724 <td>
4725 <b></b>
4726  
4727 </td>
4728 </tr>
4729 </table>
4730
4731 <h4>
4732 <a name="R4407"></a>RECV
4733 MESSAGE set_node</h4>
4734 NUMERIC TYPE (hex): 4407<p>
4735 </p>
4736 <table border="1" width="100%">
4737 <tr>
4738 <th width="10%">NAME</th>
4739 <th width="10%">TYPE</th>
4740 <th width="15%">DEFAULT</th>
4741 <th>DESCRIPTION</th>
4742 <th width="15%">DEC-GUARD</th>
4743 </tr>
4744 <tr>
4745 <td>channel</td>
4746 <td>U16</td>
4747 <td> </td>
4748 <td>
4749
4750  
4751 </td>
4752 <td>
4753 <b></b>
4754  
4755 </td>
4756 </tr>
4757 <tr>
4758 <td>node</td>
4759 <td>U32</td>
4760 <td> </td>
4761 <td>
4762
4763  
4764 </td>
4765 <td>
4766 <b></b>
4767  
4768 </td>
4769 </tr>
4770 </table>
4771
4772 <h4>
4773 <a name="R4409"></a>RECV
4774 MESSAGE superko</h4>
4775 NUMERIC TYPE (hex): 4409<p>
4776 Superko-warning.
4777 </p>
4778 <table border="1" width="100%">
4779 <tr>
4780 <th width="10%">NAME</th>
4781 <th width="10%">TYPE</th>
4782 <th width="15%">DEFAULT</th>
4783 <th>DESCRIPTION</th>
4784 <th width="15%">DEC-GUARD</th>
4785 </tr>
4786 <tr>
4787 <td>channel</td>
4788 <td>U16</td>
4789 <td> </td>
4790 <td>
4791
4792  
4793 </td>
4794 <td>
4795 <b></b>
4796  
4797 </td>
4798 </tr>
4799 </table>
4800
4801 <h4>
4802 <a name="R440b"></a>RECV
4803 MESSAGE final_result</h4>
4804 NUMERIC TYPE (hex): 440b<p>
4805 </p>
4806 <table border="1" width="100%">
4807 <tr>
4808 <th width="10%">NAME</th>
4809 <th width="10%">TYPE</th>
4810 <th width="15%">DEFAULT</th>
4811 <th>DESCRIPTION</th>
4812 <th width="15%">DEC-GUARD</th>
4813 </tr>
4814 <tr>
4815 <td>channel</td>
4816 <td>U16</td>
4817 <td> </td>
4818 <td>
4819
4820  
4821 </td>
4822 <td>
4823 <b></b>
4824  
4825 </td>
4826 </tr>
4827 <tr>
4828 <td>blackscore</td>
4829 <td>scorevalues</td>
4830 <td> </td>
4831 <td>
4832
4833  
4834 </td>
4835 <td>
4836 <b></b>
4837  
4838 </td>
4839 </tr>
4840 <tr>
4841 <td>whitescore</td>
4842 <td>scorevalues</td>
4843 <td> </td>
4844 <td>
4845
4846  
4847 </td>
4848 <td>
4849 <b></b>
4850  
4851 </td>
4852 </tr>
4853 </table>
4854
4855 <h4>
4856 <a name="R440e"></a>RECV
4857 MESSAGE req_undo</h4>
4858 NUMERIC TYPE (hex): 440e<p>
4859 </p>
4860 <table border="1" width="100%">
4861 <tr>
4862 <th width="10%">NAME</th>
4863 <th width="10%">TYPE</th>
4864 <th width="15%">DEFAULT</th>
4865 <th>DESCRIPTION</th>
4866 <th width="15%">DEC-GUARD</th>
4867 </tr>
4868 <tr>
4869 <td>channel</td>
4870 <td>U16</td>
4871 <td> </td>
4872 <td>
4873
4874
4875  
4876 </td>
4877 <td>
4878 <b></b>
4879  
4880 </td>
4881 </tr>
4882 </table>
4883
4884 <h4>
4885 <a name="R4410"></a>RECV
4886 MESSAGE resign_game</h4>
4887 NUMERIC TYPE (hex): 4410<p>
4888 </p>
4889 <table border="1" width="100%">
4890 <tr>
4891 <th width="10%">NAME</th>
4892 <th width="10%">TYPE</th>
4893 <th width="15%">DEFAULT</th>
4894 <th>DESCRIPTION</th>
4895 <th width="15%">DEC-GUARD</th>
4896 </tr>
4897 <tr>
4898 <td>channel</td>
4899 <td>U16</td>
4900 <td> </td>
4901 <td>
4902
4903  
4904 </td>
4905 <td>
4906 <b></b>
4907  
4908 </td>
4909 </tr>
4910 <tr>
4911 <td>player</td>
4912 <td>U8</td>
4913 <td> </td>
4914 <td>
4915
4916  
4917 </td>
4918 <td>
4919 <b></b>
4920  
4921 </td>
4922 </tr>
4923 </table>
4924
4925 <h4>
4926 <a name="R441a"></a>RECV
4927 MESSAGE set_teacher</h4>
4928 NUMERIC TYPE (hex): 441a<p>
4929 </p>
4930 <table border="1" width="100%">
4931 <tr>
4932 <th width="10%">NAME</th>
4933 <th width="10%">TYPE</th>
4934 <th width="15%">DEFAULT</th>
4935 <th>DESCRIPTION</th>
4936 <th width="15%">DEC-GUARD</th>
4937 </tr>
4938 <tr>
4939 <td>channel</td>
4940 <td>U16</td>
4941 <td> </td>
4942 <td>
4943
4944  
4945 </td>
4946 <td>
4947 <b></b>
4948  
4949 </td>
4950 </tr>
4951 <tr>
4952 <td>name</td>
4953 <td>username</td>
4954 <td> </td>
4955 <td>
4956
4957  
4958 </td>
4959 <td>
4960 <b></b>
4961  
4962 </td>
4963 </tr>
4964 </table>
4965
4966 <h4>
4967 <a name="R441d"></a>RECV
4968 MESSAGE owner_left</h4>
4969 NUMERIC TYPE (hex): 441d<p>
4970 Unclear.
4971 </p>
4972 <table border="1" width="100%">
4973 <tr>
4974 <th width="10%">NAME</th>
4975 <th width="10%">TYPE</th>
4976 <th width="15%">DEFAULT</th>
4977 <th>DESCRIPTION</th>
4978 <th width="15%">DEC-GUARD</th>
4979 </tr>
4980 <tr>
4981 <td>channel</td>
4982 <td>U16</td>
4983 <td> </td>
4984 <td>
4985
4986  
4987 </td>
4988 <td>
4989 <b></b>
4990  
4991 </td>
4992 </tr>
4993 </table>
4994
4995 <h4>
4996 <a name="R441e"></a>RECV
4997 MESSAGE teacher_left</h4>
4998 NUMERIC TYPE (hex): 441e<p>
4999 Unclear.
5000 </p>
5001 <table border="1" width="100%">
5002 <tr>
5003 <th width="10%">NAME</th>
5004 <th width="10%">TYPE</th>
5005 <th width="15%">DEFAULT</th>
5006 <th>DESCRIPTION</th>
5007 <th width="15%">DEC-GUARD</th>
5008 </tr>
5009 <tr>
5010 <td>channel</td>
5011 <td>U16</td>
5012 <td> </td>
5013 <td>
5014
5015  
5016 </td>
5017 <td>
5018 <b></b>
5019  
5020 </td>
5021 </tr>
5022 </table>
5023
5024 <h4>
5025 <a name="R4422"></a>RECV
5026 MESSAGE unknown4422</h4>
5027 NUMERIC TYPE (hex): 4422<p>
5028 change teacher? something to do with editing?
5029 </p>
5030 <table border="1" width="100%">
5031 <tr>
5032 <th width="10%">NAME</th>
5033 <th width="10%">TYPE</th>
5034 <th width="15%">DEFAULT</th>
5035 <th>DESCRIPTION</th>
5036 <th width="15%">DEC-GUARD</th>
5037 </tr>
5038 <tr>
5039 <td>channel</td>
5040 <td>U16</td>
5041 <td> </td>
5042 <td>
5043
5044  
5045 </td>
5046 <td>
5047 <b></b>
5048  
5049 </td>
5050 </tr>
5051 <tr>
5052 <td>name1</td>
5053 <td>username</td>
5054 <td> </td>
5055 <td>
5056
5057  
5058 </td>
5059 <td>
5060 <b></b>
5061  
5062 </td>
5063 </tr>
5064 <tr>
5065 <td>name2</td>
5066 <td>username</td>
5067 <td> </td>
5068 <td>
5069
5070  
5071 </td>
5072 <td>
5073 <b></b>
5074  
5075 </td>
5076 </tr>
5077 </table>
5078
5079 <h4>
5080 <a name="R4433"></a>RECV
5081 MESSAGE req_result</h4>
5082 NUMERIC TYPE (hex): 4433<p>
5083 Unclear.
5084 </p>
5085 <table border="1" width="100%">
5086 <tr>
5087 <th width="10%">NAME</th>
5088 <th width="10%">TYPE</th>
5089 <th width="15%">DEFAULT</th>
5090 <th>DESCRIPTION</th>
5091 <th width="15%">DEC-GUARD</th>
5092 </tr>
5093 <tr>
5094 <td>channel</td>
5095 <td>U16</td>
5096 <td> </td>
5097 <td>
5098 # # recv_result(?)
5099
5100  
5101 </td>
5102 <td>
5103 <b></b>
5104  
5105 </td>
5106 </tr>
5107 </table>
5108
5109 <h4>
5110 <a name="R4434"></a>RECV
5111 MESSAGE unknown4434</h4>
5112 NUMERIC TYPE (hex): 4434<p>
5113 </p>
5114 <table border="1" width="100%">
5115 <tr>
5116 <th width="10%">NAME</th>
5117 <th width="10%">TYPE</th>
5118 <th width="15%">DEFAULT</th>
5119 <th>DESCRIPTION</th>
5120 <th width="15%">DEC-GUARD</th>
5121 </tr>
5122 <tr>
5123 <td>channel</td>
5124 <td>U16</td>
5125 <td> </td>
5126 <td>
5127
5128  
5129 </td>
5130 <td>
5131 <b></b>
5132  
5133 </td>
5134 </tr>
5135 <tr>
5136 <td>b1</td>
5137 <td>U8</td>
5138 <td> </td>
5139 <td>
5140 ?? !demonstration game??
5141
5142  
5143 </td>
5144 <td>
5145 <b></b>
5146  
5147 </td>
5148 </tr>
5149 </table>
5150
5151 </body>
5152 </html>