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