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