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