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