ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.39
Committed: Sat Aug 16 16:17:52 2003 UTC (20 years, 9 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.38: +76 -1 lines
Log Message:
*** empty log message ***

File Contents

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