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