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