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