ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.66
Committed: Sun May 30 07:24:03 2004 UTC (20 years ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.65: +2 -2 lines
Log Message:
*** empty log message ***

File Contents

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