ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.32
Committed: Mon Jul 21 13:50:57 2003 UTC (20 years, 10 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.31: +229 -243 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 <html>
2 <head>
3 <title>KGS Protocol Description</title>
4 <!--
5 Copyright (C) 2003 Marc Lehmannn &lt;pcg@goof.com&gt;
6
7 You can redistribute and/or modify this document under the terms of
8 the GNU General Public License as published by the Free Software
9 Foundation; either version 2 of the License, or (at your option) any
10 later version.
11
12 This document is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 -->
21 </head>
22 <body>
23
24 <h1>$Revision: 1.31 $</h1>
25
26 <h1>KGS Protocol Description</h1>
27
28 <p>This XML document describes the KGS protocol. It is also used
29 to automatically generate the perl parser for all the messages and
30 structures in the protocol. Adapting it to other languages should be
31 trivial.</p>
32
33 <p>
34 <b>Please note that the author of KGS has told me that he will
35 change the protocol in response to my efforts. No problems with
36 changing the protocol for good, but he does this just to make it
37 more difficult to reverse-engineer it, since his changes are neither
38 required, nor useful (they just make the protocol less robust, without
39 adding added value). He doesn't even care that this locks out some
40 users who cannot upgrade (cgoban2 isn't available for their platform
41 anymore). It hurts to see such a waste of time and efforts that could have been used
42 to fix bugs or improve the client...</b>
43 </p>
44
45 <p>If you feel you need to update the visual appearance of this
46 document, feel free to look <tt>doc/doc2html.xsl</tt> and improve
47 it.</p>
48
49 <p>The current version of this document can always be found at
50 <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/kgsueme/kgsueme/doc/protocol.xml?rev=HEAD&amp;content-type=text/xml">here</a>, while
51 the HTML version of it can be found
52 <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/kgsueme/kgsueme/doc/protocol.html?rev=HEAD&amp;content-type=text/html">here</a>.
53 (update: sourceforge is weeks behind on their anonymous cvs servers so the above might be out-of-date. sorry.)</p>
54
55 <h2>Structure and conventions of this document and the protocol</h2>
56
57 <p>"ORIGIN: CLIENT" means messages send from the client to the server,
58 while "ORIGIN: SERVER" means messages send by the server to the
59 client.</p>
60
61 <p>Everything on the wire is in little-endian format (what a shame).</p>
62
63 <p>Primitive types are mostly integers (signed
64 "<code>I</code>&lt;bits&gt;", unsigned "<code>U</code>&lt;bits&gt;"),
65 ascii strings ("<code>username</code>"), or zero-terminated
66 UCS2-Strings ("<code>STRING</code>"). Yes, I know java is supposed to
67 do UTF-16, but no implementation seems to care...</p>
68
69 <p>For the rest, go figure or bug me, <a href="mailto:pcg@goof.com">Marc Lehmann &lt;pcg@goof.com&gt;</a>
70 </p>
71
72 <h2>Stream and message structure.</h2>
73
74 <p>After connecting to the server, a handshake byte is sent. It's
75 the major version number of the protocol the client expects to
76 receive. Version 3 and 4 are mostly the same, except that Version 4
77 clients expect server messages to be compressed, version 3 clients
78 not.</p>
79
80 <p>The server sends back his protocol number, which is always 3 in
81 the current protocol. Most of the protocol variation is determined by
82 the server using the client version that is used in the initial login
83 message, not the initial handshake byte.</p>
84
85 <p>After the initial handshake, the client sends uncompressed
86 messages, while the server sends back a zlib-compressed
87 stream (<a href="http://rfc1950.x42.com/">rfc1950</a> and <a href="http://rfc1950.x42.com/">rfc1951</a>).</p>
88
89 <p>All messages have the same header:</p>
90
91 <h4>STRUCTURE message_header</h4>
92 <p>
93 </p>
94 <table border="1" width="100%">
95 <tr>
96 <th width="10%">NAME</th>
97 <th width="10%">TYPE</th>
98 <th width="15%">DEFAULT</th>
99 <th>DESCRIPTION</th>
100 <th width="15%">DEC-GUARD</th>
101 </tr>
102 <tr>
103 <td>_unknown</td>
104 <td>U16</td>
105 <td> </td>
106 <td>
107
108  
109 </td>
110 <td>
111 <b></b>
112  
113 </td>
114 </tr>
115 <tr>
116 <td>length</td>
117 <td>U16</td>
118 <td> </td>
119 <td>
120
121
122  
123 </td>
124 <td>
125 <b></b>
126  
127 </td>
128 </tr>
129 <tr>
130 <td>type</td>
131 <td>U16</td>
132 <td> </td>
133 <td>
134
135  
136 </td>
137 <td>
138 <b></b>
139  
140 </td>
141 </tr>
142 </table>
143
144 <h2>Primitive types used in the protocol.</h2>
145
146 <p>Apart from the basic types, I need to define some extra types to
147 deal with fixed-point values (based on integer types) or fixed-length
148 strings (either 7-bit-ascii or more limited (<code>A</code>), or UCS-2
149 based (<code>S</code>)).</p>
150
151 <h4>TYPE username</h4>
152 BASE TYPE A, LENGTH 10, MULTIPLIER <br />
153
154 <p>The basic user or login name, used throughout the protocol
155 as a handle to the user.</p>
156
157 <h4>TYPE roomname</h4>
158 BASE TYPE S, LENGTH 25, MULTIPLIER <br />
159 <!-- argh, how horribly broken -->
160
161 <p>Many strings in the protocol are fixed-width for no good reason
162 (maybe this is one reason for using compression in newer versions, as
163 the packets itself are wasting lots of space.</p>
164
165 <h4>TYPE realname</h4>
166 BASE TYPE S, LENGTH 50, MULTIPLIER <br />
167 <h4>TYPE email</h4>
168 BASE TYPE S, LENGTH 70, MULTIPLIER <br />
169 <h4>TYPE userinfo</h4>
170 BASE TYPE S, LENGTH 1000, MULTIPLIER <br />
171 <h4>TYPE url</h4>
172 BASE TYPE A, LENGTH 100, MULTIPLIER <br />
173
174 <p>Used in user_record.</p>
175
176 <h4>TYPE locale</h4>
177 BASE TYPE A, LENGTH 5, MULTIPLIER <br />
178
179 <p>A kind of locale specifier. It seems the general format seems to be
180 lowercase language, underscore, uppercase location, e.g. en_US. More
181 fancy specifications don't fit.</p>
182
183 <h4>TYPE flag</h4>
184 BASE TYPE U8, LENGTH , MULTIPLIER 1<br />
185
186 <p>Just a simple boolean value. 0 means false, and 1 generally true,
187 but I suggest ccepting != 0 as true.</p>
188
189 <h4>TYPE komi16</h4>
190 BASE TYPE I16, LENGTH , MULTIPLIER 2<br />
191 <h4>TYPE komi32</h4>
192 BASE TYPE I32, LENGTH , MULTIPLIER 2<br />
193 <h4>TYPE komi324</h4>
194 BASE TYPE I32, LENGTH , MULTIPLIER 4<br />
195
196 <p>Komi values are multiplied by 2 to make them integer in the
197 protocol. Well, *most* of the time at least...</p>
198
199 <h4>TYPE result</h4>
200 BASE TYPE I32, LENGTH , MULTIPLIER 2<br />
201
202 <p>The game result is also multiplied by two to give it higher
203 resolution. There are also special values for wins by time etc., either
204 in result or in the score* types, or both :)</p>
205
206 <h4>TYPE score16</h4>
207 BASE TYPE I16, LENGTH , MULTIPLIER 4<br />
208 <h4>TYPE score32</h4>
209 BASE TYPE I32, LENGTH , MULTIPLIER 4<br />
210 <h4>TYPE score1000</h4>
211 BASE TYPE I32, LENGTH , MULTIPLIER 1000<br />
212
213 <p>A score value (used for displaying the score at the end of a game)
214 are multiplied by four for a change (the 0.25 resolution is not
215 used). In game structures it is encoded by dividing by two, though, so
216 watch out! And in some others, it's encoded by multiplying by 1000...
217 yuck!</p>
218
219 <h4>TYPE time</h4>
220 BASE TYPE U32, LENGTH , MULTIPLIER 1000<br />
221
222 <p>Time values are multiplied by 1000, giving them millisecond
223 accuracy.</p>
224
225 <h4>TYPE timestamp</h4>
226 BASE TYPE U64, LENGTH , MULTIPLIER 1000<br />
227
228 <p>64 bit timeval, milliseconds since posix epoch, e.g. <code>my
229 ($year, $month, $day) = (gmtime $date * 0.001)[5,4,3];</code>
230 </p>
231
232 <h4>TYPE password</h4>
233 BASE TYPE U64, LENGTH , MULTIPLIER <br />
234
235 <p>Password is a number calculated as follows (VERY insecure, basically
236 plaintext!): <code>password = 0; for char in characters do password ←
237 password * 1055 + ascii_code (char)</code>
238 </p>
239
240 <h2>Constants, enumeration and set types used in the protocol.</h2>
241
242 <p>Baaah... not yet.</p>
243
244 <h2>Structs used in send &amp; receive messages</h2>
245
246 <h4>STRUCTURE user</h4>
247 CLASS: KGS::User<br />
248 <p>
249
250 <p>Everywhere a user + flags is required, even used in some places
251 where only a username is required. I see no general rule on when a
252 complete user and when a partial user is required.</p>
253 </p>
254 <table border="1" width="100%">
255 <tr>
256 <th width="10%">NAME</th>
257 <th width="10%">TYPE</th>
258 <th width="15%">DEFAULT</th>
259 <th>DESCRIPTION</th>
260 <th width="15%">DEC-GUARD</th>
261 </tr>
262 <tr>
263 <td>name</td>
264 <td>username</td>
265 <td> </td>
266 <td>
267
268  
269 </td>
270 <td>
271 <b></b>
272  
273 </td>
274 </tr>
275 <tr>
276 <td>flags</td>
277 <td>U32</td>
278 <td>1 </td>
279 <td>
280
281  
282 </td>
283 <td>
284 <b></b>
285  
286 </td>
287 </tr>
288 </table>
289
290 <h4>STRUCTURE rules</h4>
291 CLASS: KGS::Rules<br />
292 <p>
293
294 <p>This structure is used for challanges as well as in the special
295 TREE "subprotocol". It tightly encodes the game parameters.</p>
296 </p>
297 <table border="1" width="100%">
298 <tr>
299 <th width="10%">NAME</th>
300 <th width="10%">TYPE</th>
301 <th width="15%">DEFAULT</th>
302 <th>DESCRIPTION</th>
303 <th width="15%">DEC-GUARD</th>
304 </tr>
305 <tr>
306 <td>ruleset</td>
307 <td>U8</td>
308 <td> </td>
309 <td>
310
311  
312 </td>
313 <td>
314 <b></b>
315  
316 </td>
317 </tr>
318 <tr>
319 <td>size</td>
320 <td>U8</td>
321 <td> </td>
322 <td>
323
324  
325 </td>
326 <td>
327 <b></b>
328  
329 </td>
330 </tr>
331 <tr>
332 <td>handicap</td>
333 <td>U8</td>
334 <td> </td>
335 <td>
336
337  
338 </td>
339 <td>
340 <b></b>
341  
342 </td>
343 </tr>
344 <tr>
345 <td>komi</td>
346 <td>komi16</td>
347 <td> </td>
348 <td>
349
350  
351 </td>
352 <td>
353 <b></b>
354  
355 </td>
356 </tr>
357 <tr>
358 <td>timesys</td>
359 <td>U8</td>
360 <td> </td>
361 <td>
362
363  
364 </td>
365 <td>
366 <b></b>
367  
368 </td>
369 </tr>
370 <tr>
371 <td>time</td>
372 <td>U32</td>
373 <td> </td>
374 <td>
375
376  
377 </td>
378 <td>
379 <b></b>
380  
381 </td>
382 </tr>
383 <tr>
384 <td>interval</td>
385 <td>U32</td>
386 <td> </td>
387 <td>
388 byo-yomi time / canadian time
389
390  
391 </td>
392 <td>
393 <b></b>
394  
395 </td>
396 </tr>
397 <tr>
398 <td>count</td>
399 <td>U16</td>
400 <td> </td>
401 <td>
402 periods / moves
403
404  
405 </td>
406 <td>
407 <b></b>
408  
409 </td>
410 </tr>
411 </table>
412
413 <h2>Structs used in messages from the client</h2>
414
415 <h2>Client-generated messages</h2>
416
417 <h4>
418 <a name="C0000"></a>ORIGIN: CLIENT;
419 MESSAGE: login</h4>
420 NUMERIC TYPE (hex): 0000<p>
421
422 <p>Sent to login, usually the first message sent. The password needs to be set when the
423 guest flag is true.
424 Possible replies: <a href="#S0001">login(0001)</a>
425 <a href="#S0002">login(0002)</a>
426 <a href="#S0003">login(0003)</a>
427 <a href="#S0004">login(0004)</a>
428 <a href="#S0005">login(0005)</a>
429 <a href="#S0006">login(0006)</a>
430 <a href="#S0018">login(0018)</a>
431 <a href="#S0022">login(0022)</a>. Followed by: <a href="#S001b">timewarning_default(001b)</a> <a href="#S0411">chal_defaults(0411)</a>
432 </p>
433 </p>
434 <table border="1" width="100%">
435 <tr>
436 <th width="10%">NAME</th>
437 <th width="10%">TYPE</th>
438 <th width="15%">DEFAULT</th>
439 <th>DESCRIPTION</th>
440 <th width="15%">DEC-GUARD</th>
441 </tr>
442 <tr>
443 <td>ver_major</td>
444 <td>U32</td>
445 <td>2 </td>
446 <td>
447
448  
449 </td>
450 <td>
451 <b></b>
452  
453 </td>
454 </tr>
455 <tr>
456 <td>ver_minor</td>
457 <td>U32</td>
458 <td>5 </td>
459 <td>
460
461  
462 </td>
463 <td>
464 <b></b>
465  
466 </td>
467 </tr>
468 <tr>
469 <td>ver_micro</td>
470 <td>U32</td>
471 <td>1 </td>
472 <td>
473
474  
475 </td>
476 <td>
477 <b></b>
478  
479 </td>
480 </tr>
481 <tr>
482 <td>name</td>
483 <td>username</td>
484 <td> </td>
485 <td>
486
487  
488 </td>
489 <td>
490 <b></b>
491  
492 </td>
493 </tr>
494 <tr>
495 <td>password</td>
496 <td>password</td>
497 <td>0 </td>
498 <td>
499
500  
501 </td>
502 <td>
503 <b></b>
504  
505 </td>
506 </tr>
507 <tr>
508 <td>guest</td>
509 <td>flag</td>
510 <td>1 </td>
511 <td>
512
513  
514 </td>
515 <td>
516 <b></b>
517  
518 </td>
519 </tr>
520 <tr>
521 <td>_unknown3</td>
522 <td>U16</td>
523 <td>0 </td>
524 <td>
525
526  
527 </td>
528 <td>
529 <b></b>
530  
531 </td>
532 </tr>
533 <tr>
534 <td>locale</td>
535 <td>locale</td>
536 <td>"en_US" </td>
537 <td>
538
539  
540 </td>
541 <td>
542 <b></b>
543  
544 </td>
545 </tr>
546 <tr>
547 <td>clientver</td>
548 <td>DATA</td>
549 <td>"1.4.1_01:Swing app:Sun Microsystems Inc." </td>
550 <td>
551 The "default" is the java vm version, not exactly he client version. However,
552 you should always send a text like "Jonathan's C client bersion 0.6" or somesuch,
553 so the server can, if necessary, block broken clients or client versions.
554
555  
556 </td>
557 <td>
558 <b></b>
559  
560 </td>
561 </tr>
562 </table>
563
564 <h4>
565 <a name="C0007"></a>ORIGIN: CLIENT;
566 MESSAGE: req_userinfo</h4>
567 NUMERIC TYPE (hex): 0007<p>
568 <p>Request info about a certain user. Possible reply: <a href="#S0008">userinfo(0008)</a>
569 </p>
570 </p>
571 <table border="1" width="100%">
572 <tr>
573 <th width="10%">NAME</th>
574 <th width="10%">TYPE</th>
575 <th width="15%">DEFAULT</th>
576 <th>DESCRIPTION</th>
577 <th width="15%">DEC-GUARD</th>
578 </tr>
579 <tr>
580 <td>name</td>
581 <td>username</td>
582 <td> </td>
583 <td>
584
585  
586 </td>
587 <td>
588 <b></b>
589  
590 </td>
591 </tr>
592 </table>
593
594 <h4>
595 <a name="C0007"></a>ORIGIN: CLIENT;
596 MESSAGE: update_userinfo</h4>
597 NUMERIC TYPE (hex): 0007<p>
598 <p>Update user info. Message structure is very similar
599 to <a href="#S0008">userinfo(0008)</a>.</p>
600 </p>
601 <table border="1" width="100%">
602 <tr>
603 <th width="10%">NAME</th>
604 <th width="10%">TYPE</th>
605 <th width="15%">DEFAULT</th>
606 <th>DESCRIPTION</th>
607 <th width="15%">DEC-GUARD</th>
608 </tr>
609 <tr>
610 <td>setpass</td>
611 <td>flag</td>
612 <td> </td>
613 <td>
614 Should the password be updated?
615
616  
617 </td>
618 <td>
619 <b></b>
620  
621 </td>
622 </tr>
623 <tr>
624 <td>password</td>
625 <td>password</td>
626 <td>0 </td>
627 <td>
628
629  
630 </td>
631 <td>
632 <b></b>
633  
634 </td>
635 </tr>
636 <tr>
637 <td>realname</td>
638 <td>realname</td>
639 <td> </td>
640 <td>
641
642  
643 </td>
644 <td>
645 <b></b>
646  
647 </td>
648 </tr>
649 <tr>
650 <td>email</td>
651 <td>email</td>
652 <td> </td>
653 <td>
654
655  
656 </td>
657 <td>
658 <b></b>
659  
660 </td>
661 </tr>
662 <tr>
663 <td>info</td>
664 <td>userinfo</td>
665 <td> </td>
666 <td>
667
668  
669 </td>
670 <td>
671 <b></b>
672  
673 </td>
674 </tr>
675 <tr>
676 <td>homepage</td>
677 <td>url</td>
678 <td> </td>
679 <td>
680
681  
682 </td>
683 <td>
684 <b></b>
685  
686 </td>
687 </tr>
688 <tr>
689 <td>_unused</td>
690 <td>U64</td>
691 <td>0 </td>
692 <td>
693
694  
695 </td>
696 <td>
697 <b></b>
698  
699 </td>
700 </tr>
701 <tr>
702 <td>_unused</td>
703 <td>U64</td>
704 <td>0 </td>
705 <td>
706
707  
708 </td>
709 <td>
710 <b></b>
711  
712 </td>
713 </tr>
714 </table>
715
716 <h4>
717 <a name="C0014"></a>ORIGIN: CLIENT;
718 MESSAGE: req_stats</h4>
719 NUMERIC TYPE (hex): 0014<p>
720 <p>Request server statistics. Replied with <a href="#S0015">stats(0015)</a>
721 </p>
722 </p>
723 <table border="1" width="100%">
724 <tr>
725 <th width="10%">NAME</th>
726 <th width="10%">TYPE</th>
727 <th width="15%">DEFAULT</th>
728 <th>DESCRIPTION</th>
729 <th width="15%">DEC-GUARD</th>
730 </tr>
731 </table>
732
733 <h4>
734 <a name="C0016"></a>ORIGIN: CLIENT;
735 MESSAGE: idle_reset</h4>
736 NUMERIC TYPE (hex): 0016<p>
737 <p>Send in response to <a href="#S0016">idle_warn(0016)</a> to keep the server from disconnecting.</p>
738 </p>
739 <table border="1" width="100%">
740 <tr>
741 <th width="10%">NAME</th>
742 <th width="10%">TYPE</th>
743 <th width="15%">DEFAULT</th>
744 <th>DESCRIPTION</th>
745 <th width="15%">DEC-GUARD</th>
746 </tr>
747 </table>
748
749 <h4>
750 <a name="C001d"></a>ORIGIN: CLIENT;
751 MESSAGE: ping</h4>
752 NUMERIC TYPE (hex): 001d<p>
753 <p>Wild guess, I send it in <a href="#S0016">idle_warn(0016)</a>.</p>
754 </p>
755 <table border="1" width="100%">
756 <tr>
757 <th width="10%">NAME</th>
758 <th width="10%">TYPE</th>
759 <th width="15%">DEFAULT</th>
760 <th>DESCRIPTION</th>
761 <th width="15%">DEC-GUARD</th>
762 </tr>
763 </table>
764
765 <h4>
766 <a name="C001e"></a>ORIGIN: CLIENT;
767 MESSAGE: req_usergraph</h4>
768 NUMERIC TYPE (hex): 001e<p>
769 <p>Request user graph data, replied with <a href="#S001e">usergraph(001e)</a>.</p>
770 </p>
771 <table border="1" width="100%">
772 <tr>
773 <th width="10%">NAME</th>
774 <th width="10%">TYPE</th>
775 <th width="15%">DEFAULT</th>
776 <th>DESCRIPTION</th>
777 <th width="15%">DEC-GUARD</th>
778 </tr>
779 <tr>
780 <td>name</td>
781 <td>username</td>
782 <td> </td>
783 <td>
784
785  
786 </td>
787 <td>
788 <b></b>
789  
790 </td>
791 </tr>
792 </table>
793
794 <h4>
795 <a name="C001f"></a>ORIGIN: CLIENT;
796 MESSAGE: fetch_memos</h4>
797 NUMERIC TYPE (hex): 001f<p>
798 <p>Unclear. Fetch all outstanding memos? Replied with <a href="#S001f">memo(001f)</a>
799 </p>
800 </p>
801 <table border="1" width="100%">
802 <tr>
803 <th width="10%">NAME</th>
804 <th width="10%">TYPE</th>
805 <th width="15%">DEFAULT</th>
806 <th>DESCRIPTION</th>
807 <th width="15%">DEC-GUARD</th>
808 </tr>
809 </table>
810
811 <h4>
812 <a name="C0021"></a>ORIGIN: CLIENT;
813 MESSAGE: req_pic</h4>
814 NUMERIC TYPE (hex): 0021<p>
815 <p>Request a user picture from the server. Results in a <a href="#S0021">userpic(0021)</a>
816 or a timeout.</p>
817 </p>
818 <table border="1" width="100%">
819 <tr>
820 <th width="10%">NAME</th>
821 <th width="10%">TYPE</th>
822 <th width="15%">DEFAULT</th>
823 <th>DESCRIPTION</th>
824 <th width="15%">DEC-GUARD</th>
825 </tr>
826 <tr>
827 <td>name</td>
828 <td>username</td>
829 <td> </td>
830 <td>
831
832  
833 </td>
834 <td>
835 <b></b>
836  
837 </td>
838 </tr>
839 </table>
840
841 <h4>
842 <a name="C0021"></a>ORIGIN: CLIENT;
843 MESSAGE: upload_pic</h4>
844 NUMERIC TYPE (hex): 0021<p>
845 Same code as pic_req, but with an additional data section that
846 must contain a JPEG image that is &lt;=7KB. It must have 141×200 pixels.
847 </p>
848 <table border="1" width="100%">
849 <tr>
850 <th width="10%">NAME</th>
851 <th width="10%">TYPE</th>
852 <th width="15%">DEFAULT</th>
853 <th>DESCRIPTION</th>
854 <th width="15%">DEC-GUARD</th>
855 </tr>
856 <tr>
857 <td>name</td>
858 <td>username</td>
859 <td> </td>
860 <td>
861
862  
863 </td>
864 <td>
865 <b></b>
866  
867 </td>
868 </tr>
869 <tr>
870 <td>data</td>
871 <td>DATA</td>
872 <td> </td>
873 <td>
874
875  
876 </td>
877 <td>
878 <b></b>
879  
880 </td>
881 </tr>
882 </table>
883
884 <h4>
885 <a name="C0023"></a>ORIGIN: CLIENT;
886 MESSAGE: send_memo</h4>
887 NUMERIC TYPE (hex): 0023<p>
888 </p>
889 <table border="1" width="100%">
890 <tr>
891 <th width="10%">NAME</th>
892 <th width="10%">TYPE</th>
893 <th width="15%">DEFAULT</th>
894 <th>DESCRIPTION</th>
895 <th width="15%">DEC-GUARD</th>
896 </tr>
897 <tr>
898 <td>name</td>
899 <td>username</td>
900 <td> </td>
901 <td>
902
903  
904 </td>
905 <td>
906 <b></b>
907  
908 </td>
909 </tr>
910 <tr>
911 <td>msg</td>
912 <td>STRING</td>
913 <td> </td>
914 <td>
915
916  
917 </td>
918 <td>
919 <b></b>
920  
921 </td>
922 </tr>
923 </table>
924
925 <h4>
926 <a name="C0100"></a>ORIGIN: CLIENT;
927 MESSAGE: gnotice</h4>
928 NUMERIC TYPE (hex): 0100<p>
929 <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results
930 in a <a href="#S0100">gnotice(0100)</a> sent to all users.</p>
931 </p>
932 <table border="1" width="100%">
933 <tr>
934 <th width="10%">NAME</th>
935 <th width="10%">TYPE</th>
936 <th width="15%">DEFAULT</th>
937 <th>DESCRIPTION</th>
938 <th width="15%">DEC-GUARD</th>
939 </tr>
940 <tr>
941 <td>notice</td>
942 <td>STRING</td>
943 <td> </td>
944 <td>
945
946  
947 </td>
948 <td>
949 <b></b>
950  
951 </td>
952 </tr>
953 </table>
954
955 <h4>
956 <a name="C0318"></a>ORIGIN: CLIENT;
957 MESSAGE: list_rooms</h4>
958 NUMERIC TYPE (hex): 0318<p>
959 <p>List the rooms in a specific group/category. Results in a <a href="#S0318">upd_rooms(0318)</a> message.</p>
960 </p>
961 <table border="1" width="100%">
962 <tr>
963 <th width="10%">NAME</th>
964 <th width="10%">TYPE</th>
965 <th width="15%">DEFAULT</th>
966 <th>DESCRIPTION</th>
967 <th width="15%">DEC-GUARD</th>
968 </tr>
969 <tr>
970 <td>group</td>
971 <td>U8</td>
972 <td> </td>
973 <td>
974
975  
976 </td>
977 <td>
978 <b></b>
979  
980 </td>
981 </tr>
982 </table>
983
984 <h4>
985 <a name="C031a"></a>ORIGIN: CLIENT;
986 MESSAGE: new_room</h4>
987 NUMERIC TYPE (hex): 031a<p>
988 Create a new room. Not verified.
989 </p>
990 <table border="1" width="100%">
991 <tr>
992 <th width="10%">NAME</th>
993 <th width="10%">TYPE</th>
994 <th width="15%">DEFAULT</th>
995 <th>DESCRIPTION</th>
996 <th width="15%">DEC-GUARD</th>
997 </tr>
998 <tr>
999 <td>name</td>
1000 <td>username</td>
1001 <td> </td>
1002 <td>
1003
1004  
1005 </td>
1006 <td>
1007 <b></b>
1008  
1009 </td>
1010 </tr>
1011 <tr>
1012 <td>i1</td>
1013 <td>U32</td>
1014 <td>0 </td>
1015 <td>
1016
1017  
1018 </td>
1019 <td>
1020 <b></b>
1021  
1022 </td>
1023 </tr>
1024 <tr>
1025 <td>b1</td>
1026 <td>U8</td>
1027 <td>0 </td>
1028 <td>
1029
1030  
1031 </td>
1032 <td>
1033 <b></b>
1034  
1035 </td>
1036 </tr>
1037 <tr>
1038 <td>b2</td>
1039 <td>U8</td>
1040 <td>255 </td>
1041 <td>
1042
1043  
1044 </td>
1045 <td>
1046 <b></b>
1047  
1048 </td>
1049 </tr>
1050 <tr>
1051 <td>b3</td>
1052 <td>U8</td>
1053 <td>255 </td>
1054 <td>
1055
1056  
1057 </td>
1058 <td>
1059 <b></b>
1060  
1061 </td>
1062 </tr>
1063 <tr>
1064 <td>group</td>
1065 <td>U8</td>
1066 <td>1 </td>
1067 <td>
1068
1069  
1070 </td>
1071 <td>
1072 <b></b>
1073  
1074 </td>
1075 </tr>
1076 <tr>
1077 <td>name</td>
1078 <td>STRING</td>
1079 <td> </td>
1080 <td>
1081
1082  
1083 </td>
1084 <td>
1085 <b></b>
1086  
1087 </td>
1088 </tr>
1089 <tr>
1090 <td>description</td>
1091 <td>STRING</td>
1092 <td> </td>
1093 <td>
1094
1095  
1096 </td>
1097 <td>
1098 <b></b>
1099  
1100 </td>
1101 </tr>
1102 <tr>
1103 <td>flags</td>
1104 <td>U8</td>
1105 <td> </td>
1106 <td>
1107 0x10 .. private room etc.. see code
1108
1109  
1110 </td>
1111 <td>
1112 <b></b>
1113  
1114 </td>
1115 </tr>
1116 </table>
1117
1118 <h4>
1119 <a name="C0413"></a>ORIGIN: CLIENT;
1120 MESSAGE: req_game_record</h4>
1121 NUMERIC TYPE (hex): 0413<p>
1122 <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>
1123 </p>
1124 <table border="1" width="100%">
1125 <tr>
1126 <th width="10%">NAME</th>
1127 <th width="10%">TYPE</th>
1128 <th width="15%">DEFAULT</th>
1129 <th>DESCRIPTION</th>
1130 <th width="15%">DEC-GUARD</th>
1131 </tr>
1132 <tr>
1133 <td>name</td>
1134 <td>username</td>
1135 <td> </td>
1136 <td>
1137
1138  
1139 </td>
1140 <td>
1141 <b></b>
1142  
1143 </td>
1144 </tr>
1145 <tr>
1146 <td>timestamp</td>
1147 <td>timestamp</td>
1148 <td> </td>
1149 <td>
1150 If zero, start at the newest games, else only send games
1151 before the given timestap.
1152
1153  
1154 </td>
1155 <td>
1156 <b></b>
1157  
1158 </td>
1159 </tr>
1160 </table>
1161
1162 <h4>
1163 <a name="C4300"></a>ORIGIN: CLIENT;
1164 MESSAGE: join_room</h4>
1165 NUMERIC TYPE (hex): 4300<p>
1166 <p>Joins the given room. <a href="#S4300">join_room(4300)</a> messages for yourself
1167 and all users in that room, as well as the initial gamelist, are
1168 send if the room exists. If not, timeout...</p>
1169 </p>
1170 <table border="1" width="100%">
1171 <tr>
1172 <th width="10%">NAME</th>
1173 <th width="10%">TYPE</th>
1174 <th width="15%">DEFAULT</th>
1175 <th>DESCRIPTION</th>
1176 <th width="15%">DEC-GUARD</th>
1177 </tr>
1178 <tr>
1179 <td>channel</td>
1180 <td>U16</td>
1181 <td> </td>
1182 <td>
1183
1184  
1185 </td>
1186 <td>
1187 <b></b>
1188  
1189 </td>
1190 </tr>
1191 <tr>
1192 <td>user</td>
1193 <td>user</td>
1194 <td> </td>
1195 <td>
1196
1197  
1198 </td>
1199 <td>
1200 <b></b>
1201  
1202 </td>
1203 </tr>
1204 </table>
1205
1206 <h4>
1207 <a name="C4301"></a>ORIGIN: CLIENT;
1208 MESSAGE: msg_room</h4>
1209 NUMERIC TYPE (hex): 4301<p>
1210 Send a message to the room.
1211 </p>
1212 <table border="1" width="100%">
1213 <tr>
1214 <th width="10%">NAME</th>
1215 <th width="10%">TYPE</th>
1216 <th width="15%">DEFAULT</th>
1217 <th>DESCRIPTION</th>
1218 <th width="15%">DEC-GUARD</th>
1219 </tr>
1220 <tr>
1221 <td>channel</td>
1222 <td>U16</td>
1223 <td> </td>
1224 <td>
1225
1226  
1227 </td>
1228 <td>
1229 <b></b>
1230  
1231 </td>
1232 </tr>
1233 <tr>
1234 <td>name</td>
1235 <td>username</td>
1236 <td> </td>
1237 <td>
1238 Must be the login-name of the user.
1239
1240  
1241 </td>
1242 <td>
1243 <b></b>
1244  
1245 </td>
1246 </tr>
1247 <tr>
1248 <td>message</td>
1249 <td>STRING</td>
1250 <td> </td>
1251 <td>
1252
1253  
1254 </td>
1255 <td>
1256 <b></b>
1257  
1258 </td>
1259 </tr>
1260 </table>
1261
1262 <h4>
1263 <a name="C4302"></a>ORIGIN: CLIENT;
1264 MESSAGE: part_room</h4>
1265 NUMERIC TYPE (hex): 4302<p>
1266 Remove yourself (or maybe others as admin) from a room.
1267 </p>
1268 <table border="1" width="100%">
1269 <tr>
1270 <th width="10%">NAME</th>
1271 <th width="10%">TYPE</th>
1272 <th width="15%">DEFAULT</th>
1273 <th>DESCRIPTION</th>
1274 <th width="15%">DEC-GUARD</th>
1275 </tr>
1276 <tr>
1277 <td>channel</td>
1278 <td>U16</td>
1279 <td> </td>
1280 <td>
1281
1282  
1283 </td>
1284 <td>
1285 <b></b>
1286  
1287 </td>
1288 </tr>
1289 <tr>
1290 <td>name</td>
1291 <td>username</td>
1292 <td> </td>
1293 <td>
1294
1295  
1296 </td>
1297 <td>
1298 <b></b>
1299  
1300 </td>
1301 </tr>
1302 </table>
1303
1304 <h4>
1305 <a name="C4305"></a>ORIGIN: CLIENT;
1306 MESSAGE: new_game</h4>
1307 NUMERIC TYPE (hex): 4305<p>
1308 Unclear. Start a new game.
1309 </p>
1310 <table border="1" width="100%">
1311 <tr>
1312 <th width="10%">NAME</th>
1313 <th width="10%">TYPE</th>
1314 <th width="15%">DEFAULT</th>
1315 <th>DESCRIPTION</th>
1316 <th width="15%">DEC-GUARD</th>
1317 </tr>
1318 <tr>
1319 <td>channel</td>
1320 <td>U16</td>
1321 <td> </td>
1322 <td>
1323
1324  
1325 </td>
1326 <td>
1327 <b></b>
1328  
1329 </td>
1330 </tr>
1331 <tr>
1332 <td>id</td>
1333 <td>U16</td>
1334 <td> </td>
1335 <td>
1336
1337  
1338 </td>
1339 <td>
1340 <b></b>
1341  
1342 </td>
1343 </tr>
1344 <tr>
1345 <td>gametype</td>
1346 <td>U32</td>
1347 <td> </td>
1348 <td>
1349
1350  
1351 </td>
1352 <td>
1353 <b></b>
1354  
1355 </td>
1356 </tr>
1357 <tr>
1358 <td>rules</td>
1359 <td>rules</td>
1360 <td> </td>
1361 <td>
1362
1363  
1364 </td>
1365 <td>
1366 <b></b>
1367  
1368 </td>
1369 </tr>
1370 <tr>
1371 <td>notes</td>
1372 <td>STRING</td>
1373 <td> </td>
1374 <td>
1375
1376  
1377 </td>
1378 <td>
1379 <b></b>
1380  
1381 </td>
1382 </tr>
1383 </table>
1384
1385 <h4>
1386 <a name="C430b"></a>ORIGIN: CLIENT;
1387 MESSAGE: req_games</h4>
1388 NUMERIC TYPE (hex): 430b<p>
1389 Request to update room game list (send this once per minute to get
1390 updated). Results in upd_games messages.
1391 </p>
1392 <table border="1" width="100%">
1393 <tr>
1394 <th width="10%">NAME</th>
1395 <th width="10%">TYPE</th>
1396 <th width="15%">DEFAULT</th>
1397 <th>DESCRIPTION</th>
1398 <th width="15%">DEC-GUARD</th>
1399 </tr>
1400 <tr>
1401 <td>channel</td>
1402 <td>U16</td>
1403 <td> </td>
1404 <td>
1405
1406  
1407 </td>
1408 <td>
1409 <b></b>
1410  
1411 </td>
1412 </tr>
1413 </table>
1414
1415 <h4>
1416 <a name="C4319"></a>ORIGIN: CLIENT;
1417 MESSAGE: req_desc</h4>
1418 NUMERIC TYPE (hex): 4319<p>
1419 Request room description.
1420 </p>
1421 <table border="1" width="100%">
1422 <tr>
1423 <th width="10%">NAME</th>
1424 <th width="10%">TYPE</th>
1425 <th width="15%">DEFAULT</th>
1426 <th>DESCRIPTION</th>
1427 <th width="15%">DEC-GUARD</th>
1428 </tr>
1429 <tr>
1430 <td>channel</td>
1431 <td>U16</td>
1432 <td> </td>
1433 <td>
1434
1435  
1436 </td>
1437 <td>
1438 <b></b>
1439  
1440 </td>
1441 </tr>
1442 </table>
1443
1444 <h4>
1445 <a name="C4400"></a>ORIGIN: CLIENT;
1446 MESSAGE: send_challenge</h4>
1447 NUMERIC TYPE (hex): 4400<p>
1448 Unclear.
1449 </p>
1450 <table border="1" width="100%">
1451 <tr>
1452 <th width="10%">NAME</th>
1453 <th width="10%">TYPE</th>
1454 <th width="15%">DEFAULT</th>
1455 <th>DESCRIPTION</th>
1456 <th width="15%">DEC-GUARD</th>
1457 </tr>
1458 <tr>
1459 <td>channel</td>
1460 <td>U16</td>
1461 <td> </td>
1462 <td>
1463
1464  
1465 </td>
1466 <td>
1467 <b></b>
1468  
1469 </td>
1470 </tr>
1471 <tr>
1472 <td>black</td>
1473 <td>username</td>
1474 <td> </td>
1475 <td>
1476
1477  
1478 </td>
1479 <td>
1480 <b></b>
1481  
1482 </td>
1483 </tr>
1484 <tr>
1485 <td>white</td>
1486 <td>username</td>
1487 <td> </td>
1488 <td>
1489 More following... TREE or challenge.
1490
1491  
1492 </td>
1493 <td>
1494 <b></b>
1495  
1496 </td>
1497 </tr>
1498 </table>
1499
1500 <h4>
1501 <a name="C4403"></a>ORIGIN: CLIENT;
1502 MESSAGE: join_game</h4>
1503 NUMERIC TYPE (hex): 4403<p>
1504 Join a game. See join_room.
1505 </p>
1506 <table border="1" width="100%">
1507 <tr>
1508 <th width="10%">NAME</th>
1509 <th width="10%">TYPE</th>
1510 <th width="15%">DEFAULT</th>
1511 <th>DESCRIPTION</th>
1512 <th width="15%">DEC-GUARD</th>
1513 </tr>
1514 <tr>
1515 <td>channel</td>
1516 <td>U16</td>
1517 <td> </td>
1518 <td>
1519
1520  
1521 </td>
1522 <td>
1523 <b></b>
1524  
1525 </td>
1526 </tr>
1527 <tr>
1528 <td>user</td>
1529 <td>user</td>
1530 <td> </td>
1531 <td>
1532
1533  
1534 </td>
1535 <td>
1536 <b></b>
1537  
1538 </td>
1539 </tr>
1540 </table>
1541
1542 <h4>
1543 <a name="C4404"></a>ORIGIN: CLIENT;
1544 MESSAGE: part_game</h4>
1545 NUMERIC TYPE (hex): 4404<p>
1546 Leave (or kick as admin?) a certain user from a game.
1547 </p>
1548 <table border="1" width="100%">
1549 <tr>
1550 <th width="10%">NAME</th>
1551 <th width="10%">TYPE</th>
1552 <th width="15%">DEFAULT</th>
1553 <th>DESCRIPTION</th>
1554 <th width="15%">DEC-GUARD</th>
1555 </tr>
1556 <tr>
1557 <td>channel</td>
1558 <td>U16</td>
1559 <td> </td>
1560 <td>
1561
1562  
1563 </td>
1564 <td>
1565 <b></b>
1566  
1567 </td>
1568 </tr>
1569 <tr>
1570 <td>name</td>
1571 <td>username</td>
1572 <td> </td>
1573 <td>
1574
1575  
1576 </td>
1577 <td>
1578 <b></b>
1579  
1580 </td>
1581 </tr>
1582 </table>
1583
1584 <h4>
1585 <a name="C4406"></a>ORIGIN: CLIENT;
1586 MESSAGE: upd_tree</h4>
1587 NUMERIC TYPE (hex): 4406<p>
1588 Upload a partial game tree to the server. This is used to send moves
1589 and even in-game comments to the server. For the comments, the
1590 server prepends the username and rank.
1591
1592 </p>
1593 <table border="1" width="100%">
1594 <tr>
1595 <th width="10%">NAME</th>
1596 <th width="10%">TYPE</th>
1597 <th width="15%">DEFAULT</th>
1598 <th>DESCRIPTION</th>
1599 <th width="15%">DEC-GUARD</th>
1600 </tr>
1601 <tr>
1602 <td>channel</td>
1603 <td>U16</td>
1604 <td> </td>
1605 <td>
1606
1607  
1608 </td>
1609 <td>
1610 <b></b>
1611  
1612 </td>
1613 </tr>
1614 <tr>
1615 <td>tree</td>
1616 <td>TREE</td>
1617 <td> </td>
1618 <td>
1619
1620  
1621 </td>
1622 <td>
1623 <b></b>
1624  
1625 </td>
1626 </tr>
1627 </table>
1628
1629 <h4>
1630 <a name="C4408"></a>ORIGIN: CLIENT;
1631 MESSAGE: get_tree</h4>
1632 NUMERIC TYPE (hex): 4408<p>
1633 Request the game tree starting at a given node. This is used
1634 when the server only sends a partial tree (with end code "more").
1635 </p>
1636 <table border="1" width="100%">
1637 <tr>
1638 <th width="10%">NAME</th>
1639 <th width="10%">TYPE</th>
1640 <th width="15%">DEFAULT</th>
1641 <th>DESCRIPTION</th>
1642 <th width="15%">DEC-GUARD</th>
1643 </tr>
1644 <tr>
1645 <td>channel</td>
1646 <td>U16</td>
1647 <td> </td>
1648 <td>
1649
1650  
1651 </td>
1652 <td>
1653 <b></b>
1654  
1655 </td>
1656 </tr>
1657 <tr>
1658 <td>node</td>
1659 <td>U32</td>
1660 <td> </td>
1661 <td>
1662
1663  
1664 </td>
1665 <td>
1666 <b></b>
1667  
1668 </td>
1669 </tr>
1670 </table>
1671
1672 <h4>
1673 <a name="C440c"></a>ORIGIN: CLIENT;
1674 MESSAGE: claim_win</h4>
1675 NUMERIC TYPE (hex): 440c<p>
1676 Unclear.
1677 </p>
1678 <table border="1" width="100%">
1679 <tr>
1680 <th width="10%">NAME</th>
1681 <th width="10%">TYPE</th>
1682 <th width="15%">DEFAULT</th>
1683 <th>DESCRIPTION</th>
1684 <th width="15%">DEC-GUARD</th>
1685 </tr>
1686 <tr>
1687 <td>channel</td>
1688 <td>U16</td>
1689 <td> </td>
1690 <td>
1691
1692  
1693 </td>
1694 <td>
1695 <b></b>
1696  
1697 </td>
1698 </tr>
1699 <tr>
1700 <td>_byte</td>
1701 <td>U8 </td>
1702 <td> </td>
1703 <td>
1704 Player colour maybe? Unclear.
1705
1706  
1707 </td>
1708 <td>
1709 <b></b>
1710  
1711 </td>
1712 </tr>
1713 </table>
1714
1715 <h4>
1716 <a name="C440d"></a>ORIGIN: CLIENT;
1717 MESSAGE: add_time</h4>
1718 NUMERIC TYPE (hex): 440d<p>
1719 Not checked.
1720
1721 </p>
1722 <table border="1" width="100%">
1723 <tr>
1724 <th width="10%">NAME</th>
1725 <th width="10%">TYPE</th>
1726 <th width="15%">DEFAULT</th>
1727 <th>DESCRIPTION</th>
1728 <th width="15%">DEC-GUARD</th>
1729 </tr>
1730 <tr>
1731 <td>channel</td>
1732 <td>U16</td>
1733 <td> </td>
1734 <td>
1735
1736  
1737 </td>
1738 <td>
1739 <b></b>
1740  
1741 </td>
1742 </tr>
1743 <tr>
1744 <td>time</td>
1745 <td>U32</td>
1746 <td> </td>
1747 <td>
1748
1749  
1750 </td>
1751 <td>
1752 <b></b>
1753  
1754 </td>
1755 </tr>
1756 <tr>
1757 <td>player</td>
1758 <td>U8</td>
1759 <td> </td>
1760 <td>
1761
1762  
1763 </td>
1764 <td>
1765 <b></b>
1766  
1767 </td>
1768 </tr>
1769 </table>
1770
1771 <h4>
1772 <a name="C440f"></a>ORIGIN: CLIENT;
1773 MESSAGE: grant_undo</h4>
1774 NUMERIC TYPE (hex): 440f<p>
1775 Can be send after a req_undo message was received to grant the undo.
1776 </p>
1777 <table border="1" width="100%">
1778 <tr>
1779 <th width="10%">NAME</th>
1780 <th width="10%">TYPE</th>
1781 <th width="15%">DEFAULT</th>
1782 <th>DESCRIPTION</th>
1783 <th width="15%">DEC-GUARD</th>
1784 </tr>
1785 <tr>
1786 <td>channel</td>
1787 <td>U16</td>
1788 <td> </td>
1789 <td>
1790
1791  
1792 </td>
1793 <td>
1794 <b></b>
1795  
1796 </td>
1797 </tr>
1798 </table>
1799
1800 <h4>
1801 <a name="C4410"></a>ORIGIN: CLIENT;
1802 MESSAGE: resign_game</h4>
1803 NUMERIC TYPE (hex): 4410<p>
1804 Resign the game.
1805 </p>
1806 <table border="1" width="100%">
1807 <tr>
1808 <th width="10%">NAME</th>
1809 <th width="10%">TYPE</th>
1810 <th width="15%">DEFAULT</th>
1811 <th>DESCRIPTION</th>
1812 <th width="15%">DEC-GUARD</th>
1813 </tr>
1814 <tr>
1815 <td>channel</td>
1816 <td>U16</td>
1817 <td> </td>
1818 <td>
1819
1820  
1821 </td>
1822 <td>
1823 <b></b>
1824  
1825 </td>
1826 </tr>
1827 <tr>
1828 <td>player</td>
1829 <td>U8</td>
1830 <td> </td>
1831 <td>
1832
1833  
1834 </td>
1835 <td>
1836 <b></b>
1837  
1838 </td>
1839 </tr>
1840 </table>
1841
1842 <h4>
1843 <a name="C441a"></a>ORIGIN: CLIENT;
1844 MESSAGE: set_teacher</h4>
1845 NUMERIC TYPE (hex): 441a<p>
1846 Change the teacher to somebody else (or possibly yourself == take it).
1847 </p>
1848 <table border="1" width="100%">
1849 <tr>
1850 <th width="10%">NAME</th>
1851 <th width="10%">TYPE</th>
1852 <th width="15%">DEFAULT</th>
1853 <th>DESCRIPTION</th>
1854 <th width="15%">DEC-GUARD</th>
1855 </tr>
1856 <tr>
1857 <td>channel</td>
1858 <td>U16</td>
1859 <td> </td>
1860 <td>
1861
1862  
1863 </td>
1864 <td>
1865 <b></b>
1866  
1867 </td>
1868 </tr>
1869 <tr>
1870 <td>name</td>
1871 <td>username</td>
1872 <td> </td>
1873 <td>
1874
1875  
1876 </td>
1877 <td>
1878 <b></b>
1879  
1880 </td>
1881 </tr>
1882 </table>
1883
1884 <h4>
1885 <a name="C4422"></a>ORIGIN: CLIENT;
1886 MESSAGE: add_user</h4>
1887 NUMERIC TYPE (hex): 4422<p>
1888 Unclear. Maybe allow users to talk? No idea, really.
1889
1890 </p>
1891 <table border="1" width="100%">
1892 <tr>
1893 <th width="10%">NAME</th>
1894 <th width="10%">TYPE</th>
1895 <th width="15%">DEFAULT</th>
1896 <th>DESCRIPTION</th>
1897 <th width="15%">DEC-GUARD</th>
1898 </tr>
1899 <tr>
1900 <td>channel</td>
1901 <td>U16</td>
1902 <td> </td>
1903 <td>
1904
1905  
1906 </td>
1907 <td>
1908 <b></b>
1909  
1910 </td>
1911 </tr>
1912 <tr>
1913 <td>othername</td>
1914 <td>username</td>
1915 <td> </td>
1916 <td>
1917
1918  
1919 </td>
1920 <td>
1921 <b></b>
1922  
1923 </td>
1924 </tr>
1925 <tr>
1926 <td>name</td>
1927 <td>username</td>
1928 <td> </td>
1929 <td>; # gives user access to the game (to what? ;)
1930
1931  
1932 </td>
1933 <td>
1934 <b></b>
1935  
1936 </td>
1937 </tr>
1938 </table>
1939
1940 <h4>
1941 <a name="C4423"></a>ORIGIN: CLIENT;
1942 MESSAGE: set_privacy</h4>
1943 NUMERIC TYPE (hex): 4423<p>
1944 Probably sets the "quiet" flag. Not checked.
1945 </p>
1946 <table border="1" width="100%">
1947 <tr>
1948 <th width="10%">NAME</th>
1949 <th width="10%">TYPE</th>
1950 <th width="15%">DEFAULT</th>
1951 <th>DESCRIPTION</th>
1952 <th width="15%">DEC-GUARD</th>
1953 </tr>
1954 <tr>
1955 <td>channel</td>
1956 <td>U16</td>
1957 <td> </td>
1958 <td>
1959
1960  
1961 </td>
1962 <td>
1963 <b></b>
1964  
1965 </td>
1966 </tr>
1967 <tr>
1968 <td>private</td>
1969 <td>U8</td>
1970 <td> </td>
1971 <td>
1972
1973  
1974 </td>
1975 <td>
1976 <b></b>
1977  
1978 </td>
1979 </tr>
1980 </table>
1981
1982 <h4>
1983 <a name="C4429"></a>ORIGIN: CLIENT;
1984 MESSAGE: reject_challenge</h4>
1985 NUMERIC TYPE (hex): 4429<p>
1986 Reject a challenge from a given user. Not checked.
1987
1988 </p>
1989 <table border="1" width="100%">
1990 <tr>
1991 <th width="10%">NAME</th>
1992 <th width="10%">TYPE</th>
1993 <th width="15%">DEFAULT</th>
1994 <th>DESCRIPTION</th>
1995 <th width="15%">DEC-GUARD</th>
1996 </tr>
1997 <tr>
1998 <td>channel</td>
1999 <td>U16</td>
2000 <td> </td>
2001 <td>
2002
2003  
2004 </td>
2005 <td>
2006 <b></b>
2007  
2008 </td>
2009 </tr>
2010 <tr>
2011 <td>name</td>
2012 <td>username</td>
2013 <td> </td>
2014 <td>
2015
2016  
2017 </td>
2018 <td>
2019 <b></b>
2020  
2021 </td>
2022 </tr>
2023 </table>
2024
2025 <h4>
2026 <a name="C4433"></a>ORIGIN: CLIENT;
2027 MESSAGE: req_result</h4>
2028 NUMERIC TYPE (hex): 4433<p>
2029 I forgot.
2030
2031 </p>
2032 <table border="1" width="100%">
2033 <tr>
2034 <th width="10%">NAME</th>
2035 <th width="10%">TYPE</th>
2036 <th width="15%">DEFAULT</th>
2037 <th>DESCRIPTION</th>
2038 <th width="15%">DEC-GUARD</th>
2039 </tr>
2040 <tr>
2041 <td>channel</td>
2042 <td>U16</td>
2043 <td> </td>
2044 <td>
2045
2046  
2047 </td>
2048 <td>
2049 <b></b>
2050  
2051 </td>
2052 </tr>
2053 </table>
2054
2055 <h2>Structs mainly used in messages send by the server</h2>
2056
2057 <h4>STRUCTURE challenge_defaults</h4>
2058 <p>
2059 Send soon after log-in to set the defaults for game challenges.
2060 </p>
2061 <table border="1" width="100%">
2062 <tr>
2063 <th width="10%">NAME</th>
2064 <th width="10%">TYPE</th>
2065 <th width="15%">DEFAULT</th>
2066 <th>DESCRIPTION</th>
2067 <th width="15%">DEC-GUARD</th>
2068 </tr>
2069 <tr>
2070 <td>gametype</td>
2071 <td>U32</td>
2072 <td> </td>
2073 <td>
2074
2075  
2076 </td>
2077 <td>
2078 <b></b>
2079  
2080 </td>
2081 </tr>
2082 <tr>
2083 <td>size</td>
2084 <td>U32</td>
2085 <td> </td>
2086 <td>
2087
2088  
2089 </td>
2090 <td>
2091 <b></b>
2092  
2093 </td>
2094 </tr>
2095 <tr>
2096 <td>timesys</td>
2097 <td>U32</td>
2098 <td> </td>
2099 <td>
2100
2101  
2102 </td>
2103 <td>
2104 <b></b>
2105  
2106 </td>
2107 </tr>
2108 <tr>
2109 <td>time</td>
2110 <td>U32</td>
2111 <td> </td>
2112 <td>
2113
2114  
2115 </td>
2116 <td>
2117 <b></b>
2118  
2119 </td>
2120 </tr>
2121 <tr>
2122 <td>byo_time</td>
2123 <td>U32</td>
2124 <td> </td>
2125 <td>
2126
2127  
2128 </td>
2129 <td>
2130 <b></b>
2131  
2132 </td>
2133 </tr>
2134 <tr>
2135 <td>byo_periods</td>
2136 <td>U32</td>
2137 <td> </td>
2138 <td>
2139
2140  
2141 </td>
2142 <td>
2143 <b></b>
2144  
2145 </td>
2146 </tr>
2147 <tr>
2148 <td>can_time</td>
2149 <td>U32</td>
2150 <td> </td>
2151 <td>
2152
2153  
2154 </td>
2155 <td>
2156 <b></b>
2157  
2158 </td>
2159 </tr>
2160 <tr>
2161 <td>can_stones</td>
2162 <td>U32</td>
2163 <td> </td>
2164 <td>
2165
2166  
2167 </td>
2168 <td>
2169 <b></b>
2170  
2171 </td>
2172 </tr>
2173 </table>
2174
2175 <h4>STRUCTURE challenge</h4>
2176 CLASS: KGS::Challenge<br />
2177 <p>
2178 A challenge.
2179
2180 </p>
2181 <table border="1" width="100%">
2182 <tr>
2183 <th width="10%">NAME</th>
2184 <th width="10%">TYPE</th>
2185 <th width="15%">DEFAULT</th>
2186 <th>DESCRIPTION</th>
2187 <th width="15%">DEC-GUARD</th>
2188 </tr>
2189 <tr>
2190 <td>user1</td>
2191 <td>user</td>
2192 <td> </td>
2193 <td>
2194
2195  
2196 </td>
2197 <td>
2198 <b></b>
2199  
2200 </td>
2201 </tr>
2202 <tr>
2203 <td>user2</td>
2204 <td>user</td>
2205 <td> </td>
2206 <td>
2207
2208  
2209 </td>
2210 <td>
2211 <b></b>
2212  
2213 </td>
2214 </tr>
2215 <tr>
2216 <td>gametype</td>
2217 <td>U32</td>
2218 <td> </td>
2219 <td>
2220
2221  
2222 </td>
2223 <td>
2224 <b></b>
2225  
2226 </td>
2227 </tr>
2228 <tr>
2229 <td>rules</td>
2230 <td>rules</td>
2231 <td> </td>
2232 <td>
2233 Maybe the rules" are in TREE format. I forgot.
2234
2235  
2236 </td>
2237 <td>
2238 <b></b>
2239  
2240 </td>
2241 </tr>
2242 </table>
2243
2244 <h4>STRUCTURE game</h4>
2245 CLASS: KGS::Game<br />
2246 <p>
2247 Basic information about a game. Used in rooms for the gamelist and
2248 in games to detect when a game is saved, changed type (e.g. R =&gt; D)
2249 etc.
2250
2251 </p>
2252 <table border="1" width="100%">
2253 <tr>
2254 <th width="10%">NAME</th>
2255 <th width="10%">TYPE</th>
2256 <th width="15%">DEFAULT</th>
2257 <th>DESCRIPTION</th>
2258 <th width="15%">DEC-GUARD</th>
2259 </tr>
2260 <tr>
2261 <td>channel</td>
2262 <td>U16</td>
2263 <td> </td>
2264 <td>
2265
2266  
2267 </td>
2268 <td>
2269 <b></b>
2270  
2271 </td>
2272 </tr>
2273 <tr>
2274 <td>type</td>
2275 <td>U8</td>
2276 <td> </td>
2277 <td>
2278
2279  
2280 </td>
2281 <td>
2282 <b></b>
2283  
2284 </td>
2285 </tr>
2286 <tr>
2287 <td>user1</td>
2288 <td>user</td>
2289 <td> </td>
2290 <td>
2291 White
2292
2293  
2294 </td>
2295 <td>
2296 <b></b>
2297  
2298 </td>
2299 </tr>
2300 <tr>
2301 <td>user2</td>
2302 <td>user</td>
2303 <td> </td>
2304 <td>
2305 Black
2306
2307  
2308 </td>
2309 <td>
2310 <b></b>
2311  
2312 </td>
2313 </tr>
2314 <tr>
2315 <td>user3</td>
2316 <td>user</td>
2317 <td> </td>
2318 <td>
2319 Owner
2320
2321  
2322 </td>
2323 <td>
2324 <b></b>
2325  
2326 </td>
2327 </tr>
2328 <tr>
2329 <td>size</td>
2330 <td>U8</td>
2331 <td> </td>
2332 <td>
2333
2334  
2335 </td>
2336 <td>
2337 <b></b>
2338  
2339 </td>
2340 </tr>
2341 <tr>
2342 <td>handicap</td>
2343 <td>I8</td>
2344 <td> </td>
2345 <td>
2346 &lt; 0 not fully setup
2347
2348  
2349 </td>
2350 <td>
2351 <b></b>
2352  
2353 </td>
2354 </tr>
2355 <tr>
2356 <td>komi</td>
2357 <td>komi16</td>
2358 <td> </td>
2359 <td>
2360
2361  
2362 </td>
2363 <td>
2364 <b></b>
2365  
2366 </td>
2367 </tr>
2368 <tr>
2369 <td>moves</td>
2370 <td>I16</td>
2371 <td> </td>
2372 <td>
2373 This field reflects either the movenum or the score, sorry, not even guards help, as
2374 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
2375 score (NOT score16!) (arg²).
2376
2377  
2378 </td>
2379 <td>
2380 <b></b>
2381  
2382 </td>
2383 </tr>
2384 <tr>
2385 <td>flags</td>
2386 <td>U16</td>
2387 <td> </td>
2388 <td>
2389
2390  
2391 </td>
2392 <td>
2393 <b></b>
2394  
2395 </td>
2396 </tr>
2397 <tr>
2398 <td>observers</td>
2399 <td>U32</td>
2400 <td> </td>
2401 <td>
2402
2403  
2404 </td>
2405 <td>
2406 <b></b>
2407  
2408 </td>
2409 </tr>
2410 <tr>
2411 <td>saved</td>
2412 <td>flag</td>
2413 <td> </td>
2414 <td>
2415
2416  
2417 </td>
2418 <td>
2419 <b></b>
2420  
2421 </td>
2422 </tr>
2423 <tr>
2424 <td>notes</td>
2425 <td>STRING</td>
2426 <td> </td>
2427 <td>
2428
2429  
2430 </td>
2431 <td>
2432 <b>handicap</b> &lt; 0
2433  
2434 </td>
2435 </tr>
2436 </table>
2437
2438 <h4>STRUCTURE room_obs</h4>
2439 <p>
2440 Obsolete.
2441
2442 </p>
2443 <table border="1" width="100%">
2444 <tr>
2445 <th width="10%">NAME</th>
2446 <th width="10%">TYPE</th>
2447 <th width="15%">DEFAULT</th>
2448 <th>DESCRIPTION</th>
2449 <th width="15%">DEC-GUARD</th>
2450 </tr>
2451 <tr>
2452 <td>name</td>
2453 <td>roomname</td>
2454 <td> </td>
2455 <td>
2456
2457  
2458 </td>
2459 <td>
2460 <b></b>
2461  
2462 </td>
2463 </tr>
2464 <tr>
2465 <td>channel</td>
2466 <td>U16</td>
2467 <td> </td>
2468 <td>
2469
2470  
2471 </td>
2472 <td>
2473 <b></b>
2474  
2475 </td>
2476 </tr>
2477 <tr>
2478 <td>flags</td>
2479 <td>U32</td>
2480 <td> </td>
2481 <td>
2482
2483  
2484 </td>
2485 <td>
2486 <b></b>
2487  
2488 </td>
2489 </tr>
2490 <tr>
2491 <td>users</td>
2492 <td>U32</td>
2493 <td> </td>
2494 <td>
2495
2496  
2497 </td>
2498 <td>
2499 <b></b>
2500  
2501 </td>
2502 </tr>
2503 </table>
2504
2505 <h4>STRUCTURE room</h4>
2506 CLASS: KGS::Room<br />
2507 <p>
2508 </p>
2509 <table border="1" width="100%">
2510 <tr>
2511 <th width="10%">NAME</th>
2512 <th width="10%">TYPE</th>
2513 <th width="15%">DEFAULT</th>
2514 <th>DESCRIPTION</th>
2515 <th width="15%">DEC-GUARD</th>
2516 </tr>
2517 <tr>
2518 <td>channel</td>
2519 <td>U16</td>
2520 <td> </td>
2521 <td>
2522
2523  
2524 </td>
2525 <td>
2526 <b></b>
2527  
2528 </td>
2529 </tr>
2530 <tr>
2531 <td>flags</td>
2532 <td>U8</td>
2533 <td> </td>
2534 <td>
2535
2536  
2537 </td>
2538 <td>
2539 <b></b>
2540  
2541 </td>
2542 </tr>
2543 <tr>
2544 <td>group</td>
2545 <td>U8</td>
2546 <td> </td>
2547 <td>
2548
2549  
2550 </td>
2551 <td>
2552 <b></b>
2553  
2554 </td>
2555 </tr>
2556 <tr>
2557 <td>users</td>
2558 <td>U16</td>
2559 <td> </td>
2560 <td>
2561
2562  
2563 </td>
2564 <td>
2565 <b></b>
2566  
2567 </td>
2568 </tr>
2569 <tr>
2570 <td>games</td>
2571 <td>U16</td>
2572 <td> </td>
2573 <td>
2574
2575  
2576 </td>
2577 <td>
2578 <b></b>
2579  
2580 </td>
2581 </tr>
2582 <tr>
2583 <td>name</td>
2584 <td>STRING</td>
2585 <td> </td>
2586 <td>
2587
2588  
2589 </td>
2590 <td>
2591 <b></b>
2592  
2593 </td>
2594 </tr>
2595 </table>
2596
2597 <h4>STRUCTURE scorevalues</h4>
2598 CLASS: KGS::Score<br />
2599 <p>
2600 </p>
2601 <table border="1" width="100%">
2602 <tr>
2603 <th width="10%">NAME</th>
2604 <th width="10%">TYPE</th>
2605 <th width="15%">DEFAULT</th>
2606 <th>DESCRIPTION</th>
2607 <th width="15%">DEC-GUARD</th>
2608 </tr>
2609 <tr>
2610 <td>score</td>
2611 <td>score32</td>
2612 <td> </td>
2613 <td>
2614
2615  
2616 </td>
2617 <td>
2618 <b></b>
2619  
2620 </td>
2621 </tr>
2622 <tr>
2623 <td>territory</td>
2624 <td>U32</td>
2625 <td> </td>
2626 <td>
2627
2628  
2629 </td>
2630 <td>
2631 <b></b>
2632  
2633 </td>
2634 </tr>
2635 <tr>
2636 <td>captures</td>
2637 <td>U32</td>
2638 <td> </td>
2639 <td>
2640
2641  
2642 </td>
2643 <td>
2644 <b></b>
2645  
2646 </td>
2647 </tr>
2648 <tr>
2649 <td>i3</td>
2650 <td>U32</td>
2651 <td> </td>
2652 <td>
2653
2654  
2655 </td>
2656 <td>
2657 <b></b>
2658  
2659 </td>
2660 </tr>
2661 <tr>
2662 <td>f2</td>
2663 <td>U32</td>
2664 <td> </td>
2665 <td>
2666
2667  
2668 </td>
2669 <td>
2670 <b></b>
2671  
2672 </td>
2673 </tr>
2674 <tr>
2675 <td>komi</td>
2676 <td>komi324</td>
2677 <td> </td>
2678 <td>
2679
2680  
2681 </td>
2682 <td>
2683 <b></b>
2684  
2685 </td>
2686 </tr>
2687 <tr>
2688 <td>i4</td>
2689 <td>U32</td>
2690 <td> </td>
2691 <td>
2692 Apparently the i3, f2, i4 are zero.
2693
2694  
2695 </td>
2696 <td>
2697 <b></b>
2698  
2699 </td>
2700 </tr>
2701 </table>
2702
2703 <h4>STRUCTURE game_record</h4>
2704 CLASS: KGS::GameRecord<br />
2705 <p>
2706 <p>A single game record entry, as seen in <a href="#S0008">userinfo(0008)</a>.</p>
2707 </p>
2708 <table border="1" width="100%">
2709 <tr>
2710 <th width="10%">NAME</th>
2711 <th width="10%">TYPE</th>
2712 <th width="15%">DEFAULT</th>
2713 <th>DESCRIPTION</th>
2714 <th width="15%">DEC-GUARD</th>
2715 </tr>
2716 <tr>
2717 <td>timestamp</td>
2718 <td>timestamp</td>
2719 <td> </td>
2720 <td>
2721 Time this game was played.
2722
2723  
2724 </td>
2725 <td>
2726 <b></b>
2727  
2728 </td>
2729 </tr>
2730 <tr>
2731 <td>flags</td>
2732 <td>U8</td>
2733 <td> </td>
2734 <td>
2735 High four bits are handicap, low four bits are gametype (encoded strangely? unclear).
2736
2737  
2738 </td>
2739 <td>
2740 <b></b>
2741  
2742 </td>
2743 </tr>
2744 <tr>
2745 <td>user1</td>
2746 <td>user</td>
2747 <td> </td>
2748 <td>
2749 White, flags contain low 8 bits of revision (bits 16-23).
2750
2751  
2752 </td>
2753 <td>
2754 <b></b>
2755  
2756 </td>
2757 </tr>
2758 <tr>
2759 <td>user2</td>
2760 <td>user</td>
2761 <td> </td>
2762 <td>
2763 Black, flags contain high 8 bits of revision (bits 16-23).
2764
2765  
2766 </td>
2767 <td>
2768 <b></b>
2769  
2770 </td>
2771 </tr>
2772 <tr>
2773 <td>user3</td>
2774 <td>user</td>
2775 <td> </td>
2776 <td>
2777 Owner (or empty)
2778
2779  
2780 </td>
2781 <td>
2782 <b></b>
2783  
2784 </td>
2785 </tr>
2786 <tr>
2787 <td>komi</td>
2788 <td>komi16</td>
2789 <td> </td>
2790 <td>
2791
2792  
2793 </td>
2794 <td>
2795 <b></b>
2796  
2797 </td>
2798 </tr>
2799 <tr>
2800 <td>score</td>
2801 <td>score16</td>
2802 <td> </td>
2803 <td>
2804
2805  
2806 </td>
2807 <td>
2808 <b></b>
2809  
2810 </td>
2811 </tr>
2812 <tr>
2813 <td>status</td>
2814 <td>U8</td>
2815 <td> </td>
2816 <td>
2817 0x80 inprogress
2818
2819  
2820 </td>
2821 <td>
2822 <b></b>
2823  
2824 </td>
2825 </tr>
2826 </table>
2827
2828 <h2>Server-generated messages</h2>
2829
2830 <h4>
2831 <a name="S0001"></a>ORIGIN: SERVER;
2832 MESSAGE: login</h4>
2833 NUMERIC TYPE (hex): 0001
2834 (possibly in response to
2835 <a href="#C0000">login(0000)</a>
2836 )
2837 <p>
2838 </p>
2839 <table border="1" width="100%">
2840 <tr>
2841 <th width="10%">NAME</th>
2842 <th width="10%">TYPE</th>
2843 <th width="15%">DEFAULT</th>
2844 <th>DESCRIPTION</th>
2845 <th width="15%">DEC-GUARD</th>
2846 </tr>
2847 <tr>
2848 <td>result</td>
2849 <td>CONSTANT</td>
2850 <td>"login ok" </td>
2851 <td>
2852
2853  
2854 </td>
2855 <td>
2856 <b></b>
2857  
2858 </td>
2859 </tr>
2860 <tr>
2861 <td>success</td>
2862 <td>CONSTANT</td>
2863 <td>1 </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="S0002"></a>ORIGIN: SERVER;
2877 MESSAGE: login</h4>
2878 NUMERIC TYPE (hex): 0002
2879 (possibly in response to
2880 <a href="#C0000">login(0000)</a>
2881 )
2882 <p>
2883 </p>
2884 <table border="1" width="100%">
2885 <tr>
2886 <th width="10%">NAME</th>
2887 <th width="10%">TYPE</th>
2888 <th width="15%">DEFAULT</th>
2889 <th>DESCRIPTION</th>
2890 <th width="15%">DEC-GUARD</th>
2891 </tr>
2892 <tr>
2893 <td>result</td>
2894 <td>CONSTANT</td>
2895 <td>"guest login ok" </td>
2896 <td>
2897
2898  
2899 </td>
2900 <td>
2901 <b></b>
2902  
2903 </td>
2904 </tr>
2905 <tr>
2906 <td>success</td>
2907 <td>CONSTANT</td>
2908 <td>1 </td>
2909 <td>
2910
2911  
2912 </td>
2913 <td>
2914 <b></b>
2915  
2916 </td>
2917 </tr>
2918 </table>
2919
2920 <h4>
2921 <a name="S0003"></a>ORIGIN: SERVER;
2922 MESSAGE: login</h4>
2923 NUMERIC TYPE (hex): 0003
2924 (possibly in response to
2925 <a href="#C0000">login(0000)</a>
2926 )
2927 <p>
2928 </p>
2929 <table border="1" width="100%">
2930 <tr>
2931 <th width="10%">NAME</th>
2932 <th width="10%">TYPE</th>
2933 <th width="15%">DEFAULT</th>
2934 <th>DESCRIPTION</th>
2935 <th width="15%">DEC-GUARD</th>
2936 </tr>
2937 <tr>
2938 <td>result</td>
2939 <td>CONSTANT</td>
2940 <td>"login error 3" </td>
2941 <td>
2942 ** maybe more following? **
2943
2944  
2945 </td>
2946 <td>
2947 <b></b>
2948  
2949 </td>
2950 </tr>
2951 </table>
2952
2953 <h4>
2954 <a name="S0004"></a>ORIGIN: SERVER;
2955 MESSAGE: login</h4>
2956 NUMERIC TYPE (hex): 0004
2957 (possibly in response to
2958 <a href="#C0000">login(0000)</a>
2959 )
2960 <p>
2961 </p>
2962 <table border="1" width="100%">
2963 <tr>
2964 <th width="10%">NAME</th>
2965 <th width="10%">TYPE</th>
2966 <th width="15%">DEFAULT</th>
2967 <th>DESCRIPTION</th>
2968 <th width="15%">DEC-GUARD</th>
2969 </tr>
2970 <tr>
2971 <td>result</td>
2972 <td>CONSTANT</td>
2973 <td>"wrong password" </td>
2974 <td>
2975 ** maybe more following? **
2976
2977  
2978 </td>
2979 <td>
2980 <b></b>
2981  
2982 </td>
2983 </tr>
2984 </table>
2985
2986 <h4>
2987 <a name="S0005"></a>ORIGIN: SERVER;
2988 MESSAGE: login</h4>
2989 NUMERIC TYPE (hex): 0005
2990 (possibly in response to
2991 <a href="#C0000">login(0000)</a>
2992 )
2993 <p>
2994 </p>
2995 <table border="1" width="100%">
2996 <tr>
2997 <th width="10%">NAME</th>
2998 <th width="10%">TYPE</th>
2999 <th width="15%">DEFAULT</th>
3000 <th>DESCRIPTION</th>
3001 <th width="15%">DEC-GUARD</th>
3002 </tr>
3003 <tr>
3004 <td>result</td>
3005 <td>CONSTANT</td>
3006 <td>"user unknown" </td>
3007 <td>
3008 ** maybe more following? **
3009
3010  
3011 </td>
3012 <td>
3013 <b></b>
3014  
3015 </td>
3016 </tr>
3017 </table>
3018
3019 <h4>
3020 <a name="S0006"></a>ORIGIN: SERVER;
3021 MESSAGE: login</h4>
3022 NUMERIC TYPE (hex): 0006
3023 (possibly in response to
3024 <a href="#C0000">login(0000)</a>
3025 )
3026 <p>
3027 </p>
3028 <table border="1" width="100%">
3029 <tr>
3030 <th width="10%">NAME</th>
3031 <th width="10%">TYPE</th>
3032 <th width="15%">DEFAULT</th>
3033 <th>DESCRIPTION</th>
3034 <th width="15%">DEC-GUARD</th>
3035 </tr>
3036 <tr>
3037 <td>result</td>
3038 <td>CONSTANT</td>
3039 <td>"user exists" </td>
3040 <td>
3041 ** maybe more following? **
3042
3043  
3044 </td>
3045 <td>
3046 <b></b>
3047  
3048 </td>
3049 </tr>
3050 </table>
3051
3052 <h4>
3053 <a name="S0008"></a>ORIGIN: SERVER;
3054 MESSAGE: userinfo</h4>
3055 NUMERIC TYPE (hex): 0008
3056 (possibly in response to
3057 <a href="#C0007">req_userinfo(0007)</a>
3058 )
3059 <p>
3060 User info.
3061 </p>
3062 <table border="1" width="100%">
3063 <tr>
3064 <th width="10%">NAME</th>
3065 <th width="10%">TYPE</th>
3066 <th width="15%">DEFAULT</th>
3067 <th>DESCRIPTION</th>
3068 <th width="15%">DEC-GUARD</th>
3069 </tr>
3070 <tr>
3071 <td>user</td>
3072 <td>user</td>
3073 <td> </td>
3074 <td>
3075
3076  
3077 </td>
3078 <td>
3079 <b></b>
3080  
3081 </td>
3082 </tr>
3083 <tr>
3084 <td>_unused</td>
3085 <td>U64</td>
3086 <td> </td>
3087 <td>
3088
3089  
3090 </td>
3091 <td>
3092 <b></b>
3093  
3094 </td>
3095 </tr>
3096 <tr>
3097 <td>realname</td>
3098 <td>realname</td>
3099 <td> </td>
3100 <td>
3101
3102  
3103 </td>
3104 <td>
3105 <b></b>
3106  
3107 </td>
3108 </tr>
3109 <tr>
3110 <td>email</td>
3111 <td>email</td>
3112 <td> </td>
3113 <td>
3114
3115  
3116 </td>
3117 <td>
3118 <b></b>
3119  
3120 </td>
3121 </tr>
3122 <tr>
3123 <td>info</td>
3124 <td>userinfo</td>
3125 <td> </td>
3126 <td>
3127
3128  
3129 </td>
3130 <td>
3131 <b></b>
3132  
3133 </td>
3134 </tr>
3135 <tr>
3136 <td>homepage</td>
3137 <td>url</td>
3138 <td> </td>
3139 <td>
3140
3141  
3142 </td>
3143 <td>
3144 <b></b>
3145  
3146 </td>
3147 </tr>
3148 <tr>
3149 <td>regdate</td>
3150 <td>timestamp</td>
3151 <td> </td>
3152 <td>
3153 When the user registered (0 == never registered).
3154
3155  
3156 </td>
3157 <td>
3158 <b></b>
3159  
3160 </td>
3161 </tr>
3162 <tr>
3163 <td>lastlogin</td>
3164 <td>timestamp</td>
3165 <td> </td>
3166 <td>
3167 When the user logged in for the last time.
3168
3169  
3170 </td>
3171 <td>
3172 <b></b>
3173  
3174 </td>
3175 </tr>
3176 </table>
3177
3178 <h4>
3179 <a name="S0018"></a>ORIGIN: SERVER;
3180 MESSAGE: login</h4>
3181 NUMERIC TYPE (hex): 0018
3182 (possibly in response to
3183 <a href="#C0000">login(0000)</a>
3184 )
3185 <p>
3186 </p>
3187 <table border="1" width="100%">
3188 <tr>
3189 <th width="10%">NAME</th>
3190 <th width="10%">TYPE</th>
3191 <th width="15%">DEFAULT</th>
3192 <th>DESCRIPTION</th>
3193 <th width="15%">DEC-GUARD</th>
3194 </tr>
3195 <tr>
3196 <td>result</td>
3197 <td>CONSTANT</td>
3198 <td>"login error 18" </td>
3199 <td>
3200 ** maybe more following? **
3201
3202  
3203 </td>
3204 <td>
3205 <b></b>
3206  
3207 </td>
3208 </tr>
3209 </table>
3210
3211 <h4>
3212 <a name="S0022"></a>ORIGIN: SERVER;
3213 MESSAGE: login</h4>
3214 NUMERIC TYPE (hex): 0022
3215 (possibly in response to
3216 <a href="#C0000">login(0000)</a>
3217 )
3218 <p>
3219 I was blocked sooo many times for developing this client that it was
3220 easy to figure out. The KGS admins sure need no extra nazi training
3221 :(
3222 </p>
3223 <table border="1" width="100%">
3224 <tr>
3225 <th width="10%">NAME</th>
3226 <th width="10%">TYPE</th>
3227 <th width="15%">DEFAULT</th>
3228 <th>DESCRIPTION</th>
3229 <th width="15%">DEC-GUARD</th>
3230 </tr>
3231 <tr>
3232 <td>reason</td>
3233 <td>STRING</td>
3234 <td> </td>
3235 <td>
3236
3237  
3238 </td>
3239 <td>
3240 <b></b>
3241  
3242 </td>
3243 </tr>
3244 <tr>
3245 <td>result</td>
3246 <td>CONSTANT</td>
3247 <td>"user or ip blocked" </td>
3248 <td>
3249
3250  
3251 </td>
3252 <td>
3253 <b></b>
3254  
3255 </td>
3256 </tr>
3257 </table>
3258
3259 <h4>
3260 <a name="S0013"></a>ORIGIN: SERVER;
3261 MESSAGE: msg_chat</h4>
3262 NUMERIC TYPE (hex): 0013<p>
3263 </p>
3264 <table border="1" width="100%">
3265 <tr>
3266 <th width="10%">NAME</th>
3267 <th width="10%">TYPE</th>
3268 <th width="15%">DEFAULT</th>
3269 <th>DESCRIPTION</th>
3270 <th width="15%">DEC-GUARD</th>
3271 </tr>
3272 <tr>
3273 <td>user1</td>
3274 <td>username</td>
3275 <td> </td>
3276 <td>
3277
3278  
3279 </td>
3280 <td>
3281 <b></b>
3282  
3283 </td>
3284 </tr>
3285 <tr>
3286 <td>user2</td>
3287 <td>username</td>
3288 <td> </td>
3289 <td>
3290
3291  
3292 </td>
3293 <td>
3294 <b></b>
3295  
3296 </td>
3297 </tr>
3298 <tr>
3299 <td>message</td>
3300 <td>STRING</td>
3301 <td> </td>
3302 <td>
3303
3304  
3305 </td>
3306 <td>
3307 <b></b>
3308  
3309 </td>
3310 </tr>
3311 </table>
3312
3313 <h4>
3314 <a name="S0015"></a>ORIGIN: SERVER;
3315 MESSAGE: stats</h4>
3316 NUMERIC TYPE (hex): 0015
3317 (possibly in response to
3318 <a href="#C0014">req_stats(0014)</a>
3319 )
3320 <p>
3321 </p>
3322 <table border="1" width="100%">
3323 <tr>
3324 <th width="10%">NAME</th>
3325 <th width="10%">TYPE</th>
3326 <th width="15%">DEFAULT</th>
3327 <th>DESCRIPTION</th>
3328 <th width="15%">DEC-GUARD</th>
3329 </tr>
3330 <tr>
3331 <td>ver_major</td>
3332 <td>U16</td>
3333 <td> </td>
3334 <td>
3335
3336  
3337 </td>
3338 <td>
3339 <b></b>
3340  
3341 </td>
3342 </tr>
3343 <tr>
3344 <td>ver_minor</td>
3345 <td>U16</td>
3346 <td> </td>
3347 <td>
3348
3349  
3350 </td>
3351 <td>
3352 <b></b>
3353  
3354 </td>
3355 </tr>
3356 <tr>
3357 <td>ver_micro</td>
3358 <td>U16</td>
3359 <td> </td>
3360 <td>
3361
3362  
3363 </td>
3364 <td>
3365 <b></b>
3366  
3367 </td>
3368 </tr>
3369 <tr>
3370 <td>boot_time</td>
3371 <td>timestamp</td>
3372 <td> </td>
3373 <td>
3374
3375  
3376 </td>
3377 <td>
3378 <b></b>
3379  
3380 </td>
3381 </tr>
3382 <tr>
3383 <td>users_cur</td>
3384 <td>U32</td>
3385 <td> </td>
3386 <td>
3387
3388  
3389 </td>
3390 <td>
3391 <b></b>
3392  
3393 </td>
3394 </tr>
3395 <tr>
3396 <td>users_max</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>users_lim</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>accts_cur</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>accts_max</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>unknown1</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>work_max</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>rooms_cur</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>rooms_max</td>
3488 <td>U32</td>
3489 <td> </td>
3490 <td>
3491
3492  
3493 </td>
3494 <td>
3495 <b></b>
3496  
3497 </td>
3498 </tr>
3499 <tr>
3500 <td>rooms_lim</td>
3501 <td>U32</td>
3502 <td> </td>
3503 <td>
3504
3505  
3506 </td>
3507 <td>
3508 <b></b>
3509  
3510 </td>
3511 </tr>
3512 <tr>
3513 <td>games_cur</td>
3514 <td>U32</td>
3515 <td> </td>
3516 <td>
3517
3518  
3519 </td>
3520 <td>
3521 <b></b>
3522  
3523 </td>
3524 </tr>
3525 <tr>
3526 <td>games_max</td>
3527 <td>U32</td>
3528 <td> </td>
3529 <td>
3530
3531  
3532 </td>
3533 <td>
3534 <b></b>
3535  
3536 </td>
3537 </tr>
3538 <tr>
3539 <td>games_lim</td>
3540 <td>U32</td>
3541 <td> </td>
3542 <td>
3543
3544  
3545 </td>
3546 <td>
3547 <b></b>
3548  
3549 </td>
3550 </tr>
3551 <tr>
3552 <td>results_cur</td>
3553 <td>U32</td>
3554 <td> </td>
3555 <td>
3556
3557  
3558 </td>
3559 <td>
3560 <b></b>
3561  
3562 </td>
3563 </tr>
3564 <tr>
3565 <td>results_max</td>
3566 <td>U32</td>
3567 <td> </td>
3568 <td>
3569
3570  
3571 </td>
3572 <td>
3573 <b></b>
3574  
3575 </td>
3576 </tr>
3577 <tr>
3578 <td>unknown2</td>
3579 <td>U32</td>
3580 <td> </td>
3581 <td>
3582
3583  
3584 </td>
3585 <td>
3586 <b></b>
3587  
3588 </td>
3589 </tr>
3590 <tr>
3591 <td>params_cur</td>
3592 <td>U32</td>
3593 <td> </td>
3594 <td>
3595
3596  
3597 </td>
3598 <td>
3599 <b></b>
3600  
3601 </td>
3602 </tr>
3603 <tr>
3604 <td>params_max</td>
3605 <td>U32</td>
3606 <td> </td>
3607 <td>
3608
3609  
3610 </td>
3611 <td>
3612 <b></b>
3613  
3614 </td>
3615 </tr>
3616 <tr>
3617 <td>bytes_in</td>
3618 <td>U64</td>
3619 <td> </td>
3620 <td>
3621
3622  
3623 </td>
3624 <td>
3625 <b></b>
3626  
3627 </td>
3628 </tr>
3629 <tr>
3630 <td>packets_in</td>
3631 <td>U64</td>
3632 <td> </td>
3633 <td>
3634
3635  
3636 </td>
3637 <td>
3638 <b></b>
3639  
3640 </td>
3641 </tr>
3642 <tr>
3643 <td>bytes_out</td>
3644 <td>U64</td>
3645 <td> </td>
3646 <td>
3647
3648  
3649 </td>
3650 <td>
3651 <b></b>
3652  
3653 </td>
3654 </tr>
3655 <tr>
3656 <td>packets_out</td>
3657 <td>U64</td>
3658 <td> </td>
3659 <td>
3660
3661  
3662 </td>
3663 <td>
3664 <b></b>
3665  
3666 </td>
3667 </tr>
3668 </table>
3669
3670 <h4>
3671 <a name="S0016"></a>ORIGIN: SERVER;
3672 MESSAGE: idle_warn</h4>
3673 NUMERIC TYPE (hex): 0016
3674 (possibly in response to
3675 <a href="#C0016">idle_reset(0016)</a>
3676 )
3677 <p>
3678 idle warning, autologout soon (10 minutes...)
3679 </p>
3680 <table border="1" width="100%">
3681 <tr>
3682 <th width="10%">NAME</th>
3683 <th width="10%">TYPE</th>
3684 <th width="15%">DEFAULT</th>
3685 <th>DESCRIPTION</th>
3686 <th width="15%">DEC-GUARD</th>
3687 </tr>
3688 </table>
3689
3690 <h4>
3691 <a name="S001b"></a>ORIGIN: SERVER;
3692 MESSAGE: timewarning_default</h4>
3693 NUMERIC TYPE (hex): 001b
3694 (possibly in response to
3695 <a href="#C0000">login(0000)</a>
3696 )
3697 <p>
3698 WILD guess
3699 </p>
3700 <table border="1" width="100%">
3701 <tr>
3702 <th width="10%">NAME</th>
3703 <th width="10%">TYPE</th>
3704 <th width="15%">DEFAULT</th>
3705 <th>DESCRIPTION</th>
3706 <th width="15%">DEC-GUARD</th>
3707 </tr>
3708 <tr>
3709 <td>channel</td>
3710 <td>U16</td>
3711 <td> </td>
3712 <td>
3713
3714  
3715 </td>
3716 <td>
3717 <b></b>
3718  
3719 </td>
3720 </tr>
3721 <tr>
3722 <td>time</td>
3723 <td>U16</td>
3724 <td> </td>
3725 <td>
3726
3727  
3728 </td>
3729 <td>
3730 <b></b>
3731  
3732 </td>
3733 </tr>
3734 </table>
3735
3736 <h4>
3737 <a name="S001c"></a>ORIGIN: SERVER;
3738 MESSAGE: idle_err</h4>
3739 NUMERIC TYPE (hex): 001c<p>
3740 autologout
3741 </p>
3742 <table border="1" width="100%">
3743 <tr>
3744 <th width="10%">NAME</th>
3745 <th width="10%">TYPE</th>
3746 <th width="15%">DEFAULT</th>
3747 <th>DESCRIPTION</th>
3748 <th width="15%">DEC-GUARD</th>
3749 </tr>
3750 </table>
3751
3752 <h4>
3753 <a name="S001d"></a>ORIGIN: SERVER;
3754 MESSAGE: ping</h4>
3755 NUMERIC TYPE (hex): 001d<p>
3756 Sent by the server regularly, but not answering them
3757 isn't valid. Strange form of keepalive?
3758 </p>
3759 <table border="1" width="100%">
3760 <tr>
3761 <th width="10%">NAME</th>
3762 <th width="10%">TYPE</th>
3763 <th width="15%">DEFAULT</th>
3764 <th>DESCRIPTION</th>
3765 <th width="15%">DEC-GUARD</th>
3766 </tr>
3767 </table>
3768
3769 <h4>
3770 <a name="S001e"></a>ORIGIN: SERVER;
3771 MESSAGE: usergraph</h4>
3772 NUMERIC TYPE (hex): 001e
3773 (possibly in response to
3774 <a href="#C001e">req_usergraph(001e)</a>
3775 )
3776 <p>
3777 User graph data.
3778 </p>
3779 <table border="1" width="100%">
3780 <tr>
3781 <th width="10%">NAME</th>
3782 <th width="10%">TYPE</th>
3783 <th width="15%">DEFAULT</th>
3784 <th>DESCRIPTION</th>
3785 <th width="15%">DEC-GUARD</th>
3786 </tr>
3787 <tr>
3788 <td>data</td>
3789 <td>I16</td>
3790 <td> </td>
3791 <td>
3792 If empty, no graph is available. The unit seems to
3793 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
3794 There is probably one entry per day, the newest one last.
3795
3796  
3797 </td>
3798 <td>
3799 <b></b>
3800  
3801 </td>
3802 </tr>
3803 </table>
3804
3805 <h4>
3806 <a name="S001f"></a>ORIGIN: SERVER;
3807 MESSAGE: memo</h4>
3808 NUMERIC TYPE (hex): 001f
3809 (possibly in response to
3810 <a href="#C001f">fetch_memos(001f)</a>
3811 )
3812 <p>
3813 Unclear. "Leave Message"?
3814 6 strings following.
3815 </p>
3816 <table border="1" width="100%">
3817 <tr>
3818 <th width="10%">NAME</th>
3819 <th width="10%">TYPE</th>
3820 <th width="15%">DEFAULT</th>
3821 <th>DESCRIPTION</th>
3822 <th width="15%">DEC-GUARD</th>
3823 </tr>
3824 <tr>
3825 <td>s1</td>
3826 <td>STRING</td>
3827 <td> </td>
3828 <td>
3829
3830  
3831 </td>
3832 <td>
3833 <b></b>
3834  
3835 </td>
3836 </tr>
3837 <tr>
3838 <td>s2</td>
3839 <td>STRING</td>
3840 <td> </td>
3841 <td>
3842
3843  
3844 </td>
3845 <td>
3846 <b></b>
3847  
3848 </td>
3849 </tr>
3850 <tr>
3851 <td>s3</td>
3852 <td>STRING</td>
3853 <td> </td>
3854 <td>
3855
3856  
3857 </td>
3858 <td>
3859 <b></b>
3860  
3861 </td>
3862 </tr>
3863 <tr>
3864 <td>s4</td>
3865 <td>STRING</td>
3866 <td> </td>
3867 <td>
3868
3869  
3870 </td>
3871 <td>
3872 <b></b>
3873  
3874 </td>
3875 </tr>
3876 <tr>
3877 <td>s5</td>
3878 <td>STRING</td>
3879 <td> </td>
3880 <td>
3881
3882  
3883 </td>
3884 <td>
3885 <b></b>
3886  
3887 </td>
3888 </tr>
3889 <tr>
3890 <td>s6</td>
3891 <td>STRING</td>
3892 <td> </td>
3893 <td>
3894
3895  
3896 </td>
3897 <td>
3898 <b></b>
3899  
3900 </td>
3901 </tr>
3902 </table>
3903
3904 <h4>
3905 <a name="S0021"></a>ORIGIN: SERVER;
3906 MESSAGE: userpic</h4>
3907 NUMERIC TYPE (hex): 0021
3908 (possibly in response to
3909 <a href="#C0021">req_pic(0021)</a>
3910 )
3911 <p>
3912 </p>
3913 <table border="1" width="100%">
3914 <tr>
3915 <th width="10%">NAME</th>
3916 <th width="10%">TYPE</th>
3917 <th width="15%">DEFAULT</th>
3918 <th>DESCRIPTION</th>
3919 <th width="15%">DEC-GUARD</th>
3920 </tr>
3921 <tr>
3922 <td>name</td>
3923 <td>username</td>
3924 <td> </td>
3925 <td>
3926 Reply to pic_req, contains an image in jpeg format.
3927
3928  
3929 </td>
3930 <td>
3931 <b></b>
3932  
3933 </td>
3934 </tr>
3935 <tr>
3936 <td>data</td>
3937 <td>DATA</td>
3938 <td> </td>
3939 <td>
3940
3941  
3942 </td>
3943 <td>
3944 <b></b>
3945  
3946 </td>
3947 </tr>
3948 </table>
3949
3950 <h4>
3951 <a name="S0100"></a>ORIGIN: SERVER;
3952 MESSAGE: gnotice</h4>
3953 NUMERIC TYPE (hex): 0100
3954 (possibly in response to
3955 <a href="#C0100">gnotice(0100)</a>
3956 )
3957 <p>
3958 global notice, sent to everybody
3959 </p>
3960 <table border="1" width="100%">
3961 <tr>
3962 <th width="10%">NAME</th>
3963 <th width="10%">TYPE</th>
3964 <th width="15%">DEFAULT</th>
3965 <th>DESCRIPTION</th>
3966 <th width="15%">DEC-GUARD</th>
3967 </tr>
3968 <tr>
3969 <td>notice</td>
3970 <td>STRING</td>
3971 <td> </td>
3972 <td>
3973
3974  
3975 </td>
3976 <td>
3977 <b></b>
3978  
3979 </td>
3980 </tr>
3981 </table>
3982
3983 <h4>
3984 <a name="S0202"></a>ORIGIN: SERVER;
3985 MESSAGE: upd_user</h4>
3986 NUMERIC TYPE (hex): 0202<p>
3987 # maybe soe notify? Totally unclear.
3988 # loc 0" type="chat(?) loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
3989 </p>
3990 <table border="1" width="100%">
3991 <tr>
3992 <th width="10%">NAME</th>
3993 <th width="10%">TYPE</th>
3994 <th width="15%">DEFAULT</th>
3995 <th>DESCRIPTION</th>
3996 <th width="15%">DEC-GUARD</th>
3997 </tr>
3998 <tr>
3999 <td>location</td>
4000 <td>U32</td>
4001 <td> </td>
4002 <td>
4003
4004  
4005 </td>
4006 <td>
4007 <b></b>
4008  
4009 </td>
4010 </tr>
4011 <tr>
4012 <td>user</td>
4013 <td>user</td>
4014 <td> </td>
4015 <td>
4016
4017  
4018 </td>
4019 <td>
4020 <b></b>
4021  
4022 </td>
4023 </tr>
4024 <tr>
4025 <td>lotsofinfo</td>
4026 <td>DATA</td>
4027 <td> </td>
4028 <td>
4029
4030  
4031 </td>
4032 <td>
4033 <b>location</b> == 2
4034  
4035 </td>
4036 </tr>
4037 </table>
4038
4039 <h4>
4040 <a name="S0310"></a>ORIGIN: SERVER;
4041 MESSAGE: priv_room</h4>
4042 NUMERIC TYPE (hex): 0310<p>
4043 "permission denied" when joining a room
4044 </p>
4045 <table border="1" width="100%">
4046 <tr>
4047 <th width="10%">NAME</th>
4048 <th width="10%">TYPE</th>
4049 <th width="15%">DEFAULT</th>
4050 <th>DESCRIPTION</th>
4051 <th width="15%">DEC-GUARD</th>
4052 </tr>
4053 <tr>
4054 <td>name</td>
4055 <td>STRING</td>
4056 <td> </td>
4057 <td>
4058
4059  
4060 </td>
4061 <td>
4062 <b></b>
4063  
4064 </td>
4065 </tr>
4066 </table>
4067
4068 <h4>
4069 <a name="S0318"></a>ORIGIN: SERVER;
4070 MESSAGE: upd_rooms</h4>
4071 NUMERIC TYPE (hex): 0318
4072 (possibly in response to
4073 <a href="#C0318">list_rooms(0318)</a>
4074 )
4075 <p>
4076 </p>
4077 <table border="1" width="100%">
4078 <tr>
4079 <th width="10%">NAME</th>
4080 <th width="10%">TYPE</th>
4081 <th width="15%">DEFAULT</th>
4082 <th>DESCRIPTION</th>
4083 <th width="15%">DEC-GUARD</th>
4084 </tr>
4085 <tr>
4086 <td>rooms</td>
4087 <td>room</td>
4088 <td> </td>
4089 <td>
4090
4091  
4092 </td>
4093 <td>
4094 <b></b>
4095  
4096 </td>
4097 </tr>
4098 </table>
4099
4100 <h4>
4101 <a name="S0411"></a>ORIGIN: SERVER;
4102 MESSAGE: chal_defaults</h4>
4103 NUMERIC TYPE (hex): 0411
4104 (possibly in response to
4105 <a href="#C0000">login(0000)</a>
4106 )
4107 <p>
4108 </p>
4109 <table border="1" width="100%">
4110 <tr>
4111 <th width="10%">NAME</th>
4112 <th width="10%">TYPE</th>
4113 <th width="15%">DEFAULT</th>
4114 <th>DESCRIPTION</th>
4115 <th width="15%">DEC-GUARD</th>
4116 </tr>
4117 <tr>
4118 <td>channel</td>
4119 <td>U16</td>
4120 <td> </td>
4121 <td>
4122
4123  
4124 </td>
4125 <td>
4126 <b></b>
4127  
4128 </td>
4129 </tr>
4130 <tr>
4131 <td>defaults</td>
4132 <td>challenge_defaults</td>
4133 <td> </td>
4134 <td>
4135
4136  
4137 </td>
4138 <td>
4139 <b></b>
4140  
4141 </td>
4142 </tr>
4143 </table>
4144
4145 <h4>
4146 <a name="S0412"></a>ORIGIN: SERVER;
4147 MESSAGE: rej_game</h4>
4148 NUMERIC TYPE (hex): 0412<p>
4149 Unable to create challenge. The channel might be optional.
4150 </p>
4151 <table border="1" width="100%">
4152 <tr>
4153 <th width="10%">NAME</th>
4154 <th width="10%">TYPE</th>
4155 <th width="15%">DEFAULT</th>
4156 <th>DESCRIPTION</th>
4157 <th width="15%">DEC-GUARD</th>
4158 </tr>
4159 <tr>
4160 <td>channel</td>
4161 <td>U16</td>
4162 <td> </td>
4163 <td>
4164
4165  
4166 </td>
4167 <td>
4168 <b></b>
4169  
4170 </td>
4171 </tr>
4172 </table>
4173
4174 <h4>
4175 <a name="S0414"></a>ORIGIN: SERVER;
4176 MESSAGE: game_record</h4>
4177 NUMERIC TYPE (hex): 0414
4178 (possibly in response to
4179 <a href="#C0413">req_game_record(0413)</a>
4180 )
4181 <p>
4182 The users game record.
4183 </p>
4184 <table border="1" width="100%">
4185 <tr>
4186 <th width="10%">NAME</th>
4187 <th width="10%">TYPE</th>
4188 <th width="15%">DEFAULT</th>
4189 <th>DESCRIPTION</th>
4190 <th width="15%">DEC-GUARD</th>
4191 </tr>
4192 <tr>
4193 <td>name</td>
4194 <td>username</td>
4195 <td> </td>
4196 <td>
4197
4198  
4199 </td>
4200 <td>
4201 <b></b>
4202  
4203 </td>
4204 </tr>
4205 <tr>
4206 <td>more</td>
4207 <td>flag</td>
4208 <td> </td>
4209 <td>
4210 Wether more games are available (must be requested manually)
4211
4212  
4213 </td>
4214 <td>
4215 <b></b>
4216  
4217 </td>
4218 </tr>
4219 <tr>
4220 <td>games</td>
4221 <td>game_record</td>
4222 <td> </td>
4223 <td>
4224
4225  
4226 </td>
4227 <td>
4228 <b></b>
4229  
4230 </td>
4231 </tr>
4232 </table>
4233
4234 <h4>
4235 <a name="S041c"></a>ORIGIN: SERVER;
4236 MESSAGE: upd_game2</h4>
4237 NUMERIC TYPE (hex): 041c<p>
4238 Unclear.
4239 </p>
4240 <table border="1" width="100%">
4241 <tr>
4242 <th width="10%">NAME</th>
4243 <th width="10%">TYPE</th>
4244 <th width="15%">DEFAULT</th>
4245 <th>DESCRIPTION</th>
4246 <th width="15%">DEC-GUARD</th>
4247 </tr>
4248 <tr>
4249 <td>channel_junk</td>
4250 <td>U16</td>
4251 <td> </td>
4252 <td>
4253
4254  
4255 </td>
4256 <td>
4257 <b></b>
4258  
4259 </td>
4260 </tr>
4261 <tr>
4262 <td>game</td>
4263 <td>game</td>
4264 <td> </td>
4265 <td>
4266
4267  
4268 </td>
4269 <td>
4270 <b></b>
4271  
4272 </td>
4273 </tr>
4274 </table>
4275
4276 <h3>Room messages</h3>
4277
4278 <p>Not all room messages are for rooms only, and rooms need to parse
4279 not only these messages. Orthogonality, what for?</p>
4280
4281 <h4>
4282 <a name="S4300"></a>ORIGIN: SERVER;
4283 MESSAGE: join_room</h4>
4284 NUMERIC TYPE (hex): 4300
4285 (possibly in response to
4286 <a href="#C4300">join_room(4300)</a>
4287 )
4288 <p>
4289 </p>
4290 <table border="1" width="100%">
4291 <tr>
4292 <th width="10%">NAME</th>
4293 <th width="10%">TYPE</th>
4294 <th width="15%">DEFAULT</th>
4295 <th>DESCRIPTION</th>
4296 <th width="15%">DEC-GUARD</th>
4297 </tr>
4298 <tr>
4299 <td>channel</td>
4300 <td>U16</td>
4301 <td> </td>
4302 <td>
4303
4304  
4305 </td>
4306 <td>
4307 <b></b>
4308  
4309 </td>
4310 </tr>
4311 <tr>
4312 <td>users</td>
4313 <td>user</td>
4314 <td> </td>
4315 <td>
4316
4317  
4318 </td>
4319 <td>
4320 <b></b>
4321  
4322 </td>
4323 </tr>
4324 </table>
4325
4326 <h4>
4327 <a name="S4301"></a>ORIGIN: SERVER;
4328 MESSAGE: msg_room</h4>
4329 NUMERIC TYPE (hex): 4301<p>
4330 </p>
4331 <table border="1" width="100%">
4332 <tr>
4333 <th width="10%">NAME</th>
4334 <th width="10%">TYPE</th>
4335 <th width="15%">DEFAULT</th>
4336 <th>DESCRIPTION</th>
4337 <th width="15%">DEC-GUARD</th>
4338 </tr>
4339 <tr>
4340 <td>channel</td>
4341 <td>U16</td>
4342 <td> </td>
4343 <td>
4344
4345  
4346 </td>
4347 <td>
4348 <b></b>
4349  
4350 </td>
4351 </tr>
4352 <tr>
4353 <td>name</td>
4354 <td>username</td>
4355 <td> </td>
4356 <td>
4357
4358  
4359 </td>
4360 <td>
4361 <b></b>
4362  
4363 </td>
4364 </tr>
4365 <tr>
4366 <td>message</td>
4367 <td>STRING</td>
4368 <td> </td>
4369 <td>
4370
4371  
4372 </td>
4373 <td>
4374 <b></b>
4375  
4376 </td>
4377 </tr>
4378 </table>
4379
4380 <h4>
4381 <a name="S4302"></a>ORIGIN: SERVER;
4382 MESSAGE: part_room</h4>
4383 NUMERIC TYPE (hex): 4302<p>
4384 </p>
4385 <table border="1" width="100%">
4386 <tr>
4387 <th width="10%">NAME</th>
4388 <th width="10%">TYPE</th>
4389 <th width="15%">DEFAULT</th>
4390 <th>DESCRIPTION</th>
4391 <th width="15%">DEC-GUARD</th>
4392 </tr>
4393 <tr>
4394 <td>channel</td>
4395 <td>U16</td>
4396 <td> </td>
4397 <td>
4398
4399  
4400 </td>
4401 <td>
4402 <b></b>
4403  
4404 </td>
4405 </tr>
4406 <tr>
4407 <td>user</td>
4408 <td>user</td>
4409 <td> </td>
4410 <td>
4411
4412  
4413 </td>
4414 <td>
4415 <b></b>
4416  
4417 </td>
4418 </tr>
4419 </table>
4420
4421 <h4>
4422 <a name="S4303"></a>ORIGIN: SERVER;
4423 MESSAGE: del_room</h4>
4424 NUMERIC TYPE (hex): 4303<p>
4425 </p>
4426 <table border="1" width="100%">
4427 <tr>
4428 <th width="10%">NAME</th>
4429 <th width="10%">TYPE</th>
4430 <th width="15%">DEFAULT</th>
4431 <th>DESCRIPTION</th>
4432 <th width="15%">DEC-GUARD</th>
4433 </tr>
4434 <tr>
4435 <td>channel</td>
4436 <td>U16</td>
4437 <td> </td>
4438 <td>
4439
4440  
4441 </td>
4442 <td>
4443 <b></b>
4444  
4445 </td>
4446 </tr>
4447 </table>
4448
4449 <h4>
4450 <a name="S4304"></a>ORIGIN: SERVER;
4451 MESSAGE: upd_games</h4>
4452 NUMERIC TYPE (hex): 4304<p>
4453 </p>
4454 <table border="1" width="100%">
4455 <tr>
4456 <th width="10%">NAME</th>
4457 <th width="10%">TYPE</th>
4458 <th width="15%">DEFAULT</th>
4459 <th>DESCRIPTION</th>
4460 <th width="15%">DEC-GUARD</th>
4461 </tr>
4462 <tr>
4463 <td>channel</td>
4464 <td>U16</td>
4465 <td> </td>
4466 <td>
4467
4468  
4469 </td>
4470 <td>
4471 <b></b>
4472  
4473 </td>
4474 </tr>
4475 <tr>
4476 <td>games</td>
4477 <td>game</td>
4478 <td> </td>
4479 <td>
4480
4481  
4482 </td>
4483 <td>
4484 <b></b>
4485  
4486 </td>
4487 </tr>
4488 </table>
4489
4490 <h4>
4491 <a name="S4319"></a>ORIGIN: SERVER;
4492 MESSAGE: desc_room</h4>
4493 NUMERIC TYPE (hex): 4319<p>
4494 </p>
4495 <table border="1" width="100%">
4496 <tr>
4497 <th width="10%">NAME</th>
4498 <th width="10%">TYPE</th>
4499 <th width="15%">DEFAULT</th>
4500 <th>DESCRIPTION</th>
4501 <th width="15%">DEC-GUARD</th>
4502 </tr>
4503 <tr>
4504 <td>channel</td>
4505 <td>U16</td>
4506 <td> </td>
4507 <td>
4508
4509  
4510 </td>
4511 <td>
4512 <b></b>
4513  
4514 </td>
4515 </tr>
4516 <tr>
4517 <td>owner</td>
4518 <td>username</td>
4519 <td> </td>
4520 <td>
4521
4522  
4523 </td>
4524 <td>
4525 <b></b>
4526  
4527 </td>
4528 </tr>
4529 <tr>
4530 <td>description</td>
4531 <td>STRING</td>
4532 <td> </td>
4533 <td>
4534
4535  
4536 </td>
4537 <td>
4538 <b></b>
4539  
4540 </td>
4541 </tr>
4542 </table>
4543
4544 <h3>Game messages</h3>
4545
4546 <h4>
4547 <a name="S4400"></a>ORIGIN: SERVER;
4548 MESSAGE: upd_challenge</h4>
4549 NUMERIC TYPE (hex): 4400<p>
4550 Unclear.
4551 </p>
4552 <table border="1" width="100%">
4553 <tr>
4554 <th width="10%">NAME</th>
4555 <th width="10%">TYPE</th>
4556 <th width="15%">DEFAULT</th>
4557 <th>DESCRIPTION</th>
4558 <th width="15%">DEC-GUARD</th>
4559 </tr>
4560 <tr>
4561 <td>channel</td>
4562 <td>U16</td>
4563 <td> </td>
4564 <td>
4565
4566  
4567 </td>
4568 <td>
4569 <b></b>
4570  
4571 </td>
4572 </tr>
4573 <tr>
4574 <td>challenge</td>
4575 <td>challenge</td>
4576 <td> </td>
4577 <td>
4578
4579  
4580 </td>
4581 <td>
4582 <b></b>
4583  
4584 </td>
4585 </tr>
4586 </table>
4587
4588 <h4>
4589 <a name="S4401"></a>ORIGIN: SERVER;
4590 MESSAGE: upd_game</h4>
4591 NUMERIC TYPE (hex): 4401<p>
4592 </p>
4593 <table border="1" width="100%">
4594 <tr>
4595 <th width="10%">NAME</th>
4596 <th width="10%">TYPE</th>
4597 <th width="15%">DEFAULT</th>
4598 <th>DESCRIPTION</th>
4599 <th width="15%">DEC-GUARD</th>
4600 </tr>
4601 <tr>
4602 <td>channel</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>game</td>
4616 <td>game</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="S4402"></a>ORIGIN: SERVER;
4631 MESSAGE: del_game</h4>
4632 NUMERIC TYPE (hex): 4402<p>
4633 </p>
4634 <table border="1" width="100%">
4635 <tr>
4636 <th width="10%">NAME</th>
4637 <th width="10%">TYPE</th>
4638 <th width="15%">DEFAULT</th>
4639 <th>DESCRIPTION</th>
4640 <th width="15%">DEC-GUARD</th>
4641 </tr>
4642 <tr>
4643 <td>channel</td>
4644 <td>U16</td>
4645 <td> </td>
4646 <td>
4647
4648  
4649 </td>
4650 <td>
4651 <b></b>
4652  
4653 </td>
4654 </tr>
4655 </table>
4656
4657 <h4>
4658 <a name="S4403"></a>ORIGIN: SERVER;
4659 MESSAGE: upd_observers</h4>
4660 NUMERIC TYPE (hex): 4403<p>
4661 </p>
4662 <table border="1" width="100%">
4663 <tr>
4664 <th width="10%">NAME</th>
4665 <th width="10%">TYPE</th>
4666 <th width="15%">DEFAULT</th>
4667 <th>DESCRIPTION</th>
4668 <th width="15%">DEC-GUARD</th>
4669 </tr>
4670 <tr>
4671 <td>channel</td>
4672 <td>U16</td>
4673 <td> </td>
4674 <td>
4675
4676  
4677 </td>
4678 <td>
4679 <b></b>
4680  
4681 </td>
4682 </tr>
4683 <tr>
4684 <td>users</td>
4685 <td>user</td>
4686 <td> </td>
4687 <td>
4688
4689  
4690 </td>
4691 <td>
4692 <b></b>
4693  
4694 </td>
4695 </tr>
4696 </table>
4697
4698 <h4>
4699 <a name="S4404"></a>ORIGIN: SERVER;
4700 MESSAGE: del_observer</h4>
4701 NUMERIC TYPE (hex): 4404<p>
4702 </p>
4703 <table border="1" width="100%">
4704 <tr>
4705 <th width="10%">NAME</th>
4706 <th width="10%">TYPE</th>
4707 <th width="15%">DEFAULT</th>
4708 <th>DESCRIPTION</th>
4709 <th width="15%">DEC-GUARD</th>
4710 </tr>
4711 <tr>
4712 <td>channel</td>
4713 <td>U16</td>
4714 <td> </td>
4715 <td>
4716
4717  
4718 </td>
4719 <td>
4720 <b></b>
4721  
4722 </td>
4723 </tr>
4724 <tr>
4725 <td>name</td>
4726 <td>username</td>
4727 <td> </td>
4728 <td>
4729
4730  
4731 </td>
4732 <td>
4733 <b></b>
4734  
4735 </td>
4736 </tr>
4737 </table>
4738
4739 <h4>
4740 <a name="S4405"></a>ORIGIN: SERVER;
4741 MESSAGE: set_tree</h4>
4742 NUMERIC TYPE (hex): 4405<p>
4743 </p>
4744 <table border="1" width="100%">
4745 <tr>
4746 <th width="10%">NAME</th>
4747 <th width="10%">TYPE</th>
4748 <th width="15%">DEFAULT</th>
4749 <th>DESCRIPTION</th>
4750 <th width="15%">DEC-GUARD</th>
4751 </tr>
4752 <tr>
4753 <td>channel</td>
4754 <td>U16</td>
4755 <td> </td>
4756 <td>
4757
4758  
4759 </td>
4760 <td>
4761 <b></b>
4762  
4763 </td>
4764 </tr>
4765 <tr>
4766 <td>tree</td>
4767 <td>TREE</td>
4768 <td> </td>
4769 <td>
4770
4771  
4772 </td>
4773 <td>
4774 <b></b>
4775  
4776 </td>
4777 </tr>
4778 </table>
4779
4780 <h4>
4781 <a name="S4406"></a>ORIGIN: SERVER;
4782 MESSAGE: upd_tree</h4>
4783 NUMERIC TYPE (hex): 4406<p>
4784 </p>
4785 <table border="1" width="100%">
4786 <tr>
4787 <th width="10%">NAME</th>
4788 <th width="10%">TYPE</th>
4789 <th width="15%">DEFAULT</th>
4790 <th>DESCRIPTION</th>
4791 <th width="15%">DEC-GUARD</th>
4792 </tr>
4793 <tr>
4794 <td>channel</td>
4795 <td>U16</td>
4796 <td> </td>
4797 <td>
4798
4799  
4800 </td>
4801 <td>
4802 <b></b>
4803  
4804 </td>
4805 </tr>
4806 <tr>
4807 <td>tree</td>
4808 <td>TREE</td>
4809 <td> </td>
4810 <td>
4811
4812  
4813 </td>
4814 <td>
4815 <b></b>
4816  
4817 </td>
4818 </tr>
4819 </table>
4820
4821 <h4>
4822 <a name="S4409"></a>ORIGIN: SERVER;
4823 MESSAGE: superko</h4>
4824 NUMERIC TYPE (hex): 4409<p>
4825 Superko-warning.
4826 </p>
4827 <table border="1" width="100%">
4828 <tr>
4829 <th width="10%">NAME</th>
4830 <th width="10%">TYPE</th>
4831 <th width="15%">DEFAULT</th>
4832 <th>DESCRIPTION</th>
4833 <th width="15%">DEC-GUARD</th>
4834 </tr>
4835 <tr>
4836 <td>channel</td>
4837 <td>U16</td>
4838 <td> </td>
4839 <td>
4840
4841  
4842 </td>
4843 <td>
4844 <b></b>
4845  
4846 </td>
4847 </tr>
4848 </table>
4849
4850 <h4>
4851 <a name="S440b"></a>ORIGIN: SERVER;
4852 MESSAGE: final_result</h4>
4853 NUMERIC TYPE (hex): 440b<p>
4854 </p>
4855 <table border="1" width="100%">
4856 <tr>
4857 <th width="10%">NAME</th>
4858 <th width="10%">TYPE</th>
4859 <th width="15%">DEFAULT</th>
4860 <th>DESCRIPTION</th>
4861 <th width="15%">DEC-GUARD</th>
4862 </tr>
4863 <tr>
4864 <td>channel</td>
4865 <td>U16</td>
4866 <td> </td>
4867 <td>
4868
4869  
4870 </td>
4871 <td>
4872 <b></b>
4873  
4874 </td>
4875 </tr>
4876 <tr>
4877 <td>blackscore</td>
4878 <td>scorevalues</td>
4879 <td> </td>
4880 <td>
4881
4882  
4883 </td>
4884 <td>
4885 <b></b>
4886  
4887 </td>
4888 </tr>
4889 <tr>
4890 <td>whitescore</td>
4891 <td>scorevalues</td>
4892 <td> </td>
4893 <td>
4894
4895  
4896 </td>
4897 <td>
4898 <b></b>
4899  
4900 </td>
4901 </tr>
4902 </table>
4903
4904 <h4>
4905 <a name="S440e"></a>ORIGIN: SERVER;
4906 MESSAGE: req_undo</h4>
4907 NUMERIC TYPE (hex): 440e<p>
4908 </p>
4909 <table border="1" width="100%">
4910 <tr>
4911 <th width="10%">NAME</th>
4912 <th width="10%">TYPE</th>
4913 <th width="15%">DEFAULT</th>
4914 <th>DESCRIPTION</th>
4915 <th width="15%">DEC-GUARD</th>
4916 </tr>
4917 <tr>
4918 <td>channel</td>
4919 <td>U16</td>
4920 <td> </td>
4921 <td>
4922
4923
4924  
4925 </td>
4926 <td>
4927 <b></b>
4928  
4929 </td>
4930 </tr>
4931 </table>
4932
4933 <h4>
4934 <a name="S4410"></a>ORIGIN: SERVER;
4935 MESSAGE: resign_game</h4>
4936 NUMERIC TYPE (hex): 4410<p>
4937 </p>
4938 <table border="1" width="100%">
4939 <tr>
4940 <th width="10%">NAME</th>
4941 <th width="10%">TYPE</th>
4942 <th width="15%">DEFAULT</th>
4943 <th>DESCRIPTION</th>
4944 <th width="15%">DEC-GUARD</th>
4945 </tr>
4946 <tr>
4947 <td>channel</td>
4948 <td>U16</td>
4949 <td> </td>
4950 <td>
4951
4952  
4953 </td>
4954 <td>
4955 <b></b>
4956  
4957 </td>
4958 </tr>
4959 <tr>
4960 <td>player</td>
4961 <td>U8</td>
4962 <td> </td>
4963 <td>
4964
4965  
4966 </td>
4967 <td>
4968 <b></b>
4969  
4970 </td>
4971 </tr>
4972 </table>
4973
4974 <h4>
4975 <a name="S441a"></a>ORIGIN: SERVER;
4976 MESSAGE: set_teacher</h4>
4977 NUMERIC TYPE (hex): 441a<p>
4978 </p>
4979 <table border="1" width="100%">
4980 <tr>
4981 <th width="10%">NAME</th>
4982 <th width="10%">TYPE</th>
4983 <th width="15%">DEFAULT</th>
4984 <th>DESCRIPTION</th>
4985 <th width="15%">DEC-GUARD</th>
4986 </tr>
4987 <tr>
4988 <td>channel</td>
4989 <td>U16</td>
4990 <td> </td>
4991 <td>
4992
4993  
4994 </td>
4995 <td>
4996 <b></b>
4997  
4998 </td>
4999 </tr>
5000 <tr>
5001 <td>name</td>
5002 <td>username</td>
5003 <td> </td>
5004 <td>
5005
5006  
5007 </td>
5008 <td>
5009 <b></b>
5010  
5011 </td>
5012 </tr>
5013 </table>
5014
5015 <h4>
5016 <a name="S441d"></a>ORIGIN: SERVER;
5017 MESSAGE: owner_left</h4>
5018 NUMERIC TYPE (hex): 441d<p>
5019 Unclear.
5020 </p>
5021 <table border="1" width="100%">
5022 <tr>
5023 <th width="10%">NAME</th>
5024 <th width="10%">TYPE</th>
5025 <th width="15%">DEFAULT</th>
5026 <th>DESCRIPTION</th>
5027 <th width="15%">DEC-GUARD</th>
5028 </tr>
5029 <tr>
5030 <td>channel</td>
5031 <td>U16</td>
5032 <td> </td>
5033 <td>
5034
5035  
5036 </td>
5037 <td>
5038 <b></b>
5039  
5040 </td>
5041 </tr>
5042 </table>
5043
5044 <h4>
5045 <a name="S441e"></a>ORIGIN: SERVER;
5046 MESSAGE: teacher_left</h4>
5047 NUMERIC TYPE (hex): 441e<p>
5048 Unclear.
5049 </p>
5050 <table border="1" width="100%">
5051 <tr>
5052 <th width="10%">NAME</th>
5053 <th width="10%">TYPE</th>
5054 <th width="15%">DEFAULT</th>
5055 <th>DESCRIPTION</th>
5056 <th width="15%">DEC-GUARD</th>
5057 </tr>
5058 <tr>
5059 <td>channel</td>
5060 <td>U16</td>
5061 <td> </td>
5062 <td>
5063
5064  
5065 </td>
5066 <td>
5067 <b></b>
5068  
5069 </td>
5070 </tr>
5071 </table>
5072
5073 <h4>
5074 <a name="S4422"></a>ORIGIN: SERVER;
5075 MESSAGE: unknown4422</h4>
5076 NUMERIC TYPE (hex): 4422<p>
5077 change teacher? something to do with editing?
5078 </p>
5079 <table border="1" width="100%">
5080 <tr>
5081 <th width="10%">NAME</th>
5082 <th width="10%">TYPE</th>
5083 <th width="15%">DEFAULT</th>
5084 <th>DESCRIPTION</th>
5085 <th width="15%">DEC-GUARD</th>
5086 </tr>
5087 <tr>
5088 <td>channel</td>
5089 <td>U16</td>
5090 <td> </td>
5091 <td>
5092
5093  
5094 </td>
5095 <td>
5096 <b></b>
5097  
5098 </td>
5099 </tr>
5100 <tr>
5101 <td>name1</td>
5102 <td>username</td>
5103 <td> </td>
5104 <td>
5105
5106  
5107 </td>
5108 <td>
5109 <b></b>
5110  
5111 </td>
5112 </tr>
5113 <tr>
5114 <td>name2</td>
5115 <td>username</td>
5116 <td> </td>
5117 <td>
5118
5119  
5120 </td>
5121 <td>
5122 <b></b>
5123  
5124 </td>
5125 </tr>
5126 </table>
5127
5128 <h4>
5129 <a name="S4428"></a>ORIGIN: SERVER;
5130 MESSAGE: add_tree</h4>
5131 NUMERIC TYPE (hex): 4428<p>
5132 <p>See <a href="#S4405">set_tree(4405)</a>. In addition, flags the tree as being
5133 uploaded completely.</p>
5134 </p>
5135 <table border="1" width="100%">
5136 <tr>
5137 <th width="10%">NAME</th>
5138 <th width="10%">TYPE</th>
5139 <th width="15%">DEFAULT</th>
5140 <th>DESCRIPTION</th>
5141 <th width="15%">DEC-GUARD</th>
5142 </tr>
5143 <tr>
5144 <td>channel</td>
5145 <td>U16</td>
5146 <td> </td>
5147 <td>
5148
5149  
5150 </td>
5151 <td>
5152 <b></b>
5153  
5154 </td>
5155 </tr>
5156 <tr>
5157 <td>tree</td>
5158 <td>TREE</td>
5159 <td> </td>
5160 <td>
5161
5162  
5163 </td>
5164 <td>
5165 <b></b>
5166  
5167 </td>
5168 </tr>
5169 </table>
5170
5171 <h4>
5172 <a name="S4433"></a>ORIGIN: SERVER;
5173 MESSAGE: req_result</h4>
5174 NUMERIC TYPE (hex): 4433<p>
5175 Unclear.
5176 </p>
5177 <table border="1" width="100%">
5178 <tr>
5179 <th width="10%">NAME</th>
5180 <th width="10%">TYPE</th>
5181 <th width="15%">DEFAULT</th>
5182 <th>DESCRIPTION</th>
5183 <th width="15%">DEC-GUARD</th>
5184 </tr>
5185 <tr>
5186 <td>channel</td>
5187 <td>U16</td>
5188 <td> </td>
5189 <td>
5190 # # recv_result(?)
5191
5192  
5193 </td>
5194 <td>
5195 <b></b>
5196  
5197 </td>
5198 </tr>
5199 </table>
5200
5201 <h4>
5202 <a name="S4434"></a>ORIGIN: SERVER;
5203 MESSAGE: unknown4434</h4>
5204 NUMERIC TYPE (hex): 4434<p>
5205 </p>
5206 <table border="1" width="100%">
5207 <tr>
5208 <th width="10%">NAME</th>
5209 <th width="10%">TYPE</th>
5210 <th width="15%">DEFAULT</th>
5211 <th>DESCRIPTION</th>
5212 <th width="15%">DEC-GUARD</th>
5213 </tr>
5214 <tr>
5215 <td>channel</td>
5216 <td>U16</td>
5217 <td> </td>
5218 <td>
5219
5220  
5221 </td>
5222 <td>
5223 <b></b>
5224  
5225 </td>
5226 </tr>
5227 <tr>
5228 <td>b1</td>
5229 <td>U8</td>
5230 <td> </td>
5231 <td>
5232 ?? !demonstration game??
5233
5234  
5235 </td>
5236 <td>
5237 <b></b>
5238  
5239 </td>
5240 </tr>
5241 </table>
5242
5243 </body>
5244 </html>