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