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