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