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