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