ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.38
Committed: Tue Aug 5 22:40:10 2003 UTC (20 years, 9 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.37: +30 -1 lines
Log Message:
*** empty log message ***

File Contents

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