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