ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.56
Committed: Fri May 28 23:03:41 2004 UTC (20 years ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.55: +1 -1 lines
Log Message:
*** empty log message ***

File Contents

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