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