ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.45
Committed: Sat May 15 17:42:26 2004 UTC (20 years ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.44: +1 -30 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.45 <h1>$Revision: 1.44 $</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.32 <a name="C0413"></a>ORIGIN: CLIENT;
1799     MESSAGE: req_game_record</h4>
1800 pcg 1.17 NUMERIC TYPE (hex): 0413<p>
1801 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>
1802 pcg 1.17 </p>
1803     <table border="1" width="100%">
1804 pcg 1.14 <tr>
1805 pcg 1.17 <th width="10%">NAME</th>
1806 pcg 1.37 <th width="8%">TYPE</th>
1807     <th width="4%">VALUE</th>
1808 pcg 1.17 <th>DESCRIPTION</th>
1809 pcg 1.37 <th width="10%">GUARD</th>
1810 pcg 1.14 </tr>
1811     <tr>
1812     <td>name</td>
1813     <td>username</td>
1814 pcg 1.17 <td> </td>
1815 pcg 1.14 <td>
1816 pcg 1.17
1817      
1818     </td>
1819     <td>
1820     <b></b>
1821      
1822     </td>
1823 pcg 1.14 </tr>
1824     <tr>
1825     <td>timestamp</td>
1826     <td>timestamp</td>
1827 pcg 1.17 <td> </td>
1828 pcg 1.14 <td>
1829     If zero, start at the newest games, else only send games
1830     before the given timestap.
1831 pcg 1.17
1832      
1833     </td>
1834     <td>
1835     <b></b>
1836      
1837     </td>
1838 pcg 1.14 </tr>
1839     </table>
1840    
1841 pcg 1.17 <h4>
1842 pcg 1.32 <a name="C4300"></a>ORIGIN: CLIENT;
1843     MESSAGE: join_room</h4>
1844 pcg 1.17 NUMERIC TYPE (hex): 4300<p>
1845 pcg 1.32 <p>Joins the given room. <a href="#S4300">join_room(4300)</a> messages for yourself
1846 pcg 1.17 and all users in that room, as well as the initial gamelist, are
1847     send if the room exists. If not, timeout...</p>
1848     </p>
1849     <table border="1" width="100%">
1850 pcg 1.1 <tr>
1851 pcg 1.17 <th width="10%">NAME</th>
1852 pcg 1.37 <th width="8%">TYPE</th>
1853     <th width="4%">VALUE</th>
1854 pcg 1.17 <th>DESCRIPTION</th>
1855 pcg 1.37 <th width="10%">GUARD</th>
1856 pcg 1.1 </tr>
1857     <tr>
1858     <td>channel</td>
1859 pcg 1.3 <td>U16</td>
1860 pcg 1.17 <td> </td>
1861 pcg 1.3 <td>
1862 pcg 1.17
1863      
1864     </td>
1865     <td>
1866     <b></b>
1867      
1868     </td>
1869 pcg 1.1 </tr>
1870     <tr>
1871     <td>user</td>
1872     <td>user</td>
1873 pcg 1.17 <td> </td>
1874     <td>
1875    
1876      
1877     </td>
1878 pcg 1.3 <td>
1879 pcg 1.17 <b></b>
1880      
1881     </td>
1882 pcg 1.1 </tr>
1883     </table>
1884    
1885 pcg 1.17 <h4>
1886 pcg 1.32 <a name="C4301"></a>ORIGIN: CLIENT;
1887     MESSAGE: msg_room</h4>
1888 pcg 1.17 NUMERIC TYPE (hex): 4301<p>
1889     Send a message to the room.
1890     </p>
1891     <table border="1" width="100%">
1892 pcg 1.1 <tr>
1893 pcg 1.17 <th width="10%">NAME</th>
1894 pcg 1.37 <th width="8%">TYPE</th>
1895     <th width="4%">VALUE</th>
1896 pcg 1.17 <th>DESCRIPTION</th>
1897 pcg 1.37 <th width="10%">GUARD</th>
1898 pcg 1.1 </tr>
1899     <tr>
1900     <td>channel</td>
1901 pcg 1.3 <td>U16</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     <tr>
1913     <td>name</td>
1914 pcg 1.3 <td>username</td>
1915 pcg 1.17 <td> </td>
1916 pcg 1.3 <td>
1917 pcg 1.9 Must be the login-name of the user.
1918 pcg 1.17
1919      
1920     </td>
1921     <td>
1922     <b></b>
1923      
1924     </td>
1925 pcg 1.1 </tr>
1926     <tr>
1927     <td>message</td>
1928     <td>STRING</td>
1929 pcg 1.17 <td> </td>
1930     <td>
1931    
1932      
1933     </td>
1934 pcg 1.3 <td>
1935 pcg 1.17 <b></b>
1936      
1937     </td>
1938 pcg 1.1 </tr>
1939     </table>
1940    
1941 pcg 1.17 <h4>
1942 pcg 1.32 <a name="C4302"></a>ORIGIN: CLIENT;
1943     MESSAGE: part_room</h4>
1944 pcg 1.17 NUMERIC TYPE (hex): 4302<p>
1945     Remove yourself (or maybe others as admin) from a room.
1946     </p>
1947     <table border="1" width="100%">
1948 pcg 1.1 <tr>
1949 pcg 1.17 <th width="10%">NAME</th>
1950 pcg 1.37 <th width="8%">TYPE</th>
1951     <th width="4%">VALUE</th>
1952 pcg 1.17 <th>DESCRIPTION</th>
1953 pcg 1.37 <th width="10%">GUARD</th>
1954 pcg 1.1 </tr>
1955     <tr>
1956     <td>channel</td>
1957 pcg 1.3 <td>U16</td>
1958 pcg 1.17 <td> </td>
1959 pcg 1.3 <td>
1960 pcg 1.17
1961      
1962     </td>
1963     <td>
1964     <b></b>
1965      
1966     </td>
1967 pcg 1.1 </tr>
1968     <tr>
1969     <td>name</td>
1970 pcg 1.3 <td>username</td>
1971 pcg 1.17 <td> </td>
1972     <td>
1973    
1974      
1975     </td>
1976 pcg 1.3 <td>
1977 pcg 1.17 <b></b>
1978      
1979     </td>
1980 pcg 1.1 </tr>
1981     </table>
1982    
1983 pcg 1.17 <h4>
1984 pcg 1.32 <a name="C4305"></a>ORIGIN: CLIENT;
1985     MESSAGE: new_game</h4>
1986 pcg 1.17 NUMERIC TYPE (hex): 4305<p>
1987 pcg 1.41 <p>Unclear. Start a new game.
1988     <p>Clone: 00000: 20202020 20202020 20202020 20203238 28
1989     00010: 9d000543 0d000000 00000000 00130201 ...C............
1990     00020: 0000ffff ffffffff ffffffff 00000000 ..ÿÿÿÿÿÿÿÿÿÿ....</p>
1991 pcg 1.17 </p>
1992 pcg 1.41 </p>
1993 pcg 1.17 <table border="1" width="100%">
1994 pcg 1.1 <tr>
1995 pcg 1.17 <th width="10%">NAME</th>
1996 pcg 1.37 <th width="8%">TYPE</th>
1997     <th width="4%">VALUE</th>
1998 pcg 1.17 <th>DESCRIPTION</th>
1999 pcg 1.37 <th width="10%">GUARD</th>
2000 pcg 1.1 </tr>
2001     <tr>
2002     <td>channel</td>
2003 pcg 1.3 <td>U16</td>
2004 pcg 1.17 <td> </td>
2005     <td>
2006    
2007      
2008     </td>
2009 pcg 1.3 <td>
2010 pcg 1.17 <b></b>
2011      
2012     </td>
2013 pcg 1.1 </tr>
2014     <tr>
2015     <td>id</td>
2016 pcg 1.3 <td>U16</td>
2017 pcg 1.17 <td> </td>
2018     <td>
2019    
2020      
2021     </td>
2022 pcg 1.3 <td>
2023 pcg 1.17 <b></b>
2024      
2025     </td>
2026 pcg 1.1 </tr>
2027     <tr>
2028     <td>gametype</td>
2029 pcg 1.3 <td>U32</td>
2030 pcg 1.17 <td> </td>
2031     <td>
2032    
2033      
2034     </td>
2035 pcg 1.3 <td>
2036 pcg 1.17 <b></b>
2037      
2038     </td>
2039 pcg 1.1 </tr>
2040     <tr>
2041     <td>rules</td>
2042     <td>rules</td>
2043 pcg 1.17 <td> </td>
2044     <td>
2045    
2046      
2047     </td>
2048 pcg 1.3 <td>
2049 pcg 1.17 <b></b>
2050      
2051     </td>
2052 pcg 1.1 </tr>
2053     <tr>
2054     <td>notes</td>
2055     <td>STRING</td>
2056 pcg 1.17 <td> </td>
2057     <td>
2058 pcg 1.39
2059      
2060     </td>
2061     <td>
2062     <b></b>
2063      
2064     </td>
2065     </tr>
2066     </table>
2067    
2068     <h4>
2069     <a name="C430a"></a>ORIGIN: CLIENT;
2070     MESSAGE: load_game</h4>
2071     NUMERIC TYPE (hex): 430a<p>
2072     Load an existing game into a room(?)
2073     There is no indication that a new game is there except
2074     for a upd_observers message with your name in it. Which means
2075     you have to watch upd_observers messages that are not for any
2076     currently open game and open one. Ugh.
2077     </p>
2078     <table border="1" width="100%">
2079     <tr>
2080     <th width="10%">NAME</th>
2081     <th width="8%">TYPE</th>
2082     <th width="4%">VALUE</th>
2083     <th>DESCRIPTION</th>
2084     <th width="10%">GUARD</th>
2085     </tr>
2086     <tr>
2087     <td>channel</td>
2088     <td>U16</td>
2089     <td> </td>
2090     <td>
2091     The room to load the game into.
2092    
2093      
2094     </td>
2095     <td>
2096     <b></b>
2097      
2098     </td>
2099     </tr>
2100     <tr>
2101     <td>timestamp</td>
2102     <td>timestamp</td>
2103     <td> </td>
2104     <td>
2105     From the game record.
2106    
2107      
2108     </td>
2109     <td>
2110     <b></b>
2111      
2112     </td>
2113     </tr>
2114     <tr>
2115     <td>user</td>
2116     <td>username</td>
2117     <td> </td>
2118     <td>
2119    
2120      
2121     </td>
2122     <td>
2123     <b></b>
2124      
2125     </td>
2126     </tr>
2127     <tr>
2128     <td>flags</td>
2129     <td>U8</td>
2130     <td> </td>
2131     <td>
2132     0 == public, 2 == private
2133 pcg 1.17
2134      
2135     </td>
2136 pcg 1.3 <td>
2137 pcg 1.17 <b></b>
2138      
2139     </td>
2140 pcg 1.1 </tr>
2141     </table>
2142    
2143 pcg 1.17 <h4>
2144 pcg 1.32 <a name="C430b"></a>ORIGIN: CLIENT;
2145     MESSAGE: req_games</h4>
2146 pcg 1.17 NUMERIC TYPE (hex): 430b<p>
2147 pcg 1.9 Request to update room game list (send this once per minute to get
2148     updated). Results in upd_games messages.
2149 pcg 1.17 </p>
2150     <table border="1" width="100%">
2151     <tr>
2152     <th width="10%">NAME</th>
2153 pcg 1.37 <th width="8%">TYPE</th>
2154     <th width="4%">VALUE</th>
2155 pcg 1.17 <th>DESCRIPTION</th>
2156 pcg 1.37 <th width="10%">GUARD</th>
2157 pcg 1.1 </tr>
2158     <tr>
2159     <td>channel</td>
2160 pcg 1.3 <td>U16</td>
2161 pcg 1.17 <td> </td>
2162 pcg 1.3 <td>
2163 pcg 1.17
2164      
2165     </td>
2166     <td>
2167     <b></b>
2168      
2169     </td>
2170 pcg 1.1 </tr>
2171     </table>
2172    
2173 pcg 1.17 <h4>
2174 pcg 1.32 <a name="C4319"></a>ORIGIN: CLIENT;
2175     MESSAGE: req_desc</h4>
2176 pcg 1.17 NUMERIC TYPE (hex): 4319<p>
2177     Request room description.
2178     </p>
2179     <table border="1" width="100%">
2180 pcg 1.1 <tr>
2181 pcg 1.17 <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     <td>
2192    
2193      
2194     </td>
2195 pcg 1.3 <td>
2196 pcg 1.17 <b></b>
2197      
2198     </td>
2199 pcg 1.1 </tr>
2200     </table>
2201    
2202 pcg 1.17 <h4>
2203 pcg 1.32 <a name="C4400"></a>ORIGIN: CLIENT;
2204     MESSAGE: send_challenge</h4>
2205 pcg 1.17 NUMERIC TYPE (hex): 4400<p>
2206     Unclear.
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     <tr>
2230     <td>black</td>
2231 pcg 1.3 <td>username</td>
2232 pcg 1.17 <td> </td>
2233 pcg 1.3 <td>
2234 pcg 1.17
2235      
2236     </td>
2237     <td>
2238     <b></b>
2239      
2240     </td>
2241 pcg 1.1 </tr>
2242     <tr>
2243     <td>white</td>
2244 pcg 1.3 <td>username</td>
2245 pcg 1.17 <td> </td>
2246 pcg 1.3 <td>
2247 pcg 1.1 More following... TREE or challenge.
2248 pcg 1.17
2249      
2250     </td>
2251     <td>
2252     <b></b>
2253      
2254     </td>
2255 pcg 1.1 </tr>
2256     </table>
2257    
2258 pcg 1.17 <h4>
2259 pcg 1.32 <a name="C4403"></a>ORIGIN: CLIENT;
2260     MESSAGE: join_game</h4>
2261 pcg 1.17 NUMERIC TYPE (hex): 4403<p>
2262     Join a game. See join_room.
2263     </p>
2264     <table border="1" width="100%">
2265 pcg 1.1 <tr>
2266 pcg 1.17 <th width="10%">NAME</th>
2267 pcg 1.37 <th width="8%">TYPE</th>
2268     <th width="4%">VALUE</th>
2269 pcg 1.17 <th>DESCRIPTION</th>
2270 pcg 1.37 <th width="10%">GUARD</th>
2271 pcg 1.1 </tr>
2272     <tr>
2273 pcg 1.5 <td>channel</td>
2274     <td>U16</td>
2275 pcg 1.17 <td> </td>
2276     <td>
2277    
2278      
2279     </td>
2280 pcg 1.3 <td>
2281 pcg 1.17 <b></b>
2282      
2283     </td>
2284 pcg 1.1 </tr>
2285     <tr>
2286 pcg 1.5 <td>user</td>
2287     <td>user</td>
2288 pcg 1.17 <td> </td>
2289     <td>
2290    
2291      
2292     </td>
2293 pcg 1.3 <td>
2294 pcg 1.17 <b></b>
2295      
2296     </td>
2297 pcg 1.1 </tr>
2298     </table>
2299    
2300 pcg 1.17 <h4>
2301 pcg 1.32 <a name="C4404"></a>ORIGIN: CLIENT;
2302     MESSAGE: part_game</h4>
2303 pcg 1.17 NUMERIC TYPE (hex): 4404<p>
2304     Leave (or kick as admin?) a certain user from a game.
2305     </p>
2306     <table border="1" width="100%">
2307 pcg 1.1 <tr>
2308 pcg 1.17 <th width="10%">NAME</th>
2309 pcg 1.37 <th width="8%">TYPE</th>
2310     <th width="4%">VALUE</th>
2311 pcg 1.17 <th>DESCRIPTION</th>
2312 pcg 1.37 <th width="10%">GUARD</th>
2313 pcg 1.1 </tr>
2314     <tr>
2315     <td>channel</td>
2316 pcg 1.3 <td>U16</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     <tr>
2328     <td>name</td>
2329 pcg 1.3 <td>username</td>
2330 pcg 1.17 <td> </td>
2331 pcg 1.3 <td>
2332 pcg 1.17
2333      
2334     </td>
2335     <td>
2336     <b></b>
2337      
2338     </td>
2339 pcg 1.1 </tr>
2340     </table>
2341    
2342 pcg 1.17 <h4>
2343 pcg 1.35 <a name="C4405"></a>ORIGIN: CLIENT;
2344     MESSAGE: set_tree</h4>
2345     NUMERIC TYPE (hex): 4405<p>
2346     Possibly upload an initial game to an empty room. Not tested.
2347    
2348     </p>
2349     <table border="1" width="100%">
2350     <tr>
2351     <th width="10%">NAME</th>
2352 pcg 1.37 <th width="8%">TYPE</th>
2353     <th width="4%">VALUE</th>
2354 pcg 1.35 <th>DESCRIPTION</th>
2355 pcg 1.37 <th width="10%">GUARD</th>
2356 pcg 1.35 </tr>
2357     <tr>
2358     <td>channel</td>
2359     <td>U16</td>
2360     <td> </td>
2361     <td>
2362    
2363      
2364     </td>
2365     <td>
2366     <b></b>
2367      
2368     </td>
2369     </tr>
2370     <tr>
2371     <td>tree</td>
2372     <td>TREE</td>
2373     <td> </td>
2374     <td>
2375    
2376      
2377     </td>
2378     <td>
2379     <b></b>
2380      
2381     </td>
2382     </tr>
2383     </table>
2384    
2385     <h4>
2386 pcg 1.32 <a name="C4406"></a>ORIGIN: CLIENT;
2387     MESSAGE: upd_tree</h4>
2388 pcg 1.27 NUMERIC TYPE (hex): 4406<p>
2389     Upload a partial game tree to the server. This is used to send moves
2390     and even in-game comments to the server. For the comments, the
2391     server prepends the username and rank.
2392    
2393 pcg 1.17 </p>
2394     <table border="1" width="100%">
2395     <tr>
2396     <th width="10%">NAME</th>
2397 pcg 1.37 <th width="8%">TYPE</th>
2398     <th width="4%">VALUE</th>
2399 pcg 1.17 <th>DESCRIPTION</th>
2400 pcg 1.37 <th width="10%">GUARD</th>
2401 pcg 1.1 </tr>
2402     <tr>
2403     <td>channel</td>
2404 pcg 1.3 <td>U16</td>
2405 pcg 1.17 <td> </td>
2406     <td>
2407    
2408      
2409     </td>
2410 pcg 1.3 <td>
2411 pcg 1.17 <b></b>
2412      
2413     </td>
2414 pcg 1.1 </tr>
2415     <tr>
2416     <td>tree</td>
2417     <td>TREE</td>
2418 pcg 1.17 <td> </td>
2419     <td>
2420    
2421      
2422     </td>
2423 pcg 1.3 <td>
2424 pcg 1.17 <b></b>
2425      
2426     </td>
2427 pcg 1.1 </tr>
2428     </table>
2429    
2430 pcg 1.17 <h4>
2431 pcg 1.32 <a name="C4408"></a>ORIGIN: CLIENT;
2432     MESSAGE: get_tree</h4>
2433 pcg 1.17 NUMERIC TYPE (hex): 4408<p>
2434 pcg 1.9 Request the game tree starting at a given node. This is used
2435     when the server only sends a partial tree (with end code "more").
2436 pcg 1.17 </p>
2437     <table border="1" width="100%">
2438     <tr>
2439     <th width="10%">NAME</th>
2440 pcg 1.37 <th width="8%">TYPE</th>
2441     <th width="4%">VALUE</th>
2442 pcg 1.17 <th>DESCRIPTION</th>
2443 pcg 1.37 <th width="10%">GUARD</th>
2444 pcg 1.1 </tr>
2445     <tr>
2446     <td>channel</td>
2447 pcg 1.3 <td>U16</td>
2448 pcg 1.17 <td> </td>
2449 pcg 1.3 <td>
2450 pcg 1.17
2451      
2452     </td>
2453     <td>
2454     <b></b>
2455      
2456     </td>
2457 pcg 1.1 </tr>
2458     <tr>
2459     <td>node</td>
2460 pcg 1.3 <td>U32</td>
2461 pcg 1.17 <td> </td>
2462     <td>
2463    
2464      
2465     </td>
2466 pcg 1.3 <td>
2467 pcg 1.17 <b></b>
2468      
2469     </td>
2470 pcg 1.1 </tr>
2471     </table>
2472    
2473 pcg 1.17 <h4>
2474 pcg 1.32 <a name="C440c"></a>ORIGIN: CLIENT;
2475     MESSAGE: claim_win</h4>
2476 pcg 1.17 NUMERIC TYPE (hex): 440c<p>
2477     Unclear.
2478     </p>
2479     <table border="1" width="100%">
2480 pcg 1.1 <tr>
2481 pcg 1.17 <th width="10%">NAME</th>
2482 pcg 1.37 <th width="8%">TYPE</th>
2483     <th width="4%">VALUE</th>
2484 pcg 1.17 <th>DESCRIPTION</th>
2485 pcg 1.37 <th width="10%">GUARD</th>
2486 pcg 1.1 </tr>
2487     <tr>
2488     <td>channel</td>
2489 pcg 1.3 <td>U16</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     <tr>
2501     <td>_byte</td>
2502 pcg 1.3 <td>U8 </td>
2503 pcg 1.17 <td> </td>
2504 pcg 1.3 <td>
2505 pcg 1.1 Player colour maybe? Unclear.
2506 pcg 1.17
2507      
2508     </td>
2509     <td>
2510     <b></b>
2511      
2512     </td>
2513 pcg 1.1 </tr>
2514     </table>
2515    
2516 pcg 1.17 <h4>
2517 pcg 1.32 <a name="C440d"></a>ORIGIN: CLIENT;
2518     MESSAGE: add_time</h4>
2519 pcg 1.17 NUMERIC TYPE (hex): 440d<p>
2520 pcg 1.9 Not checked.
2521    
2522 pcg 1.17 </p>
2523     <table border="1" width="100%">
2524     <tr>
2525     <th width="10%">NAME</th>
2526 pcg 1.37 <th width="8%">TYPE</th>
2527     <th width="4%">VALUE</th>
2528 pcg 1.17 <th>DESCRIPTION</th>
2529 pcg 1.37 <th width="10%">GUARD</th>
2530 pcg 1.1 </tr>
2531     <tr>
2532     <td>channel</td>
2533 pcg 1.3 <td>U16</td>
2534 pcg 1.17 <td> </td>
2535     <td>
2536    
2537      
2538     </td>
2539 pcg 1.3 <td>
2540 pcg 1.17 <b></b>
2541      
2542     </td>
2543 pcg 1.1 </tr>
2544     <tr>
2545     <td>time</td>
2546 pcg 1.3 <td>U32</td>
2547 pcg 1.17 <td> </td>
2548 pcg 1.3 <td>
2549 pcg 1.17
2550      
2551     </td>
2552     <td>
2553     <b></b>
2554      
2555     </td>
2556 pcg 1.1 </tr>
2557     <tr>
2558     <td>player</td>
2559 pcg 1.3 <td>U8</td>
2560 pcg 1.17 <td> </td>
2561     <td>
2562    
2563      
2564     </td>
2565 pcg 1.3 <td>
2566 pcg 1.17 <b></b>
2567      
2568     </td>
2569 pcg 1.1 </tr>
2570     </table>
2571    
2572 pcg 1.17 <h4>
2573 pcg 1.32 <a name="C440f"></a>ORIGIN: CLIENT;
2574     MESSAGE: grant_undo</h4>
2575 pcg 1.17 NUMERIC TYPE (hex): 440f<p>
2576     Can be send after a req_undo message was received to grant the undo.
2577     </p>
2578     <table border="1" width="100%">
2579 pcg 1.1 <tr>
2580 pcg 1.17 <th width="10%">NAME</th>
2581 pcg 1.37 <th width="8%">TYPE</th>
2582     <th width="4%">VALUE</th>
2583 pcg 1.17 <th>DESCRIPTION</th>
2584 pcg 1.37 <th width="10%">GUARD</th>
2585 pcg 1.1 </tr>
2586     <tr>
2587     <td>channel</td>
2588 pcg 1.3 <td>U16</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="C4410"></a>ORIGIN: CLIENT;
2603     MESSAGE: resign_game</h4>
2604 pcg 1.17 NUMERIC TYPE (hex): 4410<p>
2605     Resign the game.
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 pcg 1.3 <td>
2620 pcg 1.17
2621      
2622     </td>
2623     <td>
2624     <b></b>
2625      
2626     </td>
2627 pcg 1.1 </tr>
2628     <tr>
2629     <td>player</td>
2630 pcg 1.3 <td>U8</td>
2631 pcg 1.17 <td> </td>
2632     <td>
2633    
2634      
2635     </td>
2636 pcg 1.3 <td>
2637 pcg 1.17 <b></b>
2638      
2639     </td>
2640 pcg 1.1 </tr>
2641     </table>
2642    
2643 pcg 1.17 <h4>
2644 pcg 1.32 <a name="C441a"></a>ORIGIN: CLIENT;
2645     MESSAGE: set_teacher</h4>
2646 pcg 1.17 NUMERIC TYPE (hex): 441a<p>
2647     Change the teacher to somebody else (or possibly yourself == take it).
2648     </p>
2649     <table border="1" width="100%">
2650 pcg 1.1 <tr>
2651 pcg 1.17 <th width="10%">NAME</th>
2652 pcg 1.37 <th width="8%">TYPE</th>
2653     <th width="4%">VALUE</th>
2654 pcg 1.17 <th>DESCRIPTION</th>
2655 pcg 1.37 <th width="10%">GUARD</th>
2656 pcg 1.1 </tr>
2657     <tr>
2658     <td>channel</td>
2659 pcg 1.3 <td>U16</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     <tr>
2671     <td>name</td>
2672 pcg 1.3 <td>username</td>
2673 pcg 1.17 <td> </td>
2674     <td>
2675    
2676      
2677     </td>
2678 pcg 1.3 <td>
2679 pcg 1.17 <b></b>
2680      
2681     </td>
2682 pcg 1.1 </tr>
2683     </table>
2684    
2685 pcg 1.17 <h4>
2686 pcg 1.32 <a name="C4422"></a>ORIGIN: CLIENT;
2687 pcg 1.40 MESSAGE: allow_user</h4>
2688 pcg 1.17 NUMERIC TYPE (hex): 4422<p>
2689 pcg 1.9 Unclear. Maybe allow users to talk? No idea, really.
2690    
2691 pcg 1.17 </p>
2692     <table border="1" width="100%">
2693     <tr>
2694     <th width="10%">NAME</th>
2695 pcg 1.37 <th width="8%">TYPE</th>
2696     <th width="4%">VALUE</th>
2697 pcg 1.17 <th>DESCRIPTION</th>
2698 pcg 1.37 <th width="10%">GUARD</th>
2699 pcg 1.1 </tr>
2700     <tr>
2701     <td>channel</td>
2702 pcg 1.3 <td>U16</td>
2703 pcg 1.17 <td> </td>
2704     <td>
2705    
2706      
2707     </td>
2708 pcg 1.3 <td>
2709 pcg 1.17 <b></b>
2710      
2711     </td>
2712 pcg 1.1 </tr>
2713     <tr>
2714     <td>othername</td>
2715 pcg 1.3 <td>username</td>
2716 pcg 1.17 <td> </td>
2717 pcg 1.3 <td>
2718 pcg 1.17
2719      
2720     </td>
2721     <td>
2722     <b></b>
2723      
2724     </td>
2725 pcg 1.1 </tr>
2726     <tr>
2727     <td>name</td>
2728 pcg 1.3 <td>username</td>
2729 pcg 1.17 <td> </td>
2730     <td>; # gives user access to the game (to what? ;)
2731    
2732      
2733     </td>
2734 pcg 1.3 <td>
2735 pcg 1.17 <b></b>
2736      
2737     </td>
2738 pcg 1.1 </tr>
2739     </table>
2740    
2741 pcg 1.17 <h4>
2742 pcg 1.32 <a name="C4423"></a>ORIGIN: CLIENT;
2743     MESSAGE: set_privacy</h4>
2744 pcg 1.17 NUMERIC TYPE (hex): 4423<p>
2745     Probably sets the "quiet" flag. Not checked.
2746     </p>
2747     <table border="1" width="100%">
2748 pcg 1.1 <tr>
2749 pcg 1.17 <th width="10%">NAME</th>
2750 pcg 1.37 <th width="8%">TYPE</th>
2751     <th width="4%">VALUE</th>
2752 pcg 1.17 <th>DESCRIPTION</th>
2753 pcg 1.37 <th width="10%">GUARD</th>
2754 pcg 1.1 </tr>
2755     <tr>
2756     <td>channel</td>
2757 pcg 1.3 <td>U16</td>
2758 pcg 1.17 <td> </td>
2759     <td>
2760    
2761      
2762     </td>
2763 pcg 1.3 <td>
2764 pcg 1.17 <b></b>
2765      
2766     </td>
2767 pcg 1.1 </tr>
2768     <tr>
2769     <td>private</td>
2770 pcg 1.3 <td>U8</td>
2771 pcg 1.17 <td> </td>
2772 pcg 1.3 <td>
2773 pcg 1.17
2774      
2775     </td>
2776     <td>
2777     <b></b>
2778      
2779     </td>
2780 pcg 1.1 </tr>
2781     </table>
2782    
2783 pcg 1.17 <h4>
2784 pcg 1.32 <a name="C4429"></a>ORIGIN: CLIENT;
2785     MESSAGE: reject_challenge</h4>
2786 pcg 1.17 NUMERIC TYPE (hex): 4429<p>
2787 pcg 1.9 Reject a challenge from a given user. Not checked.
2788    
2789 pcg 1.17 </p>
2790     <table border="1" width="100%">
2791     <tr>
2792     <th width="10%">NAME</th>
2793 pcg 1.37 <th width="8%">TYPE</th>
2794     <th width="4%">VALUE</th>
2795 pcg 1.17 <th>DESCRIPTION</th>
2796 pcg 1.37 <th width="10%">GUARD</th>
2797 pcg 1.1 </tr>
2798     <tr>
2799     <td>channel</td>
2800 pcg 1.3 <td>U16</td>
2801 pcg 1.17 <td> </td>
2802     <td>
2803    
2804      
2805     </td>
2806 pcg 1.3 <td>
2807 pcg 1.17 <b></b>
2808      
2809     </td>
2810 pcg 1.1 </tr>
2811     <tr>
2812     <td>name</td>
2813 pcg 1.3 <td>username</td>
2814 pcg 1.17 <td> </td>
2815     <td>
2816    
2817      
2818     </td>
2819 pcg 1.3 <td>
2820 pcg 1.17 <b></b>
2821      
2822     </td>
2823 pcg 1.1 </tr>
2824     </table>
2825    
2826 pcg 1.17 <h4>
2827 pcg 1.32 <a name="C4433"></a>ORIGIN: CLIENT;
2828     MESSAGE: req_result</h4>
2829 pcg 1.17 NUMERIC TYPE (hex): 4433<p>
2830 pcg 1.9 I forgot.
2831    
2832 pcg 1.17 </p>
2833     <table border="1" width="100%">
2834     <tr>
2835     <th width="10%">NAME</th>
2836 pcg 1.37 <th width="8%">TYPE</th>
2837     <th width="4%">VALUE</th>
2838 pcg 1.17 <th>DESCRIPTION</th>
2839 pcg 1.37 <th width="10%">GUARD</th>
2840 pcg 1.1 </tr>
2841     <tr>
2842     <td>channel</td>
2843 pcg 1.3 <td>U16</td>
2844 pcg 1.35 <td> </td>
2845     <td>
2846    
2847      
2848     </td>
2849     <td>
2850     <b></b>
2851      
2852     </td>
2853     </tr>
2854     </table>
2855    
2856     <h4>
2857     <a name="C4436"></a>ORIGIN: CLIENT;
2858     MESSAGE: msg_game</h4>
2859     NUMERIC TYPE (hex): 4436<p>
2860     </p>
2861     <table border="1" width="100%">
2862     <tr>
2863     <th width="10%">NAME</th>
2864 pcg 1.37 <th width="8%">TYPE</th>
2865     <th width="4%">VALUE</th>
2866 pcg 1.35 <th>DESCRIPTION</th>
2867 pcg 1.37 <th width="10%">GUARD</th>
2868 pcg 1.35 </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     <tr>
2883     <td>message</td>
2884     <td>STRING</td>
2885 pcg 1.17 <td> </td>
2886 pcg 1.3 <td>
2887 pcg 1.17
2888      
2889     </td>
2890     <td>
2891     <b></b>
2892      
2893     </td>
2894 pcg 1.1 </tr>
2895     </table>
2896    
2897 pcg 1.37 <h4>
2898     <a name="Cffff"></a>ORIGIN: CLIENT;
2899     MESSAGE: quit</h4>
2900     NUMERIC TYPE (hex): ffff<p>
2901     <p>Sent by the client just before it logs out.</p>
2902     </p>
2903     <table border="1" width="100%">
2904     <tr>
2905     <th width="10%">NAME</th>
2906     <th width="8%">TYPE</th>
2907     <th width="4%">VALUE</th>
2908     <th>DESCRIPTION</th>
2909     <th width="10%">GUARD</th>
2910     </tr>
2911     </table>
2912    
2913 pcg 1.32 <h2>Structs mainly used in messages send by the server</h2>
2914 pcg 1.1
2915 pcg 1.3 <h4>STRUCTURE challenge_defaults</h4>
2916 pcg 1.17 <p>
2917     Send soon after log-in to set the defaults for game challenges.
2918     </p>
2919     <table border="1" width="100%">
2920 pcg 1.1 <tr>
2921 pcg 1.17 <th width="10%">NAME</th>
2922 pcg 1.37 <th width="8%">TYPE</th>
2923     <th width="4%">VALUE</th>
2924 pcg 1.17 <th>DESCRIPTION</th>
2925 pcg 1.37 <th width="10%">GUARD</th>
2926 pcg 1.1 </tr>
2927     <tr>
2928     <td>gametype</td>
2929 pcg 1.3 <td>U32</td>
2930 pcg 1.17 <td> </td>
2931     <td>
2932    
2933      
2934     </td>
2935 pcg 1.3 <td>
2936 pcg 1.17 <b></b>
2937      
2938     </td>
2939 pcg 1.1 </tr>
2940     <tr>
2941     <td>size</td>
2942 pcg 1.3 <td>U32</td>
2943 pcg 1.17 <td> </td>
2944     <td>
2945    
2946      
2947     </td>
2948 pcg 1.3 <td>
2949 pcg 1.17 <b></b>
2950      
2951     </td>
2952 pcg 1.1 </tr>
2953     <tr>
2954     <td>timesys</td>
2955 pcg 1.3 <td>U32</td>
2956 pcg 1.17 <td> </td>
2957     <td>
2958    
2959      
2960     </td>
2961 pcg 1.3 <td>
2962 pcg 1.17 <b></b>
2963      
2964     </td>
2965 pcg 1.1 </tr>
2966     <tr>
2967     <td>time</td>
2968 pcg 1.3 <td>U32</td>
2969 pcg 1.17 <td> </td>
2970     <td>
2971    
2972      
2973     </td>
2974 pcg 1.3 <td>
2975 pcg 1.17 <b></b>
2976      
2977     </td>
2978 pcg 1.1 </tr>
2979     <tr>
2980     <td>byo_time</td>
2981 pcg 1.3 <td>U32</td>
2982 pcg 1.17 <td> </td>
2983     <td>
2984    
2985      
2986     </td>
2987 pcg 1.3 <td>
2988 pcg 1.17 <b></b>
2989      
2990     </td>
2991 pcg 1.1 </tr>
2992     <tr>
2993     <td>byo_periods</td>
2994 pcg 1.3 <td>U32</td>
2995 pcg 1.17 <td> </td>
2996     <td>
2997    
2998      
2999     </td>
3000 pcg 1.3 <td>
3001 pcg 1.17 <b></b>
3002      
3003     </td>
3004 pcg 1.1 </tr>
3005     <tr>
3006     <td>can_time</td>
3007 pcg 1.3 <td>U32</td>
3008 pcg 1.17 <td> </td>
3009     <td>
3010    
3011      
3012     </td>
3013 pcg 1.3 <td>
3014 pcg 1.17 <b></b>
3015      
3016     </td>
3017 pcg 1.1 </tr>
3018     <tr>
3019     <td>can_stones</td>
3020 pcg 1.3 <td>U32</td>
3021 pcg 1.17 <td> </td>
3022     <td>
3023    
3024      
3025     </td>
3026 pcg 1.3 <td>
3027 pcg 1.17 <b></b>
3028      
3029     </td>
3030 pcg 1.1 </tr>
3031     </table>
3032    
3033 pcg 1.3 <h4>STRUCTURE challenge</h4>
3034     CLASS: KGS::Challenge<br />
3035 pcg 1.17 <p>
3036 pcg 1.9 A challenge.
3037    
3038 pcg 1.17 </p>
3039     <table border="1" width="100%">
3040     <tr>
3041     <th width="10%">NAME</th>
3042 pcg 1.37 <th width="8%">TYPE</th>
3043     <th width="4%">VALUE</th>
3044 pcg 1.17 <th>DESCRIPTION</th>
3045 pcg 1.37 <th width="10%">GUARD</th>
3046 pcg 1.1 </tr>
3047     <tr>
3048     <td>user1</td>
3049     <td>user</td>
3050 pcg 1.17 <td> </td>
3051 pcg 1.3 <td>
3052 pcg 1.17
3053      
3054     </td>
3055     <td>
3056     <b></b>
3057      
3058     </td>
3059 pcg 1.1 </tr>
3060     <tr>
3061     <td>user2</td>
3062     <td>user</td>
3063 pcg 1.17 <td> </td>
3064     <td>
3065    
3066      
3067     </td>
3068 pcg 1.3 <td>
3069 pcg 1.17 <b></b>
3070      
3071     </td>
3072 pcg 1.1 </tr>
3073     <tr>
3074     <td>gametype</td>
3075 pcg 1.3 <td>U32</td>
3076 pcg 1.17 <td> </td>
3077 pcg 1.3 <td>
3078 pcg 1.17
3079      
3080     </td>
3081     <td>
3082     <b></b>
3083      
3084     </td>
3085 pcg 1.1 </tr>
3086     <tr>
3087     <td>rules</td>
3088     <td>rules</td>
3089 pcg 1.17 <td> </td>
3090 pcg 1.3 <td>
3091 pcg 1.1 Maybe the rules" are in TREE format. I forgot.
3092 pcg 1.17
3093      
3094     </td>
3095     <td>
3096     <b></b>
3097      
3098     </td>
3099 pcg 1.1 </tr>
3100     </table>
3101    
3102 pcg 1.3 <h4>STRUCTURE game</h4>
3103     CLASS: KGS::Game<br />
3104 pcg 1.17 <p>
3105 pcg 1.9 Basic information about a game. Used in rooms for the gamelist and
3106     in games to detect when a game is saved, changed type (e.g. R =&gt; D)
3107     etc.
3108    
3109 pcg 1.17 </p>
3110     <table border="1" width="100%">
3111     <tr>
3112     <th width="10%">NAME</th>
3113 pcg 1.37 <th width="8%">TYPE</th>
3114     <th width="4%">VALUE</th>
3115 pcg 1.17 <th>DESCRIPTION</th>
3116 pcg 1.37 <th width="10%">GUARD</th>
3117 pcg 1.1 </tr>
3118     <tr>
3119     <td>channel</td>
3120 pcg 1.3 <td>U16</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 pcg 1.3 <td>type</td>
3133 pcg 1.25 <td>U8</td>
3134 pcg 1.17 <td> </td>
3135     <td>
3136    
3137      
3138     </td>
3139 pcg 1.3 <td>
3140 pcg 1.17 <b></b>
3141      
3142     </td>
3143 pcg 1.1 </tr>
3144     <tr>
3145     <td>user1</td>
3146     <td>user</td>
3147 pcg 1.17 <td> </td>
3148 pcg 1.3 <td>
3149 pcg 1.1 White
3150 pcg 1.17
3151      
3152     </td>
3153     <td>
3154     <b></b>
3155      
3156     </td>
3157 pcg 1.1 </tr>
3158     <tr>
3159     <td>user2</td>
3160     <td>user</td>
3161 pcg 1.17 <td> </td>
3162 pcg 1.3 <td>
3163 pcg 1.1 Black
3164 pcg 1.17
3165      
3166     </td>
3167     <td>
3168     <b></b>
3169      
3170     </td>
3171 pcg 1.1 </tr>
3172     <tr>
3173     <td>user3</td>
3174     <td>user</td>
3175 pcg 1.17 <td> </td>
3176 pcg 1.3 <td>
3177 pcg 1.1 Owner
3178 pcg 1.17
3179      
3180     </td>
3181     <td>
3182     <b></b>
3183      
3184     </td>
3185 pcg 1.1 </tr>
3186     <tr>
3187     <td>size</td>
3188 pcg 1.25 <td>U8</td>
3189 pcg 1.17 <td> </td>
3190     <td>
3191    
3192      
3193     </td>
3194 pcg 1.3 <td>
3195 pcg 1.17 <b></b>
3196      
3197     </td>
3198 pcg 1.1 </tr>
3199     <tr>
3200     <td>handicap</td>
3201 pcg 1.25 <td>I8</td>
3202 pcg 1.17 <td> </td>
3203 pcg 1.3 <td>
3204 pcg 1.1 &lt; 0 not fully setup
3205 pcg 1.17
3206      
3207     </td>
3208     <td>
3209     <b></b>
3210      
3211     </td>
3212 pcg 1.1 </tr>
3213     <tr>
3214     <td>komi</td>
3215 pcg 1.25 <td>komi16</td>
3216 pcg 1.17 <td> </td>
3217     <td>
3218    
3219      
3220     </td>
3221 pcg 1.3 <td>
3222 pcg 1.17 <b></b>
3223      
3224     </td>
3225 pcg 1.1 </tr>
3226     <tr>
3227     <td>moves</td>
3228 pcg 1.13 <td>I16</td>
3229 pcg 1.17 <td> </td>
3230 pcg 1.3 <td>
3231 pcg 1.12 This field reflects either the movenum or the score, sorry, not even guards help, as
3232 pcg 1.13 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
3233 pcg 1.26 score (NOT score16!) (arg²).
3234 pcg 1.17
3235      
3236     </td>
3237     <td>
3238     <b></b>
3239      
3240     </td>
3241 pcg 1.1 </tr>
3242     <tr>
3243     <td>flags</td>
3244 pcg 1.3 <td>U16</td>
3245 pcg 1.17 <td> </td>
3246     <td>
3247    
3248      
3249     </td>
3250 pcg 1.3 <td>
3251 pcg 1.17 <b></b>
3252      
3253     </td>
3254 pcg 1.1 </tr>
3255     <tr>
3256     <td>observers</td>
3257 pcg 1.3 <td>U32</td>
3258 pcg 1.17 <td> </td>
3259     <td>
3260    
3261      
3262     </td>
3263 pcg 1.3 <td>
3264 pcg 1.17 <b></b>
3265      
3266     </td>
3267 pcg 1.1 </tr>
3268     <tr>
3269     <td>saved</td>
3270 pcg 1.3 <td>flag</td>
3271 pcg 1.17 <td> </td>
3272     <td>
3273    
3274      
3275     </td>
3276 pcg 1.3 <td>
3277 pcg 1.17 <b></b>
3278      
3279     </td>
3280 pcg 1.1 </tr>
3281     <tr>
3282     <td>notes</td>
3283     <td>STRING</td>
3284 pcg 1.17 <td> </td>
3285     <td>
3286    
3287      
3288     </td>
3289 pcg 1.3 <td>
3290 pcg 1.17 <b>handicap</b> &lt; 0
3291      
3292     </td>
3293 pcg 1.1 </tr>
3294     </table>
3295    
3296 pcg 1.3 <h4>STRUCTURE room_obs</h4>
3297 pcg 1.17 <p>
3298 pcg 1.9 Obsolete.
3299    
3300 pcg 1.17 </p>
3301     <table border="1" width="100%">
3302     <tr>
3303     <th width="10%">NAME</th>
3304 pcg 1.37 <th width="8%">TYPE</th>
3305     <th width="4%">VALUE</th>
3306 pcg 1.17 <th>DESCRIPTION</th>
3307 pcg 1.37 <th width="10%">GUARD</th>
3308 pcg 1.1 </tr>
3309     <tr>
3310     <td>name</td>
3311 pcg 1.3 <td>roomname</td>
3312 pcg 1.17 <td> </td>
3313 pcg 1.3 <td>
3314 pcg 1.17
3315      
3316     </td>
3317     <td>
3318     <b></b>
3319      
3320     </td>
3321 pcg 1.1 </tr>
3322     <tr>
3323     <td>channel</td>
3324 pcg 1.3 <td>U16</td>
3325 pcg 1.17 <td> </td>
3326     <td>
3327    
3328      
3329     </td>
3330 pcg 1.3 <td>
3331 pcg 1.17 <b></b>
3332      
3333     </td>
3334 pcg 1.1 </tr>
3335     <tr>
3336     <td>flags</td>
3337 pcg 1.3 <td>U32</td>
3338 pcg 1.17 <td> </td>
3339 pcg 1.3 <td>
3340 pcg 1.17
3341      
3342     </td>
3343     <td>
3344     <b></b>
3345      
3346     </td>
3347 pcg 1.1 </tr>
3348     <tr>
3349     <td>users</td>
3350 pcg 1.3 <td>U32</td>
3351 pcg 1.17 <td> </td>
3352     <td>
3353    
3354      
3355     </td>
3356 pcg 1.3 <td>
3357 pcg 1.17 <b></b>
3358      
3359     </td>
3360 pcg 1.1 </tr>
3361     </table>
3362    
3363 pcg 1.3 <h4>STRUCTURE room</h4>
3364     CLASS: KGS::Room<br />
3365 pcg 1.17 <p>
3366     </p>
3367     <table border="1" width="100%">
3368 pcg 1.1 <tr>
3369 pcg 1.17 <th width="10%">NAME</th>
3370 pcg 1.37 <th width="8%">TYPE</th>
3371     <th width="4%">VALUE</th>
3372 pcg 1.17 <th>DESCRIPTION</th>
3373 pcg 1.37 <th width="10%">GUARD</th>
3374 pcg 1.1 </tr>
3375     <tr>
3376     <td>channel</td>
3377 pcg 1.3 <td>U16</td>
3378 pcg 1.17 <td> </td>
3379     <td>
3380    
3381      
3382     </td>
3383 pcg 1.3 <td>
3384 pcg 1.17 <b></b>
3385      
3386     </td>
3387 pcg 1.1 </tr>
3388     <tr>
3389     <td>flags</td>
3390 pcg 1.3 <td>U8</td>
3391 pcg 1.17 <td> </td>
3392     <td>
3393    
3394      
3395     </td>
3396 pcg 1.3 <td>
3397 pcg 1.17 <b></b>
3398      
3399     </td>
3400 pcg 1.1 </tr>
3401     <tr>
3402     <td>group</td>
3403 pcg 1.3 <td>U8</td>
3404 pcg 1.17 <td> </td>
3405     <td>
3406    
3407      
3408     </td>
3409 pcg 1.3 <td>
3410 pcg 1.17 <b></b>
3411      
3412     </td>
3413 pcg 1.1 </tr>
3414     <tr>
3415     <td>users</td>
3416 pcg 1.3 <td>U16</td>
3417 pcg 1.17 <td> </td>
3418     <td>
3419    
3420      
3421     </td>
3422 pcg 1.3 <td>
3423 pcg 1.17 <b></b>
3424      
3425     </td>
3426 pcg 1.1 </tr>
3427     <tr>
3428     <td>games</td>
3429 pcg 1.3 <td>U16</td>
3430 pcg 1.17 <td> </td>
3431     <td>
3432    
3433      
3434     </td>
3435 pcg 1.3 <td>
3436 pcg 1.17 <b></b>
3437      
3438     </td>
3439 pcg 1.1 </tr>
3440     <tr>
3441     <td>name</td>
3442     <td>STRING</td>
3443 pcg 1.17 <td> </td>
3444     <td>
3445    
3446      
3447     </td>
3448 pcg 1.3 <td>
3449 pcg 1.17 <b></b>
3450      
3451     </td>
3452 pcg 1.1 </tr>
3453     </table>
3454    
3455 pcg 1.10 <h4>STRUCTURE scorevalues</h4>
3456 pcg 1.3 CLASS: KGS::Score<br />
3457 pcg 1.17 <p>
3458     </p>
3459     <table border="1" width="100%">
3460     <tr>
3461     <th width="10%">NAME</th>
3462 pcg 1.37 <th width="8%">TYPE</th>
3463     <th width="4%">VALUE</th>
3464 pcg 1.17 <th>DESCRIPTION</th>
3465 pcg 1.37 <th width="10%">GUARD</th>
3466 pcg 1.1 </tr>
3467     <tr>
3468     <td>score</td>
3469 pcg 1.11 <td>score32</td>
3470 pcg 1.17 <td> </td>
3471     <td>
3472    
3473      
3474     </td>
3475 pcg 1.3 <td>
3476 pcg 1.17 <b></b>
3477      
3478     </td>
3479 pcg 1.1 </tr>
3480     <tr>
3481     <td>territory</td>
3482 pcg 1.3 <td>U32</td>
3483 pcg 1.17 <td> </td>
3484     <td>
3485    
3486      
3487     </td>
3488 pcg 1.3 <td>
3489 pcg 1.17 <b></b>
3490      
3491     </td>
3492 pcg 1.1 </tr>
3493     <tr>
3494     <td>captures</td>
3495 pcg 1.3 <td>U32</td>
3496 pcg 1.17 <td> </td>
3497     <td>
3498    
3499      
3500     </td>
3501 pcg 1.3 <td>
3502 pcg 1.17 <b></b>
3503      
3504     </td>
3505 pcg 1.1 </tr>
3506     <tr>
3507     <td>i3</td>
3508 pcg 1.3 <td>U32</td>
3509 pcg 1.17 <td> </td>
3510     <td>
3511    
3512      
3513     </td>
3514 pcg 1.3 <td>
3515 pcg 1.17 <b></b>
3516      
3517     </td>
3518 pcg 1.1 </tr>
3519     <tr>
3520     <td>f2</td>
3521 pcg 1.3 <td>U32</td>
3522 pcg 1.17 <td> </td>
3523     <td>
3524    
3525      
3526     </td>
3527 pcg 1.3 <td>
3528 pcg 1.17 <b></b>
3529      
3530     </td>
3531 pcg 1.1 </tr>
3532     <tr>
3533     <td>komi</td>
3534 pcg 1.19 <td>komi324</td>
3535 pcg 1.17 <td> </td>
3536     <td>
3537    
3538      
3539     </td>
3540 pcg 1.3 <td>
3541 pcg 1.17 <b></b>
3542      
3543     </td>
3544 pcg 1.1 </tr>
3545     <tr>
3546     <td>i4</td>
3547 pcg 1.3 <td>U32</td>
3548 pcg 1.17 <td> </td>
3549 pcg 1.3 <td>
3550     Apparently the i3, f2, i4 are zero.
3551 pcg 1.17
3552      
3553     </td>
3554     <td>
3555     <b></b>
3556      
3557     </td>
3558 pcg 1.1 </tr>
3559     </table>
3560    
3561 pcg 1.14 <h4>STRUCTURE game_record</h4>
3562     CLASS: KGS::GameRecord<br />
3563 pcg 1.17 <p>
3564 pcg 1.32 <p>A single game record entry, as seen in <a href="#S0008">userinfo(0008)</a>.</p>
3565 pcg 1.17 </p>
3566     <table border="1" width="100%">
3567 pcg 1.14 <tr>
3568 pcg 1.17 <th width="10%">NAME</th>
3569 pcg 1.37 <th width="8%">TYPE</th>
3570     <th width="4%">VALUE</th>
3571 pcg 1.17 <th>DESCRIPTION</th>
3572 pcg 1.37 <th width="10%">GUARD</th>
3573 pcg 1.14 </tr>
3574     <tr>
3575     <td>timestamp</td>
3576     <td>timestamp</td>
3577 pcg 1.17 <td> </td>
3578 pcg 1.14 <td>
3579     Time this game was played.
3580 pcg 1.17
3581      
3582     </td>
3583     <td>
3584     <b></b>
3585      
3586     </td>
3587 pcg 1.14 </tr>
3588     <tr>
3589 pcg 1.42 <td>flags1</td>
3590 pcg 1.14 <td>U8</td>
3591 pcg 1.17 <td> </td>
3592 pcg 1.14 <td>
3593 pcg 1.17
3594      
3595     </td>
3596     <td>
3597     <b></b>
3598      
3599     </td>
3600 pcg 1.14 </tr>
3601     <tr>
3602     <td>user1</td>
3603     <td>user</td>
3604 pcg 1.17 <td> </td>
3605 pcg 1.14 <td>
3606     White, flags contain low 8 bits of revision (bits 16-23).
3607 pcg 1.17
3608      
3609     </td>
3610     <td>
3611     <b></b>
3612      
3613     </td>
3614 pcg 1.14 </tr>
3615     <tr>
3616     <td>user2</td>
3617     <td>user</td>
3618 pcg 1.17 <td> </td>
3619 pcg 1.14 <td>
3620     Black, flags contain high 8 bits of revision (bits 16-23).
3621 pcg 1.17
3622      
3623     </td>
3624     <td>
3625     <b></b>
3626      
3627     </td>
3628 pcg 1.14 </tr>
3629     <tr>
3630     <td>user3</td>
3631     <td>user</td>
3632 pcg 1.17 <td> </td>
3633 pcg 1.14 <td>
3634 pcg 1.34
3635 pcg 1.17
3636      
3637     </td>
3638     <td>
3639     <b></b>
3640      
3641     </td>
3642 pcg 1.14 </tr>
3643     <tr>
3644 pcg 1.42 <td>flags2</td>
3645     <td>U16</td>
3646 pcg 1.17 <td> </td>
3647     <td>
3648    
3649      
3650     </td>
3651 pcg 1.14 <td>
3652 pcg 1.17 <b></b>
3653      
3654     </td>
3655 pcg 1.14 </tr>
3656     <tr>
3657     <td>score</td>
3658     <td>score16</td>
3659 pcg 1.17 <td> </td>
3660 pcg 1.14 <td>
3661 pcg 1.17
3662      
3663     </td>
3664     <td>
3665     <b></b>
3666      
3667     </td>
3668 pcg 1.14 </tr>
3669     <tr>
3670 pcg 1.42 <td>flags3</td>
3671 pcg 1.14 <td>U8</td>
3672 pcg 1.17 <td> </td>
3673 pcg 1.14 <td>
3674 pcg 1.34
3675    
3676 pcg 1.17  
3677     </td>
3678     <td>
3679     <b></b>
3680      
3681     </td>
3682 pcg 1.14 </tr>
3683     </table>
3684    
3685 pcg 1.32 <h2>Server-generated messages</h2>
3686 pcg 1.1
3687 pcg 1.17 <h4>
3688 pcg 1.32 <a name="S0001"></a>ORIGIN: SERVER;
3689     MESSAGE: login</h4>
3690 pcg 1.17 NUMERIC TYPE (hex): 0001
3691     (possibly in response to
3692 pcg 1.32 <a href="#C0000">login(0000)</a>
3693 pcg 1.17 )
3694     <p>
3695     </p>
3696     <table border="1" width="100%">
3697     <tr>
3698     <th width="10%">NAME</th>
3699 pcg 1.37 <th width="8%">TYPE</th>
3700     <th width="4%">VALUE</th>
3701 pcg 1.17 <th>DESCRIPTION</th>
3702 pcg 1.37 <th width="10%">GUARD</th>
3703 pcg 1.1 </tr>
3704     <tr>
3705 pcg 1.40 <td>message</td>
3706 pcg 1.1 <td>CONSTANT</td>
3707 pcg 1.40 <td>login successful </td>
3708 pcg 1.17 <td>
3709    
3710      
3711     </td>
3712 pcg 1.3 <td>
3713 pcg 1.17 <b></b>
3714      
3715     </td>
3716 pcg 1.1 </tr>
3717     <tr>
3718     <td>success</td>
3719     <td>CONSTANT</td>
3720 pcg 1.17 <td>1 </td>
3721 pcg 1.3 <td>
3722 pcg 1.17
3723      
3724     </td>
3725     <td>
3726     <b></b>
3727      
3728     </td>
3729 pcg 1.1 </tr>
3730     </table>
3731    
3732 pcg 1.17 <h4>
3733 pcg 1.32 <a name="S0002"></a>ORIGIN: SERVER;
3734     MESSAGE: login</h4>
3735 pcg 1.17 NUMERIC TYPE (hex): 0002
3736     (possibly in response to
3737 pcg 1.32 <a href="#C0000">login(0000)</a>
3738 pcg 1.17 )
3739     <p>
3740     </p>
3741     <table border="1" width="100%">
3742     <tr>
3743     <th width="10%">NAME</th>
3744 pcg 1.37 <th width="8%">TYPE</th>
3745     <th width="4%">VALUE</th>
3746 pcg 1.17 <th>DESCRIPTION</th>
3747 pcg 1.37 <th width="10%">GUARD</th>
3748 pcg 1.1 </tr>
3749     <tr>
3750 pcg 1.40 <td>message</td>
3751 pcg 1.1 <td>CONSTANT</td>
3752 pcg 1.40 <td>login successful: client version is outdated. </td>
3753 pcg 1.3 <td>
3754 pcg 1.17
3755      
3756     </td>
3757     <td>
3758     <b></b>
3759      
3760     </td>
3761 pcg 1.1 </tr>
3762     <tr>
3763     <td>success</td>
3764     <td>CONSTANT</td>
3765 pcg 1.17 <td>1 </td>
3766     <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     </table>
3776    
3777 pcg 1.17 <h4>
3778 pcg 1.32 <a name="S0003"></a>ORIGIN: SERVER;
3779     MESSAGE: login</h4>
3780 pcg 1.17 NUMERIC TYPE (hex): 0003
3781     (possibly in response to
3782 pcg 1.32 <a href="#C0000">login(0000)</a>
3783 pcg 1.17 )
3784     <p>
3785     </p>
3786     <table border="1" width="100%">
3787     <tr>
3788     <th width="10%">NAME</th>
3789 pcg 1.37 <th width="8%">TYPE</th>
3790     <th width="4%">VALUE</th>
3791 pcg 1.17 <th>DESCRIPTION</th>
3792 pcg 1.37 <th width="10%">GUARD</th>
3793 pcg 1.1 </tr>
3794     <tr>
3795 pcg 1.40 <td>message</td>
3796 pcg 1.1 <td>CONSTANT</td>
3797 pcg 1.40 <td>login failed: client version out of date </td>
3798 pcg 1.3 <td>
3799 pcg 1.1 ** maybe more following? **
3800 pcg 1.17
3801      
3802     </td>
3803     <td>
3804     <b></b>
3805      
3806     </td>
3807 pcg 1.1 </tr>
3808     </table>
3809    
3810 pcg 1.17 <h4>
3811 pcg 1.32 <a name="S0004"></a>ORIGIN: SERVER;
3812     MESSAGE: login</h4>
3813 pcg 1.17 NUMERIC TYPE (hex): 0004
3814     (possibly in response to
3815 pcg 1.32 <a href="#C0000">login(0000)</a>
3816 pcg 1.17 )
3817     <p>
3818     </p>
3819     <table border="1" width="100%">
3820     <tr>
3821     <th width="10%">NAME</th>
3822 pcg 1.37 <th width="8%">TYPE</th>
3823     <th width="4%">VALUE</th>
3824 pcg 1.17 <th>DESCRIPTION</th>
3825 pcg 1.37 <th width="10%">GUARD</th>
3826 pcg 1.1 </tr>
3827     <tr>
3828 pcg 1.40 <td>message</td>
3829 pcg 1.1 <td>CONSTANT</td>
3830 pcg 1.40 <td>login failed: wrong password </td>
3831 pcg 1.3 <td>
3832 pcg 1.1 ** maybe more following? **
3833 pcg 1.17
3834      
3835     </td>
3836     <td>
3837     <b></b>
3838      
3839     </td>
3840 pcg 1.1 </tr>
3841     </table>
3842    
3843 pcg 1.17 <h4>
3844 pcg 1.32 <a name="S0005"></a>ORIGIN: SERVER;
3845     MESSAGE: login</h4>
3846 pcg 1.17 NUMERIC TYPE (hex): 0005
3847     (possibly in response to
3848 pcg 1.32 <a href="#C0000">login(0000)</a>
3849 pcg 1.17 )
3850     <p>
3851     </p>
3852     <table border="1" width="100%">
3853     <tr>
3854     <th width="10%">NAME</th>
3855 pcg 1.37 <th width="8%">TYPE</th>
3856     <th width="4%">VALUE</th>
3857 pcg 1.17 <th>DESCRIPTION</th>
3858 pcg 1.37 <th width="10%">GUARD</th>
3859 pcg 1.1 </tr>
3860     <tr>
3861 pcg 1.40 <td>message</td>
3862 pcg 1.1 <td>CONSTANT</td>
3863 pcg 1.40 <td>login failed: specified user does not exist </td>
3864 pcg 1.3 <td>
3865 pcg 1.17
3866      
3867     </td>
3868     <td>
3869     <b></b>
3870      
3871     </td>
3872 pcg 1.1 </tr>
3873     </table>
3874    
3875 pcg 1.17 <h4>
3876 pcg 1.32 <a name="S0006"></a>ORIGIN: SERVER;
3877     MESSAGE: login</h4>
3878 pcg 1.17 NUMERIC TYPE (hex): 0006
3879     (possibly in response to
3880 pcg 1.32 <a href="#C0000">login(0000)</a>
3881 pcg 1.17 )
3882     <p>
3883     </p>
3884     <table border="1" width="100%">
3885     <tr>
3886     <th width="10%">NAME</th>
3887 pcg 1.37 <th width="8%">TYPE</th>
3888     <th width="4%">VALUE</th>
3889 pcg 1.17 <th>DESCRIPTION</th>
3890 pcg 1.37 <th width="10%">GUARD</th>
3891 pcg 1.1 </tr>
3892     <tr>
3893 pcg 1.40 <td>message</td>
3894 pcg 1.1 <td>CONSTANT</td>
3895 pcg 1.40 <td>login failed: registered user of same name exists </td>
3896 pcg 1.3 <td>
3897 pcg 1.17
3898      
3899     </td>
3900     <td>
3901     <b></b>
3902      
3903     </td>
3904 pcg 1.1 </tr>
3905     </table>
3906    
3907 pcg 1.17 <h4>
3908 pcg 1.32 <a name="S0008"></a>ORIGIN: SERVER;
3909     MESSAGE: userinfo</h4>
3910 pcg 1.17 NUMERIC TYPE (hex): 0008
3911     (possibly in response to
3912 pcg 1.32 <a href="#C0007">req_userinfo(0007)</a>
3913 pcg 1.17 )
3914     <p>
3915     User info.
3916     </p>
3917     <table border="1" width="100%">
3918 pcg 1.14 <tr>
3919 pcg 1.17 <th width="10%">NAME</th>
3920 pcg 1.37 <th width="8%">TYPE</th>
3921     <th width="4%">VALUE</th>
3922 pcg 1.17 <th>DESCRIPTION</th>
3923 pcg 1.37 <th width="10%">GUARD</th>
3924 pcg 1.14 </tr>
3925     <tr>
3926 pcg 1.33 <td>_unused0</td>
3927     <td>flag</td>
3928     <td> </td>
3929     <td>
3930    
3931      
3932     </td>
3933     <td>
3934     <b></b>
3935      
3936     </td>
3937     </tr>
3938     <tr>
3939 pcg 1.14 <td>user</td>
3940     <td>user</td>
3941 pcg 1.17 <td> </td>
3942     <td>
3943    
3944      
3945     </td>
3946 pcg 1.14 <td>
3947 pcg 1.17 <b></b>
3948      
3949     </td>
3950 pcg 1.14 </tr>
3951     <tr>
3952 pcg 1.33 <td>_unused1</td>
3953 pcg 1.15 <td>U64</td>
3954 pcg 1.17 <td> </td>
3955     <td>
3956    
3957      
3958     </td>
3959 pcg 1.14 <td>
3960 pcg 1.17 <b></b>
3961      
3962     </td>
3963 pcg 1.14 </tr>
3964     <tr>
3965     <td>realname</td>
3966     <td>realname</td>
3967 pcg 1.17 <td> </td>
3968     <td>
3969    
3970      
3971     </td>
3972 pcg 1.14 <td>
3973 pcg 1.17 <b></b>
3974      
3975     </td>
3976 pcg 1.14 </tr>
3977     <tr>
3978     <td>email</td>
3979     <td>email</td>
3980 pcg 1.17 <td> </td>
3981     <td>
3982    
3983      
3984     </td>
3985 pcg 1.14 <td>
3986 pcg 1.17 <b></b>
3987      
3988     </td>
3989 pcg 1.14 </tr>
3990     <tr>
3991     <td>info</td>
3992     <td>userinfo</td>
3993 pcg 1.17 <td> </td>
3994     <td>
3995    
3996      
3997     </td>
3998 pcg 1.14 <td>
3999 pcg 1.17 <b></b>
4000      
4001     </td>
4002 pcg 1.14 </tr>
4003     <tr>
4004     <td>homepage</td>
4005     <td>url</td>
4006 pcg 1.17 <td> </td>
4007     <td>
4008    
4009      
4010     </td>
4011 pcg 1.14 <td>
4012 pcg 1.17 <b></b>
4013      
4014     </td>
4015 pcg 1.14 </tr>
4016     <tr>
4017     <td>regdate</td>
4018     <td>timestamp</td>
4019 pcg 1.17 <td> </td>
4020 pcg 1.14 <td>
4021     When the user registered (0 == never registered).
4022 pcg 1.17
4023      
4024     </td>
4025     <td>
4026     <b></b>
4027      
4028     </td>
4029 pcg 1.14 </tr>
4030     <tr>
4031     <td>lastlogin</td>
4032     <td>timestamp</td>
4033 pcg 1.17 <td> </td>
4034 pcg 1.14 <td>
4035     When the user logged in for the last time.
4036 pcg 1.17
4037      
4038     </td>
4039     <td>
4040     <b></b>
4041      
4042     </td>
4043 pcg 1.14 </tr>
4044     </table>
4045    
4046 pcg 1.17 <h4>
4047 pcg 1.40 <a name="S0009"></a>ORIGIN: SERVER;
4048     MESSAGE: upd_userinfo_result</h4>
4049     NUMERIC TYPE (hex): 0009<p>
4050     </p>
4051     <table border="1" width="100%">
4052     <tr>
4053     <th width="10%">NAME</th>
4054     <th width="8%">TYPE</th>
4055     <th width="4%">VALUE</th>
4056     <th>DESCRIPTION</th>
4057     <th width="10%">GUARD</th>
4058     </tr>
4059     <tr>
4060     <td>name</td>
4061     <td>username</td>
4062     <td> </td>
4063     <td>
4064    
4065      
4066     </td>
4067     <td>
4068     <b></b>
4069      
4070     </td>
4071     </tr>
4072     <tr>
4073     <td>message</td>
4074     <td>CONSTANT</td>
4075     <td>Thanks for registering. </td>
4076     <td>
4077    
4078      
4079     </td>
4080     <td>
4081     <b></b>
4082      
4083     </td>
4084     </tr>
4085     </table>
4086    
4087     <h4>
4088     <a name="S000a"></a>ORIGIN: SERVER;
4089     MESSAGE: upd_userinfo_result</h4>
4090     NUMERIC TYPE (hex): 000a<p>
4091     </p>
4092     <table border="1" width="100%">
4093     <tr>
4094     <th width="10%">NAME</th>
4095     <th width="8%">TYPE</th>
4096     <th width="4%">VALUE</th>
4097     <th>DESCRIPTION</th>
4098     <th width="10%">GUARD</th>
4099     </tr>
4100     <tr>
4101     <td>name</td>
4102     <td>username</td>
4103     <td> </td>
4104     <td>
4105    
4106      
4107     </td>
4108     <td>
4109     <b></b>
4110      
4111     </td>
4112     </tr>
4113     <tr>
4114     <td>message</td>
4115     <td>CONSTANT</td>
4116     <td>The user "%s" has been successfully updated. </td>
4117     <td>
4118    
4119      
4120     </td>
4121     <td>
4122     <b></b>
4123      
4124     </td>
4125     </tr>
4126     </table>
4127    
4128     <h4>
4129     <a name="S000b"></a>ORIGIN: SERVER;
4130     MESSAGE: upd_userinfo_result</h4>
4131     NUMERIC TYPE (hex): 000b<p>
4132     </p>
4133     <table border="1" width="100%">
4134     <tr>
4135     <th width="10%">NAME</th>
4136     <th width="8%">TYPE</th>
4137     <th width="4%">VALUE</th>
4138     <th>DESCRIPTION</th>
4139     <th width="10%">GUARD</th>
4140     </tr>
4141     <tr>
4142     <td>name</td>
4143     <td>username</td>
4144     <td> </td>
4145     <td>
4146    
4147      
4148     </td>
4149     <td>
4150     <b></b>
4151      
4152     </td>
4153     </tr>
4154     <tr>
4155     <td>message</td>
4156     <td>CONSTANT</td>
4157     <td>There is no user "%s". Update failed. </td>
4158     <td>
4159    
4160      
4161     </td>
4162     <td>
4163     <b></b>
4164      
4165     </td>
4166     </tr>
4167     </table>
4168    
4169     <h4>
4170     <a name="S0012"></a>ORIGIN: SERVER;
4171     MESSAGE: userinfo_failed</h4>
4172     NUMERIC TYPE (hex): 0012<p>
4173     <p>Sent when no userinfo for the requested user could be found(?)</p>
4174     </p>
4175     <table border="1" width="100%">
4176     <tr>
4177     <th width="10%">NAME</th>
4178     <th width="8%">TYPE</th>
4179     <th width="4%">VALUE</th>
4180     <th>DESCRIPTION</th>
4181     <th width="10%">GUARD</th>
4182     </tr>
4183     <tr>
4184     <td>name</td>
4185     <td>username</td>
4186     <td> </td>
4187     <td>
4188    
4189      
4190     </td>
4191     <td>
4192     <b></b>
4193      
4194     </td>
4195     </tr>
4196     </table>
4197    
4198     <h4>
4199 pcg 1.32 <a name="S0013"></a>ORIGIN: SERVER;
4200     MESSAGE: msg_chat</h4>
4201 pcg 1.17 NUMERIC TYPE (hex): 0013<p>
4202     </p>
4203     <table border="1" width="100%">
4204     <tr>
4205     <th width="10%">NAME</th>
4206 pcg 1.37 <th width="8%">TYPE</th>
4207     <th width="4%">VALUE</th>
4208 pcg 1.17 <th>DESCRIPTION</th>
4209 pcg 1.37 <th width="10%">GUARD</th>
4210 pcg 1.1 </tr>
4211     <tr>
4212 pcg 1.34 <td>name</td>
4213 pcg 1.3 <td>username</td>
4214 pcg 1.17 <td> </td>
4215 pcg 1.3 <td>
4216 pcg 1.36 Name of sender (either yourself (echo) or other)
4217 pcg 1.17
4218      
4219     </td>
4220     <td>
4221     <b></b>
4222      
4223     </td>
4224 pcg 1.1 </tr>
4225     <tr>
4226 pcg 1.34 <td>name2</td>
4227 pcg 1.3 <td>username</td>
4228 pcg 1.17 <td> </td>
4229     <td>
4230 pcg 1.36 Name of recipient.
4231 pcg 1.17
4232      
4233     </td>
4234 pcg 1.3 <td>
4235 pcg 1.17 <b></b>
4236      
4237     </td>
4238 pcg 1.1 </tr>
4239     <tr>
4240     <td>message</td>
4241     <td>STRING</td>
4242 pcg 1.17 <td> </td>
4243 pcg 1.3 <td>
4244 pcg 1.17
4245      
4246     </td>
4247     <td>
4248     <b></b>
4249      
4250     </td>
4251 pcg 1.1 </tr>
4252     </table>
4253    
4254 pcg 1.17 <h4>
4255 pcg 1.32 <a name="S0015"></a>ORIGIN: SERVER;
4256     MESSAGE: stats</h4>
4257 pcg 1.17 NUMERIC TYPE (hex): 0015
4258     (possibly in response to
4259 pcg 1.32 <a href="#C0014">req_stats(0014)</a>
4260 pcg 1.17 )
4261     <p>
4262     </p>
4263     <table border="1" width="100%">
4264     <tr>
4265     <th width="10%">NAME</th>
4266 pcg 1.37 <th width="8%">TYPE</th>
4267     <th width="4%">VALUE</th>
4268 pcg 1.17 <th>DESCRIPTION</th>
4269 pcg 1.37 <th width="10%">GUARD</th>
4270 pcg 1.1 </tr>
4271     <tr>
4272     <td>ver_major</td>
4273 pcg 1.3 <td>U16</td>
4274 pcg 1.17 <td> </td>
4275 pcg 1.3 <td>
4276 pcg 1.17
4277      
4278     </td>
4279     <td>
4280     <b></b>
4281      
4282     </td>
4283 pcg 1.1 </tr>
4284     <tr>
4285     <td>ver_minor</td>
4286 pcg 1.3 <td>U16</td>
4287 pcg 1.17 <td> </td>
4288     <td>
4289    
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>ver_micro</td>
4299 pcg 1.3 <td>U16</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     <tr>
4311     <td>boot_time</td>
4312 pcg 1.14 <td>timestamp</td>
4313 pcg 1.17 <td> </td>
4314     <td>
4315    
4316      
4317     </td>
4318 pcg 1.3 <td>
4319 pcg 1.17 <b></b>
4320      
4321     </td>
4322 pcg 1.1 </tr>
4323     <tr>
4324     <td>users_cur</td>
4325 pcg 1.3 <td>U32</td>
4326 pcg 1.17 <td> </td>
4327 pcg 1.3 <td>
4328 pcg 1.17
4329      
4330     </td>
4331     <td>
4332     <b></b>
4333      
4334     </td>
4335 pcg 1.1 </tr>
4336     <tr>
4337     <td>users_max</td>
4338 pcg 1.3 <td>U32</td>
4339 pcg 1.17 <td> </td>
4340     <td>
4341    
4342      
4343     </td>
4344 pcg 1.3 <td>
4345 pcg 1.17 <b></b>
4346      
4347     </td>
4348 pcg 1.1 </tr>
4349     <tr>
4350     <td>users_lim</td>
4351 pcg 1.3 <td>U32</td>
4352 pcg 1.17 <td> </td>
4353 pcg 1.3 <td>
4354 pcg 1.17
4355      
4356     </td>
4357     <td>
4358     <b></b>
4359      
4360     </td>
4361 pcg 1.1 </tr>
4362     <tr>
4363     <td>accts_cur</td>
4364 pcg 1.3 <td>U32</td>
4365 pcg 1.17 <td> </td>
4366     <td>
4367    
4368      
4369     </td>
4370 pcg 1.3 <td>
4371 pcg 1.17 <b></b>
4372      
4373     </td>
4374 pcg 1.1 </tr>
4375     <tr>
4376     <td>accts_max</td>
4377 pcg 1.3 <td>U32</td>
4378 pcg 1.17 <td> </td>
4379 pcg 1.3 <td>
4380 pcg 1.17
4381      
4382     </td>
4383     <td>
4384     <b></b>
4385      
4386     </td>
4387 pcg 1.1 </tr>
4388     <tr>
4389     <td>unknown1</td>
4390 pcg 1.3 <td>U32</td>
4391 pcg 1.17 <td> </td>
4392     <td>
4393    
4394      
4395     </td>
4396 pcg 1.3 <td>
4397 pcg 1.17 <b></b>
4398      
4399     </td>
4400 pcg 1.1 </tr>
4401     <tr>
4402     <td>work_max</td>
4403 pcg 1.3 <td>U32</td>
4404 pcg 1.17 <td> </td>
4405 pcg 1.3 <td>
4406 pcg 1.17
4407      
4408     </td>
4409     <td>
4410     <b></b>
4411      
4412     </td>
4413 pcg 1.1 </tr>
4414     <tr>
4415     <td>rooms_cur</td>
4416 pcg 1.3 <td>U32</td>
4417 pcg 1.17 <td> </td>
4418     <td>
4419    
4420      
4421     </td>
4422 pcg 1.3 <td>
4423 pcg 1.17 <b></b>
4424      
4425     </td>
4426 pcg 1.1 </tr>
4427     <tr>
4428     <td>rooms_max</td>
4429 pcg 1.3 <td>U32</td>
4430 pcg 1.17 <td> </td>
4431 pcg 1.3 <td>
4432 pcg 1.17
4433      
4434     </td>
4435     <td>
4436     <b></b>
4437      
4438     </td>
4439 pcg 1.1 </tr>
4440     <tr>
4441     <td>rooms_lim</td>
4442 pcg 1.3 <td>U32</td>
4443 pcg 1.17 <td> </td>
4444     <td>
4445    
4446      
4447     </td>
4448 pcg 1.3 <td>
4449 pcg 1.17 <b></b>
4450      
4451     </td>
4452 pcg 1.1 </tr>
4453     <tr>
4454     <td>games_cur</td>
4455 pcg 1.3 <td>U32</td>
4456 pcg 1.17 <td> </td>
4457 pcg 1.3 <td>
4458 pcg 1.17
4459      
4460     </td>
4461     <td>
4462     <b></b>
4463      
4464     </td>
4465 pcg 1.1 </tr>
4466     <tr>
4467     <td>games_max</td>
4468 pcg 1.3 <td>U32</td>
4469 pcg 1.17 <td> </td>
4470     <td>
4471    
4472      
4473     </td>
4474 pcg 1.3 <td>
4475 pcg 1.17 <b></b>
4476      
4477     </td>
4478 pcg 1.1 </tr>
4479     <tr>
4480     <td>games_lim</td>
4481 pcg 1.3 <td>U32</td>
4482 pcg 1.17 <td> </td>
4483 pcg 1.3 <td>
4484 pcg 1.17
4485      
4486     </td>
4487     <td>
4488     <b></b>
4489      
4490     </td>
4491 pcg 1.1 </tr>
4492     <tr>
4493     <td>results_cur</td>
4494 pcg 1.3 <td>U32</td>
4495 pcg 1.17 <td> </td>
4496     <td>
4497    
4498      
4499     </td>
4500 pcg 1.3 <td>
4501 pcg 1.17 <b></b>
4502      
4503     </td>
4504 pcg 1.1 </tr>
4505     <tr>
4506     <td>results_max</td>
4507 pcg 1.3 <td>U32</td>
4508 pcg 1.17 <td> </td>
4509 pcg 1.3 <td>
4510 pcg 1.17
4511      
4512     </td>
4513     <td>
4514     <b></b>
4515      
4516     </td>
4517 pcg 1.1 </tr>
4518     <tr>
4519     <td>unknown2</td>
4520 pcg 1.3 <td>U32</td>
4521 pcg 1.17 <td> </td>
4522     <td>
4523    
4524      
4525     </td>
4526 pcg 1.3 <td>
4527 pcg 1.17 <b></b>
4528      
4529     </td>
4530 pcg 1.1 </tr>
4531     <tr>
4532     <td>params_cur</td>
4533 pcg 1.3 <td>U32</td>
4534 pcg 1.17 <td> </td>
4535 pcg 1.3 <td>
4536 pcg 1.17
4537      
4538     </td>
4539     <td>
4540     <b></b>
4541      
4542     </td>
4543 pcg 1.1 </tr>
4544     <tr>
4545     <td>params_max</td>
4546 pcg 1.3 <td>U32</td>
4547 pcg 1.17 <td> </td>
4548     <td>
4549    
4550      
4551     </td>
4552 pcg 1.3 <td>
4553 pcg 1.17 <b></b>
4554      
4555     </td>
4556 pcg 1.1 </tr>
4557     <tr>
4558     <td>bytes_in</td>
4559 pcg 1.3 <td>U64</td>
4560 pcg 1.17 <td> </td>
4561 pcg 1.3 <td>
4562 pcg 1.17
4563      
4564     </td>
4565     <td>
4566     <b></b>
4567      
4568     </td>
4569 pcg 1.1 </tr>
4570     <tr>
4571     <td>packets_in</td>
4572 pcg 1.3 <td>U64</td>
4573 pcg 1.17 <td> </td>
4574     <td>
4575    
4576      
4577     </td>
4578 pcg 1.3 <td>
4579 pcg 1.17 <b></b>
4580      
4581     </td>
4582 pcg 1.1 </tr>
4583     <tr>
4584     <td>bytes_out</td>
4585 pcg 1.17 <td>U64</td>
4586     <td> </td>
4587     <td>
4588    
4589      
4590     </td>
4591 pcg 1.3 <td>
4592 pcg 1.17 <b></b>
4593      
4594     </td>
4595 pcg 1.1 </tr>
4596     <tr>
4597     <td>packets_out</td>
4598 pcg 1.3 <td>U64</td>
4599 pcg 1.17 <td> </td>
4600 pcg 1.3 <td>
4601 pcg 1.17
4602      
4603     </td>
4604     <td>
4605     <b></b>
4606      
4607     </td>
4608 pcg 1.1 </tr>
4609     </table>
4610    
4611 pcg 1.17 <h4>
4612 pcg 1.32 <a name="S0016"></a>ORIGIN: SERVER;
4613     MESSAGE: idle_warn</h4>
4614 pcg 1.29 NUMERIC TYPE (hex): 0016
4615     (possibly in response to
4616 pcg 1.32 <a href="#C0016">idle_reset(0016)</a>
4617 pcg 1.29 )
4618     <p>
4619 pcg 1.17 idle warning, autologout soon (10 minutes...)
4620     </p>
4621     <table border="1" width="100%">
4622 pcg 1.1 <tr>
4623 pcg 1.17 <th width="10%">NAME</th>
4624 pcg 1.37 <th width="8%">TYPE</th>
4625     <th width="4%">VALUE</th>
4626 pcg 1.17 <th>DESCRIPTION</th>
4627 pcg 1.37 <th width="10%">GUARD</th>
4628 pcg 1.1 </tr>
4629     </table>
4630    
4631 pcg 1.17 <h4>
4632 pcg 1.34 <a name="S0018"></a>ORIGIN: SERVER;
4633     MESSAGE: login</h4>
4634     NUMERIC TYPE (hex): 0018
4635     (possibly in response to
4636     <a href="#C0000">login(0000)</a>
4637     )
4638     <p>
4639     </p>
4640     <table border="1" width="100%">
4641     <tr>
4642     <th width="10%">NAME</th>
4643 pcg 1.37 <th width="8%">TYPE</th>
4644     <th width="4%">VALUE</th>
4645 pcg 1.34 <th>DESCRIPTION</th>
4646 pcg 1.37 <th width="10%">GUARD</th>
4647 pcg 1.34 </tr>
4648     <tr>
4649 pcg 1.40 <td>message</td>
4650 pcg 1.34 <td>CONSTANT</td>
4651 pcg 1.40 <td>logged out: another client logged in with your username </td>
4652 pcg 1.34 <td>
4653    
4654      
4655     </td>
4656     <td>
4657     <b></b>
4658      
4659     </td>
4660     </tr>
4661     </table>
4662    
4663     <h4>
4664 pcg 1.40 <a name="S001c"></a>ORIGIN: SERVER;
4665 pcg 1.34 MESSAGE: login</h4>
4666 pcg 1.40 NUMERIC TYPE (hex): 001c
4667 pcg 1.34 (possibly in response to
4668     <a href="#C0000">login(0000)</a>
4669     )
4670     <p>
4671     </p>
4672     <table border="1" width="100%">
4673     <tr>
4674     <th width="10%">NAME</th>
4675 pcg 1.37 <th width="8%">TYPE</th>
4676     <th width="4%">VALUE</th>
4677 pcg 1.34 <th>DESCRIPTION</th>
4678 pcg 1.37 <th width="10%">GUARD</th>
4679 pcg 1.34 </tr>
4680     <tr>
4681 pcg 1.40 <td>message</td>
4682     <td>CONSTANT</td>
4683     <td>logged out: idle for too long </td>
4684 pcg 1.34 <td>
4685 pcg 1.40
4686 pcg 1.34  
4687     </td>
4688     <td>
4689     <b></b>
4690      
4691     </td>
4692     </tr>
4693 pcg 1.40 </table>
4694    
4695     <h4>
4696     <a name="S0020"></a>ORIGIN: SERVER;
4697     MESSAGE: error</h4>
4698     NUMERIC TYPE (hex): 0020<p>
4699     </p>
4700     <table border="1" width="100%">
4701     <tr>
4702     <th width="10%">NAME</th>
4703     <th width="8%">TYPE</th>
4704     <th width="4%">VALUE</th>
4705     <th>DESCRIPTION</th>
4706     <th width="10%">GUARD</th>
4707     </tr>
4708 pcg 1.34 <tr>
4709 pcg 1.40 <td>message</td>
4710 pcg 1.34 <td>CONSTANT</td>
4711 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>
4712 pcg 1.34 <td>
4713    
4714      
4715     </td>
4716     <td>
4717     <b></b>
4718      
4719     </td>
4720     </tr>
4721     </table>
4722    
4723     <h4>
4724 pcg 1.40 <a name="S0022"></a>ORIGIN: SERVER;
4725     MESSAGE: login</h4>
4726     NUMERIC TYPE (hex): 0022
4727     (possibly in response to
4728     <a href="#C0000">login(0000)</a>
4729     )
4730     <p>
4731     I was blocked sooo many times for developing this client that it was
4732     easy to figure out. The KGS admins sure need no extra nazi training
4733     :(
4734     </p>
4735     <table border="1" width="100%">
4736     <tr>
4737     <th width="10%">NAME</th>
4738     <th width="8%">TYPE</th>
4739     <th width="4%">VALUE</th>
4740     <th>DESCRIPTION</th>
4741     <th width="10%">GUARD</th>
4742     </tr>
4743     <tr>
4744     <td>reason</td>
4745     <td>STRING</td>
4746     <td> </td>
4747     <td>
4748    
4749      
4750     </td>
4751     <td>
4752     <b></b>
4753      
4754     </td>
4755     </tr>
4756     <tr>
4757     <td>result</td>
4758     <td>CONSTANT</td>
4759     <td>user or ip blocked </td>
4760     <td>
4761    
4762      
4763     </td>
4764     <td>
4765     <b></b>
4766      
4767     </td>
4768     </tr>
4769     </table>
4770    
4771     <h4>
4772     <a name="S001b"></a>ORIGIN: SERVER;
4773     MESSAGE: timewarning_default</h4>
4774     NUMERIC TYPE (hex): 001b
4775 pcg 1.17 (possibly in response to
4776 pcg 1.32 <a href="#C0000">login(0000)</a>
4777 pcg 1.17 )
4778     <p>
4779     WILD guess
4780     </p>
4781     <table border="1" width="100%">
4782 pcg 1.1 <tr>
4783 pcg 1.17 <th width="10%">NAME</th>
4784 pcg 1.37 <th width="8%">TYPE</th>
4785     <th width="4%">VALUE</th>
4786 pcg 1.17 <th>DESCRIPTION</th>
4787 pcg 1.37 <th width="10%">GUARD</th>
4788 pcg 1.1 </tr>
4789     <tr>
4790     <td>channel</td>
4791 pcg 1.3 <td>U16</td>
4792 pcg 1.17 <td> </td>
4793     <td>
4794    
4795      
4796     </td>
4797 pcg 1.3 <td>
4798 pcg 1.17 <b></b>
4799      
4800     </td>
4801 pcg 1.1 </tr>
4802     <tr>
4803     <td>time</td>
4804 pcg 1.3 <td>U16</td>
4805 pcg 1.17 <td> </td>
4806     <td>
4807    
4808      
4809     </td>
4810 pcg 1.3 <td>
4811 pcg 1.17 <b></b>
4812      
4813     </td>
4814 pcg 1.1 </tr>
4815     </table>
4816    
4817 pcg 1.17 <h4>
4818 pcg 1.32 <a name="S001c"></a>ORIGIN: SERVER;
4819     MESSAGE: idle_err</h4>
4820 pcg 1.17 NUMERIC TYPE (hex): 001c<p>
4821     autologout
4822     </p>
4823     <table border="1" width="100%">
4824 pcg 1.1 <tr>
4825 pcg 1.17 <th width="10%">NAME</th>
4826 pcg 1.37 <th width="8%">TYPE</th>
4827     <th width="4%">VALUE</th>
4828 pcg 1.17 <th>DESCRIPTION</th>
4829 pcg 1.37 <th width="10%">GUARD</th>
4830 pcg 1.1 </tr>
4831     </table>
4832    
4833 pcg 1.17 <h4>
4834 pcg 1.32 <a name="S001d"></a>ORIGIN: SERVER;
4835     MESSAGE: ping</h4>
4836 pcg 1.17 NUMERIC TYPE (hex): 001d<p>
4837 pcg 1.14 Sent by the server regularly, but not answering them
4838     isn't valid. Strange form of keepalive?
4839 pcg 1.17 </p>
4840     <table border="1" width="100%">
4841     <tr>
4842     <th width="10%">NAME</th>
4843 pcg 1.37 <th width="8%">TYPE</th>
4844     <th width="4%">VALUE</th>
4845 pcg 1.17 <th>DESCRIPTION</th>
4846 pcg 1.37 <th width="10%">GUARD</th>
4847 pcg 1.1 </tr>
4848     </table>
4849    
4850 pcg 1.17 <h4>
4851 pcg 1.32 <a name="S001e"></a>ORIGIN: SERVER;
4852     MESSAGE: usergraph</h4>
4853 pcg 1.17 NUMERIC TYPE (hex): 001e
4854     (possibly in response to
4855 pcg 1.32 <a href="#C001e">req_usergraph(001e)</a>
4856 pcg 1.17 )
4857     <p>
4858     User graph data.
4859     </p>
4860     <table border="1" width="100%">
4861 pcg 1.15 <tr>
4862 pcg 1.17 <th width="10%">NAME</th>
4863 pcg 1.37 <th width="8%">TYPE</th>
4864     <th width="4%">VALUE</th>
4865 pcg 1.17 <th>DESCRIPTION</th>
4866 pcg 1.37 <th width="10%">GUARD</th>
4867 pcg 1.15 </tr>
4868     <tr>
4869 pcg 1.33 <td>name</td>
4870     <td>username</td>
4871     <td> </td>
4872     <td>
4873    
4874      
4875     </td>
4876     <td>
4877     <b></b>
4878      
4879     </td>
4880     </tr>
4881     <tr>
4882 pcg 1.15 <td>data</td>
4883     <td>I16</td>
4884 pcg 1.17 <td> </td>
4885 pcg 1.15 <td>
4886     If empty, no graph is available. The unit seems to
4887     be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
4888     There is probably one entry per day, the newest one last.
4889 pcg 1.17
4890      
4891     </td>
4892     <td>
4893     <b></b>
4894      
4895     </td>
4896 pcg 1.15 </tr>
4897     </table>
4898    
4899 pcg 1.17 <h4>
4900 pcg 1.32 <a name="S001f"></a>ORIGIN: SERVER;
4901     MESSAGE: memo</h4>
4902 pcg 1.17 NUMERIC TYPE (hex): 001f
4903     (possibly in response to
4904 pcg 1.32 <a href="#C001f">fetch_memos(001f)</a>
4905 pcg 1.17 )
4906     <p>
4907 pcg 1.15 Unclear. "Leave Message"?
4908     6 strings following.
4909 pcg 1.17 </p>
4910     <table border="1" width="100%">
4911     <tr>
4912     <th width="10%">NAME</th>
4913 pcg 1.37 <th width="8%">TYPE</th>
4914     <th width="4%">VALUE</th>
4915 pcg 1.17 <th>DESCRIPTION</th>
4916 pcg 1.37 <th width="10%">GUARD</th>
4917 pcg 1.15 </tr>
4918     <tr>
4919     <td>s1</td>
4920     <td>STRING</td>
4921 pcg 1.17 <td> </td>
4922     <td>
4923    
4924      
4925     </td>
4926 pcg 1.15 <td>
4927 pcg 1.17 <b></b>
4928      
4929     </td>
4930 pcg 1.15 </tr>
4931     <tr>
4932     <td>s2</td>
4933     <td>STRING</td>
4934 pcg 1.17 <td> </td>
4935     <td>
4936    
4937      
4938     </td>
4939 pcg 1.15 <td>
4940 pcg 1.17 <b></b>
4941      
4942     </td>
4943 pcg 1.15 </tr>
4944     <tr>
4945     <td>s3</td>
4946     <td>STRING</td>
4947 pcg 1.17 <td> </td>
4948     <td>
4949    
4950      
4951     </td>
4952 pcg 1.15 <td>
4953 pcg 1.17 <b></b>
4954      
4955     </td>
4956 pcg 1.15 </tr>
4957     <tr>
4958     <td>s4</td>
4959     <td>STRING</td>
4960 pcg 1.17 <td> </td>
4961     <td>
4962    
4963      
4964     </td>
4965 pcg 1.15 <td>
4966 pcg 1.17 <b></b>
4967      
4968     </td>
4969 pcg 1.15 </tr>
4970     <tr>
4971     <td>s5</td>
4972     <td>STRING</td>
4973 pcg 1.17 <td> </td>
4974     <td>
4975    
4976      
4977     </td>
4978 pcg 1.15 <td>
4979 pcg 1.17 <b></b>
4980      
4981     </td>
4982 pcg 1.15 </tr>
4983     <tr>
4984     <td>s6</td>
4985     <td>STRING</td>
4986 pcg 1.17 <td> </td>
4987     <td>
4988    
4989      
4990     </td>
4991 pcg 1.15 <td>
4992 pcg 1.17 <b></b>
4993      
4994     </td>
4995 pcg 1.15 </tr>
4996     </table>
4997    
4998 pcg 1.17 <h4>
4999 pcg 1.32 <a name="S0021"></a>ORIGIN: SERVER;
5000     MESSAGE: userpic</h4>
5001 pcg 1.17 NUMERIC TYPE (hex): 0021
5002     (possibly in response to
5003 pcg 1.32 <a href="#C0021">req_pic(0021)</a>
5004 pcg 1.17 )
5005     <p>
5006     </p>
5007     <table border="1" width="100%">
5008     <tr>
5009     <th width="10%">NAME</th>
5010 pcg 1.37 <th width="8%">TYPE</th>
5011     <th width="4%">VALUE</th>
5012 pcg 1.17 <th>DESCRIPTION</th>
5013 pcg 1.37 <th width="10%">GUARD</th>
5014 pcg 1.1 </tr>
5015     <tr>
5016     <td>name</td>
5017 pcg 1.3 <td>username</td>
5018 pcg 1.17 <td> </td>
5019 pcg 1.3 <td>
5020 pcg 1.1 Reply to pic_req, contains an image in jpeg format.
5021 pcg 1.17
5022      
5023     </td>
5024     <td>
5025     <b></b>
5026      
5027     </td>
5028 pcg 1.1 </tr>
5029     <tr>
5030     <td>data</td>
5031     <td>DATA</td>
5032 pcg 1.17 <td> </td>
5033     <td>
5034    
5035      
5036     </td>
5037 pcg 1.3 <td>
5038 pcg 1.17 <b></b>
5039      
5040     </td>
5041 pcg 1.1 </tr>
5042     </table>
5043    
5044 pcg 1.17 <h4>
5045 pcg 1.32 <a name="S0100"></a>ORIGIN: SERVER;
5046     MESSAGE: gnotice</h4>
5047 pcg 1.17 NUMERIC TYPE (hex): 0100
5048     (possibly in response to
5049 pcg 1.32 <a href="#C0100">gnotice(0100)</a>
5050 pcg 1.17 )
5051     <p>
5052     global notice, sent to everybody
5053     </p>
5054     <table border="1" width="100%">
5055 pcg 1.1 <tr>
5056 pcg 1.17 <th width="10%">NAME</th>
5057 pcg 1.37 <th width="8%">TYPE</th>
5058     <th width="4%">VALUE</th>
5059 pcg 1.17 <th>DESCRIPTION</th>
5060 pcg 1.37 <th width="10%">GUARD</th>
5061 pcg 1.1 </tr>
5062     <tr>
5063     <td>notice</td>
5064     <td>STRING</td>
5065 pcg 1.17 <td> </td>
5066     <td>
5067    
5068      
5069     </td>
5070 pcg 1.3 <td>
5071 pcg 1.17 <b></b>
5072      
5073     </td>
5074 pcg 1.1 </tr>
5075     </table>
5076    
5077 pcg 1.17 <h4>
5078 pcg 1.32 <a name="S0202"></a>ORIGIN: SERVER;
5079 pcg 1.33 MESSAGE: notify_event</h4>
5080 pcg 1.17 NUMERIC TYPE (hex): 0202<p>
5081 pcg 1.15 # maybe soe notify? Totally unclear.
5082 pcg 1.37 # loc 0" type="userinfo, flags etc. loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
5083 pcg 1.17 </p>
5084     <table border="1" width="100%">
5085     <tr>
5086     <th width="10%">NAME</th>
5087 pcg 1.37 <th width="8%">TYPE</th>
5088     <th width="4%">VALUE</th>
5089 pcg 1.17 <th>DESCRIPTION</th>
5090 pcg 1.37 <th width="10%">GUARD</th>
5091 pcg 1.14 </tr>
5092     <tr>
5093 pcg 1.33 <td>event</td>
5094 pcg 1.14 <td>U32</td>
5095 pcg 1.17 <td> </td>
5096     <td>
5097    
5098      
5099     </td>
5100 pcg 1.14 <td>
5101 pcg 1.17 <b></b>
5102      
5103     </td>
5104 pcg 1.14 </tr>
5105     <tr>
5106     <td>user</td>
5107     <td>user</td>
5108 pcg 1.17 <td> </td>
5109     <td>
5110    
5111      
5112     </td>
5113 pcg 1.14 <td>
5114 pcg 1.17 <b></b>
5115      
5116     </td>
5117 pcg 1.14 </tr>
5118     <tr>
5119 pcg 1.34 <td>gamerecord</td>
5120 pcg 1.33 <td>game_record</td>
5121 pcg 1.17 <td> </td>
5122     <td>
5123 pcg 1.33
5124 pcg 1.17  
5125     </td>
5126 pcg 1.14 <td>
5127 pcg 1.33 <b>event</b> == 2
5128 pcg 1.17  
5129     </td>
5130 pcg 1.14 </tr>
5131     </table>
5132 pcg 1.1
5133 pcg 1.17 <h4>
5134 pcg 1.32 <a name="S0310"></a>ORIGIN: SERVER;
5135     MESSAGE: priv_room</h4>
5136 pcg 1.17 NUMERIC TYPE (hex): 0310<p>
5137     "permission denied" when joining a room
5138     </p>
5139     <table border="1" width="100%">
5140 pcg 1.1 <tr>
5141 pcg 1.17 <th width="10%">NAME</th>
5142 pcg 1.37 <th width="8%">TYPE</th>
5143     <th width="4%">VALUE</th>
5144 pcg 1.17 <th>DESCRIPTION</th>
5145 pcg 1.37 <th width="10%">GUARD</th>
5146 pcg 1.1 </tr>
5147     <tr>
5148     <td>name</td>
5149     <td>STRING</td>
5150 pcg 1.17 <td> </td>
5151 pcg 1.3 <td>
5152 pcg 1.17
5153      
5154     </td>
5155     <td>
5156     <b></b>
5157      
5158     </td>
5159 pcg 1.1 </tr>
5160     </table>
5161    
5162 pcg 1.17 <h4>
5163 pcg 1.32 <a name="S0318"></a>ORIGIN: SERVER;
5164     MESSAGE: upd_rooms</h4>
5165 pcg 1.17 NUMERIC TYPE (hex): 0318
5166     (possibly in response to
5167 pcg 1.32 <a href="#C0318">list_rooms(0318)</a>
5168 pcg 1.17 )
5169     <p>
5170     </p>
5171     <table border="1" width="100%">
5172     <tr>
5173     <th width="10%">NAME</th>
5174 pcg 1.37 <th width="8%">TYPE</th>
5175     <th width="4%">VALUE</th>
5176 pcg 1.17 <th>DESCRIPTION</th>
5177 pcg 1.37 <th width="10%">GUARD</th>
5178 pcg 1.1 </tr>
5179     <tr>
5180     <td>rooms</td>
5181     <td>room</td>
5182 pcg 1.17 <td> </td>
5183 pcg 1.3 <td>
5184 pcg 1.17
5185      
5186     </td>
5187     <td>
5188     <b></b>
5189      
5190     </td>
5191 pcg 1.1 </tr>
5192     </table>
5193    
5194 pcg 1.17 <h4>
5195 pcg 1.32 <a name="S0411"></a>ORIGIN: SERVER;
5196     MESSAGE: chal_defaults</h4>
5197 pcg 1.17 NUMERIC TYPE (hex): 0411
5198     (possibly in response to
5199 pcg 1.32 <a href="#C0000">login(0000)</a>
5200 pcg 1.17 )
5201     <p>
5202     </p>
5203     <table border="1" width="100%">
5204     <tr>
5205     <th width="10%">NAME</th>
5206 pcg 1.37 <th width="8%">TYPE</th>
5207     <th width="4%">VALUE</th>
5208 pcg 1.17 <th>DESCRIPTION</th>
5209 pcg 1.37 <th width="10%">GUARD</th>
5210 pcg 1.1 </tr>
5211     <tr>
5212 pcg 1.14 <td>channel</td>
5213 pcg 1.3 <td>U16</td>
5214 pcg 1.17 <td> </td>
5215 pcg 1.3 <td>
5216 pcg 1.17
5217      
5218     </td>
5219     <td>
5220     <b></b>
5221      
5222     </td>
5223 pcg 1.1 </tr>
5224     <tr>
5225 pcg 1.14 <td>defaults</td>
5226     <td>challenge_defaults</td>
5227 pcg 1.17 <td> </td>
5228     <td>
5229    
5230      
5231     </td>
5232 pcg 1.3 <td>
5233 pcg 1.17 <b></b>
5234      
5235     </td>
5236 pcg 1.1 </tr>
5237     </table>
5238    
5239 pcg 1.17 <h4>
5240 pcg 1.32 <a name="S0412"></a>ORIGIN: SERVER;
5241 pcg 1.40 MESSAGE: game_error</h4>
5242 pcg 1.17 NUMERIC TYPE (hex): 0412<p>
5243 pcg 1.40 Unable to create challenge. The channel is be optional.
5244 pcg 1.17 </p>
5245     <table border="1" width="100%">
5246 pcg 1.15 <tr>
5247 pcg 1.17 <th width="10%">NAME</th>
5248 pcg 1.37 <th width="8%">TYPE</th>
5249     <th width="4%">VALUE</th>
5250 pcg 1.17 <th>DESCRIPTION</th>
5251 pcg 1.37 <th width="10%">GUARD</th>
5252 pcg 1.15 </tr>
5253     <tr>
5254 pcg 1.40 <td>message</td>
5255     <td>CONSTANT</td>
5256     <td>Sorry, you are already playing in one game, so you can't start playing in another. </td>
5257     <td>
5258    
5259      
5260     </td>
5261     <td>
5262     <b></b>
5263      
5264     </td>
5265     </tr>
5266     <tr>
5267 pcg 1.15 <td>channel</td>
5268     <td>U16</td>
5269 pcg 1.17 <td> </td>
5270     <td>
5271    
5272      
5273     </td>
5274 pcg 1.15 <td>
5275 pcg 1.17 <b></b>
5276      
5277     </td>
5278 pcg 1.15 </tr>
5279     </table>
5280    
5281 pcg 1.17 <h4>
5282 pcg 1.32 <a name="S0414"></a>ORIGIN: SERVER;
5283     MESSAGE: game_record</h4>
5284 pcg 1.17 NUMERIC TYPE (hex): 0414
5285     (possibly in response to
5286 pcg 1.32 <a href="#C0413">req_game_record(0413)</a>
5287 pcg 1.17 )
5288     <p>
5289     The users game record.
5290     </p>
5291     <table border="1" width="100%">
5292 pcg 1.1 <tr>
5293 pcg 1.17 <th width="10%">NAME</th>
5294 pcg 1.37 <th width="8%">TYPE</th>
5295     <th width="4%">VALUE</th>
5296 pcg 1.17 <th>DESCRIPTION</th>
5297 pcg 1.37 <th width="10%">GUARD</th>
5298 pcg 1.14 </tr>
5299     <tr>
5300     <td>name</td>
5301     <td>username</td>
5302 pcg 1.17 <td> </td>
5303 pcg 1.14 <td>
5304 pcg 1.17
5305      
5306     </td>
5307     <td>
5308     <b></b>
5309      
5310     </td>
5311 pcg 1.14 </tr>
5312     <tr>
5313     <td>more</td>
5314     <td>flag</td>
5315 pcg 1.17 <td> </td>
5316 pcg 1.14 <td>
5317     Wether more games are available (must be requested manually)
5318 pcg 1.17
5319      
5320     </td>
5321     <td>
5322     <b></b>
5323      
5324     </td>
5325 pcg 1.1 </tr>
5326     <tr>
5327 pcg 1.14 <td>games</td>
5328     <td>game_record</td>
5329 pcg 1.17 <td> </td>
5330 pcg 1.3 <td>
5331 pcg 1.17
5332      
5333     </td>
5334     <td>
5335     <b></b>
5336      
5337     </td>
5338 pcg 1.14 </tr>
5339     </table>
5340    
5341 pcg 1.17 <h4>
5342 pcg 1.40 <a name="S0417"></a>ORIGIN: SERVER;
5343     MESSAGE: error</h4>
5344     NUMERIC TYPE (hex): 0417<p>
5345     </p>
5346     <table border="1" width="100%">
5347     <tr>
5348     <th width="10%">NAME</th>
5349     <th width="8%">TYPE</th>
5350     <th width="4%">VALUE</th>
5351     <th>DESCRIPTION</th>
5352     <th width="10%">GUARD</th>
5353     </tr>
5354     <tr>
5355     <td>message</td>
5356     <td>CONSTANT</td>
5357     <td>Sorry, your opponent is currently not logged in, so you can't resume this game. </td>
5358     <td>
5359    
5360      
5361     </td>
5362     <td>
5363     <b></b>
5364      
5365     </td>
5366     </tr>
5367     </table>
5368    
5369     <h4>
5370     <a name="S0418"></a>ORIGIN: SERVER;
5371     MESSAGE: error</h4>
5372     NUMERIC TYPE (hex): 0418<p>
5373     </p>
5374     <table border="1" width="100%">
5375     <tr>
5376     <th width="10%">NAME</th>
5377     <th width="8%">TYPE</th>
5378     <th width="4%">VALUE</th>
5379     <th>DESCRIPTION</th>
5380     <th width="10%">GUARD</th>
5381     </tr>
5382     <tr>
5383     <td>message</td>
5384     <td>CONSTANT</td>
5385     <td>Sorry, your opponent is already playing in a game, so you cannot continue this one. </td>
5386     <td>
5387    
5388      
5389     </td>
5390     <td>
5391     <b></b>
5392      
5393     </td>
5394     </tr>
5395     </table>
5396    
5397     <h4>
5398     <a name="S0419"></a>ORIGIN: SERVER;
5399     MESSAGE: error</h4>
5400     NUMERIC TYPE (hex): 0419<p>
5401     </p>
5402     <table border="1" width="100%">
5403     <tr>
5404     <th width="10%">NAME</th>
5405     <th width="8%">TYPE</th>
5406     <th width="4%">VALUE</th>
5407     <th>DESCRIPTION</th>
5408     <th width="10%">GUARD</th>
5409     </tr>
5410     <tr>
5411     <td>message</td>
5412     <td>CONSTANT</td>
5413     <td>Sorry, the server is out of boards! Please wait a few minutes and try to start a game again. </td>
5414     <td>
5415    
5416      
5417     </td>
5418     <td>
5419     <b></b>
5420      
5421     </td>
5422     </tr>
5423     </table>
5424    
5425     <h4>
5426 pcg 1.32 <a name="S041c"></a>ORIGIN: SERVER;
5427     MESSAGE: upd_game2</h4>
5428 pcg 1.17 NUMERIC TYPE (hex): 041c<p>
5429     Unclear.
5430     </p>
5431     <table border="1" width="100%">
5432 pcg 1.14 <tr>
5433 pcg 1.17 <th width="10%">NAME</th>
5434 pcg 1.37 <th width="8%">TYPE</th>
5435     <th width="4%">VALUE</th>
5436 pcg 1.17 <th>DESCRIPTION</th>
5437 pcg 1.37 <th width="10%">GUARD</th>
5438 pcg 1.1 </tr>
5439     <tr>
5440 pcg 1.14 <td>channel_junk</td>
5441     <td>U16</td>
5442 pcg 1.17 <td> </td>
5443     <td>
5444    
5445      
5446     </td>
5447 pcg 1.3 <td>
5448 pcg 1.17 <b></b>
5449      
5450     </td>
5451 pcg 1.1 </tr>
5452     <tr>
5453 pcg 1.14 <td>game</td>
5454     <td>game</td>
5455 pcg 1.17 <td> </td>
5456     <td>
5457    
5458      
5459     </td>
5460 pcg 1.3 <td>
5461 pcg 1.17 <b></b>
5462      
5463     </td>
5464 pcg 1.1 </tr>
5465     </table>
5466    
5467 pcg 1.40 <h4>
5468     <a name="S041f"></a>ORIGIN: SERVER;
5469     MESSAGE: error</h4>
5470     NUMERIC TYPE (hex): 041f<p>
5471     </p>
5472     <table border="1" width="100%">
5473     <tr>
5474     <th width="10%">NAME</th>
5475     <th width="8%">TYPE</th>
5476     <th width="4%">VALUE</th>
5477     <th>DESCRIPTION</th>
5478     <th width="10%">GUARD</th>
5479     </tr>
5480     <tr>
5481     <td>message</td>
5482     <td>CONSTANT</td>
5483     <td>Sorry, the game you tried to load was not correctly saved...probably caused by the server crashing. It cannot be recovered. </td>
5484     <td>
5485    
5486      
5487     </td>
5488     <td>
5489     <b></b>
5490      
5491     </td>
5492     </tr>
5493     </table>
5494    
5495     <h4>
5496     <a name="S0420"></a>ORIGIN: SERVER;
5497     MESSAGE: error</h4>
5498     NUMERIC TYPE (hex): 0420<p>
5499     </p>
5500     <table border="1" width="100%">
5501     <tr>
5502     <th width="10%">NAME</th>
5503     <th width="8%">TYPE</th>
5504     <th width="4%">VALUE</th>
5505     <th>DESCRIPTION</th>
5506     <th width="10%">GUARD</th>
5507     </tr>
5508     <tr>
5509     <td>message</td>
5510     <td>CONSTANT</td>
5511     <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>
5512     <td>
5513    
5514      
5515     </td>
5516     <td>
5517     <b></b>
5518      
5519     </td>
5520     </tr>
5521     </table>
5522    
5523     <h4>
5524     <a name="S0421"></a>ORIGIN: SERVER;
5525     MESSAGE: error</h4>
5526     NUMERIC TYPE (hex): 0421<p>
5527     </p>
5528     <table border="1" width="100%">
5529     <tr>
5530     <th width="10%">NAME</th>
5531     <th width="8%">TYPE</th>
5532     <th width="4%">VALUE</th>
5533     <th>DESCRIPTION</th>
5534     <th width="10%">GUARD</th>
5535     </tr>
5536     <tr>
5537     <td>message</td>
5538     <td>CONSTANT</td>
5539     <td>Sorry, this game is a private lesson. You will not be allowed to observe it. </td>
5540     <td>
5541    
5542      
5543     </td>
5544     <td>
5545     <b></b>
5546      
5547     </td>
5548     </tr>
5549     </table>
5550    
5551 pcg 1.44 <!-- added recently -->
5552     <h4>
5553     <a name="S043a"></a>ORIGIN: SERVER;
5554     MESSAGE: unknown_43b</h4>
5555     NUMERIC TYPE (hex): 043a<p>
5556     Probably updates the open games list? The format is just a VERY VERY WILD GUESS.
5557    
5558     The first channel is probably a game id.
5559    
5560     </p>
5561     <table border="1" width="100%">
5562     <tr>
5563     <th width="10%">NAME</th>
5564     <th width="8%">TYPE</th>
5565     <th width="4%">VALUE</th>
5566     <th>DESCRIPTION</th>
5567     <th width="10%">GUARD</th>
5568     </tr>
5569     <tr>
5570     <td>channel</td>
5571     <td>U16</td>
5572     <td> </td>
5573     <td>
5574    
5575      
5576     </td>
5577     <td>
5578     <b></b>
5579      
5580     </td>
5581     </tr>
5582     <tr>
5583     <td>game</td>
5584     <td>game</td>
5585     <td> </td>
5586     <td>
5587    
5588      
5589     </td>
5590     <td>
5591     <b></b>
5592      
5593     </td>
5594     </tr>
5595     </table>
5596    
5597 pcg 1.1 <h3>Room messages</h3>
5598    
5599     <p>Not all room messages are for rooms only, and rooms need to parse
5600     not only these messages. Orthogonality, what for?</p>
5601    
5602 pcg 1.17 <h4>
5603 pcg 1.32 <a name="S4300"></a>ORIGIN: SERVER;
5604     MESSAGE: join_room</h4>
5605 pcg 1.17 NUMERIC TYPE (hex): 4300
5606     (possibly in response to
5607 pcg 1.32 <a href="#C4300">join_room(4300)</a>
5608 pcg 1.17 )
5609     <p>
5610     </p>
5611     <table border="1" width="100%">
5612     <tr>
5613     <th width="10%">NAME</th>
5614 pcg 1.37 <th width="8%">TYPE</th>
5615     <th width="4%">VALUE</th>
5616 pcg 1.17 <th>DESCRIPTION</th>
5617 pcg 1.37 <th width="10%">GUARD</th>
5618 pcg 1.1 </tr>
5619     <tr>
5620     <td>channel</td>
5621 pcg 1.3 <td>U16</td>
5622 pcg 1.17 <td> </td>
5623     <td>
5624    
5625      
5626     </td>
5627 pcg 1.3 <td>
5628 pcg 1.17 <b></b>
5629      
5630     </td>
5631 pcg 1.1 </tr>
5632     <tr>
5633     <td>users</td>
5634     <td>user</td>
5635 pcg 1.17 <td> </td>
5636     <td>
5637    
5638      
5639     </td>
5640 pcg 1.3 <td>
5641 pcg 1.17 <b></b>
5642      
5643     </td>
5644 pcg 1.1 </tr>
5645     </table>
5646    
5647 pcg 1.17 <h4>
5648 pcg 1.32 <a name="S4301"></a>ORIGIN: SERVER;
5649     MESSAGE: msg_room</h4>
5650 pcg 1.17 NUMERIC TYPE (hex): 4301<p>
5651     </p>
5652     <table border="1" width="100%">
5653 pcg 1.1 <tr>
5654 pcg 1.17 <th width="10%">NAME</th>
5655 pcg 1.37 <th width="8%">TYPE</th>
5656     <th width="4%">VALUE</th>
5657 pcg 1.17 <th>DESCRIPTION</th>
5658 pcg 1.37 <th width="10%">GUARD</th>
5659 pcg 1.1 </tr>
5660     <tr>
5661     <td>channel</td>
5662 pcg 1.3 <td>U16</td>
5663 pcg 1.17 <td> </td>
5664 pcg 1.3 <td>
5665 pcg 1.17
5666      
5667     </td>
5668     <td>
5669     <b></b>
5670      
5671     </td>
5672 pcg 1.1 </tr>
5673     <tr>
5674     <td>name</td>
5675 pcg 1.3 <td>username</td>
5676 pcg 1.17 <td> </td>
5677     <td>
5678    
5679      
5680     </td>
5681 pcg 1.3 <td>
5682 pcg 1.17 <b></b>
5683      
5684     </td>
5685 pcg 1.1 </tr>
5686     <tr>
5687     <td>message</td>
5688     <td>STRING</td>
5689 pcg 1.17 <td> </td>
5690 pcg 1.3 <td>
5691 pcg 1.17
5692      
5693     </td>
5694     <td>
5695     <b></b>
5696      
5697     </td>
5698 pcg 1.1 </tr>
5699     </table>
5700    
5701 pcg 1.17 <h4>
5702 pcg 1.32 <a name="S4302"></a>ORIGIN: SERVER;
5703     MESSAGE: part_room</h4>
5704 pcg 1.17 NUMERIC TYPE (hex): 4302<p>
5705     </p>
5706     <table border="1" width="100%">
5707 pcg 1.1 <tr>
5708 pcg 1.17 <th width="10%">NAME</th>
5709 pcg 1.37 <th width="8%">TYPE</th>
5710     <th width="4%">VALUE</th>
5711 pcg 1.17 <th>DESCRIPTION</th>
5712 pcg 1.37 <th width="10%">GUARD</th>
5713 pcg 1.1 </tr>
5714     <tr>
5715     <td>channel</td>
5716 pcg 1.3 <td>U16</td>
5717 pcg 1.17 <td> </td>
5718     <td>
5719    
5720      
5721     </td>
5722 pcg 1.3 <td>
5723 pcg 1.17 <b></b>
5724      
5725     </td>
5726 pcg 1.1 </tr>
5727     <tr>
5728     <td>user</td>
5729     <td>user</td>
5730 pcg 1.17 <td> </td>
5731     <td>
5732    
5733      
5734     </td>
5735 pcg 1.3 <td>
5736 pcg 1.17 <b></b>
5737      
5738     </td>
5739 pcg 1.1 </tr>
5740     </table>
5741    
5742 pcg 1.17 <h4>
5743 pcg 1.32 <a name="S4303"></a>ORIGIN: SERVER;
5744     MESSAGE: del_room</h4>
5745 pcg 1.17 NUMERIC TYPE (hex): 4303<p>
5746     </p>
5747     <table border="1" width="100%">
5748 pcg 1.1 <tr>
5749 pcg 1.17 <th width="10%">NAME</th>
5750 pcg 1.37 <th width="8%">TYPE</th>
5751     <th width="4%">VALUE</th>
5752 pcg 1.17 <th>DESCRIPTION</th>
5753 pcg 1.37 <th width="10%">GUARD</th>
5754 pcg 1.1 </tr>
5755     <tr>
5756     <td>channel</td>
5757 pcg 1.3 <td>U16</td>
5758 pcg 1.17 <td> </td>
5759 pcg 1.3 <td>
5760 pcg 1.17
5761      
5762     </td>
5763     <td>
5764     <b></b>
5765      
5766     </td>
5767 pcg 1.1 </tr>
5768     </table>
5769    
5770 pcg 1.17 <h4>
5771 pcg 1.32 <a name="S4304"></a>ORIGIN: SERVER;
5772     MESSAGE: upd_games</h4>
5773 pcg 1.17 NUMERIC TYPE (hex): 4304<p>
5774     </p>
5775     <table border="1" width="100%">
5776 pcg 1.1 <tr>
5777 pcg 1.17 <th width="10%">NAME</th>
5778 pcg 1.37 <th width="8%">TYPE</th>
5779     <th width="4%">VALUE</th>
5780 pcg 1.17 <th>DESCRIPTION</th>
5781 pcg 1.37 <th width="10%">GUARD</th>
5782 pcg 1.1 </tr>
5783     <tr>
5784     <td>channel</td>
5785 pcg 1.3 <td>U16</td>
5786 pcg 1.17 <td> </td>
5787     <td>
5788    
5789      
5790     </td>
5791 pcg 1.3 <td>
5792 pcg 1.17 <b></b>
5793      
5794     </td>
5795 pcg 1.1 </tr>
5796     <tr>
5797     <td>games</td>
5798     <td>game</td>
5799 pcg 1.17 <td> </td>
5800     <td>
5801    
5802      
5803     </td>
5804 pcg 1.3 <td>
5805 pcg 1.17 <b></b>
5806      
5807     </td>
5808 pcg 1.1 </tr>
5809     </table>
5810    
5811 pcg 1.17 <h4>
5812 pcg 1.32 <a name="S4319"></a>ORIGIN: SERVER;
5813     MESSAGE: desc_room</h4>
5814 pcg 1.17 NUMERIC TYPE (hex): 4319<p>
5815     </p>
5816     <table border="1" width="100%">
5817 pcg 1.1 <tr>
5818 pcg 1.17 <th width="10%">NAME</th>
5819 pcg 1.37 <th width="8%">TYPE</th>
5820     <th width="4%">VALUE</th>
5821 pcg 1.17 <th>DESCRIPTION</th>
5822 pcg 1.37 <th width="10%">GUARD</th>
5823 pcg 1.1 </tr>
5824     <tr>
5825     <td>channel</td>
5826 pcg 1.3 <td>U16</td>
5827 pcg 1.17 <td> </td>
5828 pcg 1.3 <td>
5829 pcg 1.17
5830      
5831     </td>
5832     <td>
5833     <b></b>
5834      
5835     </td>
5836 pcg 1.1 </tr>
5837     <tr>
5838     <td>owner</td>
5839 pcg 1.3 <td>username</td>
5840 pcg 1.17 <td> </td>
5841     <td>
5842    
5843      
5844     </td>
5845 pcg 1.3 <td>
5846 pcg 1.17 <b></b>
5847      
5848     </td>
5849 pcg 1.1 </tr>
5850     <tr>
5851     <td>description</td>
5852     <td>STRING</td>
5853 pcg 1.17 <td> </td>
5854 pcg 1.3 <td>
5855 pcg 1.17
5856      
5857     </td>
5858     <td>
5859     <b></b>
5860      
5861     </td>
5862 pcg 1.1 </tr>
5863     </table>
5864 pcg 1.27
5865 pcg 1.1 <h3>Game messages</h3>
5866    
5867 pcg 1.17 <h4>
5868 pcg 1.32 <a name="S4400"></a>ORIGIN: SERVER;
5869     MESSAGE: upd_challenge</h4>
5870 pcg 1.17 NUMERIC TYPE (hex): 4400<p>
5871     Unclear.
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     <td>
5886    
5887      
5888     </td>
5889 pcg 1.3 <td>
5890 pcg 1.17 <b></b>
5891      
5892     </td>
5893 pcg 1.1 </tr>
5894     <tr>
5895     <td>challenge</td>
5896     <td>challenge</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     </table>
5908    
5909 pcg 1.17 <h4>
5910 pcg 1.32 <a name="S4401"></a>ORIGIN: SERVER;
5911     MESSAGE: upd_game</h4>
5912 pcg 1.17 NUMERIC TYPE (hex): 4401<p>
5913     </p>
5914     <table border="1" width="100%">
5915 pcg 1.1 <tr>
5916 pcg 1.17 <th width="10%">NAME</th>
5917 pcg 1.37 <th width="8%">TYPE</th>
5918     <th width="4%">VALUE</th>
5919 pcg 1.17 <th>DESCRIPTION</th>
5920 pcg 1.37 <th width="10%">GUARD</th>
5921 pcg 1.1 </tr>
5922     <tr>
5923     <td>channel</td>
5924 pcg 1.3 <td>U16</td>
5925 pcg 1.17 <td> </td>
5926     <td>
5927    
5928      
5929     </td>
5930 pcg 1.3 <td>
5931 pcg 1.17 <b></b>
5932      
5933     </td>
5934 pcg 1.1 </tr>
5935     <tr>
5936     <td>game</td>
5937     <td>game</td>
5938 pcg 1.17 <td> </td>
5939 pcg 1.3 <td>
5940 pcg 1.17
5941      
5942     </td>
5943     <td>
5944     <b></b>
5945      
5946     </td>
5947 pcg 1.1 </tr>
5948     </table>
5949    
5950 pcg 1.17 <h4>
5951 pcg 1.32 <a name="S4402"></a>ORIGIN: SERVER;
5952     MESSAGE: del_game</h4>
5953 pcg 1.17 NUMERIC TYPE (hex): 4402<p>
5954     </p>
5955     <table border="1" width="100%">
5956 pcg 1.1 <tr>
5957 pcg 1.17 <th width="10%">NAME</th>
5958 pcg 1.37 <th width="8%">TYPE</th>
5959     <th width="4%">VALUE</th>
5960 pcg 1.17 <th>DESCRIPTION</th>
5961 pcg 1.37 <th width="10%">GUARD</th>
5962 pcg 1.1 </tr>
5963     <tr>
5964     <td>channel</td>
5965 pcg 1.3 <td>U16</td>
5966 pcg 1.17 <td> </td>
5967     <td>
5968    
5969      
5970     </td>
5971 pcg 1.3 <td>
5972 pcg 1.17 <b></b>
5973      
5974     </td>
5975 pcg 1.1 </tr>
5976     </table>
5977    
5978 pcg 1.17 <h4>
5979 pcg 1.32 <a name="S4403"></a>ORIGIN: SERVER;
5980     MESSAGE: upd_observers</h4>
5981 pcg 1.17 NUMERIC TYPE (hex): 4403<p>
5982     </p>
5983     <table border="1" width="100%">
5984 pcg 1.1 <tr>
5985 pcg 1.17 <th width="10%">NAME</th>
5986 pcg 1.37 <th width="8%">TYPE</th>
5987     <th width="4%">VALUE</th>
5988 pcg 1.17 <th>DESCRIPTION</th>
5989 pcg 1.37 <th width="10%">GUARD</th>
5990 pcg 1.1 </tr>
5991     <tr>
5992     <td>channel</td>
5993 pcg 1.3 <td>U16</td>
5994 pcg 1.17 <td> </td>
5995     <td>
5996    
5997      
5998     </td>
5999 pcg 1.3 <td>
6000 pcg 1.17 <b></b>
6001      
6002     </td>
6003 pcg 1.1 </tr>
6004     <tr>
6005     <td>users</td>
6006     <td>user</td>
6007 pcg 1.17 <td> </td>
6008 pcg 1.3 <td>
6009 pcg 1.17
6010      
6011     </td>
6012     <td>
6013     <b></b>
6014      
6015     </td>
6016 pcg 1.1 </tr>
6017     </table>
6018    
6019 pcg 1.17 <h4>
6020 pcg 1.32 <a name="S4404"></a>ORIGIN: SERVER;
6021     MESSAGE: del_observer</h4>
6022 pcg 1.17 NUMERIC TYPE (hex): 4404<p>
6023     </p>
6024     <table border="1" width="100%">
6025 pcg 1.1 <tr>
6026 pcg 1.17 <th width="10%">NAME</th>
6027 pcg 1.37 <th width="8%">TYPE</th>
6028     <th width="4%">VALUE</th>
6029 pcg 1.17 <th>DESCRIPTION</th>
6030 pcg 1.37 <th width="10%">GUARD</th>
6031 pcg 1.1 </tr>
6032     <tr>
6033     <td>channel</td>
6034 pcg 1.3 <td>U16</td>
6035 pcg 1.17 <td> </td>
6036     <td>
6037    
6038      
6039     </td>
6040 pcg 1.3 <td>
6041 pcg 1.17 <b></b>
6042      
6043     </td>
6044 pcg 1.1 </tr>
6045     <tr>
6046     <td>name</td>
6047 pcg 1.3 <td>username</td>
6048 pcg 1.17 <td> </td>
6049     <td>
6050    
6051      
6052     </td>
6053 pcg 1.3 <td>
6054 pcg 1.17 <b></b>
6055      
6056     </td>
6057 pcg 1.1 </tr>
6058     </table>
6059    
6060 pcg 1.17 <h4>
6061 pcg 1.32 <a name="S4405"></a>ORIGIN: SERVER;
6062     MESSAGE: set_tree</h4>
6063 pcg 1.17 NUMERIC TYPE (hex): 4405<p>
6064     </p>
6065     <table border="1" width="100%">
6066 pcg 1.1 <tr>
6067 pcg 1.17 <th width="10%">NAME</th>
6068 pcg 1.37 <th width="8%">TYPE</th>
6069     <th width="4%">VALUE</th>
6070 pcg 1.17 <th>DESCRIPTION</th>
6071 pcg 1.37 <th width="10%">GUARD</th>
6072 pcg 1.1 </tr>
6073     <tr>
6074     <td>channel</td>
6075 pcg 1.3 <td>U16</td>
6076 pcg 1.17 <td> </td>
6077 pcg 1.3 <td>
6078 pcg 1.17
6079      
6080     </td>
6081     <td>
6082     <b></b>
6083      
6084     </td>
6085 pcg 1.1 </tr>
6086     <tr>
6087     <td>tree</td>
6088     <td>TREE</td>
6089 pcg 1.17 <td> </td>
6090     <td>
6091    
6092      
6093     </td>
6094 pcg 1.3 <td>
6095 pcg 1.17 <b></b>
6096      
6097     </td>
6098 pcg 1.1 </tr>
6099     </table>
6100    
6101 pcg 1.17 <h4>
6102 pcg 1.32 <a name="S4406"></a>ORIGIN: SERVER;
6103     MESSAGE: upd_tree</h4>
6104 pcg 1.17 NUMERIC TYPE (hex): 4406<p>
6105     </p>
6106     <table border="1" width="100%">
6107 pcg 1.1 <tr>
6108 pcg 1.17 <th width="10%">NAME</th>
6109 pcg 1.37 <th width="8%">TYPE</th>
6110     <th width="4%">VALUE</th>
6111 pcg 1.17 <th>DESCRIPTION</th>
6112 pcg 1.37 <th width="10%">GUARD</th>
6113 pcg 1.1 </tr>
6114     <tr>
6115     <td>channel</td>
6116 pcg 1.3 <td>U16</td>
6117 pcg 1.17 <td> </td>
6118     <td>
6119    
6120      
6121     </td>
6122 pcg 1.3 <td>
6123 pcg 1.17 <b></b>
6124      
6125     </td>
6126 pcg 1.1 </tr>
6127     <tr>
6128     <td>tree</td>
6129     <td>TREE</td>
6130 pcg 1.17 <td> </td>
6131     <td>
6132    
6133      
6134     </td>
6135 pcg 1.3 <td>
6136 pcg 1.17 <b></b>
6137      
6138     </td>
6139 pcg 1.1 </tr>
6140     </table>
6141    
6142 pcg 1.17 <h4>
6143 pcg 1.32 <a name="S4409"></a>ORIGIN: SERVER;
6144     MESSAGE: superko</h4>
6145 pcg 1.17 NUMERIC TYPE (hex): 4409<p>
6146     Superko-warning.
6147     </p>
6148     <table border="1" width="100%">
6149 pcg 1.1 <tr>
6150 pcg 1.17 <th width="10%">NAME</th>
6151 pcg 1.37 <th width="8%">TYPE</th>
6152     <th width="4%">VALUE</th>
6153 pcg 1.17 <th>DESCRIPTION</th>
6154 pcg 1.37 <th width="10%">GUARD</th>
6155 pcg 1.1 </tr>
6156     <tr>
6157     <td>channel</td>
6158 pcg 1.3 <td>U16</td>
6159 pcg 1.17 <td> </td>
6160     <td>
6161    
6162      
6163     </td>
6164 pcg 1.3 <td>
6165 pcg 1.17 <b></b>
6166      
6167     </td>
6168 pcg 1.1 </tr>
6169     </table>
6170    
6171 pcg 1.17 <h4>
6172 pcg 1.32 <a name="S440b"></a>ORIGIN: SERVER;
6173     MESSAGE: final_result</h4>
6174 pcg 1.17 NUMERIC TYPE (hex): 440b<p>
6175     </p>
6176     <table border="1" width="100%">
6177 pcg 1.1 <tr>
6178 pcg 1.17 <th width="10%">NAME</th>
6179 pcg 1.37 <th width="8%">TYPE</th>
6180     <th width="4%">VALUE</th>
6181 pcg 1.17 <th>DESCRIPTION</th>
6182 pcg 1.37 <th width="10%">GUARD</th>
6183 pcg 1.1 </tr>
6184     <tr>
6185     <td>channel</td>
6186 pcg 1.3 <td>U16</td>
6187 pcg 1.17 <td> </td>
6188 pcg 1.3 <td>
6189 pcg 1.17
6190      
6191     </td>
6192     <td>
6193     <b></b>
6194      
6195     </td>
6196 pcg 1.1 </tr>
6197     <tr>
6198     <td>blackscore</td>
6199 pcg 1.10 <td>scorevalues</td>
6200 pcg 1.17 <td> </td>
6201     <td>
6202    
6203      
6204     </td>
6205 pcg 1.3 <td>
6206 pcg 1.17 <b></b>
6207      
6208     </td>
6209 pcg 1.1 </tr>
6210     <tr>
6211     <td>whitescore</td>
6212 pcg 1.10 <td>scorevalues</td>
6213 pcg 1.17 <td> </td>
6214 pcg 1.3 <td>
6215 pcg 1.17
6216      
6217     </td>
6218     <td>
6219     <b></b>
6220      
6221     </td>
6222 pcg 1.1 </tr>
6223     </table>
6224    
6225 pcg 1.17 <h4>
6226 pcg 1.32 <a name="S440e"></a>ORIGIN: SERVER;
6227     MESSAGE: req_undo</h4>
6228 pcg 1.17 NUMERIC TYPE (hex): 440e<p>
6229     </p>
6230     <table border="1" width="100%">
6231 pcg 1.1 <tr>
6232 pcg 1.17 <th width="10%">NAME</th>
6233 pcg 1.37 <th width="8%">TYPE</th>
6234     <th width="4%">VALUE</th>
6235 pcg 1.17 <th>DESCRIPTION</th>
6236 pcg 1.37 <th width="10%">GUARD</th>
6237 pcg 1.1 </tr>
6238     <tr>
6239     <td>channel</td>
6240 pcg 1.3 <td>U16</td>
6241 pcg 1.17 <td> </td>
6242 pcg 1.3 <td>
6243 pcg 1.1
6244 pcg 1.17
6245      
6246     </td>
6247     <td>
6248     <b></b>
6249      
6250     </td>
6251 pcg 1.1 </tr>
6252     </table>
6253    
6254 pcg 1.17 <h4>
6255 pcg 1.32 <a name="S4410"></a>ORIGIN: SERVER;
6256     MESSAGE: resign_game</h4>
6257 pcg 1.17 NUMERIC TYPE (hex): 4410<p>
6258     </p>
6259     <table border="1" width="100%">
6260 pcg 1.1 <tr>
6261 pcg 1.17 <th width="10%">NAME</th>
6262 pcg 1.37 <th width="8%">TYPE</th>
6263     <th width="4%">VALUE</th>
6264 pcg 1.17 <th>DESCRIPTION</th>
6265 pcg 1.37 <th width="10%">GUARD</th>
6266 pcg 1.1 </tr>
6267     <tr>
6268     <td>channel</td>
6269 pcg 1.3 <td>U16</td>
6270 pcg 1.17 <td> </td>
6271     <td>
6272    
6273      
6274     </td>
6275 pcg 1.3 <td>
6276 pcg 1.17 <b></b>
6277      
6278     </td>
6279 pcg 1.1 </tr>
6280     <tr>
6281     <td>player</td>
6282 pcg 1.3 <td>U8</td>
6283 pcg 1.17 <td> </td>
6284 pcg 1.3 <td>
6285 pcg 1.17
6286      
6287     </td>
6288     <td>
6289     <b></b>
6290      
6291     </td>
6292 pcg 1.1 </tr>
6293     </table>
6294    
6295 pcg 1.17 <h4>
6296 pcg 1.40 <a name="S4415"></a>ORIGIN: SERVER;
6297     MESSAGE: game_error</h4>
6298     NUMERIC TYPE (hex): 4415<p>
6299     </p>
6300     <table border="1" width="100%">
6301     <tr>
6302     <th width="10%">NAME</th>
6303     <th width="8%">TYPE</th>
6304     <th width="4%">VALUE</th>
6305     <th>DESCRIPTION</th>
6306     <th width="10%">GUARD</th>
6307     </tr>
6308     <tr>
6309     <td>channel</td>
6310     <td>U16</td>
6311     <td> </td>
6312     <td>
6313    
6314      
6315     </td>
6316     <td>
6317     <b></b>
6318      
6319     </td>
6320     </tr>
6321     <tr>
6322     <td>message</td>
6323     <td>CONSTANT</td>
6324     <td>Sorry, this is a lecture game. Only authorized players are allowed to make comments. </td>
6325     <td>
6326    
6327      
6328     </td>
6329     <td>
6330     <b></b>
6331      
6332     </td>
6333     </tr>
6334     </table>
6335    
6336     <h4>
6337 pcg 1.32 <a name="S441a"></a>ORIGIN: SERVER;
6338     MESSAGE: set_teacher</h4>
6339 pcg 1.17 NUMERIC TYPE (hex): 441a<p>
6340     </p>
6341     <table border="1" width="100%">
6342 pcg 1.1 <tr>
6343 pcg 1.17 <th width="10%">NAME</th>
6344 pcg 1.37 <th width="8%">TYPE</th>
6345     <th width="4%">VALUE</th>
6346 pcg 1.17 <th>DESCRIPTION</th>
6347 pcg 1.37 <th width="10%">GUARD</th>
6348 pcg 1.1 </tr>
6349     <tr>
6350     <td>channel</td>
6351 pcg 1.3 <td>U16</td>
6352 pcg 1.17 <td> </td>
6353     <td>
6354    
6355      
6356     </td>
6357 pcg 1.3 <td>
6358 pcg 1.17 <b></b>
6359      
6360     </td>
6361 pcg 1.1 </tr>
6362     <tr>
6363     <td>name</td>
6364 pcg 1.3 <td>username</td>
6365 pcg 1.17 <td> </td>
6366     <td>
6367    
6368      
6369     </td>
6370 pcg 1.3 <td>
6371 pcg 1.17 <b></b>
6372      
6373     </td>
6374 pcg 1.1 </tr>
6375     </table>
6376    
6377 pcg 1.17 <h4>
6378 pcg 1.32 <a name="S441d"></a>ORIGIN: SERVER;
6379     MESSAGE: owner_left</h4>
6380 pcg 1.17 NUMERIC TYPE (hex): 441d<p>
6381     </p>
6382     <table border="1" width="100%">
6383 pcg 1.1 <tr>
6384 pcg 1.17 <th width="10%">NAME</th>
6385 pcg 1.37 <th width="8%">TYPE</th>
6386     <th width="4%">VALUE</th>
6387 pcg 1.17 <th>DESCRIPTION</th>
6388 pcg 1.37 <th width="10%">GUARD</th>
6389 pcg 1.1 </tr>
6390     <tr>
6391     <td>channel</td>
6392 pcg 1.3 <td>U16</td>
6393 pcg 1.17 <td> </td>
6394     <td>
6395 pcg 1.40
6396      
6397     </td>
6398     <td>
6399     <b></b>
6400      
6401     </td>
6402     </tr>
6403     <tr>
6404     <td>message</td>
6405     <td>CONSTANT</td>
6406     <td>Sorry, the owner of this game has left. Nobody will be allowed to edit it until the owner returns. </td>
6407     <td>
6408 pcg 1.17
6409      
6410     </td>
6411 pcg 1.3 <td>
6412 pcg 1.17 <b></b>
6413      
6414     </td>
6415 pcg 1.1 </tr>
6416     </table>
6417    
6418 pcg 1.17 <h4>
6419 pcg 1.32 <a name="S441e"></a>ORIGIN: SERVER;
6420     MESSAGE: teacher_left</h4>
6421 pcg 1.17 NUMERIC TYPE (hex): 441e<p>
6422     Unclear.
6423     </p>
6424     <table border="1" width="100%">
6425 pcg 1.1 <tr>
6426 pcg 1.17 <th width="10%">NAME</th>
6427 pcg 1.37 <th width="8%">TYPE</th>
6428     <th width="4%">VALUE</th>
6429 pcg 1.17 <th>DESCRIPTION</th>
6430 pcg 1.37 <th width="10%">GUARD</th>
6431 pcg 1.1 </tr>
6432     <tr>
6433     <td>channel</td>
6434 pcg 1.3 <td>U16</td>
6435 pcg 1.17 <td> </td>
6436     <td>
6437    
6438      
6439     </td>
6440 pcg 1.3 <td>
6441 pcg 1.17 <b></b>
6442      
6443     </td>
6444 pcg 1.1 </tr>
6445     </table>
6446    
6447 pcg 1.17 <h4>
6448 pcg 1.32 <a name="S4422"></a>ORIGIN: SERVER;
6449 pcg 1.40 MESSAGE: allow_user_result</h4>
6450 pcg 1.17 NUMERIC TYPE (hex): 4422<p>
6451     </p>
6452     <table border="1" width="100%">
6453 pcg 1.1 <tr>
6454 pcg 1.17 <th width="10%">NAME</th>
6455 pcg 1.37 <th width="8%">TYPE</th>
6456     <th width="4%">VALUE</th>
6457 pcg 1.17 <th>DESCRIPTION</th>
6458 pcg 1.37 <th width="10%">GUARD</th>
6459 pcg 1.1 </tr>
6460     <tr>
6461 pcg 1.40 <td>message</td>
6462     <td>CONSTANT</td>
6463     <td>User "%s" will now be allowed full access to your game. </td>
6464     <td>
6465    
6466      
6467     </td>
6468     <td>
6469     <b></b>
6470      
6471     </td>
6472     </tr>
6473     <tr>
6474 pcg 1.1 <td>channel</td>
6475 pcg 1.3 <td>U16</td>
6476 pcg 1.17 <td> </td>
6477 pcg 1.3 <td>
6478 pcg 1.40
6479      
6480     </td>
6481     <td>
6482     <b></b>
6483      
6484     </td>
6485     </tr>
6486     </table>
6487    
6488     <h4>
6489     <a name="S4424"></a>ORIGIN: SERVER;
6490     MESSAGE: allow_user_result</h4>
6491     NUMERIC TYPE (hex): 4424<p>
6492     </p>
6493     <table border="1" width="100%">
6494     <tr>
6495     <th width="10%">NAME</th>
6496     <th width="8%">TYPE</th>
6497     <th width="4%">VALUE</th>
6498     <th>DESCRIPTION</th>
6499     <th width="10%">GUARD</th>
6500     </tr>
6501     <tr>
6502     <td>message</td>
6503     <td>CONSTANT</td>
6504     <td>Sorry, user "%s" is a guest and cannot be allowed full access to your game. </td>
6505     <td>
6506 pcg 1.17
6507      
6508     </td>
6509     <td>
6510     <b></b>
6511      
6512     </td>
6513 pcg 1.1 </tr>
6514     <tr>
6515 pcg 1.40 <td>channel</td>
6516     <td>U16</td>
6517 pcg 1.17 <td> </td>
6518     <td>
6519 pcg 1.40
6520      
6521     </td>
6522     <td>
6523     <b></b>
6524      
6525     </td>
6526     </tr>
6527     </table>
6528    
6529     <h4>
6530     <a name="S4425"></a>ORIGIN: SERVER;
6531     MESSAGE: allow_user_result</h4>
6532     NUMERIC TYPE (hex): 4425<p>
6533     </p>
6534     <table border="1" width="100%">
6535     <tr>
6536     <th width="10%">NAME</th>
6537     <th width="8%">TYPE</th>
6538     <th width="4%">VALUE</th>
6539     <th>DESCRIPTION</th>
6540     <th width="10%">GUARD</th>
6541     </tr>
6542     <tr>
6543     <td>message</td>
6544     <td>CONSTANT</td>
6545     <td>Sorry, user "%s" does not seem to exist and cannot be allowed into your game. </td>
6546     <td>
6547 pcg 1.17
6548      
6549     </td>
6550 pcg 1.3 <td>
6551 pcg 1.17 <b></b>
6552      
6553     </td>
6554 pcg 1.1 </tr>
6555     <tr>
6556 pcg 1.40 <td>channel</td>
6557     <td>U16</td>
6558 pcg 1.26 <td> </td>
6559     <td>
6560    
6561      
6562     </td>
6563     <td>
6564     <b></b>
6565      
6566     </td>
6567     </tr>
6568     </table>
6569    
6570     <h4>
6571 pcg 1.32 <a name="S4428"></a>ORIGIN: SERVER;
6572     MESSAGE: add_tree</h4>
6573 pcg 1.26 NUMERIC TYPE (hex): 4428<p>
6574 pcg 1.32 <p>See <a href="#S4405">set_tree(4405)</a>. In addition, flags the tree as being
6575 pcg 1.26 uploaded completely.</p>
6576     </p>
6577     <table border="1" width="100%">
6578     <tr>
6579     <th width="10%">NAME</th>
6580 pcg 1.37 <th width="8%">TYPE</th>
6581     <th width="4%">VALUE</th>
6582 pcg 1.26 <th>DESCRIPTION</th>
6583 pcg 1.37 <th width="10%">GUARD</th>
6584 pcg 1.26 </tr>
6585     <tr>
6586     <td>channel</td>
6587     <td>U16</td>
6588     <td> </td>
6589     <td>
6590    
6591      
6592     </td>
6593     <td>
6594     <b></b>
6595      
6596     </td>
6597     </tr>
6598     <tr>
6599     <td>tree</td>
6600     <td>TREE</td>
6601 pcg 1.40 <td> </td>
6602     <td>
6603    
6604      
6605     </td>
6606     <td>
6607     <b></b>
6608      
6609     </td>
6610     </tr>
6611     </table>
6612    
6613     <h4>
6614     <a name="S4429"></a>ORIGIN: SERVER;
6615     MESSAGE: reject_challenge</h4>
6616     NUMERIC TYPE (hex): 4429<p>
6617     Reject a challenge by a given user. Not checked.
6618    
6619     </p>
6620     <table border="1" width="100%">
6621     <tr>
6622     <th width="10%">NAME</th>
6623     <th width="8%">TYPE</th>
6624     <th width="4%">VALUE</th>
6625     <th>DESCRIPTION</th>
6626     <th width="10%">GUARD</th>
6627     </tr>
6628     <tr>
6629     <td>channel</td>
6630     <td>U16</td>
6631     <td> </td>
6632     <td>
6633    
6634      
6635     </td>
6636     <td>
6637     <b></b>
6638      
6639     </td>
6640     </tr>
6641     <tr>
6642     <td>name</td>
6643     <td>username</td>
6644 pcg 1.17 <td> </td>
6645 pcg 1.3 <td>
6646 pcg 1.17
6647 pcg 1.41  
6648     </td>
6649     <td>
6650     <b></b>
6651      
6652     </td>
6653     </tr>
6654     </table>
6655    
6656     <h4>
6657     <a name="C442f"></a>ORIGIN: CLIENT;
6658     MESSAGE: new_game</h4>
6659     NUMERIC TYPE (hex): 442f<p>
6660     <p>Notifies the client that a new game has been created. This
6661     message is sent long *after* upd_observers etc. has been received.
6662     *sigh*</p>
6663     </p>
6664     <table border="1" width="100%">
6665     <tr>
6666     <th width="10%">NAME</th>
6667     <th width="8%">TYPE</th>
6668     <th width="4%">VALUE</th>
6669     <th>DESCRIPTION</th>
6670     <th width="10%">GUARD</th>
6671     </tr>
6672     <tr>
6673     <td>channel</td>
6674     <td>U16</td>
6675     <td> </td>
6676     <td>
6677    
6678      
6679     </td>
6680     <td>
6681     <b></b>
6682      
6683     </td>
6684     </tr>
6685     <tr>
6686     <td>id</td>
6687     <td>U16</td>
6688     <td> </td>
6689     <td>
6690    
6691 pcg 1.17  
6692     </td>
6693     <td>
6694     <b></b>
6695      
6696     </td>
6697 pcg 1.1 </tr>
6698     </table>
6699    
6700 pcg 1.17 <h4>
6701 pcg 1.32 <a name="S4433"></a>ORIGIN: SERVER;
6702     MESSAGE: req_result</h4>
6703 pcg 1.17 NUMERIC TYPE (hex): 4433<p>
6704     Unclear.
6705     </p>
6706     <table border="1" width="100%">
6707 pcg 1.1 <tr>
6708 pcg 1.17 <th width="10%">NAME</th>
6709 pcg 1.37 <th width="8%">TYPE</th>
6710     <th width="4%">VALUE</th>
6711 pcg 1.17 <th>DESCRIPTION</th>
6712 pcg 1.37 <th width="10%">GUARD</th>
6713 pcg 1.1 </tr>
6714     <tr>
6715     <td>channel</td>
6716 pcg 1.3 <td>U16</td>
6717 pcg 1.17 <td> </td>
6718 pcg 1.3 <td>
6719 pcg 1.1 # # recv_result(?)
6720 pcg 1.17
6721      
6722     </td>
6723     <td>
6724     <b></b>
6725      
6726     </td>
6727 pcg 1.1 </tr>
6728     </table>
6729    
6730 pcg 1.17 <h4>
6731 pcg 1.32 <a name="S4434"></a>ORIGIN: SERVER;
6732     MESSAGE: unknown4434</h4>
6733 pcg 1.17 NUMERIC TYPE (hex): 4434<p>
6734     </p>
6735     <table border="1" width="100%">
6736 pcg 1.1 <tr>
6737 pcg 1.17 <th width="10%">NAME</th>
6738 pcg 1.37 <th width="8%">TYPE</th>
6739     <th width="4%">VALUE</th>
6740 pcg 1.17 <th>DESCRIPTION</th>
6741 pcg 1.37 <th width="10%">GUARD</th>
6742 pcg 1.1 </tr>
6743     <tr>
6744     <td>channel</td>
6745 pcg 1.3 <td>U16</td>
6746 pcg 1.17 <td> </td>
6747     <td>
6748    
6749      
6750     </td>
6751 pcg 1.3 <td>
6752 pcg 1.17 <b></b>
6753      
6754     </td>
6755 pcg 1.1 </tr>
6756     <tr>
6757     <td>b1</td>
6758 pcg 1.3 <td>U8</td>
6759 pcg 1.17 <td> </td>
6760 pcg 1.3 <td>
6761 pcg 1.1 ?? !demonstration game??
6762 pcg 1.17
6763      
6764     </td>
6765     <td>
6766     <b></b>
6767      
6768     </td>
6769 pcg 1.1 </tr>
6770     </table>
6771    
6772 pcg 1.44 <!-- added recently -->
6773 pcg 1.43 <h4>
6774 pcg 1.44 <a name="S443b"></a>ORIGIN: SERVER;
6775 pcg 1.43 MESSAGE: unknown_443b</h4>
6776     NUMERIC TYPE (hex): 443b<p>
6777 pcg 1.44 No idea yet, both id's are probably channel ids and have sth. to
6778     do with the open games list(?). They have never been observed to be different, btw.
6779 pcg 1.43 </p>
6780     <table border="1" width="100%">
6781     <tr>
6782     <th width="10%">NAME</th>
6783     <th width="8%">TYPE</th>
6784     <th width="4%">VALUE</th>
6785     <th>DESCRIPTION</th>
6786     <th width="10%">GUARD</th>
6787     </tr>
6788     <tr>
6789     <td>channel</td>
6790     <td>U16</td>
6791     <td> </td>
6792     <td>
6793    
6794      
6795     </td>
6796     <td>
6797     <b></b>
6798      
6799     </td>
6800     </tr>
6801     <tr>
6802 pcg 1.44 <td>game</td>
6803 pcg 1.43 <td>U16</td>
6804     <td> </td>
6805     <td>
6806    
6807      
6808     </td>
6809     <td>
6810     <b></b>
6811      
6812     </td>
6813     </tr>
6814     </table>
6815 pcg 1.1 </body>
6816     </html>