ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.34
Committed: Tue Jul 22 13:12:38 2003 UTC (20 years, 10 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.33: +89 -89 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.33 $</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 almost 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="C0200"></a>ORIGIN: CLIENT;
957 MESSAGE: notify_add</h4>
958 NUMERIC TYPE (hex): 0200<p>
959
960 <p>Probably setting a notifier on a username, to get informed about
961 changes using messages. ???</p>
962 </p>
963 <table border="1" width="100%">
964 <tr>
965 <th width="10%">NAME</th>
966 <th width="10%">TYPE</th>
967 <th width="15%">DEFAULT</th>
968 <th>DESCRIPTION</th>
969 <th width="15%">DEC-GUARD</th>
970 </tr>
971 <tr>
972 <td>name</td>
973 <td>username</td>
974 <td> </td>
975 <td>
976
977  
978 </td>
979 <td>
980 <b></b>
981  
982 </td>
983 </tr>
984 </table>
985
986 <h4>
987 <a name="C0201"></a>ORIGIN: CLIENT;
988 MESSAGE: notify_del</h4>
989 NUMERIC TYPE (hex): 0201<p>
990
991 <p>Probably remove the notifier again.</p>
992 </p>
993 <table border="1" width="100%">
994 <tr>
995 <th width="10%">NAME</th>
996 <th width="10%">TYPE</th>
997 <th width="15%">DEFAULT</th>
998 <th>DESCRIPTION</th>
999 <th width="15%">DEC-GUARD</th>
1000 </tr>
1001 <tr>
1002 <td>name</td>
1003 <td>username</td>
1004 <td> </td>
1005 <td>
1006
1007  
1008 </td>
1009 <td>
1010 <b></b>
1011  
1012 </td>
1013 </tr>
1014 </table>
1015
1016 <h4>
1017 <a name="C0318"></a>ORIGIN: CLIENT;
1018 MESSAGE: list_rooms</h4>
1019 NUMERIC TYPE (hex): 0318<p>
1020 <p>List the rooms in a specific group/category. Results in a <a href="#S0318">upd_rooms(0318)</a> message.</p>
1021 </p>
1022 <table border="1" width="100%">
1023 <tr>
1024 <th width="10%">NAME</th>
1025 <th width="10%">TYPE</th>
1026 <th width="15%">DEFAULT</th>
1027 <th>DESCRIPTION</th>
1028 <th width="15%">DEC-GUARD</th>
1029 </tr>
1030 <tr>
1031 <td>group</td>
1032 <td>U8</td>
1033 <td> </td>
1034 <td>
1035
1036  
1037 </td>
1038 <td>
1039 <b></b>
1040  
1041 </td>
1042 </tr>
1043 </table>
1044
1045 <h4>
1046 <a name="C031a"></a>ORIGIN: CLIENT;
1047 MESSAGE: new_room</h4>
1048 NUMERIC TYPE (hex): 031a<p>
1049 Create a new room. Not verified.
1050 </p>
1051 <table border="1" width="100%">
1052 <tr>
1053 <th width="10%">NAME</th>
1054 <th width="10%">TYPE</th>
1055 <th width="15%">DEFAULT</th>
1056 <th>DESCRIPTION</th>
1057 <th width="15%">DEC-GUARD</th>
1058 </tr>
1059 <tr>
1060 <td>name</td>
1061 <td>username</td>
1062 <td> </td>
1063 <td>
1064
1065  
1066 </td>
1067 <td>
1068 <b></b>
1069  
1070 </td>
1071 </tr>
1072 <tr>
1073 <td>i1</td>
1074 <td>U32</td>
1075 <td>0 </td>
1076 <td>
1077
1078  
1079 </td>
1080 <td>
1081 <b></b>
1082  
1083 </td>
1084 </tr>
1085 <tr>
1086 <td>b1</td>
1087 <td>U8</td>
1088 <td>0 </td>
1089 <td>
1090
1091  
1092 </td>
1093 <td>
1094 <b></b>
1095  
1096 </td>
1097 </tr>
1098 <tr>
1099 <td>b2</td>
1100 <td>U8</td>
1101 <td>255 </td>
1102 <td>
1103
1104  
1105 </td>
1106 <td>
1107 <b></b>
1108  
1109 </td>
1110 </tr>
1111 <tr>
1112 <td>b3</td>
1113 <td>U8</td>
1114 <td>255 </td>
1115 <td>
1116
1117  
1118 </td>
1119 <td>
1120 <b></b>
1121  
1122 </td>
1123 </tr>
1124 <tr>
1125 <td>group</td>
1126 <td>U8</td>
1127 <td>1 </td>
1128 <td>
1129
1130  
1131 </td>
1132 <td>
1133 <b></b>
1134  
1135 </td>
1136 </tr>
1137 <tr>
1138 <td>name</td>
1139 <td>STRING</td>
1140 <td> </td>
1141 <td>
1142
1143  
1144 </td>
1145 <td>
1146 <b></b>
1147  
1148 </td>
1149 </tr>
1150 <tr>
1151 <td>description</td>
1152 <td>STRING</td>
1153 <td> </td>
1154 <td>
1155
1156  
1157 </td>
1158 <td>
1159 <b></b>
1160  
1161 </td>
1162 </tr>
1163 <tr>
1164 <td>flags</td>
1165 <td>U8</td>
1166 <td> </td>
1167 <td>
1168 0x10 .. private room etc.. see code
1169
1170  
1171 </td>
1172 <td>
1173 <b></b>
1174  
1175 </td>
1176 </tr>
1177 </table>
1178
1179 <h4>
1180 <a name="C0413"></a>ORIGIN: CLIENT;
1181 MESSAGE: req_game_record</h4>
1182 NUMERIC TYPE (hex): 0413<p>
1183 <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>
1184 </p>
1185 <table border="1" width="100%">
1186 <tr>
1187 <th width="10%">NAME</th>
1188 <th width="10%">TYPE</th>
1189 <th width="15%">DEFAULT</th>
1190 <th>DESCRIPTION</th>
1191 <th width="15%">DEC-GUARD</th>
1192 </tr>
1193 <tr>
1194 <td>name</td>
1195 <td>username</td>
1196 <td> </td>
1197 <td>
1198
1199  
1200 </td>
1201 <td>
1202 <b></b>
1203  
1204 </td>
1205 </tr>
1206 <tr>
1207 <td>timestamp</td>
1208 <td>timestamp</td>
1209 <td> </td>
1210 <td>
1211 If zero, start at the newest games, else only send games
1212 before the given timestap.
1213
1214  
1215 </td>
1216 <td>
1217 <b></b>
1218  
1219 </td>
1220 </tr>
1221 </table>
1222
1223 <h4>
1224 <a name="C4300"></a>ORIGIN: CLIENT;
1225 MESSAGE: join_room</h4>
1226 NUMERIC TYPE (hex): 4300<p>
1227 <p>Joins the given room. <a href="#S4300">join_room(4300)</a> messages for yourself
1228 and all users in that room, as well as the initial gamelist, are
1229 send if the room exists. If not, timeout...</p>
1230 </p>
1231 <table border="1" width="100%">
1232 <tr>
1233 <th width="10%">NAME</th>
1234 <th width="10%">TYPE</th>
1235 <th width="15%">DEFAULT</th>
1236 <th>DESCRIPTION</th>
1237 <th width="15%">DEC-GUARD</th>
1238 </tr>
1239 <tr>
1240 <td>channel</td>
1241 <td>U16</td>
1242 <td> </td>
1243 <td>
1244
1245  
1246 </td>
1247 <td>
1248 <b></b>
1249  
1250 </td>
1251 </tr>
1252 <tr>
1253 <td>user</td>
1254 <td>user</td>
1255 <td> </td>
1256 <td>
1257
1258  
1259 </td>
1260 <td>
1261 <b></b>
1262  
1263 </td>
1264 </tr>
1265 </table>
1266
1267 <h4>
1268 <a name="C4301"></a>ORIGIN: CLIENT;
1269 MESSAGE: msg_room</h4>
1270 NUMERIC TYPE (hex): 4301<p>
1271 Send a message to the room.
1272 </p>
1273 <table border="1" width="100%">
1274 <tr>
1275 <th width="10%">NAME</th>
1276 <th width="10%">TYPE</th>
1277 <th width="15%">DEFAULT</th>
1278 <th>DESCRIPTION</th>
1279 <th width="15%">DEC-GUARD</th>
1280 </tr>
1281 <tr>
1282 <td>channel</td>
1283 <td>U16</td>
1284 <td> </td>
1285 <td>
1286
1287  
1288 </td>
1289 <td>
1290 <b></b>
1291  
1292 </td>
1293 </tr>
1294 <tr>
1295 <td>name</td>
1296 <td>username</td>
1297 <td> </td>
1298 <td>
1299 Must be the login-name of the user.
1300
1301  
1302 </td>
1303 <td>
1304 <b></b>
1305  
1306 </td>
1307 </tr>
1308 <tr>
1309 <td>message</td>
1310 <td>STRING</td>
1311 <td> </td>
1312 <td>
1313
1314  
1315 </td>
1316 <td>
1317 <b></b>
1318  
1319 </td>
1320 </tr>
1321 </table>
1322
1323 <h4>
1324 <a name="C4302"></a>ORIGIN: CLIENT;
1325 MESSAGE: part_room</h4>
1326 NUMERIC TYPE (hex): 4302<p>
1327 Remove yourself (or maybe others as admin) from a room.
1328 </p>
1329 <table border="1" width="100%">
1330 <tr>
1331 <th width="10%">NAME</th>
1332 <th width="10%">TYPE</th>
1333 <th width="15%">DEFAULT</th>
1334 <th>DESCRIPTION</th>
1335 <th width="15%">DEC-GUARD</th>
1336 </tr>
1337 <tr>
1338 <td>channel</td>
1339 <td>U16</td>
1340 <td> </td>
1341 <td>
1342
1343  
1344 </td>
1345 <td>
1346 <b></b>
1347  
1348 </td>
1349 </tr>
1350 <tr>
1351 <td>name</td>
1352 <td>username</td>
1353 <td> </td>
1354 <td>
1355
1356  
1357 </td>
1358 <td>
1359 <b></b>
1360  
1361 </td>
1362 </tr>
1363 </table>
1364
1365 <h4>
1366 <a name="C4305"></a>ORIGIN: CLIENT;
1367 MESSAGE: new_game</h4>
1368 NUMERIC TYPE (hex): 4305<p>
1369 Unclear. Start a new game.
1370 </p>
1371 <table border="1" width="100%">
1372 <tr>
1373 <th width="10%">NAME</th>
1374 <th width="10%">TYPE</th>
1375 <th width="15%">DEFAULT</th>
1376 <th>DESCRIPTION</th>
1377 <th width="15%">DEC-GUARD</th>
1378 </tr>
1379 <tr>
1380 <td>channel</td>
1381 <td>U16</td>
1382 <td> </td>
1383 <td>
1384
1385  
1386 </td>
1387 <td>
1388 <b></b>
1389  
1390 </td>
1391 </tr>
1392 <tr>
1393 <td>id</td>
1394 <td>U16</td>
1395 <td> </td>
1396 <td>
1397
1398  
1399 </td>
1400 <td>
1401 <b></b>
1402  
1403 </td>
1404 </tr>
1405 <tr>
1406 <td>gametype</td>
1407 <td>U32</td>
1408 <td> </td>
1409 <td>
1410
1411  
1412 </td>
1413 <td>
1414 <b></b>
1415  
1416 </td>
1417 </tr>
1418 <tr>
1419 <td>rules</td>
1420 <td>rules</td>
1421 <td> </td>
1422 <td>
1423
1424  
1425 </td>
1426 <td>
1427 <b></b>
1428  
1429 </td>
1430 </tr>
1431 <tr>
1432 <td>notes</td>
1433 <td>STRING</td>
1434 <td> </td>
1435 <td>
1436
1437  
1438 </td>
1439 <td>
1440 <b></b>
1441  
1442 </td>
1443 </tr>
1444 </table>
1445
1446 <h4>
1447 <a name="C430b"></a>ORIGIN: CLIENT;
1448 MESSAGE: req_games</h4>
1449 NUMERIC TYPE (hex): 430b<p>
1450 Request to update room game list (send this once per minute to get
1451 updated). Results in upd_games messages.
1452 </p>
1453 <table border="1" width="100%">
1454 <tr>
1455 <th width="10%">NAME</th>
1456 <th width="10%">TYPE</th>
1457 <th width="15%">DEFAULT</th>
1458 <th>DESCRIPTION</th>
1459 <th width="15%">DEC-GUARD</th>
1460 </tr>
1461 <tr>
1462 <td>channel</td>
1463 <td>U16</td>
1464 <td> </td>
1465 <td>
1466
1467  
1468 </td>
1469 <td>
1470 <b></b>
1471  
1472 </td>
1473 </tr>
1474 </table>
1475
1476 <h4>
1477 <a name="C4319"></a>ORIGIN: CLIENT;
1478 MESSAGE: req_desc</h4>
1479 NUMERIC TYPE (hex): 4319<p>
1480 Request room description.
1481 </p>
1482 <table border="1" width="100%">
1483 <tr>
1484 <th width="10%">NAME</th>
1485 <th width="10%">TYPE</th>
1486 <th width="15%">DEFAULT</th>
1487 <th>DESCRIPTION</th>
1488 <th width="15%">DEC-GUARD</th>
1489 </tr>
1490 <tr>
1491 <td>channel</td>
1492 <td>U16</td>
1493 <td> </td>
1494 <td>
1495
1496  
1497 </td>
1498 <td>
1499 <b></b>
1500  
1501 </td>
1502 </tr>
1503 </table>
1504
1505 <h4>
1506 <a name="C4400"></a>ORIGIN: CLIENT;
1507 MESSAGE: send_challenge</h4>
1508 NUMERIC TYPE (hex): 4400<p>
1509 Unclear.
1510 </p>
1511 <table border="1" width="100%">
1512 <tr>
1513 <th width="10%">NAME</th>
1514 <th width="10%">TYPE</th>
1515 <th width="15%">DEFAULT</th>
1516 <th>DESCRIPTION</th>
1517 <th width="15%">DEC-GUARD</th>
1518 </tr>
1519 <tr>
1520 <td>channel</td>
1521 <td>U16</td>
1522 <td> </td>
1523 <td>
1524
1525  
1526 </td>
1527 <td>
1528 <b></b>
1529  
1530 </td>
1531 </tr>
1532 <tr>
1533 <td>black</td>
1534 <td>username</td>
1535 <td> </td>
1536 <td>
1537
1538  
1539 </td>
1540 <td>
1541 <b></b>
1542  
1543 </td>
1544 </tr>
1545 <tr>
1546 <td>white</td>
1547 <td>username</td>
1548 <td> </td>
1549 <td>
1550 More following... TREE or challenge.
1551
1552  
1553 </td>
1554 <td>
1555 <b></b>
1556  
1557 </td>
1558 </tr>
1559 </table>
1560
1561 <h4>
1562 <a name="C4403"></a>ORIGIN: CLIENT;
1563 MESSAGE: join_game</h4>
1564 NUMERIC TYPE (hex): 4403<p>
1565 Join a game. See join_room.
1566 </p>
1567 <table border="1" width="100%">
1568 <tr>
1569 <th width="10%">NAME</th>
1570 <th width="10%">TYPE</th>
1571 <th width="15%">DEFAULT</th>
1572 <th>DESCRIPTION</th>
1573 <th width="15%">DEC-GUARD</th>
1574 </tr>
1575 <tr>
1576 <td>channel</td>
1577 <td>U16</td>
1578 <td> </td>
1579 <td>
1580
1581  
1582 </td>
1583 <td>
1584 <b></b>
1585  
1586 </td>
1587 </tr>
1588 <tr>
1589 <td>user</td>
1590 <td>user</td>
1591 <td> </td>
1592 <td>
1593
1594  
1595 </td>
1596 <td>
1597 <b></b>
1598  
1599 </td>
1600 </tr>
1601 </table>
1602
1603 <h4>
1604 <a name="C4404"></a>ORIGIN: CLIENT;
1605 MESSAGE: part_game</h4>
1606 NUMERIC TYPE (hex): 4404<p>
1607 Leave (or kick as admin?) a certain user from a game.
1608 </p>
1609 <table border="1" width="100%">
1610 <tr>
1611 <th width="10%">NAME</th>
1612 <th width="10%">TYPE</th>
1613 <th width="15%">DEFAULT</th>
1614 <th>DESCRIPTION</th>
1615 <th width="15%">DEC-GUARD</th>
1616 </tr>
1617 <tr>
1618 <td>channel</td>
1619 <td>U16</td>
1620 <td> </td>
1621 <td>
1622
1623  
1624 </td>
1625 <td>
1626 <b></b>
1627  
1628 </td>
1629 </tr>
1630 <tr>
1631 <td>name</td>
1632 <td>username</td>
1633 <td> </td>
1634 <td>
1635
1636  
1637 </td>
1638 <td>
1639 <b></b>
1640  
1641 </td>
1642 </tr>
1643 </table>
1644
1645 <h4>
1646 <a name="C4406"></a>ORIGIN: CLIENT;
1647 MESSAGE: upd_tree</h4>
1648 NUMERIC TYPE (hex): 4406<p>
1649 Upload a partial game tree to the server. This is used to send moves
1650 and even in-game comments to the server. For the comments, the
1651 server prepends the username and rank.
1652
1653 </p>
1654 <table border="1" width="100%">
1655 <tr>
1656 <th width="10%">NAME</th>
1657 <th width="10%">TYPE</th>
1658 <th width="15%">DEFAULT</th>
1659 <th>DESCRIPTION</th>
1660 <th width="15%">DEC-GUARD</th>
1661 </tr>
1662 <tr>
1663 <td>channel</td>
1664 <td>U16</td>
1665 <td> </td>
1666 <td>
1667
1668  
1669 </td>
1670 <td>
1671 <b></b>
1672  
1673 </td>
1674 </tr>
1675 <tr>
1676 <td>tree</td>
1677 <td>TREE</td>
1678 <td> </td>
1679 <td>
1680
1681  
1682 </td>
1683 <td>
1684 <b></b>
1685  
1686 </td>
1687 </tr>
1688 </table>
1689
1690 <h4>
1691 <a name="C4408"></a>ORIGIN: CLIENT;
1692 MESSAGE: get_tree</h4>
1693 NUMERIC TYPE (hex): 4408<p>
1694 Request the game tree starting at a given node. This is used
1695 when the server only sends a partial tree (with end code "more").
1696 </p>
1697 <table border="1" width="100%">
1698 <tr>
1699 <th width="10%">NAME</th>
1700 <th width="10%">TYPE</th>
1701 <th width="15%">DEFAULT</th>
1702 <th>DESCRIPTION</th>
1703 <th width="15%">DEC-GUARD</th>
1704 </tr>
1705 <tr>
1706 <td>channel</td>
1707 <td>U16</td>
1708 <td> </td>
1709 <td>
1710
1711  
1712 </td>
1713 <td>
1714 <b></b>
1715  
1716 </td>
1717 </tr>
1718 <tr>
1719 <td>node</td>
1720 <td>U32</td>
1721 <td> </td>
1722 <td>
1723
1724  
1725 </td>
1726 <td>
1727 <b></b>
1728  
1729 </td>
1730 </tr>
1731 </table>
1732
1733 <h4>
1734 <a name="C440c"></a>ORIGIN: CLIENT;
1735 MESSAGE: claim_win</h4>
1736 NUMERIC TYPE (hex): 440c<p>
1737 Unclear.
1738 </p>
1739 <table border="1" width="100%">
1740 <tr>
1741 <th width="10%">NAME</th>
1742 <th width="10%">TYPE</th>
1743 <th width="15%">DEFAULT</th>
1744 <th>DESCRIPTION</th>
1745 <th width="15%">DEC-GUARD</th>
1746 </tr>
1747 <tr>
1748 <td>channel</td>
1749 <td>U16</td>
1750 <td> </td>
1751 <td>
1752
1753  
1754 </td>
1755 <td>
1756 <b></b>
1757  
1758 </td>
1759 </tr>
1760 <tr>
1761 <td>_byte</td>
1762 <td>U8 </td>
1763 <td> </td>
1764 <td>
1765 Player colour maybe? Unclear.
1766
1767  
1768 </td>
1769 <td>
1770 <b></b>
1771  
1772 </td>
1773 </tr>
1774 </table>
1775
1776 <h4>
1777 <a name="C440d"></a>ORIGIN: CLIENT;
1778 MESSAGE: add_time</h4>
1779 NUMERIC TYPE (hex): 440d<p>
1780 Not checked.
1781
1782 </p>
1783 <table border="1" width="100%">
1784 <tr>
1785 <th width="10%">NAME</th>
1786 <th width="10%">TYPE</th>
1787 <th width="15%">DEFAULT</th>
1788 <th>DESCRIPTION</th>
1789 <th width="15%">DEC-GUARD</th>
1790 </tr>
1791 <tr>
1792 <td>channel</td>
1793 <td>U16</td>
1794 <td> </td>
1795 <td>
1796
1797  
1798 </td>
1799 <td>
1800 <b></b>
1801  
1802 </td>
1803 </tr>
1804 <tr>
1805 <td>time</td>
1806 <td>U32</td>
1807 <td> </td>
1808 <td>
1809
1810  
1811 </td>
1812 <td>
1813 <b></b>
1814  
1815 </td>
1816 </tr>
1817 <tr>
1818 <td>player</td>
1819 <td>U8</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="C440f"></a>ORIGIN: CLIENT;
1834 MESSAGE: grant_undo</h4>
1835 NUMERIC TYPE (hex): 440f<p>
1836 Can be send after a req_undo message was received to grant the undo.
1837 </p>
1838 <table border="1" width="100%">
1839 <tr>
1840 <th width="10%">NAME</th>
1841 <th width="10%">TYPE</th>
1842 <th width="15%">DEFAULT</th>
1843 <th>DESCRIPTION</th>
1844 <th width="15%">DEC-GUARD</th>
1845 </tr>
1846 <tr>
1847 <td>channel</td>
1848 <td>U16</td>
1849 <td> </td>
1850 <td>
1851
1852  
1853 </td>
1854 <td>
1855 <b></b>
1856  
1857 </td>
1858 </tr>
1859 </table>
1860
1861 <h4>
1862 <a name="C4410"></a>ORIGIN: CLIENT;
1863 MESSAGE: resign_game</h4>
1864 NUMERIC TYPE (hex): 4410<p>
1865 Resign the game.
1866 </p>
1867 <table border="1" width="100%">
1868 <tr>
1869 <th width="10%">NAME</th>
1870 <th width="10%">TYPE</th>
1871 <th width="15%">DEFAULT</th>
1872 <th>DESCRIPTION</th>
1873 <th width="15%">DEC-GUARD</th>
1874 </tr>
1875 <tr>
1876 <td>channel</td>
1877 <td>U16</td>
1878 <td> </td>
1879 <td>
1880
1881  
1882 </td>
1883 <td>
1884 <b></b>
1885  
1886 </td>
1887 </tr>
1888 <tr>
1889 <td>player</td>
1890 <td>U8</td>
1891 <td> </td>
1892 <td>
1893
1894  
1895 </td>
1896 <td>
1897 <b></b>
1898  
1899 </td>
1900 </tr>
1901 </table>
1902
1903 <h4>
1904 <a name="C441a"></a>ORIGIN: CLIENT;
1905 MESSAGE: set_teacher</h4>
1906 NUMERIC TYPE (hex): 441a<p>
1907 Change the teacher to somebody else (or possibly yourself == take it).
1908 </p>
1909 <table border="1" width="100%">
1910 <tr>
1911 <th width="10%">NAME</th>
1912 <th width="10%">TYPE</th>
1913 <th width="15%">DEFAULT</th>
1914 <th>DESCRIPTION</th>
1915 <th width="15%">DEC-GUARD</th>
1916 </tr>
1917 <tr>
1918 <td>channel</td>
1919 <td>U16</td>
1920 <td> </td>
1921 <td>
1922
1923  
1924 </td>
1925 <td>
1926 <b></b>
1927  
1928 </td>
1929 </tr>
1930 <tr>
1931 <td>name</td>
1932 <td>username</td>
1933 <td> </td>
1934 <td>
1935
1936  
1937 </td>
1938 <td>
1939 <b></b>
1940  
1941 </td>
1942 </tr>
1943 </table>
1944
1945 <h4>
1946 <a name="C4422"></a>ORIGIN: CLIENT;
1947 MESSAGE: add_user</h4>
1948 NUMERIC TYPE (hex): 4422<p>
1949 Unclear. Maybe allow users to talk? No idea, really.
1950
1951 </p>
1952 <table border="1" width="100%">
1953 <tr>
1954 <th width="10%">NAME</th>
1955 <th width="10%">TYPE</th>
1956 <th width="15%">DEFAULT</th>
1957 <th>DESCRIPTION</th>
1958 <th width="15%">DEC-GUARD</th>
1959 </tr>
1960 <tr>
1961 <td>channel</td>
1962 <td>U16</td>
1963 <td> </td>
1964 <td>
1965
1966  
1967 </td>
1968 <td>
1969 <b></b>
1970  
1971 </td>
1972 </tr>
1973 <tr>
1974 <td>othername</td>
1975 <td>username</td>
1976 <td> </td>
1977 <td>
1978
1979  
1980 </td>
1981 <td>
1982 <b></b>
1983  
1984 </td>
1985 </tr>
1986 <tr>
1987 <td>name</td>
1988 <td>username</td>
1989 <td> </td>
1990 <td>; # gives user access to the game (to what? ;)
1991
1992  
1993 </td>
1994 <td>
1995 <b></b>
1996  
1997 </td>
1998 </tr>
1999 </table>
2000
2001 <h4>
2002 <a name="C4423"></a>ORIGIN: CLIENT;
2003 MESSAGE: set_privacy</h4>
2004 NUMERIC TYPE (hex): 4423<p>
2005 Probably sets the "quiet" flag. Not checked.
2006 </p>
2007 <table border="1" width="100%">
2008 <tr>
2009 <th width="10%">NAME</th>
2010 <th width="10%">TYPE</th>
2011 <th width="15%">DEFAULT</th>
2012 <th>DESCRIPTION</th>
2013 <th width="15%">DEC-GUARD</th>
2014 </tr>
2015 <tr>
2016 <td>channel</td>
2017 <td>U16</td>
2018 <td> </td>
2019 <td>
2020
2021  
2022 </td>
2023 <td>
2024 <b></b>
2025  
2026 </td>
2027 </tr>
2028 <tr>
2029 <td>private</td>
2030 <td>U8</td>
2031 <td> </td>
2032 <td>
2033
2034  
2035 </td>
2036 <td>
2037 <b></b>
2038  
2039 </td>
2040 </tr>
2041 </table>
2042
2043 <h4>
2044 <a name="C4429"></a>ORIGIN: CLIENT;
2045 MESSAGE: reject_challenge</h4>
2046 NUMERIC TYPE (hex): 4429<p>
2047 Reject a challenge from a given user. Not checked.
2048
2049 </p>
2050 <table border="1" width="100%">
2051 <tr>
2052 <th width="10%">NAME</th>
2053 <th width="10%">TYPE</th>
2054 <th width="15%">DEFAULT</th>
2055 <th>DESCRIPTION</th>
2056 <th width="15%">DEC-GUARD</th>
2057 </tr>
2058 <tr>
2059 <td>channel</td>
2060 <td>U16</td>
2061 <td> </td>
2062 <td>
2063
2064  
2065 </td>
2066 <td>
2067 <b></b>
2068  
2069 </td>
2070 </tr>
2071 <tr>
2072 <td>name</td>
2073 <td>username</td>
2074 <td> </td>
2075 <td>
2076
2077  
2078 </td>
2079 <td>
2080 <b></b>
2081  
2082 </td>
2083 </tr>
2084 </table>
2085
2086 <h4>
2087 <a name="C4433"></a>ORIGIN: CLIENT;
2088 MESSAGE: req_result</h4>
2089 NUMERIC TYPE (hex): 4433<p>
2090 I forgot.
2091
2092 </p>
2093 <table border="1" width="100%">
2094 <tr>
2095 <th width="10%">NAME</th>
2096 <th width="10%">TYPE</th>
2097 <th width="15%">DEFAULT</th>
2098 <th>DESCRIPTION</th>
2099 <th width="15%">DEC-GUARD</th>
2100 </tr>
2101 <tr>
2102 <td>channel</td>
2103 <td>U16</td>
2104 <td> </td>
2105 <td>
2106
2107  
2108 </td>
2109 <td>
2110 <b></b>
2111  
2112 </td>
2113 </tr>
2114 </table>
2115
2116 <h2>Structs mainly used in messages send by the server</h2>
2117
2118 <h4>STRUCTURE challenge_defaults</h4>
2119 <p>
2120 Send soon after log-in to set the defaults for game challenges.
2121 </p>
2122 <table border="1" width="100%">
2123 <tr>
2124 <th width="10%">NAME</th>
2125 <th width="10%">TYPE</th>
2126 <th width="15%">DEFAULT</th>
2127 <th>DESCRIPTION</th>
2128 <th width="15%">DEC-GUARD</th>
2129 </tr>
2130 <tr>
2131 <td>gametype</td>
2132 <td>U32</td>
2133 <td> </td>
2134 <td>
2135
2136  
2137 </td>
2138 <td>
2139 <b></b>
2140  
2141 </td>
2142 </tr>
2143 <tr>
2144 <td>size</td>
2145 <td>U32</td>
2146 <td> </td>
2147 <td>
2148
2149  
2150 </td>
2151 <td>
2152 <b></b>
2153  
2154 </td>
2155 </tr>
2156 <tr>
2157 <td>timesys</td>
2158 <td>U32</td>
2159 <td> </td>
2160 <td>
2161
2162  
2163 </td>
2164 <td>
2165 <b></b>
2166  
2167 </td>
2168 </tr>
2169 <tr>
2170 <td>time</td>
2171 <td>U32</td>
2172 <td> </td>
2173 <td>
2174
2175  
2176 </td>
2177 <td>
2178 <b></b>
2179  
2180 </td>
2181 </tr>
2182 <tr>
2183 <td>byo_time</td>
2184 <td>U32</td>
2185 <td> </td>
2186 <td>
2187
2188  
2189 </td>
2190 <td>
2191 <b></b>
2192  
2193 </td>
2194 </tr>
2195 <tr>
2196 <td>byo_periods</td>
2197 <td>U32</td>
2198 <td> </td>
2199 <td>
2200
2201  
2202 </td>
2203 <td>
2204 <b></b>
2205  
2206 </td>
2207 </tr>
2208 <tr>
2209 <td>can_time</td>
2210 <td>U32</td>
2211 <td> </td>
2212 <td>
2213
2214  
2215 </td>
2216 <td>
2217 <b></b>
2218  
2219 </td>
2220 </tr>
2221 <tr>
2222 <td>can_stones</td>
2223 <td>U32</td>
2224 <td> </td>
2225 <td>
2226
2227  
2228 </td>
2229 <td>
2230 <b></b>
2231  
2232 </td>
2233 </tr>
2234 </table>
2235
2236 <h4>STRUCTURE challenge</h4>
2237 CLASS: KGS::Challenge<br />
2238 <p>
2239 A challenge.
2240
2241 </p>
2242 <table border="1" width="100%">
2243 <tr>
2244 <th width="10%">NAME</th>
2245 <th width="10%">TYPE</th>
2246 <th width="15%">DEFAULT</th>
2247 <th>DESCRIPTION</th>
2248 <th width="15%">DEC-GUARD</th>
2249 </tr>
2250 <tr>
2251 <td>user1</td>
2252 <td>user</td>
2253 <td> </td>
2254 <td>
2255
2256  
2257 </td>
2258 <td>
2259 <b></b>
2260  
2261 </td>
2262 </tr>
2263 <tr>
2264 <td>user2</td>
2265 <td>user</td>
2266 <td> </td>
2267 <td>
2268
2269  
2270 </td>
2271 <td>
2272 <b></b>
2273  
2274 </td>
2275 </tr>
2276 <tr>
2277 <td>gametype</td>
2278 <td>U32</td>
2279 <td> </td>
2280 <td>
2281
2282  
2283 </td>
2284 <td>
2285 <b></b>
2286  
2287 </td>
2288 </tr>
2289 <tr>
2290 <td>rules</td>
2291 <td>rules</td>
2292 <td> </td>
2293 <td>
2294 Maybe the rules" are in TREE format. I forgot.
2295
2296  
2297 </td>
2298 <td>
2299 <b></b>
2300  
2301 </td>
2302 </tr>
2303 </table>
2304
2305 <h4>STRUCTURE game</h4>
2306 CLASS: KGS::Game<br />
2307 <p>
2308 Basic information about a game. Used in rooms for the gamelist and
2309 in games to detect when a game is saved, changed type (e.g. R =&gt; D)
2310 etc.
2311
2312 </p>
2313 <table border="1" width="100%">
2314 <tr>
2315 <th width="10%">NAME</th>
2316 <th width="10%">TYPE</th>
2317 <th width="15%">DEFAULT</th>
2318 <th>DESCRIPTION</th>
2319 <th width="15%">DEC-GUARD</th>
2320 </tr>
2321 <tr>
2322 <td>channel</td>
2323 <td>U16</td>
2324 <td> </td>
2325 <td>
2326
2327  
2328 </td>
2329 <td>
2330 <b></b>
2331  
2332 </td>
2333 </tr>
2334 <tr>
2335 <td>type</td>
2336 <td>U8</td>
2337 <td> </td>
2338 <td>
2339
2340  
2341 </td>
2342 <td>
2343 <b></b>
2344  
2345 </td>
2346 </tr>
2347 <tr>
2348 <td>user1</td>
2349 <td>user</td>
2350 <td> </td>
2351 <td>
2352 White
2353
2354  
2355 </td>
2356 <td>
2357 <b></b>
2358  
2359 </td>
2360 </tr>
2361 <tr>
2362 <td>user2</td>
2363 <td>user</td>
2364 <td> </td>
2365 <td>
2366 Black
2367
2368  
2369 </td>
2370 <td>
2371 <b></b>
2372  
2373 </td>
2374 </tr>
2375 <tr>
2376 <td>user3</td>
2377 <td>user</td>
2378 <td> </td>
2379 <td>
2380 Owner
2381
2382  
2383 </td>
2384 <td>
2385 <b></b>
2386  
2387 </td>
2388 </tr>
2389 <tr>
2390 <td>size</td>
2391 <td>U8</td>
2392 <td> </td>
2393 <td>
2394
2395  
2396 </td>
2397 <td>
2398 <b></b>
2399  
2400 </td>
2401 </tr>
2402 <tr>
2403 <td>handicap</td>
2404 <td>I8</td>
2405 <td> </td>
2406 <td>
2407 &lt; 0 not fully setup
2408
2409  
2410 </td>
2411 <td>
2412 <b></b>
2413  
2414 </td>
2415 </tr>
2416 <tr>
2417 <td>komi</td>
2418 <td>komi16</td>
2419 <td> </td>
2420 <td>
2421
2422  
2423 </td>
2424 <td>
2425 <b></b>
2426  
2427 </td>
2428 </tr>
2429 <tr>
2430 <td>moves</td>
2431 <td>I16</td>
2432 <td> </td>
2433 <td>
2434 This field reflects either the movenum or the score, sorry, not even guards help, as
2435 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
2436 score (NOT score16!) (arg²).
2437
2438  
2439 </td>
2440 <td>
2441 <b></b>
2442  
2443 </td>
2444 </tr>
2445 <tr>
2446 <td>flags</td>
2447 <td>U16</td>
2448 <td> </td>
2449 <td>
2450
2451  
2452 </td>
2453 <td>
2454 <b></b>
2455  
2456 </td>
2457 </tr>
2458 <tr>
2459 <td>observers</td>
2460 <td>U32</td>
2461 <td> </td>
2462 <td>
2463
2464  
2465 </td>
2466 <td>
2467 <b></b>
2468  
2469 </td>
2470 </tr>
2471 <tr>
2472 <td>saved</td>
2473 <td>flag</td>
2474 <td> </td>
2475 <td>
2476
2477  
2478 </td>
2479 <td>
2480 <b></b>
2481  
2482 </td>
2483 </tr>
2484 <tr>
2485 <td>notes</td>
2486 <td>STRING</td>
2487 <td> </td>
2488 <td>
2489
2490  
2491 </td>
2492 <td>
2493 <b>handicap</b> &lt; 0
2494  
2495 </td>
2496 </tr>
2497 </table>
2498
2499 <h4>STRUCTURE room_obs</h4>
2500 <p>
2501 Obsolete.
2502
2503 </p>
2504 <table border="1" width="100%">
2505 <tr>
2506 <th width="10%">NAME</th>
2507 <th width="10%">TYPE</th>
2508 <th width="15%">DEFAULT</th>
2509 <th>DESCRIPTION</th>
2510 <th width="15%">DEC-GUARD</th>
2511 </tr>
2512 <tr>
2513 <td>name</td>
2514 <td>roomname</td>
2515 <td> </td>
2516 <td>
2517
2518  
2519 </td>
2520 <td>
2521 <b></b>
2522  
2523 </td>
2524 </tr>
2525 <tr>
2526 <td>channel</td>
2527 <td>U16</td>
2528 <td> </td>
2529 <td>
2530
2531  
2532 </td>
2533 <td>
2534 <b></b>
2535  
2536 </td>
2537 </tr>
2538 <tr>
2539 <td>flags</td>
2540 <td>U32</td>
2541 <td> </td>
2542 <td>
2543
2544  
2545 </td>
2546 <td>
2547 <b></b>
2548  
2549 </td>
2550 </tr>
2551 <tr>
2552 <td>users</td>
2553 <td>U32</td>
2554 <td> </td>
2555 <td>
2556
2557  
2558 </td>
2559 <td>
2560 <b></b>
2561  
2562 </td>
2563 </tr>
2564 </table>
2565
2566 <h4>STRUCTURE room</h4>
2567 CLASS: KGS::Room<br />
2568 <p>
2569 </p>
2570 <table border="1" width="100%">
2571 <tr>
2572 <th width="10%">NAME</th>
2573 <th width="10%">TYPE</th>
2574 <th width="15%">DEFAULT</th>
2575 <th>DESCRIPTION</th>
2576 <th width="15%">DEC-GUARD</th>
2577 </tr>
2578 <tr>
2579 <td>channel</td>
2580 <td>U16</td>
2581 <td> </td>
2582 <td>
2583
2584  
2585 </td>
2586 <td>
2587 <b></b>
2588  
2589 </td>
2590 </tr>
2591 <tr>
2592 <td>flags</td>
2593 <td>U8</td>
2594 <td> </td>
2595 <td>
2596
2597  
2598 </td>
2599 <td>
2600 <b></b>
2601  
2602 </td>
2603 </tr>
2604 <tr>
2605 <td>group</td>
2606 <td>U8</td>
2607 <td> </td>
2608 <td>
2609
2610  
2611 </td>
2612 <td>
2613 <b></b>
2614  
2615 </td>
2616 </tr>
2617 <tr>
2618 <td>users</td>
2619 <td>U16</td>
2620 <td> </td>
2621 <td>
2622
2623  
2624 </td>
2625 <td>
2626 <b></b>
2627  
2628 </td>
2629 </tr>
2630 <tr>
2631 <td>games</td>
2632 <td>U16</td>
2633 <td> </td>
2634 <td>
2635
2636  
2637 </td>
2638 <td>
2639 <b></b>
2640  
2641 </td>
2642 </tr>
2643 <tr>
2644 <td>name</td>
2645 <td>STRING</td>
2646 <td> </td>
2647 <td>
2648
2649  
2650 </td>
2651 <td>
2652 <b></b>
2653  
2654 </td>
2655 </tr>
2656 </table>
2657
2658 <h4>STRUCTURE scorevalues</h4>
2659 CLASS: KGS::Score<br />
2660 <p>
2661 </p>
2662 <table border="1" width="100%">
2663 <tr>
2664 <th width="10%">NAME</th>
2665 <th width="10%">TYPE</th>
2666 <th width="15%">DEFAULT</th>
2667 <th>DESCRIPTION</th>
2668 <th width="15%">DEC-GUARD</th>
2669 </tr>
2670 <tr>
2671 <td>score</td>
2672 <td>score32</td>
2673 <td> </td>
2674 <td>
2675
2676  
2677 </td>
2678 <td>
2679 <b></b>
2680  
2681 </td>
2682 </tr>
2683 <tr>
2684 <td>territory</td>
2685 <td>U32</td>
2686 <td> </td>
2687 <td>
2688
2689  
2690 </td>
2691 <td>
2692 <b></b>
2693  
2694 </td>
2695 </tr>
2696 <tr>
2697 <td>captures</td>
2698 <td>U32</td>
2699 <td> </td>
2700 <td>
2701
2702  
2703 </td>
2704 <td>
2705 <b></b>
2706  
2707 </td>
2708 </tr>
2709 <tr>
2710 <td>i3</td>
2711 <td>U32</td>
2712 <td> </td>
2713 <td>
2714
2715  
2716 </td>
2717 <td>
2718 <b></b>
2719  
2720 </td>
2721 </tr>
2722 <tr>
2723 <td>f2</td>
2724 <td>U32</td>
2725 <td> </td>
2726 <td>
2727
2728  
2729 </td>
2730 <td>
2731 <b></b>
2732  
2733 </td>
2734 </tr>
2735 <tr>
2736 <td>komi</td>
2737 <td>komi324</td>
2738 <td> </td>
2739 <td>
2740
2741  
2742 </td>
2743 <td>
2744 <b></b>
2745  
2746 </td>
2747 </tr>
2748 <tr>
2749 <td>i4</td>
2750 <td>U32</td>
2751 <td> </td>
2752 <td>
2753 Apparently the i3, f2, i4 are zero.
2754
2755  
2756 </td>
2757 <td>
2758 <b></b>
2759  
2760 </td>
2761 </tr>
2762 </table>
2763
2764 <h4>STRUCTURE game_record</h4>
2765 CLASS: KGS::GameRecord<br />
2766 <p>
2767 <p>A single game record entry, as seen in <a href="#S0008">userinfo(0008)</a>.</p>
2768 </p>
2769 <table border="1" width="100%">
2770 <tr>
2771 <th width="10%">NAME</th>
2772 <th width="10%">TYPE</th>
2773 <th width="15%">DEFAULT</th>
2774 <th>DESCRIPTION</th>
2775 <th width="15%">DEC-GUARD</th>
2776 </tr>
2777 <tr>
2778 <td>timestamp</td>
2779 <td>timestamp</td>
2780 <td> </td>
2781 <td>
2782 Time this game was played.
2783
2784  
2785 </td>
2786 <td>
2787 <b></b>
2788  
2789 </td>
2790 </tr>
2791 <tr>
2792 <td>type</td>
2793 <td>U8</td>
2794 <td> </td>
2795 <td>
2796 High four bits are handicap, low four bits are gametype (encoded strangely? unclear).
2797
2798  
2799 </td>
2800 <td>
2801 <b></b>
2802  
2803 </td>
2804 </tr>
2805 <tr>
2806 <td>user1</td>
2807 <td>user</td>
2808 <td> </td>
2809 <td>
2810 White, flags contain low 8 bits of revision (bits 16-23).
2811
2812  
2813 </td>
2814 <td>
2815 <b></b>
2816  
2817 </td>
2818 </tr>
2819 <tr>
2820 <td>user2</td>
2821 <td>user</td>
2822 <td> </td>
2823 <td>
2824 Black, flags contain high 8 bits of revision (bits 16-23).
2825
2826  
2827 </td>
2828 <td>
2829 <b></b>
2830  
2831 </td>
2832 </tr>
2833 <tr>
2834 <td>user3</td>
2835 <td>user</td>
2836 <td> </td>
2837 <td>
2838
2839
2840  
2841 </td>
2842 <td>
2843 <b></b>
2844  
2845 </td>
2846 </tr>
2847 <tr>
2848 <td>komi</td>
2849 <td>komi16</td>
2850 <td> </td>
2851 <td>
2852
2853  
2854 </td>
2855 <td>
2856 <b></b>
2857  
2858 </td>
2859 </tr>
2860 <tr>
2861 <td>score</td>
2862 <td>score16</td>
2863 <td> </td>
2864 <td>
2865
2866  
2867 </td>
2868 <td>
2869 <b></b>
2870  
2871 </td>
2872 </tr>
2873 <tr>
2874 <td>status</td>
2875 <td>U8</td>
2876 <td> </td>
2877 <td>
2878
2879
2880  
2881 </td>
2882 <td>
2883 <b></b>
2884  
2885 </td>
2886 </tr>
2887 </table>
2888
2889 <h2>Server-generated messages</h2>
2890
2891 <h4>
2892 <a name="S0001"></a>ORIGIN: SERVER;
2893 MESSAGE: login</h4>
2894 NUMERIC TYPE (hex): 0001
2895 (possibly in response to
2896 <a href="#C0000">login(0000)</a>
2897 )
2898 <p>
2899 </p>
2900 <table border="1" width="100%">
2901 <tr>
2902 <th width="10%">NAME</th>
2903 <th width="10%">TYPE</th>
2904 <th width="15%">DEFAULT</th>
2905 <th>DESCRIPTION</th>
2906 <th width="15%">DEC-GUARD</th>
2907 </tr>
2908 <tr>
2909 <td>result</td>
2910 <td>CONSTANT</td>
2911 <td>"login ok" </td>
2912 <td>
2913
2914  
2915 </td>
2916 <td>
2917 <b></b>
2918  
2919 </td>
2920 </tr>
2921 <tr>
2922 <td>success</td>
2923 <td>CONSTANT</td>
2924 <td>1 </td>
2925 <td>
2926
2927  
2928 </td>
2929 <td>
2930 <b></b>
2931  
2932 </td>
2933 </tr>
2934 </table>
2935
2936 <h4>
2937 <a name="S0002"></a>ORIGIN: SERVER;
2938 MESSAGE: login</h4>
2939 NUMERIC TYPE (hex): 0002
2940 (possibly in response to
2941 <a href="#C0000">login(0000)</a>
2942 )
2943 <p>
2944 </p>
2945 <table border="1" width="100%">
2946 <tr>
2947 <th width="10%">NAME</th>
2948 <th width="10%">TYPE</th>
2949 <th width="15%">DEFAULT</th>
2950 <th>DESCRIPTION</th>
2951 <th width="15%">DEC-GUARD</th>
2952 </tr>
2953 <tr>
2954 <td>result</td>
2955 <td>CONSTANT</td>
2956 <td>"guest login ok" </td>
2957 <td>
2958
2959  
2960 </td>
2961 <td>
2962 <b></b>
2963  
2964 </td>
2965 </tr>
2966 <tr>
2967 <td>success</td>
2968 <td>CONSTANT</td>
2969 <td>1 </td>
2970 <td>
2971
2972  
2973 </td>
2974 <td>
2975 <b></b>
2976  
2977 </td>
2978 </tr>
2979 </table>
2980
2981 <h4>
2982 <a name="S0003"></a>ORIGIN: SERVER;
2983 MESSAGE: login</h4>
2984 NUMERIC TYPE (hex): 0003
2985 (possibly in response to
2986 <a href="#C0000">login(0000)</a>
2987 )
2988 <p>
2989 </p>
2990 <table border="1" width="100%">
2991 <tr>
2992 <th width="10%">NAME</th>
2993 <th width="10%">TYPE</th>
2994 <th width="15%">DEFAULT</th>
2995 <th>DESCRIPTION</th>
2996 <th width="15%">DEC-GUARD</th>
2997 </tr>
2998 <tr>
2999 <td>result</td>
3000 <td>CONSTANT</td>
3001 <td>"login error 3" </td>
3002 <td>
3003 ** maybe more following? **
3004
3005  
3006 </td>
3007 <td>
3008 <b></b>
3009  
3010 </td>
3011 </tr>
3012 </table>
3013
3014 <h4>
3015 <a name="S0004"></a>ORIGIN: SERVER;
3016 MESSAGE: login</h4>
3017 NUMERIC TYPE (hex): 0004
3018 (possibly in response to
3019 <a href="#C0000">login(0000)</a>
3020 )
3021 <p>
3022 </p>
3023 <table border="1" width="100%">
3024 <tr>
3025 <th width="10%">NAME</th>
3026 <th width="10%">TYPE</th>
3027 <th width="15%">DEFAULT</th>
3028 <th>DESCRIPTION</th>
3029 <th width="15%">DEC-GUARD</th>
3030 </tr>
3031 <tr>
3032 <td>result</td>
3033 <td>CONSTANT</td>
3034 <td>"wrong password" </td>
3035 <td>
3036 ** maybe more following? **
3037
3038  
3039 </td>
3040 <td>
3041 <b></b>
3042  
3043 </td>
3044 </tr>
3045 </table>
3046
3047 <h4>
3048 <a name="S0005"></a>ORIGIN: SERVER;
3049 MESSAGE: login</h4>
3050 NUMERIC TYPE (hex): 0005
3051 (possibly in response to
3052 <a href="#C0000">login(0000)</a>
3053 )
3054 <p>
3055 </p>
3056 <table border="1" width="100%">
3057 <tr>
3058 <th width="10%">NAME</th>
3059 <th width="10%">TYPE</th>
3060 <th width="15%">DEFAULT</th>
3061 <th>DESCRIPTION</th>
3062 <th width="15%">DEC-GUARD</th>
3063 </tr>
3064 <tr>
3065 <td>result</td>
3066 <td>CONSTANT</td>
3067 <td>"user unknown" </td>
3068 <td>
3069 ** maybe more following? **
3070
3071  
3072 </td>
3073 <td>
3074 <b></b>
3075  
3076 </td>
3077 </tr>
3078 </table>
3079
3080 <h4>
3081 <a name="S0006"></a>ORIGIN: SERVER;
3082 MESSAGE: login</h4>
3083 NUMERIC TYPE (hex): 0006
3084 (possibly in response to
3085 <a href="#C0000">login(0000)</a>
3086 )
3087 <p>
3088 </p>
3089 <table border="1" width="100%">
3090 <tr>
3091 <th width="10%">NAME</th>
3092 <th width="10%">TYPE</th>
3093 <th width="15%">DEFAULT</th>
3094 <th>DESCRIPTION</th>
3095 <th width="15%">DEC-GUARD</th>
3096 </tr>
3097 <tr>
3098 <td>result</td>
3099 <td>CONSTANT</td>
3100 <td>"user exists" </td>
3101 <td>
3102 ** maybe more following? **
3103
3104  
3105 </td>
3106 <td>
3107 <b></b>
3108  
3109 </td>
3110 </tr>
3111 </table>
3112
3113 <h4>
3114 <a name="S0008"></a>ORIGIN: SERVER;
3115 MESSAGE: userinfo</h4>
3116 NUMERIC TYPE (hex): 0008
3117 (possibly in response to
3118 <a href="#C0007">req_userinfo(0007)</a>
3119 )
3120 <p>
3121 User info.
3122 </p>
3123 <table border="1" width="100%">
3124 <tr>
3125 <th width="10%">NAME</th>
3126 <th width="10%">TYPE</th>
3127 <th width="15%">DEFAULT</th>
3128 <th>DESCRIPTION</th>
3129 <th width="15%">DEC-GUARD</th>
3130 </tr>
3131 <tr>
3132 <td>_unused0</td>
3133 <td>flag</td>
3134 <td> </td>
3135 <td>
3136
3137  
3138 </td>
3139 <td>
3140 <b></b>
3141  
3142 </td>
3143 </tr>
3144 <tr>
3145 <td>user</td>
3146 <td>user</td>
3147 <td> </td>
3148 <td>
3149
3150  
3151 </td>
3152 <td>
3153 <b></b>
3154  
3155 </td>
3156 </tr>
3157 <tr>
3158 <td>_unused1</td>
3159 <td>U64</td>
3160 <td> </td>
3161 <td>
3162
3163  
3164 </td>
3165 <td>
3166 <b></b>
3167  
3168 </td>
3169 </tr>
3170 <tr>
3171 <td>realname</td>
3172 <td>realname</td>
3173 <td> </td>
3174 <td>
3175
3176  
3177 </td>
3178 <td>
3179 <b></b>
3180  
3181 </td>
3182 </tr>
3183 <tr>
3184 <td>email</td>
3185 <td>email</td>
3186 <td> </td>
3187 <td>
3188
3189  
3190 </td>
3191 <td>
3192 <b></b>
3193  
3194 </td>
3195 </tr>
3196 <tr>
3197 <td>info</td>
3198 <td>userinfo</td>
3199 <td> </td>
3200 <td>
3201
3202  
3203 </td>
3204 <td>
3205 <b></b>
3206  
3207 </td>
3208 </tr>
3209 <tr>
3210 <td>homepage</td>
3211 <td>url</td>
3212 <td> </td>
3213 <td>
3214
3215  
3216 </td>
3217 <td>
3218 <b></b>
3219  
3220 </td>
3221 </tr>
3222 <tr>
3223 <td>regdate</td>
3224 <td>timestamp</td>
3225 <td> </td>
3226 <td>
3227 When the user registered (0 == never registered).
3228
3229  
3230 </td>
3231 <td>
3232 <b></b>
3233  
3234 </td>
3235 </tr>
3236 <tr>
3237 <td>lastlogin</td>
3238 <td>timestamp</td>
3239 <td> </td>
3240 <td>
3241 When the user logged in for the last time.
3242
3243  
3244 </td>
3245 <td>
3246 <b></b>
3247  
3248 </td>
3249 </tr>
3250 </table>
3251
3252 <h4>
3253 <a name="S0013"></a>ORIGIN: SERVER;
3254 MESSAGE: msg_chat</h4>
3255 NUMERIC TYPE (hex): 0013<p>
3256 </p>
3257 <table border="1" width="100%">
3258 <tr>
3259 <th width="10%">NAME</th>
3260 <th width="10%">TYPE</th>
3261 <th width="15%">DEFAULT</th>
3262 <th>DESCRIPTION</th>
3263 <th width="15%">DEC-GUARD</th>
3264 </tr>
3265 <tr>
3266 <td>name</td>
3267 <td>username</td>
3268 <td> </td>
3269 <td>
3270
3271  
3272 </td>
3273 <td>
3274 <b></b>
3275  
3276 </td>
3277 </tr>
3278 <tr>
3279 <td>name2</td>
3280 <td>username</td>
3281 <td> </td>
3282 <td>
3283
3284  
3285 </td>
3286 <td>
3287 <b></b>
3288  
3289 </td>
3290 </tr>
3291 <tr>
3292 <td>message</td>
3293 <td>STRING</td>
3294 <td> </td>
3295 <td>
3296
3297  
3298 </td>
3299 <td>
3300 <b></b>
3301  
3302 </td>
3303 </tr>
3304 </table>
3305
3306 <h4>
3307 <a name="S0015"></a>ORIGIN: SERVER;
3308 MESSAGE: stats</h4>
3309 NUMERIC TYPE (hex): 0015
3310 (possibly in response to
3311 <a href="#C0014">req_stats(0014)</a>
3312 )
3313 <p>
3314 </p>
3315 <table border="1" width="100%">
3316 <tr>
3317 <th width="10%">NAME</th>
3318 <th width="10%">TYPE</th>
3319 <th width="15%">DEFAULT</th>
3320 <th>DESCRIPTION</th>
3321 <th width="15%">DEC-GUARD</th>
3322 </tr>
3323 <tr>
3324 <td>ver_major</td>
3325 <td>U16</td>
3326 <td> </td>
3327 <td>
3328
3329  
3330 </td>
3331 <td>
3332 <b></b>
3333  
3334 </td>
3335 </tr>
3336 <tr>
3337 <td>ver_minor</td>
3338 <td>U16</td>
3339 <td> </td>
3340 <td>
3341
3342  
3343 </td>
3344 <td>
3345 <b></b>
3346  
3347 </td>
3348 </tr>
3349 <tr>
3350 <td>ver_micro</td>
3351 <td>U16</td>
3352 <td> </td>
3353 <td>
3354
3355  
3356 </td>
3357 <td>
3358 <b></b>
3359  
3360 </td>
3361 </tr>
3362 <tr>
3363 <td>boot_time</td>
3364 <td>timestamp</td>
3365 <td> </td>
3366 <td>
3367
3368  
3369 </td>
3370 <td>
3371 <b></b>
3372  
3373 </td>
3374 </tr>
3375 <tr>
3376 <td>users_cur</td>
3377 <td>U32</td>
3378 <td> </td>
3379 <td>
3380
3381  
3382 </td>
3383 <td>
3384 <b></b>
3385  
3386 </td>
3387 </tr>
3388 <tr>
3389 <td>users_max</td>
3390 <td>U32</td>
3391 <td> </td>
3392 <td>
3393
3394  
3395 </td>
3396 <td>
3397 <b></b>
3398  
3399 </td>
3400 </tr>
3401 <tr>
3402 <td>users_lim</td>
3403 <td>U32</td>
3404 <td> </td>
3405 <td>
3406
3407  
3408 </td>
3409 <td>
3410 <b></b>
3411  
3412 </td>
3413 </tr>
3414 <tr>
3415 <td>accts_cur</td>
3416 <td>U32</td>
3417 <td> </td>
3418 <td>
3419
3420  
3421 </td>
3422 <td>
3423 <b></b>
3424  
3425 </td>
3426 </tr>
3427 <tr>
3428 <td>accts_max</td>
3429 <td>U32</td>
3430 <td> </td>
3431 <td>
3432
3433  
3434 </td>
3435 <td>
3436 <b></b>
3437  
3438 </td>
3439 </tr>
3440 <tr>
3441 <td>unknown1</td>
3442 <td>U32</td>
3443 <td> </td>
3444 <td>
3445
3446  
3447 </td>
3448 <td>
3449 <b></b>
3450  
3451 </td>
3452 </tr>
3453 <tr>
3454 <td>work_max</td>
3455 <td>U32</td>
3456 <td> </td>
3457 <td>
3458
3459  
3460 </td>
3461 <td>
3462 <b></b>
3463  
3464 </td>
3465 </tr>
3466 <tr>
3467 <td>rooms_cur</td>
3468 <td>U32</td>
3469 <td> </td>
3470 <td>
3471
3472  
3473 </td>
3474 <td>
3475 <b></b>
3476  
3477 </td>
3478 </tr>
3479 <tr>
3480 <td>rooms_max</td>
3481 <td>U32</td>
3482 <td> </td>
3483 <td>
3484
3485  
3486 </td>
3487 <td>
3488 <b></b>
3489  
3490 </td>
3491 </tr>
3492 <tr>
3493 <td>rooms_lim</td>
3494 <td>U32</td>
3495 <td> </td>
3496 <td>
3497
3498  
3499 </td>
3500 <td>
3501 <b></b>
3502  
3503 </td>
3504 </tr>
3505 <tr>
3506 <td>games_cur</td>
3507 <td>U32</td>
3508 <td> </td>
3509 <td>
3510
3511  
3512 </td>
3513 <td>
3514 <b></b>
3515  
3516 </td>
3517 </tr>
3518 <tr>
3519 <td>games_max</td>
3520 <td>U32</td>
3521 <td> </td>
3522 <td>
3523
3524  
3525 </td>
3526 <td>
3527 <b></b>
3528  
3529 </td>
3530 </tr>
3531 <tr>
3532 <td>games_lim</td>
3533 <td>U32</td>
3534 <td> </td>
3535 <td>
3536
3537  
3538 </td>
3539 <td>
3540 <b></b>
3541  
3542 </td>
3543 </tr>
3544 <tr>
3545 <td>results_cur</td>
3546 <td>U32</td>
3547 <td> </td>
3548 <td>
3549
3550  
3551 </td>
3552 <td>
3553 <b></b>
3554  
3555 </td>
3556 </tr>
3557 <tr>
3558 <td>results_max</td>
3559 <td>U32</td>
3560 <td> </td>
3561 <td>
3562
3563  
3564 </td>
3565 <td>
3566 <b></b>
3567  
3568 </td>
3569 </tr>
3570 <tr>
3571 <td>unknown2</td>
3572 <td>U32</td>
3573 <td> </td>
3574 <td>
3575
3576  
3577 </td>
3578 <td>
3579 <b></b>
3580  
3581 </td>
3582 </tr>
3583 <tr>
3584 <td>params_cur</td>
3585 <td>U32</td>
3586 <td> </td>
3587 <td>
3588
3589  
3590 </td>
3591 <td>
3592 <b></b>
3593  
3594 </td>
3595 </tr>
3596 <tr>
3597 <td>params_max</td>
3598 <td>U32</td>
3599 <td> </td>
3600 <td>
3601
3602  
3603 </td>
3604 <td>
3605 <b></b>
3606  
3607 </td>
3608 </tr>
3609 <tr>
3610 <td>bytes_in</td>
3611 <td>U64</td>
3612 <td> </td>
3613 <td>
3614
3615  
3616 </td>
3617 <td>
3618 <b></b>
3619  
3620 </td>
3621 </tr>
3622 <tr>
3623 <td>packets_in</td>
3624 <td>U64</td>
3625 <td> </td>
3626 <td>
3627
3628  
3629 </td>
3630 <td>
3631 <b></b>
3632  
3633 </td>
3634 </tr>
3635 <tr>
3636 <td>bytes_out</td>
3637 <td>U64</td>
3638 <td> </td>
3639 <td>
3640
3641  
3642 </td>
3643 <td>
3644 <b></b>
3645  
3646 </td>
3647 </tr>
3648 <tr>
3649 <td>packets_out</td>
3650 <td>U64</td>
3651 <td> </td>
3652 <td>
3653
3654  
3655 </td>
3656 <td>
3657 <b></b>
3658  
3659 </td>
3660 </tr>
3661 </table>
3662
3663 <h4>
3664 <a name="S0016"></a>ORIGIN: SERVER;
3665 MESSAGE: idle_warn</h4>
3666 NUMERIC TYPE (hex): 0016
3667 (possibly in response to
3668 <a href="#C0016">idle_reset(0016)</a>
3669 )
3670 <p>
3671 idle warning, autologout soon (10 minutes...)
3672 </p>
3673 <table border="1" width="100%">
3674 <tr>
3675 <th width="10%">NAME</th>
3676 <th width="10%">TYPE</th>
3677 <th width="15%">DEFAULT</th>
3678 <th>DESCRIPTION</th>
3679 <th width="15%">DEC-GUARD</th>
3680 </tr>
3681 </table>
3682
3683 <h4>
3684 <a name="S0018"></a>ORIGIN: SERVER;
3685 MESSAGE: login</h4>
3686 NUMERIC TYPE (hex): 0018
3687 (possibly in response to
3688 <a href="#C0000">login(0000)</a>
3689 )
3690 <p>
3691 </p>
3692 <table border="1" width="100%">
3693 <tr>
3694 <th width="10%">NAME</th>
3695 <th width="10%">TYPE</th>
3696 <th width="15%">DEFAULT</th>
3697 <th>DESCRIPTION</th>
3698 <th width="15%">DEC-GUARD</th>
3699 </tr>
3700 <tr>
3701 <td>result</td>
3702 <td>CONSTANT</td>
3703 <td>"login error 18" </td>
3704 <td>
3705 ** maybe more following? **
3706
3707  
3708 </td>
3709 <td>
3710 <b></b>
3711  
3712 </td>
3713 </tr>
3714 </table>
3715
3716 <h4>
3717 <a name="S0022"></a>ORIGIN: SERVER;
3718 MESSAGE: login</h4>
3719 NUMERIC TYPE (hex): 0022
3720 (possibly in response to
3721 <a href="#C0000">login(0000)</a>
3722 )
3723 <p>
3724 I was blocked sooo many times for developing this client that it was
3725 easy to figure out. The KGS admins sure need no extra nazi training
3726 :(
3727 </p>
3728 <table border="1" width="100%">
3729 <tr>
3730 <th width="10%">NAME</th>
3731 <th width="10%">TYPE</th>
3732 <th width="15%">DEFAULT</th>
3733 <th>DESCRIPTION</th>
3734 <th width="15%">DEC-GUARD</th>
3735 </tr>
3736 <tr>
3737 <td>reason</td>
3738 <td>STRING</td>
3739 <td> </td>
3740 <td>
3741
3742  
3743 </td>
3744 <td>
3745 <b></b>
3746  
3747 </td>
3748 </tr>
3749 <tr>
3750 <td>result</td>
3751 <td>CONSTANT</td>
3752 <td>"user or ip blocked" </td>
3753 <td>
3754
3755  
3756 </td>
3757 <td>
3758 <b></b>
3759  
3760 </td>
3761 </tr>
3762 </table>
3763
3764 <h4>
3765 <a name="S001b"></a>ORIGIN: SERVER;
3766 MESSAGE: timewarning_default</h4>
3767 NUMERIC TYPE (hex): 001b
3768 (possibly in response to
3769 <a href="#C0000">login(0000)</a>
3770 )
3771 <p>
3772 WILD guess
3773 </p>
3774 <table border="1" width="100%">
3775 <tr>
3776 <th width="10%">NAME</th>
3777 <th width="10%">TYPE</th>
3778 <th width="15%">DEFAULT</th>
3779 <th>DESCRIPTION</th>
3780 <th width="15%">DEC-GUARD</th>
3781 </tr>
3782 <tr>
3783 <td>channel</td>
3784 <td>U16</td>
3785 <td> </td>
3786 <td>
3787
3788  
3789 </td>
3790 <td>
3791 <b></b>
3792  
3793 </td>
3794 </tr>
3795 <tr>
3796 <td>time</td>
3797 <td>U16</td>
3798 <td> </td>
3799 <td>
3800
3801  
3802 </td>
3803 <td>
3804 <b></b>
3805  
3806 </td>
3807 </tr>
3808 </table>
3809
3810 <h4>
3811 <a name="S001c"></a>ORIGIN: SERVER;
3812 MESSAGE: idle_err</h4>
3813 NUMERIC TYPE (hex): 001c<p>
3814 autologout
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 </table>
3825
3826 <h4>
3827 <a name="S001d"></a>ORIGIN: SERVER;
3828 MESSAGE: ping</h4>
3829 NUMERIC TYPE (hex): 001d<p>
3830 Sent by the server regularly, but not answering them
3831 isn't valid. Strange form of keepalive?
3832 </p>
3833 <table border="1" width="100%">
3834 <tr>
3835 <th width="10%">NAME</th>
3836 <th width="10%">TYPE</th>
3837 <th width="15%">DEFAULT</th>
3838 <th>DESCRIPTION</th>
3839 <th width="15%">DEC-GUARD</th>
3840 </tr>
3841 </table>
3842
3843 <h4>
3844 <a name="S001e"></a>ORIGIN: SERVER;
3845 MESSAGE: usergraph</h4>
3846 NUMERIC TYPE (hex): 001e
3847 (possibly in response to
3848 <a href="#C001e">req_usergraph(001e)</a>
3849 )
3850 <p>
3851 User graph data.
3852 </p>
3853 <table border="1" width="100%">
3854 <tr>
3855 <th width="10%">NAME</th>
3856 <th width="10%">TYPE</th>
3857 <th width="15%">DEFAULT</th>
3858 <th>DESCRIPTION</th>
3859 <th width="15%">DEC-GUARD</th>
3860 </tr>
3861 <tr>
3862 <td>name</td>
3863 <td>username</td>
3864 <td> </td>
3865 <td>
3866
3867  
3868 </td>
3869 <td>
3870 <b></b>
3871  
3872 </td>
3873 </tr>
3874 <tr>
3875 <td>data</td>
3876 <td>I16</td>
3877 <td> </td>
3878 <td>
3879 If empty, no graph is available. The unit seems to
3880 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
3881 There is probably one entry per day, the newest one last.
3882
3883  
3884 </td>
3885 <td>
3886 <b></b>
3887  
3888 </td>
3889 </tr>
3890 </table>
3891
3892 <h4>
3893 <a name="S001f"></a>ORIGIN: SERVER;
3894 MESSAGE: memo</h4>
3895 NUMERIC TYPE (hex): 001f
3896 (possibly in response to
3897 <a href="#C001f">fetch_memos(001f)</a>
3898 )
3899 <p>
3900 Unclear. "Leave Message"?
3901 6 strings following.
3902 </p>
3903 <table border="1" width="100%">
3904 <tr>
3905 <th width="10%">NAME</th>
3906 <th width="10%">TYPE</th>
3907 <th width="15%">DEFAULT</th>
3908 <th>DESCRIPTION</th>
3909 <th width="15%">DEC-GUARD</th>
3910 </tr>
3911 <tr>
3912 <td>s1</td>
3913 <td>STRING</td>
3914 <td> </td>
3915 <td>
3916
3917  
3918 </td>
3919 <td>
3920 <b></b>
3921  
3922 </td>
3923 </tr>
3924 <tr>
3925 <td>s2</td>
3926 <td>STRING</td>
3927 <td> </td>
3928 <td>
3929
3930  
3931 </td>
3932 <td>
3933 <b></b>
3934  
3935 </td>
3936 </tr>
3937 <tr>
3938 <td>s3</td>
3939 <td>STRING</td>
3940 <td> </td>
3941 <td>
3942
3943  
3944 </td>
3945 <td>
3946 <b></b>
3947  
3948 </td>
3949 </tr>
3950 <tr>
3951 <td>s4</td>
3952 <td>STRING</td>
3953 <td> </td>
3954 <td>
3955
3956  
3957 </td>
3958 <td>
3959 <b></b>
3960  
3961 </td>
3962 </tr>
3963 <tr>
3964 <td>s5</td>
3965 <td>STRING</td>
3966 <td> </td>
3967 <td>
3968
3969  
3970 </td>
3971 <td>
3972 <b></b>
3973  
3974 </td>
3975 </tr>
3976 <tr>
3977 <td>s6</td>
3978 <td>STRING</td>
3979 <td> </td>
3980 <td>
3981
3982  
3983 </td>
3984 <td>
3985 <b></b>
3986  
3987 </td>
3988 </tr>
3989 </table>
3990
3991 <h4>
3992 <a name="S0021"></a>ORIGIN: SERVER;
3993 MESSAGE: userpic</h4>
3994 NUMERIC TYPE (hex): 0021
3995 (possibly in response to
3996 <a href="#C0021">req_pic(0021)</a>
3997 )
3998 <p>
3999 </p>
4000 <table border="1" width="100%">
4001 <tr>
4002 <th width="10%">NAME</th>
4003 <th width="10%">TYPE</th>
4004 <th width="15%">DEFAULT</th>
4005 <th>DESCRIPTION</th>
4006 <th width="15%">DEC-GUARD</th>
4007 </tr>
4008 <tr>
4009 <td>name</td>
4010 <td>username</td>
4011 <td> </td>
4012 <td>
4013 Reply to pic_req, contains an image in jpeg format.
4014
4015  
4016 </td>
4017 <td>
4018 <b></b>
4019  
4020 </td>
4021 </tr>
4022 <tr>
4023 <td>data</td>
4024 <td>DATA</td>
4025 <td> </td>
4026 <td>
4027
4028  
4029 </td>
4030 <td>
4031 <b></b>
4032  
4033 </td>
4034 </tr>
4035 </table>
4036
4037 <h4>
4038 <a name="S0100"></a>ORIGIN: SERVER;
4039 MESSAGE: gnotice</h4>
4040 NUMERIC TYPE (hex): 0100
4041 (possibly in response to
4042 <a href="#C0100">gnotice(0100)</a>
4043 )
4044 <p>
4045 global notice, sent to everybody
4046 </p>
4047 <table border="1" width="100%">
4048 <tr>
4049 <th width="10%">NAME</th>
4050 <th width="10%">TYPE</th>
4051 <th width="15%">DEFAULT</th>
4052 <th>DESCRIPTION</th>
4053 <th width="15%">DEC-GUARD</th>
4054 </tr>
4055 <tr>
4056 <td>notice</td>
4057 <td>STRING</td>
4058 <td> </td>
4059 <td>
4060
4061  
4062 </td>
4063 <td>
4064 <b></b>
4065  
4066 </td>
4067 </tr>
4068 </table>
4069
4070 <h4>
4071 <a name="S0202"></a>ORIGIN: SERVER;
4072 MESSAGE: notify_event</h4>
4073 NUMERIC TYPE (hex): 0202<p>
4074 # maybe soe notify? Totally unclear.
4075 # loc 0" type="chat(?) loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
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>event</td>
4087 <td>U32</td>
4088 <td> </td>
4089 <td>
4090
4091  
4092 </td>
4093 <td>
4094 <b></b>
4095  
4096 </td>
4097 </tr>
4098 <tr>
4099 <td>user</td>
4100 <td>user</td>
4101 <td> </td>
4102 <td>
4103
4104  
4105 </td>
4106 <td>
4107 <b></b>
4108  
4109 </td>
4110 </tr>
4111 <tr>
4112 <td>gamerecord</td>
4113 <td>game_record</td>
4114 <td> </td>
4115 <td>
4116
4117  
4118 </td>
4119 <td>
4120 <b>event</b> == 2
4121  
4122 </td>
4123 </tr>
4124 </table>
4125
4126 <h4>
4127 <a name="S0310"></a>ORIGIN: SERVER;
4128 MESSAGE: priv_room</h4>
4129 NUMERIC TYPE (hex): 0310<p>
4130 "permission denied" when joining a room
4131 </p>
4132 <table border="1" width="100%">
4133 <tr>
4134 <th width="10%">NAME</th>
4135 <th width="10%">TYPE</th>
4136 <th width="15%">DEFAULT</th>
4137 <th>DESCRIPTION</th>
4138 <th width="15%">DEC-GUARD</th>
4139 </tr>
4140 <tr>
4141 <td>name</td>
4142 <td>STRING</td>
4143 <td> </td>
4144 <td>
4145
4146  
4147 </td>
4148 <td>
4149 <b></b>
4150  
4151 </td>
4152 </tr>
4153 </table>
4154
4155 <h4>
4156 <a name="S0318"></a>ORIGIN: SERVER;
4157 MESSAGE: upd_rooms</h4>
4158 NUMERIC TYPE (hex): 0318
4159 (possibly in response to
4160 <a href="#C0318">list_rooms(0318)</a>
4161 )
4162 <p>
4163 </p>
4164 <table border="1" width="100%">
4165 <tr>
4166 <th width="10%">NAME</th>
4167 <th width="10%">TYPE</th>
4168 <th width="15%">DEFAULT</th>
4169 <th>DESCRIPTION</th>
4170 <th width="15%">DEC-GUARD</th>
4171 </tr>
4172 <tr>
4173 <td>rooms</td>
4174 <td>room</td>
4175 <td> </td>
4176 <td>
4177
4178  
4179 </td>
4180 <td>
4181 <b></b>
4182  
4183 </td>
4184 </tr>
4185 </table>
4186
4187 <h4>
4188 <a name="S0411"></a>ORIGIN: SERVER;
4189 MESSAGE: chal_defaults</h4>
4190 NUMERIC TYPE (hex): 0411
4191 (possibly in response to
4192 <a href="#C0000">login(0000)</a>
4193 )
4194 <p>
4195 </p>
4196 <table border="1" width="100%">
4197 <tr>
4198 <th width="10%">NAME</th>
4199 <th width="10%">TYPE</th>
4200 <th width="15%">DEFAULT</th>
4201 <th>DESCRIPTION</th>
4202 <th width="15%">DEC-GUARD</th>
4203 </tr>
4204 <tr>
4205 <td>channel</td>
4206 <td>U16</td>
4207 <td> </td>
4208 <td>
4209
4210  
4211 </td>
4212 <td>
4213 <b></b>
4214  
4215 </td>
4216 </tr>
4217 <tr>
4218 <td>defaults</td>
4219 <td>challenge_defaults</td>
4220 <td> </td>
4221 <td>
4222
4223  
4224 </td>
4225 <td>
4226 <b></b>
4227  
4228 </td>
4229 </tr>
4230 </table>
4231
4232 <h4>
4233 <a name="S0412"></a>ORIGIN: SERVER;
4234 MESSAGE: rej_game</h4>
4235 NUMERIC TYPE (hex): 0412<p>
4236 Unable to create challenge. The channel might be optional.
4237 </p>
4238 <table border="1" width="100%">
4239 <tr>
4240 <th width="10%">NAME</th>
4241 <th width="10%">TYPE</th>
4242 <th width="15%">DEFAULT</th>
4243 <th>DESCRIPTION</th>
4244 <th width="15%">DEC-GUARD</th>
4245 </tr>
4246 <tr>
4247 <td>channel</td>
4248 <td>U16</td>
4249 <td> </td>
4250 <td>
4251
4252  
4253 </td>
4254 <td>
4255 <b></b>
4256  
4257 </td>
4258 </tr>
4259 </table>
4260
4261 <h4>
4262 <a name="S0414"></a>ORIGIN: SERVER;
4263 MESSAGE: game_record</h4>
4264 NUMERIC TYPE (hex): 0414
4265 (possibly in response to
4266 <a href="#C0413">req_game_record(0413)</a>
4267 )
4268 <p>
4269 The users game record.
4270 </p>
4271 <table border="1" width="100%">
4272 <tr>
4273 <th width="10%">NAME</th>
4274 <th width="10%">TYPE</th>
4275 <th width="15%">DEFAULT</th>
4276 <th>DESCRIPTION</th>
4277 <th width="15%">DEC-GUARD</th>
4278 </tr>
4279 <tr>
4280 <td>name</td>
4281 <td>username</td>
4282 <td> </td>
4283 <td>
4284
4285  
4286 </td>
4287 <td>
4288 <b></b>
4289  
4290 </td>
4291 </tr>
4292 <tr>
4293 <td>more</td>
4294 <td>flag</td>
4295 <td> </td>
4296 <td>
4297 Wether more games are available (must be requested manually)
4298
4299  
4300 </td>
4301 <td>
4302 <b></b>
4303  
4304 </td>
4305 </tr>
4306 <tr>
4307 <td>games</td>
4308 <td>game_record</td>
4309 <td> </td>
4310 <td>
4311
4312  
4313 </td>
4314 <td>
4315 <b></b>
4316  
4317 </td>
4318 </tr>
4319 </table>
4320
4321 <h4>
4322 <a name="S041c"></a>ORIGIN: SERVER;
4323 MESSAGE: upd_game2</h4>
4324 NUMERIC TYPE (hex): 041c<p>
4325 Unclear.
4326 </p>
4327 <table border="1" width="100%">
4328 <tr>
4329 <th width="10%">NAME</th>
4330 <th width="10%">TYPE</th>
4331 <th width="15%">DEFAULT</th>
4332 <th>DESCRIPTION</th>
4333 <th width="15%">DEC-GUARD</th>
4334 </tr>
4335 <tr>
4336 <td>channel_junk</td>
4337 <td>U16</td>
4338 <td> </td>
4339 <td>
4340
4341  
4342 </td>
4343 <td>
4344 <b></b>
4345  
4346 </td>
4347 </tr>
4348 <tr>
4349 <td>game</td>
4350 <td>game</td>
4351 <td> </td>
4352 <td>
4353
4354  
4355 </td>
4356 <td>
4357 <b></b>
4358  
4359 </td>
4360 </tr>
4361 </table>
4362
4363 <h3>Room messages</h3>
4364
4365 <p>Not all room messages are for rooms only, and rooms need to parse
4366 not only these messages. Orthogonality, what for?</p>
4367
4368 <h4>
4369 <a name="S4300"></a>ORIGIN: SERVER;
4370 MESSAGE: join_room</h4>
4371 NUMERIC TYPE (hex): 4300
4372 (possibly in response to
4373 <a href="#C4300">join_room(4300)</a>
4374 )
4375 <p>
4376 </p>
4377 <table border="1" width="100%">
4378 <tr>
4379 <th width="10%">NAME</th>
4380 <th width="10%">TYPE</th>
4381 <th width="15%">DEFAULT</th>
4382 <th>DESCRIPTION</th>
4383 <th width="15%">DEC-GUARD</th>
4384 </tr>
4385 <tr>
4386 <td>channel</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>users</td>
4400 <td>user</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="S4301"></a>ORIGIN: SERVER;
4415 MESSAGE: msg_room</h4>
4416 NUMERIC TYPE (hex): 4301<p>
4417 </p>
4418 <table border="1" width="100%">
4419 <tr>
4420 <th width="10%">NAME</th>
4421 <th width="10%">TYPE</th>
4422 <th width="15%">DEFAULT</th>
4423 <th>DESCRIPTION</th>
4424 <th width="15%">DEC-GUARD</th>
4425 </tr>
4426 <tr>
4427 <td>channel</td>
4428 <td>U16</td>
4429 <td> </td>
4430 <td>
4431
4432  
4433 </td>
4434 <td>
4435 <b></b>
4436  
4437 </td>
4438 </tr>
4439 <tr>
4440 <td>name</td>
4441 <td>username</td>
4442 <td> </td>
4443 <td>
4444
4445  
4446 </td>
4447 <td>
4448 <b></b>
4449  
4450 </td>
4451 </tr>
4452 <tr>
4453 <td>message</td>
4454 <td>STRING</td>
4455 <td> </td>
4456 <td>
4457
4458  
4459 </td>
4460 <td>
4461 <b></b>
4462  
4463 </td>
4464 </tr>
4465 </table>
4466
4467 <h4>
4468 <a name="S4302"></a>ORIGIN: SERVER;
4469 MESSAGE: part_room</h4>
4470 NUMERIC TYPE (hex): 4302<p>
4471 </p>
4472 <table border="1" width="100%">
4473 <tr>
4474 <th width="10%">NAME</th>
4475 <th width="10%">TYPE</th>
4476 <th width="15%">DEFAULT</th>
4477 <th>DESCRIPTION</th>
4478 <th width="15%">DEC-GUARD</th>
4479 </tr>
4480 <tr>
4481 <td>channel</td>
4482 <td>U16</td>
4483 <td> </td>
4484 <td>
4485
4486  
4487 </td>
4488 <td>
4489 <b></b>
4490  
4491 </td>
4492 </tr>
4493 <tr>
4494 <td>user</td>
4495 <td>user</td>
4496 <td> </td>
4497 <td>
4498
4499  
4500 </td>
4501 <td>
4502 <b></b>
4503  
4504 </td>
4505 </tr>
4506 </table>
4507
4508 <h4>
4509 <a name="S4303"></a>ORIGIN: SERVER;
4510 MESSAGE: del_room</h4>
4511 NUMERIC TYPE (hex): 4303<p>
4512 </p>
4513 <table border="1" width="100%">
4514 <tr>
4515 <th width="10%">NAME</th>
4516 <th width="10%">TYPE</th>
4517 <th width="15%">DEFAULT</th>
4518 <th>DESCRIPTION</th>
4519 <th width="15%">DEC-GUARD</th>
4520 </tr>
4521 <tr>
4522 <td>channel</td>
4523 <td>U16</td>
4524 <td> </td>
4525 <td>
4526
4527  
4528 </td>
4529 <td>
4530 <b></b>
4531  
4532 </td>
4533 </tr>
4534 </table>
4535
4536 <h4>
4537 <a name="S4304"></a>ORIGIN: SERVER;
4538 MESSAGE: upd_games</h4>
4539 NUMERIC TYPE (hex): 4304<p>
4540 </p>
4541 <table border="1" width="100%">
4542 <tr>
4543 <th width="10%">NAME</th>
4544 <th width="10%">TYPE</th>
4545 <th width="15%">DEFAULT</th>
4546 <th>DESCRIPTION</th>
4547 <th width="15%">DEC-GUARD</th>
4548 </tr>
4549 <tr>
4550 <td>channel</td>
4551 <td>U16</td>
4552 <td> </td>
4553 <td>
4554
4555  
4556 </td>
4557 <td>
4558 <b></b>
4559  
4560 </td>
4561 </tr>
4562 <tr>
4563 <td>games</td>
4564 <td>game</td>
4565 <td> </td>
4566 <td>
4567
4568  
4569 </td>
4570 <td>
4571 <b></b>
4572  
4573 </td>
4574 </tr>
4575 </table>
4576
4577 <h4>
4578 <a name="S4319"></a>ORIGIN: SERVER;
4579 MESSAGE: desc_room</h4>
4580 NUMERIC TYPE (hex): 4319<p>
4581 </p>
4582 <table border="1" width="100%">
4583 <tr>
4584 <th width="10%">NAME</th>
4585 <th width="10%">TYPE</th>
4586 <th width="15%">DEFAULT</th>
4587 <th>DESCRIPTION</th>
4588 <th width="15%">DEC-GUARD</th>
4589 </tr>
4590 <tr>
4591 <td>channel</td>
4592 <td>U16</td>
4593 <td> </td>
4594 <td>
4595
4596  
4597 </td>
4598 <td>
4599 <b></b>
4600  
4601 </td>
4602 </tr>
4603 <tr>
4604 <td>owner</td>
4605 <td>username</td>
4606 <td> </td>
4607 <td>
4608
4609  
4610 </td>
4611 <td>
4612 <b></b>
4613  
4614 </td>
4615 </tr>
4616 <tr>
4617 <td>description</td>
4618 <td>STRING</td>
4619 <td> </td>
4620 <td>
4621
4622  
4623 </td>
4624 <td>
4625 <b></b>
4626  
4627 </td>
4628 </tr>
4629 </table>
4630
4631 <h3>Game messages</h3>
4632
4633 <h4>
4634 <a name="S4400"></a>ORIGIN: SERVER;
4635 MESSAGE: upd_challenge</h4>
4636 NUMERIC TYPE (hex): 4400<p>
4637 Unclear.
4638 </p>
4639 <table border="1" width="100%">
4640 <tr>
4641 <th width="10%">NAME</th>
4642 <th width="10%">TYPE</th>
4643 <th width="15%">DEFAULT</th>
4644 <th>DESCRIPTION</th>
4645 <th width="15%">DEC-GUARD</th>
4646 </tr>
4647 <tr>
4648 <td>channel</td>
4649 <td>U16</td>
4650 <td> </td>
4651 <td>
4652
4653  
4654 </td>
4655 <td>
4656 <b></b>
4657  
4658 </td>
4659 </tr>
4660 <tr>
4661 <td>challenge</td>
4662 <td>challenge</td>
4663 <td> </td>
4664 <td>
4665
4666  
4667 </td>
4668 <td>
4669 <b></b>
4670  
4671 </td>
4672 </tr>
4673 </table>
4674
4675 <h4>
4676 <a name="S4401"></a>ORIGIN: SERVER;
4677 MESSAGE: upd_game</h4>
4678 NUMERIC TYPE (hex): 4401<p>
4679 </p>
4680 <table border="1" width="100%">
4681 <tr>
4682 <th width="10%">NAME</th>
4683 <th width="10%">TYPE</th>
4684 <th width="15%">DEFAULT</th>
4685 <th>DESCRIPTION</th>
4686 <th width="15%">DEC-GUARD</th>
4687 </tr>
4688 <tr>
4689 <td>channel</td>
4690 <td>U16</td>
4691 <td> </td>
4692 <td>
4693
4694  
4695 </td>
4696 <td>
4697 <b></b>
4698  
4699 </td>
4700 </tr>
4701 <tr>
4702 <td>game</td>
4703 <td>game</td>
4704 <td> </td>
4705 <td>
4706
4707  
4708 </td>
4709 <td>
4710 <b></b>
4711  
4712 </td>
4713 </tr>
4714 </table>
4715
4716 <h4>
4717 <a name="S4402"></a>ORIGIN: SERVER;
4718 MESSAGE: del_game</h4>
4719 NUMERIC TYPE (hex): 4402<p>
4720 </p>
4721 <table border="1" width="100%">
4722 <tr>
4723 <th width="10%">NAME</th>
4724 <th width="10%">TYPE</th>
4725 <th width="15%">DEFAULT</th>
4726 <th>DESCRIPTION</th>
4727 <th width="15%">DEC-GUARD</th>
4728 </tr>
4729 <tr>
4730 <td>channel</td>
4731 <td>U16</td>
4732 <td> </td>
4733 <td>
4734
4735  
4736 </td>
4737 <td>
4738 <b></b>
4739  
4740 </td>
4741 </tr>
4742 </table>
4743
4744 <h4>
4745 <a name="S4403"></a>ORIGIN: SERVER;
4746 MESSAGE: upd_observers</h4>
4747 NUMERIC TYPE (hex): 4403<p>
4748 </p>
4749 <table border="1" width="100%">
4750 <tr>
4751 <th width="10%">NAME</th>
4752 <th width="10%">TYPE</th>
4753 <th width="15%">DEFAULT</th>
4754 <th>DESCRIPTION</th>
4755 <th width="15%">DEC-GUARD</th>
4756 </tr>
4757 <tr>
4758 <td>channel</td>
4759 <td>U16</td>
4760 <td> </td>
4761 <td>
4762
4763  
4764 </td>
4765 <td>
4766 <b></b>
4767  
4768 </td>
4769 </tr>
4770 <tr>
4771 <td>users</td>
4772 <td>user</td>
4773 <td> </td>
4774 <td>
4775
4776  
4777 </td>
4778 <td>
4779 <b></b>
4780  
4781 </td>
4782 </tr>
4783 </table>
4784
4785 <h4>
4786 <a name="S4404"></a>ORIGIN: SERVER;
4787 MESSAGE: del_observer</h4>
4788 NUMERIC TYPE (hex): 4404<p>
4789 </p>
4790 <table border="1" width="100%">
4791 <tr>
4792 <th width="10%">NAME</th>
4793 <th width="10%">TYPE</th>
4794 <th width="15%">DEFAULT</th>
4795 <th>DESCRIPTION</th>
4796 <th width="15%">DEC-GUARD</th>
4797 </tr>
4798 <tr>
4799 <td>channel</td>
4800 <td>U16</td>
4801 <td> </td>
4802 <td>
4803
4804  
4805 </td>
4806 <td>
4807 <b></b>
4808  
4809 </td>
4810 </tr>
4811 <tr>
4812 <td>name</td>
4813 <td>username</td>
4814 <td> </td>
4815 <td>
4816
4817  
4818 </td>
4819 <td>
4820 <b></b>
4821  
4822 </td>
4823 </tr>
4824 </table>
4825
4826 <h4>
4827 <a name="S4405"></a>ORIGIN: SERVER;
4828 MESSAGE: set_tree</h4>
4829 NUMERIC TYPE (hex): 4405<p>
4830 </p>
4831 <table border="1" width="100%">
4832 <tr>
4833 <th width="10%">NAME</th>
4834 <th width="10%">TYPE</th>
4835 <th width="15%">DEFAULT</th>
4836 <th>DESCRIPTION</th>
4837 <th width="15%">DEC-GUARD</th>
4838 </tr>
4839 <tr>
4840 <td>channel</td>
4841 <td>U16</td>
4842 <td> </td>
4843 <td>
4844
4845  
4846 </td>
4847 <td>
4848 <b></b>
4849  
4850 </td>
4851 </tr>
4852 <tr>
4853 <td>tree</td>
4854 <td>TREE</td>
4855 <td> </td>
4856 <td>
4857
4858  
4859 </td>
4860 <td>
4861 <b></b>
4862  
4863 </td>
4864 </tr>
4865 </table>
4866
4867 <h4>
4868 <a name="S4406"></a>ORIGIN: SERVER;
4869 MESSAGE: upd_tree</h4>
4870 NUMERIC TYPE (hex): 4406<p>
4871 </p>
4872 <table border="1" width="100%">
4873 <tr>
4874 <th width="10%">NAME</th>
4875 <th width="10%">TYPE</th>
4876 <th width="15%">DEFAULT</th>
4877 <th>DESCRIPTION</th>
4878 <th width="15%">DEC-GUARD</th>
4879 </tr>
4880 <tr>
4881 <td>channel</td>
4882 <td>U16</td>
4883 <td> </td>
4884 <td>
4885
4886  
4887 </td>
4888 <td>
4889 <b></b>
4890  
4891 </td>
4892 </tr>
4893 <tr>
4894 <td>tree</td>
4895 <td>TREE</td>
4896 <td> </td>
4897 <td>
4898
4899  
4900 </td>
4901 <td>
4902 <b></b>
4903  
4904 </td>
4905 </tr>
4906 </table>
4907
4908 <h4>
4909 <a name="S4409"></a>ORIGIN: SERVER;
4910 MESSAGE: superko</h4>
4911 NUMERIC TYPE (hex): 4409<p>
4912 Superko-warning.
4913 </p>
4914 <table border="1" width="100%">
4915 <tr>
4916 <th width="10%">NAME</th>
4917 <th width="10%">TYPE</th>
4918 <th width="15%">DEFAULT</th>
4919 <th>DESCRIPTION</th>
4920 <th width="15%">DEC-GUARD</th>
4921 </tr>
4922 <tr>
4923 <td>channel</td>
4924 <td>U16</td>
4925 <td> </td>
4926 <td>
4927
4928  
4929 </td>
4930 <td>
4931 <b></b>
4932  
4933 </td>
4934 </tr>
4935 </table>
4936
4937 <h4>
4938 <a name="S440b"></a>ORIGIN: SERVER;
4939 MESSAGE: final_result</h4>
4940 NUMERIC TYPE (hex): 440b<p>
4941 </p>
4942 <table border="1" width="100%">
4943 <tr>
4944 <th width="10%">NAME</th>
4945 <th width="10%">TYPE</th>
4946 <th width="15%">DEFAULT</th>
4947 <th>DESCRIPTION</th>
4948 <th width="15%">DEC-GUARD</th>
4949 </tr>
4950 <tr>
4951 <td>channel</td>
4952 <td>U16</td>
4953 <td> </td>
4954 <td>
4955
4956  
4957 </td>
4958 <td>
4959 <b></b>
4960  
4961 </td>
4962 </tr>
4963 <tr>
4964 <td>blackscore</td>
4965 <td>scorevalues</td>
4966 <td> </td>
4967 <td>
4968
4969  
4970 </td>
4971 <td>
4972 <b></b>
4973  
4974 </td>
4975 </tr>
4976 <tr>
4977 <td>whitescore</td>
4978 <td>scorevalues</td>
4979 <td> </td>
4980 <td>
4981
4982  
4983 </td>
4984 <td>
4985 <b></b>
4986  
4987 </td>
4988 </tr>
4989 </table>
4990
4991 <h4>
4992 <a name="S440e"></a>ORIGIN: SERVER;
4993 MESSAGE: req_undo</h4>
4994 NUMERIC TYPE (hex): 440e<p>
4995 </p>
4996 <table border="1" width="100%">
4997 <tr>
4998 <th width="10%">NAME</th>
4999 <th width="10%">TYPE</th>
5000 <th width="15%">DEFAULT</th>
5001 <th>DESCRIPTION</th>
5002 <th width="15%">DEC-GUARD</th>
5003 </tr>
5004 <tr>
5005 <td>channel</td>
5006 <td>U16</td>
5007 <td> </td>
5008 <td>
5009
5010
5011  
5012 </td>
5013 <td>
5014 <b></b>
5015  
5016 </td>
5017 </tr>
5018 </table>
5019
5020 <h4>
5021 <a name="S4410"></a>ORIGIN: SERVER;
5022 MESSAGE: resign_game</h4>
5023 NUMERIC TYPE (hex): 4410<p>
5024 </p>
5025 <table border="1" width="100%">
5026 <tr>
5027 <th width="10%">NAME</th>
5028 <th width="10%">TYPE</th>
5029 <th width="15%">DEFAULT</th>
5030 <th>DESCRIPTION</th>
5031 <th width="15%">DEC-GUARD</th>
5032 </tr>
5033 <tr>
5034 <td>channel</td>
5035 <td>U16</td>
5036 <td> </td>
5037 <td>
5038
5039  
5040 </td>
5041 <td>
5042 <b></b>
5043  
5044 </td>
5045 </tr>
5046 <tr>
5047 <td>player</td>
5048 <td>U8</td>
5049 <td> </td>
5050 <td>
5051
5052  
5053 </td>
5054 <td>
5055 <b></b>
5056  
5057 </td>
5058 </tr>
5059 </table>
5060
5061 <h4>
5062 <a name="S441a"></a>ORIGIN: SERVER;
5063 MESSAGE: set_teacher</h4>
5064 NUMERIC TYPE (hex): 441a<p>
5065 </p>
5066 <table border="1" width="100%">
5067 <tr>
5068 <th width="10%">NAME</th>
5069 <th width="10%">TYPE</th>
5070 <th width="15%">DEFAULT</th>
5071 <th>DESCRIPTION</th>
5072 <th width="15%">DEC-GUARD</th>
5073 </tr>
5074 <tr>
5075 <td>channel</td>
5076 <td>U16</td>
5077 <td> </td>
5078 <td>
5079
5080  
5081 </td>
5082 <td>
5083 <b></b>
5084  
5085 </td>
5086 </tr>
5087 <tr>
5088 <td>name</td>
5089 <td>username</td>
5090 <td> </td>
5091 <td>
5092
5093  
5094 </td>
5095 <td>
5096 <b></b>
5097  
5098 </td>
5099 </tr>
5100 </table>
5101
5102 <h4>
5103 <a name="S441d"></a>ORIGIN: SERVER;
5104 MESSAGE: owner_left</h4>
5105 NUMERIC TYPE (hex): 441d<p>
5106 Unclear.
5107 </p>
5108 <table border="1" width="100%">
5109 <tr>
5110 <th width="10%">NAME</th>
5111 <th width="10%">TYPE</th>
5112 <th width="15%">DEFAULT</th>
5113 <th>DESCRIPTION</th>
5114 <th width="15%">DEC-GUARD</th>
5115 </tr>
5116 <tr>
5117 <td>channel</td>
5118 <td>U16</td>
5119 <td> </td>
5120 <td>
5121
5122  
5123 </td>
5124 <td>
5125 <b></b>
5126  
5127 </td>
5128 </tr>
5129 </table>
5130
5131 <h4>
5132 <a name="S441e"></a>ORIGIN: SERVER;
5133 MESSAGE: teacher_left</h4>
5134 NUMERIC TYPE (hex): 441e<p>
5135 Unclear.
5136 </p>
5137 <table border="1" width="100%">
5138 <tr>
5139 <th width="10%">NAME</th>
5140 <th width="10%">TYPE</th>
5141 <th width="15%">DEFAULT</th>
5142 <th>DESCRIPTION</th>
5143 <th width="15%">DEC-GUARD</th>
5144 </tr>
5145 <tr>
5146 <td>channel</td>
5147 <td>U16</td>
5148 <td> </td>
5149 <td>
5150
5151  
5152 </td>
5153 <td>
5154 <b></b>
5155  
5156 </td>
5157 </tr>
5158 </table>
5159
5160 <h4>
5161 <a name="S4422"></a>ORIGIN: SERVER;
5162 MESSAGE: unknown4422</h4>
5163 NUMERIC TYPE (hex): 4422<p>
5164 change teacher? something to do with editing?
5165 </p>
5166 <table border="1" width="100%">
5167 <tr>
5168 <th width="10%">NAME</th>
5169 <th width="10%">TYPE</th>
5170 <th width="15%">DEFAULT</th>
5171 <th>DESCRIPTION</th>
5172 <th width="15%">DEC-GUARD</th>
5173 </tr>
5174 <tr>
5175 <td>channel</td>
5176 <td>U16</td>
5177 <td> </td>
5178 <td>
5179
5180  
5181 </td>
5182 <td>
5183 <b></b>
5184  
5185 </td>
5186 </tr>
5187 <tr>
5188 <td>name1</td>
5189 <td>username</td>
5190 <td> </td>
5191 <td>
5192
5193  
5194 </td>
5195 <td>
5196 <b></b>
5197  
5198 </td>
5199 </tr>
5200 <tr>
5201 <td>name2</td>
5202 <td>username</td>
5203 <td> </td>
5204 <td>
5205
5206  
5207 </td>
5208 <td>
5209 <b></b>
5210  
5211 </td>
5212 </tr>
5213 </table>
5214
5215 <h4>
5216 <a name="S4428"></a>ORIGIN: SERVER;
5217 MESSAGE: add_tree</h4>
5218 NUMERIC TYPE (hex): 4428<p>
5219 <p>See <a href="#S4405">set_tree(4405)</a>. In addition, flags the tree as being
5220 uploaded completely.</p>
5221 </p>
5222 <table border="1" width="100%">
5223 <tr>
5224 <th width="10%">NAME</th>
5225 <th width="10%">TYPE</th>
5226 <th width="15%">DEFAULT</th>
5227 <th>DESCRIPTION</th>
5228 <th width="15%">DEC-GUARD</th>
5229 </tr>
5230 <tr>
5231 <td>channel</td>
5232 <td>U16</td>
5233 <td> </td>
5234 <td>
5235
5236  
5237 </td>
5238 <td>
5239 <b></b>
5240  
5241 </td>
5242 </tr>
5243 <tr>
5244 <td>tree</td>
5245 <td>TREE</td>
5246 <td> </td>
5247 <td>
5248
5249  
5250 </td>
5251 <td>
5252 <b></b>
5253  
5254 </td>
5255 </tr>
5256 </table>
5257
5258 <h4>
5259 <a name="S4433"></a>ORIGIN: SERVER;
5260 MESSAGE: req_result</h4>
5261 NUMERIC TYPE (hex): 4433<p>
5262 Unclear.
5263 </p>
5264 <table border="1" width="100%">
5265 <tr>
5266 <th width="10%">NAME</th>
5267 <th width="10%">TYPE</th>
5268 <th width="15%">DEFAULT</th>
5269 <th>DESCRIPTION</th>
5270 <th width="15%">DEC-GUARD</th>
5271 </tr>
5272 <tr>
5273 <td>channel</td>
5274 <td>U16</td>
5275 <td> </td>
5276 <td>
5277 # # recv_result(?)
5278
5279  
5280 </td>
5281 <td>
5282 <b></b>
5283  
5284 </td>
5285 </tr>
5286 </table>
5287
5288 <h4>
5289 <a name="S4434"></a>ORIGIN: SERVER;
5290 MESSAGE: unknown4434</h4>
5291 NUMERIC TYPE (hex): 4434<p>
5292 </p>
5293 <table border="1" width="100%">
5294 <tr>
5295 <th width="10%">NAME</th>
5296 <th width="10%">TYPE</th>
5297 <th width="15%">DEFAULT</th>
5298 <th>DESCRIPTION</th>
5299 <th width="15%">DEC-GUARD</th>
5300 </tr>
5301 <tr>
5302 <td>channel</td>
5303 <td>U16</td>
5304 <td> </td>
5305 <td>
5306
5307  
5308 </td>
5309 <td>
5310 <b></b>
5311  
5312 </td>
5313 </tr>
5314 <tr>
5315 <td>b1</td>
5316 <td>U8</td>
5317 <td> </td>
5318 <td>
5319 ?? !demonstration game??
5320
5321  
5322 </td>
5323 <td>
5324 <b></b>
5325  
5326 </td>
5327 </tr>
5328 </table>
5329
5330 </body>
5331 </html>