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