ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.62
Committed: Sun May 30 03:24:47 2004 UTC (20 years ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.61: +7 -6 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.61 $</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 <p>Used by the client to claim a win.</p>
2602 </p>
2603 <table border="1" width="100%">
2604 <tr>
2605 <th width="10%">NAME</th>
2606 <th width="8%">TYPE</th>
2607 <th width="4%">VALUE</th>
2608 <th>DESCRIPTION</th>
2609 <th width="10%">GUARD</th>
2610 </tr>
2611 <tr>
2612 <td>channel</td>
2613 <td>U16</td>
2614 <td> </td>
2615 <td>
2616
2617  
2618 </td>
2619 <td>
2620 <b></b>
2621  
2622 </td>
2623 </tr>
2624 <tr>
2625 <td>player</td>
2626 <td>U8 </td>
2627 <td> </td>
2628 <td>
2629
2630  
2631 </td>
2632 <td>
2633 <b></b>
2634  
2635 </td>
2636 </tr>
2637 </table>
2638
2639 <h4>
2640 <a name="C440d"></a>ORIGIN: CLIENT;
2641 MESSAGE: add_time</h4>
2642 NUMERIC TYPE (hex): 440d<p>
2643 Not checked.
2644
2645 </p>
2646 <table border="1" width="100%">
2647 <tr>
2648 <th width="10%">NAME</th>
2649 <th width="8%">TYPE</th>
2650 <th width="4%">VALUE</th>
2651 <th>DESCRIPTION</th>
2652 <th width="10%">GUARD</th>
2653 </tr>
2654 <tr>
2655 <td>channel</td>
2656 <td>U16</td>
2657 <td> </td>
2658 <td>
2659
2660  
2661 </td>
2662 <td>
2663 <b></b>
2664  
2665 </td>
2666 </tr>
2667 <tr>
2668 <td>time</td>
2669 <td>U32</td>
2670 <td> </td>
2671 <td>
2672
2673  
2674 </td>
2675 <td>
2676 <b></b>
2677  
2678 </td>
2679 </tr>
2680 <tr>
2681 <td>player</td>
2682 <td>U8</td>
2683 <td> </td>
2684 <td>
2685
2686  
2687 </td>
2688 <td>
2689 <b></b>
2690  
2691 </td>
2692 </tr>
2693 </table>
2694
2695 <h4>
2696 <a name="C440e"></a>ORIGIN: CLIENT;
2697 MESSAGE: req_undo</h4>
2698 NUMERIC TYPE (hex): 440e<p>
2699 </p>
2700 <table border="1" width="100%">
2701 <tr>
2702 <th width="10%">NAME</th>
2703 <th width="8%">TYPE</th>
2704 <th width="4%">VALUE</th>
2705 <th>DESCRIPTION</th>
2706 <th width="10%">GUARD</th>
2707 </tr>
2708 <tr>
2709 <td>channel</td>
2710 <td>U16</td>
2711 <td> </td>
2712 <td>
2713
2714  
2715 </td>
2716 <td>
2717 <b></b>
2718  
2719 </td>
2720 </tr>
2721 </table>
2722
2723 <h4>
2724 <a name="C440f"></a>ORIGIN: CLIENT;
2725 MESSAGE: grant_undo</h4>
2726 NUMERIC TYPE (hex): 440f<p>
2727 Can be send after a req_undo message was received to grant the undo.
2728 </p>
2729 <table border="1" width="100%">
2730 <tr>
2731 <th width="10%">NAME</th>
2732 <th width="8%">TYPE</th>
2733 <th width="4%">VALUE</th>
2734 <th>DESCRIPTION</th>
2735 <th width="10%">GUARD</th>
2736 </tr>
2737 <tr>
2738 <td>channel</td>
2739 <td>U16</td>
2740 <td> </td>
2741 <td>
2742
2743  
2744 </td>
2745 <td>
2746 <b></b>
2747  
2748 </td>
2749 </tr>
2750 </table>
2751
2752 <h4>
2753 <a name="C4410"></a>ORIGIN: CLIENT;
2754 MESSAGE: resign_game</h4>
2755 NUMERIC TYPE (hex): 4410<p>
2756 Resign the game.
2757 </p>
2758 <table border="1" width="100%">
2759 <tr>
2760 <th width="10%">NAME</th>
2761 <th width="8%">TYPE</th>
2762 <th width="4%">VALUE</th>
2763 <th>DESCRIPTION</th>
2764 <th width="10%">GUARD</th>
2765 </tr>
2766 <tr>
2767 <td>channel</td>
2768 <td>U16</td>
2769 <td> </td>
2770 <td>
2771
2772  
2773 </td>
2774 <td>
2775 <b></b>
2776  
2777 </td>
2778 </tr>
2779 <tr>
2780 <td>player</td>
2781 <td>U8</td>
2782 <td> </td>
2783 <td>
2784
2785  
2786 </td>
2787 <td>
2788 <b></b>
2789  
2790 </td>
2791 </tr>
2792 </table>
2793
2794 <h4>
2795 <a name="C441a"></a>ORIGIN: CLIENT;
2796 MESSAGE: set_teacher</h4>
2797 NUMERIC TYPE (hex): 441a<p>
2798 <p>Change the teacher to somebody else (or possibly yourself == take it). If the
2799 name is empty, the game will continue normally.</p>
2800 </p>
2801 <table border="1" width="100%">
2802 <tr>
2803 <th width="10%">NAME</th>
2804 <th width="8%">TYPE</th>
2805 <th width="4%">VALUE</th>
2806 <th>DESCRIPTION</th>
2807 <th width="10%">GUARD</th>
2808 </tr>
2809 <tr>
2810 <td>channel</td>
2811 <td>U16</td>
2812 <td> </td>
2813 <td>
2814
2815  
2816 </td>
2817 <td>
2818 <b></b>
2819  
2820 </td>
2821 </tr>
2822 <tr>
2823 <td>name</td>
2824 <td>username</td>
2825 <td> </td>
2826 <td>
2827
2828  
2829 </td>
2830 <td>
2831 <b></b>
2832  
2833 </td>
2834 </tr>
2835 </table>
2836
2837 <h4>
2838 <a name="C4422"></a>ORIGIN: CLIENT;
2839 MESSAGE: allow_user</h4>
2840 NUMERIC TYPE (hex): 4422<p>
2841 <p>Unclear. Maybe allow users to talk? No idea, really.</p>
2842 </p>
2843 <table border="1" width="100%">
2844 <tr>
2845 <th width="10%">NAME</th>
2846 <th width="8%">TYPE</th>
2847 <th width="4%">VALUE</th>
2848 <th>DESCRIPTION</th>
2849 <th width="10%">GUARD</th>
2850 </tr>
2851 <tr>
2852 <td>channel</td>
2853 <td>U16</td>
2854 <td> </td>
2855 <td>
2856
2857  
2858 </td>
2859 <td>
2860 <b></b>
2861  
2862 </td>
2863 </tr>
2864 <tr>
2865 <td>othername</td>
2866 <td>username</td>
2867 <td> </td>
2868 <td>
2869
2870  
2871 </td>
2872 <td>
2873 <b></b>
2874  
2875 </td>
2876 </tr>
2877 <tr>
2878 <td>name</td>
2879 <td>username</td>
2880 <td> </td>
2881 <td>; # gives user access to the game (to what? ;)
2882
2883  
2884 </td>
2885 <td>
2886 <b></b>
2887  
2888 </td>
2889 </tr>
2890 </table>
2891
2892 <h4>
2893 <a name="C4423"></a>ORIGIN: CLIENT;
2894 MESSAGE: set_privacy</h4>
2895 NUMERIC TYPE (hex): 4423<p>
2896 Probably sets the "quiet" flag. Not checked.
2897 </p>
2898 <table border="1" width="100%">
2899 <tr>
2900 <th width="10%">NAME</th>
2901 <th width="8%">TYPE</th>
2902 <th width="4%">VALUE</th>
2903 <th>DESCRIPTION</th>
2904 <th width="10%">GUARD</th>
2905 </tr>
2906 <tr>
2907 <td>channel</td>
2908 <td>U16</td>
2909 <td> </td>
2910 <td>
2911
2912  
2913 </td>
2914 <td>
2915 <b></b>
2916  
2917 </td>
2918 </tr>
2919 <tr>
2920 <td>private</td>
2921 <td>flag</td>
2922 <td> </td>
2923 <td>
2924
2925  
2926 </td>
2927 <td>
2928 <b></b>
2929  
2930 </td>
2931 </tr>
2932 </table>
2933
2934 <h4>
2935 <a name="C4427"></a>ORIGIN: CLIENT;
2936 MESSAGE: game_move</h4>
2937 NUMERIC TYPE (hex): 4427<p>
2938 <p>Only during playing, moves.</p>
2939 </p>
2940 <table border="1" width="100%">
2941 <tr>
2942 <th width="10%">NAME</th>
2943 <th width="8%">TYPE</th>
2944 <th width="4%">VALUE</th>
2945 <th>DESCRIPTION</th>
2946 <th width="10%">GUARD</th>
2947 </tr>
2948 <tr>
2949 <td>channel</td>
2950 <td>U16</td>
2951 <td> </td>
2952 <td>
2953
2954  
2955 </td>
2956 <td>
2957 <b></b>
2958  
2959 </td>
2960 </tr>
2961 <tr>
2962 <td>x</td>
2963 <td>U8</td>
2964 <td> </td>
2965 <td>
2966
2967  
2968 </td>
2969 <td>
2970 <b></b>
2971  
2972 </td>
2973 </tr>
2974 <tr>
2975 <td>y</td>
2976 <td>U8</td>
2977 <td> </td>
2978 <td>
2979
2980  
2981 </td>
2982 <td>
2983 <b></b>
2984  
2985 </td>
2986 </tr>
2987 </table>
2988
2989 <h4>
2990 <a name="C4429"></a>ORIGIN: CLIENT;
2991 MESSAGE: reject_challenge</h4>
2992 NUMERIC TYPE (hex): 4429<p>
2993 Reject a challenge from a given user. Not checked.
2994
2995 </p>
2996 <table border="1" width="100%">
2997 <tr>
2998 <th width="10%">NAME</th>
2999 <th width="8%">TYPE</th>
3000 <th width="4%">VALUE</th>
3001 <th>DESCRIPTION</th>
3002 <th width="10%">GUARD</th>
3003 </tr>
3004 <tr>
3005 <td>channel</td>
3006 <td>U16</td>
3007 <td> </td>
3008 <td>
3009
3010  
3011 </td>
3012 <td>
3013 <b></b>
3014  
3015 </td>
3016 </tr>
3017 <tr>
3018 <td>name</td>
3019 <td>username</td>
3020 <td> </td>
3021 <td>
3022
3023  
3024 </td>
3025 <td>
3026 <b></b>
3027  
3028 </td>
3029 </tr>
3030 <tr>
3031 <td>gametype</td>
3032 <td>U8</td>
3033 <td> </td>
3034 <td>
3035
3036  
3037 </td>
3038 <td>
3039 <b></b>
3040  
3041 </td>
3042 </tr>
3043 <tr>
3044 <td>cid</td>
3045 <td>CLIENTID8</td>
3046 <td> </td>
3047 <td>
3048
3049  
3050 </td>
3051 <td>
3052 <b></b>
3053  
3054 </td>
3055 </tr>
3056 <tr>
3057 <td>rules</td>
3058 <td>rules</td>
3059 <td> </td>
3060 <td>
3061
3062  
3063 </td>
3064 <td>
3065 <b></b>
3066  
3067 </td>
3068 </tr>
3069 </table>
3070
3071 <h4>
3072 <a name="C442e"></a>ORIGIN: CLIENT;
3073 MESSAGE: save_game</h4>
3074 NUMERIC TYPE (hex): 442e<p>
3075 <p>Is send when a game is closed and should be saved on the gamerecord.</p>
3076 </p>
3077 <table border="1" width="100%">
3078 <tr>
3079 <th width="10%">NAME</th>
3080 <th width="8%">TYPE</th>
3081 <th width="4%">VALUE</th>
3082 <th>DESCRIPTION</th>
3083 <th width="10%">GUARD</th>
3084 </tr>
3085 <tr>
3086 <td>channel</td>
3087 <td>U16</td>
3088 <td> </td>
3089 <td>
3090
3091  
3092 </td>
3093 <td>
3094 <b></b>
3095  
3096 </td>
3097 </tr>
3098 </table>
3099
3100 <h4>
3101 <a name="C4433"></a>ORIGIN: CLIENT;
3102 MESSAGE: req_result</h4>
3103 NUMERIC TYPE (hex): 4433<p>
3104 I forgot.
3105
3106 </p>
3107 <table border="1" width="100%">
3108 <tr>
3109 <th width="10%">NAME</th>
3110 <th width="8%">TYPE</th>
3111 <th width="4%">VALUE</th>
3112 <th>DESCRIPTION</th>
3113 <th width="10%">GUARD</th>
3114 </tr>
3115 <tr>
3116 <td>channel</td>
3117 <td>U16</td>
3118 <td> </td>
3119 <td>
3120
3121  
3122 </td>
3123 <td>
3124 <b></b>
3125  
3126 </td>
3127 </tr>
3128 </table>
3129
3130 <h4>
3131 <a name="C4434"></a>ORIGIN: CLIENT;
3132 MESSAGE: set_quiet</h4>
3133 NUMERIC TYPE (hex): 4434<p>
3134 <p>Sets (or clears) the quiet flag on a game.</p>
3135 </p>
3136 <table border="1" width="100%">
3137 <tr>
3138 <th width="10%">NAME</th>
3139 <th width="8%">TYPE</th>
3140 <th width="4%">VALUE</th>
3141 <th>DESCRIPTION</th>
3142 <th width="10%">GUARD</th>
3143 </tr>
3144 <tr>
3145 <td>channel</td>
3146 <td>U16</td>
3147 <td> </td>
3148 <td>
3149
3150  
3151 </td>
3152 <td>
3153 <b></b>
3154  
3155 </td>
3156 </tr>
3157 <tr>
3158 <td>quiet</td>
3159 <td>flag</td>
3160 <td> </td>
3161 <td>
3162
3163  
3164 </td>
3165 <td>
3166 <b></b>
3167  
3168 </td>
3169 </tr>
3170 </table>
3171
3172 <h4>
3173 <a name="C4436"></a>ORIGIN: CLIENT;
3174 MESSAGE: msg_game</h4>
3175 NUMERIC TYPE (hex): 4436<p>
3176 </p>
3177 <table border="1" width="100%">
3178 <tr>
3179 <th width="10%">NAME</th>
3180 <th width="8%">TYPE</th>
3181 <th width="4%">VALUE</th>
3182 <th>DESCRIPTION</th>
3183 <th width="10%">GUARD</th>
3184 </tr>
3185 <tr>
3186 <td>channel</td>
3187 <td>U16</td>
3188 <td> </td>
3189 <td>
3190
3191  
3192 </td>
3193 <td>
3194 <b></b>
3195  
3196 </td>
3197 </tr>
3198 <tr>
3199 <td>message</td>
3200 <td>STRING</td>
3201 <td> </td>
3202 <td>
3203
3204  
3205 </td>
3206 <td>
3207 <b></b>
3208  
3209 </td>
3210 </tr>
3211 </table>
3212
3213 <h4>
3214 <a name="Cffff"></a>ORIGIN: CLIENT;
3215 MESSAGE: quit</h4>
3216 NUMERIC TYPE (hex): ffff<p>
3217 <p>Sent by the client just before it logs out.</p>
3218 </p>
3219 <table border="1" width="100%">
3220 <tr>
3221 <th width="10%">NAME</th>
3222 <th width="8%">TYPE</th>
3223 <th width="4%">VALUE</th>
3224 <th>DESCRIPTION</th>
3225 <th width="10%">GUARD</th>
3226 </tr>
3227 </table>
3228
3229 <h2>Structs mainly used in messages send by the server</h2>
3230
3231 <h4>STRUCTURE challenge_defaults</h4>
3232 <p>
3233 Send soon after log-in to set the defaults for game challenges.
3234 </p>
3235 <table border="1" width="100%">
3236 <tr>
3237 <th width="10%">NAME</th>
3238 <th width="8%">TYPE</th>
3239 <th width="4%">VALUE</th>
3240 <th>DESCRIPTION</th>
3241 <th width="10%">GUARD</th>
3242 </tr>
3243 <tr>
3244 <td>gametype</td>
3245 <td>U8</td>
3246 <td> </td>
3247 <td>
3248
3249  
3250 </td>
3251 <td>
3252 <b></b>
3253  
3254 </td>
3255 </tr>
3256 <tr>
3257 <td>ruleset</td>
3258 <td>U8</td>
3259 <td> </td>
3260 <td>
3261
3262  
3263 </td>
3264 <td>
3265 <b></b>
3266  
3267 </td>
3268 </tr>
3269 <tr>
3270 <td>size</td>
3271 <td>U32</td>
3272 <td> </td>
3273 <td>
3274
3275  
3276 </td>
3277 <td>
3278 <b></b>
3279  
3280 </td>
3281 </tr>
3282 <tr>
3283 <td>timesys</td>
3284 <td>U32</td>
3285 <td> </td>
3286 <td>
3287
3288  
3289 </td>
3290 <td>
3291 <b></b>
3292  
3293 </td>
3294 </tr>
3295 <tr>
3296 <td>time</td>
3297 <td>U32</td>
3298 <td> </td>
3299 <td>
3300
3301  
3302 </td>
3303 <td>
3304 <b></b>
3305  
3306 </td>
3307 </tr>
3308 <tr>
3309 <td>byo_time</td>
3310 <td>U32</td>
3311 <td> </td>
3312 <td>
3313
3314  
3315 </td>
3316 <td>
3317 <b></b>
3318  
3319 </td>
3320 </tr>
3321 <tr>
3322 <td>byo_periods</td>
3323 <td>U32</td>
3324 <td> </td>
3325 <td>
3326
3327  
3328 </td>
3329 <td>
3330 <b></b>
3331  
3332 </td>
3333 </tr>
3334 <tr>
3335 <td>can_time</td>
3336 <td>U32</td>
3337 <td> </td>
3338 <td>
3339
3340  
3341 </td>
3342 <td>
3343 <b></b>
3344  
3345 </td>
3346 </tr>
3347 <tr>
3348 <td>can_stones</td>
3349 <td>U32</td>
3350 <td> </td>
3351 <td>
3352
3353  
3354 </td>
3355 <td>
3356 <b></b>
3357  
3358 </td>
3359 </tr>
3360 <tr>
3361 <td>notes</td>
3362 <td>STRING</td>
3363 <td> </td>
3364 <td>
3365
3366  
3367 </td>
3368 <td>
3369 <b></b>
3370  
3371 </td>
3372 </tr>
3373 </table>
3374
3375 <h4>STRUCTURE game</h4>
3376 CLASS: KGS::Game<br />
3377 <p>
3378 Basic information about a game. Used in rooms for the gamelist and
3379 in games to detect when a game is saved, changed type (e.g. R =&gt; D)
3380 etc.
3381
3382 </p>
3383 <table border="1" width="100%">
3384 <tr>
3385 <th width="10%">NAME</th>
3386 <th width="8%">TYPE</th>
3387 <th width="4%">VALUE</th>
3388 <th>DESCRIPTION</th>
3389 <th width="10%">GUARD</th>
3390 </tr>
3391 <tr>
3392 <td>channel</td>
3393 <td>U16</td>
3394 <td> </td>
3395 <td>
3396
3397  
3398 </td>
3399 <td>
3400 <b></b>
3401  
3402 </td>
3403 </tr>
3404 <tr>
3405 <td>type</td>
3406 <td>U8</td>
3407 <td> </td>
3408 <td>
3409
3410  
3411 </td>
3412 <td>
3413 <b></b>
3414  
3415 </td>
3416 </tr>
3417 <tr>
3418 <td>black</td>
3419 <td>user</td>
3420 <td> </td>
3421 <td>
3422 White
3423
3424  
3425 </td>
3426 <td>
3427 <b></b>
3428  
3429 </td>
3430 </tr>
3431 <tr>
3432 <td>white</td>
3433 <td>user</td>
3434 <td> </td>
3435 <td>
3436 Black
3437
3438  
3439 </td>
3440 <td>
3441 <b></b>
3442  
3443 </td>
3444 </tr>
3445 <tr>
3446 <td>owner</td>
3447 <td>user</td>
3448 <td> </td>
3449 <td>
3450 Owner
3451
3452  
3453 </td>
3454 <td>
3455 <b></b>
3456  
3457 </td>
3458 </tr>
3459 <tr>
3460 <td>size</td>
3461 <td>U8</td>
3462 <td> </td>
3463 <td>
3464
3465  
3466 </td>
3467 <td>
3468 <b></b>
3469  
3470 </td>
3471 </tr>
3472 <tr>
3473 <td>handicap</td>
3474 <td>I8</td>
3475 <td> </td>
3476 <td>
3477 &lt; 0 not fully setup
3478
3479  
3480 </td>
3481 <td>
3482 <b></b>
3483  
3484 </td>
3485 </tr>
3486 <tr>
3487 <td>komi</td>
3488 <td>komi16</td>
3489 <td> </td>
3490 <td>
3491
3492  
3493 </td>
3494 <td>
3495 <b></b>
3496  
3497 </td>
3498 </tr>
3499 <tr>
3500 <td>moves</td>
3501 <td>I16</td>
3502 <td> </td>
3503 <td>
3504 This field reflects either the movenum or the score, sorry, not even guards help, as
3505 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
3506 score (NOT score16!) (arg²).
3507
3508  
3509 </td>
3510 <td>
3511 <b></b>
3512  
3513 </td>
3514 </tr>
3515 <tr>
3516 <td>flags</td>
3517 <td>U16</td>
3518 <td> </td>
3519 <td>
3520
3521  
3522 </td>
3523 <td>
3524 <b></b>
3525  
3526 </td>
3527 </tr>
3528 <tr>
3529 <td>observers</td>
3530 <td>U32</td>
3531 <td> </td>
3532 <td>
3533
3534  
3535 </td>
3536 <td>
3537 <b></b>
3538  
3539 </td>
3540 </tr>
3541 <tr>
3542 <td>saved</td>
3543 <td>flag</td>
3544 <td> </td>
3545 <td>
3546
3547  
3548 </td>
3549 <td>
3550 <b></b>
3551  
3552 </td>
3553 </tr>
3554 <tr>
3555 <td>notes</td>
3556 <td>STRING</td>
3557 <td> </td>
3558 <td>
3559
3560  
3561 </td>
3562 <td>
3563 <b>handicap</b> &lt; 0
3564  
3565 </td>
3566 </tr>
3567 </table>
3568
3569 <h4>STRUCTURE room_obs</h4>
3570 <p>
3571 Obsolete.
3572
3573 </p>
3574 <table border="1" width="100%">
3575 <tr>
3576 <th width="10%">NAME</th>
3577 <th width="8%">TYPE</th>
3578 <th width="4%">VALUE</th>
3579 <th>DESCRIPTION</th>
3580 <th width="10%">GUARD</th>
3581 </tr>
3582 <tr>
3583 <td>name</td>
3584 <td>roomname</td>
3585 <td> </td>
3586 <td>
3587
3588  
3589 </td>
3590 <td>
3591 <b></b>
3592  
3593 </td>
3594 </tr>
3595 <tr>
3596 <td>channel</td>
3597 <td>U16</td>
3598 <td> </td>
3599 <td>
3600
3601  
3602 </td>
3603 <td>
3604 <b></b>
3605  
3606 </td>
3607 </tr>
3608 <tr>
3609 <td>flags</td>
3610 <td>U32</td>
3611 <td> </td>
3612 <td>
3613
3614  
3615 </td>
3616 <td>
3617 <b></b>
3618  
3619 </td>
3620 </tr>
3621 <tr>
3622 <td>users</td>
3623 <td>U32</td>
3624 <td> </td>
3625 <td>
3626
3627  
3628 </td>
3629 <td>
3630 <b></b>
3631  
3632 </td>
3633 </tr>
3634 </table>
3635
3636 <h4>STRUCTURE room</h4>
3637 CLASS: KGS::Room<br />
3638 <p>
3639 </p>
3640 <table border="1" width="100%">
3641 <tr>
3642 <th width="10%">NAME</th>
3643 <th width="8%">TYPE</th>
3644 <th width="4%">VALUE</th>
3645 <th>DESCRIPTION</th>
3646 <th width="10%">GUARD</th>
3647 </tr>
3648 <tr>
3649 <td>channel</td>
3650 <td>U16</td>
3651 <td> </td>
3652 <td>
3653
3654  
3655 </td>
3656 <td>
3657 <b></b>
3658  
3659 </td>
3660 </tr>
3661 <tr>
3662 <td>flags</td>
3663 <td>U8</td>
3664 <td> </td>
3665 <td>
3666
3667  
3668 </td>
3669 <td>
3670 <b></b>
3671  
3672 </td>
3673 </tr>
3674 <tr>
3675 <td>group</td>
3676 <td>U8</td>
3677 <td> </td>
3678 <td>
3679
3680  
3681 </td>
3682 <td>
3683 <b></b>
3684  
3685 </td>
3686 </tr>
3687 <tr>
3688 <td>users</td>
3689 <td>U16</td>
3690 <td> </td>
3691 <td>
3692
3693  
3694 </td>
3695 <td>
3696 <b></b>
3697  
3698 </td>
3699 </tr>
3700 <tr>
3701 <td>games</td>
3702 <td>U16</td>
3703 <td> </td>
3704 <td>
3705
3706  
3707 </td>
3708 <td>
3709 <b></b>
3710  
3711 </td>
3712 </tr>
3713 <tr>
3714 <td>name</td>
3715 <td>STRING</td>
3716 <td> </td>
3717 <td>
3718
3719  
3720 </td>
3721 <td>
3722 <b></b>
3723  
3724 </td>
3725 </tr>
3726 </table>
3727
3728 <h4>STRUCTURE scorevalues</h4>
3729 CLASS: KGS::Score<br />
3730 <p>
3731 </p>
3732 <table border="1" width="100%">
3733 <tr>
3734 <th width="10%">NAME</th>
3735 <th width="8%">TYPE</th>
3736 <th width="4%">VALUE</th>
3737 <th>DESCRIPTION</th>
3738 <th width="10%">GUARD</th>
3739 </tr>
3740 <tr>
3741 <td>score</td>
3742 <td>score32</td>
3743 <td> </td>
3744 <td>
3745
3746  
3747 </td>
3748 <td>
3749 <b></b>
3750  
3751 </td>
3752 </tr>
3753 <tr>
3754 <td>territory</td>
3755 <td>U32</td>
3756 <td> </td>
3757 <td>
3758
3759  
3760 </td>
3761 <td>
3762 <b></b>
3763  
3764 </td>
3765 </tr>
3766 <tr>
3767 <td>captures</td>
3768 <td>U32</td>
3769 <td> </td>
3770 <td>
3771
3772  
3773 </td>
3774 <td>
3775 <b></b>
3776  
3777 </td>
3778 </tr>
3779 <tr>
3780 <td>i3</td>
3781 <td>U32</td>
3782 <td> </td>
3783 <td>
3784
3785  
3786 </td>
3787 <td>
3788 <b></b>
3789  
3790 </td>
3791 </tr>
3792 <tr>
3793 <td>f2</td>
3794 <td>U32</td>
3795 <td> </td>
3796 <td>
3797
3798  
3799 </td>
3800 <td>
3801 <b></b>
3802  
3803 </td>
3804 </tr>
3805 <tr>
3806 <td>komi</td>
3807 <td>komi324</td>
3808 <td> </td>
3809 <td>
3810
3811  
3812 </td>
3813 <td>
3814 <b></b>
3815  
3816 </td>
3817 </tr>
3818 <tr>
3819 <td>i4</td>
3820 <td>U32</td>
3821 <td> </td>
3822 <td>
3823 Apparently the i3, f2, i4 are zero.
3824
3825  
3826 </td>
3827 <td>
3828 <b></b>
3829  
3830 </td>
3831 </tr>
3832 </table>
3833
3834 <h4>STRUCTURE game_record</h4>
3835 CLASS: KGS::GameRecord<br />
3836 <p>
3837 <p>A single game record entry, as seen in <a href="#S0008">userinfo(0008)</a>.</p>
3838 </p>
3839 <table border="1" width="100%">
3840 <tr>
3841 <th width="10%">NAME</th>
3842 <th width="8%">TYPE</th>
3843 <th width="4%">VALUE</th>
3844 <th>DESCRIPTION</th>
3845 <th width="10%">GUARD</th>
3846 </tr>
3847 <tr>
3848 <td>timestamp</td>
3849 <td>timestamp</td>
3850 <td> </td>
3851 <td>
3852 Time this game was played.
3853
3854  
3855 </td>
3856 <td>
3857 <b></b>
3858  
3859 </td>
3860 </tr>
3861 <tr>
3862 <td>flags1</td>
3863 <td>U8</td>
3864 <td> </td>
3865 <td>
3866
3867  
3868 </td>
3869 <td>
3870 <b></b>
3871  
3872 </td>
3873 </tr>
3874 <tr>
3875 <td>black</td>
3876 <td>user</td>
3877 <td> </td>
3878 <td>
3879 White, flags contain low 8 bits of revision (bits 16-23).
3880
3881  
3882 </td>
3883 <td>
3884 <b></b>
3885  
3886 </td>
3887 </tr>
3888 <tr>
3889 <td>white</td>
3890 <td>user</td>
3891 <td> </td>
3892 <td>
3893 Black, flags contain high 8 bits of revision (bits 16-23).
3894
3895  
3896 </td>
3897 <td>
3898 <b></b>
3899  
3900 </td>
3901 </tr>
3902 <tr>
3903 <td>owner</td>
3904 <td>user</td>
3905 <td> </td>
3906 <td>
3907
3908
3909  
3910 </td>
3911 <td>
3912 <b></b>
3913  
3914 </td>
3915 </tr>
3916 <tr>
3917 <td>flags2</td>
3918 <td>U16</td>
3919 <td> </td>
3920 <td>
3921
3922  
3923 </td>
3924 <td>
3925 <b></b>
3926  
3927 </td>
3928 </tr>
3929 <tr>
3930 <td>score</td>
3931 <td>score16</td>
3932 <td> </td>
3933 <td>
3934
3935  
3936 </td>
3937 <td>
3938 <b></b>
3939  
3940 </td>
3941 </tr>
3942 <tr>
3943 <td>flags3</td>
3944 <td>U8</td>
3945 <td> </td>
3946 <td>
3947
3948
3949  
3950 </td>
3951 <td>
3952 <b></b>
3953  
3954 </td>
3955 </tr>
3956 </table>
3957
3958 <h2>Server-generated messages</h2>
3959
3960 <h4>
3961 <a name="S0001"></a>ORIGIN: SERVER;
3962 MESSAGE: login</h4>
3963 NUMERIC TYPE (hex): 0001
3964 (possibly in response to
3965 <a href="#C0000">login(0000)</a>
3966 )
3967 <p>
3968 </p>
3969 <table border="1" width="100%">
3970 <tr>
3971 <th width="10%">NAME</th>
3972 <th width="8%">TYPE</th>
3973 <th width="4%">VALUE</th>
3974 <th>DESCRIPTION</th>
3975 <th width="10%">GUARD</th>
3976 </tr>
3977 <tr>
3978 <td>message</td>
3979 <td>CONSTANT</td>
3980 <td>login successful </td>
3981 <td>
3982
3983  
3984 </td>
3985 <td>
3986 <b></b>
3987  
3988 </td>
3989 </tr>
3990 <tr>
3991 <td>success</td>
3992 <td>CONSTANT</td>
3993 <td>1 </td>
3994 <td>
3995
3996  
3997 </td>
3998 <td>
3999 <b></b>
4000  
4001 </td>
4002 </tr>
4003 </table>
4004
4005 <h4>
4006 <a name="S0002"></a>ORIGIN: SERVER;
4007 MESSAGE: login</h4>
4008 NUMERIC TYPE (hex): 0002
4009 (possibly in response to
4010 <a href="#C0000">login(0000)</a>
4011 )
4012 <p>
4013 </p>
4014 <table border="1" width="100%">
4015 <tr>
4016 <th width="10%">NAME</th>
4017 <th width="8%">TYPE</th>
4018 <th width="4%">VALUE</th>
4019 <th>DESCRIPTION</th>
4020 <th width="10%">GUARD</th>
4021 </tr>
4022 <tr>
4023 <td>message</td>
4024 <td>CONSTANT</td>
4025 <td>login successful: client version is outdated. </td>
4026 <td>
4027
4028  
4029 </td>
4030 <td>
4031 <b></b>
4032  
4033 </td>
4034 </tr>
4035 <tr>
4036 <td>success</td>
4037 <td>CONSTANT</td>
4038 <td>1 </td>
4039 <td>
4040
4041  
4042 </td>
4043 <td>
4044 <b></b>
4045  
4046 </td>
4047 </tr>
4048 </table>
4049
4050 <h4>
4051 <a name="S0003"></a>ORIGIN: SERVER;
4052 MESSAGE: login</h4>
4053 NUMERIC TYPE (hex): 0003
4054 (possibly in response to
4055 <a href="#C0000">login(0000)</a>
4056 )
4057 <p>
4058 </p>
4059 <table border="1" width="100%">
4060 <tr>
4061 <th width="10%">NAME</th>
4062 <th width="8%">TYPE</th>
4063 <th width="4%">VALUE</th>
4064 <th>DESCRIPTION</th>
4065 <th width="10%">GUARD</th>
4066 </tr>
4067 <tr>
4068 <td>message</td>
4069 <td>CONSTANT</td>
4070 <td>login failed: client version out of date </td>
4071 <td>
4072 ** maybe more following? **
4073
4074  
4075 </td>
4076 <td>
4077 <b></b>
4078  
4079 </td>
4080 </tr>
4081 </table>
4082
4083 <h4>
4084 <a name="S0004"></a>ORIGIN: SERVER;
4085 MESSAGE: login</h4>
4086 NUMERIC TYPE (hex): 0004
4087 (possibly in response to
4088 <a href="#C0000">login(0000)</a>
4089 )
4090 <p>
4091 </p>
4092 <table border="1" width="100%">
4093 <tr>
4094 <th width="10%">NAME</th>
4095 <th width="8%">TYPE</th>
4096 <th width="4%">VALUE</th>
4097 <th>DESCRIPTION</th>
4098 <th width="10%">GUARD</th>
4099 </tr>
4100 <tr>
4101 <td>message</td>
4102 <td>CONSTANT</td>
4103 <td>login failed: wrong password </td>
4104 <td>
4105 ** maybe more following? **
4106
4107  
4108 </td>
4109 <td>
4110 <b></b>
4111  
4112 </td>
4113 </tr>
4114 </table>
4115
4116 <h4>
4117 <a name="S0005"></a>ORIGIN: SERVER;
4118 MESSAGE: login</h4>
4119 NUMERIC TYPE (hex): 0005
4120 (possibly in response to
4121 <a href="#C0000">login(0000)</a>
4122 )
4123 <p>
4124 </p>
4125 <table border="1" width="100%">
4126 <tr>
4127 <th width="10%">NAME</th>
4128 <th width="8%">TYPE</th>
4129 <th width="4%">VALUE</th>
4130 <th>DESCRIPTION</th>
4131 <th width="10%">GUARD</th>
4132 </tr>
4133 <tr>
4134 <td>message</td>
4135 <td>CONSTANT</td>
4136 <td>login failed: specified user does not exist </td>
4137 <td>
4138
4139  
4140 </td>
4141 <td>
4142 <b></b>
4143  
4144 </td>
4145 </tr>
4146 </table>
4147
4148 <h4>
4149 <a name="S0006"></a>ORIGIN: SERVER;
4150 MESSAGE: login</h4>
4151 NUMERIC TYPE (hex): 0006
4152 (possibly in response to
4153 <a href="#C0000">login(0000)</a>
4154 )
4155 <p>
4156 </p>
4157 <table border="1" width="100%">
4158 <tr>
4159 <th width="10%">NAME</th>
4160 <th width="8%">TYPE</th>
4161 <th width="4%">VALUE</th>
4162 <th>DESCRIPTION</th>
4163 <th width="10%">GUARD</th>
4164 </tr>
4165 <tr>
4166 <td>message</td>
4167 <td>CONSTANT</td>
4168 <td>login failed: user of same name logged in </td>
4169 <td>
4170
4171  
4172 </td>
4173 <td>
4174 <b></b>
4175  
4176 </td>
4177 </tr>
4178 </table>
4179
4180 <h4>
4181 <a name="S0008"></a>ORIGIN: SERVER;
4182 MESSAGE: userinfo</h4>
4183 NUMERIC TYPE (hex): 0008
4184 (possibly in response to
4185 <a href="#C0007">req_userinfo(0007)</a>
4186 )
4187 <p>
4188 User info.
4189 </p>
4190 <table border="1" width="100%">
4191 <tr>
4192 <th width="10%">NAME</th>
4193 <th width="8%">TYPE</th>
4194 <th width="4%">VALUE</th>
4195 <th>DESCRIPTION</th>
4196 <th width="10%">GUARD</th>
4197 </tr>
4198 <tr>
4199 <td>_unused0</td>
4200 <td>flag</td>
4201 <td> </td>
4202 <td>
4203
4204  
4205 </td>
4206 <td>
4207 <b></b>
4208  
4209 </td>
4210 </tr>
4211 <tr>
4212 <td>user</td>
4213 <td>user</td>
4214 <td> </td>
4215 <td>
4216
4217  
4218 </td>
4219 <td>
4220 <b></b>
4221  
4222 </td>
4223 </tr>
4224 <tr>
4225 <td>_unused1</td>
4226 <td>U64</td>
4227 <td> </td>
4228 <td>
4229
4230  
4231 </td>
4232 <td>
4233 <b></b>
4234  
4235 </td>
4236 </tr>
4237 <tr>
4238 <td>realname</td>
4239 <td>realname</td>
4240 <td> </td>
4241 <td>
4242
4243  
4244 </td>
4245 <td>
4246 <b></b>
4247  
4248 </td>
4249 </tr>
4250 <tr>
4251 <td>email</td>
4252 <td>email</td>
4253 <td> </td>
4254 <td>
4255
4256  
4257 </td>
4258 <td>
4259 <b></b>
4260  
4261 </td>
4262 </tr>
4263 <tr>
4264 <td>info</td>
4265 <td>userinfo</td>
4266 <td> </td>
4267 <td>
4268
4269  
4270 </td>
4271 <td>
4272 <b></b>
4273  
4274 </td>
4275 </tr>
4276 <tr>
4277 <td>homepage</td>
4278 <td>url</td>
4279 <td> </td>
4280 <td>
4281
4282  
4283 </td>
4284 <td>
4285 <b></b>
4286  
4287 </td>
4288 </tr>
4289 <tr>
4290 <td>regdate</td>
4291 <td>timestamp</td>
4292 <td> </td>
4293 <td>
4294 When the user registered (0 == never registered).
4295
4296  
4297 </td>
4298 <td>
4299 <b></b>
4300  
4301 </td>
4302 </tr>
4303 <tr>
4304 <td>lastlogin</td>
4305 <td>timestamp</td>
4306 <td> </td>
4307 <td>
4308 When the user logged in for the last time.
4309
4310  
4311 </td>
4312 <td>
4313 <b></b>
4314  
4315 </td>
4316 </tr>
4317 </table>
4318
4319 <h4>
4320 <a name="S0009"></a>ORIGIN: SERVER;
4321 MESSAGE: upd_userinfo_result</h4>
4322 NUMERIC TYPE (hex): 0009<p>
4323 </p>
4324 <table border="1" width="100%">
4325 <tr>
4326 <th width="10%">NAME</th>
4327 <th width="8%">TYPE</th>
4328 <th width="4%">VALUE</th>
4329 <th>DESCRIPTION</th>
4330 <th width="10%">GUARD</th>
4331 </tr>
4332 <tr>
4333 <td>name</td>
4334 <td>username</td>
4335 <td> </td>
4336 <td>
4337
4338  
4339 </td>
4340 <td>
4341 <b></b>
4342  
4343 </td>
4344 </tr>
4345 <tr>
4346 <td>message</td>
4347 <td>CONSTANT</td>
4348 <td>Thanks for registering. </td>
4349 <td>
4350
4351  
4352 </td>
4353 <td>
4354 <b></b>
4355  
4356 </td>
4357 </tr>
4358 </table>
4359
4360 <h4>
4361 <a name="S000a"></a>ORIGIN: SERVER;
4362 MESSAGE: upd_userinfo_result</h4>
4363 NUMERIC TYPE (hex): 000a<p>
4364 </p>
4365 <table border="1" width="100%">
4366 <tr>
4367 <th width="10%">NAME</th>
4368 <th width="8%">TYPE</th>
4369 <th width="4%">VALUE</th>
4370 <th>DESCRIPTION</th>
4371 <th width="10%">GUARD</th>
4372 </tr>
4373 <tr>
4374 <td>name</td>
4375 <td>username</td>
4376 <td> </td>
4377 <td>
4378
4379  
4380 </td>
4381 <td>
4382 <b></b>
4383  
4384 </td>
4385 </tr>
4386 <tr>
4387 <td>message</td>
4388 <td>CONSTANT</td>
4389 <td>The user "%s" has been successfully updated. </td>
4390 <td>
4391
4392  
4393 </td>
4394 <td>
4395 <b></b>
4396  
4397 </td>
4398 </tr>
4399 </table>
4400
4401 <h4>
4402 <a name="S000b"></a>ORIGIN: SERVER;
4403 MESSAGE: upd_userinfo_result</h4>
4404 NUMERIC TYPE (hex): 000b<p>
4405 </p>
4406 <table border="1" width="100%">
4407 <tr>
4408 <th width="10%">NAME</th>
4409 <th width="8%">TYPE</th>
4410 <th width="4%">VALUE</th>
4411 <th>DESCRIPTION</th>
4412 <th width="10%">GUARD</th>
4413 </tr>
4414 <tr>
4415 <td>name</td>
4416 <td>username</td>
4417 <td> </td>
4418 <td>
4419
4420  
4421 </td>
4422 <td>
4423 <b></b>
4424  
4425 </td>
4426 </tr>
4427 <tr>
4428 <td>message</td>
4429 <td>CONSTANT</td>
4430 <td>There is no user "%s". Update failed. </td>
4431 <td>
4432
4433  
4434 </td>
4435 <td>
4436 <b></b>
4437  
4438 </td>
4439 </tr>
4440 </table>
4441
4442 <h4>
4443 <a name="S0012"></a>ORIGIN: SERVER;
4444 MESSAGE: userinfo_failed</h4>
4445 NUMERIC TYPE (hex): 0012<p>
4446 <p>Sent when no userinfo for the requested user could be found(?)</p>
4447 </p>
4448 <table border="1" width="100%">
4449 <tr>
4450 <th width="10%">NAME</th>
4451 <th width="8%">TYPE</th>
4452 <th width="4%">VALUE</th>
4453 <th>DESCRIPTION</th>
4454 <th width="10%">GUARD</th>
4455 </tr>
4456 <tr>
4457 <td>name</td>
4458 <td>username</td>
4459 <td> </td>
4460 <td>
4461
4462  
4463 </td>
4464 <td>
4465 <b></b>
4466  
4467 </td>
4468 </tr>
4469 </table>
4470
4471 <h4>
4472 <a name="S0013"></a>ORIGIN: SERVER;
4473 MESSAGE: msg_chat</h4>
4474 NUMERIC TYPE (hex): 0013<p>
4475 </p>
4476 <table border="1" width="100%">
4477 <tr>
4478 <th width="10%">NAME</th>
4479 <th width="8%">TYPE</th>
4480 <th width="4%">VALUE</th>
4481 <th>DESCRIPTION</th>
4482 <th width="10%">GUARD</th>
4483 </tr>
4484 <tr>
4485 <td>name</td>
4486 <td>username</td>
4487 <td> </td>
4488 <td>
4489 Name of sender (either yourself (echo) or other)
4490
4491  
4492 </td>
4493 <td>
4494 <b></b>
4495  
4496 </td>
4497 </tr>
4498 <tr>
4499 <td>name2</td>
4500 <td>username</td>
4501 <td> </td>
4502 <td>
4503 Name of recipient.
4504
4505  
4506 </td>
4507 <td>
4508 <b></b>
4509  
4510 </td>
4511 </tr>
4512 <tr>
4513 <td>message</td>
4514 <td>STRING</td>
4515 <td> </td>
4516 <td>
4517
4518  
4519 </td>
4520 <td>
4521 <b></b>
4522  
4523 </td>
4524 </tr>
4525 </table>
4526
4527 <h4>
4528 <a name="S0015"></a>ORIGIN: SERVER;
4529 MESSAGE: stats</h4>
4530 NUMERIC TYPE (hex): 0015
4531 (possibly in response to
4532 <a href="#C0014">req_stats(0014)</a>
4533 )
4534 <p>
4535 </p>
4536 <table border="1" width="100%">
4537 <tr>
4538 <th width="10%">NAME</th>
4539 <th width="8%">TYPE</th>
4540 <th width="4%">VALUE</th>
4541 <th>DESCRIPTION</th>
4542 <th width="10%">GUARD</th>
4543 </tr>
4544 <tr>
4545 <td>ver_major</td>
4546 <td>U16</td>
4547 <td> </td>
4548 <td>
4549
4550  
4551 </td>
4552 <td>
4553 <b></b>
4554  
4555 </td>
4556 </tr>
4557 <tr>
4558 <td>ver_minor</td>
4559 <td>U16</td>
4560 <td> </td>
4561 <td>
4562
4563  
4564 </td>
4565 <td>
4566 <b></b>
4567  
4568 </td>
4569 </tr>
4570 <tr>
4571 <td>ver_micro</td>
4572 <td>U16</td>
4573 <td> </td>
4574 <td>
4575
4576  
4577 </td>
4578 <td>
4579 <b></b>
4580  
4581 </td>
4582 </tr>
4583 <tr>
4584 <td>boot_time</td>
4585 <td>timestamp</td>
4586 <td> </td>
4587 <td>
4588
4589  
4590 </td>
4591 <td>
4592 <b></b>
4593  
4594 </td>
4595 </tr>
4596 <tr>
4597 <td>users_cur</td>
4598 <td>U32</td>
4599 <td> </td>
4600 <td>
4601
4602  
4603 </td>
4604 <td>
4605 <b></b>
4606  
4607 </td>
4608 </tr>
4609 <tr>
4610 <td>users_max</td>
4611 <td>U32</td>
4612 <td> </td>
4613 <td>
4614
4615  
4616 </td>
4617 <td>
4618 <b></b>
4619  
4620 </td>
4621 </tr>
4622 <tr>
4623 <td>users_lim</td>
4624 <td>U32</td>
4625 <td> </td>
4626 <td>
4627
4628  
4629 </td>
4630 <td>
4631 <b></b>
4632  
4633 </td>
4634 </tr>
4635 <tr>
4636 <td>accts_cur</td>
4637 <td>U32</td>
4638 <td> </td>
4639 <td>
4640
4641  
4642 </td>
4643 <td>
4644 <b></b>
4645  
4646 </td>
4647 </tr>
4648 <tr>
4649 <td>accts_max</td>
4650 <td>U32</td>
4651 <td> </td>
4652 <td>
4653
4654  
4655 </td>
4656 <td>
4657 <b></b>
4658  
4659 </td>
4660 </tr>
4661 <tr>
4662 <td>unknown1</td>
4663 <td>U32</td>
4664 <td> </td>
4665 <td>
4666
4667  
4668 </td>
4669 <td>
4670 <b></b>
4671  
4672 </td>
4673 </tr>
4674 <tr>
4675 <td>work_max</td>
4676 <td>U32</td>
4677 <td> </td>
4678 <td>
4679
4680  
4681 </td>
4682 <td>
4683 <b></b>
4684  
4685 </td>
4686 </tr>
4687 <tr>
4688 <td>rooms_cur</td>
4689 <td>U32</td>
4690 <td> </td>
4691 <td>
4692
4693  
4694 </td>
4695 <td>
4696 <b></b>
4697  
4698 </td>
4699 </tr>
4700 <tr>
4701 <td>rooms_max</td>
4702 <td>U32</td>
4703 <td> </td>
4704 <td>
4705
4706  
4707 </td>
4708 <td>
4709 <b></b>
4710  
4711 </td>
4712 </tr>
4713 <tr>
4714 <td>rooms_lim</td>
4715 <td>U32</td>
4716 <td> </td>
4717 <td>
4718
4719  
4720 </td>
4721 <td>
4722 <b></b>
4723  
4724 </td>
4725 </tr>
4726 <tr>
4727 <td>games_cur</td>
4728 <td>U32</td>
4729 <td> </td>
4730 <td>
4731
4732  
4733 </td>
4734 <td>
4735 <b></b>
4736  
4737 </td>
4738 </tr>
4739 <tr>
4740 <td>games_max</td>
4741 <td>U32</td>
4742 <td> </td>
4743 <td>
4744
4745  
4746 </td>
4747 <td>
4748 <b></b>
4749  
4750 </td>
4751 </tr>
4752 <tr>
4753 <td>games_lim</td>
4754 <td>U32</td>
4755 <td> </td>
4756 <td>
4757
4758  
4759 </td>
4760 <td>
4761 <b></b>
4762  
4763 </td>
4764 </tr>
4765 <tr>
4766 <td>results_cur</td>
4767 <td>U32</td>
4768 <td> </td>
4769 <td>
4770
4771  
4772 </td>
4773 <td>
4774 <b></b>
4775  
4776 </td>
4777 </tr>
4778 <tr>
4779 <td>results_max</td>
4780 <td>U32</td>
4781 <td> </td>
4782 <td>
4783
4784  
4785 </td>
4786 <td>
4787 <b></b>
4788  
4789 </td>
4790 </tr>
4791 <tr>
4792 <td>unknown2</td>
4793 <td>U32</td>
4794 <td> </td>
4795 <td>
4796
4797  
4798 </td>
4799 <td>
4800 <b></b>
4801  
4802 </td>
4803 </tr>
4804 <tr>
4805 <td>params_cur</td>
4806 <td>U32</td>
4807 <td> </td>
4808 <td>
4809
4810  
4811 </td>
4812 <td>
4813 <b></b>
4814  
4815 </td>
4816 </tr>
4817 <tr>
4818 <td>params_max</td>
4819 <td>U32</td>
4820 <td> </td>
4821 <td>
4822
4823  
4824 </td>
4825 <td>
4826 <b></b>
4827  
4828 </td>
4829 </tr>
4830 <tr>
4831 <td>bytes_in</td>
4832 <td>U64</td>
4833 <td> </td>
4834 <td>
4835
4836  
4837 </td>
4838 <td>
4839 <b></b>
4840  
4841 </td>
4842 </tr>
4843 <tr>
4844 <td>packets_in</td>
4845 <td>U64</td>
4846 <td> </td>
4847 <td>
4848
4849  
4850 </td>
4851 <td>
4852 <b></b>
4853  
4854 </td>
4855 </tr>
4856 <tr>
4857 <td>bytes_out</td>
4858 <td>U64</td>
4859 <td> </td>
4860 <td>
4861
4862  
4863 </td>
4864 <td>
4865 <b></b>
4866  
4867 </td>
4868 </tr>
4869 <tr>
4870 <td>packets_out</td>
4871 <td>U64</td>
4872 <td> </td>
4873 <td>
4874
4875  
4876 </td>
4877 <td>
4878 <b></b>
4879  
4880 </td>
4881 </tr>
4882 </table>
4883
4884 <h4>
4885 <a name="S0016"></a>ORIGIN: SERVER;
4886 MESSAGE: idle_warn</h4>
4887 NUMERIC TYPE (hex): 0016
4888 (possibly in response to
4889 <a href="#C0016">idle_reset(0016)</a>
4890 )
4891 <p>
4892 <p>idle warning, autologout soon (10 minutes...). Responding with <a href="#S001d">ping(001d)</a> usually helps.</p>
4893 </p>
4894 <table border="1" width="100%">
4895 <tr>
4896 <th width="10%">NAME</th>
4897 <th width="8%">TYPE</th>
4898 <th width="4%">VALUE</th>
4899 <th>DESCRIPTION</th>
4900 <th width="10%">GUARD</th>
4901 </tr>
4902 </table>
4903
4904 <h4>
4905 <a name="S0018"></a>ORIGIN: SERVER;
4906 MESSAGE: login</h4>
4907 NUMERIC TYPE (hex): 0018
4908 (possibly in response to
4909 <a href="#C0000">login(0000)</a>
4910 )
4911 <p>
4912 </p>
4913 <table border="1" width="100%">
4914 <tr>
4915 <th width="10%">NAME</th>
4916 <th width="8%">TYPE</th>
4917 <th width="4%">VALUE</th>
4918 <th>DESCRIPTION</th>
4919 <th width="10%">GUARD</th>
4920 </tr>
4921 <tr>
4922 <td>message</td>
4923 <td>CONSTANT</td>
4924 <td>logged out: another client logged in with your username </td>
4925 <td>
4926
4927  
4928 </td>
4929 <td>
4930 <b></b>
4931  
4932 </td>
4933 </tr>
4934 </table>
4935
4936 <h4>
4937 <a name="S001c"></a>ORIGIN: SERVER;
4938 MESSAGE: login</h4>
4939 NUMERIC TYPE (hex): 001c
4940 (possibly in response to
4941 <a href="#C0000">login(0000)</a>
4942 )
4943 <p>
4944 </p>
4945 <table border="1" width="100%">
4946 <tr>
4947 <th width="10%">NAME</th>
4948 <th width="8%">TYPE</th>
4949 <th width="4%">VALUE</th>
4950 <th>DESCRIPTION</th>
4951 <th width="10%">GUARD</th>
4952 </tr>
4953 <tr>
4954 <td>message</td>
4955 <td>CONSTANT</td>
4956 <td>logged out: idle for too long </td>
4957 <td>
4958
4959  
4960 </td>
4961 <td>
4962 <b></b>
4963  
4964 </td>
4965 </tr>
4966 </table>
4967
4968 <h4>
4969 <a name="S0020"></a>ORIGIN: SERVER;
4970 MESSAGE: error</h4>
4971 NUMERIC TYPE (hex): 0020<p>
4972 </p>
4973 <table border="1" width="100%">
4974 <tr>
4975 <th width="10%">NAME</th>
4976 <th width="8%">TYPE</th>
4977 <th width="4%">VALUE</th>
4978 <th>DESCRIPTION</th>
4979 <th width="10%">GUARD</th>
4980 </tr>
4981 <tr>
4982 <td>message</td>
4983 <td>CONSTANT</td>
4984 <td>Sorry, you have too many unfinished games. You cannot turn on your rank. Please finish some of your games, then try again. </td>
4985 <td>
4986
4987  
4988 </td>
4989 <td>
4990 <b></b>
4991  
4992 </td>
4993 </tr>
4994 </table>
4995
4996 <h4>
4997 <a name="S0022"></a>ORIGIN: SERVER;
4998 MESSAGE: login</h4>
4999 NUMERIC TYPE (hex): 0022
5000 (possibly in response to
5001 <a href="#C0000">login(0000)</a>
5002 )
5003 <p>
5004 I was blocked sooo many times for developing this client that it was
5005 easy to figure out. The KGS admins sure need no extra nazi training
5006 :(
5007 </p>
5008 <table border="1" width="100%">
5009 <tr>
5010 <th width="10%">NAME</th>
5011 <th width="8%">TYPE</th>
5012 <th width="4%">VALUE</th>
5013 <th>DESCRIPTION</th>
5014 <th width="10%">GUARD</th>
5015 </tr>
5016 <tr>
5017 <td>reason</td>
5018 <td>STRING</td>
5019 <td> </td>
5020 <td>
5021
5022  
5023 </td>
5024 <td>
5025 <b></b>
5026  
5027 </td>
5028 </tr>
5029 <tr>
5030 <td>result</td>
5031 <td>CONSTANT</td>
5032 <td>user or ip blocked </td>
5033 <td>
5034
5035  
5036 </td>
5037 <td>
5038 <b></b>
5039  
5040 </td>
5041 </tr>
5042 </table>
5043
5044 <h4>
5045 <a name="S001b"></a>ORIGIN: SERVER;
5046 MESSAGE: timewarning_default</h4>
5047 NUMERIC TYPE (hex): 001b
5048 (possibly in response to
5049 <a href="#C0000">login(0000)</a>
5050 )
5051 <p>
5052 WILD guess
5053 </p>
5054 <table border="1" width="100%">
5055 <tr>
5056 <th width="10%">NAME</th>
5057 <th width="8%">TYPE</th>
5058 <th width="4%">VALUE</th>
5059 <th>DESCRIPTION</th>
5060 <th width="10%">GUARD</th>
5061 </tr>
5062 <tr>
5063 <td>channel</td>
5064 <td>U16</td>
5065 <td> </td>
5066 <td>
5067
5068  
5069 </td>
5070 <td>
5071 <b></b>
5072  
5073 </td>
5074 </tr>
5075 <tr>
5076 <td>time</td>
5077 <td>U16</td>
5078 <td> </td>
5079 <td>
5080
5081  
5082 </td>
5083 <td>
5084 <b></b>
5085  
5086 </td>
5087 </tr>
5088 </table>
5089
5090 <h4>
5091 <a name="S001c"></a>ORIGIN: SERVER;
5092 MESSAGE: idle_err</h4>
5093 NUMERIC TYPE (hex): 001c<p>
5094 autologout
5095 </p>
5096 <table border="1" width="100%">
5097 <tr>
5098 <th width="10%">NAME</th>
5099 <th width="8%">TYPE</th>
5100 <th width="4%">VALUE</th>
5101 <th>DESCRIPTION</th>
5102 <th width="10%">GUARD</th>
5103 </tr>
5104 </table>
5105
5106 <h4>
5107 <a name="S001d"></a>ORIGIN: SERVER;
5108 MESSAGE: ping</h4>
5109 NUMERIC TYPE (hex): 001d<p>
5110 Sent by the server regularly, but not answering them
5111 isn't valid. Strange form of keepalive?
5112 </p>
5113 <table border="1" width="100%">
5114 <tr>
5115 <th width="10%">NAME</th>
5116 <th width="8%">TYPE</th>
5117 <th width="4%">VALUE</th>
5118 <th>DESCRIPTION</th>
5119 <th width="10%">GUARD</th>
5120 </tr>
5121 </table>
5122
5123 <h4>
5124 <a name="S001e"></a>ORIGIN: SERVER;
5125 MESSAGE: usergraph</h4>
5126 NUMERIC TYPE (hex): 001e
5127 (possibly in response to
5128 <a href="#C001e">req_usergraph(001e)</a>
5129 )
5130 <p>
5131 User graph data.
5132 </p>
5133 <table border="1" width="100%">
5134 <tr>
5135 <th width="10%">NAME</th>
5136 <th width="8%">TYPE</th>
5137 <th width="4%">VALUE</th>
5138 <th>DESCRIPTION</th>
5139 <th width="10%">GUARD</th>
5140 </tr>
5141 <tr>
5142 <td>name</td>
5143 <td>username</td>
5144 <td> </td>
5145 <td>
5146
5147  
5148 </td>
5149 <td>
5150 <b></b>
5151  
5152 </td>
5153 </tr>
5154 <tr>
5155 <td>data</td>
5156 <td>I16</td>
5157 <td> </td>
5158 <td>
5159 If empty, no graph is available. The unit seems to
5160 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
5161 There is probably one entry per day, the newest one last.
5162
5163  
5164 </td>
5165 <td>
5166 <b></b>
5167  
5168 </td>
5169 </tr>
5170 </table>
5171
5172 <h4>
5173 <a name="S0021"></a>ORIGIN: SERVER;
5174 MESSAGE: userpic</h4>
5175 NUMERIC TYPE (hex): 0021
5176 (possibly in response to
5177 <a href="#C0021">req_pic(0021)</a>
5178 )
5179 <p>
5180 </p>
5181 <table border="1" width="100%">
5182 <tr>
5183 <th width="10%">NAME</th>
5184 <th width="8%">TYPE</th>
5185 <th width="4%">VALUE</th>
5186 <th>DESCRIPTION</th>
5187 <th width="10%">GUARD</th>
5188 </tr>
5189 <tr>
5190 <td>name</td>
5191 <td>username</td>
5192 <td> </td>
5193 <td>
5194 Reply to pic_req, contains an image in jpeg format.
5195
5196  
5197 </td>
5198 <td>
5199 <b></b>
5200  
5201 </td>
5202 </tr>
5203 <tr>
5204 <td>data</td>
5205 <td>DATA</td>
5206 <td> </td>
5207 <td>
5208
5209  
5210 </td>
5211 <td>
5212 <b></b>
5213  
5214 </td>
5215 </tr>
5216 </table>
5217
5218 <h4>
5219 <a name="S0025"></a>ORIGIN: SERVER;
5220 MESSAGE: memo_error</h4>
5221 NUMERIC TYPE (hex): 0025<p>
5222 <p>Account unknown.</p>
5223 </p>
5224 <table border="1" width="100%">
5225 <tr>
5226 <th width="10%">NAME</th>
5227 <th width="8%">TYPE</th>
5228 <th width="4%">VALUE</th>
5229 <th>DESCRIPTION</th>
5230 <th width="10%">GUARD</th>
5231 </tr>
5232 <tr>
5233 <td>name</td>
5234 <td>username</td>
5235 <td> </td>
5236 <td>
5237
5238  
5239 </td>
5240 <td>
5241 <b></b>
5242  
5243 </td>
5244 </tr>
5245 <tr>
5246 <td>cid</td>
5247 <td>CLIENTID16</td>
5248 <td> </td>
5249 <td>
5250
5251  
5252 </td>
5253 <td>
5254 <b></b>
5255  
5256 </td>
5257 </tr>
5258 <tr>
5259 <td>message</td>
5260 <td>CONSTANT</td>
5261 <td>memo send failed: account already exists </td>
5262 <td>
5263
5264  
5265 </td>
5266 <td>
5267 <b></b>
5268  
5269 </td>
5270 </tr>
5271 <tr>
5272 <td>subtype</td>
5273 <td>CONSTANT</td>
5274 <td>25 </td>
5275 <td>
5276
5277  
5278 </td>
5279 <td>
5280 <b></b>
5281  
5282 </td>
5283 </tr>
5284 </table>
5285
5286 <h4>
5287 <a name="S0026"></a>ORIGIN: SERVER;
5288 MESSAGE: memo_error</h4>
5289 NUMERIC TYPE (hex): 0026<p>
5290 <p>Just a guess.</p>
5291 </p>
5292 <table border="1" width="100%">
5293 <tr>
5294 <th width="10%">NAME</th>
5295 <th width="8%">TYPE</th>
5296 <th width="4%">VALUE</th>
5297 <th>DESCRIPTION</th>
5298 <th width="10%">GUARD</th>
5299 </tr>
5300 <tr>
5301 <td>name</td>
5302 <td>username</td>
5303 <td> </td>
5304 <td>
5305
5306  
5307 </td>
5308 <td>
5309 <b></b>
5310  
5311 </td>
5312 </tr>
5313 <tr>
5314 <td>cid</td>
5315 <td>CLIENTID16</td>
5316 <td> </td>
5317 <td>
5318
5319  
5320 </td>
5321 <td>
5322 <b></b>
5323  
5324 </td>
5325 </tr>
5326 <tr>
5327 <td>message</td>
5328 <td>CONSTANT</td>
5329 <td>memo send failed: error 26 </td>
5330 <td>
5331
5332  
5333 </td>
5334 <td>
5335 <b></b>
5336  
5337 </td>
5338 </tr>
5339 <tr>
5340 <td>subtype</td>
5341 <td>CONSTANT</td>
5342 <td>26 </td>
5343 <td>
5344
5345  
5346 </td>
5347 <td>
5348 <b></b>
5349  
5350 </td>
5351 </tr>
5352 </table>
5353
5354 <h4>
5355 <a name="S0027"></a>ORIGIN: SERVER;
5356 MESSAGE: memo_error</h4>
5357 NUMERIC TYPE (hex): 0027<p>
5358 <p>User is currently online, please use chat.</p>
5359 </p>
5360 <table border="1" width="100%">
5361 <tr>
5362 <th width="10%">NAME</th>
5363 <th width="8%">TYPE</th>
5364 <th width="4%">VALUE</th>
5365 <th>DESCRIPTION</th>
5366 <th width="10%">GUARD</th>
5367 </tr>
5368 <tr>
5369 <td>name</td>
5370 <td>username</td>
5371 <td> </td>
5372 <td>
5373
5374  
5375 </td>
5376 <td>
5377 <b></b>
5378  
5379 </td>
5380 </tr>
5381 <tr>
5382 <td>cid</td>
5383 <td>CLIENTID16</td>
5384 <td> </td>
5385 <td>
5386
5387  
5388 </td>
5389 <td>
5390 <b></b>
5391  
5392 </td>
5393 </tr>
5394 <tr>
5395 <td>message</td>
5396 <td>CONSTANT</td>
5397 <td>memo send failed: user is online, use chat </td>
5398 <td>
5399
5400  
5401 </td>
5402 <td>
5403 <b></b>
5404  
5405 </td>
5406 </tr>
5407 <tr>
5408 <td>subtype</td>
5409 <td>CONSTANT</td>
5410 <td>27 </td>
5411 <td>
5412
5413  
5414 </td>
5415 <td>
5416 <b></b>
5417  
5418 </td>
5419 </tr>
5420 </table>
5421
5422 <h4>
5423 <a name="S0028"></a>ORIGIN: SERVER;
5424 MESSAGE: memo_error</h4>
5425 NUMERIC TYPE (hex): 0028<p>
5426 <p>Just a guess.</p>
5427 </p>
5428 <table border="1" width="100%">
5429 <tr>
5430 <th width="10%">NAME</th>
5431 <th width="8%">TYPE</th>
5432 <th width="4%">VALUE</th>
5433 <th>DESCRIPTION</th>
5434 <th width="10%">GUARD</th>
5435 </tr>
5436 <tr>
5437 <td>name</td>
5438 <td>username</td>
5439 <td> </td>
5440 <td>
5441
5442  
5443 </td>
5444 <td>
5445 <b></b>
5446  
5447 </td>
5448 </tr>
5449 <tr>
5450 <td>cid</td>
5451 <td>CLIENTID16</td>
5452 <td> </td>
5453 <td>
5454
5455  
5456 </td>
5457 <td>
5458 <b></b>
5459  
5460 </td>
5461 </tr>
5462 <tr>
5463 <td>message</td>
5464 <td>CONSTANT</td>
5465 <td>memo send failed: error 28 </td>
5466 <td>
5467
5468  
5469 </td>
5470 <td>
5471 <b></b>
5472  
5473 </td>
5474 </tr>
5475 <tr>
5476 <td>subtype</td>
5477 <td>CONSTANT</td>
5478 <td>28 </td>
5479 <td>
5480
5481  
5482 </td>
5483 <td>
5484 <b></b>
5485  
5486 </td>
5487 </tr>
5488 </table>
5489
5490 <h4>
5491 <a name="S0029"></a>ORIGIN: SERVER;
5492 MESSAGE: memo</h4>
5493 NUMERIC TYPE (hex): 0029<p>
5494 </p>
5495 <table border="1" width="100%">
5496 <tr>
5497 <th width="10%">NAME</th>
5498 <th width="8%">TYPE</th>
5499 <th width="4%">VALUE</th>
5500 <th>DESCRIPTION</th>
5501 <th width="10%">GUARD</th>
5502 </tr>
5503 <tr>
5504 <td>name</td>
5505 <td>username</td>
5506 <td> </td>
5507 <td>
5508
5509  
5510 </td>
5511 <td>
5512 <b></b>
5513  
5514 </td>
5515 </tr>
5516 <tr>
5517 <td>time</td>
5518 <td>timestamp</td>
5519 <td> </td>
5520 <td>
5521
5522  
5523 </td>
5524 <td>
5525 <b></b>
5526  
5527 </td>
5528 </tr>
5529 <tr>
5530 <td>message</td>
5531 <td>ZSTRING</td>
5532 <td> </td>
5533 <td>
5534
5535  
5536 </td>
5537 <td>
5538 <b></b>
5539  
5540 </td>
5541 </tr>
5542 </table>
5543
5544 <h4>
5545 <a name="S002a"></a>ORIGIN: SERVER;
5546 MESSAGE: memo_sent</h4>
5547 NUMERIC TYPE (hex): 002a<p>
5548 <p>The memo was sent successfully</p>
5549 </p>
5550 <table border="1" width="100%">
5551 <tr>
5552 <th width="10%">NAME</th>
5553 <th width="8%">TYPE</th>
5554 <th width="4%">VALUE</th>
5555 <th>DESCRIPTION</th>
5556 <th width="10%">GUARD</th>
5557 </tr>
5558 <tr>
5559 <td>name</td>
5560 <td>username</td>
5561 <td> </td>
5562 <td>
5563
5564  
5565 </td>
5566 <td>
5567 <b></b>
5568  
5569 </td>
5570 </tr>
5571 <tr>
5572 <td>cid</td>
5573 <td>CLIENTID16</td>
5574 <td> </td>
5575 <td>
5576
5577  
5578 </td>
5579 <td>
5580 <b></b>
5581  
5582 </td>
5583 </tr>
5584 </table>
5585
5586 <h4>
5587 <a name="S0100"></a>ORIGIN: SERVER;
5588 MESSAGE: gnotice</h4>
5589 NUMERIC TYPE (hex): 0100
5590 (possibly in response to
5591 <a href="#C0100">gnotice(0100)</a>
5592 )
5593 <p>
5594 global notice, sent to everybody
5595 </p>
5596 <table border="1" width="100%">
5597 <tr>
5598 <th width="10%">NAME</th>
5599 <th width="8%">TYPE</th>
5600 <th width="4%">VALUE</th>
5601 <th>DESCRIPTION</th>
5602 <th width="10%">GUARD</th>
5603 </tr>
5604 <tr>
5605 <td>notice</td>
5606 <td>STRING</td>
5607 <td> </td>
5608 <td>
5609
5610  
5611 </td>
5612 <td>
5613 <b></b>
5614  
5615 </td>
5616 </tr>
5617 </table>
5618
5619 <h4>
5620 <a name="S0202"></a>ORIGIN: SERVER;
5621 MESSAGE: notify_event</h4>
5622 NUMERIC TYPE (hex): 0202<p>
5623 # maybe soe notify? Totally unclear.
5624 # loc 0" type="userinfo, flags etc. loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
5625 </p>
5626 <table border="1" width="100%">
5627 <tr>
5628 <th width="10%">NAME</th>
5629 <th width="8%">TYPE</th>
5630 <th width="4%">VALUE</th>
5631 <th>DESCRIPTION</th>
5632 <th width="10%">GUARD</th>
5633 </tr>
5634 <tr>
5635 <td>event</td>
5636 <td>U32</td>
5637 <td> </td>
5638 <td>
5639
5640  
5641 </td>
5642 <td>
5643 <b></b>
5644  
5645 </td>
5646 </tr>
5647 <tr>
5648 <td>user</td>
5649 <td>user</td>
5650 <td> </td>
5651 <td>
5652
5653  
5654 </td>
5655 <td>
5656 <b></b>
5657  
5658 </td>
5659 </tr>
5660 <tr>
5661 <td>gamerecord</td>
5662 <td>game_record</td>
5663 <td> </td>
5664 <td>
5665
5666  
5667 </td>
5668 <td>
5669 <b>event</b> == 2
5670  
5671 </td>
5672 </tr>
5673 </table>
5674
5675 <h4>
5676 <a name="S030c"></a>ORIGIN: SERVER;
5677 MESSAGE: unknown_030c</h4>
5678 NUMERIC TYPE (hex): 030c<p>
5679 <p>Not the slightest... No payload, either.</p>
5680 </p>
5681 <table border="1" width="100%">
5682 <tr>
5683 <th width="10%">NAME</th>
5684 <th width="8%">TYPE</th>
5685 <th width="4%">VALUE</th>
5686 <th>DESCRIPTION</th>
5687 <th width="10%">GUARD</th>
5688 </tr>
5689 </table>
5690
5691 <h4>
5692 <a name="S0310"></a>ORIGIN: SERVER;
5693 MESSAGE: priv_room</h4>
5694 NUMERIC TYPE (hex): 0310<p>
5695 "permission denied" when joining a room
5696 </p>
5697 <table border="1" width="100%">
5698 <tr>
5699 <th width="10%">NAME</th>
5700 <th width="8%">TYPE</th>
5701 <th width="4%">VALUE</th>
5702 <th>DESCRIPTION</th>
5703 <th width="10%">GUARD</th>
5704 </tr>
5705 <tr>
5706 <td>name</td>
5707 <td>STRING</td>
5708 <td> </td>
5709 <td>
5710
5711  
5712 </td>
5713 <td>
5714 <b></b>
5715  
5716 </td>
5717 </tr>
5718 </table>
5719
5720 <h4>
5721 <a name="S0318"></a>ORIGIN: SERVER;
5722 MESSAGE: upd_rooms</h4>
5723 NUMERIC TYPE (hex): 0318
5724 (possibly in response to
5725 <a href="#C0318">list_rooms(0318)</a>
5726 )
5727 <p>
5728 </p>
5729 <table border="1" width="100%">
5730 <tr>
5731 <th width="10%">NAME</th>
5732 <th width="8%">TYPE</th>
5733 <th width="4%">VALUE</th>
5734 <th>DESCRIPTION</th>
5735 <th width="10%">GUARD</th>
5736 </tr>
5737 <tr>
5738 <td>rooms</td>
5739 <td>room</td>
5740 <td> </td>
5741 <td>
5742
5743  
5744 </td>
5745 <td>
5746 <b></b>
5747  
5748 </td>
5749 </tr>
5750 </table>
5751
5752 <h4>
5753 <a name="S0411"></a>ORIGIN: SERVER;
5754 MESSAGE: chal_defaults</h4>
5755 NUMERIC TYPE (hex): 0411
5756 (possibly in response to
5757 <a href="#C0000">login(0000)</a>
5758 )
5759 <p>
5760 </p>
5761 <table border="1" width="100%">
5762 <tr>
5763 <th width="10%">NAME</th>
5764 <th width="8%">TYPE</th>
5765 <th width="4%">VALUE</th>
5766 <th>DESCRIPTION</th>
5767 <th width="10%">GUARD</th>
5768 </tr>
5769 <tr>
5770 <td>channel</td>
5771 <td>U16</td>
5772 <td> </td>
5773 <td>
5774
5775  
5776 </td>
5777 <td>
5778 <b></b>
5779  
5780 </td>
5781 </tr>
5782 <tr>
5783 <td>defaults</td>
5784 <td>challenge_defaults</td>
5785 <td> </td>
5786 <td>
5787
5788  
5789 </td>
5790 <td>
5791 <b></b>
5792  
5793 </td>
5794 </tr>
5795 </table>
5796
5797 <h4>
5798 <a name="S0412"></a>ORIGIN: SERVER;
5799 MESSAGE: already_playing</h4>
5800 NUMERIC TYPE (hex): 0412<p>
5801 Unable to create new game.
5802 </p>
5803 <table border="1" width="100%">
5804 <tr>
5805 <th width="10%">NAME</th>
5806 <th width="8%">TYPE</th>
5807 <th width="4%">VALUE</th>
5808 <th>DESCRIPTION</th>
5809 <th width="10%">GUARD</th>
5810 </tr>
5811 <tr>
5812 <td>message</td>
5813 <td>CONSTANT</td>
5814 <td>Sorry, you are already playing in one game, so you can't start playing in another. </td>
5815 <td>
5816
5817  
5818 </td>
5819 <td>
5820 <b></b>
5821  
5822 </td>
5823 </tr>
5824 <tr>
5825 <td>cid</td>
5826 <td>CLIENTID16</td>
5827 <td> </td>
5828 <td>
5829
5830  
5831 </td>
5832 <td>
5833 <b></b>
5834  
5835 </td>
5836 </tr>
5837 </table>
5838
5839 <h4>
5840 <a name="S0414"></a>ORIGIN: SERVER;
5841 MESSAGE: game_record</h4>
5842 NUMERIC TYPE (hex): 0414
5843 (possibly in response to
5844 <a href="#C0413">req_game_record(0413)</a>
5845 )
5846 <p>
5847 The users game record.
5848 </p>
5849 <table border="1" width="100%">
5850 <tr>
5851 <th width="10%">NAME</th>
5852 <th width="8%">TYPE</th>
5853 <th width="4%">VALUE</th>
5854 <th>DESCRIPTION</th>
5855 <th width="10%">GUARD</th>
5856 </tr>
5857 <tr>
5858 <td>name</td>
5859 <td>username</td>
5860 <td> </td>
5861 <td>
5862
5863  
5864 </td>
5865 <td>
5866 <b></b>
5867  
5868 </td>
5869 </tr>
5870 <tr>
5871 <td>more</td>
5872 <td>flag</td>
5873 <td> </td>
5874 <td>
5875 Wether more games are available (must be requested manually)
5876
5877  
5878 </td>
5879 <td>
5880 <b></b>
5881  
5882 </td>
5883 </tr>
5884 <tr>
5885 <td>games</td>
5886 <td>game_record</td>
5887 <td> </td>
5888 <td>
5889
5890  
5891 </td>
5892 <td>
5893 <b></b>
5894  
5895 </td>
5896 </tr>
5897 </table>
5898
5899 <h4>
5900 <a name="S0417"></a>ORIGIN: SERVER;
5901 MESSAGE: error</h4>
5902 NUMERIC TYPE (hex): 0417<p>
5903 </p>
5904 <table border="1" width="100%">
5905 <tr>
5906 <th width="10%">NAME</th>
5907 <th width="8%">TYPE</th>
5908 <th width="4%">VALUE</th>
5909 <th>DESCRIPTION</th>
5910 <th width="10%">GUARD</th>
5911 </tr>
5912 <tr>
5913 <td>message</td>
5914 <td>CONSTANT</td>
5915 <td>Sorry, your opponent is currently not logged in, so you can't resume this game. </td>
5916 <td>
5917
5918  
5919 </td>
5920 <td>
5921 <b></b>
5922  
5923 </td>
5924 </tr>
5925 </table>
5926
5927 <h4>
5928 <a name="S0418"></a>ORIGIN: SERVER;
5929 MESSAGE: error</h4>
5930 NUMERIC TYPE (hex): 0418<p>
5931 </p>
5932 <table border="1" width="100%">
5933 <tr>
5934 <th width="10%">NAME</th>
5935 <th width="8%">TYPE</th>
5936 <th width="4%">VALUE</th>
5937 <th>DESCRIPTION</th>
5938 <th width="10%">GUARD</th>
5939 </tr>
5940 <tr>
5941 <td>message</td>
5942 <td>CONSTANT</td>
5943 <td>Sorry, your opponent is already playing in a game, so you cannot continue this one. </td>
5944 <td>
5945
5946  
5947 </td>
5948 <td>
5949 <b></b>
5950  
5951 </td>
5952 </tr>
5953 </table>
5954
5955 <h4>
5956 <a name="S0419"></a>ORIGIN: SERVER;
5957 MESSAGE: error</h4>
5958 NUMERIC TYPE (hex): 0419<p>
5959 </p>
5960 <table border="1" width="100%">
5961 <tr>
5962 <th width="10%">NAME</th>
5963 <th width="8%">TYPE</th>
5964 <th width="4%">VALUE</th>
5965 <th>DESCRIPTION</th>
5966 <th width="10%">GUARD</th>
5967 </tr>
5968 <tr>
5969 <td>message</td>
5970 <td>CONSTANT</td>
5971 <td>Sorry, the server is out of boards! Please wait a few minutes and try to start a game again. </td>
5972 <td>
5973
5974  
5975 </td>
5976 <td>
5977 <b></b>
5978  
5979 </td>
5980 </tr>
5981 </table>
5982
5983 <h4>
5984 <a name="S041c"></a>ORIGIN: SERVER;
5985 MESSAGE: upd_game2</h4>
5986 NUMERIC TYPE (hex): 041c<p>
5987 Unclear.
5988 </p>
5989 <table border="1" width="100%">
5990 <tr>
5991 <th width="10%">NAME</th>
5992 <th width="8%">TYPE</th>
5993 <th width="4%">VALUE</th>
5994 <th>DESCRIPTION</th>
5995 <th width="10%">GUARD</th>
5996 </tr>
5997 <tr>
5998 <td>channel_junk</td>
5999 <td>U16</td>
6000 <td> </td>
6001 <td>
6002
6003  
6004 </td>
6005 <td>
6006 <b></b>
6007  
6008 </td>
6009 </tr>
6010 <tr>
6011 <td>game</td>
6012 <td>game</td>
6013 <td> </td>
6014 <td>
6015
6016  
6017 </td>
6018 <td>
6019 <b></b>
6020  
6021 </td>
6022 </tr>
6023 </table>
6024
6025 <h4>
6026 <a name="S041f"></a>ORIGIN: SERVER;
6027 MESSAGE: error</h4>
6028 NUMERIC TYPE (hex): 041f<p>
6029 </p>
6030 <table border="1" width="100%">
6031 <tr>
6032 <th width="10%">NAME</th>
6033 <th width="8%">TYPE</th>
6034 <th width="4%">VALUE</th>
6035 <th>DESCRIPTION</th>
6036 <th width="10%">GUARD</th>
6037 </tr>
6038 <tr>
6039 <td>message</td>
6040 <td>CONSTANT</td>
6041 <td>Sorry, the game you tried to load was not correctly saved...probably caused by the server crashing. It cannot be recovered. </td>
6042 <td>
6043
6044  
6045 </td>
6046 <td>
6047 <b></b>
6048  
6049 </td>
6050 </tr>
6051 </table>
6052
6053 <h4>
6054 <a name="S0420"></a>ORIGIN: SERVER;
6055 MESSAGE: error</h4>
6056 NUMERIC TYPE (hex): 0420<p>
6057 </p>
6058 <table border="1" width="100%">
6059 <tr>
6060 <th width="10%">NAME</th>
6061 <th width="8%">TYPE</th>
6062 <th width="4%">VALUE</th>
6063 <th>DESCRIPTION</th>
6064 <th width="10%">GUARD</th>
6065 </tr>
6066 <tr>
6067 <td>message</td>
6068 <td>CONSTANT</td>
6069 <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>
6070 <td>
6071
6072  
6073 </td>
6074 <td>
6075 <b></b>
6076  
6077 </td>
6078 </tr>
6079 </table>
6080
6081 <h4>
6082 <a name="S0421"></a>ORIGIN: SERVER;
6083 MESSAGE: error</h4>
6084 NUMERIC TYPE (hex): 0421<p>
6085 </p>
6086 <table border="1" width="100%">
6087 <tr>
6088 <th width="10%">NAME</th>
6089 <th width="8%">TYPE</th>
6090 <th width="4%">VALUE</th>
6091 <th>DESCRIPTION</th>
6092 <th width="10%">GUARD</th>
6093 </tr>
6094 <tr>
6095 <td>message</td>
6096 <td>CONSTANT</td>
6097 <td>Sorry, this game is a private lesson. You will not be allowed to observe it. </td>
6098 <td>
6099
6100  
6101 </td>
6102 <td>
6103 <b></b>
6104  
6105 </td>
6106 </tr>
6107 </table>
6108
6109 <!-- added recently -->
6110 <h4>
6111 <a name="S043a"></a>ORIGIN: SERVER;
6112 MESSAGE: add_global_challenge</h4>
6113 NUMERIC TYPE (hex): 043a<p>
6114 <p>
6115 Adds or updates a global challenge (open game list).
6116 </p>
6117 </p>
6118 <table border="1" width="100%">
6119 <tr>
6120 <th width="10%">NAME</th>
6121 <th width="8%">TYPE</th>
6122 <th width="4%">VALUE</th>
6123 <th>DESCRIPTION</th>
6124 <th width="10%">GUARD</th>
6125 </tr>
6126 <tr>
6127 <td>channel</td>
6128 <td>U16</td>
6129 <td> </td>
6130 <td>
6131
6132  
6133 </td>
6134 <td>
6135 <b></b>
6136  
6137 </td>
6138 </tr>
6139 <tr>
6140 <td>game</td>
6141 <td>game</td>
6142 <td> </td>
6143 <td>
6144
6145  
6146 </td>
6147 <td>
6148 <b></b>
6149  
6150 </td>
6151 </tr>
6152 </table>
6153
6154 <h3>Room messages</h3>
6155
6156 <p>Not all room messages are for rooms only, and rooms need to parse
6157 not only these messages. Orthogonality, what for?</p>
6158
6159 <h4>
6160 <a name="S4300"></a>ORIGIN: SERVER;
6161 MESSAGE: join_room</h4>
6162 NUMERIC TYPE (hex): 4300
6163 (possibly in response to
6164 <a href="#C4300">join_room(4300)</a>
6165 )
6166 <p>
6167 </p>
6168 <table border="1" width="100%">
6169 <tr>
6170 <th width="10%">NAME</th>
6171 <th width="8%">TYPE</th>
6172 <th width="4%">VALUE</th>
6173 <th>DESCRIPTION</th>
6174 <th width="10%">GUARD</th>
6175 </tr>
6176 <tr>
6177 <td>channel</td>
6178 <td>U16</td>
6179 <td> </td>
6180 <td>
6181
6182  
6183 </td>
6184 <td>
6185 <b></b>
6186  
6187 </td>
6188 </tr>
6189 <tr>
6190 <td>users</td>
6191 <td>user</td>
6192 <td> </td>
6193 <td>
6194
6195  
6196 </td>
6197 <td>
6198 <b></b>
6199  
6200 </td>
6201 </tr>
6202 </table>
6203
6204 <h4>
6205 <a name="S4301"></a>ORIGIN: SERVER;
6206 MESSAGE: msg_room</h4>
6207 NUMERIC TYPE (hex): 4301<p>
6208 </p>
6209 <table border="1" width="100%">
6210 <tr>
6211 <th width="10%">NAME</th>
6212 <th width="8%">TYPE</th>
6213 <th width="4%">VALUE</th>
6214 <th>DESCRIPTION</th>
6215 <th width="10%">GUARD</th>
6216 </tr>
6217 <tr>
6218 <td>channel</td>
6219 <td>U16</td>
6220 <td> </td>
6221 <td>
6222
6223  
6224 </td>
6225 <td>
6226 <b></b>
6227  
6228 </td>
6229 </tr>
6230 <tr>
6231 <td>name</td>
6232 <td>username</td>
6233 <td> </td>
6234 <td>
6235
6236  
6237 </td>
6238 <td>
6239 <b></b>
6240  
6241 </td>
6242 </tr>
6243 <tr>
6244 <td>message</td>
6245 <td>STRING</td>
6246 <td> </td>
6247 <td>
6248
6249  
6250 </td>
6251 <td>
6252 <b></b>
6253  
6254 </td>
6255 </tr>
6256 </table>
6257
6258 <h4>
6259 <a name="S4302"></a>ORIGIN: SERVER;
6260 MESSAGE: part_room</h4>
6261 NUMERIC TYPE (hex): 4302<p>
6262 </p>
6263 <table border="1" width="100%">
6264 <tr>
6265 <th width="10%">NAME</th>
6266 <th width="8%">TYPE</th>
6267 <th width="4%">VALUE</th>
6268 <th>DESCRIPTION</th>
6269 <th width="10%">GUARD</th>
6270 </tr>
6271 <tr>
6272 <td>channel</td>
6273 <td>U16</td>
6274 <td> </td>
6275 <td>
6276
6277  
6278 </td>
6279 <td>
6280 <b></b>
6281  
6282 </td>
6283 </tr>
6284 <tr>
6285 <td>user</td>
6286 <td>user</td>
6287 <td> </td>
6288 <td>
6289
6290  
6291 </td>
6292 <td>
6293 <b></b>
6294  
6295 </td>
6296 </tr>
6297 </table>
6298
6299 <h4>
6300 <a name="S4303"></a>ORIGIN: SERVER;
6301 MESSAGE: del_room</h4>
6302 NUMERIC TYPE (hex): 4303<p>
6303 </p>
6304 <table border="1" width="100%">
6305 <tr>
6306 <th width="10%">NAME</th>
6307 <th width="8%">TYPE</th>
6308 <th width="4%">VALUE</th>
6309 <th>DESCRIPTION</th>
6310 <th width="10%">GUARD</th>
6311 </tr>
6312 <tr>
6313 <td>channel</td>
6314 <td>U16</td>
6315 <td> </td>
6316 <td>
6317
6318  
6319 </td>
6320 <td>
6321 <b></b>
6322  
6323 </td>
6324 </tr>
6325 </table>
6326
6327 <h4>
6328 <a name="S4304"></a>ORIGIN: SERVER;
6329 MESSAGE: upd_games</h4>
6330 NUMERIC TYPE (hex): 4304<p>
6331 </p>
6332 <table border="1" width="100%">
6333 <tr>
6334 <th width="10%">NAME</th>
6335 <th width="8%">TYPE</th>
6336 <th width="4%">VALUE</th>
6337 <th>DESCRIPTION</th>
6338 <th width="10%">GUARD</th>
6339 </tr>
6340 <tr>
6341 <td>channel</td>
6342 <td>U16</td>
6343 <td> </td>
6344 <td>
6345
6346  
6347 </td>
6348 <td>
6349 <b></b>
6350  
6351 </td>
6352 </tr>
6353 <tr>
6354 <td>games</td>
6355 <td>game</td>
6356 <td> </td>
6357 <td>
6358
6359  
6360 </td>
6361 <td>
6362 <b></b>
6363  
6364 </td>
6365 </tr>
6366 </table>
6367
6368 <h4>
6369 <a name="S4319"></a>ORIGIN: SERVER;
6370 MESSAGE: desc_room</h4>
6371 NUMERIC TYPE (hex): 4319<p>
6372 </p>
6373 <table border="1" width="100%">
6374 <tr>
6375 <th width="10%">NAME</th>
6376 <th width="8%">TYPE</th>
6377 <th width="4%">VALUE</th>
6378 <th>DESCRIPTION</th>
6379 <th width="10%">GUARD</th>
6380 </tr>
6381 <tr>
6382 <td>channel</td>
6383 <td>U16</td>
6384 <td> </td>
6385 <td>
6386
6387  
6388 </td>
6389 <td>
6390 <b></b>
6391  
6392 </td>
6393 </tr>
6394 <tr>
6395 <td>owner</td>
6396 <td>username</td>
6397 <td> </td>
6398 <td>
6399
6400  
6401 </td>
6402 <td>
6403 <b></b>
6404  
6405 </td>
6406 </tr>
6407 <tr>
6408 <td>description</td>
6409 <td>STRING</td>
6410 <td> </td>
6411 <td>
6412
6413  
6414 </td>
6415 <td>
6416 <b></b>
6417  
6418 </td>
6419 </tr>
6420 </table>
6421
6422 <h3>Game messages</h3>
6423
6424 <h4>
6425 <a name="S4400"></a>ORIGIN: SERVER;
6426 MESSAGE: challenge</h4>
6427 NUMERIC TYPE (hex): 4400<p>
6428 Unclear.
6429 </p>
6430 <table border="1" width="100%">
6431 <tr>
6432 <th width="10%">NAME</th>
6433 <th width="8%">TYPE</th>
6434 <th width="4%">VALUE</th>
6435 <th>DESCRIPTION</th>
6436 <th width="10%">GUARD</th>
6437 </tr>
6438 <tr>
6439 <td>channel</td>
6440 <td>U16</td>
6441 <td> </td>
6442 <td>
6443
6444  
6445 </td>
6446 <td>
6447 <b></b>
6448  
6449 </td>
6450 </tr>
6451 <tr>
6452 <td>black</td>
6453 <td>user</td>
6454 <td> </td>
6455 <td>
6456
6457  
6458 </td>
6459 <td>
6460 <b></b>
6461  
6462 </td>
6463 </tr>
6464 <tr>
6465 <td>white</td>
6466 <td>user</td>
6467 <td> </td>
6468 <td>
6469
6470  
6471 </td>
6472 <td>
6473 <b></b>
6474  
6475 </td>
6476 </tr>
6477 <tr>
6478 <td>gametype</td>
6479 <td>U8</td>
6480 <td> </td>
6481 <td>
6482
6483  
6484 </td>
6485 <td>
6486 <b></b>
6487  
6488 </td>
6489 </tr>
6490 <tr>
6491 <td>cid</td>
6492 <td>CLIENTID8</td>
6493 <td> </td>
6494 <td>
6495
6496  
6497 </td>
6498 <td>
6499 <b></b>
6500  
6501 </td>
6502 </tr>
6503 <tr>
6504 <td>rules</td>
6505 <td>rules</td>
6506 <td> </td>
6507 <td>
6508
6509  
6510 </td>
6511 <td>
6512 <b></b>
6513  
6514 </td>
6515 </tr>
6516 <tr>
6517 <td>notes</td>
6518 <td>STRING</td>
6519 <td> </td>
6520 <td>
6521
6522  
6523 </td>
6524 <td>
6525 <b></b>
6526  
6527 </td>
6528 </tr>
6529 </table>
6530
6531 <h4>
6532 <a name="S4401"></a>ORIGIN: SERVER;
6533 MESSAGE: upd_game</h4>
6534 NUMERIC TYPE (hex): 4401<p>
6535 </p>
6536 <table border="1" width="100%">
6537 <tr>
6538 <th width="10%">NAME</th>
6539 <th width="8%">TYPE</th>
6540 <th width="4%">VALUE</th>
6541 <th>DESCRIPTION</th>
6542 <th width="10%">GUARD</th>
6543 </tr>
6544 <tr>
6545 <td>channel</td>
6546 <td>U16</td>
6547 <td> </td>
6548 <td>
6549
6550  
6551 </td>
6552 <td>
6553 <b></b>
6554  
6555 </td>
6556 </tr>
6557 <tr>
6558 <td>game</td>
6559 <td>game</td>
6560 <td> </td>
6561 <td>
6562
6563  
6564 </td>
6565 <td>
6566 <b></b>
6567  
6568 </td>
6569 </tr>
6570 </table>
6571
6572 <h4>
6573 <a name="S4402"></a>ORIGIN: SERVER;
6574 MESSAGE: del_game</h4>
6575 NUMERIC TYPE (hex): 4402<p>
6576 </p>
6577 <table border="1" width="100%">
6578 <tr>
6579 <th width="10%">NAME</th>
6580 <th width="8%">TYPE</th>
6581 <th width="4%">VALUE</th>
6582 <th>DESCRIPTION</th>
6583 <th width="10%">GUARD</th>
6584 </tr>
6585 <tr>
6586 <td>channel</td>
6587 <td>U16</td>
6588 <td> </td>
6589 <td>
6590
6591  
6592 </td>
6593 <td>
6594 <b></b>
6595  
6596 </td>
6597 </tr>
6598 </table>
6599
6600 <h4>
6601 <a name="S4403"></a>ORIGIN: SERVER;
6602 MESSAGE: upd_observers</h4>
6603 NUMERIC TYPE (hex): 4403<p>
6604 </p>
6605 <table border="1" width="100%">
6606 <tr>
6607 <th width="10%">NAME</th>
6608 <th width="8%">TYPE</th>
6609 <th width="4%">VALUE</th>
6610 <th>DESCRIPTION</th>
6611 <th width="10%">GUARD</th>
6612 </tr>
6613 <tr>
6614 <td>channel</td>
6615 <td>U16</td>
6616 <td> </td>
6617 <td>
6618
6619  
6620 </td>
6621 <td>
6622 <b></b>
6623  
6624 </td>
6625 </tr>
6626 <tr>
6627 <td>users</td>
6628 <td>user</td>
6629 <td> </td>
6630 <td>
6631
6632  
6633 </td>
6634 <td>
6635 <b></b>
6636  
6637 </td>
6638 </tr>
6639 </table>
6640
6641 <h4>
6642 <a name="S4404"></a>ORIGIN: SERVER;
6643 MESSAGE: del_observer</h4>
6644 NUMERIC TYPE (hex): 4404<p>
6645 </p>
6646 <table border="1" width="100%">
6647 <tr>
6648 <th width="10%">NAME</th>
6649 <th width="8%">TYPE</th>
6650 <th width="4%">VALUE</th>
6651 <th>DESCRIPTION</th>
6652 <th width="10%">GUARD</th>
6653 </tr>
6654 <tr>
6655 <td>channel</td>
6656 <td>U16</td>
6657 <td> </td>
6658 <td>
6659
6660  
6661 </td>
6662 <td>
6663 <b></b>
6664  
6665 </td>
6666 </tr>
6667 <tr>
6668 <td>name</td>
6669 <td>username</td>
6670 <td> </td>
6671 <td>
6672
6673  
6674 </td>
6675 <td>
6676 <b></b>
6677  
6678 </td>
6679 </tr>
6680 </table>
6681
6682 <h4>
6683 <a name="S4405"></a>ORIGIN: SERVER;
6684 MESSAGE: set_tree</h4>
6685 NUMERIC TYPE (hex): 4405<p>
6686 </p>
6687 <table border="1" width="100%">
6688 <tr>
6689 <th width="10%">NAME</th>
6690 <th width="8%">TYPE</th>
6691 <th width="4%">VALUE</th>
6692 <th>DESCRIPTION</th>
6693 <th width="10%">GUARD</th>
6694 </tr>
6695 <tr>
6696 <td>channel</td>
6697 <td>U16</td>
6698 <td> </td>
6699 <td>
6700
6701  
6702 </td>
6703 <td>
6704 <b></b>
6705  
6706 </td>
6707 </tr>
6708 <tr>
6709 <td>tree</td>
6710 <td>TREE</td>
6711 <td> </td>
6712 <td>
6713
6714  
6715 </td>
6716 <td>
6717 <b></b>
6718  
6719 </td>
6720 </tr>
6721 </table>
6722
6723 <h4>
6724 <a name="S4406"></a>ORIGIN: SERVER;
6725 MESSAGE: upd_tree</h4>
6726 NUMERIC TYPE (hex): 4406<p>
6727 </p>
6728 <table border="1" width="100%">
6729 <tr>
6730 <th width="10%">NAME</th>
6731 <th width="8%">TYPE</th>
6732 <th width="4%">VALUE</th>
6733 <th>DESCRIPTION</th>
6734 <th width="10%">GUARD</th>
6735 </tr>
6736 <tr>
6737 <td>channel</td>
6738 <td>U16</td>
6739 <td> </td>
6740 <td>
6741
6742  
6743 </td>
6744 <td>
6745 <b></b>
6746  
6747 </td>
6748 </tr>
6749 <tr>
6750 <td>tree</td>
6751 <td>TREE</td>
6752 <td> </td>
6753 <td>
6754
6755  
6756 </td>
6757 <td>
6758 <b></b>
6759  
6760 </td>
6761 </tr>
6762 </table>
6763
6764 <h4>
6765 <a name="S4409"></a>ORIGIN: SERVER;
6766 MESSAGE: superko</h4>
6767 NUMERIC TYPE (hex): 4409<p>
6768 Superko-warning.
6769 </p>
6770 <table border="1" width="100%">
6771 <tr>
6772 <th width="10%">NAME</th>
6773 <th width="8%">TYPE</th>
6774 <th width="4%">VALUE</th>
6775 <th>DESCRIPTION</th>
6776 <th width="10%">GUARD</th>
6777 </tr>
6778 <tr>
6779 <td>channel</td>
6780 <td>U16</td>
6781 <td> </td>
6782 <td>
6783
6784  
6785 </td>
6786 <td>
6787 <b></b>
6788  
6789 </td>
6790 </tr>
6791 </table>
6792
6793 <h4>
6794 <a name="S440b"></a>ORIGIN: SERVER;
6795 MESSAGE: final_result</h4>
6796 NUMERIC TYPE (hex): 440b<p>
6797 </p>
6798 <table border="1" width="100%">
6799 <tr>
6800 <th width="10%">NAME</th>
6801 <th width="8%">TYPE</th>
6802 <th width="4%">VALUE</th>
6803 <th>DESCRIPTION</th>
6804 <th width="10%">GUARD</th>
6805 </tr>
6806 <tr>
6807 <td>channel</td>
6808 <td>U16</td>
6809 <td> </td>
6810 <td>
6811
6812  
6813 </td>
6814 <td>
6815 <b></b>
6816  
6817 </td>
6818 </tr>
6819 <tr>
6820 <td>blackscore</td>
6821 <td>scorevalues</td>
6822 <td> </td>
6823 <td>
6824
6825  
6826 </td>
6827 <td>
6828 <b></b>
6829  
6830 </td>
6831 </tr>
6832 <tr>
6833 <td>whitescore</td>
6834 <td>scorevalues</td>
6835 <td> </td>
6836 <td>
6837
6838  
6839 </td>
6840 <td>
6841 <b></b>
6842  
6843 </td>
6844 </tr>
6845 </table>
6846
6847 <h4>
6848 <a name="S440c"></a>ORIGIN: SERVER;
6849 MESSAGE: out_of_time</h4>
6850 NUMERIC TYPE (hex): 440c<p>
6851 <p>Sent when the user is out of time and moves, or when the opponent
6852 requests <a href="#S0008">userinfo(0008)</a>.</p>
6853 </p>
6854 <table border="1" width="100%">
6855 <tr>
6856 <th width="10%">NAME</th>
6857 <th width="8%">TYPE</th>
6858 <th width="4%">VALUE</th>
6859 <th>DESCRIPTION</th>
6860 <th width="10%">GUARD</th>
6861 </tr>
6862 <tr>
6863 <td>channel</td>
6864 <td>U16</td>
6865 <td> </td>
6866 <td>
6867
6868  
6869 </td>
6870 <td>
6871 <b></b>
6872  
6873 </td>
6874 </tr>
6875 <tr>
6876 <td>player</td>
6877 <td>U8</td>
6878 <td> </td>
6879 <td>
6880
6881  
6882 </td>
6883 <td>
6884 <b></b>
6885  
6886 </td>
6887 </tr>
6888 </table>
6889
6890 <h4>
6891 <a name="S440e"></a>ORIGIN: SERVER;
6892 MESSAGE: req_undo</h4>
6893 NUMERIC TYPE (hex): 440e<p>
6894 </p>
6895 <table border="1" width="100%">
6896 <tr>
6897 <th width="10%">NAME</th>
6898 <th width="8%">TYPE</th>
6899 <th width="4%">VALUE</th>
6900 <th>DESCRIPTION</th>
6901 <th width="10%">GUARD</th>
6902 </tr>
6903 <tr>
6904 <td>channel</td>
6905 <td>U16</td>
6906 <td> </td>
6907 <td>
6908
6909  
6910 </td>
6911 <td>
6912 <b></b>
6913  
6914 </td>
6915 </tr>
6916 </table>
6917
6918 <h4>
6919 <a name="S4410"></a>ORIGIN: SERVER;
6920 MESSAGE: resign_game</h4>
6921 NUMERIC TYPE (hex): 4410<p>
6922 </p>
6923 <table border="1" width="100%">
6924 <tr>
6925 <th width="10%">NAME</th>
6926 <th width="8%">TYPE</th>
6927 <th width="4%">VALUE</th>
6928 <th>DESCRIPTION</th>
6929 <th width="10%">GUARD</th>
6930 </tr>
6931 <tr>
6932 <td>channel</td>
6933 <td>U16</td>
6934 <td> </td>
6935 <td>
6936
6937  
6938 </td>
6939 <td>
6940 <b></b>
6941  
6942 </td>
6943 </tr>
6944 <tr>
6945 <td>player</td>
6946 <td>U8</td>
6947 <td> </td>
6948 <td>
6949
6950  
6951 </td>
6952 <td>
6953 <b></b>
6954  
6955 </td>
6956 </tr>
6957 </table>
6958
6959 <h4>
6960 <a name="S4415"></a>ORIGIN: SERVER;
6961 MESSAGE: game_error</h4>
6962 NUMERIC TYPE (hex): 4415<p>
6963 </p>
6964 <table border="1" width="100%">
6965 <tr>
6966 <th width="10%">NAME</th>
6967 <th width="8%">TYPE</th>
6968 <th width="4%">VALUE</th>
6969 <th>DESCRIPTION</th>
6970 <th width="10%">GUARD</th>
6971 </tr>
6972 <tr>
6973 <td>channel</td>
6974 <td>U16</td>
6975 <td> </td>
6976 <td>
6977
6978  
6979 </td>
6980 <td>
6981 <b></b>
6982  
6983 </td>
6984 </tr>
6985 <tr>
6986 <td>message</td>
6987 <td>CONSTANT</td>
6988 <td>Sorry, this is a lecture game. Only authorized players are allowed to make comments. </td>
6989 <td>
6990
6991  
6992 </td>
6993 <td>
6994 <b></b>
6995  
6996 </td>
6997 </tr>
6998 </table>
6999
7000 <h4>
7001 <a name="S441a"></a>ORIGIN: SERVER;
7002 MESSAGE: set_teacher</h4>
7003 NUMERIC TYPE (hex): 441a<p>
7004 </p>
7005 <table border="1" width="100%">
7006 <tr>
7007 <th width="10%">NAME</th>
7008 <th width="8%">TYPE</th>
7009 <th width="4%">VALUE</th>
7010 <th>DESCRIPTION</th>
7011 <th width="10%">GUARD</th>
7012 </tr>
7013 <tr>
7014 <td>channel</td>
7015 <td>U16</td>
7016 <td> </td>
7017 <td>
7018
7019  
7020 </td>
7021 <td>
7022 <b></b>
7023  
7024 </td>
7025 </tr>
7026 <tr>
7027 <td>name</td>
7028 <td>username</td>
7029 <td> </td>
7030 <td>
7031
7032  
7033 </td>
7034 <td>
7035 <b></b>
7036  
7037 </td>
7038 </tr>
7039 </table>
7040
7041 <h4>
7042 <a name="S441d"></a>ORIGIN: SERVER;
7043 MESSAGE: owner_left</h4>
7044 NUMERIC TYPE (hex): 441d<p>
7045 </p>
7046 <table border="1" width="100%">
7047 <tr>
7048 <th width="10%">NAME</th>
7049 <th width="8%">TYPE</th>
7050 <th width="4%">VALUE</th>
7051 <th>DESCRIPTION</th>
7052 <th width="10%">GUARD</th>
7053 </tr>
7054 <tr>
7055 <td>channel</td>
7056 <td>U16</td>
7057 <td> </td>
7058 <td>
7059
7060  
7061 </td>
7062 <td>
7063 <b></b>
7064  
7065 </td>
7066 </tr>
7067 <tr>
7068 <td>message</td>
7069 <td>CONSTANT</td>
7070 <td>Sorry, the owner of this game has left. Nobody will be allowed to edit it until the owner returns. </td>
7071 <td>
7072
7073  
7074 </td>
7075 <td>
7076 <b></b>
7077  
7078 </td>
7079 </tr>
7080 </table>
7081
7082 <h4>
7083 <a name="S441e"></a>ORIGIN: SERVER;
7084 MESSAGE: teacher_left</h4>
7085 NUMERIC TYPE (hex): 441e<p>
7086 Unclear.
7087 </p>
7088 <table border="1" width="100%">
7089 <tr>
7090 <th width="10%">NAME</th>
7091 <th width="8%">TYPE</th>
7092 <th width="4%">VALUE</th>
7093 <th>DESCRIPTION</th>
7094 <th width="10%">GUARD</th>
7095 </tr>
7096 <tr>
7097 <td>channel</td>
7098 <td>U16</td>
7099 <td> </td>
7100 <td>
7101
7102  
7103 </td>
7104 <td>
7105 <b></b>
7106  
7107 </td>
7108 </tr>
7109 </table>
7110
7111 <h4>
7112 <a name="S4422"></a>ORIGIN: SERVER;
7113 MESSAGE: allow_user_result</h4>
7114 NUMERIC TYPE (hex): 4422<p>
7115 </p>
7116 <table border="1" width="100%">
7117 <tr>
7118 <th width="10%">NAME</th>
7119 <th width="8%">TYPE</th>
7120 <th width="4%">VALUE</th>
7121 <th>DESCRIPTION</th>
7122 <th width="10%">GUARD</th>
7123 </tr>
7124 <tr>
7125 <td>message</td>
7126 <td>CONSTANT</td>
7127 <td>User "%s" will now be allowed full access to your game. </td>
7128 <td>
7129
7130  
7131 </td>
7132 <td>
7133 <b></b>
7134  
7135 </td>
7136 </tr>
7137 <tr>
7138 <td>channel</td>
7139 <td>U16</td>
7140 <td> </td>
7141 <td>
7142
7143  
7144 </td>
7145 <td>
7146 <b></b>
7147  
7148 </td>
7149 </tr>
7150 </table>
7151
7152 <h4>
7153 <a name="S4424"></a>ORIGIN: SERVER;
7154 MESSAGE: allow_user_result</h4>
7155 NUMERIC TYPE (hex): 4424<p>
7156 </p>
7157 <table border="1" width="100%">
7158 <tr>
7159 <th width="10%">NAME</th>
7160 <th width="8%">TYPE</th>
7161 <th width="4%">VALUE</th>
7162 <th>DESCRIPTION</th>
7163 <th width="10%">GUARD</th>
7164 </tr>
7165 <tr>
7166 <td>message</td>
7167 <td>CONSTANT</td>
7168 <td>Sorry, user "%s" is a guest and cannot be allowed full access to your game. </td>
7169 <td>
7170
7171  
7172 </td>
7173 <td>
7174 <b></b>
7175  
7176 </td>
7177 </tr>
7178 <tr>
7179 <td>channel</td>
7180 <td>U16</td>
7181 <td> </td>
7182 <td>
7183
7184  
7185 </td>
7186 <td>
7187 <b></b>
7188  
7189 </td>
7190 </tr>
7191 </table>
7192
7193 <h4>
7194 <a name="S4425"></a>ORIGIN: SERVER;
7195 MESSAGE: allow_user_result</h4>
7196 NUMERIC TYPE (hex): 4425<p>
7197 </p>
7198 <table border="1" width="100%">
7199 <tr>
7200 <th width="10%">NAME</th>
7201 <th width="8%">TYPE</th>
7202 <th width="4%">VALUE</th>
7203 <th>DESCRIPTION</th>
7204 <th width="10%">GUARD</th>
7205 </tr>
7206 <tr>
7207 <td>message</td>
7208 <td>CONSTANT</td>
7209 <td>Sorry, user "%s" does not seem to exist and cannot be allowed into your game. </td>
7210 <td>
7211
7212  
7213 </td>
7214 <td>
7215 <b></b>
7216  
7217 </td>
7218 </tr>
7219 <tr>
7220 <td>channel</td>
7221 <td>U16</td>
7222 <td> </td>
7223 <td>
7224
7225  
7226 </td>
7227 <td>
7228 <b></b>
7229  
7230 </td>
7231 </tr>
7232 </table>
7233
7234 <h4>
7235 <a name="S4428"></a>ORIGIN: SERVER;
7236 MESSAGE: add_tree</h4>
7237 NUMERIC TYPE (hex): 4428<p>
7238 <p>See <a href="#S4405">set_tree(4405)</a>. In addition, flags the tree as being
7239 uploaded completely.</p>
7240 </p>
7241 <table border="1" width="100%">
7242 <tr>
7243 <th width="10%">NAME</th>
7244 <th width="8%">TYPE</th>
7245 <th width="4%">VALUE</th>
7246 <th>DESCRIPTION</th>
7247 <th width="10%">GUARD</th>
7248 </tr>
7249 <tr>
7250 <td>channel</td>
7251 <td>U16</td>
7252 <td> </td>
7253 <td>
7254
7255  
7256 </td>
7257 <td>
7258 <b></b>
7259  
7260 </td>
7261 </tr>
7262 <tr>
7263 <td>tree</td>
7264 <td>TREE</td>
7265 <td> </td>
7266 <td>
7267
7268  
7269 </td>
7270 <td>
7271 <b></b>
7272  
7273 </td>
7274 </tr>
7275 </table>
7276
7277 <h4>
7278 <a name="S4429"></a>ORIGIN: SERVER;
7279 MESSAGE: reject_challenge</h4>
7280 NUMERIC TYPE (hex): 4429<p>
7281 Reject a challenge by a given user. Not checked.
7282 </p>
7283 <table border="1" width="100%">
7284 <tr>
7285 <th width="10%">NAME</th>
7286 <th width="8%">TYPE</th>
7287 <th width="4%">VALUE</th>
7288 <th>DESCRIPTION</th>
7289 <th width="10%">GUARD</th>
7290 </tr>
7291 <tr>
7292 <td>channel</td>
7293 <td>U16</td>
7294 <td> </td>
7295 <td>
7296
7297  
7298 </td>
7299 <td>
7300 <b></b>
7301  
7302 </td>
7303 </tr>
7304 <tr>
7305 <td>name</td>
7306 <td>username</td>
7307 <td> </td>
7308 <td>
7309
7310  
7311 </td>
7312 <td>
7313 <b></b>
7314  
7315 </td>
7316 </tr>
7317 <tr>
7318 <td>gametype</td>
7319 <td>U8</td>
7320 <td> </td>
7321 <td>
7322
7323  
7324 </td>
7325 <td>
7326 <b></b>
7327  
7328 </td>
7329 </tr>
7330 <tr>
7331 <td>cid</td>
7332 <td>CLIENTID8</td>
7333 <td> </td>
7334 <td>
7335
7336  
7337 </td>
7338 <td>
7339 <b></b>
7340  
7341 </td>
7342 </tr>
7343 <tr>
7344 <td>rules</td>
7345 <td>rules</td>
7346 <td> </td>
7347 <td>
7348
7349  
7350 </td>
7351 <td>
7352 <b></b>
7353  
7354 </td>
7355 </tr>
7356 </table>
7357
7358 <h4>
7359 <a name="S442f"></a>ORIGIN: SERVER;
7360 MESSAGE: new_game</h4>
7361 NUMERIC TYPE (hex): 442f<p>
7362 <p>Notifies the client that a new game has been created. This
7363 message is sent long *after* upd_games and upd_observers etc.
7364 have been received. *sigh*</p>
7365 </p>
7366 <table border="1" width="100%">
7367 <tr>
7368 <th width="10%">NAME</th>
7369 <th width="8%">TYPE</th>
7370 <th width="4%">VALUE</th>
7371 <th>DESCRIPTION</th>
7372 <th width="10%">GUARD</th>
7373 </tr>
7374 <tr>
7375 <td>channel</td>
7376 <td>U16</td>
7377 <td> </td>
7378 <td>
7379
7380  
7381 </td>
7382 <td>
7383 <b></b>
7384  
7385 </td>
7386 </tr>
7387 <tr>
7388 <td>cid</td>
7389 <td>CLIENTID16</td>
7390 <td> </td>
7391 <td>
7392
7393  
7394 </td>
7395 <td>
7396 <b></b>
7397  
7398 </td>
7399 </tr>
7400 </table>
7401
7402 <h4>
7403 <a name="S4433"></a>ORIGIN: SERVER;
7404 MESSAGE: req_result</h4>
7405 NUMERIC TYPE (hex): 4433<p>
7406 Unclear.
7407 </p>
7408 <table border="1" width="100%">
7409 <tr>
7410 <th width="10%">NAME</th>
7411 <th width="8%">TYPE</th>
7412 <th width="4%">VALUE</th>
7413 <th>DESCRIPTION</th>
7414 <th width="10%">GUARD</th>
7415 </tr>
7416 <tr>
7417 <td>channel</td>
7418 <td>U16</td>
7419 <td> </td>
7420 <td>
7421 # # recv_result(?)
7422
7423  
7424 </td>
7425 <td>
7426 <b></b>
7427  
7428 </td>
7429 </tr>
7430 </table>
7431
7432 <h4>
7433 <a name="S4434"></a>ORIGIN: SERVER;
7434 MESSAGE: set_quiet</h4>
7435 NUMERIC TYPE (hex): 4434<p>
7436 <p>Sets (or clears) the quiet flag on a game.</p>
7437 </p>
7438 <table border="1" width="100%">
7439 <tr>
7440 <th width="10%">NAME</th>
7441 <th width="8%">TYPE</th>
7442 <th width="4%">VALUE</th>
7443 <th>DESCRIPTION</th>
7444 <th width="10%">GUARD</th>
7445 </tr>
7446 <tr>
7447 <td>channel</td>
7448 <td>U16</td>
7449 <td> </td>
7450 <td>
7451
7452  
7453 </td>
7454 <td>
7455 <b></b>
7456  
7457 </td>
7458 </tr>
7459 <tr>
7460 <td>quiet</td>
7461 <td>flag</td>
7462 <td> </td>
7463 <td>
7464
7465  
7466 </td>
7467 <td>
7468 <b></b>
7469  
7470 </td>
7471 </tr>
7472 </table>
7473
7474 <h4>
7475 <a name="S4437"></a>ORIGIN: SERVER;
7476 MESSAGE: set_gametime</h4>
7477 NUMERIC TYPE (hex): 4437<p>
7478 <p>Sent when joining a game. Gives the remaining time +
7479 periods/moves for the players, to correctly initialize the clocks.</p>
7480 </p>
7481 <table border="1" width="100%">
7482 <tr>
7483 <th width="10%">NAME</th>
7484 <th width="8%">TYPE</th>
7485 <th width="4%">VALUE</th>
7486 <th>DESCRIPTION</th>
7487 <th width="10%">GUARD</th>
7488 </tr>
7489 <tr>
7490 <td>channel</td>
7491 <td>U16</td>
7492 <td> </td>
7493 <td>
7494
7495  
7496 </td>
7497 <td>
7498 <b></b>
7499  
7500 </td>
7501 </tr>
7502 <tr>
7503 <td>btime</td>
7504 <td>time</td>
7505 <td> </td>
7506 <td>
7507
7508  
7509 </td>
7510 <td>
7511 <b></b>
7512  
7513 </td>
7514 </tr>
7515 <tr>
7516 <td>bcount</td>
7517 <td>U16</td>
7518 <td> </td>
7519 <td>
7520
7521  
7522 </td>
7523 <td>
7524 <b></b>
7525  
7526 </td>
7527 </tr>
7528 <tr>
7529 <td>wtime</td>
7530 <td>time</td>
7531 <td> </td>
7532 <td>
7533
7534  
7535 </td>
7536 <td>
7537 <b></b>
7538  
7539 </td>
7540 </tr>
7541 <tr>
7542 <td>wcount</td>
7543 <td>U16</td>
7544 <td> </td>
7545 <td>
7546
7547  
7548 </td>
7549 <td>
7550 <b></b>
7551  
7552 </td>
7553 </tr>
7554 </table>
7555
7556 <h4>
7557 <a name="S443b"></a>ORIGIN: SERVER;
7558 MESSAGE: del_global_challenge</h4>
7559 NUMERIC TYPE (hex): 443b<p>
7560 <p>
7561 Remove a game from the global challenge list (open game list).
7562 </p>
7563 </p>
7564 <table border="1" width="100%">
7565 <tr>
7566 <th width="10%">NAME</th>
7567 <th width="8%">TYPE</th>
7568 <th width="4%">VALUE</th>
7569 <th>DESCRIPTION</th>
7570 <th width="10%">GUARD</th>
7571 </tr>
7572 <tr>
7573 <td>channel</td>
7574 <td>U16</td>
7575 <td> </td>
7576 <td>
7577
7578  
7579 </td>
7580 <td>
7581 <b></b>
7582  
7583 </td>
7584 </tr>
7585 <tr>
7586 <td>game</td>
7587 <td>U16</td>
7588 <td> </td>
7589 <td>
7590
7591  
7592 </td>
7593 <td>
7594 <b></b>
7595  
7596 </td>
7597 </tr>
7598 </table>
7599 </body>
7600 </html>