ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.71
Committed: Mon May 31 08:44:22 2004 UTC (20 years ago) by root
Content type: text/html
Branch: MAIN
Changes since 1.70: +7 -2 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 <html>
2 <head>
3 <title>KGS Protocol Description</title>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <!--
6 Copyright (C) 2003 Marc Lehmannn &lt;pcg@goof.com&gt;
7
8 You can redistribute and/or modify this document under the terms of
9 the GNU General Public License as published by the Free Software
10 Foundation; either version 2 of the License, or (at your option) any
11 later version.
12
13 This document is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 -->
22 </head>
23 <body>
24
25 <h1>$Revision: 1.70 $</h1>
26
27 <h1>KGS Protocol Description</h1>
28
29 <p>This XML document describes the KGS protocol. It is also used
30 to automatically generate the perl parser for all the messages and
31 structures in the protocol. Adapting it to other languages should be
32 almost trivial.</p>
33
34 <p>If you feel you need to update the visual appearance of this
35 document, feel free to look at <tt>doc/doc2html.xsl</tt> and improve
36 it.</p>
37
38 <p>The current version of this document can always be found at
39 <a href="http://cvs.schmorp.de/browse/*checkout*/kgsueme/doc/protocol.xml">here</a>, while
40 the HTML version of it can be found
41 <a href="http://cvs.schmorp.de/browse/*checkout*/kgsueme/doc/protocol.html">here</a>.</p>
42
43 <h2>Structure and conventions of this document and the protocol</h2>
44
45 <p>"ORIGIN: CLIENT" means messages send from the client to the server,
46 while "ORIGIN: SERVER" means messages send by the server to the
47 client.</p>
48
49 <p>Everything on the wire is in little-endian format (what a shame).</p>
50
51 <p>Primitive types are mostly integers (signed
52 "<code>I</code>&lt;bits&gt;", unsigned "<code>U</code>&lt;bits&gt;"),
53 ascii strings ("<code>username</code>"), zero- or non-terminated
54 UCS2-Strings ("<code>ZSTRING</code>" or "<code>STRING</code>"). Yes,
55 I know java is supposed to do UTF-16, but no implementation seems to
56 care...</p>
57
58 <p>To get a feel for the protocol, get the <tt>KGS</tt> perl module
59 from CPAN, install it an run <tt>kgstrace</tt>, then conenct to
60 <tt>127.0.0.1</tt> with your client. <tt>kgstrace</tt> will dump all
61 messages from and to the server.</p>
62
63 <p>For the rest, go figure or bug me, <a href="mailto:pcg@goof.com">Marc Lehmann &lt;pcg@goof.com&gt;</a>
64 </p>
65
66 <h2>Stream and message structure.</h2>
67
68 <p>After connecting to the server, a handshake byte is sent. It's
69 the major version number of the protocol the client expects to
70 receive. Version 3 and 4 are mostly the same, except that Version 4
71 clients expect server messages to be compressed, version 3 clients
72 do not. (version 3 probably is no longer supported).</p>
73
74 <p>The server sends back his protocol number, which is always 3 in
75 the current protocol. Most of the protocol variation is determined by
76 the server using the client version that is used in the initial login
77 message, not the initial handshake byte.</p>
78
79 <p>After the initial handshake, the client sends uncompressed
80 messages, while the server sends back a zlib-compressed
81 stream (<a href="http://rfc1950.x42.com/">rfc1950</a> and <a href="http://rfc1950.x42.com/">rfc1951</a>).</p>
82
83 <p>All messages have the same header:</p>
84
85 <h4>STRUCTURE message_header</h4>
86 <p>
87 </p>
88 <table border="1" width="100%">
89 <tr>
90 <th width="10%">NAME</th>
91 <th width="8%">TYPE</th>
92 <th width="4%">VALUE</th>
93 <th>DESCRIPTION</th>
94 <th width="10%">GUARD</th>
95 </tr>
96 <tr>
97 <td>_unknown</td>
98 <td>U16</td>
99 <td> </td>
100 <td>
101
102  
103 </td>
104 <td>
105 <b></b>
106  
107 </td>
108 </tr>
109 <tr>
110 <td>length</td>
111 <td>U16</td>
112 <td> </td>
113 <td>
114
115
116  
117 </td>
118 <td>
119 <b></b>
120  
121 </td>
122 </tr>
123 <tr>
124 <td>type</td>
125 <td>U16</td>
126 <td> </td>
127 <td>
128
129  
130 </td>
131 <td>
132 <b></b>
133  
134 </td>
135 </tr>
136 </table>
137
138 <h2>Primitive types used in the protocol.</h2>
139
140 <p>Apart from the basic types, I need to define some extra types to
141 deal with fixed-point values (based on integer types) or fixed-length
142 strings (either 7-bit-ascii or more limited (<code>A</code>), or UCS-2
143 based (<code>S</code>)).</p>
144
145 <h4>TYPE username</h4>
146 BASE TYPE A, LENGTH 10, MULTIPLIER <br />
147
148 <p>The basic user or login name, used throughout the protocol
149 as a handle to the user.</p>
150
151 <h4>TYPE roomname</h4>
152 BASE TYPE S, LENGTH 25, MULTIPLIER <br />
153 <!-- argh, how horribly broken -->
154
155 <p>Many strings in the protocol are fixed-width for no good reason
156 (maybe this is one reason for using compression in newer versions, as
157 the packets itself are wasting lots of space.</p>
158
159 <h4>TYPE realname</h4>
160 BASE TYPE S, LENGTH 50, MULTIPLIER <br />
161 <h4>TYPE email</h4>
162 BASE TYPE S, LENGTH 70, MULTIPLIER <br />
163 <h4>TYPE userinfo</h4>
164 BASE TYPE S, LENGTH 1000, MULTIPLIER <br />
165 <h4>TYPE url</h4>
166 BASE TYPE A, LENGTH 100, MULTIPLIER <br />
167
168 <p>Used in user_record.</p>
169
170 <h4>TYPE locale</h4>
171 BASE TYPE A, LENGTH 5, MULTIPLIER <br />
172
173 <p>A kind of locale specifier. It seems the general format seems to be
174 lowercase language, underscore, uppercase location, e.g. en_US. More
175 fancy specifications don't fit.</p>
176
177 <h4>TYPE flag</h4>
178 BASE TYPE U8, LENGTH , MULTIPLIER 1<br />
179
180 <p>Just a simple boolean value. 0 means false, and 1 generally true,
181 but I suggest accepting != 0 as true.</p>
182
183 <h4>TYPE komi16</h4>
184 BASE TYPE I16, LENGTH , MULTIPLIER 2<br />
185 <h4>TYPE komi32</h4>
186 BASE TYPE I32, LENGTH , MULTIPLIER 2<br />
187 <h4>TYPE komi324</h4>
188 BASE TYPE I32, LENGTH , MULTIPLIER 4<br />
189
190 <p>Komi values are multiplied by 2 to make them integer in the
191 protocol. Well, *most* of the time at least...</p>
192
193 <h4>TYPE result</h4>
194 BASE TYPE I32, LENGTH , MULTIPLIER 2<br />
195
196 <p>The game result is also multiplied by two to give it higher
197 resolution. There are also special values for wins by time etc., either
198 in result or in the score* types, or both :)</p>
199
200 <h4>TYPE score16</h4>
201 BASE TYPE I16, LENGTH , MULTIPLIER 4<br />
202 <h4>TYPE score32</h4>
203 BASE TYPE I32, LENGTH , MULTIPLIER 4<br />
204 <h4>TYPE score1000</h4>
205 BASE TYPE I32, LENGTH , MULTIPLIER 1000<br />
206
207 <p>A score value (used for displaying the score at the end of a game)
208 are multiplied by four for a change (the 0.25 resolution is not
209 used). In game structures it is encoded by dividing by two, though, so
210 watch out! And in some others, it's encoded by multiplying by 1000...
211 yuck!</p>
212
213 <h4>TYPE time</h4>
214 BASE TYPE U32, LENGTH , MULTIPLIER 1000<br />
215
216 <p>Time values are multiplied by 1000, giving them millisecond
217 accuracy.</p>
218
219 <h4>TYPE timestamp</h4>
220 BASE TYPE U64, LENGTH , MULTIPLIER 1000<br />
221
222 <p>64 bit timeval, milliseconds since posix epoch, e.g. <code>my
223 ($year, $month, $day) = (gmtime $date * 0.001)[5,4,3];</code>
224 </p>
225
226 <h4>TYPE password</h4>
227 BASE TYPE U64, LENGTH , MULTIPLIER <br />
228
229 <p>Password is a number calculated as follows (VERY insecure, basically
230 plaintext!): <code>password = 0; for char in characters do password ←
231 password * 1055 + ascii_code (char)</code>
232 </p>
233
234 <h4>TYPE CLIENTID16</h4>
235 BASE TYPE U16, LENGTH , MULTIPLIER 1<br />
236 <h4>TYPE CLIENTID8</h4>
237 BASE TYPE U8, LENGTH , MULTIPLIER 1<br />
238
239 <p>An id chosen by the client, usually starting at one, to identify
240 some handshakes initiated by the client, such as new games or memos.</p>
241
242 <h2>Enumeration and set types used in the protocol.</h2>
243
244 <h4>enum: GAMETYPE</h4>
245 <p>
246 </p>
247 <table border="1" width="100%">
248 <tr>
249 <th width="10%">NAME</th>
250 <th width="8%">TYPE</th>
251 <th width="4%">VALUE</th>
252 <th>DESCRIPTION</th>
253 <th width="10%">GUARD</th>
254 </tr>
255 <tr>
256 <td>DEMONSTRATION</td>
257 <td></td>
258 <td>0 </td>
259 <td>
260
261  
262 </td>
263 <td>
264 <b></b>
265  
266 </td>
267 </tr>
268 <tr>
269 <td>EDITING</td>
270 <td></td>
271 <td>1 </td>
272 <td>
273
274  
275 </td>
276 <td>
277 <b></b>
278  
279 </td>
280 </tr>
281 <tr>
282 <td>TEACHING</td>
283 <td></td>
284 <td>2 </td>
285 <td>
286
287  
288 </td>
289 <td>
290 <b></b>
291  
292 </td>
293 </tr>
294 <tr>
295 <td>SIMUL</td>
296 <td></td>
297 <td>3 </td>
298 <td>
299
300  
301 </td>
302 <td>
303 <b></b>
304  
305 </td>
306 </tr>
307 <tr>
308 <td>FREE</td>
309 <td></td>
310 <td>4 </td>
311 <td>
312
313  
314 </td>
315 <td>
316 <b></b>
317  
318 </td>
319 </tr>
320 <tr>
321 <td>RATED</td>
322 <td></td>
323 <td>5 </td>
324 <td>
325
326  
327 </td>
328 <td>
329 <b></b>
330  
331 </td>
332 </tr>
333 <tr>
334 <td>PRIVATE</td>
335 <td></td>
336 <td>128 </td>
337 <td>
338
339  
340 </td>
341 <td>
342 <b></b>
343  
344 </td>
345 </tr>
346 </table>
347
348 <h4>set: GAMEFLAG</h4>
349 <p>
350 </p>
351 <table border="1" width="100%">
352 <tr>
353 <th width="10%">NAME</th>
354 <th width="8%">TYPE</th>
355 <th width="4%">VALUE</th>
356 <th>DESCRIPTION</th>
357 <th width="10%">GUARD</th>
358 </tr>
359 <tr>
360 <td>SCORED</td>
361 <td></td>
362 <td>1 </td>
363 <td>
364
365  
366 </td>
367 <td>
368 <b></b>
369  
370 </td>
371 </tr>
372 <tr>
373 <td>ADJOURNED</td>
374 <td></td>
375 <td>2 </td>
376 <td>
377
378  
379 </td>
380 <td>
381 <b></b>
382  
383 </td>
384 </tr>
385 <tr>
386 <td>UPLOADED</td>
387 <td></td>
388 <td>4 </td>
389 <td>
390
391  
392 </td>
393 <td>
394 <b></b>
395  
396 </td>
397 </tr>
398 </table>
399
400 <h4>set: ROOMFLAG</h4>
401 <p>
402 </p>
403 <table border="1" width="100%">
404 <tr>
405 <th width="10%">NAME</th>
406 <th width="8%">TYPE</th>
407 <th width="4%">VALUE</th>
408 <th>DESCRIPTION</th>
409 <th width="10%">GUARD</th>
410 </tr>
411 <tr>
412 <td>ADMIN</td>
413 <td></td>
414 <td>0x01 </td>
415 <td>
416
417  
418 </td>
419 <td>
420 <b></b>
421  
422 </td>
423 </tr>
424 <tr>
425 <td>DEFAULT</td>
426 <td></td>
427 <td>0x04 </td>
428 <td>
429
430  
431 </td>
432 <td>
433 <b></b>
434  
435 </td>
436 </tr>
437 <tr>
438 <td>PRIVATE</td>
439 <td></td>
440 <td>0x10 </td>
441 <td>
442
443  
444 </td>
445 <td>
446 <b></b>
447  
448 </td>
449 </tr>
450 </table>
451
452 <h4>set: GAMESTATUS</h4>
453 <p>
454 </p>
455 <table border="1" width="100%">
456 <tr>
457 <th width="10%">NAME</th>
458 <th width="8%">TYPE</th>
459 <th width="4%">VALUE</th>
460 <th>DESCRIPTION</th>
461 <th width="10%">GUARD</th>
462 </tr>
463 <tr>
464 <td>INPLAY</td>
465 <td></td>
466 <td>0x80 </td>
467 <td>
468
469  
470 </td>
471 <td>
472 <b></b>
473  
474 </td>
475 </tr>
476 </table>
477
478 <h4>enum: SCORE</h4>
479 <p>
480 <p>Special score values, in addition to numerical scores. Some are also used with their
481 negative value.</p>
482 </p>
483 <table border="1" width="100%">
484 <tr>
485 <th width="10%">NAME</th>
486 <th width="8%">TYPE</th>
487 <th width="4%">VALUE</th>
488 <th>DESCRIPTION</th>
489 <th width="10%">GUARD</th>
490 </tr>
491 <tr>
492 <td>TIMEOUT</td>
493 <td></td>
494 <td>16384 / 4 </td>
495 <td>
496 Also used negatively to score for white instead of black.
497
498
499  
500 </td>
501 <td>
502 <b></b>
503  
504 </td>
505 </tr>
506 <tr>
507 <td>RESIGN</td>
508 <td></td>
509 <td>16385 / 4 </td>
510 <td>
511 Also used negatively to score for white instead of black.
512
513
514  
515 </td>
516 <td>
517 <b></b>
518  
519 </td>
520 </tr>
521 <tr>
522 <td>FORFEIT</td>
523 <td></td>
524 <td> 0 / 4 </td>
525 <td>
526 Also used negatively to score for white instead of black.
527
528
529  
530 </td>
531 <td>
532 <b></b>
533  
534 </td>
535 </tr>
536 <tr>
537 <td>JIGO</td>
538 <td></td>
539 <td>16386 / 4 </td>
540 <td>
541
542
543  
544 </td>
545 <td>
546 <b></b>
547  
548 </td>
549 </tr>
550 <tr>
551 <td>NO_RESULT</td>
552 <td></td>
553 <td>16386 / 4 </td>
554 <td>
555
556  
557 </td>
558 <td>
559 <b></b>
560  
561 </td>
562 </tr>
563 <tr>
564 <td>ADJOURNED</td>
565 <td></td>
566 <td>16387 / 4 </td>
567 <td>
568
569  
570 </td>
571 <td>
572 <b></b>
573  
574 </td>
575 </tr>
576 <tr>
577 <td>UNKNOWN</td>
578 <td></td>
579 <td>16389 / 4 </td>
580 <td>
581
582  
583 </td>
584 <td>
585 <b></b>
586  
587 </td>
588 </tr>
589 </table>
590
591 <h4>enum: RULESET</h4>
592 <p>
593 </p>
594 <table border="1" width="100%">
595 <tr>
596 <th width="10%">NAME</th>
597 <th width="8%">TYPE</th>
598 <th width="4%">VALUE</th>
599 <th>DESCRIPTION</th>
600 <th width="10%">GUARD</th>
601 </tr>
602 <tr>
603 <td>JAPANESE</td>
604 <td></td>
605 <td>0 </td>
606 <td>
607
608  
609 </td>
610 <td>
611 <b></b>
612  
613 </td>
614 </tr>
615 <tr>
616 <td>CHINESE </td>
617 <td></td>
618 <td>1 </td>
619 <td>
620
621  
622 </td>
623 <td>
624 <b></b>
625  
626 </td>
627 </tr>
628 <tr>
629 <td>AGA</td>
630 <td></td>
631 <td>2 </td>
632 <td>
633
634  
635 </td>
636 <td>
637 <b></b>
638  
639 </td>
640 </tr>
641 <tr>
642 <td>NEW_ZEALAND</td>
643 <td></td>
644 <td>3 </td>
645 <td>
646
647  
648 </td>
649 <td>
650 <b></b>
651  
652 </td>
653 </tr>
654 </table>
655
656 <h4>enum: TIMESYS</h4>
657 <p>
658 </p>
659 <table border="1" width="100%">
660 <tr>
661 <th width="10%">NAME</th>
662 <th width="8%">TYPE</th>
663 <th width="4%">VALUE</th>
664 <th>DESCRIPTION</th>
665 <th width="10%">GUARD</th>
666 </tr>
667 <tr>
668 <td>NONE</td>
669 <td></td>
670 <td>0 </td>
671 <td>
672
673  
674 </td>
675 <td>
676 <b></b>
677  
678 </td>
679 </tr>
680 <tr>
681 <td>ABSOLUTE</td>
682 <td></td>
683 <td>1 </td>
684 <td>
685
686  
687 </td>
688 <td>
689 <b></b>
690  
691 </td>
692 </tr>
693 <tr>
694 <td>BYO_YOMI</td>
695 <td></td>
696 <td>2 </td>
697 <td>
698
699  
700 </td>
701 <td>
702 <b></b>
703  
704 </td>
705 </tr>
706 <tr>
707 <td>CANADIAN</td>
708 <td></td>
709 <td>3 </td>
710 <td>
711
712  
713 </td>
714 <td>
715 <b></b>
716  
717 </td>
718 </tr>
719 </table>
720
721 <h4>enum: COLOUR</h4>
722 <p>
723 <p>Convinience constants used in several places.</p>
724 </p>
725 <table border="1" width="100%">
726 <tr>
727 <th width="10%">NAME</th>
728 <th width="8%">TYPE</th>
729 <th width="4%">VALUE</th>
730 <th>DESCRIPTION</th>
731 <th width="10%">GUARD</th>
732 </tr>
733 <tr>
734 <td>BLACK</td>
735 <td></td>
736 <td>0 </td>
737 <td>
738
739  
740 </td>
741 <td>
742 <b></b>
743  
744 </td>
745 </tr>
746 <tr>
747 <td>WHITE</td>
748 <td></td>
749 <td>1 </td>
750 <td>
751
752  
753 </td>
754 <td>
755 <b></b>
756  
757 </td>
758 </tr>
759 <tr>
760 <td>NONE</td>
761 <td></td>
762 <td>2 </td>
763 <td>
764
765  
766 </td>
767 <td>
768 <b></b>
769  
770 </td>
771 </tr>
772 </table>
773
774 <h2>Structs used in send &amp; receive messages</h2>
775
776 <h4>STRUCTURE user</h4>
777 CLASS: KGS::User<br />
778 <p>
779
780 <p>Almost everywhere a user + flags is required, even used in some places
781 where only a username is required. I see no general rule on when a
782 complete user and when a partial user is required.</p>
783 </p>
784 <table border="1" width="100%">
785 <tr>
786 <th width="10%">NAME</th>
787 <th width="8%">TYPE</th>
788 <th width="4%">VALUE</th>
789 <th>DESCRIPTION</th>
790 <th width="10%">GUARD</th>
791 </tr>
792 <tr>
793 <td>name</td>
794 <td>username</td>
795 <td> </td>
796 <td>
797
798  
799 </td>
800 <td>
801 <b></b>
802  
803 </td>
804 </tr>
805 <tr>
806 <td>flags</td>
807 <td>U32</td>
808 <td>1 </td>
809 <td>
810
811  
812 </td>
813 <td>
814 <b></b>
815  
816 </td>
817 </tr>
818 </table>
819
820 <h4>STRUCTURE rules</h4>
821 CLASS: KGS::Rules<br />
822 <p>
823
824 <p>This structure is used for challenges as well as in the special
825 TREE "subprotocol". It tightly encodes the game parameters.</p>
826 </p>
827 <table border="1" width="100%">
828 <tr>
829 <th width="10%">NAME</th>
830 <th width="8%">TYPE</th>
831 <th width="4%">VALUE</th>
832 <th>DESCRIPTION</th>
833 <th width="10%">GUARD</th>
834 </tr>
835 <tr>
836 <td>ruleset</td>
837 <td>U8</td>
838 <td> </td>
839 <td>
840
841  
842 </td>
843 <td>
844 <b></b>
845  
846 </td>
847 </tr>
848 <tr>
849 <td>size</td>
850 <td>U8</td>
851 <td> </td>
852 <td>
853
854  
855 </td>
856 <td>
857 <b></b>
858  
859 </td>
860 </tr>
861 <tr>
862 <td>handicap</td>
863 <td>U8</td>
864 <td> </td>
865 <td>
866
867  
868 </td>
869 <td>
870 <b></b>
871  
872 </td>
873 </tr>
874 <tr>
875 <td>komi</td>
876 <td>komi16</td>
877 <td> </td>
878 <td>
879
880  
881 </td>
882 <td>
883 <b></b>
884  
885 </td>
886 </tr>
887 <tr>
888 <td>timesys</td>
889 <td>U8</td>
890 <td> </td>
891 <td>
892
893  
894 </td>
895 <td>
896 <b></b>
897  
898 </td>
899 </tr>
900 <tr>
901 <td>time</td>
902 <td>U32</td>
903 <td> </td>
904 <td>
905
906  
907 </td>
908 <td>
909 <b></b>
910  
911 </td>
912 </tr>
913 <tr>
914 <td>interval</td>
915 <td>U32</td>
916 <td> </td>
917 <td>
918 byo-yomi time / canadian time
919
920  
921 </td>
922 <td>
923 <b></b>
924  
925 </td>
926 </tr>
927 <tr>
928 <td>count</td>
929 <td>U16</td>
930 <td> </td>
931 <td>
932 periods / moves
933
934  
935 </td>
936 <td>
937 <b></b>
938  
939 </td>
940 </tr>
941 </table>
942
943 <h2>Structs used in messages from the client</h2>
944
945 <h2>Client-generated messages</h2>
946
947 <h4>
948 <a name="C0000"></a>ORIGIN: CLIENT;
949 MESSAGE: login</h4>
950 NUMERIC TYPE (hex): 0000<p>
951
952 <p>Sent to login, usually the first message sent. The password needs to be set when the
953 guest flag is true.
954 Possible replies: <a href="#S0001">login(0001)</a>
955 <a href="#S0002">login(0002)</a>
956 <a href="#S0003">login(0003)</a>
957 <a href="#S0004">login(0004)</a>
958 <a href="#S0005">login(0005)</a>
959 <a href="#S0006">login(0006)</a>
960 <a href="#S0018">login(0018)</a>
961 <a href="#S001c">login(001c)</a>
962 <a href="#S0022">login(0022)</a>. Followed by: <a href="#S001b">timewarning_default(001b)</a> <a href="#S0411">chal_defaults(0411)</a>
963 </p>
964 </p>
965 <table border="1" width="100%">
966 <tr>
967 <th width="10%">NAME</th>
968 <th width="8%">TYPE</th>
969 <th width="4%">VALUE</th>
970 <th>DESCRIPTION</th>
971 <th width="10%">GUARD</th>
972 </tr>
973 <tr>
974 <td>ver_major</td>
975 <td>U32</td>
976 <td>2 </td>
977 <td>
978
979  
980 </td>
981 <td>
982 <b></b>
983  
984 </td>
985 </tr>
986 <tr>
987 <td>ver_minor</td>
988 <td>U32</td>
989 <td>6 </td>
990 <td>
991
992  
993 </td>
994 <td>
995 <b></b>
996  
997 </td>
998 </tr>
999 <tr>
1000 <td>ver_micro</td>
1001 <td>U32</td>
1002 <td>1 </td>
1003 <td>
1004
1005  
1006 </td>
1007 <td>
1008 <b></b>
1009  
1010 </td>
1011 </tr>
1012 <tr>
1013 <td>name</td>
1014 <td>username</td>
1015 <td> </td>
1016 <td>
1017
1018  
1019 </td>
1020 <td>
1021 <b></b>
1022  
1023 </td>
1024 </tr>
1025 <tr>
1026 <td>password</td>
1027 <td>password</td>
1028 <td>0 </td>
1029 <td>
1030
1031  
1032 </td>
1033 <td>
1034 <b></b>
1035  
1036 </td>
1037 </tr>
1038 <tr>
1039 <td>guest</td>
1040 <td>flag</td>
1041 <td>1 </td>
1042 <td>
1043
1044  
1045 </td>
1046 <td>
1047 <b></b>
1048  
1049 </td>
1050 </tr>
1051 <tr>
1052 <td>_unknown3</td>
1053 <td>U16</td>
1054 <td>0 </td>
1055 <td>
1056
1057  
1058 </td>
1059 <td>
1060 <b></b>
1061  
1062 </td>
1063 </tr>
1064 <tr>
1065 <td>locale</td>
1066 <td>locale</td>
1067 <td>"en_US" </td>
1068 <td>
1069
1070  
1071 </td>
1072 <td>
1073 <b></b>
1074  
1075 </td>
1076 </tr>
1077 <tr>
1078 <td>clientver</td>
1079 <td>DATA</td>
1080 <td>"1.4.2_03:Swing app:Sun Microsystems Inc." </td>
1081 <td>
1082 The "default" is the java vm version, not exactly he client version. However,
1083 you should always send a text like "Jonathan's C client version 0.6" or somesuch,
1084 so the server can, if necessary, block broken clients or client versions.
1085
1086  
1087 </td>
1088 <td>
1089 <b></b>
1090  
1091 </td>
1092 </tr>
1093 </table>
1094
1095 <h4>
1096 <a name="C0007"></a>ORIGIN: CLIENT;
1097 MESSAGE: req_userinfo</h4>
1098 NUMERIC TYPE (hex): 0007<p>
1099 <p>Request info about a certain user. Possible reply: <a href="#S0008">userinfo(0008)</a>
1100 </p>
1101 </p>
1102 <table border="1" width="100%">
1103 <tr>
1104 <th width="10%">NAME</th>
1105 <th width="8%">TYPE</th>
1106 <th width="4%">VALUE</th>
1107 <th>DESCRIPTION</th>
1108 <th width="10%">GUARD</th>
1109 </tr>
1110 <tr>
1111 <td>name</td>
1112 <td>username</td>
1113 <td> </td>
1114 <td>
1115
1116  
1117 </td>
1118 <td>
1119 <b></b>
1120  
1121 </td>
1122 </tr>
1123 </table>
1124
1125 <h4>
1126 <a name="C0007"></a>ORIGIN: CLIENT;
1127 MESSAGE: update_userinfo</h4>
1128 NUMERIC TYPE (hex): 0007<p>
1129 <p>Update user info. Message structure is very similar
1130 to <a href="#S0008">userinfo(0008)</a>.</p>
1131 </p>
1132 <table border="1" width="100%">
1133 <tr>
1134 <th width="10%">NAME</th>
1135 <th width="8%">TYPE</th>
1136 <th width="4%">VALUE</th>
1137 <th>DESCRIPTION</th>
1138 <th width="10%">GUARD</th>
1139 </tr>
1140 <tr>
1141 <td>setpass</td>
1142 <td>flag</td>
1143 <td> </td>
1144 <td>
1145 Should the password be updated?
1146
1147  
1148 </td>
1149 <td>
1150 <b></b>
1151  
1152 </td>
1153 </tr>
1154 <tr>
1155 <td>password</td>
1156 <td>password</td>
1157 <td>0 </td>
1158 <td>
1159
1160  
1161 </td>
1162 <td>
1163 <b></b>
1164  
1165 </td>
1166 </tr>
1167 <tr>
1168 <td>realname</td>
1169 <td>realname</td>
1170 <td> </td>
1171 <td>
1172
1173  
1174 </td>
1175 <td>
1176 <b></b>
1177  
1178 </td>
1179 </tr>
1180 <tr>
1181 <td>email</td>
1182 <td>email</td>
1183 <td> </td>
1184 <td>
1185
1186  
1187 </td>
1188 <td>
1189 <b></b>
1190  
1191 </td>
1192 </tr>
1193 <tr>
1194 <td>info</td>
1195 <td>userinfo</td>
1196 <td> </td>
1197 <td>
1198
1199  
1200 </td>
1201 <td>
1202 <b></b>
1203  
1204 </td>
1205 </tr>
1206 <tr>
1207 <td>homepage</td>
1208 <td>url</td>
1209 <td> </td>
1210 <td>
1211
1212  
1213 </td>
1214 <td>
1215 <b></b>
1216  
1217 </td>
1218 </tr>
1219 <tr>
1220 <td>_unused</td>
1221 <td>U64</td>
1222 <td>0 </td>
1223 <td>
1224
1225  
1226 </td>
1227 <td>
1228 <b></b>
1229  
1230 </td>
1231 </tr>
1232 <tr>
1233 <td>_unused</td>
1234 <td>U64</td>
1235 <td>0 </td>
1236 <td>
1237
1238  
1239 </td>
1240 <td>
1241 <b></b>
1242  
1243 </td>
1244 </tr>
1245 </table>
1246
1247 <h4>
1248 <a name="C0013"></a>ORIGIN: CLIENT;
1249 MESSAGE: msg_chat</h4>
1250 NUMERIC TYPE (hex): 0013<p>
1251 <p>This message is sent to initiate or continue a private chat with
1252 a user. You'll always receive a copy of what you have sent back
1253 from the server (as usual).</p>
1254 </p>
1255 <table border="1" width="100%">
1256 <tr>
1257 <th width="10%">NAME</th>
1258 <th width="8%">TYPE</th>
1259 <th width="4%">VALUE</th>
1260 <th>DESCRIPTION</th>
1261 <th width="10%">GUARD</th>
1262 </tr>
1263 <tr>
1264 <td>name</td>
1265 <td>username</td>
1266 <td> </td>
1267 <td>
1268 Name of sender ("yourself").
1269
1270  
1271 </td>
1272 <td>
1273 <b></b>
1274  
1275 </td>
1276 </tr>
1277 <tr>
1278 <td>name2</td>
1279 <td>username</td>
1280 <td> </td>
1281 <td>
1282 Name of recipient.
1283
1284  
1285 </td>
1286 <td>
1287 <b></b>
1288  
1289 </td>
1290 </tr>
1291 <tr>
1292 <td>message</td>
1293 <td>STRING</td>
1294 <td> </td>
1295 <td>
1296 The message.
1297
1298  
1299 </td>
1300 <td>
1301 <b></b>
1302  
1303 </td>
1304 </tr>
1305 </table>
1306
1307 <h4>
1308 <a name="C0014"></a>ORIGIN: CLIENT;
1309 MESSAGE: req_stats</h4>
1310 NUMERIC TYPE (hex): 0014<p>
1311 <p>Request server statistics. Replied with <a href="#S0015">stats(0015)</a>
1312 </p>
1313 </p>
1314 <table border="1" width="100%">
1315 <tr>
1316 <th width="10%">NAME</th>
1317 <th width="8%">TYPE</th>
1318 <th width="4%">VALUE</th>
1319 <th>DESCRIPTION</th>
1320 <th width="10%">GUARD</th>
1321 </tr>
1322 </table>
1323
1324 <h4>
1325 <a name="C0016"></a>ORIGIN: CLIENT;
1326 MESSAGE: idle_reset</h4>
1327 NUMERIC TYPE (hex): 0016<p>
1328 <p>Send in response to <a href="#S0016">idle_warn(0016)</a> to keep the server from disconnecting.</p>
1329 </p>
1330 <table border="1" width="100%">
1331 <tr>
1332 <th width="10%">NAME</th>
1333 <th width="8%">TYPE</th>
1334 <th width="4%">VALUE</th>
1335 <th>DESCRIPTION</th>
1336 <th width="10%">GUARD</th>
1337 </tr>
1338 </table>
1339
1340 <h4>
1341 <a name="C001d"></a>ORIGIN: CLIENT;
1342 MESSAGE: ping</h4>
1343 NUMERIC TYPE (hex): 001d<p>
1344 <p>No idea. Not used anymore?</p>
1345 </p>
1346 <table border="1" width="100%">
1347 <tr>
1348 <th width="10%">NAME</th>
1349 <th width="8%">TYPE</th>
1350 <th width="4%">VALUE</th>
1351 <th>DESCRIPTION</th>
1352 <th width="10%">GUARD</th>
1353 </tr>
1354 </table>
1355
1356 <h4>
1357 <a name="C001e"></a>ORIGIN: CLIENT;
1358 MESSAGE: req_usergraph</h4>
1359 NUMERIC TYPE (hex): 001e<p>
1360 <p>Request user graph data, replied with <a href="#S001e">usergraph(001e)</a>.</p>
1361 </p>
1362 <table border="1" width="100%">
1363 <tr>
1364 <th width="10%">NAME</th>
1365 <th width="8%">TYPE</th>
1366 <th width="4%">VALUE</th>
1367 <th>DESCRIPTION</th>
1368 <th width="10%">GUARD</th>
1369 </tr>
1370 <tr>
1371 <td>name</td>
1372 <td>username</td>
1373 <td> </td>
1374 <td>
1375
1376  
1377 </td>
1378 <td>
1379 <b></b>
1380  
1381 </td>
1382 </tr>
1383 </table>
1384
1385 <h4>
1386 <a name="C0021"></a>ORIGIN: CLIENT;
1387 MESSAGE: req_pic</h4>
1388 NUMERIC TYPE (hex): 0021<p>
1389 <p>Request a user picture from the server. Results in a <a href="#S0021">userpic(0021)</a>
1390 or a timeout.</p>
1391 </p>
1392 <table border="1" width="100%">
1393 <tr>
1394 <th width="10%">NAME</th>
1395 <th width="8%">TYPE</th>
1396 <th width="4%">VALUE</th>
1397 <th>DESCRIPTION</th>
1398 <th width="10%">GUARD</th>
1399 </tr>
1400 <tr>
1401 <td>name</td>
1402 <td>username</td>
1403 <td> </td>
1404 <td>
1405
1406  
1407 </td>
1408 <td>
1409 <b></b>
1410  
1411 </td>
1412 </tr>
1413 </table>
1414
1415 <h4>
1416 <a name="C0021"></a>ORIGIN: CLIENT;
1417 MESSAGE: upload_pic</h4>
1418 NUMERIC TYPE (hex): 0021<p>
1419 Same code as pic_req, but with an additional data section that
1420 must contain a JPEG image that is &lt;=7KB. It must have 141×200 pixels.
1421 </p>
1422 <table border="1" width="100%">
1423 <tr>
1424 <th width="10%">NAME</th>
1425 <th width="8%">TYPE</th>
1426 <th width="4%">VALUE</th>
1427 <th>DESCRIPTION</th>
1428 <th width="10%">GUARD</th>
1429 </tr>
1430 <tr>
1431 <td>name</td>
1432 <td>username</td>
1433 <td> </td>
1434 <td>
1435
1436  
1437 </td>
1438 <td>
1439 <b></b>
1440  
1441 </td>
1442 </tr>
1443 <tr>
1444 <td>data</td>
1445 <td>DATA</td>
1446 <td> </td>
1447 <td>
1448
1449  
1450 </td>
1451 <td>
1452 <b></b>
1453  
1454 </td>
1455 </tr>
1456 </table>
1457
1458 <h4>
1459 <a name="C0023"></a>ORIGIN: CLIENT;
1460 MESSAGE: send_memo</h4>
1461 NUMERIC TYPE (hex): 0023<p>
1462 </p>
1463 <table border="1" width="100%">
1464 <tr>
1465 <th width="10%">NAME</th>
1466 <th width="8%">TYPE</th>
1467 <th width="4%">VALUE</th>
1468 <th>DESCRIPTION</th>
1469 <th width="10%">GUARD</th>
1470 </tr>
1471 <tr>
1472 <td>name</td>
1473 <td>username</td>
1474 <td> </td>
1475 <td>
1476
1477  
1478 </td>
1479 <td>
1480 <b></b>
1481  
1482 </td>
1483 </tr>
1484 <tr>
1485 <td>cid</td>
1486 <td>CLIENTID16</td>
1487 <td> </td>
1488 <td>
1489
1490  
1491 </td>
1492 <td>
1493 <b></b>
1494  
1495 </td>
1496 </tr>
1497 <tr>
1498 <td>msg</td>
1499 <td>STRING</td>
1500 <td> </td>
1501 <td>
1502
1503  
1504 </td>
1505 <td>
1506 <b></b>
1507  
1508 </td>
1509 </tr>
1510 </table>
1511
1512 <h4>
1513 <a name="C0024"></a>ORIGIN: CLIENT;
1514 MESSAGE: delete_memos</h4>
1515 NUMERIC TYPE (hex): 0024<p>
1516 <p>Unconditionally deletes all memos.</p>
1517 </p>
1518 <table border="1" width="100%">
1519 <tr>
1520 <th width="10%">NAME</th>
1521 <th width="8%">TYPE</th>
1522 <th width="4%">VALUE</th>
1523 <th>DESCRIPTION</th>
1524 <th width="10%">GUARD</th>
1525 </tr>
1526 </table>
1527
1528 <h4>
1529 <a name="C0100"></a>ORIGIN: CLIENT;
1530 MESSAGE: gnotice</h4>
1531 NUMERIC TYPE (hex): 0100<p>
1532 <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results
1533 in a <a href="#S0100">gnotice(0100)</a> sent to all users.</p>
1534 </p>
1535 <table border="1" width="100%">
1536 <tr>
1537 <th width="10%">NAME</th>
1538 <th width="8%">TYPE</th>
1539 <th width="4%">VALUE</th>
1540 <th>DESCRIPTION</th>
1541 <th width="10%">GUARD</th>
1542 </tr>
1543 <tr>
1544 <td>notice</td>
1545 <td>STRING</td>
1546 <td> </td>
1547 <td>
1548
1549  
1550 </td>
1551 <td>
1552 <b></b>
1553  
1554 </td>
1555 </tr>
1556 </table>
1557
1558 <h4>
1559 <a name="C0200"></a>ORIGIN: CLIENT;
1560 MESSAGE: notify_add</h4>
1561 NUMERIC TYPE (hex): 0200<p>
1562
1563 <p>Probably setting a notifier on a username, to get informed about
1564 changes using messages. sending your own
1565 username gives you a disconnect, so don't do that at home, kids!</p>
1566 </p>
1567 <table border="1" width="100%">
1568 <tr>
1569 <th width="10%">NAME</th>
1570 <th width="8%">TYPE</th>
1571 <th width="4%">VALUE</th>
1572 <th>DESCRIPTION</th>
1573 <th width="10%">GUARD</th>
1574 </tr>
1575 <tr>
1576 <td>name</td>
1577 <td>username</td>
1578 <td> </td>
1579 <td>
1580
1581  
1582 </td>
1583 <td>
1584 <b></b>
1585  
1586 </td>
1587 </tr>
1588 </table>
1589
1590 <h4>
1591 <a name="C0201"></a>ORIGIN: CLIENT;
1592 MESSAGE: notify_del</h4>
1593 NUMERIC TYPE (hex): 0201<p>
1594
1595 <p>Probably remove the notifier again.</p>
1596 </p>
1597 <table border="1" width="100%">
1598 <tr>
1599 <th width="10%">NAME</th>
1600 <th width="8%">TYPE</th>
1601 <th width="4%">VALUE</th>
1602 <th>DESCRIPTION</th>
1603 <th width="10%">GUARD</th>
1604 </tr>
1605 <tr>
1606 <td>name</td>
1607 <td>username</td>
1608 <td> </td>
1609 <td>
1610
1611  
1612 </td>
1613 <td>
1614 <b></b>
1615  
1616 </td>
1617 </tr>
1618 </table>
1619
1620 <h4>
1621 <a name="C0318"></a>ORIGIN: CLIENT;
1622 MESSAGE: list_rooms</h4>
1623 NUMERIC TYPE (hex): 0318<p>
1624 <p>List the rooms in a specific group/category. Results in a <a href="#S0318">upd_rooms(0318)</a> message.</p>
1625 </p>
1626 <table border="1" width="100%">
1627 <tr>
1628 <th width="10%">NAME</th>
1629 <th width="8%">TYPE</th>
1630 <th width="4%">VALUE</th>
1631 <th>DESCRIPTION</th>
1632 <th width="10%">GUARD</th>
1633 </tr>
1634 <tr>
1635 <td>group</td>
1636 <td>U8</td>
1637 <td> </td>
1638 <td>
1639
1640  
1641 </td>
1642 <td>
1643 <b></b>
1644  
1645 </td>
1646 </tr>
1647 </table>
1648
1649 <h4>
1650 <a name="C031a"></a>ORIGIN: CLIENT;
1651 MESSAGE: new_room</h4>
1652 NUMERIC TYPE (hex): 031a<p>
1653 Create a new room. Not verified.
1654 </p>
1655 <table border="1" width="100%">
1656 <tr>
1657 <th width="10%">NAME</th>
1658 <th width="8%">TYPE</th>
1659 <th width="4%">VALUE</th>
1660 <th>DESCRIPTION</th>
1661 <th width="10%">GUARD</th>
1662 </tr>
1663 <tr>
1664 <td>name</td>
1665 <td>username</td>
1666 <td> </td>
1667 <td>
1668
1669  
1670 </td>
1671 <td>
1672 <b></b>
1673  
1674 </td>
1675 </tr>
1676 <tr>
1677 <td>i1</td>
1678 <td>U32</td>
1679 <td>0 </td>
1680 <td>
1681
1682  
1683 </td>
1684 <td>
1685 <b></b>
1686  
1687 </td>
1688 </tr>
1689 <tr>
1690 <td>b1</td>
1691 <td>U8</td>
1692 <td>0 </td>
1693 <td>
1694
1695  
1696 </td>
1697 <td>
1698 <b></b>
1699  
1700 </td>
1701 </tr>
1702 <tr>
1703 <td>b2</td>
1704 <td>U8</td>
1705 <td>255 </td>
1706 <td>
1707
1708  
1709 </td>
1710 <td>
1711 <b></b>
1712  
1713 </td>
1714 </tr>
1715 <tr>
1716 <td>b3</td>
1717 <td>U8</td>
1718 <td>255 </td>
1719 <td>
1720
1721  
1722 </td>
1723 <td>
1724 <b></b>
1725  
1726 </td>
1727 </tr>
1728 <tr>
1729 <td>group</td>
1730 <td>U8</td>
1731 <td>1 </td>
1732 <td>
1733
1734  
1735 </td>
1736 <td>
1737 <b></b>
1738  
1739 </td>
1740 </tr>
1741 <tr>
1742 <td>name</td>
1743 <td>ZSTRING</td>
1744 <td> </td>
1745 <td>
1746
1747  
1748 </td>
1749 <td>
1750 <b></b>
1751  
1752 </td>
1753 </tr>
1754 <tr>
1755 <td>description</td>
1756 <td>ZSTRING</td>
1757 <td> </td>
1758 <td>
1759
1760  
1761 </td>
1762 <td>
1763 <b></b>
1764  
1765 </td>
1766 </tr>
1767 <tr>
1768 <td>flags</td>
1769 <td>U8</td>
1770 <td> </td>
1771 <td>
1772 See ROOMFLAGs
1773
1774  
1775 </td>
1776 <td>
1777 <b></b>
1778  
1779 </td>
1780 </tr>
1781 </table>
1782
1783 <h4>
1784 <a name="C031b"></a>ORIGIN: CLIENT;
1785 MESSAGE: req_upd_rooms</h4>
1786 NUMERIC TYPE (hex): 031b<p>
1787 <p>Request a rooms update message for the given room.</p>
1788 </p>
1789 <table border="1" width="100%">
1790 <tr>
1791 <th width="10%">NAME</th>
1792 <th width="8%">TYPE</th>
1793 <th width="4%">VALUE</th>
1794 <th>DESCRIPTION</th>
1795 <th width="10%">GUARD</th>
1796 </tr>
1797 <tr>
1798 <td>channel</td>
1799 <td>U16</td>
1800 <td> </td>
1801 <td>
1802
1803  
1804 </td>
1805 <td>
1806 <b></b>
1807  
1808 </td>
1809 </tr>
1810 </table>
1811
1812 <h4>
1813 <a name="C0413"></a>ORIGIN: CLIENT;
1814 MESSAGE: req_game_record</h4>
1815 NUMERIC TYPE (hex): 0413<p>
1816 <p>Requests part of the users game record to be sent. Results in a <a href="#S0414">game_record(0414)</a> or maybe a timeout.</p>
1817 </p>
1818 <table border="1" width="100%">
1819 <tr>
1820 <th width="10%">NAME</th>
1821 <th width="8%">TYPE</th>
1822 <th width="4%">VALUE</th>
1823 <th>DESCRIPTION</th>
1824 <th width="10%">GUARD</th>
1825 </tr>
1826 <tr>
1827 <td>name</td>
1828 <td>username</td>
1829 <td> </td>
1830 <td>
1831
1832  
1833 </td>
1834 <td>
1835 <b></b>
1836  
1837 </td>
1838 </tr>
1839 <tr>
1840 <td>timestamp</td>
1841 <td>timestamp</td>
1842 <td> </td>
1843 <td>
1844 If zero, start at the newest games, else only send games
1845 before the given timestap.
1846
1847  
1848 </td>
1849 <td>
1850 <b></b>
1851  
1852 </td>
1853 </tr>
1854 </table>
1855
1856 <h4>
1857 <a name="C4300"></a>ORIGIN: CLIENT;
1858 MESSAGE: join_room</h4>
1859 NUMERIC TYPE (hex): 4300<p>
1860 <p>Joins the given room. <a href="#S4300">join_room(4300)</a> messages for yourself
1861 and all users in that room, as well as the initial gamelist, are
1862 send if the room exists. If not, timeout...</p>
1863 </p>
1864 <table border="1" width="100%">
1865 <tr>
1866 <th width="10%">NAME</th>
1867 <th width="8%">TYPE</th>
1868 <th width="4%">VALUE</th>
1869 <th>DESCRIPTION</th>
1870 <th width="10%">GUARD</th>
1871 </tr>
1872 <tr>
1873 <td>channel</td>
1874 <td>U16</td>
1875 <td> </td>
1876 <td>
1877
1878  
1879 </td>
1880 <td>
1881 <b></b>
1882  
1883 </td>
1884 </tr>
1885 <tr>
1886 <td>user</td>
1887 <td>user</td>
1888 <td> </td>
1889 <td>
1890
1891  
1892 </td>
1893 <td>
1894 <b></b>
1895  
1896 </td>
1897 </tr>
1898 </table>
1899
1900 <h4>
1901 <a name="C4301"></a>ORIGIN: CLIENT;
1902 MESSAGE: msg_room</h4>
1903 NUMERIC TYPE (hex): 4301<p>
1904 Send a message to the room.
1905 </p>
1906 <table border="1" width="100%">
1907 <tr>
1908 <th width="10%">NAME</th>
1909 <th width="8%">TYPE</th>
1910 <th width="4%">VALUE</th>
1911 <th>DESCRIPTION</th>
1912 <th width="10%">GUARD</th>
1913 </tr>
1914 <tr>
1915 <td>channel</td>
1916 <td>U16</td>
1917 <td> </td>
1918 <td>
1919
1920  
1921 </td>
1922 <td>
1923 <b></b>
1924  
1925 </td>
1926 </tr>
1927 <tr>
1928 <td>name</td>
1929 <td>username</td>
1930 <td> </td>
1931 <td>
1932 Must be the login-name of the user.
1933
1934  
1935 </td>
1936 <td>
1937 <b></b>
1938  
1939 </td>
1940 </tr>
1941 <tr>
1942 <td>message</td>
1943 <td>STRING</td>
1944 <td> </td>
1945 <td>
1946
1947  
1948 </td>
1949 <td>
1950 <b></b>
1951  
1952 </td>
1953 </tr>
1954 </table>
1955
1956 <h4>
1957 <a name="C4302"></a>ORIGIN: CLIENT;
1958 MESSAGE: part_room</h4>
1959 NUMERIC TYPE (hex): 4302<p>
1960 Remove yourself (or maybe others as admin) from a room.
1961 </p>
1962 <table border="1" width="100%">
1963 <tr>
1964 <th width="10%">NAME</th>
1965 <th width="8%">TYPE</th>
1966 <th width="4%">VALUE</th>
1967 <th>DESCRIPTION</th>
1968 <th width="10%">GUARD</th>
1969 </tr>
1970 <tr>
1971 <td>channel</td>
1972 <td>U16</td>
1973 <td> </td>
1974 <td>
1975
1976  
1977 </td>
1978 <td>
1979 <b></b>
1980  
1981 </td>
1982 </tr>
1983 <tr>
1984 <td>name</td>
1985 <td>username</td>
1986 <td> </td>
1987 <td>
1988
1989  
1990 </td>
1991 <td>
1992 <b></b>
1993  
1994 </td>
1995 </tr>
1996 </table>
1997
1998 <h4>
1999 <a name="C4305"></a>ORIGIN: CLIENT;
2000 MESSAGE: new_game</h4>
2001 NUMERIC TYPE (hex): 4305<p>
2002 <p>Create a new game.</p>
2003 </p>
2004 <table border="1" width="100%">
2005 <tr>
2006 <th width="10%">NAME</th>
2007 <th width="8%">TYPE</th>
2008 <th width="4%">VALUE</th>
2009 <th>DESCRIPTION</th>
2010 <th width="10%">GUARD</th>
2011 </tr>
2012 <tr>
2013 <td>channel</td>
2014 <td>U16</td>
2015 <td> </td>
2016 <td>
2017
2018  
2019 </td>
2020 <td>
2021 <b></b>
2022  
2023 </td>
2024 </tr>
2025 <tr>
2026 <td>cid</td>
2027 <td>CLIENTID16</td>
2028 <td> </td>
2029 <td>
2030
2031  
2032 </td>
2033 <td>
2034 <b></b>
2035  
2036 </td>
2037 </tr>
2038 <tr>
2039 <td>gametype</td>
2040 <td>U8</td>
2041 <td> </td>
2042 <td>
2043
2044  
2045 </td>
2046 <td>
2047 <b></b>
2048  
2049 </td>
2050 </tr>
2051 <tr>
2052 <td>flags</td>
2053 <td>U8</td>
2054 <td> </td>
2055 <td>
2056
2057  
2058 </td>
2059 <td>
2060 <b></b>
2061  
2062 </td>
2063 </tr>
2064 <tr>
2065 <td>rules</td>
2066 <td>rules</td>
2067 <td> </td>
2068 <td>
2069
2070  
2071 </td>
2072 <td>
2073 <b></b>
2074  
2075 </td>
2076 </tr>
2077 <tr>
2078 <td>notes</td>
2079 <td>STRING</td>
2080 <td> </td>
2081 <td>
2082
2083  
2084 </td>
2085 <td>
2086 <b></b>
2087  
2088 </td>
2089 </tr>
2090 </table>
2091
2092 <h4>
2093 <a name="C430a"></a>ORIGIN: CLIENT;
2094 MESSAGE: load_game</h4>
2095 NUMERIC TYPE (hex): 430a<p>
2096 Load an existing game into a room(?)
2097 There is no indication that a new game is there except
2098 for a upd_observers message with your name in it. Which means
2099 you have to watch upd_observers messages that are not for any
2100 currently open game and open one. Ugh.
2101 </p>
2102 <table border="1" width="100%">
2103 <tr>
2104 <th width="10%">NAME</th>
2105 <th width="8%">TYPE</th>
2106 <th width="4%">VALUE</th>
2107 <th>DESCRIPTION</th>
2108 <th width="10%">GUARD</th>
2109 </tr>
2110 <tr>
2111 <td>channel</td>
2112 <td>U16</td>
2113 <td> </td>
2114 <td>
2115 The room to load the game into.
2116
2117  
2118 </td>
2119 <td>
2120 <b></b>
2121  
2122 </td>
2123 </tr>
2124 <tr>
2125 <td>timestamp</td>
2126 <td>timestamp</td>
2127 <td> </td>
2128 <td>
2129 From the game record.
2130
2131  
2132 </td>
2133 <td>
2134 <b></b>
2135  
2136 </td>
2137 </tr>
2138 <tr>
2139 <td>user</td>
2140 <td>username</td>
2141 <td> </td>
2142 <td>
2143
2144  
2145 </td>
2146 <td>
2147 <b></b>
2148  
2149 </td>
2150 </tr>
2151 <tr>
2152 <td>flags</td>
2153 <td>U8</td>
2154 <td> </td>
2155 <td>
2156 0 == public, 2 == private
2157
2158  
2159 </td>
2160 <td>
2161 <b></b>
2162  
2163 </td>
2164 </tr>
2165 </table>
2166
2167 <h4>
2168 <a name="C430b"></a>ORIGIN: CLIENT;
2169 MESSAGE: req_games</h4>
2170 NUMERIC TYPE (hex): 430b<p>
2171 Request to update room game list (send this once per minute to get
2172 updated). Results in upd_games messages.
2173 </p>
2174 <table border="1" width="100%">
2175 <tr>
2176 <th width="10%">NAME</th>
2177 <th width="8%">TYPE</th>
2178 <th width="4%">VALUE</th>
2179 <th>DESCRIPTION</th>
2180 <th width="10%">GUARD</th>
2181 </tr>
2182 <tr>
2183 <td>channel</td>
2184 <td>U16</td>
2185 <td> </td>
2186 <td>
2187
2188  
2189 </td>
2190 <td>
2191 <b></b>
2192  
2193 </td>
2194 </tr>
2195 </table>
2196
2197 <h4>
2198 <a name="C4319"></a>ORIGIN: CLIENT;
2199 MESSAGE: req_desc</h4>
2200 NUMERIC TYPE (hex): 4319<p>
2201 Request room description.
2202 </p>
2203 <table border="1" width="100%">
2204 <tr>
2205 <th width="10%">NAME</th>
2206 <th width="8%">TYPE</th>
2207 <th width="4%">VALUE</th>
2208 <th>DESCRIPTION</th>
2209 <th width="10%">GUARD</th>
2210 </tr>
2211 <tr>
2212 <td>channel</td>
2213 <td>U16</td>
2214 <td> </td>
2215 <td>
2216
2217  
2218 </td>
2219 <td>
2220 <b></b>
2221  
2222 </td>
2223 </tr>
2224 </table>
2225
2226 <h4>
2227 <a name="C4400"></a>ORIGIN: CLIENT;
2228 MESSAGE: challenge</h4>
2229 NUMERIC TYPE (hex): 4400<p>
2230 <p>Used to send challenges to existing games.</p>
2231 </p>
2232 <table border="1" width="100%">
2233 <tr>
2234 <th width="10%">NAME</th>
2235 <th width="8%">TYPE</th>
2236 <th width="4%">VALUE</th>
2237 <th>DESCRIPTION</th>
2238 <th width="10%">GUARD</th>
2239 </tr>
2240 <tr>
2241 <td>channel</td>
2242 <td>U16</td>
2243 <td> </td>
2244 <td>
2245
2246  
2247 </td>
2248 <td>
2249 <b></b>
2250  
2251 </td>
2252 </tr>
2253 <tr>
2254 <td>black</td>
2255 <td>user</td>
2256 <td> </td>
2257 <td>
2258
2259  
2260 </td>
2261 <td>
2262 <b></b>
2263  
2264 </td>
2265 </tr>
2266 <tr>
2267 <td>white</td>
2268 <td>user</td>
2269 <td> </td>
2270 <td>
2271
2272  
2273 </td>
2274 <td>
2275 <b></b>
2276  
2277 </td>
2278 </tr>
2279 <tr>
2280 <td>gametype</td>
2281 <td>U8</td>
2282 <td> </td>
2283 <td>
2284
2285  
2286 </td>
2287 <td>
2288 <b></b>
2289  
2290 </td>
2291 </tr>
2292 <tr>
2293 <td>cid</td>
2294 <td>CLIENTID8</td>
2295 <td> </td>
2296 <td>
2297
2298  
2299 </td>
2300 <td>
2301 <b></b>
2302  
2303 </td>
2304 </tr>
2305 <tr>
2306 <td>rules</td>
2307 <td>rules</td>
2308 <td> </td>
2309 <td>
2310
2311  
2312 </td>
2313 <td>
2314 <b></b>
2315  
2316 </td>
2317 </tr>
2318 </table>
2319
2320 <h4>
2321 <a name="C4403"></a>ORIGIN: CLIENT;
2322 MESSAGE: join_game</h4>
2323 NUMERIC TYPE (hex): 4403<p>
2324 Join a game. See join_room.
2325 </p>
2326 <table border="1" width="100%">
2327 <tr>
2328 <th width="10%">NAME</th>
2329 <th width="8%">TYPE</th>
2330 <th width="4%">VALUE</th>
2331 <th>DESCRIPTION</th>
2332 <th width="10%">GUARD</th>
2333 </tr>
2334 <tr>
2335 <td>channel</td>
2336 <td>U16</td>
2337 <td> </td>
2338 <td>
2339
2340  
2341 </td>
2342 <td>
2343 <b></b>
2344  
2345 </td>
2346 </tr>
2347 <tr>
2348 <td>user</td>
2349 <td>user</td>
2350 <td> </td>
2351 <td>
2352
2353  
2354 </td>
2355 <td>
2356 <b></b>
2357  
2358 </td>
2359 </tr>
2360 </table>
2361
2362 <h4>
2363 <a name="C4404"></a>ORIGIN: CLIENT;
2364 MESSAGE: part_game</h4>
2365 NUMERIC TYPE (hex): 4404<p>
2366 Leave (or kick as admin?) a certain user from a game.
2367 </p>
2368 <table border="1" width="100%">
2369 <tr>
2370 <th width="10%">NAME</th>
2371 <th width="8%">TYPE</th>
2372 <th width="4%">VALUE</th>
2373 <th>DESCRIPTION</th>
2374 <th width="10%">GUARD</th>
2375 </tr>
2376 <tr>
2377 <td>channel</td>
2378 <td>U16</td>
2379 <td> </td>
2380 <td>
2381
2382  
2383 </td>
2384 <td>
2385 <b></b>
2386  
2387 </td>
2388 </tr>
2389 <tr>
2390 <td>name</td>
2391 <td>username</td>
2392 <td> </td>
2393 <td>
2394
2395  
2396 </td>
2397 <td>
2398 <b></b>
2399  
2400 </td>
2401 </tr>
2402 </table>
2403
2404 <h4>
2405 <a name="C4405"></a>ORIGIN: CLIENT;
2406 MESSAGE: set_tree</h4>
2407 NUMERIC TYPE (hex): 4405<p>
2408 Possibly upload an initial game to an empty room. Not tested.
2409
2410 </p>
2411 <table border="1" width="100%">
2412 <tr>
2413 <th width="10%">NAME</th>
2414 <th width="8%">TYPE</th>
2415 <th width="4%">VALUE</th>
2416 <th>DESCRIPTION</th>
2417 <th width="10%">GUARD</th>
2418 </tr>
2419 <tr>
2420 <td>channel</td>
2421 <td>U16</td>
2422 <td> </td>
2423 <td>
2424
2425  
2426 </td>
2427 <td>
2428 <b></b>
2429  
2430 </td>
2431 </tr>
2432 <tr>
2433 <td>tree</td>
2434 <td>TREE</td>
2435 <td> </td>
2436 <td>
2437
2438  
2439 </td>
2440 <td>
2441 <b></b>
2442  
2443 </td>
2444 </tr>
2445 </table>
2446
2447 <h4>
2448 <a name="C4406"></a>ORIGIN: CLIENT;
2449 MESSAGE: upd_tree</h4>
2450 NUMERIC TYPE (hex): 4406<p>
2451 <p>Upload a partial game tree to the server. This is used to send moves
2452 and even in-game comments to the server. For the comments, the
2453 server prepends the username and rank.</p>
2454 </p>
2455 <table border="1" width="100%">
2456 <tr>
2457 <th width="10%">NAME</th>
2458 <th width="8%">TYPE</th>
2459 <th width="4%">VALUE</th>
2460 <th>DESCRIPTION</th>
2461 <th width="10%">GUARD</th>
2462 </tr>
2463 <tr>
2464 <td>channel</td>
2465 <td>U16</td>
2466 <td> </td>
2467 <td>
2468
2469  
2470 </td>
2471 <td>
2472 <b></b>
2473  
2474 </td>
2475 </tr>
2476 <tr>
2477 <td>tree</td>
2478 <td>TREE</td>
2479 <td> </td>
2480 <td>
2481
2482  
2483 </td>
2484 <td>
2485 <b></b>
2486  
2487 </td>
2488 </tr>
2489 </table>
2490
2491 <h4>
2492 <a name="C4407"></a>ORIGIN: CLIENT;
2493 MESSAGE: mark_dead</h4>
2494 NUMERIC TYPE (hex): 4407<p>
2495 <p>Marks stones ad dead (or alive?) by the client. Details unclear</p>
2496 </p>
2497 <table border="1" width="100%">
2498 <tr>
2499 <th width="10%">NAME</th>
2500 <th width="8%">TYPE</th>
2501 <th width="4%">VALUE</th>
2502 <th>DESCRIPTION</th>
2503 <th width="10%">GUARD</th>
2504 </tr>
2505 <tr>
2506 <td>channel</td>
2507 <td>U16</td>
2508 <td> </td>
2509 <td>
2510
2511  
2512 </td>
2513 <td>
2514 <b></b>
2515  
2516 </td>
2517 </tr>
2518 <tr>
2519 <td>x</td>
2520 <td>U8</td>
2521 <td> </td>
2522 <td>
2523
2524  
2525 </td>
2526 <td>
2527 <b></b>
2528  
2529 </td>
2530 </tr>
2531 <tr>
2532 <td>y</td>
2533 <td>U8</td>
2534 <td> </td>
2535 <td>
2536
2537  
2538 </td>
2539 <td>
2540 <b></b>
2541  
2542 </td>
2543 </tr>
2544 <tr>
2545 <td>dead</td>
2546 <td>flag</td>
2547 <td> </td>
2548 <td>
2549
2550  
2551 </td>
2552 <td>
2553 <b></b>
2554  
2555 </td>
2556 </tr>
2557 </table>
2558
2559 <h4>
2560 <a name="C4408"></a>ORIGIN: CLIENT;
2561 MESSAGE: get_tree</h4>
2562 NUMERIC TYPE (hex): 4408<p>
2563 <p>Request the game tree starting at a given node. This is used when
2564 the server only sends a partial tree (with end code "more").</p>
2565 </p>
2566 <table border="1" width="100%">
2567 <tr>
2568 <th width="10%">NAME</th>
2569 <th width="8%">TYPE</th>
2570 <th width="4%">VALUE</th>
2571 <th>DESCRIPTION</th>
2572 <th width="10%">GUARD</th>
2573 </tr>
2574 <tr>
2575 <td>channel</td>
2576 <td>U16</td>
2577 <td> </td>
2578 <td>
2579
2580  
2581 </td>
2582 <td>
2583 <b></b>
2584  
2585 </td>
2586 </tr>
2587 <tr>
2588 <td>node</td>
2589 <td>U32</td>
2590 <td> </td>
2591 <td>
2592
2593  
2594 </td>
2595 <td>
2596 <b></b>
2597  
2598 </td>
2599 </tr>
2600 </table>
2601
2602 <h4>
2603 <a name="C440a"></a>ORIGIN: CLIENT;
2604 MESSAGE: game_done</h4>
2605 NUMERIC TYPE (hex): 440a<p>
2606 <p>Sent by the client to mark the game as done.</p>
2607 </p>
2608 <table border="1" width="100%">
2609 <tr>
2610 <th width="10%">NAME</th>
2611 <th width="8%">TYPE</th>
2612 <th width="4%">VALUE</th>
2613 <th>DESCRIPTION</th>
2614 <th width="10%">GUARD</th>
2615 </tr>
2616 <tr>
2617 <td>channel</td>
2618 <td>U16</td>
2619 <td> </td>
2620 <td>
2621
2622  
2623 </td>
2624 <td>
2625 <b></b>
2626  
2627 </td>
2628 </tr>
2629 <tr>
2630 <td>id</td>
2631 <td>U32</td>
2632 <td> </td>
2633 <td>
2634
2635  
2636 </td>
2637 <td>
2638 <b></b>
2639  
2640 </td>
2641 </tr>
2642 </table>
2643
2644 <h4>
2645 <a name="C440c"></a>ORIGIN: CLIENT;
2646 MESSAGE: claim_win</h4>
2647 NUMERIC TYPE (hex): 440c<p>
2648 <p>Used by the client to claim a win.</p>
2649 </p>
2650 <table border="1" width="100%">
2651 <tr>
2652 <th width="10%">NAME</th>
2653 <th width="8%">TYPE</th>
2654 <th width="4%">VALUE</th>
2655 <th>DESCRIPTION</th>
2656 <th width="10%">GUARD</th>
2657 </tr>
2658 <tr>
2659 <td>channel</td>
2660 <td>U16</td>
2661 <td> </td>
2662 <td>
2663
2664  
2665 </td>
2666 <td>
2667 <b></b>
2668  
2669 </td>
2670 </tr>
2671 <tr>
2672 <td>player</td>
2673 <td>U8 </td>
2674 <td> </td>
2675 <td>
2676
2677  
2678 </td>
2679 <td>
2680 <b></b>
2681  
2682 </td>
2683 </tr>
2684 </table>
2685
2686 <h4>
2687 <a name="C440d"></a>ORIGIN: CLIENT;
2688 MESSAGE: add_time</h4>
2689 NUMERIC TYPE (hex): 440d<p>
2690 <p>Adds the given amount of time to your opponent's clock.</p>
2691 </p>
2692 <table border="1" width="100%">
2693 <tr>
2694 <th width="10%">NAME</th>
2695 <th width="8%">TYPE</th>
2696 <th width="4%">VALUE</th>
2697 <th>DESCRIPTION</th>
2698 <th width="10%">GUARD</th>
2699 </tr>
2700 <tr>
2701 <td>channel</td>
2702 <td>U16</td>
2703 <td> </td>
2704 <td>
2705
2706  
2707 </td>
2708 <td>
2709 <b></b>
2710  
2711 </td>
2712 </tr>
2713 <tr>
2714 <td>time</td>
2715 <td>U32</td>
2716 <td> </td>
2717 <td>
2718
2719  
2720 </td>
2721 <td>
2722 <b></b>
2723  
2724 </td>
2725 </tr>
2726 <tr>
2727 <td>player</td>
2728 <td>U8</td>
2729 <td> </td>
2730 <td>
2731
2732  
2733 </td>
2734 <td>
2735 <b></b>
2736  
2737 </td>
2738 </tr>
2739 </table>
2740
2741 <h4>
2742 <a name="C440e"></a>ORIGIN: CLIENT;
2743 MESSAGE: req_undo</h4>
2744 NUMERIC TYPE (hex): 440e<p>
2745 </p>
2746 <table border="1" width="100%">
2747 <tr>
2748 <th width="10%">NAME</th>
2749 <th width="8%">TYPE</th>
2750 <th width="4%">VALUE</th>
2751 <th>DESCRIPTION</th>
2752 <th width="10%">GUARD</th>
2753 </tr>
2754 <tr>
2755 <td>channel</td>
2756 <td>U16</td>
2757 <td> </td>
2758 <td>
2759
2760  
2761 </td>
2762 <td>
2763 <b></b>
2764  
2765 </td>
2766 </tr>
2767 </table>
2768
2769 <h4>
2770 <a name="C440f"></a>ORIGIN: CLIENT;
2771 MESSAGE: grant_undo</h4>
2772 NUMERIC TYPE (hex): 440f<p>
2773 Can be send after a req_undo message was received to grant the undo.
2774 </p>
2775 <table border="1" width="100%">
2776 <tr>
2777 <th width="10%">NAME</th>
2778 <th width="8%">TYPE</th>
2779 <th width="4%">VALUE</th>
2780 <th>DESCRIPTION</th>
2781 <th width="10%">GUARD</th>
2782 </tr>
2783 <tr>
2784 <td>channel</td>
2785 <td>U16</td>
2786 <td> </td>
2787 <td>
2788
2789  
2790 </td>
2791 <td>
2792 <b></b>
2793  
2794 </td>
2795 </tr>
2796 </table>
2797
2798 <h4>
2799 <a name="C4410"></a>ORIGIN: CLIENT;
2800 MESSAGE: resign_game</h4>
2801 NUMERIC TYPE (hex): 4410<p>
2802 Resign the game.
2803 </p>
2804 <table border="1" width="100%">
2805 <tr>
2806 <th width="10%">NAME</th>
2807 <th width="8%">TYPE</th>
2808 <th width="4%">VALUE</th>
2809 <th>DESCRIPTION</th>
2810 <th width="10%">GUARD</th>
2811 </tr>
2812 <tr>
2813 <td>channel</td>
2814 <td>U16</td>
2815 <td> </td>
2816 <td>
2817
2818  
2819 </td>
2820 <td>
2821 <b></b>
2822  
2823 </td>
2824 </tr>
2825 <tr>
2826 <td>player</td>
2827 <td>U8</td>
2828 <td> </td>
2829 <td>
2830
2831  
2832 </td>
2833 <td>
2834 <b></b>
2835  
2836 </td>
2837 </tr>
2838 </table>
2839
2840 <h4>
2841 <a name="C441a"></a>ORIGIN: CLIENT;
2842 MESSAGE: set_teacher</h4>
2843 NUMERIC TYPE (hex): 441a<p>
2844 <p>Change the teacher to somebody else (or possibly yourself == take it). If the
2845 name is empty, the game will continue normally.</p>
2846 </p>
2847 <table border="1" width="100%">
2848 <tr>
2849 <th width="10%">NAME</th>
2850 <th width="8%">TYPE</th>
2851 <th width="4%">VALUE</th>
2852 <th>DESCRIPTION</th>
2853 <th width="10%">GUARD</th>
2854 </tr>
2855 <tr>
2856 <td>channel</td>
2857 <td>U16</td>
2858 <td> </td>
2859 <td>
2860
2861  
2862 </td>
2863 <td>
2864 <b></b>
2865  
2866 </td>
2867 </tr>
2868 <tr>
2869 <td>name</td>
2870 <td>username</td>
2871 <td> </td>
2872 <td>
2873
2874  
2875 </td>
2876 <td>
2877 <b></b>
2878  
2879 </td>
2880 </tr>
2881 </table>
2882
2883 <h4>
2884 <a name="C4422"></a>ORIGIN: CLIENT;
2885 MESSAGE: allow_user</h4>
2886 NUMERIC TYPE (hex): 4422<p>
2887 <p>Unclear. Maybe allow users to talk? No idea, really.</p>
2888 </p>
2889 <table border="1" width="100%">
2890 <tr>
2891 <th width="10%">NAME</th>
2892 <th width="8%">TYPE</th>
2893 <th width="4%">VALUE</th>
2894 <th>DESCRIPTION</th>
2895 <th width="10%">GUARD</th>
2896 </tr>
2897 <tr>
2898 <td>channel</td>
2899 <td>U16</td>
2900 <td> </td>
2901 <td>
2902
2903  
2904 </td>
2905 <td>
2906 <b></b>
2907  
2908 </td>
2909 </tr>
2910 <tr>
2911 <td>othername</td>
2912 <td>username</td>
2913 <td> </td>
2914 <td>
2915
2916  
2917 </td>
2918 <td>
2919 <b></b>
2920  
2921 </td>
2922 </tr>
2923 <tr>
2924 <td>name</td>
2925 <td>username</td>
2926 <td> </td>
2927 <td>; # gives user access to the game (to what? ;)
2928
2929  
2930 </td>
2931 <td>
2932 <b></b>
2933  
2934 </td>
2935 </tr>
2936 </table>
2937
2938 <h4>
2939 <a name="C4423"></a>ORIGIN: CLIENT;
2940 MESSAGE: set_privacy</h4>
2941 NUMERIC TYPE (hex): 4423<p>
2942 Probably sets the "quiet" flag. Not checked.
2943 </p>
2944 <table border="1" width="100%">
2945 <tr>
2946 <th width="10%">NAME</th>
2947 <th width="8%">TYPE</th>
2948 <th width="4%">VALUE</th>
2949 <th>DESCRIPTION</th>
2950 <th width="10%">GUARD</th>
2951 </tr>
2952 <tr>
2953 <td>channel</td>
2954 <td>U16</td>
2955 <td> </td>
2956 <td>
2957
2958  
2959 </td>
2960 <td>
2961 <b></b>
2962  
2963 </td>
2964 </tr>
2965 <tr>
2966 <td>private</td>
2967 <td>flag</td>
2968 <td> </td>
2969 <td>
2970
2971  
2972 </td>
2973 <td>
2974 <b></b>
2975  
2976 </td>
2977 </tr>
2978 </table>
2979
2980 <h4>
2981 <a name="C4427"></a>ORIGIN: CLIENT;
2982 MESSAGE: game_move</h4>
2983 NUMERIC TYPE (hex): 4427<p>
2984 <p>Only during playing, moves.</p>
2985 </p>
2986 <table border="1" width="100%">
2987 <tr>
2988 <th width="10%">NAME</th>
2989 <th width="8%">TYPE</th>
2990 <th width="4%">VALUE</th>
2991 <th>DESCRIPTION</th>
2992 <th width="10%">GUARD</th>
2993 </tr>
2994 <tr>
2995 <td>channel</td>
2996 <td>U16</td>
2997 <td> </td>
2998 <td>
2999
3000  
3001 </td>
3002 <td>
3003 <b></b>
3004  
3005 </td>
3006 </tr>
3007 <tr>
3008 <td>x</td>
3009 <td>U8</td>
3010 <td> </td>
3011 <td>
3012
3013  
3014 </td>
3015 <td>
3016 <b></b>
3017  
3018 </td>
3019 </tr>
3020 <tr>
3021 <td>y</td>
3022 <td>U8</td>
3023 <td> </td>
3024 <td>
3025
3026  
3027 </td>
3028 <td>
3029 <b></b>
3030  
3031 </td>
3032 </tr>
3033 </table>
3034
3035 <h4>
3036 <a name="C4429"></a>ORIGIN: CLIENT;
3037 MESSAGE: reject_challenge</h4>
3038 NUMERIC TYPE (hex): 4429<p>
3039 Reject a challenge from a given user. Not checked.
3040
3041 </p>
3042 <table border="1" width="100%">
3043 <tr>
3044 <th width="10%">NAME</th>
3045 <th width="8%">TYPE</th>
3046 <th width="4%">VALUE</th>
3047 <th>DESCRIPTION</th>
3048 <th width="10%">GUARD</th>
3049 </tr>
3050 <tr>
3051 <td>channel</td>
3052 <td>U16</td>
3053 <td> </td>
3054 <td>
3055
3056  
3057 </td>
3058 <td>
3059 <b></b>
3060  
3061 </td>
3062 </tr>
3063 <tr>
3064 <td>name</td>
3065 <td>username</td>
3066 <td> </td>
3067 <td>
3068
3069  
3070 </td>
3071 <td>
3072 <b></b>
3073  
3074 </td>
3075 </tr>
3076 <tr>
3077 <td>gametype</td>
3078 <td>U8</td>
3079 <td> </td>
3080 <td>
3081
3082  
3083 </td>
3084 <td>
3085 <b></b>
3086  
3087 </td>
3088 </tr>
3089 <tr>
3090 <td>cid</td>
3091 <td>CLIENTID8</td>
3092 <td> </td>
3093 <td>
3094
3095  
3096 </td>
3097 <td>
3098 <b></b>
3099  
3100 </td>
3101 </tr>
3102 <tr>
3103 <td>rules</td>
3104 <td>rules</td>
3105 <td> </td>
3106 <td>
3107
3108  
3109 </td>
3110 <td>
3111 <b></b>
3112  
3113 </td>
3114 </tr>
3115 </table>
3116
3117 <h4>
3118 <a name="C442d"></a>ORIGIN: CLIENT;
3119 MESSAGE: more_comments</h4>
3120 NUMERIC TYPE (hex): 442d<p>
3121 <p>Quite brokenly, the want this to send you more comments.
3122 Reply to <a href="#S442d">more_comments(442d)</a>.</p>
3123 </p>
3124 <table border="1" width="100%">
3125 <tr>
3126 <th width="10%">NAME</th>
3127 <th width="8%">TYPE</th>
3128 <th width="4%">VALUE</th>
3129 <th>DESCRIPTION</th>
3130 <th width="10%">GUARD</th>
3131 </tr>
3132 <tr>
3133 <td>channel</td>
3134 <td>U16</td>
3135 <td> </td>
3136 <td>
3137
3138  
3139 </td>
3140 <td>
3141 <b></b>
3142  
3143 </td>
3144 </tr>
3145 <tr>
3146 <td>node</td>
3147 <td>U32</td>
3148 <td> </td>
3149 <td>
3150
3151  
3152 </td>
3153 <td>
3154 <b></b>
3155  
3156 </td>
3157 </tr>
3158 </table>
3159
3160 <h4>
3161 <a name="C442e"></a>ORIGIN: CLIENT;
3162 MESSAGE: save_game</h4>
3163 NUMERIC TYPE (hex): 442e<p>
3164 <p>Is send when a game is closed and should be saved on the gamerecord.</p>
3165 </p>
3166 <table border="1" width="100%">
3167 <tr>
3168 <th width="10%">NAME</th>
3169 <th width="8%">TYPE</th>
3170 <th width="4%">VALUE</th>
3171 <th>DESCRIPTION</th>
3172 <th width="10%">GUARD</th>
3173 </tr>
3174 <tr>
3175 <td>channel</td>
3176 <td>U16</td>
3177 <td> </td>
3178 <td>
3179
3180  
3181 </td>
3182 <td>
3183 <b></b>
3184  
3185 </td>
3186 </tr>
3187 </table>
3188
3189 <h4>
3190 <a name="C4433"></a>ORIGIN: CLIENT;
3191 MESSAGE: req_result</h4>
3192 NUMERIC TYPE (hex): 4433<p>
3193 I forgot.
3194
3195 </p>
3196 <table border="1" width="100%">
3197 <tr>
3198 <th width="10%">NAME</th>
3199 <th width="8%">TYPE</th>
3200 <th width="4%">VALUE</th>
3201 <th>DESCRIPTION</th>
3202 <th width="10%">GUARD</th>
3203 </tr>
3204 <tr>
3205 <td>channel</td>
3206 <td>U16</td>
3207 <td> </td>
3208 <td>
3209
3210  
3211 </td>
3212 <td>
3213 <b></b>
3214  
3215 </td>
3216 </tr>
3217 </table>
3218
3219 <h4>
3220 <a name="C4434"></a>ORIGIN: CLIENT;
3221 MESSAGE: set_quiet</h4>
3222 NUMERIC TYPE (hex): 4434<p>
3223 <p>Sets (or clears) the quiet flag on a game.</p>
3224 </p>
3225 <table border="1" width="100%">
3226 <tr>
3227 <th width="10%">NAME</th>
3228 <th width="8%">TYPE</th>
3229 <th width="4%">VALUE</th>
3230 <th>DESCRIPTION</th>
3231 <th width="10%">GUARD</th>
3232 </tr>
3233 <tr>
3234 <td>channel</td>
3235 <td>U16</td>
3236 <td> </td>
3237 <td>
3238
3239  
3240 </td>
3241 <td>
3242 <b></b>
3243  
3244 </td>
3245 </tr>
3246 <tr>
3247 <td>quiet</td>
3248 <td>flag</td>
3249 <td> </td>
3250 <td>
3251
3252  
3253 </td>
3254 <td>
3255 <b></b>
3256  
3257 </td>
3258 </tr>
3259 </table>
3260
3261 <h4>
3262 <a name="C4436"></a>ORIGIN: CLIENT;
3263 MESSAGE: msg_game</h4>
3264 NUMERIC TYPE (hex): 4436<p>
3265 </p>
3266 <table border="1" width="100%">
3267 <tr>
3268 <th width="10%">NAME</th>
3269 <th width="8%">TYPE</th>
3270 <th width="4%">VALUE</th>
3271 <th>DESCRIPTION</th>
3272 <th width="10%">GUARD</th>
3273 </tr>
3274 <tr>
3275 <td>channel</td>
3276 <td>U16</td>
3277 <td> </td>
3278 <td>
3279
3280  
3281 </td>
3282 <td>
3283 <b></b>
3284  
3285 </td>
3286 </tr>
3287 <tr>
3288 <td>message</td>
3289 <td>STRING</td>
3290 <td> </td>
3291 <td>
3292
3293  
3294 </td>
3295 <td>
3296 <b></b>
3297  
3298 </td>
3299 </tr>
3300 </table>
3301
3302 <h4>
3303 <a name="Cffff"></a>ORIGIN: CLIENT;
3304 MESSAGE: quit</h4>
3305 NUMERIC TYPE (hex): ffff<p>
3306 <p>Sent by the client just before it logs out.</p>
3307 </p>
3308 <table border="1" width="100%">
3309 <tr>
3310 <th width="10%">NAME</th>
3311 <th width="8%">TYPE</th>
3312 <th width="4%">VALUE</th>
3313 <th>DESCRIPTION</th>
3314 <th width="10%">GUARD</th>
3315 </tr>
3316 </table>
3317
3318 <h2>Structs mainly used in messages send by the server</h2>
3319
3320 <h4>STRUCTURE challenge_defaults</h4>
3321 <p>
3322 Send soon after log-in to set the defaults for game challenges.
3323 </p>
3324 <table border="1" width="100%">
3325 <tr>
3326 <th width="10%">NAME</th>
3327 <th width="8%">TYPE</th>
3328 <th width="4%">VALUE</th>
3329 <th>DESCRIPTION</th>
3330 <th width="10%">GUARD</th>
3331 </tr>
3332 <tr>
3333 <td>gametype</td>
3334 <td>U8</td>
3335 <td> </td>
3336 <td>
3337
3338  
3339 </td>
3340 <td>
3341 <b></b>
3342  
3343 </td>
3344 </tr>
3345 <tr>
3346 <td>ruleset</td>
3347 <td>U8</td>
3348 <td> </td>
3349 <td>
3350
3351  
3352 </td>
3353 <td>
3354 <b></b>
3355  
3356 </td>
3357 </tr>
3358 <tr>
3359 <td>size</td>
3360 <td>U32</td>
3361 <td> </td>
3362 <td>
3363
3364  
3365 </td>
3366 <td>
3367 <b></b>
3368  
3369 </td>
3370 </tr>
3371 <tr>
3372 <td>timesys</td>
3373 <td>U32</td>
3374 <td> </td>
3375 <td>
3376
3377  
3378 </td>
3379 <td>
3380 <b></b>
3381  
3382 </td>
3383 </tr>
3384 <tr>
3385 <td>time</td>
3386 <td>U32</td>
3387 <td> </td>
3388 <td>
3389
3390  
3391 </td>
3392 <td>
3393 <b></b>
3394  
3395 </td>
3396 </tr>
3397 <tr>
3398 <td>byo_time</td>
3399 <td>U32</td>
3400 <td> </td>
3401 <td>
3402
3403  
3404 </td>
3405 <td>
3406 <b></b>
3407  
3408 </td>
3409 </tr>
3410 <tr>
3411 <td>byo_periods</td>
3412 <td>U32</td>
3413 <td> </td>
3414 <td>
3415
3416  
3417 </td>
3418 <td>
3419 <b></b>
3420  
3421 </td>
3422 </tr>
3423 <tr>
3424 <td>can_time</td>
3425 <td>U32</td>
3426 <td> </td>
3427 <td>
3428
3429  
3430 </td>
3431 <td>
3432 <b></b>
3433  
3434 </td>
3435 </tr>
3436 <tr>
3437 <td>can_stones</td>
3438 <td>U32</td>
3439 <td> </td>
3440 <td>
3441
3442  
3443 </td>
3444 <td>
3445 <b></b>
3446  
3447 </td>
3448 </tr>
3449 <tr>
3450 <td>notes</td>
3451 <td>STRING</td>
3452 <td> </td>
3453 <td>
3454
3455  
3456 </td>
3457 <td>
3458 <b></b>
3459  
3460 </td>
3461 </tr>
3462 </table>
3463
3464 <h4>STRUCTURE game</h4>
3465 CLASS: KGS::Game<br />
3466 <p>
3467 Basic information about a game. Used in rooms for the gamelist and
3468 in games to detect when a game is saved, changed type (e.g. R =&gt; D)
3469 etc.
3470
3471 </p>
3472 <table border="1" width="100%">
3473 <tr>
3474 <th width="10%">NAME</th>
3475 <th width="8%">TYPE</th>
3476 <th width="4%">VALUE</th>
3477 <th>DESCRIPTION</th>
3478 <th width="10%">GUARD</th>
3479 </tr>
3480 <tr>
3481 <td>channel</td>
3482 <td>U16</td>
3483 <td> </td>
3484 <td>
3485
3486  
3487 </td>
3488 <td>
3489 <b></b>
3490  
3491 </td>
3492 </tr>
3493 <tr>
3494 <td>type</td>
3495 <td>U8</td>
3496 <td> </td>
3497 <td>
3498
3499  
3500 </td>
3501 <td>
3502 <b></b>
3503  
3504 </td>
3505 </tr>
3506 <tr>
3507 <td>black</td>
3508 <td>user</td>
3509 <td> </td>
3510 <td>
3511 White
3512
3513  
3514 </td>
3515 <td>
3516 <b></b>
3517  
3518 </td>
3519 </tr>
3520 <tr>
3521 <td>white</td>
3522 <td>user</td>
3523 <td> </td>
3524 <td>
3525 Black
3526
3527  
3528 </td>
3529 <td>
3530 <b></b>
3531  
3532 </td>
3533 </tr>
3534 <tr>
3535 <td>owner</td>
3536 <td>user</td>
3537 <td> </td>
3538 <td>
3539 Owner
3540
3541  
3542 </td>
3543 <td>
3544 <b></b>
3545  
3546 </td>
3547 </tr>
3548 <tr>
3549 <td>size</td>
3550 <td>U8</td>
3551 <td> </td>
3552 <td>
3553
3554  
3555 </td>
3556 <td>
3557 <b></b>
3558  
3559 </td>
3560 </tr>
3561 <tr>
3562 <td>handicap</td>
3563 <td>I8</td>
3564 <td> </td>
3565 <td>
3566 &lt; 0 not fully setup
3567
3568  
3569 </td>
3570 <td>
3571 <b></b>
3572  
3573 </td>
3574 </tr>
3575 <tr>
3576 <td>komi</td>
3577 <td>komi16</td>
3578 <td> </td>
3579 <td>
3580
3581  
3582 </td>
3583 <td>
3584 <b></b>
3585  
3586 </td>
3587 </tr>
3588 <tr>
3589 <td>moves</td>
3590 <td>I16</td>
3591 <td> </td>
3592 <td>
3593 This field reflects either the movenum or the score, sorry, not even guards help, as
3594 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
3595 score (NOT score16!) (arg²).
3596
3597  
3598 </td>
3599 <td>
3600 <b></b>
3601  
3602 </td>
3603 </tr>
3604 <tr>
3605 <td>flags</td>
3606 <td>U16</td>
3607 <td> </td>
3608 <td>
3609
3610  
3611 </td>
3612 <td>
3613 <b></b>
3614  
3615 </td>
3616 </tr>
3617 <tr>
3618 <td>observers</td>
3619 <td>U32</td>
3620 <td> </td>
3621 <td>
3622
3623  
3624 </td>
3625 <td>
3626 <b></b>
3627  
3628 </td>
3629 </tr>
3630 <tr>
3631 <td>saved</td>
3632 <td>flag</td>
3633 <td> </td>
3634 <td>
3635
3636  
3637 </td>
3638 <td>
3639 <b></b>
3640  
3641 </td>
3642 </tr>
3643 <tr>
3644 <td>notes</td>
3645 <td>STRING</td>
3646 <td> </td>
3647 <td>
3648
3649  
3650 </td>
3651 <td>
3652 <b>handicap</b> &lt; 0
3653  
3654 </td>
3655 </tr>
3656 </table>
3657
3658 <h4>STRUCTURE room_obs</h4>
3659 <p>
3660 Obsolete.
3661
3662 </p>
3663 <table border="1" width="100%">
3664 <tr>
3665 <th width="10%">NAME</th>
3666 <th width="8%">TYPE</th>
3667 <th width="4%">VALUE</th>
3668 <th>DESCRIPTION</th>
3669 <th width="10%">GUARD</th>
3670 </tr>
3671 <tr>
3672 <td>name</td>
3673 <td>roomname</td>
3674 <td> </td>
3675 <td>
3676
3677  
3678 </td>
3679 <td>
3680 <b></b>
3681  
3682 </td>
3683 </tr>
3684 <tr>
3685 <td>channel</td>
3686 <td>U16</td>
3687 <td> </td>
3688 <td>
3689
3690  
3691 </td>
3692 <td>
3693 <b></b>
3694  
3695 </td>
3696 </tr>
3697 <tr>
3698 <td>flags</td>
3699 <td>U32</td>
3700 <td> </td>
3701 <td>
3702
3703  
3704 </td>
3705 <td>
3706 <b></b>
3707  
3708 </td>
3709 </tr>
3710 <tr>
3711 <td>users</td>
3712 <td>U32</td>
3713 <td> </td>
3714 <td>
3715
3716  
3717 </td>
3718 <td>
3719 <b></b>
3720  
3721 </td>
3722 </tr>
3723 </table>
3724
3725 <h4>STRUCTURE room</h4>
3726 CLASS: KGS::Room<br />
3727 <p>
3728 </p>
3729 <table border="1" width="100%">
3730 <tr>
3731 <th width="10%">NAME</th>
3732 <th width="8%">TYPE</th>
3733 <th width="4%">VALUE</th>
3734 <th>DESCRIPTION</th>
3735 <th width="10%">GUARD</th>
3736 </tr>
3737 <tr>
3738 <td>channel</td>
3739 <td>U16</td>
3740 <td> </td>
3741 <td>
3742
3743  
3744 </td>
3745 <td>
3746 <b></b>
3747  
3748 </td>
3749 </tr>
3750 <tr>
3751 <td>flags</td>
3752 <td>U8</td>
3753 <td> </td>
3754 <td>
3755
3756  
3757 </td>
3758 <td>
3759 <b></b>
3760  
3761 </td>
3762 </tr>
3763 <tr>
3764 <td>group</td>
3765 <td>U8</td>
3766 <td> </td>
3767 <td>
3768
3769  
3770 </td>
3771 <td>
3772 <b></b>
3773  
3774 </td>
3775 </tr>
3776 <tr>
3777 <td>users</td>
3778 <td>U16</td>
3779 <td> </td>
3780 <td>
3781
3782  
3783 </td>
3784 <td>
3785 <b></b>
3786  
3787 </td>
3788 </tr>
3789 <tr>
3790 <td>games</td>
3791 <td>U16</td>
3792 <td> </td>
3793 <td>
3794
3795  
3796 </td>
3797 <td>
3798 <b></b>
3799  
3800 </td>
3801 </tr>
3802 <tr>
3803 <td>name</td>
3804 <td>STRING</td>
3805 <td> </td>
3806 <td>
3807
3808  
3809 </td>
3810 <td>
3811 <b></b>
3812  
3813 </td>
3814 </tr>
3815 </table>
3816
3817 <h4>STRUCTURE scorevalues</h4>
3818 CLASS: KGS::Score<br />
3819 <p>
3820 </p>
3821 <table border="1" width="100%">
3822 <tr>
3823 <th width="10%">NAME</th>
3824 <th width="8%">TYPE</th>
3825 <th width="4%">VALUE</th>
3826 <th>DESCRIPTION</th>
3827 <th width="10%">GUARD</th>
3828 </tr>
3829 <tr>
3830 <td>score</td>
3831 <td>score32</td>
3832 <td> </td>
3833 <td>
3834
3835  
3836 </td>
3837 <td>
3838 <b></b>
3839  
3840 </td>
3841 </tr>
3842 <tr>
3843 <td>territory</td>
3844 <td>U32</td>
3845 <td> </td>
3846 <td>
3847
3848  
3849 </td>
3850 <td>
3851 <b></b>
3852  
3853 </td>
3854 </tr>
3855 <tr>
3856 <td>captures</td>
3857 <td>U32</td>
3858 <td> </td>
3859 <td>
3860
3861  
3862 </td>
3863 <td>
3864 <b></b>
3865  
3866 </td>
3867 </tr>
3868 <tr>
3869 <td>i3</td>
3870 <td>U32</td>
3871 <td> </td>
3872 <td>
3873
3874  
3875 </td>
3876 <td>
3877 <b></b>
3878  
3879 </td>
3880 </tr>
3881 <tr>
3882 <td>f2</td>
3883 <td>U32</td>
3884 <td> </td>
3885 <td>
3886
3887  
3888 </td>
3889 <td>
3890 <b></b>
3891  
3892 </td>
3893 </tr>
3894 <tr>
3895 <td>komi</td>
3896 <td>komi324</td>
3897 <td> </td>
3898 <td>
3899
3900  
3901 </td>
3902 <td>
3903 <b></b>
3904  
3905 </td>
3906 </tr>
3907 <tr>
3908 <td>i4</td>
3909 <td>U32</td>
3910 <td> </td>
3911 <td>
3912 Apparently the i3, f2, i4 are zero.
3913
3914  
3915 </td>
3916 <td>
3917 <b></b>
3918  
3919 </td>
3920 </tr>
3921 </table>
3922
3923 <h4>STRUCTURE game_record</h4>
3924 CLASS: KGS::GameRecord<br />
3925 <p>
3926 <p>A single game record entry, as seen in <a href="#S0008">userinfo(0008)</a>.</p>
3927 </p>
3928 <table border="1" width="100%">
3929 <tr>
3930 <th width="10%">NAME</th>
3931 <th width="8%">TYPE</th>
3932 <th width="4%">VALUE</th>
3933 <th>DESCRIPTION</th>
3934 <th width="10%">GUARD</th>
3935 </tr>
3936 <tr>
3937 <td>timestamp</td>
3938 <td>timestamp</td>
3939 <td> </td>
3940 <td>
3941 Time this game was played.
3942
3943  
3944 </td>
3945 <td>
3946 <b></b>
3947  
3948 </td>
3949 </tr>
3950 <tr>
3951 <td>flags1</td>
3952 <td>U8</td>
3953 <td> </td>
3954 <td>
3955
3956  
3957 </td>
3958 <td>
3959 <b></b>
3960  
3961 </td>
3962 </tr>
3963 <tr>
3964 <td>black</td>
3965 <td>user</td>
3966 <td> </td>
3967 <td>
3968 White, flags contain low 8 bits of revision (bits 16-23).
3969
3970  
3971 </td>
3972 <td>
3973 <b></b>
3974  
3975 </td>
3976 </tr>
3977 <tr>
3978 <td>white</td>
3979 <td>user</td>
3980 <td> </td>
3981 <td>
3982 Black, flags contain high 8 bits of revision (bits 16-23).
3983
3984  
3985 </td>
3986 <td>
3987 <b></b>
3988  
3989 </td>
3990 </tr>
3991 <tr>
3992 <td>owner</td>
3993 <td>user</td>
3994 <td> </td>
3995 <td>
3996
3997
3998  
3999 </td>
4000 <td>
4001 <b></b>
4002  
4003 </td>
4004 </tr>
4005 <tr>
4006 <td>flags2</td>
4007 <td>U16</td>
4008 <td> </td>
4009 <td>
4010
4011  
4012 </td>
4013 <td>
4014 <b></b>
4015  
4016 </td>
4017 </tr>
4018 <tr>
4019 <td>score</td>
4020 <td>score16</td>
4021 <td> </td>
4022 <td>
4023
4024  
4025 </td>
4026 <td>
4027 <b></b>
4028  
4029 </td>
4030 </tr>
4031 <tr>
4032 <td>flags3</td>
4033 <td>U8</td>
4034 <td> </td>
4035 <td>
4036
4037
4038  
4039 </td>
4040 <td>
4041 <b></b>
4042  
4043 </td>
4044 </tr>
4045 </table>
4046
4047 <h2>Server-generated messages</h2>
4048
4049 <h4>
4050 <a name="S0001"></a>ORIGIN: SERVER;
4051 MESSAGE: login</h4>
4052 NUMERIC TYPE (hex): 0001
4053 (possibly in response to
4054 <a href="#C0000">login(0000)</a>
4055 )
4056 <p>
4057 </p>
4058 <table border="1" width="100%">
4059 <tr>
4060 <th width="10%">NAME</th>
4061 <th width="8%">TYPE</th>
4062 <th width="4%">VALUE</th>
4063 <th>DESCRIPTION</th>
4064 <th width="10%">GUARD</th>
4065 </tr>
4066 <tr>
4067 <td>message</td>
4068 <td>CONSTANT</td>
4069 <td>login successful </td>
4070 <td>
4071
4072  
4073 </td>
4074 <td>
4075 <b></b>
4076  
4077 </td>
4078 </tr>
4079 <tr>
4080 <td>success</td>
4081 <td>CONSTANT</td>
4082 <td>1 </td>
4083 <td>
4084
4085  
4086 </td>
4087 <td>
4088 <b></b>
4089  
4090 </td>
4091 </tr>
4092 </table>
4093
4094 <h4>
4095 <a name="S0002"></a>ORIGIN: SERVER;
4096 MESSAGE: login</h4>
4097 NUMERIC TYPE (hex): 0002
4098 (possibly in response to
4099 <a href="#C0000">login(0000)</a>
4100 )
4101 <p>
4102 </p>
4103 <table border="1" width="100%">
4104 <tr>
4105 <th width="10%">NAME</th>
4106 <th width="8%">TYPE</th>
4107 <th width="4%">VALUE</th>
4108 <th>DESCRIPTION</th>
4109 <th width="10%">GUARD</th>
4110 </tr>
4111 <tr>
4112 <td>message</td>
4113 <td>CONSTANT</td>
4114 <td>login successful: client version is outdated. </td>
4115 <td>
4116
4117  
4118 </td>
4119 <td>
4120 <b></b>
4121  
4122 </td>
4123 </tr>
4124 <tr>
4125 <td>success</td>
4126 <td>CONSTANT</td>
4127 <td>1 </td>
4128 <td>
4129
4130  
4131 </td>
4132 <td>
4133 <b></b>
4134  
4135 </td>
4136 </tr>
4137 </table>
4138
4139 <h4>
4140 <a name="S0003"></a>ORIGIN: SERVER;
4141 MESSAGE: login</h4>
4142 NUMERIC TYPE (hex): 0003
4143 (possibly in response to
4144 <a href="#C0000">login(0000)</a>
4145 )
4146 <p>
4147 </p>
4148 <table border="1" width="100%">
4149 <tr>
4150 <th width="10%">NAME</th>
4151 <th width="8%">TYPE</th>
4152 <th width="4%">VALUE</th>
4153 <th>DESCRIPTION</th>
4154 <th width="10%">GUARD</th>
4155 </tr>
4156 <tr>
4157 <td>message</td>
4158 <td>CONSTANT</td>
4159 <td>login failed: client version out of date </td>
4160 <td>
4161 ** maybe more following? **
4162
4163  
4164 </td>
4165 <td>
4166 <b></b>
4167  
4168 </td>
4169 </tr>
4170 </table>
4171
4172 <h4>
4173 <a name="S0004"></a>ORIGIN: SERVER;
4174 MESSAGE: login</h4>
4175 NUMERIC TYPE (hex): 0004
4176 (possibly in response to
4177 <a href="#C0000">login(0000)</a>
4178 )
4179 <p>
4180 </p>
4181 <table border="1" width="100%">
4182 <tr>
4183 <th width="10%">NAME</th>
4184 <th width="8%">TYPE</th>
4185 <th width="4%">VALUE</th>
4186 <th>DESCRIPTION</th>
4187 <th width="10%">GUARD</th>
4188 </tr>
4189 <tr>
4190 <td>message</td>
4191 <td>CONSTANT</td>
4192 <td>login failed: wrong password </td>
4193 <td>
4194 ** maybe more following? **
4195
4196  
4197 </td>
4198 <td>
4199 <b></b>
4200  
4201 </td>
4202 </tr>
4203 </table>
4204
4205 <h4>
4206 <a name="S0005"></a>ORIGIN: SERVER;
4207 MESSAGE: login</h4>
4208 NUMERIC TYPE (hex): 0005
4209 (possibly in response to
4210 <a href="#C0000">login(0000)</a>
4211 )
4212 <p>
4213 </p>
4214 <table border="1" width="100%">
4215 <tr>
4216 <th width="10%">NAME</th>
4217 <th width="8%">TYPE</th>
4218 <th width="4%">VALUE</th>
4219 <th>DESCRIPTION</th>
4220 <th width="10%">GUARD</th>
4221 </tr>
4222 <tr>
4223 <td>message</td>
4224 <td>CONSTANT</td>
4225 <td>login failed: specified user does not exist </td>
4226 <td>
4227
4228  
4229 </td>
4230 <td>
4231 <b></b>
4232  
4233 </td>
4234 </tr>
4235 </table>
4236
4237 <h4>
4238 <a name="S0006"></a>ORIGIN: SERVER;
4239 MESSAGE: login</h4>
4240 NUMERIC TYPE (hex): 0006
4241 (possibly in response to
4242 <a href="#C0000">login(0000)</a>
4243 )
4244 <p>
4245 </p>
4246 <table border="1" width="100%">
4247 <tr>
4248 <th width="10%">NAME</th>
4249 <th width="8%">TYPE</th>
4250 <th width="4%">VALUE</th>
4251 <th>DESCRIPTION</th>
4252 <th width="10%">GUARD</th>
4253 </tr>
4254 <tr>
4255 <td>message</td>
4256 <td>CONSTANT</td>
4257 <td>login failed: user of same name logged in </td>
4258 <td>
4259
4260  
4261 </td>
4262 <td>
4263 <b></b>
4264  
4265 </td>
4266 </tr>
4267 </table>
4268
4269 <h4>
4270 <a name="S0008"></a>ORIGIN: SERVER;
4271 MESSAGE: userinfo</h4>
4272 NUMERIC TYPE (hex): 0008
4273 (possibly in response to
4274 <a href="#C0007">req_userinfo(0007)</a>
4275 )
4276 <p>
4277 User info.
4278 </p>
4279 <table border="1" width="100%">
4280 <tr>
4281 <th width="10%">NAME</th>
4282 <th width="8%">TYPE</th>
4283 <th width="4%">VALUE</th>
4284 <th>DESCRIPTION</th>
4285 <th width="10%">GUARD</th>
4286 </tr>
4287 <tr>
4288 <td>_unused0</td>
4289 <td>flag</td>
4290 <td> </td>
4291 <td>
4292
4293  
4294 </td>
4295 <td>
4296 <b></b>
4297  
4298 </td>
4299 </tr>
4300 <tr>
4301 <td>user</td>
4302 <td>user</td>
4303 <td> </td>
4304 <td>
4305
4306  
4307 </td>
4308 <td>
4309 <b></b>
4310  
4311 </td>
4312 </tr>
4313 <tr>
4314 <td>_unused1</td>
4315 <td>U64</td>
4316 <td> </td>
4317 <td>
4318
4319  
4320 </td>
4321 <td>
4322 <b></b>
4323  
4324 </td>
4325 </tr>
4326 <tr>
4327 <td>realname</td>
4328 <td>realname</td>
4329 <td> </td>
4330 <td>
4331
4332  
4333 </td>
4334 <td>
4335 <b></b>
4336  
4337 </td>
4338 </tr>
4339 <tr>
4340 <td>email</td>
4341 <td>email</td>
4342 <td> </td>
4343 <td>
4344
4345  
4346 </td>
4347 <td>
4348 <b></b>
4349  
4350 </td>
4351 </tr>
4352 <tr>
4353 <td>info</td>
4354 <td>userinfo</td>
4355 <td> </td>
4356 <td>
4357
4358  
4359 </td>
4360 <td>
4361 <b></b>
4362  
4363 </td>
4364 </tr>
4365 <tr>
4366 <td>homepage</td>
4367 <td>url</td>
4368 <td> </td>
4369 <td>
4370
4371  
4372 </td>
4373 <td>
4374 <b></b>
4375  
4376 </td>
4377 </tr>
4378 <tr>
4379 <td>regdate</td>
4380 <td>timestamp</td>
4381 <td> </td>
4382 <td>
4383 When the user registered (0 == never registered).
4384
4385  
4386 </td>
4387 <td>
4388 <b></b>
4389  
4390 </td>
4391 </tr>
4392 <tr>
4393 <td>lastlogin</td>
4394 <td>timestamp</td>
4395 <td> </td>
4396 <td>
4397 When the user logged in for the last time.
4398
4399  
4400 </td>
4401 <td>
4402 <b></b>
4403  
4404 </td>
4405 </tr>
4406 </table>
4407
4408 <h4>
4409 <a name="S0009"></a>ORIGIN: SERVER;
4410 MESSAGE: upd_userinfo_result</h4>
4411 NUMERIC TYPE (hex): 0009<p>
4412 </p>
4413 <table border="1" width="100%">
4414 <tr>
4415 <th width="10%">NAME</th>
4416 <th width="8%">TYPE</th>
4417 <th width="4%">VALUE</th>
4418 <th>DESCRIPTION</th>
4419 <th width="10%">GUARD</th>
4420 </tr>
4421 <tr>
4422 <td>name</td>
4423 <td>username</td>
4424 <td> </td>
4425 <td>
4426
4427  
4428 </td>
4429 <td>
4430 <b></b>
4431  
4432 </td>
4433 </tr>
4434 <tr>
4435 <td>message</td>
4436 <td>CONSTANT</td>
4437 <td>Thanks for registering. </td>
4438 <td>
4439
4440  
4441 </td>
4442 <td>
4443 <b></b>
4444  
4445 </td>
4446 </tr>
4447 </table>
4448
4449 <h4>
4450 <a name="S000a"></a>ORIGIN: SERVER;
4451 MESSAGE: upd_userinfo_result</h4>
4452 NUMERIC TYPE (hex): 000a<p>
4453 </p>
4454 <table border="1" width="100%">
4455 <tr>
4456 <th width="10%">NAME</th>
4457 <th width="8%">TYPE</th>
4458 <th width="4%">VALUE</th>
4459 <th>DESCRIPTION</th>
4460 <th width="10%">GUARD</th>
4461 </tr>
4462 <tr>
4463 <td>name</td>
4464 <td>username</td>
4465 <td> </td>
4466 <td>
4467
4468  
4469 </td>
4470 <td>
4471 <b></b>
4472  
4473 </td>
4474 </tr>
4475 <tr>
4476 <td>message</td>
4477 <td>CONSTANT</td>
4478 <td>The user "%s" has been successfully updated. </td>
4479 <td>
4480
4481  
4482 </td>
4483 <td>
4484 <b></b>
4485  
4486 </td>
4487 </tr>
4488 </table>
4489
4490 <h4>
4491 <a name="S000b"></a>ORIGIN: SERVER;
4492 MESSAGE: upd_userinfo_result</h4>
4493 NUMERIC TYPE (hex): 000b<p>
4494 </p>
4495 <table border="1" width="100%">
4496 <tr>
4497 <th width="10%">NAME</th>
4498 <th width="8%">TYPE</th>
4499 <th width="4%">VALUE</th>
4500 <th>DESCRIPTION</th>
4501 <th width="10%">GUARD</th>
4502 </tr>
4503 <tr>
4504 <td>name</td>
4505 <td>username</td>
4506 <td> </td>
4507 <td>
4508
4509  
4510 </td>
4511 <td>
4512 <b></b>
4513  
4514 </td>
4515 </tr>
4516 <tr>
4517 <td>message</td>
4518 <td>CONSTANT</td>
4519 <td>There is no user "%s". Update failed. </td>
4520 <td>
4521
4522  
4523 </td>
4524 <td>
4525 <b></b>
4526  
4527 </td>
4528 </tr>
4529 </table>
4530
4531 <h4>
4532 <a name="S0012"></a>ORIGIN: SERVER;
4533 MESSAGE: userinfo_failed</h4>
4534 NUMERIC TYPE (hex): 0012<p>
4535 <p>Sent when no userinfo for the requested user could be found(?)</p>
4536 </p>
4537 <table border="1" width="100%">
4538 <tr>
4539 <th width="10%">NAME</th>
4540 <th width="8%">TYPE</th>
4541 <th width="4%">VALUE</th>
4542 <th>DESCRIPTION</th>
4543 <th width="10%">GUARD</th>
4544 </tr>
4545 <tr>
4546 <td>name</td>
4547 <td>username</td>
4548 <td> </td>
4549 <td>
4550
4551  
4552 </td>
4553 <td>
4554 <b></b>
4555  
4556 </td>
4557 </tr>
4558 </table>
4559
4560 <h4>
4561 <a name="S0013"></a>ORIGIN: SERVER;
4562 MESSAGE: msg_chat</h4>
4563 NUMERIC TYPE (hex): 0013<p>
4564 </p>
4565 <table border="1" width="100%">
4566 <tr>
4567 <th width="10%">NAME</th>
4568 <th width="8%">TYPE</th>
4569 <th width="4%">VALUE</th>
4570 <th>DESCRIPTION</th>
4571 <th width="10%">GUARD</th>
4572 </tr>
4573 <tr>
4574 <td>name</td>
4575 <td>username</td>
4576 <td> </td>
4577 <td>
4578 Name of sender (either yourself (echo) or other)
4579
4580  
4581 </td>
4582 <td>
4583 <b></b>
4584  
4585 </td>
4586 </tr>
4587 <tr>
4588 <td>name2</td>
4589 <td>username</td>
4590 <td> </td>
4591 <td>
4592 Name of recipient.
4593
4594  
4595 </td>
4596 <td>
4597 <b></b>
4598  
4599 </td>
4600 </tr>
4601 <tr>
4602 <td>message</td>
4603 <td>STRING</td>
4604 <td> </td>
4605 <td>
4606
4607  
4608 </td>
4609 <td>
4610 <b></b>
4611  
4612 </td>
4613 </tr>
4614 </table>
4615
4616 <h4>
4617 <a name="S0015"></a>ORIGIN: SERVER;
4618 MESSAGE: stats</h4>
4619 NUMERIC TYPE (hex): 0015
4620 (possibly in response to
4621 <a href="#C0014">req_stats(0014)</a>
4622 )
4623 <p>
4624 </p>
4625 <table border="1" width="100%">
4626 <tr>
4627 <th width="10%">NAME</th>
4628 <th width="8%">TYPE</th>
4629 <th width="4%">VALUE</th>
4630 <th>DESCRIPTION</th>
4631 <th width="10%">GUARD</th>
4632 </tr>
4633 <tr>
4634 <td>ver_major</td>
4635 <td>U16</td>
4636 <td> </td>
4637 <td>
4638
4639  
4640 </td>
4641 <td>
4642 <b></b>
4643  
4644 </td>
4645 </tr>
4646 <tr>
4647 <td>ver_minor</td>
4648 <td>U16</td>
4649 <td> </td>
4650 <td>
4651
4652  
4653 </td>
4654 <td>
4655 <b></b>
4656  
4657 </td>
4658 </tr>
4659 <tr>
4660 <td>ver_micro</td>
4661 <td>U16</td>
4662 <td> </td>
4663 <td>
4664
4665  
4666 </td>
4667 <td>
4668 <b></b>
4669  
4670 </td>
4671 </tr>
4672 <tr>
4673 <td>boot_time</td>
4674 <td>timestamp</td>
4675 <td> </td>
4676 <td>
4677
4678  
4679 </td>
4680 <td>
4681 <b></b>
4682  
4683 </td>
4684 </tr>
4685 <tr>
4686 <td>users_cur</td>
4687 <td>U32</td>
4688 <td> </td>
4689 <td>
4690
4691  
4692 </td>
4693 <td>
4694 <b></b>
4695  
4696 </td>
4697 </tr>
4698 <tr>
4699 <td>users_max</td>
4700 <td>U32</td>
4701 <td> </td>
4702 <td>
4703
4704  
4705 </td>
4706 <td>
4707 <b></b>
4708  
4709 </td>
4710 </tr>
4711 <tr>
4712 <td>users_lim</td>
4713 <td>U32</td>
4714 <td> </td>
4715 <td>
4716
4717  
4718 </td>
4719 <td>
4720 <b></b>
4721  
4722 </td>
4723 </tr>
4724 <tr>
4725 <td>accts_cur</td>
4726 <td>U32</td>
4727 <td> </td>
4728 <td>
4729
4730  
4731 </td>
4732 <td>
4733 <b></b>
4734  
4735 </td>
4736 </tr>
4737 <tr>
4738 <td>accts_max</td>
4739 <td>U32</td>
4740 <td> </td>
4741 <td>
4742
4743  
4744 </td>
4745 <td>
4746 <b></b>
4747  
4748 </td>
4749 </tr>
4750 <tr>
4751 <td>unknown1</td>
4752 <td>U32</td>
4753 <td> </td>
4754 <td>
4755
4756  
4757 </td>
4758 <td>
4759 <b></b>
4760  
4761 </td>
4762 </tr>
4763 <tr>
4764 <td>work_max</td>
4765 <td>U32</td>
4766 <td> </td>
4767 <td>
4768
4769  
4770 </td>
4771 <td>
4772 <b></b>
4773  
4774 </td>
4775 </tr>
4776 <tr>
4777 <td>rooms_cur</td>
4778 <td>U32</td>
4779 <td> </td>
4780 <td>
4781
4782  
4783 </td>
4784 <td>
4785 <b></b>
4786  
4787 </td>
4788 </tr>
4789 <tr>
4790 <td>rooms_max</td>
4791 <td>U32</td>
4792 <td> </td>
4793 <td>
4794
4795  
4796 </td>
4797 <td>
4798 <b></b>
4799  
4800 </td>
4801 </tr>
4802 <tr>
4803 <td>rooms_lim</td>
4804 <td>U32</td>
4805 <td> </td>
4806 <td>
4807
4808  
4809 </td>
4810 <td>
4811 <b></b>
4812  
4813 </td>
4814 </tr>
4815 <tr>
4816 <td>games_cur</td>
4817 <td>U32</td>
4818 <td> </td>
4819 <td>
4820
4821  
4822 </td>
4823 <td>
4824 <b></b>
4825  
4826 </td>
4827 </tr>
4828 <tr>
4829 <td>games_max</td>
4830 <td>U32</td>
4831 <td> </td>
4832 <td>
4833
4834  
4835 </td>
4836 <td>
4837 <b></b>
4838  
4839 </td>
4840 </tr>
4841 <tr>
4842 <td>games_lim</td>
4843 <td>U32</td>
4844 <td> </td>
4845 <td>
4846
4847  
4848 </td>
4849 <td>
4850 <b></b>
4851  
4852 </td>
4853 </tr>
4854 <tr>
4855 <td>results_cur</td>
4856 <td>U32</td>
4857 <td> </td>
4858 <td>
4859
4860  
4861 </td>
4862 <td>
4863 <b></b>
4864  
4865 </td>
4866 </tr>
4867 <tr>
4868 <td>results_max</td>
4869 <td>U32</td>
4870 <td> </td>
4871 <td>
4872
4873  
4874 </td>
4875 <td>
4876 <b></b>
4877  
4878 </td>
4879 </tr>
4880 <tr>
4881 <td>unknown2</td>
4882 <td>U32</td>
4883 <td> </td>
4884 <td>
4885
4886  
4887 </td>
4888 <td>
4889 <b></b>
4890  
4891 </td>
4892 </tr>
4893 <tr>
4894 <td>params_cur</td>
4895 <td>U32</td>
4896 <td> </td>
4897 <td>
4898
4899  
4900 </td>
4901 <td>
4902 <b></b>
4903  
4904 </td>
4905 </tr>
4906 <tr>
4907 <td>params_max</td>
4908 <td>U32</td>
4909 <td> </td>
4910 <td>
4911
4912  
4913 </td>
4914 <td>
4915 <b></b>
4916  
4917 </td>
4918 </tr>
4919 <tr>
4920 <td>bytes_in</td>
4921 <td>U64</td>
4922 <td> </td>
4923 <td>
4924
4925  
4926 </td>
4927 <td>
4928 <b></b>
4929  
4930 </td>
4931 </tr>
4932 <tr>
4933 <td>packets_in</td>
4934 <td>U64</td>
4935 <td> </td>
4936 <td>
4937
4938  
4939 </td>
4940 <td>
4941 <b></b>
4942  
4943 </td>
4944 </tr>
4945 <tr>
4946 <td>bytes_out</td>
4947 <td>U64</td>
4948 <td> </td>
4949 <td>
4950
4951  
4952 </td>
4953 <td>
4954 <b></b>
4955  
4956 </td>
4957 </tr>
4958 <tr>
4959 <td>packets_out</td>
4960 <td>U64</td>
4961 <td> </td>
4962 <td>
4963
4964  
4965 </td>
4966 <td>
4967 <b></b>
4968  
4969 </td>
4970 </tr>
4971 </table>
4972
4973 <h4>
4974 <a name="S0016"></a>ORIGIN: SERVER;
4975 MESSAGE: idle_warn</h4>
4976 NUMERIC TYPE (hex): 0016
4977 (possibly in response to
4978 <a href="#C0016">idle_reset(0016)</a>
4979 )
4980 <p>
4981 <p>idle warning, autologout soon (10 minutes...). Responding with <a href="#S001d">ping(001d)</a> usually helps.</p>
4982 </p>
4983 <table border="1" width="100%">
4984 <tr>
4985 <th width="10%">NAME</th>
4986 <th width="8%">TYPE</th>
4987 <th width="4%">VALUE</th>
4988 <th>DESCRIPTION</th>
4989 <th width="10%">GUARD</th>
4990 </tr>
4991 </table>
4992
4993 <h4>
4994 <a name="S0018"></a>ORIGIN: SERVER;
4995 MESSAGE: login</h4>
4996 NUMERIC TYPE (hex): 0018
4997 (possibly in response to
4998 <a href="#C0000">login(0000)</a>
4999 )
5000 <p>
5001 </p>
5002 <table border="1" width="100%">
5003 <tr>
5004 <th width="10%">NAME</th>
5005 <th width="8%">TYPE</th>
5006 <th width="4%">VALUE</th>
5007 <th>DESCRIPTION</th>
5008 <th width="10%">GUARD</th>
5009 </tr>
5010 <tr>
5011 <td>message</td>
5012 <td>CONSTANT</td>
5013 <td>logged out: another client logged in with your username </td>
5014 <td>
5015
5016  
5017 </td>
5018 <td>
5019 <b></b>
5020  
5021 </td>
5022 </tr>
5023 </table>
5024
5025 <h4>
5026 <a name="S001c"></a>ORIGIN: SERVER;
5027 MESSAGE: login</h4>
5028 NUMERIC TYPE (hex): 001c
5029 (possibly in response to
5030 <a href="#C0000">login(0000)</a>
5031 )
5032 <p>
5033 </p>
5034 <table border="1" width="100%">
5035 <tr>
5036 <th width="10%">NAME</th>
5037 <th width="8%">TYPE</th>
5038 <th width="4%">VALUE</th>
5039 <th>DESCRIPTION</th>
5040 <th width="10%">GUARD</th>
5041 </tr>
5042 <tr>
5043 <td>message</td>
5044 <td>CONSTANT</td>
5045 <td>logged out: idle for too long </td>
5046 <td>
5047
5048  
5049 </td>
5050 <td>
5051 <b></b>
5052  
5053 </td>
5054 </tr>
5055 </table>
5056
5057 <h4>
5058 <a name="S0020"></a>ORIGIN: SERVER;
5059 MESSAGE: error</h4>
5060 NUMERIC TYPE (hex): 0020<p>
5061 </p>
5062 <table border="1" width="100%">
5063 <tr>
5064 <th width="10%">NAME</th>
5065 <th width="8%">TYPE</th>
5066 <th width="4%">VALUE</th>
5067 <th>DESCRIPTION</th>
5068 <th width="10%">GUARD</th>
5069 </tr>
5070 <tr>
5071 <td>message</td>
5072 <td>CONSTANT</td>
5073 <td>Sorry, you have too many unfinished games. You cannot turn on your rank. Please finish some of your games, then try again. </td>
5074 <td>
5075
5076  
5077 </td>
5078 <td>
5079 <b></b>
5080  
5081 </td>
5082 </tr>
5083 </table>
5084
5085 <h4>
5086 <a name="S0022"></a>ORIGIN: SERVER;
5087 MESSAGE: login</h4>
5088 NUMERIC TYPE (hex): 0022
5089 (possibly in response to
5090 <a href="#C0000">login(0000)</a>
5091 )
5092 <p>
5093 I was blocked sooo many times for developing this client that it was
5094 easy to figure out. The KGS admins sure need no extra nazi training
5095 :(
5096 </p>
5097 <table border="1" width="100%">
5098 <tr>
5099 <th width="10%">NAME</th>
5100 <th width="8%">TYPE</th>
5101 <th width="4%">VALUE</th>
5102 <th>DESCRIPTION</th>
5103 <th width="10%">GUARD</th>
5104 </tr>
5105 <tr>
5106 <td>reason</td>
5107 <td>STRING</td>
5108 <td> </td>
5109 <td>
5110
5111  
5112 </td>
5113 <td>
5114 <b></b>
5115  
5116 </td>
5117 </tr>
5118 <tr>
5119 <td>result</td>
5120 <td>CONSTANT</td>
5121 <td>user or ip blocked </td>
5122 <td>
5123
5124  
5125 </td>
5126 <td>
5127 <b></b>
5128  
5129 </td>
5130 </tr>
5131 </table>
5132
5133 <h4>
5134 <a name="S001b"></a>ORIGIN: SERVER;
5135 MESSAGE: timewarning_default</h4>
5136 NUMERIC TYPE (hex): 001b
5137 (possibly in response to
5138 <a href="#C0000">login(0000)</a>
5139 )
5140 <p>
5141 WILD guess
5142 </p>
5143 <table border="1" width="100%">
5144 <tr>
5145 <th width="10%">NAME</th>
5146 <th width="8%">TYPE</th>
5147 <th width="4%">VALUE</th>
5148 <th>DESCRIPTION</th>
5149 <th width="10%">GUARD</th>
5150 </tr>
5151 <tr>
5152 <td>channel</td>
5153 <td>U16</td>
5154 <td> </td>
5155 <td>
5156
5157  
5158 </td>
5159 <td>
5160 <b></b>
5161  
5162 </td>
5163 </tr>
5164 <tr>
5165 <td>time</td>
5166 <td>U16</td>
5167 <td> </td>
5168 <td>
5169
5170  
5171 </td>
5172 <td>
5173 <b></b>
5174  
5175 </td>
5176 </tr>
5177 </table>
5178
5179 <h4>
5180 <a name="S001c"></a>ORIGIN: SERVER;
5181 MESSAGE: idle_err</h4>
5182 NUMERIC TYPE (hex): 001c<p>
5183 autologout
5184 </p>
5185 <table border="1" width="100%">
5186 <tr>
5187 <th width="10%">NAME</th>
5188 <th width="8%">TYPE</th>
5189 <th width="4%">VALUE</th>
5190 <th>DESCRIPTION</th>
5191 <th width="10%">GUARD</th>
5192 </tr>
5193 </table>
5194
5195 <h4>
5196 <a name="S001d"></a>ORIGIN: SERVER;
5197 MESSAGE: ping</h4>
5198 NUMERIC TYPE (hex): 001d<p>
5199 Sent by the server regularly, but not answering them
5200 isn't valid. Strange form of keepalive?
5201 </p>
5202 <table border="1" width="100%">
5203 <tr>
5204 <th width="10%">NAME</th>
5205 <th width="8%">TYPE</th>
5206 <th width="4%">VALUE</th>
5207 <th>DESCRIPTION</th>
5208 <th width="10%">GUARD</th>
5209 </tr>
5210 </table>
5211
5212 <h4>
5213 <a name="S001e"></a>ORIGIN: SERVER;
5214 MESSAGE: usergraph</h4>
5215 NUMERIC TYPE (hex): 001e
5216 (possibly in response to
5217 <a href="#C001e">req_usergraph(001e)</a>
5218 )
5219 <p>
5220 User graph data.
5221 </p>
5222 <table border="1" width="100%">
5223 <tr>
5224 <th width="10%">NAME</th>
5225 <th width="8%">TYPE</th>
5226 <th width="4%">VALUE</th>
5227 <th>DESCRIPTION</th>
5228 <th width="10%">GUARD</th>
5229 </tr>
5230 <tr>
5231 <td>name</td>
5232 <td>username</td>
5233 <td> </td>
5234 <td>
5235
5236  
5237 </td>
5238 <td>
5239 <b></b>
5240  
5241 </td>
5242 </tr>
5243 <tr>
5244 <td>data</td>
5245 <td>I16</td>
5246 <td> </td>
5247 <td>
5248 If empty, no graph is available. The unit seems to
5249 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
5250 There is probably one entry per day, the newest one last.
5251
5252  
5253 </td>
5254 <td>
5255 <b></b>
5256  
5257 </td>
5258 </tr>
5259 </table>
5260
5261 <h4>
5262 <a name="S0021"></a>ORIGIN: SERVER;
5263 MESSAGE: userpic</h4>
5264 NUMERIC TYPE (hex): 0021
5265 (possibly in response to
5266 <a href="#C0021">req_pic(0021)</a>
5267 )
5268 <p>
5269 </p>
5270 <table border="1" width="100%">
5271 <tr>
5272 <th width="10%">NAME</th>
5273 <th width="8%">TYPE</th>
5274 <th width="4%">VALUE</th>
5275 <th>DESCRIPTION</th>
5276 <th width="10%">GUARD</th>
5277 </tr>
5278 <tr>
5279 <td>name</td>
5280 <td>username</td>
5281 <td> </td>
5282 <td>
5283 Reply to pic_req, contains an image in jpeg format.
5284
5285  
5286 </td>
5287 <td>
5288 <b></b>
5289  
5290 </td>
5291 </tr>
5292 <tr>
5293 <td>data</td>
5294 <td>DATA</td>
5295 <td> </td>
5296 <td>
5297
5298  
5299 </td>
5300 <td>
5301 <b></b>
5302  
5303 </td>
5304 </tr>
5305 </table>
5306
5307 <h4>
5308 <a name="S0025"></a>ORIGIN: SERVER;
5309 MESSAGE: memo_error</h4>
5310 NUMERIC TYPE (hex): 0025<p>
5311 <p>Account unknown.</p>
5312 </p>
5313 <table border="1" width="100%">
5314 <tr>
5315 <th width="10%">NAME</th>
5316 <th width="8%">TYPE</th>
5317 <th width="4%">VALUE</th>
5318 <th>DESCRIPTION</th>
5319 <th width="10%">GUARD</th>
5320 </tr>
5321 <tr>
5322 <td>name</td>
5323 <td>username</td>
5324 <td> </td>
5325 <td>
5326
5327  
5328 </td>
5329 <td>
5330 <b></b>
5331  
5332 </td>
5333 </tr>
5334 <tr>
5335 <td>cid</td>
5336 <td>CLIENTID16</td>
5337 <td> </td>
5338 <td>
5339
5340  
5341 </td>
5342 <td>
5343 <b></b>
5344  
5345 </td>
5346 </tr>
5347 <tr>
5348 <td>message</td>
5349 <td>CONSTANT</td>
5350 <td>memo send failed: account already exists </td>
5351 <td>
5352
5353  
5354 </td>
5355 <td>
5356 <b></b>
5357  
5358 </td>
5359 </tr>
5360 <tr>
5361 <td>subtype</td>
5362 <td>CONSTANT</td>
5363 <td>25 </td>
5364 <td>
5365
5366  
5367 </td>
5368 <td>
5369 <b></b>
5370  
5371 </td>
5372 </tr>
5373 </table>
5374
5375 <h4>
5376 <a name="S0026"></a>ORIGIN: SERVER;
5377 MESSAGE: memo_error</h4>
5378 NUMERIC TYPE (hex): 0026<p>
5379 <p>Just a guess.</p>
5380 </p>
5381 <table border="1" width="100%">
5382 <tr>
5383 <th width="10%">NAME</th>
5384 <th width="8%">TYPE</th>
5385 <th width="4%">VALUE</th>
5386 <th>DESCRIPTION</th>
5387 <th width="10%">GUARD</th>
5388 </tr>
5389 <tr>
5390 <td>name</td>
5391 <td>username</td>
5392 <td> </td>
5393 <td>
5394
5395  
5396 </td>
5397 <td>
5398 <b></b>
5399  
5400 </td>
5401 </tr>
5402 <tr>
5403 <td>cid</td>
5404 <td>CLIENTID16</td>
5405 <td> </td>
5406 <td>
5407
5408  
5409 </td>
5410 <td>
5411 <b></b>
5412  
5413 </td>
5414 </tr>
5415 <tr>
5416 <td>message</td>
5417 <td>CONSTANT</td>
5418 <td>memo send failed: error 26 </td>
5419 <td>
5420
5421  
5422 </td>
5423 <td>
5424 <b></b>
5425  
5426 </td>
5427 </tr>
5428 <tr>
5429 <td>subtype</td>
5430 <td>CONSTANT</td>
5431 <td>26 </td>
5432 <td>
5433
5434  
5435 </td>
5436 <td>
5437 <b></b>
5438  
5439 </td>
5440 </tr>
5441 </table>
5442
5443 <h4>
5444 <a name="S0027"></a>ORIGIN: SERVER;
5445 MESSAGE: memo_error</h4>
5446 NUMERIC TYPE (hex): 0027<p>
5447 <p>User is currently online, please use chat.</p>
5448 </p>
5449 <table border="1" width="100%">
5450 <tr>
5451 <th width="10%">NAME</th>
5452 <th width="8%">TYPE</th>
5453 <th width="4%">VALUE</th>
5454 <th>DESCRIPTION</th>
5455 <th width="10%">GUARD</th>
5456 </tr>
5457 <tr>
5458 <td>name</td>
5459 <td>username</td>
5460 <td> </td>
5461 <td>
5462
5463  
5464 </td>
5465 <td>
5466 <b></b>
5467  
5468 </td>
5469 </tr>
5470 <tr>
5471 <td>cid</td>
5472 <td>CLIENTID16</td>
5473 <td> </td>
5474 <td>
5475
5476  
5477 </td>
5478 <td>
5479 <b></b>
5480  
5481 </td>
5482 </tr>
5483 <tr>
5484 <td>message</td>
5485 <td>CONSTANT</td>
5486 <td>memo send failed: user is online, use chat </td>
5487 <td>
5488
5489  
5490 </td>
5491 <td>
5492 <b></b>
5493  
5494 </td>
5495 </tr>
5496 <tr>
5497 <td>subtype</td>
5498 <td>CONSTANT</td>
5499 <td>27 </td>
5500 <td>
5501
5502  
5503 </td>
5504 <td>
5505 <b></b>
5506  
5507 </td>
5508 </tr>
5509 </table>
5510
5511 <h4>
5512 <a name="S0028"></a>ORIGIN: SERVER;
5513 MESSAGE: memo_error</h4>
5514 NUMERIC TYPE (hex): 0028<p>
5515 <p>Just a guess.</p>
5516 </p>
5517 <table border="1" width="100%">
5518 <tr>
5519 <th width="10%">NAME</th>
5520 <th width="8%">TYPE</th>
5521 <th width="4%">VALUE</th>
5522 <th>DESCRIPTION</th>
5523 <th width="10%">GUARD</th>
5524 </tr>
5525 <tr>
5526 <td>name</td>
5527 <td>username</td>
5528 <td> </td>
5529 <td>
5530
5531  
5532 </td>
5533 <td>
5534 <b></b>
5535  
5536 </td>
5537 </tr>
5538 <tr>
5539 <td>cid</td>
5540 <td>CLIENTID16</td>
5541 <td> </td>
5542 <td>
5543
5544  
5545 </td>
5546 <td>
5547 <b></b>
5548  
5549 </td>
5550 </tr>
5551 <tr>
5552 <td>message</td>
5553 <td>CONSTANT</td>
5554 <td>memo send failed: error 28 </td>
5555 <td>
5556
5557  
5558 </td>
5559 <td>
5560 <b></b>
5561  
5562 </td>
5563 </tr>
5564 <tr>
5565 <td>subtype</td>
5566 <td>CONSTANT</td>
5567 <td>28 </td>
5568 <td>
5569
5570  
5571 </td>
5572 <td>
5573 <b></b>
5574  
5575 </td>
5576 </tr>
5577 </table>
5578
5579 <h4>
5580 <a name="S0029"></a>ORIGIN: SERVER;
5581 MESSAGE: memo</h4>
5582 NUMERIC TYPE (hex): 0029<p>
5583 </p>
5584 <table border="1" width="100%">
5585 <tr>
5586 <th width="10%">NAME</th>
5587 <th width="8%">TYPE</th>
5588 <th width="4%">VALUE</th>
5589 <th>DESCRIPTION</th>
5590 <th width="10%">GUARD</th>
5591 </tr>
5592 <tr>
5593 <td>name</td>
5594 <td>username</td>
5595 <td> </td>
5596 <td>
5597
5598  
5599 </td>
5600 <td>
5601 <b></b>
5602  
5603 </td>
5604 </tr>
5605 <tr>
5606 <td>time</td>
5607 <td>timestamp</td>
5608 <td> </td>
5609 <td>
5610
5611  
5612 </td>
5613 <td>
5614 <b></b>
5615  
5616 </td>
5617 </tr>
5618 <tr>
5619 <td>message</td>
5620 <td>ZSTRING</td>
5621 <td> </td>
5622 <td>
5623
5624  
5625 </td>
5626 <td>
5627 <b></b>
5628  
5629 </td>
5630 </tr>
5631 </table>
5632
5633 <h4>
5634 <a name="S002a"></a>ORIGIN: SERVER;
5635 MESSAGE: memo_sent</h4>
5636 NUMERIC TYPE (hex): 002a<p>
5637 <p>The memo was sent successfully</p>
5638 </p>
5639 <table border="1" width="100%">
5640 <tr>
5641 <th width="10%">NAME</th>
5642 <th width="8%">TYPE</th>
5643 <th width="4%">VALUE</th>
5644 <th>DESCRIPTION</th>
5645 <th width="10%">GUARD</th>
5646 </tr>
5647 <tr>
5648 <td>name</td>
5649 <td>username</td>
5650 <td> </td>
5651 <td>
5652
5653  
5654 </td>
5655 <td>
5656 <b></b>
5657  
5658 </td>
5659 </tr>
5660 <tr>
5661 <td>cid</td>
5662 <td>CLIENTID16</td>
5663 <td> </td>
5664 <td>
5665
5666  
5667 </td>
5668 <td>
5669 <b></b>
5670  
5671 </td>
5672 </tr>
5673 </table>
5674
5675 <h4>
5676 <a name="S0100"></a>ORIGIN: SERVER;
5677 MESSAGE: gnotice</h4>
5678 NUMERIC TYPE (hex): 0100
5679 (possibly in response to
5680 <a href="#C0100">gnotice(0100)</a>
5681 )
5682 <p>
5683 global notice, sent to everybody
5684 </p>
5685 <table border="1" width="100%">
5686 <tr>
5687 <th width="10%">NAME</th>
5688 <th width="8%">TYPE</th>
5689 <th width="4%">VALUE</th>
5690 <th>DESCRIPTION</th>
5691 <th width="10%">GUARD</th>
5692 </tr>
5693 <tr>
5694 <td>notice</td>
5695 <td>STRING</td>
5696 <td> </td>
5697 <td>
5698
5699  
5700 </td>
5701 <td>
5702 <b></b>
5703  
5704 </td>
5705 </tr>
5706 </table>
5707
5708 <h4>
5709 <a name="S0202"></a>ORIGIN: SERVER;
5710 MESSAGE: notify_event</h4>
5711 NUMERIC TYPE (hex): 0202<p>
5712 # maybe soe notify? Totally unclear.
5713 # loc 0" type="userinfo, flags etc. loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
5714 </p>
5715 <table border="1" width="100%">
5716 <tr>
5717 <th width="10%">NAME</th>
5718 <th width="8%">TYPE</th>
5719 <th width="4%">VALUE</th>
5720 <th>DESCRIPTION</th>
5721 <th width="10%">GUARD</th>
5722 </tr>
5723 <tr>
5724 <td>event</td>
5725 <td>U32</td>
5726 <td> </td>
5727 <td>
5728
5729  
5730 </td>
5731 <td>
5732 <b></b>
5733  
5734 </td>
5735 </tr>
5736 <tr>
5737 <td>user</td>
5738 <td>user</td>
5739 <td> </td>
5740 <td>
5741
5742  
5743 </td>
5744 <td>
5745 <b></b>
5746  
5747 </td>
5748 </tr>
5749 <tr>
5750 <td>gamerecord</td>
5751 <td>game_record</td>
5752 <td> </td>
5753 <td>
5754
5755  
5756 </td>
5757 <td>
5758 <b>event</b> == 2
5759  
5760 </td>
5761 </tr>
5762 </table>
5763
5764 <h4>
5765 <a name="S030c"></a>ORIGIN: SERVER;
5766 MESSAGE: unknown_030c</h4>
5767 NUMERIC TYPE (hex): 030c<p>
5768 <p>Not the slightest... No payload, either.</p>
5769 </p>
5770 <table border="1" width="100%">
5771 <tr>
5772 <th width="10%">NAME</th>
5773 <th width="8%">TYPE</th>
5774 <th width="4%">VALUE</th>
5775 <th>DESCRIPTION</th>
5776 <th width="10%">GUARD</th>
5777 </tr>
5778 </table>
5779
5780 <h4>
5781 <a name="S0310"></a>ORIGIN: SERVER;
5782 MESSAGE: priv_room</h4>
5783 NUMERIC TYPE (hex): 0310<p>
5784 "permission denied" when joining a room
5785 </p>
5786 <table border="1" width="100%">
5787 <tr>
5788 <th width="10%">NAME</th>
5789 <th width="8%">TYPE</th>
5790 <th width="4%">VALUE</th>
5791 <th>DESCRIPTION</th>
5792 <th width="10%">GUARD</th>
5793 </tr>
5794 <tr>
5795 <td>name</td>
5796 <td>STRING</td>
5797 <td> </td>
5798 <td>
5799
5800  
5801 </td>
5802 <td>
5803 <b></b>
5804  
5805 </td>
5806 </tr>
5807 </table>
5808
5809 <h4>
5810 <a name="S0318"></a>ORIGIN: SERVER;
5811 MESSAGE: upd_rooms</h4>
5812 NUMERIC TYPE (hex): 0318
5813 (possibly in response to
5814 <a href="#C0318">list_rooms(0318)</a>
5815 )
5816 <p>
5817 </p>
5818 <table border="1" width="100%">
5819 <tr>
5820 <th width="10%">NAME</th>
5821 <th width="8%">TYPE</th>
5822 <th width="4%">VALUE</th>
5823 <th>DESCRIPTION</th>
5824 <th width="10%">GUARD</th>
5825 </tr>
5826 <tr>
5827 <td>rooms</td>
5828 <td>room</td>
5829 <td> </td>
5830 <td>
5831
5832  
5833 </td>
5834 <td>
5835 <b></b>
5836  
5837 </td>
5838 </tr>
5839 </table>
5840
5841 <h4>
5842 <a name="S0411"></a>ORIGIN: SERVER;
5843 MESSAGE: chal_defaults</h4>
5844 NUMERIC TYPE (hex): 0411
5845 (possibly in response to
5846 <a href="#C0000">login(0000)</a>
5847 )
5848 <p>
5849 </p>
5850 <table border="1" width="100%">
5851 <tr>
5852 <th width="10%">NAME</th>
5853 <th width="8%">TYPE</th>
5854 <th width="4%">VALUE</th>
5855 <th>DESCRIPTION</th>
5856 <th width="10%">GUARD</th>
5857 </tr>
5858 <tr>
5859 <td>channel</td>
5860 <td>U16</td>
5861 <td> </td>
5862 <td>
5863
5864  
5865 </td>
5866 <td>
5867 <b></b>
5868  
5869 </td>
5870 </tr>
5871 <tr>
5872 <td>defaults</td>
5873 <td>challenge_defaults</td>
5874 <td> </td>
5875 <td>
5876
5877  
5878 </td>
5879 <td>
5880 <b></b>
5881  
5882 </td>
5883 </tr>
5884 </table>
5885
5886 <h4>
5887 <a name="S0412"></a>ORIGIN: SERVER;
5888 MESSAGE: already_playing</h4>
5889 NUMERIC TYPE (hex): 0412<p>
5890 Unable to create new game.
5891 </p>
5892 <table border="1" width="100%">
5893 <tr>
5894 <th width="10%">NAME</th>
5895 <th width="8%">TYPE</th>
5896 <th width="4%">VALUE</th>
5897 <th>DESCRIPTION</th>
5898 <th width="10%">GUARD</th>
5899 </tr>
5900 <tr>
5901 <td>message</td>
5902 <td>CONSTANT</td>
5903 <td>Sorry, you are already playing in one game, so you can't start playing in another. </td>
5904 <td>
5905
5906  
5907 </td>
5908 <td>
5909 <b></b>
5910  
5911 </td>
5912 </tr>
5913 <tr>
5914 <td>cid</td>
5915 <td>CLIENTID16</td>
5916 <td> </td>
5917 <td>
5918
5919  
5920 </td>
5921 <td>
5922 <b></b>
5923  
5924 </td>
5925 </tr>
5926 </table>
5927
5928 <h4>
5929 <a name="S0414"></a>ORIGIN: SERVER;
5930 MESSAGE: game_record</h4>
5931 NUMERIC TYPE (hex): 0414
5932 (possibly in response to
5933 <a href="#C0413">req_game_record(0413)</a>
5934 )
5935 <p>
5936 The users game record.
5937 </p>
5938 <table border="1" width="100%">
5939 <tr>
5940 <th width="10%">NAME</th>
5941 <th width="8%">TYPE</th>
5942 <th width="4%">VALUE</th>
5943 <th>DESCRIPTION</th>
5944 <th width="10%">GUARD</th>
5945 </tr>
5946 <tr>
5947 <td>name</td>
5948 <td>username</td>
5949 <td> </td>
5950 <td>
5951
5952  
5953 </td>
5954 <td>
5955 <b></b>
5956  
5957 </td>
5958 </tr>
5959 <tr>
5960 <td>more</td>
5961 <td>flag</td>
5962 <td> </td>
5963 <td>
5964 Wether more games are available (must be requested manually)
5965
5966  
5967 </td>
5968 <td>
5969 <b></b>
5970  
5971 </td>
5972 </tr>
5973 <tr>
5974 <td>games</td>
5975 <td>game_record</td>
5976 <td> </td>
5977 <td>
5978
5979  
5980 </td>
5981 <td>
5982 <b></b>
5983  
5984 </td>
5985 </tr>
5986 </table>
5987
5988 <h4>
5989 <a name="S0417"></a>ORIGIN: SERVER;
5990 MESSAGE: error</h4>
5991 NUMERIC TYPE (hex): 0417<p>
5992 </p>
5993 <table border="1" width="100%">
5994 <tr>
5995 <th width="10%">NAME</th>
5996 <th width="8%">TYPE</th>
5997 <th width="4%">VALUE</th>
5998 <th>DESCRIPTION</th>
5999 <th width="10%">GUARD</th>
6000 </tr>
6001 <tr>
6002 <td>message</td>
6003 <td>CONSTANT</td>
6004 <td>Sorry, your opponent is currently not logged in, so you can't resume this game. </td>
6005 <td>
6006
6007  
6008 </td>
6009 <td>
6010 <b></b>
6011  
6012 </td>
6013 </tr>
6014 </table>
6015
6016 <h4>
6017 <a name="S0418"></a>ORIGIN: SERVER;
6018 MESSAGE: error</h4>
6019 NUMERIC TYPE (hex): 0418<p>
6020 </p>
6021 <table border="1" width="100%">
6022 <tr>
6023 <th width="10%">NAME</th>
6024 <th width="8%">TYPE</th>
6025 <th width="4%">VALUE</th>
6026 <th>DESCRIPTION</th>
6027 <th width="10%">GUARD</th>
6028 </tr>
6029 <tr>
6030 <td>message</td>
6031 <td>CONSTANT</td>
6032 <td>Sorry, your opponent is already playing in a game, so you cannot continue this one. </td>
6033 <td>
6034
6035  
6036 </td>
6037 <td>
6038 <b></b>
6039  
6040 </td>
6041 </tr>
6042 </table>
6043
6044 <h4>
6045 <a name="S0419"></a>ORIGIN: SERVER;
6046 MESSAGE: error</h4>
6047 NUMERIC TYPE (hex): 0419<p>
6048 </p>
6049 <table border="1" width="100%">
6050 <tr>
6051 <th width="10%">NAME</th>
6052 <th width="8%">TYPE</th>
6053 <th width="4%">VALUE</th>
6054 <th>DESCRIPTION</th>
6055 <th width="10%">GUARD</th>
6056 </tr>
6057 <tr>
6058 <td>message</td>
6059 <td>CONSTANT</td>
6060 <td>Sorry, the server is out of boards! Please wait a few minutes and try to start a game again. </td>
6061 <td>
6062
6063  
6064 </td>
6065 <td>
6066 <b></b>
6067  
6068 </td>
6069 </tr>
6070 </table>
6071
6072 <h4>
6073 <a name="S041c"></a>ORIGIN: SERVER;
6074 MESSAGE: upd_game2</h4>
6075 NUMERIC TYPE (hex): 041c<p>
6076 Unclear.
6077 </p>
6078 <table border="1" width="100%">
6079 <tr>
6080 <th width="10%">NAME</th>
6081 <th width="8%">TYPE</th>
6082 <th width="4%">VALUE</th>
6083 <th>DESCRIPTION</th>
6084 <th width="10%">GUARD</th>
6085 </tr>
6086 <tr>
6087 <td>channel_junk</td>
6088 <td>U16</td>
6089 <td> </td>
6090 <td>
6091
6092  
6093 </td>
6094 <td>
6095 <b></b>
6096  
6097 </td>
6098 </tr>
6099 <tr>
6100 <td>game</td>
6101 <td>game</td>
6102 <td> </td>
6103 <td>
6104
6105  
6106 </td>
6107 <td>
6108 <b></b>
6109  
6110 </td>
6111 </tr>
6112 </table>
6113
6114 <h4>
6115 <a name="S041f"></a>ORIGIN: SERVER;
6116 MESSAGE: error</h4>
6117 NUMERIC TYPE (hex): 041f<p>
6118 </p>
6119 <table border="1" width="100%">
6120 <tr>
6121 <th width="10%">NAME</th>
6122 <th width="8%">TYPE</th>
6123 <th width="4%">VALUE</th>
6124 <th>DESCRIPTION</th>
6125 <th width="10%">GUARD</th>
6126 </tr>
6127 <tr>
6128 <td>message</td>
6129 <td>CONSTANT</td>
6130 <td>Sorry, the game you tried to load was not correctly saved...probably caused by the server crashing. It cannot be recovered. </td>
6131 <td>
6132
6133  
6134 </td>
6135 <td>
6136 <b></b>
6137  
6138 </td>
6139 </tr>
6140 </table>
6141
6142 <h4>
6143 <a name="S0420"></a>ORIGIN: SERVER;
6144 MESSAGE: error</h4>
6145 NUMERIC TYPE (hex): 0420<p>
6146 </p>
6147 <table border="1" width="100%">
6148 <tr>
6149 <th width="10%">NAME</th>
6150 <th width="8%">TYPE</th>
6151 <th width="4%">VALUE</th>
6152 <th>DESCRIPTION</th>
6153 <th width="10%">GUARD</th>
6154 </tr>
6155 <tr>
6156 <td>message</td>
6157 <td>CONSTANT</td>
6158 <td>Sorry, user "%s" has left the game you are starting before you could challenge them. You will have to play against somebody else. </td>
6159 <td>
6160
6161  
6162 </td>
6163 <td>
6164 <b></b>
6165  
6166 </td>
6167 </tr>
6168 </table>
6169
6170 <h4>
6171 <a name="S0421"></a>ORIGIN: SERVER;
6172 MESSAGE: error</h4>
6173 NUMERIC TYPE (hex): 0421<p>
6174 </p>
6175 <table border="1" width="100%">
6176 <tr>
6177 <th width="10%">NAME</th>
6178 <th width="8%">TYPE</th>
6179 <th width="4%">VALUE</th>
6180 <th>DESCRIPTION</th>
6181 <th width="10%">GUARD</th>
6182 </tr>
6183 <tr>
6184 <td>message</td>
6185 <td>CONSTANT</td>
6186 <td>Sorry, this game is a private lesson. You will not be allowed to observe it. </td>
6187 <td>
6188
6189  
6190 </td>
6191 <td>
6192 <b></b>
6193  
6194 </td>
6195 </tr>
6196 </table>
6197
6198 <!-- added recently -->
6199 <h4>
6200 <a name="S043a"></a>ORIGIN: SERVER;
6201 MESSAGE: add_global_challenge</h4>
6202 NUMERIC TYPE (hex): 043a<p>
6203 <p>
6204 Adds or updates a global challenge (open game list).
6205 </p>
6206 </p>
6207 <table border="1" width="100%">
6208 <tr>
6209 <th width="10%">NAME</th>
6210 <th width="8%">TYPE</th>
6211 <th width="4%">VALUE</th>
6212 <th>DESCRIPTION</th>
6213 <th width="10%">GUARD</th>
6214 </tr>
6215 <tr>
6216 <td>channel</td>
6217 <td>U16</td>
6218 <td> </td>
6219 <td>
6220
6221  
6222 </td>
6223 <td>
6224 <b></b>
6225  
6226 </td>
6227 </tr>
6228 <tr>
6229 <td>game</td>
6230 <td>game</td>
6231 <td> </td>
6232 <td>
6233
6234  
6235 </td>
6236 <td>
6237 <b></b>
6238  
6239 </td>
6240 </tr>
6241 </table>
6242
6243 <h3>Room messages</h3>
6244
6245 <p>Not all room messages are for rooms only, and rooms need to parse
6246 not only these messages. Orthogonality, what for?</p>
6247
6248 <h4>
6249 <a name="S4300"></a>ORIGIN: SERVER;
6250 MESSAGE: join_room</h4>
6251 NUMERIC TYPE (hex): 4300
6252 (possibly in response to
6253 <a href="#C4300">join_room(4300)</a>
6254 )
6255 <p>
6256 </p>
6257 <table border="1" width="100%">
6258 <tr>
6259 <th width="10%">NAME</th>
6260 <th width="8%">TYPE</th>
6261 <th width="4%">VALUE</th>
6262 <th>DESCRIPTION</th>
6263 <th width="10%">GUARD</th>
6264 </tr>
6265 <tr>
6266 <td>channel</td>
6267 <td>U16</td>
6268 <td> </td>
6269 <td>
6270
6271  
6272 </td>
6273 <td>
6274 <b></b>
6275  
6276 </td>
6277 </tr>
6278 <tr>
6279 <td>users</td>
6280 <td>user</td>
6281 <td> </td>
6282 <td>
6283
6284  
6285 </td>
6286 <td>
6287 <b></b>
6288  
6289 </td>
6290 </tr>
6291 </table>
6292
6293 <h4>
6294 <a name="S4301"></a>ORIGIN: SERVER;
6295 MESSAGE: msg_room</h4>
6296 NUMERIC TYPE (hex): 4301<p>
6297 </p>
6298 <table border="1" width="100%">
6299 <tr>
6300 <th width="10%">NAME</th>
6301 <th width="8%">TYPE</th>
6302 <th width="4%">VALUE</th>
6303 <th>DESCRIPTION</th>
6304 <th width="10%">GUARD</th>
6305 </tr>
6306 <tr>
6307 <td>channel</td>
6308 <td>U16</td>
6309 <td> </td>
6310 <td>
6311
6312  
6313 </td>
6314 <td>
6315 <b></b>
6316  
6317 </td>
6318 </tr>
6319 <tr>
6320 <td>name</td>
6321 <td>username</td>
6322 <td> </td>
6323 <td>
6324
6325  
6326 </td>
6327 <td>
6328 <b></b>
6329  
6330 </td>
6331 </tr>
6332 <tr>
6333 <td>message</td>
6334 <td>STRING</td>
6335 <td> </td>
6336 <td>
6337
6338  
6339 </td>
6340 <td>
6341 <b></b>
6342  
6343 </td>
6344 </tr>
6345 </table>
6346
6347 <h4>
6348 <a name="S4302"></a>ORIGIN: SERVER;
6349 MESSAGE: part_room</h4>
6350 NUMERIC TYPE (hex): 4302<p>
6351 </p>
6352 <table border="1" width="100%">
6353 <tr>
6354 <th width="10%">NAME</th>
6355 <th width="8%">TYPE</th>
6356 <th width="4%">VALUE</th>
6357 <th>DESCRIPTION</th>
6358 <th width="10%">GUARD</th>
6359 </tr>
6360 <tr>
6361 <td>channel</td>
6362 <td>U16</td>
6363 <td> </td>
6364 <td>
6365
6366  
6367 </td>
6368 <td>
6369 <b></b>
6370  
6371 </td>
6372 </tr>
6373 <tr>
6374 <td>user</td>
6375 <td>user</td>
6376 <td> </td>
6377 <td>
6378
6379  
6380 </td>
6381 <td>
6382 <b></b>
6383  
6384 </td>
6385 </tr>
6386 </table>
6387
6388 <h4>
6389 <a name="S4303"></a>ORIGIN: SERVER;
6390 MESSAGE: del_room</h4>
6391 NUMERIC TYPE (hex): 4303<p>
6392 </p>
6393 <table border="1" width="100%">
6394 <tr>
6395 <th width="10%">NAME</th>
6396 <th width="8%">TYPE</th>
6397 <th width="4%">VALUE</th>
6398 <th>DESCRIPTION</th>
6399 <th width="10%">GUARD</th>
6400 </tr>
6401 <tr>
6402 <td>channel</td>
6403 <td>U16</td>
6404 <td> </td>
6405 <td>
6406
6407  
6408 </td>
6409 <td>
6410 <b></b>
6411  
6412 </td>
6413 </tr>
6414 </table>
6415
6416 <h4>
6417 <a name="S4304"></a>ORIGIN: SERVER;
6418 MESSAGE: upd_games</h4>
6419 NUMERIC TYPE (hex): 4304<p>
6420 </p>
6421 <table border="1" width="100%">
6422 <tr>
6423 <th width="10%">NAME</th>
6424 <th width="8%">TYPE</th>
6425 <th width="4%">VALUE</th>
6426 <th>DESCRIPTION</th>
6427 <th width="10%">GUARD</th>
6428 </tr>
6429 <tr>
6430 <td>channel</td>
6431 <td>U16</td>
6432 <td> </td>
6433 <td>
6434
6435  
6436 </td>
6437 <td>
6438 <b></b>
6439  
6440 </td>
6441 </tr>
6442 <tr>
6443 <td>games</td>
6444 <td>game</td>
6445 <td> </td>
6446 <td>
6447
6448  
6449 </td>
6450 <td>
6451 <b></b>
6452  
6453 </td>
6454 </tr>
6455 </table>
6456
6457 <h4>
6458 <a name="S4319"></a>ORIGIN: SERVER;
6459 MESSAGE: desc_room</h4>
6460 NUMERIC TYPE (hex): 4319<p>
6461 </p>
6462 <table border="1" width="100%">
6463 <tr>
6464 <th width="10%">NAME</th>
6465 <th width="8%">TYPE</th>
6466 <th width="4%">VALUE</th>
6467 <th>DESCRIPTION</th>
6468 <th width="10%">GUARD</th>
6469 </tr>
6470 <tr>
6471 <td>channel</td>
6472 <td>U16</td>
6473 <td> </td>
6474 <td>
6475
6476  
6477 </td>
6478 <td>
6479 <b></b>
6480  
6481 </td>
6482 </tr>
6483 <tr>
6484 <td>owner</td>
6485 <td>username</td>
6486 <td> </td>
6487 <td>
6488
6489  
6490 </td>
6491 <td>
6492 <b></b>
6493  
6494 </td>
6495 </tr>
6496 <tr>
6497 <td>description</td>
6498 <td>STRING</td>
6499 <td> </td>
6500 <td>
6501
6502  
6503 </td>
6504 <td>
6505 <b></b>
6506  
6507 </td>
6508 </tr>
6509 </table>
6510
6511 <h3>Game messages</h3>
6512
6513 <h4>
6514 <a name="S4400"></a>ORIGIN: SERVER;
6515 MESSAGE: challenge</h4>
6516 NUMERIC TYPE (hex): 4400<p>
6517 Unclear.
6518 </p>
6519 <table border="1" width="100%">
6520 <tr>
6521 <th width="10%">NAME</th>
6522 <th width="8%">TYPE</th>
6523 <th width="4%">VALUE</th>
6524 <th>DESCRIPTION</th>
6525 <th width="10%">GUARD</th>
6526 </tr>
6527 <tr>
6528 <td>channel</td>
6529 <td>U16</td>
6530 <td> </td>
6531 <td>
6532
6533  
6534 </td>
6535 <td>
6536 <b></b>
6537  
6538 </td>
6539 </tr>
6540 <tr>
6541 <td>black</td>
6542 <td>user</td>
6543 <td> </td>
6544 <td>
6545
6546  
6547 </td>
6548 <td>
6549 <b></b>
6550  
6551 </td>
6552 </tr>
6553 <tr>
6554 <td>white</td>
6555 <td>user</td>
6556 <td> </td>
6557 <td>
6558
6559  
6560 </td>
6561 <td>
6562 <b></b>
6563  
6564 </td>
6565 </tr>
6566 <tr>
6567 <td>gametype</td>
6568 <td>U8</td>
6569 <td> </td>
6570 <td>
6571
6572  
6573 </td>
6574 <td>
6575 <b></b>
6576  
6577 </td>
6578 </tr>
6579 <tr>
6580 <td>cid</td>
6581 <td>CLIENTID8</td>
6582 <td> </td>
6583 <td>
6584
6585  
6586 </td>
6587 <td>
6588 <b></b>
6589  
6590 </td>
6591 </tr>
6592 <tr>
6593 <td>rules</td>
6594 <td>rules</td>
6595 <td> </td>
6596 <td>
6597
6598  
6599 </td>
6600 <td>
6601 <b></b>
6602  
6603 </td>
6604 </tr>
6605 <tr>
6606 <td>notes</td>
6607 <td>STRING</td>
6608 <td> </td>
6609 <td>
6610
6611  
6612 </td>
6613 <td>
6614 <b></b>
6615  
6616 </td>
6617 </tr>
6618 </table>
6619
6620 <h4>
6621 <a name="S4401"></a>ORIGIN: SERVER;
6622 MESSAGE: upd_game</h4>
6623 NUMERIC TYPE (hex): 4401<p>
6624 </p>
6625 <table border="1" width="100%">
6626 <tr>
6627 <th width="10%">NAME</th>
6628 <th width="8%">TYPE</th>
6629 <th width="4%">VALUE</th>
6630 <th>DESCRIPTION</th>
6631 <th width="10%">GUARD</th>
6632 </tr>
6633 <tr>
6634 <td>channel</td>
6635 <td>U16</td>
6636 <td> </td>
6637 <td>
6638
6639  
6640 </td>
6641 <td>
6642 <b></b>
6643  
6644 </td>
6645 </tr>
6646 <tr>
6647 <td>game</td>
6648 <td>game</td>
6649 <td> </td>
6650 <td>
6651
6652  
6653 </td>
6654 <td>
6655 <b></b>
6656  
6657 </td>
6658 </tr>
6659 </table>
6660
6661 <h4>
6662 <a name="S4402"></a>ORIGIN: SERVER;
6663 MESSAGE: del_game</h4>
6664 NUMERIC TYPE (hex): 4402<p>
6665 </p>
6666 <table border="1" width="100%">
6667 <tr>
6668 <th width="10%">NAME</th>
6669 <th width="8%">TYPE</th>
6670 <th width="4%">VALUE</th>
6671 <th>DESCRIPTION</th>
6672 <th width="10%">GUARD</th>
6673 </tr>
6674 <tr>
6675 <td>channel</td>
6676 <td>U16</td>
6677 <td> </td>
6678 <td>
6679
6680  
6681 </td>
6682 <td>
6683 <b></b>
6684  
6685 </td>
6686 </tr>
6687 </table>
6688
6689 <h4>
6690 <a name="S4403"></a>ORIGIN: SERVER;
6691 MESSAGE: upd_observers</h4>
6692 NUMERIC TYPE (hex): 4403<p>
6693 </p>
6694 <table border="1" width="100%">
6695 <tr>
6696 <th width="10%">NAME</th>
6697 <th width="8%">TYPE</th>
6698 <th width="4%">VALUE</th>
6699 <th>DESCRIPTION</th>
6700 <th width="10%">GUARD</th>
6701 </tr>
6702 <tr>
6703 <td>channel</td>
6704 <td>U16</td>
6705 <td> </td>
6706 <td>
6707
6708  
6709 </td>
6710 <td>
6711 <b></b>
6712  
6713 </td>
6714 </tr>
6715 <tr>
6716 <td>users</td>
6717 <td>user</td>
6718 <td> </td>
6719 <td>
6720
6721  
6722 </td>
6723 <td>
6724 <b></b>
6725  
6726 </td>
6727 </tr>
6728 </table>
6729
6730 <h4>
6731 <a name="S4404"></a>ORIGIN: SERVER;
6732 MESSAGE: del_observer</h4>
6733 NUMERIC TYPE (hex): 4404<p>
6734 </p>
6735 <table border="1" width="100%">
6736 <tr>
6737 <th width="10%">NAME</th>
6738 <th width="8%">TYPE</th>
6739 <th width="4%">VALUE</th>
6740 <th>DESCRIPTION</th>
6741 <th width="10%">GUARD</th>
6742 </tr>
6743 <tr>
6744 <td>channel</td>
6745 <td>U16</td>
6746 <td> </td>
6747 <td>
6748
6749  
6750 </td>
6751 <td>
6752 <b></b>
6753  
6754 </td>
6755 </tr>
6756 <tr>
6757 <td>name</td>
6758 <td>username</td>
6759 <td> </td>
6760 <td>
6761
6762  
6763 </td>
6764 <td>
6765 <b></b>
6766  
6767 </td>
6768 </tr>
6769 </table>
6770
6771 <h4>
6772 <a name="S4405"></a>ORIGIN: SERVER;
6773 MESSAGE: set_tree</h4>
6774 NUMERIC TYPE (hex): 4405<p>
6775 </p>
6776 <table border="1" width="100%">
6777 <tr>
6778 <th width="10%">NAME</th>
6779 <th width="8%">TYPE</th>
6780 <th width="4%">VALUE</th>
6781 <th>DESCRIPTION</th>
6782 <th width="10%">GUARD</th>
6783 </tr>
6784 <tr>
6785 <td>channel</td>
6786 <td>U16</td>
6787 <td> </td>
6788 <td>
6789
6790  
6791 </td>
6792 <td>
6793 <b></b>
6794  
6795 </td>
6796 </tr>
6797 <tr>
6798 <td>tree</td>
6799 <td>TREE</td>
6800 <td> </td>
6801 <td>
6802
6803  
6804 </td>
6805 <td>
6806 <b></b>
6807  
6808 </td>
6809 </tr>
6810 </table>
6811
6812 <h4>
6813 <a name="S4406"></a>ORIGIN: SERVER;
6814 MESSAGE: upd_tree</h4>
6815 NUMERIC TYPE (hex): 4406<p>
6816 </p>
6817 <table border="1" width="100%">
6818 <tr>
6819 <th width="10%">NAME</th>
6820 <th width="8%">TYPE</th>
6821 <th width="4%">VALUE</th>
6822 <th>DESCRIPTION</th>
6823 <th width="10%">GUARD</th>
6824 </tr>
6825 <tr>
6826 <td>channel</td>
6827 <td>U16</td>
6828 <td> </td>
6829 <td>
6830
6831  
6832 </td>
6833 <td>
6834 <b></b>
6835  
6836 </td>
6837 </tr>
6838 <tr>
6839 <td>tree</td>
6840 <td>TREE</td>
6841 <td> </td>
6842 <td>
6843
6844  
6845 </td>
6846 <td>
6847 <b></b>
6848  
6849 </td>
6850 </tr>
6851 </table>
6852
6853 <h4>
6854 <a name="S4409"></a>ORIGIN: SERVER;
6855 MESSAGE: superko</h4>
6856 NUMERIC TYPE (hex): 4409<p>
6857 Superko-warning.
6858 </p>
6859 <table border="1" width="100%">
6860 <tr>
6861 <th width="10%">NAME</th>
6862 <th width="8%">TYPE</th>
6863 <th width="4%">VALUE</th>
6864 <th>DESCRIPTION</th>
6865 <th width="10%">GUARD</th>
6866 </tr>
6867 <tr>
6868 <td>channel</td>
6869 <td>U16</td>
6870 <td> </td>
6871 <td>
6872
6873  
6874 </td>
6875 <td>
6876 <b></b>
6877  
6878 </td>
6879 </tr>
6880 </table>
6881
6882 <h4>
6883 <a name="S440a"></a>ORIGIN: SERVER;
6884 MESSAGE: game_done</h4>
6885 NUMERIC TYPE (hex): 440a<p>
6886 <p>Send by the server when one of the players sends a done.</p>
6887 </p>
6888 <table border="1" width="100%">
6889 <tr>
6890 <th width="10%">NAME</th>
6891 <th width="8%">TYPE</th>
6892 <th width="4%">VALUE</th>
6893 <th>DESCRIPTION</th>
6894 <th width="10%">GUARD</th>
6895 </tr>
6896 <tr>
6897 <td>channel</td>
6898 <td>U16</td>
6899 <td> </td>
6900 <td>
6901
6902  
6903 </td>
6904 <td>
6905 <b></b>
6906  
6907 </td>
6908 </tr>
6909 <tr>
6910 <td>id</td>
6911 <td>U32</td>
6912 <td> </td>
6913 <td>
6914
6915  
6916 </td>
6917 <td>
6918 <b></b>
6919  
6920 </td>
6921 </tr>
6922 <tr>
6923 <td>black</td>
6924 <td>flag</td>
6925 <td> </td>
6926 <td>
6927
6928  
6929 </td>
6930 <td>
6931 <b></b>
6932  
6933 </td>
6934 </tr>
6935 <tr>
6936 <td>white</td>
6937 <td>flag</td>
6938 <td> </td>
6939 <td>
6940
6941  
6942 </td>
6943 <td>
6944 <b></b>
6945  
6946 </td>
6947 </tr>
6948 </table>
6949
6950 <h4>
6951 <a name="S440b"></a>ORIGIN: SERVER;
6952 MESSAGE: final_result</h4>
6953 NUMERIC TYPE (hex): 440b<p>
6954 </p>
6955 <table border="1" width="100%">
6956 <tr>
6957 <th width="10%">NAME</th>
6958 <th width="8%">TYPE</th>
6959 <th width="4%">VALUE</th>
6960 <th>DESCRIPTION</th>
6961 <th width="10%">GUARD</th>
6962 </tr>
6963 <tr>
6964 <td>channel</td>
6965 <td>U16</td>
6966 <td> </td>
6967 <td>
6968
6969  
6970 </td>
6971 <td>
6972 <b></b>
6973  
6974 </td>
6975 </tr>
6976 <tr>
6977 <td>blackscore</td>
6978 <td>scorevalues</td>
6979 <td> </td>
6980 <td>
6981
6982  
6983 </td>
6984 <td>
6985 <b></b>
6986  
6987 </td>
6988 </tr>
6989 <tr>
6990 <td>whitescore</td>
6991 <td>scorevalues</td>
6992 <td> </td>
6993 <td>
6994
6995  
6996 </td>
6997 <td>
6998 <b></b>
6999  
7000 </td>
7001 </tr>
7002 </table>
7003
7004 <h4>
7005 <a name="S440c"></a>ORIGIN: SERVER;
7006 MESSAGE: out_of_time</h4>
7007 NUMERIC TYPE (hex): 440c<p>
7008 <p>Sent when the user is out of time and moves, or when the opponent
7009 requests <a href="#S0008">userinfo(0008)</a>.</p>
7010 </p>
7011 <table border="1" width="100%">
7012 <tr>
7013 <th width="10%">NAME</th>
7014 <th width="8%">TYPE</th>
7015 <th width="4%">VALUE</th>
7016 <th>DESCRIPTION</th>
7017 <th width="10%">GUARD</th>
7018 </tr>
7019 <tr>
7020 <td>channel</td>
7021 <td>U16</td>
7022 <td> </td>
7023 <td>
7024
7025  
7026 </td>
7027 <td>
7028 <b></b>
7029  
7030 </td>
7031 </tr>
7032 <tr>
7033 <td>player</td>
7034 <td>U8</td>
7035 <td> </td>
7036 <td>
7037
7038  
7039 </td>
7040 <td>
7041 <b></b>
7042  
7043 </td>
7044 </tr>
7045 </table>
7046
7047 <h4>
7048 <a name="S440e"></a>ORIGIN: SERVER;
7049 MESSAGE: req_undo</h4>
7050 NUMERIC TYPE (hex): 440e<p>
7051 </p>
7052 <table border="1" width="100%">
7053 <tr>
7054 <th width="10%">NAME</th>
7055 <th width="8%">TYPE</th>
7056 <th width="4%">VALUE</th>
7057 <th>DESCRIPTION</th>
7058 <th width="10%">GUARD</th>
7059 </tr>
7060 <tr>
7061 <td>channel</td>
7062 <td>U16</td>
7063 <td> </td>
7064 <td>
7065
7066  
7067 </td>
7068 <td>
7069 <b></b>
7070  
7071 </td>
7072 </tr>
7073 </table>
7074
7075 <h4>
7076 <a name="S4410"></a>ORIGIN: SERVER;
7077 MESSAGE: resign_game</h4>
7078 NUMERIC TYPE (hex): 4410<p>
7079 </p>
7080 <table border="1" width="100%">
7081 <tr>
7082 <th width="10%">NAME</th>
7083 <th width="8%">TYPE</th>
7084 <th width="4%">VALUE</th>
7085 <th>DESCRIPTION</th>
7086 <th width="10%">GUARD</th>
7087 </tr>
7088 <tr>
7089 <td>channel</td>
7090 <td>U16</td>
7091 <td> </td>
7092 <td>
7093
7094  
7095 </td>
7096 <td>
7097 <b></b>
7098  
7099 </td>
7100 </tr>
7101 <tr>
7102 <td>player</td>
7103 <td>U8</td>
7104 <td> </td>
7105 <td>
7106
7107  
7108 </td>
7109 <td>
7110 <b></b>
7111  
7112 </td>
7113 </tr>
7114 </table>
7115
7116 <h4>
7117 <a name="S4415"></a>ORIGIN: SERVER;
7118 MESSAGE: game_error</h4>
7119 NUMERIC TYPE (hex): 4415<p>
7120 </p>
7121 <table border="1" width="100%">
7122 <tr>
7123 <th width="10%">NAME</th>
7124 <th width="8%">TYPE</th>
7125 <th width="4%">VALUE</th>
7126 <th>DESCRIPTION</th>
7127 <th width="10%">GUARD</th>
7128 </tr>
7129 <tr>
7130 <td>channel</td>
7131 <td>U16</td>
7132 <td> </td>
7133 <td>
7134
7135  
7136 </td>
7137 <td>
7138 <b></b>
7139  
7140 </td>
7141 </tr>
7142 <tr>
7143 <td>message</td>
7144 <td>CONSTANT</td>
7145 <td>Sorry, this is a lecture game. Only authorized players are allowed to make comments. </td>
7146 <td>
7147
7148  
7149 </td>
7150 <td>
7151 <b></b>
7152  
7153 </td>
7154 </tr>
7155 </table>
7156
7157 <h4>
7158 <a name="S441a"></a>ORIGIN: SERVER;
7159 MESSAGE: set_teacher</h4>
7160 NUMERIC TYPE (hex): 441a<p>
7161 </p>
7162 <table border="1" width="100%">
7163 <tr>
7164 <th width="10%">NAME</th>
7165 <th width="8%">TYPE</th>
7166 <th width="4%">VALUE</th>
7167 <th>DESCRIPTION</th>
7168 <th width="10%">GUARD</th>
7169 </tr>
7170 <tr>
7171 <td>channel</td>
7172 <td>U16</td>
7173 <td> </td>
7174 <td>
7175
7176  
7177 </td>
7178 <td>
7179 <b></b>
7180  
7181 </td>
7182 </tr>
7183 <tr>
7184 <td>name</td>
7185 <td>username</td>
7186 <td> </td>
7187 <td>
7188
7189  
7190 </td>
7191 <td>
7192 <b></b>
7193  
7194 </td>
7195 </tr>
7196 </table>
7197
7198 <h4>
7199 <a name="S441d"></a>ORIGIN: SERVER;
7200 MESSAGE: owner_left</h4>
7201 NUMERIC TYPE (hex): 441d<p>
7202 </p>
7203 <table border="1" width="100%">
7204 <tr>
7205 <th width="10%">NAME</th>
7206 <th width="8%">TYPE</th>
7207 <th width="4%">VALUE</th>
7208 <th>DESCRIPTION</th>
7209 <th width="10%">GUARD</th>
7210 </tr>
7211 <tr>
7212 <td>channel</td>
7213 <td>U16</td>
7214 <td> </td>
7215 <td>
7216
7217  
7218 </td>
7219 <td>
7220 <b></b>
7221  
7222 </td>
7223 </tr>
7224 <tr>
7225 <td>message</td>
7226 <td>CONSTANT</td>
7227 <td>Sorry, the owner of this game has left. Nobody will be allowed to edit it until the owner returns. </td>
7228 <td>
7229
7230  
7231 </td>
7232 <td>
7233 <b></b>
7234  
7235 </td>
7236 </tr>
7237 </table>
7238
7239 <h4>
7240 <a name="S441e"></a>ORIGIN: SERVER;
7241 MESSAGE: teacher_left</h4>
7242 NUMERIC TYPE (hex): 441e<p>
7243 Unclear.
7244 </p>
7245 <table border="1" width="100%">
7246 <tr>
7247 <th width="10%">NAME</th>
7248 <th width="8%">TYPE</th>
7249 <th width="4%">VALUE</th>
7250 <th>DESCRIPTION</th>
7251 <th width="10%">GUARD</th>
7252 </tr>
7253 <tr>
7254 <td>channel</td>
7255 <td>U16</td>
7256 <td> </td>
7257 <td>
7258
7259  
7260 </td>
7261 <td>
7262 <b></b>
7263  
7264 </td>
7265 </tr>
7266 </table>
7267
7268 <h4>
7269 <a name="S4422"></a>ORIGIN: SERVER;
7270 MESSAGE: allow_user_result</h4>
7271 NUMERIC TYPE (hex): 4422<p>
7272 </p>
7273 <table border="1" width="100%">
7274 <tr>
7275 <th width="10%">NAME</th>
7276 <th width="8%">TYPE</th>
7277 <th width="4%">VALUE</th>
7278 <th>DESCRIPTION</th>
7279 <th width="10%">GUARD</th>
7280 </tr>
7281 <tr>
7282 <td>message</td>
7283 <td>CONSTANT</td>
7284 <td>User "%s" will now be allowed full access to your game. </td>
7285 <td>
7286
7287  
7288 </td>
7289 <td>
7290 <b></b>
7291  
7292 </td>
7293 </tr>
7294 <tr>
7295 <td>channel</td>
7296 <td>U16</td>
7297 <td> </td>
7298 <td>
7299
7300  
7301 </td>
7302 <td>
7303 <b></b>
7304  
7305 </td>
7306 </tr>
7307 </table>
7308
7309 <h4>
7310 <a name="S4424"></a>ORIGIN: SERVER;
7311 MESSAGE: allow_user_result</h4>
7312 NUMERIC TYPE (hex): 4424<p>
7313 </p>
7314 <table border="1" width="100%">
7315 <tr>
7316 <th width="10%">NAME</th>
7317 <th width="8%">TYPE</th>
7318 <th width="4%">VALUE</th>
7319 <th>DESCRIPTION</th>
7320 <th width="10%">GUARD</th>
7321 </tr>
7322 <tr>
7323 <td>message</td>
7324 <td>CONSTANT</td>
7325 <td>Sorry, user "%s" is a guest and cannot be allowed full access to your game. </td>
7326 <td>
7327
7328  
7329 </td>
7330 <td>
7331 <b></b>
7332  
7333 </td>
7334 </tr>
7335 <tr>
7336 <td>channel</td>
7337 <td>U16</td>
7338 <td> </td>
7339 <td>
7340
7341  
7342 </td>
7343 <td>
7344 <b></b>
7345  
7346 </td>
7347 </tr>
7348 </table>
7349
7350 <h4>
7351 <a name="S4425"></a>ORIGIN: SERVER;
7352 MESSAGE: allow_user_result</h4>
7353 NUMERIC TYPE (hex): 4425<p>
7354 </p>
7355 <table border="1" width="100%">
7356 <tr>
7357 <th width="10%">NAME</th>
7358 <th width="8%">TYPE</th>
7359 <th width="4%">VALUE</th>
7360 <th>DESCRIPTION</th>
7361 <th width="10%">GUARD</th>
7362 </tr>
7363 <tr>
7364 <td>message</td>
7365 <td>CONSTANT</td>
7366 <td>Sorry, user "%s" does not seem to exist and cannot be allowed into your game. </td>
7367 <td>
7368
7369  
7370 </td>
7371 <td>
7372 <b></b>
7373  
7374 </td>
7375 </tr>
7376 <tr>
7377 <td>channel</td>
7378 <td>U16</td>
7379 <td> </td>
7380 <td>
7381
7382  
7383 </td>
7384 <td>
7385 <b></b>
7386  
7387 </td>
7388 </tr>
7389 </table>
7390
7391 <h4>
7392 <a name="S4428"></a>ORIGIN: SERVER;
7393 MESSAGE: add_tree</h4>
7394 NUMERIC TYPE (hex): 4428<p>
7395 <p>See <a href="#S4405">set_tree(4405)</a>. In addition, flags the tree as being
7396 uploaded completely.</p>
7397 </p>
7398 <table border="1" width="100%">
7399 <tr>
7400 <th width="10%">NAME</th>
7401 <th width="8%">TYPE</th>
7402 <th width="4%">VALUE</th>
7403 <th>DESCRIPTION</th>
7404 <th width="10%">GUARD</th>
7405 </tr>
7406 <tr>
7407 <td>channel</td>
7408 <td>U16</td>
7409 <td> </td>
7410 <td>
7411
7412  
7413 </td>
7414 <td>
7415 <b></b>
7416  
7417 </td>
7418 </tr>
7419 <tr>
7420 <td>tree</td>
7421 <td>TREE</td>
7422 <td> </td>
7423 <td>
7424
7425  
7426 </td>
7427 <td>
7428 <b></b>
7429  
7430 </td>
7431 </tr>
7432 </table>
7433
7434 <h4>
7435 <a name="S4429"></a>ORIGIN: SERVER;
7436 MESSAGE: reject_challenge</h4>
7437 NUMERIC TYPE (hex): 4429<p>
7438 Reject a challenge by a given user. Not checked.
7439 </p>
7440 <table border="1" width="100%">
7441 <tr>
7442 <th width="10%">NAME</th>
7443 <th width="8%">TYPE</th>
7444 <th width="4%">VALUE</th>
7445 <th>DESCRIPTION</th>
7446 <th width="10%">GUARD</th>
7447 </tr>
7448 <tr>
7449 <td>channel</td>
7450 <td>U16</td>
7451 <td> </td>
7452 <td>
7453
7454  
7455 </td>
7456 <td>
7457 <b></b>
7458  
7459 </td>
7460 </tr>
7461 <tr>
7462 <td>name</td>
7463 <td>username</td>
7464 <td> </td>
7465 <td>
7466
7467  
7468 </td>
7469 <td>
7470 <b></b>
7471  
7472 </td>
7473 </tr>
7474 <tr>
7475 <td>gametype</td>
7476 <td>U8</td>
7477 <td> </td>
7478 <td>
7479
7480  
7481 </td>
7482 <td>
7483 <b></b>
7484  
7485 </td>
7486 </tr>
7487 <tr>
7488 <td>cid</td>
7489 <td>CLIENTID8</td>
7490 <td> </td>
7491 <td>
7492
7493  
7494 </td>
7495 <td>
7496 <b></b>
7497  
7498 </td>
7499 </tr>
7500 <tr>
7501 <td>rules</td>
7502 <td>rules</td>
7503 <td> </td>
7504 <td>
7505
7506  
7507 </td>
7508 <td>
7509 <b></b>
7510  
7511 </td>
7512 </tr>
7513 </table>
7514
7515 <h4>
7516 <a name="S442b"></a>ORIGIN: SERVER;
7517 MESSAGE: set_comments</h4>
7518 NUMERIC TYPE (hex): 442b<p>
7519 <p>Sent at end of games to set the comments not seen previously.</p>
7520 </p>
7521 <table border="1" width="100%">
7522 <tr>
7523 <th width="10%">NAME</th>
7524 <th width="8%">TYPE</th>
7525 <th width="4%">VALUE</th>
7526 <th>DESCRIPTION</th>
7527 <th width="10%">GUARD</th>
7528 </tr>
7529 <tr>
7530 <td>channel</td>
7531 <td>U16</td>
7532 <td> </td>
7533 <td>
7534
7535  
7536 </td>
7537 <td>
7538 <b></b>
7539  
7540 </td>
7541 </tr>
7542 <tr>
7543 <td>node</td>
7544 <td>U32</td>
7545 <td> </td>
7546 <td>
7547
7548  
7549 </td>
7550 <td>
7551 <b></b>
7552  
7553 </td>
7554 </tr>
7555 <tr>
7556 <td>comments</td>
7557 <td>STRING</td>
7558 <td> </td>
7559 <td>
7560
7561  
7562 </td>
7563 <td>
7564 <b></b>
7565  
7566 </td>
7567 </tr>
7568 </table>
7569
7570 <h4>
7571 <a name="S442c"></a>ORIGIN: SERVER;
7572 MESSAGE: add_comments</h4>
7573 NUMERIC TYPE (hex): 442c<p>
7574 <p>Sent at end of games to add all game commentary.</p>
7575 </p>
7576 <table border="1" width="100%">
7577 <tr>
7578 <th width="10%">NAME</th>
7579 <th width="8%">TYPE</th>
7580 <th width="4%">VALUE</th>
7581 <th>DESCRIPTION</th>
7582 <th width="10%">GUARD</th>
7583 </tr>
7584 <tr>
7585 <td>channel</td>
7586 <td>U16</td>
7587 <td> </td>
7588 <td>
7589
7590  
7591 </td>
7592 <td>
7593 <b></b>
7594  
7595 </td>
7596 </tr>
7597 <tr>
7598 <td>node</td>
7599 <td>U32</td>
7600 <td> </td>
7601 <td>
7602
7603  
7604 </td>
7605 <td>
7606 <b></b>
7607  
7608 </td>
7609 </tr>
7610 <tr>
7611 <td>comments</td>
7612 <td>STRING</td>
7613 <td> </td>
7614 <td>
7615
7616  
7617 </td>
7618 <td>
7619 <b></b>
7620  
7621 </td>
7622 </tr>
7623 </table>
7624
7625 <h4>
7626 <a name="S442d"></a>ORIGIN: SERVER;
7627 MESSAGE: more_comments</h4>
7628 NUMERIC TYPE (hex): 442d<p>
7629 <p>Quite brokenly, the server sends you this to make you ask for more comments.
7630 Reply with <a href="#S442d">more_comments(442d)</a>.</p>
7631 </p>
7632 <table border="1" width="100%">
7633 <tr>
7634 <th width="10%">NAME</th>
7635 <th width="8%">TYPE</th>
7636 <th width="4%">VALUE</th>
7637 <th>DESCRIPTION</th>
7638 <th width="10%">GUARD</th>
7639 </tr>
7640 <tr>
7641 <td>channel</td>
7642 <td>U16</td>
7643 <td> </td>
7644 <td>
7645
7646  
7647 </td>
7648 <td>
7649 <b></b>
7650  
7651 </td>
7652 </tr>
7653 <tr>
7654 <td>node</td>
7655 <td>U32</td>
7656 <td> </td>
7657 <td>
7658
7659  
7660 </td>
7661 <td>
7662 <b></b>
7663  
7664 </td>
7665 </tr>
7666 </table>
7667
7668 <h4>
7669 <a name="S442f"></a>ORIGIN: SERVER;
7670 MESSAGE: new_game</h4>
7671 NUMERIC TYPE (hex): 442f<p>
7672 <p>Notifies the client that a new game has been created. This
7673 message is sent long *after* upd_games and upd_observers etc.
7674 have been received. *sigh*</p>
7675 </p>
7676 <table border="1" width="100%">
7677 <tr>
7678 <th width="10%">NAME</th>
7679 <th width="8%">TYPE</th>
7680 <th width="4%">VALUE</th>
7681 <th>DESCRIPTION</th>
7682 <th width="10%">GUARD</th>
7683 </tr>
7684 <tr>
7685 <td>channel</td>
7686 <td>U16</td>
7687 <td> </td>
7688 <td>
7689
7690  
7691 </td>
7692 <td>
7693 <b></b>
7694  
7695 </td>
7696 </tr>
7697 <tr>
7698 <td>cid</td>
7699 <td>CLIENTID16</td>
7700 <td> </td>
7701 <td>
7702
7703  
7704 </td>
7705 <td>
7706 <b></b>
7707  
7708 </td>
7709 </tr>
7710 </table>
7711
7712 <h4>
7713 <a name="S4433"></a>ORIGIN: SERVER;
7714 MESSAGE: req_result</h4>
7715 NUMERIC TYPE (hex): 4433<p>
7716 Unclear.
7717 </p>
7718 <table border="1" width="100%">
7719 <tr>
7720 <th width="10%">NAME</th>
7721 <th width="8%">TYPE</th>
7722 <th width="4%">VALUE</th>
7723 <th>DESCRIPTION</th>
7724 <th width="10%">GUARD</th>
7725 </tr>
7726 <tr>
7727 <td>channel</td>
7728 <td>U16</td>
7729 <td> </td>
7730 <td>
7731 # # recv_result(?)
7732
7733  
7734 </td>
7735 <td>
7736 <b></b>
7737  
7738 </td>
7739 </tr>
7740 </table>
7741
7742 <h4>
7743 <a name="S4434"></a>ORIGIN: SERVER;
7744 MESSAGE: set_quiet</h4>
7745 NUMERIC TYPE (hex): 4434<p>
7746 <p>Sets (or clears) the quiet flag on a game.</p>
7747 </p>
7748 <table border="1" width="100%">
7749 <tr>
7750 <th width="10%">NAME</th>
7751 <th width="8%">TYPE</th>
7752 <th width="4%">VALUE</th>
7753 <th>DESCRIPTION</th>
7754 <th width="10%">GUARD</th>
7755 </tr>
7756 <tr>
7757 <td>channel</td>
7758 <td>U16</td>
7759 <td> </td>
7760 <td>
7761
7762  
7763 </td>
7764 <td>
7765 <b></b>
7766  
7767 </td>
7768 </tr>
7769 <tr>
7770 <td>quiet</td>
7771 <td>flag</td>
7772 <td> </td>
7773 <td>
7774
7775  
7776 </td>
7777 <td>
7778 <b></b>
7779  
7780 </td>
7781 </tr>
7782 </table>
7783
7784 <h4>
7785 <a name="S4437"></a>ORIGIN: SERVER;
7786 MESSAGE: set_gametime</h4>
7787 NUMERIC TYPE (hex): 4437<p>
7788 <p>Sent when joining a running game. Gives the remaining time +
7789 periods/moves for the players, to correctly initialize the clocks.</p>
7790 </p>
7791 <table border="1" width="100%">
7792 <tr>
7793 <th width="10%">NAME</th>
7794 <th width="8%">TYPE</th>
7795 <th width="4%">VALUE</th>
7796 <th>DESCRIPTION</th>
7797 <th width="10%">GUARD</th>
7798 </tr>
7799 <tr>
7800 <td>channel</td>
7801 <td>U16</td>
7802 <td> </td>
7803 <td>
7804
7805  
7806 </td>
7807 <td>
7808 <b></b>
7809  
7810 </td>
7811 </tr>
7812 <tr>
7813 <td>black_time</td>
7814 <td>time</td>
7815 <td> </td>
7816 <td>
7817
7818  
7819 </td>
7820 <td>
7821 <b></b>
7822  
7823 </td>
7824 </tr>
7825 <tr>
7826 <td>black_moves</td>
7827 <td>U16</td>
7828 <td> </td>
7829 <td>
7830
7831  
7832 </td>
7833 <td>
7834 <b></b>
7835  
7836 </td>
7837 </tr>
7838 <tr>
7839 <td>white_time</td>
7840 <td>time</td>
7841 <td> </td>
7842 <td>
7843
7844  
7845 </td>
7846 <td>
7847 <b></b>
7848  
7849 </td>
7850 </tr>
7851 <tr>
7852 <td>white_moves</td>
7853 <td>U16</td>
7854 <td> </td>
7855 <td>
7856
7857  
7858 </td>
7859 <td>
7860 <b></b>
7861  
7862 </td>
7863 </tr>
7864 </table>
7865
7866 <h4>
7867 <a name="S443b"></a>ORIGIN: SERVER;
7868 MESSAGE: del_global_challenge</h4>
7869 NUMERIC TYPE (hex): 443b<p>
7870 <p>
7871 Remove a game from the global challenge list (open game list).
7872 </p>
7873 </p>
7874 <table border="1" width="100%">
7875 <tr>
7876 <th width="10%">NAME</th>
7877 <th width="8%">TYPE</th>
7878 <th width="4%">VALUE</th>
7879 <th>DESCRIPTION</th>
7880 <th width="10%">GUARD</th>
7881 </tr>
7882 <tr>
7883 <td>channel</td>
7884 <td>U16</td>
7885 <td> </td>
7886 <td>
7887
7888  
7889 </td>
7890 <td>
7891 <b></b>
7892  
7893 </td>
7894 </tr>
7895 <tr>
7896 <td>game</td>
7897 <td>U16</td>
7898 <td> </td>
7899 <td>
7900
7901  
7902 </td>
7903 <td>
7904 <b></b>
7905  
7906 </td>
7907 </tr>
7908 </table>
7909 </body>
7910 </html>