ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.64
Committed: Sun May 30 06:40:03 2004 UTC (20 years ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.63: +5 -5 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.64 <h1>$Revision: 1.63 $</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.9 Not checked.
2656    
2657 pcg 1.17 </p>
2658     <table border="1" width="100%">
2659     <tr>
2660     <th width="10%">NAME</th>
2661 pcg 1.37 <th width="8%">TYPE</th>
2662     <th width="4%">VALUE</th>
2663 pcg 1.17 <th>DESCRIPTION</th>
2664 pcg 1.37 <th width="10%">GUARD</th>
2665 pcg 1.1 </tr>
2666     <tr>
2667     <td>channel</td>
2668 pcg 1.3 <td>U16</td>
2669 pcg 1.17 <td> </td>
2670     <td>
2671    
2672      
2673     </td>
2674 pcg 1.3 <td>
2675 pcg 1.17 <b></b>
2676      
2677     </td>
2678 pcg 1.1 </tr>
2679     <tr>
2680     <td>time</td>
2681 pcg 1.3 <td>U32</td>
2682 pcg 1.17 <td> </td>
2683 pcg 1.3 <td>
2684 pcg 1.17
2685      
2686     </td>
2687     <td>
2688     <b></b>
2689      
2690     </td>
2691 pcg 1.1 </tr>
2692     <tr>
2693     <td>player</td>
2694 pcg 1.3 <td>U8</td>
2695 pcg 1.17 <td> </td>
2696     <td>
2697    
2698      
2699     </td>
2700 pcg 1.3 <td>
2701 pcg 1.17 <b></b>
2702      
2703     </td>
2704 pcg 1.1 </tr>
2705     </table>
2706    
2707 pcg 1.17 <h4>
2708 pcg 1.59 <a name="C440e"></a>ORIGIN: CLIENT;
2709     MESSAGE: req_undo</h4>
2710     NUMERIC TYPE (hex): 440e<p>
2711     </p>
2712     <table border="1" width="100%">
2713     <tr>
2714     <th width="10%">NAME</th>
2715     <th width="8%">TYPE</th>
2716     <th width="4%">VALUE</th>
2717     <th>DESCRIPTION</th>
2718     <th width="10%">GUARD</th>
2719     </tr>
2720     <tr>
2721     <td>channel</td>
2722     <td>U16</td>
2723     <td> </td>
2724     <td>
2725    
2726      
2727     </td>
2728     <td>
2729     <b></b>
2730      
2731     </td>
2732     </tr>
2733     </table>
2734    
2735     <h4>
2736 pcg 1.32 <a name="C440f"></a>ORIGIN: CLIENT;
2737     MESSAGE: grant_undo</h4>
2738 pcg 1.17 NUMERIC TYPE (hex): 440f<p>
2739     Can be send after a req_undo message was received to grant the undo.
2740     </p>
2741     <table border="1" width="100%">
2742 pcg 1.1 <tr>
2743 pcg 1.17 <th width="10%">NAME</th>
2744 pcg 1.37 <th width="8%">TYPE</th>
2745     <th width="4%">VALUE</th>
2746 pcg 1.17 <th>DESCRIPTION</th>
2747 pcg 1.37 <th width="10%">GUARD</th>
2748 pcg 1.1 </tr>
2749     <tr>
2750     <td>channel</td>
2751 pcg 1.3 <td>U16</td>
2752 pcg 1.17 <td> </td>
2753     <td>
2754    
2755      
2756     </td>
2757 pcg 1.3 <td>
2758 pcg 1.17 <b></b>
2759      
2760     </td>
2761 pcg 1.1 </tr>
2762     </table>
2763    
2764 pcg 1.17 <h4>
2765 pcg 1.32 <a name="C4410"></a>ORIGIN: CLIENT;
2766     MESSAGE: resign_game</h4>
2767 pcg 1.17 NUMERIC TYPE (hex): 4410<p>
2768     Resign the game.
2769     </p>
2770     <table border="1" width="100%">
2771 pcg 1.1 <tr>
2772 pcg 1.17 <th width="10%">NAME</th>
2773 pcg 1.37 <th width="8%">TYPE</th>
2774     <th width="4%">VALUE</th>
2775 pcg 1.17 <th>DESCRIPTION</th>
2776 pcg 1.37 <th width="10%">GUARD</th>
2777 pcg 1.1 </tr>
2778     <tr>
2779     <td>channel</td>
2780 pcg 1.3 <td>U16</td>
2781 pcg 1.17 <td> </td>
2782 pcg 1.3 <td>
2783 pcg 1.17
2784      
2785     </td>
2786     <td>
2787     <b></b>
2788      
2789     </td>
2790 pcg 1.1 </tr>
2791     <tr>
2792     <td>player</td>
2793 pcg 1.3 <td>U8</td>
2794 pcg 1.17 <td> </td>
2795     <td>
2796    
2797      
2798     </td>
2799 pcg 1.3 <td>
2800 pcg 1.17 <b></b>
2801      
2802     </td>
2803 pcg 1.1 </tr>
2804     </table>
2805    
2806 pcg 1.17 <h4>
2807 pcg 1.32 <a name="C441a"></a>ORIGIN: CLIENT;
2808     MESSAGE: set_teacher</h4>
2809 pcg 1.17 NUMERIC TYPE (hex): 441a<p>
2810 pcg 1.50 <p>Change the teacher to somebody else (or possibly yourself == take it). If the
2811     name is empty, the game will continue normally.</p>
2812     </p>
2813 pcg 1.17 <table border="1" width="100%">
2814 pcg 1.1 <tr>
2815 pcg 1.17 <th width="10%">NAME</th>
2816 pcg 1.37 <th width="8%">TYPE</th>
2817     <th width="4%">VALUE</th>
2818 pcg 1.17 <th>DESCRIPTION</th>
2819 pcg 1.37 <th width="10%">GUARD</th>
2820 pcg 1.1 </tr>
2821     <tr>
2822     <td>channel</td>
2823 pcg 1.3 <td>U16</td>
2824 pcg 1.17 <td> </td>
2825     <td>
2826    
2827      
2828     </td>
2829 pcg 1.3 <td>
2830 pcg 1.17 <b></b>
2831      
2832     </td>
2833 pcg 1.1 </tr>
2834     <tr>
2835     <td>name</td>
2836 pcg 1.3 <td>username</td>
2837 pcg 1.17 <td> </td>
2838     <td>
2839    
2840      
2841     </td>
2842 pcg 1.3 <td>
2843 pcg 1.17 <b></b>
2844      
2845     </td>
2846 pcg 1.1 </tr>
2847     </table>
2848    
2849 pcg 1.17 <h4>
2850 pcg 1.32 <a name="C4422"></a>ORIGIN: CLIENT;
2851 pcg 1.40 MESSAGE: allow_user</h4>
2852 pcg 1.17 NUMERIC TYPE (hex): 4422<p>
2853 pcg 1.50 <p>Unclear. Maybe allow users to talk? No idea, really.</p>
2854     </p>
2855 pcg 1.17 <table border="1" width="100%">
2856     <tr>
2857     <th width="10%">NAME</th>
2858 pcg 1.37 <th width="8%">TYPE</th>
2859     <th width="4%">VALUE</th>
2860 pcg 1.17 <th>DESCRIPTION</th>
2861 pcg 1.37 <th width="10%">GUARD</th>
2862 pcg 1.1 </tr>
2863     <tr>
2864     <td>channel</td>
2865 pcg 1.3 <td>U16</td>
2866 pcg 1.17 <td> </td>
2867     <td>
2868    
2869      
2870     </td>
2871 pcg 1.3 <td>
2872 pcg 1.17 <b></b>
2873      
2874     </td>
2875 pcg 1.1 </tr>
2876     <tr>
2877     <td>othername</td>
2878 pcg 1.3 <td>username</td>
2879 pcg 1.17 <td> </td>
2880 pcg 1.3 <td>
2881 pcg 1.17
2882      
2883     </td>
2884     <td>
2885     <b></b>
2886      
2887     </td>
2888 pcg 1.1 </tr>
2889     <tr>
2890     <td>name</td>
2891 pcg 1.3 <td>username</td>
2892 pcg 1.17 <td> </td>
2893     <td>; # gives user access to the game (to what? ;)
2894    
2895      
2896     </td>
2897 pcg 1.3 <td>
2898 pcg 1.17 <b></b>
2899      
2900     </td>
2901 pcg 1.1 </tr>
2902     </table>
2903    
2904 pcg 1.17 <h4>
2905 pcg 1.32 <a name="C4423"></a>ORIGIN: CLIENT;
2906     MESSAGE: set_privacy</h4>
2907 pcg 1.17 NUMERIC TYPE (hex): 4423<p>
2908     Probably sets the "quiet" flag. Not checked.
2909     </p>
2910     <table border="1" width="100%">
2911 pcg 1.1 <tr>
2912 pcg 1.17 <th width="10%">NAME</th>
2913 pcg 1.37 <th width="8%">TYPE</th>
2914     <th width="4%">VALUE</th>
2915 pcg 1.17 <th>DESCRIPTION</th>
2916 pcg 1.37 <th width="10%">GUARD</th>
2917 pcg 1.1 </tr>
2918     <tr>
2919     <td>channel</td>
2920 pcg 1.3 <td>U16</td>
2921 pcg 1.17 <td> </td>
2922     <td>
2923    
2924      
2925     </td>
2926 pcg 1.3 <td>
2927 pcg 1.17 <b></b>
2928      
2929     </td>
2930 pcg 1.1 </tr>
2931     <tr>
2932     <td>private</td>
2933 pcg 1.58 <td>flag</td>
2934 pcg 1.17 <td> </td>
2935 pcg 1.3 <td>
2936 pcg 1.17
2937      
2938     </td>
2939     <td>
2940     <b></b>
2941      
2942     </td>
2943 pcg 1.1 </tr>
2944     </table>
2945    
2946 pcg 1.17 <h4>
2947 pcg 1.60 <a name="C4427"></a>ORIGIN: CLIENT;
2948 pcg 1.61 MESSAGE: game_move</h4>
2949 pcg 1.60 NUMERIC TYPE (hex): 4427<p>
2950     <p>Only during playing, moves.</p>
2951     </p>
2952     <table border="1" width="100%">
2953     <tr>
2954     <th width="10%">NAME</th>
2955     <th width="8%">TYPE</th>
2956     <th width="4%">VALUE</th>
2957     <th>DESCRIPTION</th>
2958     <th width="10%">GUARD</th>
2959     </tr>
2960     <tr>
2961     <td>channel</td>
2962     <td>U16</td>
2963     <td> </td>
2964     <td>
2965    
2966      
2967     </td>
2968     <td>
2969     <b></b>
2970      
2971     </td>
2972     </tr>
2973     <tr>
2974     <td>x</td>
2975     <td>U8</td>
2976     <td> </td>
2977     <td>
2978    
2979      
2980     </td>
2981     <td>
2982     <b></b>
2983      
2984     </td>
2985     </tr>
2986     <tr>
2987     <td>y</td>
2988     <td>U8</td>
2989     <td> </td>
2990     <td>
2991    
2992      
2993     </td>
2994     <td>
2995     <b></b>
2996      
2997     </td>
2998     </tr>
2999     </table>
3000    
3001     <h4>
3002 pcg 1.32 <a name="C4429"></a>ORIGIN: CLIENT;
3003     MESSAGE: reject_challenge</h4>
3004 pcg 1.17 NUMERIC TYPE (hex): 4429<p>
3005 pcg 1.9 Reject a challenge from a given user. Not checked.
3006    
3007 pcg 1.17 </p>
3008     <table border="1" width="100%">
3009     <tr>
3010     <th width="10%">NAME</th>
3011 pcg 1.37 <th width="8%">TYPE</th>
3012     <th width="4%">VALUE</th>
3013 pcg 1.17 <th>DESCRIPTION</th>
3014 pcg 1.37 <th width="10%">GUARD</th>
3015 pcg 1.1 </tr>
3016     <tr>
3017     <td>channel</td>
3018 pcg 1.3 <td>U16</td>
3019 pcg 1.17 <td> </td>
3020     <td>
3021    
3022      
3023     </td>
3024 pcg 1.3 <td>
3025 pcg 1.17 <b></b>
3026      
3027     </td>
3028 pcg 1.1 </tr>
3029     <tr>
3030     <td>name</td>
3031 pcg 1.3 <td>username</td>
3032 pcg 1.17 <td> </td>
3033     <td>
3034 pcg 1.60
3035      
3036     </td>
3037     <td>
3038     <b></b>
3039      
3040     </td>
3041     </tr>
3042     <tr>
3043     <td>gametype</td>
3044     <td>U8</td>
3045     <td> </td>
3046     <td>
3047    
3048      
3049     </td>
3050     <td>
3051     <b></b>
3052      
3053     </td>
3054     </tr>
3055     <tr>
3056     <td>cid</td>
3057     <td>CLIENTID8</td>
3058     <td> </td>
3059     <td>
3060    
3061      
3062     </td>
3063     <td>
3064     <b></b>
3065      
3066     </td>
3067     </tr>
3068     <tr>
3069     <td>rules</td>
3070     <td>rules</td>
3071     <td> </td>
3072     <td>
3073 pcg 1.17
3074      
3075     </td>
3076 pcg 1.3 <td>
3077 pcg 1.17 <b></b>
3078      
3079     </td>
3080 pcg 1.1 </tr>
3081     </table>
3082    
3083 pcg 1.17 <h4>
3084 pcg 1.46 <a name="C442e"></a>ORIGIN: CLIENT;
3085     MESSAGE: save_game</h4>
3086     NUMERIC TYPE (hex): 442e<p>
3087     <p>Is send when a game is closed and should be saved on the gamerecord.</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     </table>
3111    
3112     <h4>
3113 pcg 1.32 <a name="C4433"></a>ORIGIN: CLIENT;
3114     MESSAGE: req_result</h4>
3115 pcg 1.17 NUMERIC TYPE (hex): 4433<p>
3116 pcg 1.9 I forgot.
3117    
3118 pcg 1.17 </p>
3119     <table border="1" width="100%">
3120     <tr>
3121     <th width="10%">NAME</th>
3122 pcg 1.37 <th width="8%">TYPE</th>
3123     <th width="4%">VALUE</th>
3124 pcg 1.17 <th>DESCRIPTION</th>
3125 pcg 1.37 <th width="10%">GUARD</th>
3126 pcg 1.1 </tr>
3127     <tr>
3128     <td>channel</td>
3129 pcg 1.3 <td>U16</td>
3130 pcg 1.35 <td> </td>
3131     <td>
3132    
3133      
3134     </td>
3135     <td>
3136     <b></b>
3137      
3138     </td>
3139     </tr>
3140     </table>
3141    
3142     <h4>
3143 pcg 1.48 <a name="C4434"></a>ORIGIN: CLIENT;
3144     MESSAGE: set_quiet</h4>
3145     NUMERIC TYPE (hex): 4434<p>
3146     <p>Sets (or clears) the quiet flag on a game.</p>
3147     </p>
3148     <table border="1" width="100%">
3149     <tr>
3150     <th width="10%">NAME</th>
3151     <th width="8%">TYPE</th>
3152     <th width="4%">VALUE</th>
3153     <th>DESCRIPTION</th>
3154     <th width="10%">GUARD</th>
3155     </tr>
3156     <tr>
3157     <td>channel</td>
3158     <td>U16</td>
3159     <td> </td>
3160     <td>
3161    
3162      
3163     </td>
3164     <td>
3165     <b></b>
3166      
3167     </td>
3168     </tr>
3169     <tr>
3170     <td>quiet</td>
3171 pcg 1.58 <td>flag</td>
3172 pcg 1.48 <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.35 <a name="C4436"></a>ORIGIN: CLIENT;
3186     MESSAGE: msg_game</h4>
3187     NUMERIC TYPE (hex): 4436<p>
3188     </p>
3189     <table border="1" width="100%">
3190     <tr>
3191     <th width="10%">NAME</th>
3192 pcg 1.37 <th width="8%">TYPE</th>
3193     <th width="4%">VALUE</th>
3194 pcg 1.35 <th>DESCRIPTION</th>
3195 pcg 1.37 <th width="10%">GUARD</th>
3196 pcg 1.35 </tr>
3197     <tr>
3198     <td>channel</td>
3199     <td>U16</td>
3200     <td> </td>
3201     <td>
3202    
3203      
3204     </td>
3205     <td>
3206     <b></b>
3207      
3208     </td>
3209     </tr>
3210     <tr>
3211     <td>message</td>
3212     <td>STRING</td>
3213 pcg 1.17 <td> </td>
3214 pcg 1.3 <td>
3215 pcg 1.17
3216      
3217     </td>
3218     <td>
3219     <b></b>
3220      
3221     </td>
3222 pcg 1.1 </tr>
3223     </table>
3224    
3225 pcg 1.37 <h4>
3226     <a name="Cffff"></a>ORIGIN: CLIENT;
3227     MESSAGE: quit</h4>
3228     NUMERIC TYPE (hex): ffff<p>
3229     <p>Sent by the client just before it logs out.</p>
3230     </p>
3231     <table border="1" width="100%">
3232     <tr>
3233     <th width="10%">NAME</th>
3234     <th width="8%">TYPE</th>
3235     <th width="4%">VALUE</th>
3236     <th>DESCRIPTION</th>
3237     <th width="10%">GUARD</th>
3238     </tr>
3239     </table>
3240    
3241 pcg 1.32 <h2>Structs mainly used in messages send by the server</h2>
3242 pcg 1.1
3243 pcg 1.3 <h4>STRUCTURE challenge_defaults</h4>
3244 pcg 1.17 <p>
3245     Send soon after log-in to set the defaults for game challenges.
3246     </p>
3247     <table border="1" width="100%">
3248 pcg 1.1 <tr>
3249 pcg 1.17 <th width="10%">NAME</th>
3250 pcg 1.37 <th width="8%">TYPE</th>
3251     <th width="4%">VALUE</th>
3252 pcg 1.17 <th>DESCRIPTION</th>
3253 pcg 1.37 <th width="10%">GUARD</th>
3254 pcg 1.1 </tr>
3255     <tr>
3256 pcg 1.60 <td>gametype</td>
3257 pcg 1.59 <td>U8</td>
3258     <td> </td>
3259     <td>
3260    
3261      
3262     </td>
3263     <td>
3264     <b></b>
3265      
3266     </td>
3267     </tr>
3268     <tr>
3269     <td>ruleset</td>
3270     <td>U8</td>
3271 pcg 1.17 <td> </td>
3272     <td>
3273    
3274      
3275     </td>
3276 pcg 1.3 <td>
3277 pcg 1.17 <b></b>
3278      
3279     </td>
3280 pcg 1.1 </tr>
3281     <tr>
3282     <td>size</td>
3283 pcg 1.3 <td>U32</td>
3284 pcg 1.17 <td> </td>
3285     <td>
3286    
3287      
3288     </td>
3289 pcg 1.3 <td>
3290 pcg 1.17 <b></b>
3291      
3292     </td>
3293 pcg 1.1 </tr>
3294     <tr>
3295     <td>timesys</td>
3296 pcg 1.3 <td>U32</td>
3297 pcg 1.17 <td> </td>
3298     <td>
3299    
3300      
3301     </td>
3302 pcg 1.3 <td>
3303 pcg 1.17 <b></b>
3304      
3305     </td>
3306 pcg 1.1 </tr>
3307     <tr>
3308     <td>time</td>
3309 pcg 1.3 <td>U32</td>
3310 pcg 1.17 <td> </td>
3311     <td>
3312    
3313      
3314     </td>
3315 pcg 1.3 <td>
3316 pcg 1.17 <b></b>
3317      
3318     </td>
3319 pcg 1.1 </tr>
3320     <tr>
3321     <td>byo_time</td>
3322 pcg 1.3 <td>U32</td>
3323 pcg 1.17 <td> </td>
3324     <td>
3325    
3326      
3327     </td>
3328 pcg 1.3 <td>
3329 pcg 1.17 <b></b>
3330      
3331     </td>
3332 pcg 1.1 </tr>
3333     <tr>
3334     <td>byo_periods</td>
3335 pcg 1.3 <td>U32</td>
3336 pcg 1.17 <td> </td>
3337     <td>
3338    
3339      
3340     </td>
3341 pcg 1.3 <td>
3342 pcg 1.17 <b></b>
3343      
3344     </td>
3345 pcg 1.1 </tr>
3346     <tr>
3347     <td>can_time</td>
3348 pcg 1.3 <td>U32</td>
3349 pcg 1.17 <td> </td>
3350     <td>
3351    
3352      
3353     </td>
3354 pcg 1.3 <td>
3355 pcg 1.17 <b></b>
3356      
3357     </td>
3358 pcg 1.1 </tr>
3359     <tr>
3360     <td>can_stones</td>
3361 pcg 1.3 <td>U32</td>
3362 pcg 1.17 <td> </td>
3363     <td>
3364 pcg 1.58
3365      
3366     </td>
3367     <td>
3368     <b></b>
3369      
3370     </td>
3371     </tr>
3372     <tr>
3373     <td>notes</td>
3374     <td>STRING</td>
3375     <td> </td>
3376     <td>
3377 pcg 1.17
3378      
3379     </td>
3380 pcg 1.3 <td>
3381 pcg 1.17 <b></b>
3382      
3383     </td>
3384 pcg 1.1 </tr>
3385     </table>
3386    
3387 pcg 1.3 <h4>STRUCTURE game</h4>
3388     CLASS: KGS::Game<br />
3389 pcg 1.17 <p>
3390 pcg 1.9 Basic information about a game. Used in rooms for the gamelist and
3391     in games to detect when a game is saved, changed type (e.g. R =&gt; D)
3392     etc.
3393    
3394 pcg 1.17 </p>
3395     <table border="1" width="100%">
3396     <tr>
3397     <th width="10%">NAME</th>
3398 pcg 1.37 <th width="8%">TYPE</th>
3399     <th width="4%">VALUE</th>
3400 pcg 1.17 <th>DESCRIPTION</th>
3401 pcg 1.37 <th width="10%">GUARD</th>
3402 pcg 1.1 </tr>
3403     <tr>
3404     <td>channel</td>
3405 pcg 1.3 <td>U16</td>
3406 pcg 1.17 <td> </td>
3407     <td>
3408    
3409      
3410     </td>
3411 pcg 1.3 <td>
3412 pcg 1.17 <b></b>
3413      
3414     </td>
3415 pcg 1.1 </tr>
3416     <tr>
3417 pcg 1.3 <td>type</td>
3418 pcg 1.25 <td>U8</td>
3419 pcg 1.17 <td> </td>
3420     <td>
3421    
3422      
3423     </td>
3424 pcg 1.3 <td>
3425 pcg 1.17 <b></b>
3426      
3427     </td>
3428 pcg 1.1 </tr>
3429     <tr>
3430 pcg 1.60 <td>black</td>
3431 pcg 1.1 <td>user</td>
3432 pcg 1.17 <td> </td>
3433 pcg 1.3 <td>
3434 pcg 1.1 White
3435 pcg 1.17
3436      
3437     </td>
3438     <td>
3439     <b></b>
3440      
3441     </td>
3442 pcg 1.1 </tr>
3443     <tr>
3444 pcg 1.60 <td>white</td>
3445 pcg 1.1 <td>user</td>
3446 pcg 1.17 <td> </td>
3447 pcg 1.3 <td>
3448 pcg 1.1 Black
3449 pcg 1.17
3450      
3451     </td>
3452     <td>
3453     <b></b>
3454      
3455     </td>
3456 pcg 1.1 </tr>
3457     <tr>
3458 pcg 1.60 <td>owner</td>
3459 pcg 1.1 <td>user</td>
3460 pcg 1.17 <td> </td>
3461 pcg 1.3 <td>
3462 pcg 1.1 Owner
3463 pcg 1.17
3464      
3465     </td>
3466     <td>
3467     <b></b>
3468      
3469     </td>
3470 pcg 1.1 </tr>
3471     <tr>
3472     <td>size</td>
3473 pcg 1.25 <td>U8</td>
3474 pcg 1.17 <td> </td>
3475     <td>
3476    
3477      
3478     </td>
3479 pcg 1.3 <td>
3480 pcg 1.17 <b></b>
3481      
3482     </td>
3483 pcg 1.1 </tr>
3484     <tr>
3485     <td>handicap</td>
3486 pcg 1.25 <td>I8</td>
3487 pcg 1.17 <td> </td>
3488 pcg 1.3 <td>
3489 pcg 1.1 &lt; 0 not fully setup
3490 pcg 1.17
3491      
3492     </td>
3493     <td>
3494     <b></b>
3495      
3496     </td>
3497 pcg 1.1 </tr>
3498     <tr>
3499     <td>komi</td>
3500 pcg 1.25 <td>komi16</td>
3501 pcg 1.17 <td> </td>
3502     <td>
3503    
3504      
3505     </td>
3506 pcg 1.3 <td>
3507 pcg 1.17 <b></b>
3508      
3509     </td>
3510 pcg 1.1 </tr>
3511     <tr>
3512     <td>moves</td>
3513 pcg 1.13 <td>I16</td>
3514 pcg 1.17 <td> </td>
3515 pcg 1.3 <td>
3516 pcg 1.12 This field reflects either the movenum or the score, sorry, not even guards help, as
3517 pcg 1.13 the flags to determine that are _after_ the field. Arg. Divide by two to get the actual
3518 pcg 1.26 score (NOT score16!) (arg²).
3519 pcg 1.17
3520      
3521     </td>
3522     <td>
3523     <b></b>
3524      
3525     </td>
3526 pcg 1.1 </tr>
3527     <tr>
3528     <td>flags</td>
3529 pcg 1.3 <td>U16</td>
3530 pcg 1.17 <td> </td>
3531     <td>
3532    
3533      
3534     </td>
3535 pcg 1.3 <td>
3536 pcg 1.17 <b></b>
3537      
3538     </td>
3539 pcg 1.1 </tr>
3540     <tr>
3541     <td>observers</td>
3542 pcg 1.3 <td>U32</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>saved</td>
3555 pcg 1.3 <td>flag</td>
3556 pcg 1.17 <td> </td>
3557     <td>
3558    
3559      
3560     </td>
3561 pcg 1.3 <td>
3562 pcg 1.17 <b></b>
3563      
3564     </td>
3565 pcg 1.1 </tr>
3566     <tr>
3567     <td>notes</td>
3568     <td>STRING</td>
3569 pcg 1.17 <td> </td>
3570     <td>
3571    
3572      
3573     </td>
3574 pcg 1.3 <td>
3575 pcg 1.17 <b>handicap</b> &lt; 0
3576      
3577     </td>
3578 pcg 1.1 </tr>
3579     </table>
3580    
3581 pcg 1.3 <h4>STRUCTURE room_obs</h4>
3582 pcg 1.17 <p>
3583 pcg 1.9 Obsolete.
3584    
3585 pcg 1.17 </p>
3586     <table border="1" width="100%">
3587     <tr>
3588     <th width="10%">NAME</th>
3589 pcg 1.37 <th width="8%">TYPE</th>
3590     <th width="4%">VALUE</th>
3591 pcg 1.17 <th>DESCRIPTION</th>
3592 pcg 1.37 <th width="10%">GUARD</th>
3593 pcg 1.1 </tr>
3594     <tr>
3595     <td>name</td>
3596 pcg 1.3 <td>roomname</td>
3597 pcg 1.17 <td> </td>
3598 pcg 1.3 <td>
3599 pcg 1.17
3600      
3601     </td>
3602     <td>
3603     <b></b>
3604      
3605     </td>
3606 pcg 1.1 </tr>
3607     <tr>
3608     <td>channel</td>
3609 pcg 1.3 <td>U16</td>
3610 pcg 1.17 <td> </td>
3611     <td>
3612    
3613      
3614     </td>
3615 pcg 1.3 <td>
3616 pcg 1.17 <b></b>
3617      
3618     </td>
3619 pcg 1.1 </tr>
3620     <tr>
3621     <td>flags</td>
3622 pcg 1.3 <td>U32</td>
3623 pcg 1.17 <td> </td>
3624 pcg 1.3 <td>
3625 pcg 1.17
3626      
3627     </td>
3628     <td>
3629     <b></b>
3630      
3631     </td>
3632 pcg 1.1 </tr>
3633     <tr>
3634     <td>users</td>
3635 pcg 1.3 <td>U32</td>
3636 pcg 1.17 <td> </td>
3637     <td>
3638    
3639      
3640     </td>
3641 pcg 1.3 <td>
3642 pcg 1.17 <b></b>
3643      
3644     </td>
3645 pcg 1.1 </tr>
3646     </table>
3647    
3648 pcg 1.3 <h4>STRUCTURE room</h4>
3649     CLASS: KGS::Room<br />
3650 pcg 1.17 <p>
3651     </p>
3652     <table border="1" width="100%">
3653 pcg 1.1 <tr>
3654 pcg 1.17 <th width="10%">NAME</th>
3655 pcg 1.37 <th width="8%">TYPE</th>
3656     <th width="4%">VALUE</th>
3657 pcg 1.17 <th>DESCRIPTION</th>
3658 pcg 1.37 <th width="10%">GUARD</th>
3659 pcg 1.1 </tr>
3660     <tr>
3661     <td>channel</td>
3662 pcg 1.3 <td>U16</td>
3663 pcg 1.17 <td> </td>
3664     <td>
3665    
3666      
3667     </td>
3668 pcg 1.3 <td>
3669 pcg 1.17 <b></b>
3670      
3671     </td>
3672 pcg 1.1 </tr>
3673     <tr>
3674     <td>flags</td>
3675 pcg 1.3 <td>U8</td>
3676 pcg 1.17 <td> </td>
3677     <td>
3678    
3679      
3680     </td>
3681 pcg 1.3 <td>
3682 pcg 1.17 <b></b>
3683      
3684     </td>
3685 pcg 1.1 </tr>
3686     <tr>
3687     <td>group</td>
3688 pcg 1.3 <td>U8</td>
3689 pcg 1.17 <td> </td>
3690     <td>
3691    
3692      
3693     </td>
3694 pcg 1.3 <td>
3695 pcg 1.17 <b></b>
3696      
3697     </td>
3698 pcg 1.1 </tr>
3699     <tr>
3700     <td>users</td>
3701 pcg 1.3 <td>U16</td>
3702 pcg 1.17 <td> </td>
3703     <td>
3704    
3705      
3706     </td>
3707 pcg 1.3 <td>
3708 pcg 1.17 <b></b>
3709      
3710     </td>
3711 pcg 1.1 </tr>
3712     <tr>
3713     <td>games</td>
3714 pcg 1.3 <td>U16</td>
3715 pcg 1.17 <td> </td>
3716     <td>
3717    
3718      
3719     </td>
3720 pcg 1.3 <td>
3721 pcg 1.17 <b></b>
3722      
3723     </td>
3724 pcg 1.1 </tr>
3725     <tr>
3726     <td>name</td>
3727     <td>STRING</td>
3728 pcg 1.17 <td> </td>
3729     <td>
3730    
3731      
3732     </td>
3733 pcg 1.3 <td>
3734 pcg 1.17 <b></b>
3735      
3736     </td>
3737 pcg 1.1 </tr>
3738     </table>
3739    
3740 pcg 1.10 <h4>STRUCTURE scorevalues</h4>
3741 pcg 1.3 CLASS: KGS::Score<br />
3742 pcg 1.17 <p>
3743     </p>
3744     <table border="1" width="100%">
3745     <tr>
3746     <th width="10%">NAME</th>
3747 pcg 1.37 <th width="8%">TYPE</th>
3748     <th width="4%">VALUE</th>
3749 pcg 1.17 <th>DESCRIPTION</th>
3750 pcg 1.37 <th width="10%">GUARD</th>
3751 pcg 1.1 </tr>
3752     <tr>
3753     <td>score</td>
3754 pcg 1.11 <td>score32</td>
3755 pcg 1.17 <td> </td>
3756     <td>
3757    
3758      
3759     </td>
3760 pcg 1.3 <td>
3761 pcg 1.17 <b></b>
3762      
3763     </td>
3764 pcg 1.1 </tr>
3765     <tr>
3766     <td>territory</td>
3767 pcg 1.3 <td>U32</td>
3768 pcg 1.17 <td> </td>
3769     <td>
3770    
3771      
3772     </td>
3773 pcg 1.3 <td>
3774 pcg 1.17 <b></b>
3775      
3776     </td>
3777 pcg 1.1 </tr>
3778     <tr>
3779     <td>captures</td>
3780 pcg 1.3 <td>U32</td>
3781 pcg 1.17 <td> </td>
3782     <td>
3783    
3784      
3785     </td>
3786 pcg 1.3 <td>
3787 pcg 1.17 <b></b>
3788      
3789     </td>
3790 pcg 1.1 </tr>
3791     <tr>
3792     <td>i3</td>
3793 pcg 1.3 <td>U32</td>
3794 pcg 1.17 <td> </td>
3795     <td>
3796    
3797      
3798     </td>
3799 pcg 1.3 <td>
3800 pcg 1.17 <b></b>
3801      
3802     </td>
3803 pcg 1.1 </tr>
3804     <tr>
3805     <td>f2</td>
3806 pcg 1.3 <td>U32</td>
3807 pcg 1.17 <td> </td>
3808     <td>
3809    
3810      
3811     </td>
3812 pcg 1.3 <td>
3813 pcg 1.17 <b></b>
3814      
3815     </td>
3816 pcg 1.1 </tr>
3817     <tr>
3818     <td>komi</td>
3819 pcg 1.19 <td>komi324</td>
3820 pcg 1.17 <td> </td>
3821     <td>
3822    
3823      
3824     </td>
3825 pcg 1.3 <td>
3826 pcg 1.17 <b></b>
3827      
3828     </td>
3829 pcg 1.1 </tr>
3830     <tr>
3831     <td>i4</td>
3832 pcg 1.3 <td>U32</td>
3833 pcg 1.17 <td> </td>
3834 pcg 1.3 <td>
3835     Apparently the i3, f2, i4 are zero.
3836 pcg 1.17
3837      
3838     </td>
3839     <td>
3840     <b></b>
3841      
3842     </td>
3843 pcg 1.1 </tr>
3844     </table>
3845    
3846 pcg 1.14 <h4>STRUCTURE game_record</h4>
3847     CLASS: KGS::GameRecord<br />
3848 pcg 1.17 <p>
3849 pcg 1.32 <p>A single game record entry, as seen in <a href="#S0008">userinfo(0008)</a>.</p>
3850 pcg 1.17 </p>
3851     <table border="1" width="100%">
3852 pcg 1.14 <tr>
3853 pcg 1.17 <th width="10%">NAME</th>
3854 pcg 1.37 <th width="8%">TYPE</th>
3855     <th width="4%">VALUE</th>
3856 pcg 1.17 <th>DESCRIPTION</th>
3857 pcg 1.37 <th width="10%">GUARD</th>
3858 pcg 1.14 </tr>
3859     <tr>
3860     <td>timestamp</td>
3861     <td>timestamp</td>
3862 pcg 1.17 <td> </td>
3863 pcg 1.14 <td>
3864     Time this game was played.
3865 pcg 1.17
3866      
3867     </td>
3868     <td>
3869     <b></b>
3870      
3871     </td>
3872 pcg 1.14 </tr>
3873     <tr>
3874 pcg 1.42 <td>flags1</td>
3875 pcg 1.14 <td>U8</td>
3876 pcg 1.17 <td> </td>
3877 pcg 1.14 <td>
3878 pcg 1.17
3879      
3880     </td>
3881     <td>
3882     <b></b>
3883      
3884     </td>
3885 pcg 1.14 </tr>
3886     <tr>
3887 pcg 1.60 <td>black</td>
3888 pcg 1.14 <td>user</td>
3889 pcg 1.17 <td> </td>
3890 pcg 1.14 <td>
3891     White, flags contain low 8 bits of revision (bits 16-23).
3892 pcg 1.17
3893      
3894     </td>
3895     <td>
3896     <b></b>
3897      
3898     </td>
3899 pcg 1.14 </tr>
3900     <tr>
3901 pcg 1.60 <td>white</td>
3902 pcg 1.14 <td>user</td>
3903 pcg 1.17 <td> </td>
3904 pcg 1.14 <td>
3905     Black, flags contain high 8 bits of revision (bits 16-23).
3906 pcg 1.17
3907      
3908     </td>
3909     <td>
3910     <b></b>
3911      
3912     </td>
3913 pcg 1.14 </tr>
3914     <tr>
3915 pcg 1.60 <td>owner</td>
3916 pcg 1.14 <td>user</td>
3917 pcg 1.17 <td> </td>
3918 pcg 1.14 <td>
3919 pcg 1.34
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.42 <td>flags2</td>
3930     <td>U16</td>
3931 pcg 1.17 <td> </td>
3932     <td>
3933    
3934      
3935     </td>
3936 pcg 1.14 <td>
3937 pcg 1.17 <b></b>
3938      
3939     </td>
3940 pcg 1.14 </tr>
3941     <tr>
3942     <td>score</td>
3943     <td>score16</td>
3944 pcg 1.17 <td> </td>
3945 pcg 1.14 <td>
3946 pcg 1.17
3947      
3948     </td>
3949     <td>
3950     <b></b>
3951      
3952     </td>
3953 pcg 1.14 </tr>
3954     <tr>
3955 pcg 1.42 <td>flags3</td>
3956 pcg 1.14 <td>U8</td>
3957 pcg 1.17 <td> </td>
3958 pcg 1.14 <td>
3959 pcg 1.34
3960    
3961 pcg 1.17  
3962     </td>
3963     <td>
3964     <b></b>
3965      
3966     </td>
3967 pcg 1.14 </tr>
3968     </table>
3969    
3970 pcg 1.32 <h2>Server-generated messages</h2>
3971 pcg 1.1
3972 pcg 1.17 <h4>
3973 pcg 1.32 <a name="S0001"></a>ORIGIN: SERVER;
3974     MESSAGE: login</h4>
3975 pcg 1.17 NUMERIC TYPE (hex): 0001
3976     (possibly in response to
3977 pcg 1.32 <a href="#C0000">login(0000)</a>
3978 pcg 1.17 )
3979     <p>
3980     </p>
3981     <table border="1" width="100%">
3982     <tr>
3983     <th width="10%">NAME</th>
3984 pcg 1.37 <th width="8%">TYPE</th>
3985     <th width="4%">VALUE</th>
3986 pcg 1.17 <th>DESCRIPTION</th>
3987 pcg 1.37 <th width="10%">GUARD</th>
3988 pcg 1.1 </tr>
3989     <tr>
3990 pcg 1.40 <td>message</td>
3991 pcg 1.1 <td>CONSTANT</td>
3992 pcg 1.40 <td>login successful </td>
3993 pcg 1.17 <td>
3994    
3995      
3996     </td>
3997 pcg 1.3 <td>
3998 pcg 1.17 <b></b>
3999      
4000     </td>
4001 pcg 1.1 </tr>
4002     <tr>
4003     <td>success</td>
4004     <td>CONSTANT</td>
4005 pcg 1.17 <td>1 </td>
4006 pcg 1.3 <td>
4007 pcg 1.17
4008      
4009     </td>
4010     <td>
4011     <b></b>
4012      
4013     </td>
4014 pcg 1.1 </tr>
4015     </table>
4016    
4017 pcg 1.17 <h4>
4018 pcg 1.32 <a name="S0002"></a>ORIGIN: SERVER;
4019     MESSAGE: login</h4>
4020 pcg 1.17 NUMERIC TYPE (hex): 0002
4021     (possibly in response to
4022 pcg 1.32 <a href="#C0000">login(0000)</a>
4023 pcg 1.17 )
4024     <p>
4025     </p>
4026     <table border="1" width="100%">
4027     <tr>
4028     <th width="10%">NAME</th>
4029 pcg 1.37 <th width="8%">TYPE</th>
4030     <th width="4%">VALUE</th>
4031 pcg 1.17 <th>DESCRIPTION</th>
4032 pcg 1.37 <th width="10%">GUARD</th>
4033 pcg 1.1 </tr>
4034     <tr>
4035 pcg 1.40 <td>message</td>
4036 pcg 1.1 <td>CONSTANT</td>
4037 pcg 1.40 <td>login successful: client version is outdated. </td>
4038 pcg 1.3 <td>
4039 pcg 1.17
4040      
4041     </td>
4042     <td>
4043     <b></b>
4044      
4045     </td>
4046 pcg 1.1 </tr>
4047     <tr>
4048     <td>success</td>
4049     <td>CONSTANT</td>
4050 pcg 1.17 <td>1 </td>
4051     <td>
4052    
4053      
4054     </td>
4055 pcg 1.3 <td>
4056 pcg 1.17 <b></b>
4057      
4058     </td>
4059 pcg 1.1 </tr>
4060     </table>
4061    
4062 pcg 1.17 <h4>
4063 pcg 1.32 <a name="S0003"></a>ORIGIN: SERVER;
4064     MESSAGE: login</h4>
4065 pcg 1.17 NUMERIC TYPE (hex): 0003
4066     (possibly in response to
4067 pcg 1.32 <a href="#C0000">login(0000)</a>
4068 pcg 1.17 )
4069     <p>
4070     </p>
4071     <table border="1" width="100%">
4072     <tr>
4073     <th width="10%">NAME</th>
4074 pcg 1.37 <th width="8%">TYPE</th>
4075     <th width="4%">VALUE</th>
4076 pcg 1.17 <th>DESCRIPTION</th>
4077 pcg 1.37 <th width="10%">GUARD</th>
4078 pcg 1.1 </tr>
4079     <tr>
4080 pcg 1.40 <td>message</td>
4081 pcg 1.1 <td>CONSTANT</td>
4082 pcg 1.40 <td>login failed: client version out of date </td>
4083 pcg 1.3 <td>
4084 pcg 1.1 ** maybe more following? **
4085 pcg 1.17
4086      
4087     </td>
4088     <td>
4089     <b></b>
4090      
4091     </td>
4092 pcg 1.1 </tr>
4093     </table>
4094    
4095 pcg 1.17 <h4>
4096 pcg 1.32 <a name="S0004"></a>ORIGIN: SERVER;
4097     MESSAGE: login</h4>
4098 pcg 1.17 NUMERIC TYPE (hex): 0004
4099     (possibly in response to
4100 pcg 1.32 <a href="#C0000">login(0000)</a>
4101 pcg 1.17 )
4102     <p>
4103     </p>
4104     <table border="1" width="100%">
4105     <tr>
4106     <th width="10%">NAME</th>
4107 pcg 1.37 <th width="8%">TYPE</th>
4108     <th width="4%">VALUE</th>
4109 pcg 1.17 <th>DESCRIPTION</th>
4110 pcg 1.37 <th width="10%">GUARD</th>
4111 pcg 1.1 </tr>
4112     <tr>
4113 pcg 1.40 <td>message</td>
4114 pcg 1.1 <td>CONSTANT</td>
4115 pcg 1.40 <td>login failed: wrong password </td>
4116 pcg 1.3 <td>
4117 pcg 1.1 ** maybe more following? **
4118 pcg 1.17
4119      
4120     </td>
4121     <td>
4122     <b></b>
4123      
4124     </td>
4125 pcg 1.1 </tr>
4126     </table>
4127    
4128 pcg 1.17 <h4>
4129 pcg 1.32 <a name="S0005"></a>ORIGIN: SERVER;
4130     MESSAGE: login</h4>
4131 pcg 1.17 NUMERIC TYPE (hex): 0005
4132     (possibly in response to
4133 pcg 1.32 <a href="#C0000">login(0000)</a>
4134 pcg 1.17 )
4135     <p>
4136     </p>
4137     <table border="1" width="100%">
4138     <tr>
4139     <th width="10%">NAME</th>
4140 pcg 1.37 <th width="8%">TYPE</th>
4141     <th width="4%">VALUE</th>
4142 pcg 1.17 <th>DESCRIPTION</th>
4143 pcg 1.37 <th width="10%">GUARD</th>
4144 pcg 1.1 </tr>
4145     <tr>
4146 pcg 1.40 <td>message</td>
4147 pcg 1.1 <td>CONSTANT</td>
4148 pcg 1.40 <td>login failed: specified user does not exist </td>
4149 pcg 1.3 <td>
4150 pcg 1.17
4151      
4152     </td>
4153     <td>
4154     <b></b>
4155      
4156     </td>
4157 pcg 1.1 </tr>
4158     </table>
4159    
4160 pcg 1.17 <h4>
4161 pcg 1.32 <a name="S0006"></a>ORIGIN: SERVER;
4162     MESSAGE: login</h4>
4163 pcg 1.17 NUMERIC TYPE (hex): 0006
4164     (possibly in response to
4165 pcg 1.32 <a href="#C0000">login(0000)</a>
4166 pcg 1.17 )
4167     <p>
4168     </p>
4169     <table border="1" width="100%">
4170     <tr>
4171     <th width="10%">NAME</th>
4172 pcg 1.37 <th width="8%">TYPE</th>
4173     <th width="4%">VALUE</th>
4174 pcg 1.17 <th>DESCRIPTION</th>
4175 pcg 1.37 <th width="10%">GUARD</th>
4176 pcg 1.1 </tr>
4177     <tr>
4178 pcg 1.40 <td>message</td>
4179 pcg 1.1 <td>CONSTANT</td>
4180 pcg 1.56 <td>login failed: user of same name logged in </td>
4181 pcg 1.3 <td>
4182 pcg 1.17
4183      
4184     </td>
4185     <td>
4186     <b></b>
4187      
4188     </td>
4189 pcg 1.1 </tr>
4190     </table>
4191    
4192 pcg 1.17 <h4>
4193 pcg 1.32 <a name="S0008"></a>ORIGIN: SERVER;
4194     MESSAGE: userinfo</h4>
4195 pcg 1.17 NUMERIC TYPE (hex): 0008
4196     (possibly in response to
4197 pcg 1.32 <a href="#C0007">req_userinfo(0007)</a>
4198 pcg 1.17 )
4199     <p>
4200     User info.
4201     </p>
4202     <table border="1" width="100%">
4203 pcg 1.14 <tr>
4204 pcg 1.17 <th width="10%">NAME</th>
4205 pcg 1.37 <th width="8%">TYPE</th>
4206     <th width="4%">VALUE</th>
4207 pcg 1.17 <th>DESCRIPTION</th>
4208 pcg 1.37 <th width="10%">GUARD</th>
4209 pcg 1.14 </tr>
4210     <tr>
4211 pcg 1.33 <td>_unused0</td>
4212     <td>flag</td>
4213     <td> </td>
4214     <td>
4215    
4216      
4217     </td>
4218     <td>
4219     <b></b>
4220      
4221     </td>
4222     </tr>
4223     <tr>
4224 pcg 1.14 <td>user</td>
4225     <td>user</td>
4226 pcg 1.17 <td> </td>
4227     <td>
4228    
4229      
4230     </td>
4231 pcg 1.14 <td>
4232 pcg 1.17 <b></b>
4233      
4234     </td>
4235 pcg 1.14 </tr>
4236     <tr>
4237 pcg 1.33 <td>_unused1</td>
4238 pcg 1.15 <td>U64</td>
4239 pcg 1.17 <td> </td>
4240     <td>
4241    
4242      
4243     </td>
4244 pcg 1.14 <td>
4245 pcg 1.17 <b></b>
4246      
4247     </td>
4248 pcg 1.14 </tr>
4249     <tr>
4250     <td>realname</td>
4251     <td>realname</td>
4252 pcg 1.17 <td> </td>
4253     <td>
4254    
4255      
4256     </td>
4257 pcg 1.14 <td>
4258 pcg 1.17 <b></b>
4259      
4260     </td>
4261 pcg 1.14 </tr>
4262     <tr>
4263     <td>email</td>
4264     <td>email</td>
4265 pcg 1.17 <td> </td>
4266     <td>
4267    
4268      
4269     </td>
4270 pcg 1.14 <td>
4271 pcg 1.17 <b></b>
4272      
4273     </td>
4274 pcg 1.14 </tr>
4275     <tr>
4276     <td>info</td>
4277     <td>userinfo</td>
4278 pcg 1.17 <td> </td>
4279     <td>
4280    
4281      
4282     </td>
4283 pcg 1.14 <td>
4284 pcg 1.17 <b></b>
4285      
4286     </td>
4287 pcg 1.14 </tr>
4288     <tr>
4289     <td>homepage</td>
4290     <td>url</td>
4291 pcg 1.17 <td> </td>
4292     <td>
4293    
4294      
4295     </td>
4296 pcg 1.14 <td>
4297 pcg 1.17 <b></b>
4298      
4299     </td>
4300 pcg 1.14 </tr>
4301     <tr>
4302     <td>regdate</td>
4303     <td>timestamp</td>
4304 pcg 1.17 <td> </td>
4305 pcg 1.14 <td>
4306     When the user registered (0 == never registered).
4307 pcg 1.17
4308      
4309     </td>
4310     <td>
4311     <b></b>
4312      
4313     </td>
4314 pcg 1.14 </tr>
4315     <tr>
4316     <td>lastlogin</td>
4317     <td>timestamp</td>
4318 pcg 1.17 <td> </td>
4319 pcg 1.14 <td>
4320     When the user logged in for the last time.
4321 pcg 1.17
4322      
4323     </td>
4324     <td>
4325     <b></b>
4326      
4327     </td>
4328 pcg 1.14 </tr>
4329     </table>
4330    
4331 pcg 1.17 <h4>
4332 pcg 1.40 <a name="S0009"></a>ORIGIN: SERVER;
4333     MESSAGE: upd_userinfo_result</h4>
4334     NUMERIC TYPE (hex): 0009<p>
4335     </p>
4336     <table border="1" width="100%">
4337     <tr>
4338     <th width="10%">NAME</th>
4339     <th width="8%">TYPE</th>
4340     <th width="4%">VALUE</th>
4341     <th>DESCRIPTION</th>
4342     <th width="10%">GUARD</th>
4343     </tr>
4344     <tr>
4345     <td>name</td>
4346     <td>username</td>
4347     <td> </td>
4348     <td>
4349    
4350      
4351     </td>
4352     <td>
4353     <b></b>
4354      
4355     </td>
4356     </tr>
4357     <tr>
4358     <td>message</td>
4359     <td>CONSTANT</td>
4360     <td>Thanks for registering. </td>
4361     <td>
4362    
4363      
4364     </td>
4365     <td>
4366     <b></b>
4367      
4368     </td>
4369     </tr>
4370     </table>
4371    
4372     <h4>
4373     <a name="S000a"></a>ORIGIN: SERVER;
4374     MESSAGE: upd_userinfo_result</h4>
4375     NUMERIC TYPE (hex): 000a<p>
4376     </p>
4377     <table border="1" width="100%">
4378     <tr>
4379     <th width="10%">NAME</th>
4380     <th width="8%">TYPE</th>
4381     <th width="4%">VALUE</th>
4382     <th>DESCRIPTION</th>
4383     <th width="10%">GUARD</th>
4384     </tr>
4385     <tr>
4386     <td>name</td>
4387     <td>username</td>
4388     <td> </td>
4389     <td>
4390    
4391      
4392     </td>
4393     <td>
4394     <b></b>
4395      
4396     </td>
4397     </tr>
4398     <tr>
4399     <td>message</td>
4400     <td>CONSTANT</td>
4401     <td>The user "%s" has been successfully updated. </td>
4402     <td>
4403    
4404      
4405     </td>
4406     <td>
4407     <b></b>
4408      
4409     </td>
4410     </tr>
4411     </table>
4412    
4413     <h4>
4414     <a name="S000b"></a>ORIGIN: SERVER;
4415     MESSAGE: upd_userinfo_result</h4>
4416     NUMERIC TYPE (hex): 000b<p>
4417     </p>
4418     <table border="1" width="100%">
4419     <tr>
4420     <th width="10%">NAME</th>
4421     <th width="8%">TYPE</th>
4422     <th width="4%">VALUE</th>
4423     <th>DESCRIPTION</th>
4424     <th width="10%">GUARD</th>
4425     </tr>
4426     <tr>
4427     <td>name</td>
4428     <td>username</td>
4429     <td> </td>
4430     <td>
4431    
4432      
4433     </td>
4434     <td>
4435     <b></b>
4436      
4437     </td>
4438     </tr>
4439     <tr>
4440     <td>message</td>
4441     <td>CONSTANT</td>
4442     <td>There is no user "%s". Update failed. </td>
4443     <td>
4444    
4445      
4446     </td>
4447     <td>
4448     <b></b>
4449      
4450     </td>
4451     </tr>
4452     </table>
4453    
4454     <h4>
4455     <a name="S0012"></a>ORIGIN: SERVER;
4456     MESSAGE: userinfo_failed</h4>
4457     NUMERIC TYPE (hex): 0012<p>
4458     <p>Sent when no userinfo for the requested user could be found(?)</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     </table>
4482    
4483     <h4>
4484 pcg 1.32 <a name="S0013"></a>ORIGIN: SERVER;
4485     MESSAGE: msg_chat</h4>
4486 pcg 1.17 NUMERIC TYPE (hex): 0013<p>
4487     </p>
4488     <table border="1" width="100%">
4489     <tr>
4490     <th width="10%">NAME</th>
4491 pcg 1.37 <th width="8%">TYPE</th>
4492     <th width="4%">VALUE</th>
4493 pcg 1.17 <th>DESCRIPTION</th>
4494 pcg 1.37 <th width="10%">GUARD</th>
4495 pcg 1.1 </tr>
4496     <tr>
4497 pcg 1.34 <td>name</td>
4498 pcg 1.3 <td>username</td>
4499 pcg 1.17 <td> </td>
4500 pcg 1.3 <td>
4501 pcg 1.36 Name of sender (either yourself (echo) or other)
4502 pcg 1.17
4503      
4504     </td>
4505     <td>
4506     <b></b>
4507      
4508     </td>
4509 pcg 1.1 </tr>
4510     <tr>
4511 pcg 1.34 <td>name2</td>
4512 pcg 1.3 <td>username</td>
4513 pcg 1.17 <td> </td>
4514     <td>
4515 pcg 1.36 Name of recipient.
4516 pcg 1.17
4517      
4518     </td>
4519 pcg 1.3 <td>
4520 pcg 1.17 <b></b>
4521      
4522     </td>
4523 pcg 1.1 </tr>
4524     <tr>
4525     <td>message</td>
4526     <td>STRING</td>
4527 pcg 1.17 <td> </td>
4528 pcg 1.3 <td>
4529 pcg 1.17
4530      
4531     </td>
4532     <td>
4533     <b></b>
4534      
4535     </td>
4536 pcg 1.1 </tr>
4537     </table>
4538    
4539 pcg 1.17 <h4>
4540 pcg 1.32 <a name="S0015"></a>ORIGIN: SERVER;
4541     MESSAGE: stats</h4>
4542 pcg 1.17 NUMERIC TYPE (hex): 0015
4543     (possibly in response to
4544 pcg 1.32 <a href="#C0014">req_stats(0014)</a>
4545 pcg 1.17 )
4546     <p>
4547     </p>
4548     <table border="1" width="100%">
4549     <tr>
4550     <th width="10%">NAME</th>
4551 pcg 1.37 <th width="8%">TYPE</th>
4552     <th width="4%">VALUE</th>
4553 pcg 1.17 <th>DESCRIPTION</th>
4554 pcg 1.37 <th width="10%">GUARD</th>
4555 pcg 1.1 </tr>
4556     <tr>
4557     <td>ver_major</td>
4558 pcg 1.3 <td>U16</td>
4559 pcg 1.17 <td> </td>
4560 pcg 1.3 <td>
4561 pcg 1.17
4562      
4563     </td>
4564     <td>
4565     <b></b>
4566      
4567     </td>
4568 pcg 1.1 </tr>
4569     <tr>
4570     <td>ver_minor</td>
4571 pcg 1.3 <td>U16</td>
4572 pcg 1.17 <td> </td>
4573     <td>
4574    
4575      
4576     </td>
4577 pcg 1.3 <td>
4578 pcg 1.17 <b></b>
4579      
4580     </td>
4581 pcg 1.1 </tr>
4582     <tr>
4583     <td>ver_micro</td>
4584 pcg 1.3 <td>U16</td>
4585 pcg 1.17 <td> </td>
4586 pcg 1.3 <td>
4587 pcg 1.17
4588      
4589     </td>
4590     <td>
4591     <b></b>
4592      
4593     </td>
4594 pcg 1.1 </tr>
4595     <tr>
4596     <td>boot_time</td>
4597 pcg 1.14 <td>timestamp</td>
4598 pcg 1.17 <td> </td>
4599     <td>
4600    
4601      
4602     </td>
4603 pcg 1.3 <td>
4604 pcg 1.17 <b></b>
4605      
4606     </td>
4607 pcg 1.1 </tr>
4608     <tr>
4609     <td>users_cur</td>
4610 pcg 1.3 <td>U32</td>
4611 pcg 1.17 <td> </td>
4612 pcg 1.3 <td>
4613 pcg 1.17
4614      
4615     </td>
4616     <td>
4617     <b></b>
4618      
4619     </td>
4620 pcg 1.1 </tr>
4621     <tr>
4622     <td>users_max</td>
4623 pcg 1.3 <td>U32</td>
4624 pcg 1.17 <td> </td>
4625     <td>
4626    
4627      
4628     </td>
4629 pcg 1.3 <td>
4630 pcg 1.17 <b></b>
4631      
4632     </td>
4633 pcg 1.1 </tr>
4634     <tr>
4635     <td>users_lim</td>
4636 pcg 1.3 <td>U32</td>
4637 pcg 1.17 <td> </td>
4638 pcg 1.3 <td>
4639 pcg 1.17
4640      
4641     </td>
4642     <td>
4643     <b></b>
4644      
4645     </td>
4646 pcg 1.1 </tr>
4647     <tr>
4648     <td>accts_cur</td>
4649 pcg 1.3 <td>U32</td>
4650 pcg 1.17 <td> </td>
4651     <td>
4652    
4653      
4654     </td>
4655 pcg 1.3 <td>
4656 pcg 1.17 <b></b>
4657      
4658     </td>
4659 pcg 1.1 </tr>
4660     <tr>
4661     <td>accts_max</td>
4662 pcg 1.3 <td>U32</td>
4663 pcg 1.17 <td> </td>
4664 pcg 1.3 <td>
4665 pcg 1.17
4666      
4667     </td>
4668     <td>
4669     <b></b>
4670      
4671     </td>
4672 pcg 1.1 </tr>
4673     <tr>
4674     <td>unknown1</td>
4675 pcg 1.3 <td>U32</td>
4676 pcg 1.17 <td> </td>
4677     <td>
4678    
4679      
4680     </td>
4681 pcg 1.3 <td>
4682 pcg 1.17 <b></b>
4683      
4684     </td>
4685 pcg 1.1 </tr>
4686     <tr>
4687     <td>work_max</td>
4688 pcg 1.3 <td>U32</td>
4689 pcg 1.17 <td> </td>
4690 pcg 1.3 <td>
4691 pcg 1.17
4692      
4693     </td>
4694     <td>
4695     <b></b>
4696      
4697     </td>
4698 pcg 1.1 </tr>
4699     <tr>
4700     <td>rooms_cur</td>
4701 pcg 1.3 <td>U32</td>
4702 pcg 1.17 <td> </td>
4703     <td>
4704    
4705      
4706     </td>
4707 pcg 1.3 <td>
4708 pcg 1.17 <b></b>
4709      
4710     </td>
4711 pcg 1.1 </tr>
4712     <tr>
4713     <td>rooms_max</td>
4714 pcg 1.3 <td>U32</td>
4715 pcg 1.17 <td> </td>
4716 pcg 1.3 <td>
4717 pcg 1.17
4718      
4719     </td>
4720     <td>
4721     <b></b>
4722      
4723     </td>
4724 pcg 1.1 </tr>
4725     <tr>
4726     <td>rooms_lim</td>
4727 pcg 1.3 <td>U32</td>
4728 pcg 1.17 <td> </td>
4729     <td>
4730    
4731      
4732     </td>
4733 pcg 1.3 <td>
4734 pcg 1.17 <b></b>
4735      
4736     </td>
4737 pcg 1.1 </tr>
4738     <tr>
4739     <td>games_cur</td>
4740 pcg 1.3 <td>U32</td>
4741 pcg 1.17 <td> </td>
4742 pcg 1.3 <td>
4743 pcg 1.17
4744      
4745     </td>
4746     <td>
4747     <b></b>
4748      
4749     </td>
4750 pcg 1.1 </tr>
4751     <tr>
4752     <td>games_max</td>
4753 pcg 1.3 <td>U32</td>
4754 pcg 1.17 <td> </td>
4755     <td>
4756    
4757      
4758     </td>
4759 pcg 1.3 <td>
4760 pcg 1.17 <b></b>
4761      
4762     </td>
4763 pcg 1.1 </tr>
4764     <tr>
4765     <td>games_lim</td>
4766 pcg 1.3 <td>U32</td>
4767 pcg 1.17 <td> </td>
4768 pcg 1.3 <td>
4769 pcg 1.17
4770      
4771     </td>
4772     <td>
4773     <b></b>
4774      
4775     </td>
4776 pcg 1.1 </tr>
4777     <tr>
4778     <td>results_cur</td>
4779 pcg 1.3 <td>U32</td>
4780 pcg 1.17 <td> </td>
4781     <td>
4782    
4783      
4784     </td>
4785 pcg 1.3 <td>
4786 pcg 1.17 <b></b>
4787      
4788     </td>
4789 pcg 1.1 </tr>
4790     <tr>
4791     <td>results_max</td>
4792 pcg 1.3 <td>U32</td>
4793 pcg 1.17 <td> </td>
4794 pcg 1.3 <td>
4795 pcg 1.17
4796      
4797     </td>
4798     <td>
4799     <b></b>
4800      
4801     </td>
4802 pcg 1.1 </tr>
4803     <tr>
4804     <td>unknown2</td>
4805 pcg 1.3 <td>U32</td>
4806 pcg 1.17 <td> </td>
4807     <td>
4808    
4809      
4810     </td>
4811 pcg 1.3 <td>
4812 pcg 1.17 <b></b>
4813      
4814     </td>
4815 pcg 1.1 </tr>
4816     <tr>
4817     <td>params_cur</td>
4818 pcg 1.3 <td>U32</td>
4819 pcg 1.17 <td> </td>
4820 pcg 1.3 <td>
4821 pcg 1.17
4822      
4823     </td>
4824     <td>
4825     <b></b>
4826      
4827     </td>
4828 pcg 1.1 </tr>
4829     <tr>
4830     <td>params_max</td>
4831 pcg 1.3 <td>U32</td>
4832 pcg 1.17 <td> </td>
4833     <td>
4834    
4835      
4836     </td>
4837 pcg 1.3 <td>
4838 pcg 1.17 <b></b>
4839      
4840     </td>
4841 pcg 1.1 </tr>
4842     <tr>
4843     <td>bytes_in</td>
4844 pcg 1.3 <td>U64</td>
4845 pcg 1.17 <td> </td>
4846 pcg 1.3 <td>
4847 pcg 1.17
4848      
4849     </td>
4850     <td>
4851     <b></b>
4852      
4853     </td>
4854 pcg 1.1 </tr>
4855     <tr>
4856     <td>packets_in</td>
4857 pcg 1.3 <td>U64</td>
4858 pcg 1.17 <td> </td>
4859     <td>
4860    
4861      
4862     </td>
4863 pcg 1.3 <td>
4864 pcg 1.17 <b></b>
4865      
4866     </td>
4867 pcg 1.1 </tr>
4868     <tr>
4869     <td>bytes_out</td>
4870 pcg 1.17 <td>U64</td>
4871     <td> </td>
4872     <td>
4873    
4874      
4875     </td>
4876 pcg 1.3 <td>
4877 pcg 1.17 <b></b>
4878      
4879     </td>
4880 pcg 1.1 </tr>
4881     <tr>
4882     <td>packets_out</td>
4883 pcg 1.3 <td>U64</td>
4884 pcg 1.17 <td> </td>
4885 pcg 1.3 <td>
4886 pcg 1.17
4887      
4888     </td>
4889     <td>
4890     <b></b>
4891      
4892     </td>
4893 pcg 1.1 </tr>
4894     </table>
4895    
4896 pcg 1.17 <h4>
4897 pcg 1.32 <a name="S0016"></a>ORIGIN: SERVER;
4898     MESSAGE: idle_warn</h4>
4899 pcg 1.29 NUMERIC TYPE (hex): 0016
4900     (possibly in response to
4901 pcg 1.32 <a href="#C0016">idle_reset(0016)</a>
4902 pcg 1.29 )
4903     <p>
4904 pcg 1.60 <p>idle warning, autologout soon (10 minutes...). Responding with <a href="#S001d">ping(001d)</a> usually helps.</p>
4905     </p>
4906 pcg 1.17 <table border="1" width="100%">
4907 pcg 1.1 <tr>
4908 pcg 1.17 <th width="10%">NAME</th>
4909 pcg 1.37 <th width="8%">TYPE</th>
4910     <th width="4%">VALUE</th>
4911 pcg 1.17 <th>DESCRIPTION</th>
4912 pcg 1.37 <th width="10%">GUARD</th>
4913 pcg 1.1 </tr>
4914     </table>
4915    
4916 pcg 1.17 <h4>
4917 pcg 1.34 <a name="S0018"></a>ORIGIN: SERVER;
4918     MESSAGE: login</h4>
4919     NUMERIC TYPE (hex): 0018
4920     (possibly in response to
4921     <a href="#C0000">login(0000)</a>
4922     )
4923     <p>
4924     </p>
4925     <table border="1" width="100%">
4926     <tr>
4927     <th width="10%">NAME</th>
4928 pcg 1.37 <th width="8%">TYPE</th>
4929     <th width="4%">VALUE</th>
4930 pcg 1.34 <th>DESCRIPTION</th>
4931 pcg 1.37 <th width="10%">GUARD</th>
4932 pcg 1.34 </tr>
4933     <tr>
4934 pcg 1.40 <td>message</td>
4935 pcg 1.34 <td>CONSTANT</td>
4936 pcg 1.40 <td>logged out: another client logged in with your username </td>
4937 pcg 1.34 <td>
4938    
4939      
4940     </td>
4941     <td>
4942     <b></b>
4943      
4944     </td>
4945     </tr>
4946     </table>
4947    
4948     <h4>
4949 pcg 1.40 <a name="S001c"></a>ORIGIN: SERVER;
4950 pcg 1.34 MESSAGE: login</h4>
4951 pcg 1.40 NUMERIC TYPE (hex): 001c
4952 pcg 1.34 (possibly in response to
4953     <a href="#C0000">login(0000)</a>
4954     )
4955     <p>
4956     </p>
4957     <table border="1" width="100%">
4958     <tr>
4959     <th width="10%">NAME</th>
4960 pcg 1.37 <th width="8%">TYPE</th>
4961     <th width="4%">VALUE</th>
4962 pcg 1.34 <th>DESCRIPTION</th>
4963 pcg 1.37 <th width="10%">GUARD</th>
4964 pcg 1.34 </tr>
4965     <tr>
4966 pcg 1.40 <td>message</td>
4967     <td>CONSTANT</td>
4968     <td>logged out: idle for too long </td>
4969 pcg 1.34 <td>
4970 pcg 1.40
4971 pcg 1.34  
4972     </td>
4973     <td>
4974     <b></b>
4975      
4976     </td>
4977     </tr>
4978 pcg 1.40 </table>
4979    
4980     <h4>
4981     <a name="S0020"></a>ORIGIN: SERVER;
4982     MESSAGE: error</h4>
4983     NUMERIC TYPE (hex): 0020<p>
4984     </p>
4985     <table border="1" width="100%">
4986     <tr>
4987     <th width="10%">NAME</th>
4988     <th width="8%">TYPE</th>
4989     <th width="4%">VALUE</th>
4990     <th>DESCRIPTION</th>
4991     <th width="10%">GUARD</th>
4992     </tr>
4993 pcg 1.34 <tr>
4994 pcg 1.40 <td>message</td>
4995 pcg 1.34 <td>CONSTANT</td>
4996 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>
4997 pcg 1.34 <td>
4998    
4999      
5000     </td>
5001     <td>
5002     <b></b>
5003      
5004     </td>
5005     </tr>
5006     </table>
5007    
5008     <h4>
5009 pcg 1.40 <a name="S0022"></a>ORIGIN: SERVER;
5010     MESSAGE: login</h4>
5011     NUMERIC TYPE (hex): 0022
5012     (possibly in response to
5013     <a href="#C0000">login(0000)</a>
5014     )
5015     <p>
5016     I was blocked sooo many times for developing this client that it was
5017     easy to figure out. The KGS admins sure need no extra nazi training
5018     :(
5019     </p>
5020     <table border="1" width="100%">
5021     <tr>
5022     <th width="10%">NAME</th>
5023     <th width="8%">TYPE</th>
5024     <th width="4%">VALUE</th>
5025     <th>DESCRIPTION</th>
5026     <th width="10%">GUARD</th>
5027     </tr>
5028     <tr>
5029     <td>reason</td>
5030     <td>STRING</td>
5031     <td> </td>
5032     <td>
5033    
5034      
5035     </td>
5036     <td>
5037     <b></b>
5038      
5039     </td>
5040     </tr>
5041     <tr>
5042     <td>result</td>
5043     <td>CONSTANT</td>
5044     <td>user or ip blocked </td>
5045     <td>
5046    
5047      
5048     </td>
5049     <td>
5050     <b></b>
5051      
5052     </td>
5053     </tr>
5054     </table>
5055    
5056     <h4>
5057     <a name="S001b"></a>ORIGIN: SERVER;
5058     MESSAGE: timewarning_default</h4>
5059     NUMERIC TYPE (hex): 001b
5060 pcg 1.17 (possibly in response to
5061 pcg 1.32 <a href="#C0000">login(0000)</a>
5062 pcg 1.17 )
5063     <p>
5064     WILD guess
5065     </p>
5066     <table border="1" width="100%">
5067 pcg 1.1 <tr>
5068 pcg 1.17 <th width="10%">NAME</th>
5069 pcg 1.37 <th width="8%">TYPE</th>
5070     <th width="4%">VALUE</th>
5071 pcg 1.17 <th>DESCRIPTION</th>
5072 pcg 1.37 <th width="10%">GUARD</th>
5073 pcg 1.1 </tr>
5074     <tr>
5075     <td>channel</td>
5076 pcg 1.3 <td>U16</td>
5077 pcg 1.17 <td> </td>
5078     <td>
5079    
5080      
5081     </td>
5082 pcg 1.3 <td>
5083 pcg 1.17 <b></b>
5084      
5085     </td>
5086 pcg 1.1 </tr>
5087     <tr>
5088     <td>time</td>
5089 pcg 1.3 <td>U16</td>
5090 pcg 1.17 <td> </td>
5091     <td>
5092    
5093      
5094     </td>
5095 pcg 1.3 <td>
5096 pcg 1.17 <b></b>
5097      
5098     </td>
5099 pcg 1.1 </tr>
5100     </table>
5101    
5102 pcg 1.17 <h4>
5103 pcg 1.32 <a name="S001c"></a>ORIGIN: SERVER;
5104     MESSAGE: idle_err</h4>
5105 pcg 1.17 NUMERIC TYPE (hex): 001c<p>
5106     autologout
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     </table>
5117    
5118 pcg 1.17 <h4>
5119 pcg 1.32 <a name="S001d"></a>ORIGIN: SERVER;
5120     MESSAGE: ping</h4>
5121 pcg 1.17 NUMERIC TYPE (hex): 001d<p>
5122 pcg 1.14 Sent by the server regularly, but not answering them
5123     isn't valid. Strange form of keepalive?
5124 pcg 1.17 </p>
5125     <table border="1" width="100%">
5126     <tr>
5127     <th width="10%">NAME</th>
5128 pcg 1.37 <th width="8%">TYPE</th>
5129     <th width="4%">VALUE</th>
5130 pcg 1.17 <th>DESCRIPTION</th>
5131 pcg 1.37 <th width="10%">GUARD</th>
5132 pcg 1.1 </tr>
5133     </table>
5134    
5135 pcg 1.17 <h4>
5136 pcg 1.32 <a name="S001e"></a>ORIGIN: SERVER;
5137     MESSAGE: usergraph</h4>
5138 pcg 1.17 NUMERIC TYPE (hex): 001e
5139     (possibly in response to
5140 pcg 1.32 <a href="#C001e">req_usergraph(001e)</a>
5141 pcg 1.17 )
5142     <p>
5143     User graph data.
5144     </p>
5145     <table border="1" width="100%">
5146 pcg 1.15 <tr>
5147 pcg 1.17 <th width="10%">NAME</th>
5148 pcg 1.37 <th width="8%">TYPE</th>
5149     <th width="4%">VALUE</th>
5150 pcg 1.17 <th>DESCRIPTION</th>
5151 pcg 1.37 <th width="10%">GUARD</th>
5152 pcg 1.15 </tr>
5153     <tr>
5154 pcg 1.33 <td>name</td>
5155     <td>username</td>
5156     <td> </td>
5157     <td>
5158    
5159      
5160     </td>
5161     <td>
5162     <b></b>
5163      
5164     </td>
5165     </tr>
5166     <tr>
5167 pcg 1.15 <td>data</td>
5168     <td>I16</td>
5169 pcg 1.17 <td> </td>
5170 pcg 1.15 <td>
5171     If empty, no graph is available. The unit seems to
5172     be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
5173     There is probably one entry per day, the newest one last.
5174 pcg 1.17
5175      
5176     </td>
5177     <td>
5178     <b></b>
5179      
5180     </td>
5181 pcg 1.15 </tr>
5182     </table>
5183    
5184 pcg 1.17 <h4>
5185 pcg 1.58 <a name="S0021"></a>ORIGIN: SERVER;
5186     MESSAGE: userpic</h4>
5187     NUMERIC TYPE (hex): 0021
5188 pcg 1.17 (possibly in response to
5189 pcg 1.58 <a href="#C0021">req_pic(0021)</a>
5190 pcg 1.17 )
5191     <p>
5192     </p>
5193     <table border="1" width="100%">
5194     <tr>
5195     <th width="10%">NAME</th>
5196 pcg 1.37 <th width="8%">TYPE</th>
5197     <th width="4%">VALUE</th>
5198 pcg 1.17 <th>DESCRIPTION</th>
5199 pcg 1.37 <th width="10%">GUARD</th>
5200 pcg 1.15 </tr>
5201     <tr>
5202 pcg 1.58 <td>name</td>
5203     <td>username</td>
5204     <td> </td>
5205     <td>
5206     Reply to pic_req, contains an image in jpeg format.
5207    
5208      
5209     </td>
5210     <td>
5211     <b></b>
5212      
5213     </td>
5214     </tr>
5215     <tr>
5216     <td>data</td>
5217     <td>DATA</td>
5218     <td> </td>
5219     <td>
5220    
5221      
5222     </td>
5223     <td>
5224     <b></b>
5225      
5226     </td>
5227     </tr>
5228     </table>
5229    
5230     <h4>
5231     <a name="S0025"></a>ORIGIN: SERVER;
5232     MESSAGE: memo_error</h4>
5233     NUMERIC TYPE (hex): 0025<p>
5234     <p>Account unknown.</p>
5235     </p>
5236     <table border="1" width="100%">
5237     <tr>
5238     <th width="10%">NAME</th>
5239     <th width="8%">TYPE</th>
5240     <th width="4%">VALUE</th>
5241     <th>DESCRIPTION</th>
5242     <th width="10%">GUARD</th>
5243     </tr>
5244     <tr>
5245     <td>name</td>
5246     <td>username</td>
5247     <td> </td>
5248     <td>
5249    
5250      
5251     </td>
5252     <td>
5253     <b></b>
5254      
5255     </td>
5256     </tr>
5257     <tr>
5258     <td>cid</td>
5259 pcg 1.60 <td>CLIENTID16</td>
5260 pcg 1.58 <td> </td>
5261     <td>
5262    
5263      
5264     </td>
5265     <td>
5266     <b></b>
5267      
5268     </td>
5269     </tr>
5270     <tr>
5271     <td>message</td>
5272     <td>CONSTANT</td>
5273     <td>memo send failed: account already exists </td>
5274     <td>
5275    
5276      
5277     </td>
5278     <td>
5279     <b></b>
5280      
5281     </td>
5282     </tr>
5283     <tr>
5284     <td>subtype</td>
5285     <td>CONSTANT</td>
5286     <td>25 </td>
5287     <td>
5288    
5289      
5290     </td>
5291     <td>
5292     <b></b>
5293      
5294     </td>
5295     </tr>
5296     </table>
5297    
5298     <h4>
5299     <a name="S0026"></a>ORIGIN: SERVER;
5300     MESSAGE: memo_error</h4>
5301     NUMERIC TYPE (hex): 0026<p>
5302     <p>Just a guess.</p>
5303     </p>
5304     <table border="1" width="100%">
5305     <tr>
5306     <th width="10%">NAME</th>
5307     <th width="8%">TYPE</th>
5308     <th width="4%">VALUE</th>
5309     <th>DESCRIPTION</th>
5310     <th width="10%">GUARD</th>
5311     </tr>
5312     <tr>
5313     <td>name</td>
5314     <td>username</td>
5315     <td> </td>
5316     <td>
5317    
5318      
5319     </td>
5320     <td>
5321     <b></b>
5322      
5323     </td>
5324     </tr>
5325     <tr>
5326     <td>cid</td>
5327 pcg 1.60 <td>CLIENTID16</td>
5328 pcg 1.58 <td> </td>
5329     <td>
5330    
5331      
5332     </td>
5333     <td>
5334     <b></b>
5335      
5336     </td>
5337     </tr>
5338     <tr>
5339     <td>message</td>
5340     <td>CONSTANT</td>
5341     <td>memo send failed: error 26 </td>
5342     <td>
5343    
5344      
5345     </td>
5346     <td>
5347     <b></b>
5348      
5349     </td>
5350     </tr>
5351     <tr>
5352     <td>subtype</td>
5353     <td>CONSTANT</td>
5354     <td>26 </td>
5355     <td>
5356    
5357      
5358     </td>
5359     <td>
5360     <b></b>
5361      
5362     </td>
5363     </tr>
5364     </table>
5365    
5366     <h4>
5367     <a name="S0027"></a>ORIGIN: SERVER;
5368     MESSAGE: memo_error</h4>
5369     NUMERIC TYPE (hex): 0027<p>
5370     <p>User is currently online, please use chat.</p>
5371     </p>
5372     <table border="1" width="100%">
5373     <tr>
5374     <th width="10%">NAME</th>
5375     <th width="8%">TYPE</th>
5376     <th width="4%">VALUE</th>
5377     <th>DESCRIPTION</th>
5378     <th width="10%">GUARD</th>
5379     </tr>
5380     <tr>
5381     <td>name</td>
5382     <td>username</td>
5383     <td> </td>
5384     <td>
5385    
5386      
5387     </td>
5388     <td>
5389     <b></b>
5390      
5391     </td>
5392     </tr>
5393     <tr>
5394     <td>cid</td>
5395 pcg 1.60 <td>CLIENTID16</td>
5396 pcg 1.17 <td> </td>
5397     <td>
5398    
5399      
5400     </td>
5401 pcg 1.15 <td>
5402 pcg 1.17 <b></b>
5403      
5404     </td>
5405 pcg 1.15 </tr>
5406     <tr>
5407 pcg 1.58 <td>message</td>
5408     <td>CONSTANT</td>
5409     <td>memo send failed: user is online, use chat </td>
5410     <td>
5411    
5412      
5413     </td>
5414     <td>
5415     <b></b>
5416      
5417     </td>
5418     </tr>
5419     <tr>
5420     <td>subtype</td>
5421     <td>CONSTANT</td>
5422     <td>27 </td>
5423     <td>
5424    
5425      
5426     </td>
5427     <td>
5428     <b></b>
5429      
5430     </td>
5431     </tr>
5432     </table>
5433    
5434     <h4>
5435     <a name="S0028"></a>ORIGIN: SERVER;
5436     MESSAGE: memo_error</h4>
5437     NUMERIC TYPE (hex): 0028<p>
5438     <p>Just a guess.</p>
5439     </p>
5440     <table border="1" width="100%">
5441     <tr>
5442     <th width="10%">NAME</th>
5443     <th width="8%">TYPE</th>
5444     <th width="4%">VALUE</th>
5445     <th>DESCRIPTION</th>
5446     <th width="10%">GUARD</th>
5447     </tr>
5448     <tr>
5449     <td>name</td>
5450     <td>username</td>
5451 pcg 1.17 <td> </td>
5452     <td>
5453    
5454      
5455     </td>
5456 pcg 1.15 <td>
5457 pcg 1.17 <b></b>
5458      
5459     </td>
5460 pcg 1.15 </tr>
5461     <tr>
5462 pcg 1.58 <td>cid</td>
5463 pcg 1.60 <td>CLIENTID16</td>
5464 pcg 1.17 <td> </td>
5465     <td>
5466    
5467      
5468     </td>
5469 pcg 1.15 <td>
5470 pcg 1.17 <b></b>
5471      
5472     </td>
5473 pcg 1.15 </tr>
5474     <tr>
5475 pcg 1.58 <td>message</td>
5476     <td>CONSTANT</td>
5477     <td>memo send failed: error 28 </td>
5478     <td>
5479    
5480      
5481     </td>
5482     <td>
5483     <b></b>
5484      
5485     </td>
5486     </tr>
5487     <tr>
5488     <td>subtype</td>
5489     <td>CONSTANT</td>
5490     <td>28 </td>
5491     <td>
5492    
5493      
5494     </td>
5495     <td>
5496     <b></b>
5497      
5498     </td>
5499     </tr>
5500     </table>
5501    
5502     <h4>
5503     <a name="S0029"></a>ORIGIN: SERVER;
5504     MESSAGE: memo</h4>
5505     NUMERIC TYPE (hex): 0029<p>
5506     </p>
5507     <table border="1" width="100%">
5508     <tr>
5509     <th width="10%">NAME</th>
5510     <th width="8%">TYPE</th>
5511     <th width="4%">VALUE</th>
5512     <th>DESCRIPTION</th>
5513     <th width="10%">GUARD</th>
5514     </tr>
5515     <tr>
5516     <td>name</td>
5517     <td>username</td>
5518 pcg 1.17 <td> </td>
5519     <td>
5520    
5521      
5522     </td>
5523 pcg 1.15 <td>
5524 pcg 1.17 <b></b>
5525      
5526     </td>
5527 pcg 1.15 </tr>
5528     <tr>
5529 pcg 1.58 <td>time</td>
5530     <td>timestamp</td>
5531 pcg 1.17 <td> </td>
5532     <td>
5533    
5534      
5535     </td>
5536 pcg 1.15 <td>
5537 pcg 1.17 <b></b>
5538      
5539     </td>
5540 pcg 1.15 </tr>
5541     <tr>
5542 pcg 1.58 <td>message</td>
5543 pcg 1.48 <td>ZSTRING</td>
5544 pcg 1.17 <td> </td>
5545     <td>
5546    
5547      
5548     </td>
5549 pcg 1.15 <td>
5550 pcg 1.17 <b></b>
5551      
5552     </td>
5553 pcg 1.15 </tr>
5554     </table>
5555    
5556 pcg 1.17 <h4>
5557 pcg 1.58 <a name="S002a"></a>ORIGIN: SERVER;
5558     MESSAGE: memo_sent</h4>
5559     NUMERIC TYPE (hex): 002a<p>
5560     <p>The memo was sent successfully</p>
5561     </p>
5562 pcg 1.17 <table border="1" width="100%">
5563     <tr>
5564     <th width="10%">NAME</th>
5565 pcg 1.37 <th width="8%">TYPE</th>
5566     <th width="4%">VALUE</th>
5567 pcg 1.17 <th>DESCRIPTION</th>
5568 pcg 1.37 <th width="10%">GUARD</th>
5569 pcg 1.1 </tr>
5570     <tr>
5571     <td>name</td>
5572 pcg 1.3 <td>username</td>
5573 pcg 1.17 <td> </td>
5574 pcg 1.3 <td>
5575 pcg 1.17
5576      
5577     </td>
5578     <td>
5579     <b></b>
5580      
5581     </td>
5582 pcg 1.1 </tr>
5583     <tr>
5584 pcg 1.58 <td>cid</td>
5585 pcg 1.60 <td>CLIENTID16</td>
5586 pcg 1.17 <td> </td>
5587     <td>
5588    
5589      
5590     </td>
5591 pcg 1.3 <td>
5592 pcg 1.17 <b></b>
5593      
5594     </td>
5595 pcg 1.1 </tr>
5596     </table>
5597    
5598 pcg 1.17 <h4>
5599 pcg 1.32 <a name="S0100"></a>ORIGIN: SERVER;
5600     MESSAGE: gnotice</h4>
5601 pcg 1.17 NUMERIC TYPE (hex): 0100
5602     (possibly in response to
5603 pcg 1.32 <a href="#C0100">gnotice(0100)</a>
5604 pcg 1.17 )
5605     <p>
5606     global notice, sent to everybody
5607     </p>
5608     <table border="1" width="100%">
5609 pcg 1.1 <tr>
5610 pcg 1.17 <th width="10%">NAME</th>
5611 pcg 1.37 <th width="8%">TYPE</th>
5612     <th width="4%">VALUE</th>
5613 pcg 1.17 <th>DESCRIPTION</th>
5614 pcg 1.37 <th width="10%">GUARD</th>
5615 pcg 1.1 </tr>
5616     <tr>
5617     <td>notice</td>
5618     <td>STRING</td>
5619 pcg 1.17 <td> </td>
5620     <td>
5621    
5622      
5623     </td>
5624 pcg 1.3 <td>
5625 pcg 1.17 <b></b>
5626      
5627     </td>
5628 pcg 1.1 </tr>
5629     </table>
5630    
5631 pcg 1.17 <h4>
5632 pcg 1.32 <a name="S0202"></a>ORIGIN: SERVER;
5633 pcg 1.33 MESSAGE: notify_event</h4>
5634 pcg 1.17 NUMERIC TYPE (hex): 0202<p>
5635 pcg 1.15 # maybe soe notify? Totally unclear.
5636 pcg 1.37 # loc 0" type="userinfo, flags etc. loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
5637 pcg 1.17 </p>
5638     <table border="1" width="100%">
5639     <tr>
5640     <th width="10%">NAME</th>
5641 pcg 1.37 <th width="8%">TYPE</th>
5642     <th width="4%">VALUE</th>
5643 pcg 1.17 <th>DESCRIPTION</th>
5644 pcg 1.37 <th width="10%">GUARD</th>
5645 pcg 1.14 </tr>
5646     <tr>
5647 pcg 1.33 <td>event</td>
5648 pcg 1.14 <td>U32</td>
5649 pcg 1.17 <td> </td>
5650     <td>
5651    
5652      
5653     </td>
5654 pcg 1.14 <td>
5655 pcg 1.17 <b></b>
5656      
5657     </td>
5658 pcg 1.14 </tr>
5659     <tr>
5660     <td>user</td>
5661     <td>user</td>
5662 pcg 1.17 <td> </td>
5663     <td>
5664    
5665      
5666     </td>
5667 pcg 1.14 <td>
5668 pcg 1.17 <b></b>
5669      
5670     </td>
5671 pcg 1.14 </tr>
5672     <tr>
5673 pcg 1.34 <td>gamerecord</td>
5674 pcg 1.33 <td>game_record</td>
5675 pcg 1.17 <td> </td>
5676     <td>
5677 pcg 1.33
5678 pcg 1.17  
5679     </td>
5680 pcg 1.14 <td>
5681 pcg 1.33 <b>event</b> == 2
5682 pcg 1.17  
5683     </td>
5684 pcg 1.14 </tr>
5685     </table>
5686 pcg 1.1
5687 pcg 1.17 <h4>
5688 pcg 1.58 <a name="S030c"></a>ORIGIN: SERVER;
5689     MESSAGE: unknown_030c</h4>
5690     NUMERIC TYPE (hex): 030c<p>
5691     <p>Not the slightest... No payload, either.</p>
5692     </p>
5693     <table border="1" width="100%">
5694     <tr>
5695     <th width="10%">NAME</th>
5696     <th width="8%">TYPE</th>
5697     <th width="4%">VALUE</th>
5698     <th>DESCRIPTION</th>
5699     <th width="10%">GUARD</th>
5700     </tr>
5701     </table>
5702    
5703     <h4>
5704 pcg 1.32 <a name="S0310"></a>ORIGIN: SERVER;
5705     MESSAGE: priv_room</h4>
5706 pcg 1.17 NUMERIC TYPE (hex): 0310<p>
5707     "permission denied" when joining a room
5708     </p>
5709     <table border="1" width="100%">
5710 pcg 1.1 <tr>
5711 pcg 1.17 <th width="10%">NAME</th>
5712 pcg 1.37 <th width="8%">TYPE</th>
5713     <th width="4%">VALUE</th>
5714 pcg 1.17 <th>DESCRIPTION</th>
5715 pcg 1.37 <th width="10%">GUARD</th>
5716 pcg 1.1 </tr>
5717     <tr>
5718     <td>name</td>
5719     <td>STRING</td>
5720 pcg 1.17 <td> </td>
5721 pcg 1.3 <td>
5722 pcg 1.17
5723      
5724     </td>
5725     <td>
5726     <b></b>
5727      
5728     </td>
5729 pcg 1.1 </tr>
5730     </table>
5731    
5732 pcg 1.17 <h4>
5733 pcg 1.32 <a name="S0318"></a>ORIGIN: SERVER;
5734     MESSAGE: upd_rooms</h4>
5735 pcg 1.17 NUMERIC TYPE (hex): 0318
5736     (possibly in response to
5737 pcg 1.32 <a href="#C0318">list_rooms(0318)</a>
5738 pcg 1.17 )
5739     <p>
5740     </p>
5741     <table border="1" width="100%">
5742     <tr>
5743     <th width="10%">NAME</th>
5744 pcg 1.37 <th width="8%">TYPE</th>
5745     <th width="4%">VALUE</th>
5746 pcg 1.17 <th>DESCRIPTION</th>
5747 pcg 1.37 <th width="10%">GUARD</th>
5748 pcg 1.1 </tr>
5749     <tr>
5750     <td>rooms</td>
5751     <td>room</td>
5752 pcg 1.17 <td> </td>
5753 pcg 1.3 <td>
5754 pcg 1.17
5755      
5756     </td>
5757     <td>
5758     <b></b>
5759      
5760     </td>
5761 pcg 1.1 </tr>
5762     </table>
5763    
5764 pcg 1.17 <h4>
5765 pcg 1.32 <a name="S0411"></a>ORIGIN: SERVER;
5766     MESSAGE: chal_defaults</h4>
5767 pcg 1.17 NUMERIC TYPE (hex): 0411
5768     (possibly in response to
5769 pcg 1.32 <a href="#C0000">login(0000)</a>
5770 pcg 1.17 )
5771     <p>
5772     </p>
5773     <table border="1" width="100%">
5774     <tr>
5775     <th width="10%">NAME</th>
5776 pcg 1.37 <th width="8%">TYPE</th>
5777     <th width="4%">VALUE</th>
5778 pcg 1.17 <th>DESCRIPTION</th>
5779 pcg 1.37 <th width="10%">GUARD</th>
5780 pcg 1.1 </tr>
5781     <tr>
5782 pcg 1.14 <td>channel</td>
5783 pcg 1.3 <td>U16</td>
5784 pcg 1.17 <td> </td>
5785 pcg 1.3 <td>
5786 pcg 1.17
5787      
5788     </td>
5789     <td>
5790     <b></b>
5791      
5792     </td>
5793 pcg 1.1 </tr>
5794     <tr>
5795 pcg 1.14 <td>defaults</td>
5796     <td>challenge_defaults</td>
5797 pcg 1.17 <td> </td>
5798     <td>
5799    
5800      
5801     </td>
5802 pcg 1.3 <td>
5803 pcg 1.17 <b></b>
5804      
5805     </td>
5806 pcg 1.1 </tr>
5807     </table>
5808    
5809 pcg 1.17 <h4>
5810 pcg 1.32 <a name="S0412"></a>ORIGIN: SERVER;
5811 pcg 1.61 MESSAGE: already_playing</h4>
5812 pcg 1.17 NUMERIC TYPE (hex): 0412<p>
5813 pcg 1.61 Unable to create new game.
5814 pcg 1.17 </p>
5815     <table border="1" width="100%">
5816 pcg 1.15 <tr>
5817 pcg 1.17 <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.15 </tr>
5823     <tr>
5824 pcg 1.40 <td>message</td>
5825     <td>CONSTANT</td>
5826     <td>Sorry, you are already playing in one game, so you can't start playing in another. </td>
5827     <td>
5828    
5829      
5830     </td>
5831     <td>
5832     <b></b>
5833      
5834     </td>
5835     </tr>
5836     <tr>
5837 pcg 1.61 <td>cid</td>
5838     <td>CLIENTID16</td>
5839 pcg 1.17 <td> </td>
5840     <td>
5841 pcg 1.61
5842 pcg 1.17  
5843     </td>
5844 pcg 1.15 <td>
5845 pcg 1.17 <b></b>
5846      
5847     </td>
5848 pcg 1.15 </tr>
5849     </table>
5850    
5851 pcg 1.17 <h4>
5852 pcg 1.32 <a name="S0414"></a>ORIGIN: SERVER;
5853     MESSAGE: game_record</h4>
5854 pcg 1.17 NUMERIC TYPE (hex): 0414
5855     (possibly in response to
5856 pcg 1.32 <a href="#C0413">req_game_record(0413)</a>
5857 pcg 1.17 )
5858     <p>
5859     The users game record.
5860     </p>
5861     <table border="1" width="100%">
5862 pcg 1.1 <tr>
5863 pcg 1.17 <th width="10%">NAME</th>
5864 pcg 1.37 <th width="8%">TYPE</th>
5865     <th width="4%">VALUE</th>
5866 pcg 1.17 <th>DESCRIPTION</th>
5867 pcg 1.37 <th width="10%">GUARD</th>
5868 pcg 1.14 </tr>
5869     <tr>
5870     <td>name</td>
5871     <td>username</td>
5872 pcg 1.17 <td> </td>
5873 pcg 1.14 <td>
5874 pcg 1.17
5875      
5876     </td>
5877     <td>
5878     <b></b>
5879      
5880     </td>
5881 pcg 1.14 </tr>
5882     <tr>
5883     <td>more</td>
5884     <td>flag</td>
5885 pcg 1.17 <td> </td>
5886 pcg 1.14 <td>
5887     Wether more games are available (must be requested manually)
5888 pcg 1.17
5889      
5890     </td>
5891     <td>
5892     <b></b>
5893      
5894     </td>
5895 pcg 1.1 </tr>
5896     <tr>
5897 pcg 1.14 <td>games</td>
5898     <td>game_record</td>
5899 pcg 1.17 <td> </td>
5900 pcg 1.3 <td>
5901 pcg 1.17
5902      
5903     </td>
5904     <td>
5905     <b></b>
5906      
5907     </td>
5908 pcg 1.14 </tr>
5909     </table>
5910    
5911 pcg 1.17 <h4>
5912 pcg 1.40 <a name="S0417"></a>ORIGIN: SERVER;
5913     MESSAGE: error</h4>
5914     NUMERIC TYPE (hex): 0417<p>
5915     </p>
5916     <table border="1" width="100%">
5917     <tr>
5918     <th width="10%">NAME</th>
5919     <th width="8%">TYPE</th>
5920     <th width="4%">VALUE</th>
5921     <th>DESCRIPTION</th>
5922     <th width="10%">GUARD</th>
5923     </tr>
5924     <tr>
5925     <td>message</td>
5926     <td>CONSTANT</td>
5927     <td>Sorry, your opponent is currently not logged in, so you can't resume this game. </td>
5928     <td>
5929    
5930      
5931     </td>
5932     <td>
5933     <b></b>
5934      
5935     </td>
5936     </tr>
5937     </table>
5938    
5939     <h4>
5940     <a name="S0418"></a>ORIGIN: SERVER;
5941     MESSAGE: error</h4>
5942     NUMERIC TYPE (hex): 0418<p>
5943     </p>
5944     <table border="1" width="100%">
5945     <tr>
5946     <th width="10%">NAME</th>
5947     <th width="8%">TYPE</th>
5948     <th width="4%">VALUE</th>
5949     <th>DESCRIPTION</th>
5950     <th width="10%">GUARD</th>
5951     </tr>
5952     <tr>
5953     <td>message</td>
5954     <td>CONSTANT</td>
5955     <td>Sorry, your opponent is already playing in a game, so you cannot continue this one. </td>
5956     <td>
5957    
5958      
5959     </td>
5960     <td>
5961     <b></b>
5962      
5963     </td>
5964     </tr>
5965     </table>
5966    
5967     <h4>
5968     <a name="S0419"></a>ORIGIN: SERVER;
5969     MESSAGE: error</h4>
5970     NUMERIC TYPE (hex): 0419<p>
5971     </p>
5972     <table border="1" width="100%">
5973     <tr>
5974     <th width="10%">NAME</th>
5975     <th width="8%">TYPE</th>
5976     <th width="4%">VALUE</th>
5977     <th>DESCRIPTION</th>
5978     <th width="10%">GUARD</th>
5979     </tr>
5980     <tr>
5981     <td>message</td>
5982     <td>CONSTANT</td>
5983     <td>Sorry, the server is out of boards! Please wait a few minutes and try to start a game again. </td>
5984     <td>
5985    
5986      
5987     </td>
5988     <td>
5989     <b></b>
5990      
5991     </td>
5992     </tr>
5993     </table>
5994    
5995     <h4>
5996 pcg 1.32 <a name="S041c"></a>ORIGIN: SERVER;
5997     MESSAGE: upd_game2</h4>
5998 pcg 1.17 NUMERIC TYPE (hex): 041c<p>
5999     Unclear.
6000     </p>
6001     <table border="1" width="100%">
6002 pcg 1.14 <tr>
6003 pcg 1.17 <th width="10%">NAME</th>
6004 pcg 1.37 <th width="8%">TYPE</th>
6005     <th width="4%">VALUE</th>
6006 pcg 1.17 <th>DESCRIPTION</th>
6007 pcg 1.37 <th width="10%">GUARD</th>
6008 pcg 1.1 </tr>
6009     <tr>
6010 pcg 1.14 <td>channel_junk</td>
6011     <td>U16</td>
6012 pcg 1.17 <td> </td>
6013     <td>
6014    
6015      
6016     </td>
6017 pcg 1.3 <td>
6018 pcg 1.17 <b></b>
6019      
6020     </td>
6021 pcg 1.1 </tr>
6022     <tr>
6023 pcg 1.14 <td>game</td>
6024     <td>game</td>
6025 pcg 1.17 <td> </td>
6026     <td>
6027    
6028      
6029     </td>
6030 pcg 1.3 <td>
6031 pcg 1.17 <b></b>
6032      
6033     </td>
6034 pcg 1.1 </tr>
6035     </table>
6036    
6037 pcg 1.40 <h4>
6038     <a name="S041f"></a>ORIGIN: SERVER;
6039     MESSAGE: error</h4>
6040     NUMERIC TYPE (hex): 041f<p>
6041     </p>
6042     <table border="1" width="100%">
6043     <tr>
6044     <th width="10%">NAME</th>
6045     <th width="8%">TYPE</th>
6046     <th width="4%">VALUE</th>
6047     <th>DESCRIPTION</th>
6048     <th width="10%">GUARD</th>
6049     </tr>
6050     <tr>
6051     <td>message</td>
6052     <td>CONSTANT</td>
6053     <td>Sorry, the game you tried to load was not correctly saved...probably caused by the server crashing. It cannot be recovered. </td>
6054     <td>
6055    
6056      
6057     </td>
6058     <td>
6059     <b></b>
6060      
6061     </td>
6062     </tr>
6063     </table>
6064    
6065     <h4>
6066     <a name="S0420"></a>ORIGIN: SERVER;
6067     MESSAGE: error</h4>
6068     NUMERIC TYPE (hex): 0420<p>
6069     </p>
6070     <table border="1" width="100%">
6071     <tr>
6072     <th width="10%">NAME</th>
6073     <th width="8%">TYPE</th>
6074     <th width="4%">VALUE</th>
6075     <th>DESCRIPTION</th>
6076     <th width="10%">GUARD</th>
6077     </tr>
6078     <tr>
6079     <td>message</td>
6080     <td>CONSTANT</td>
6081     <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>
6082     <td>
6083    
6084      
6085     </td>
6086     <td>
6087     <b></b>
6088      
6089     </td>
6090     </tr>
6091     </table>
6092    
6093     <h4>
6094     <a name="S0421"></a>ORIGIN: SERVER;
6095     MESSAGE: error</h4>
6096     NUMERIC TYPE (hex): 0421<p>
6097     </p>
6098     <table border="1" width="100%">
6099     <tr>
6100     <th width="10%">NAME</th>
6101     <th width="8%">TYPE</th>
6102     <th width="4%">VALUE</th>
6103     <th>DESCRIPTION</th>
6104     <th width="10%">GUARD</th>
6105     </tr>
6106     <tr>
6107     <td>message</td>
6108     <td>CONSTANT</td>
6109     <td>Sorry, this game is a private lesson. You will not be allowed to observe it. </td>
6110     <td>
6111    
6112      
6113     </td>
6114     <td>
6115     <b></b>
6116      
6117     </td>
6118     </tr>
6119     </table>
6120    
6121 pcg 1.44 <!-- added recently -->
6122     <h4>
6123     <a name="S043a"></a>ORIGIN: SERVER;
6124 pcg 1.46 MESSAGE: add_global_challenge</h4>
6125 pcg 1.44 NUMERIC TYPE (hex): 043a<p>
6126 pcg 1.46 <p>
6127     Adds or updates a global challenge (open game list).
6128 pcg 1.44 </p>
6129 pcg 1.46 </p>
6130 pcg 1.44 <table border="1" width="100%">
6131     <tr>
6132     <th width="10%">NAME</th>
6133     <th width="8%">TYPE</th>
6134     <th width="4%">VALUE</th>
6135     <th>DESCRIPTION</th>
6136     <th width="10%">GUARD</th>
6137     </tr>
6138     <tr>
6139     <td>channel</td>
6140     <td>U16</td>
6141     <td> </td>
6142     <td>
6143    
6144      
6145     </td>
6146     <td>
6147     <b></b>
6148      
6149     </td>
6150     </tr>
6151     <tr>
6152     <td>game</td>
6153     <td>game</td>
6154     <td> </td>
6155     <td>
6156 pcg 1.59
6157 pcg 1.44  
6158     </td>
6159     <td>
6160     <b></b>
6161      
6162     </td>
6163     </tr>
6164     </table>
6165    
6166 pcg 1.1 <h3>Room messages</h3>
6167    
6168     <p>Not all room messages are for rooms only, and rooms need to parse
6169     not only these messages. Orthogonality, what for?</p>
6170    
6171 pcg 1.17 <h4>
6172 pcg 1.32 <a name="S4300"></a>ORIGIN: SERVER;
6173     MESSAGE: join_room</h4>
6174 pcg 1.17 NUMERIC TYPE (hex): 4300
6175     (possibly in response to
6176 pcg 1.32 <a href="#C4300">join_room(4300)</a>
6177 pcg 1.17 )
6178     <p>
6179     </p>
6180     <table border="1" width="100%">
6181     <tr>
6182     <th width="10%">NAME</th>
6183 pcg 1.37 <th width="8%">TYPE</th>
6184     <th width="4%">VALUE</th>
6185 pcg 1.17 <th>DESCRIPTION</th>
6186 pcg 1.37 <th width="10%">GUARD</th>
6187 pcg 1.1 </tr>
6188     <tr>
6189     <td>channel</td>
6190 pcg 1.3 <td>U16</td>
6191 pcg 1.17 <td> </td>
6192     <td>
6193    
6194      
6195     </td>
6196 pcg 1.3 <td>
6197 pcg 1.17 <b></b>
6198      
6199     </td>
6200 pcg 1.1 </tr>
6201     <tr>
6202     <td>users</td>
6203     <td>user</td>
6204 pcg 1.17 <td> </td>
6205     <td>
6206    
6207      
6208     </td>
6209 pcg 1.3 <td>
6210 pcg 1.17 <b></b>
6211      
6212     </td>
6213 pcg 1.1 </tr>
6214     </table>
6215    
6216 pcg 1.17 <h4>
6217 pcg 1.32 <a name="S4301"></a>ORIGIN: SERVER;
6218     MESSAGE: msg_room</h4>
6219 pcg 1.17 NUMERIC TYPE (hex): 4301<p>
6220     </p>
6221     <table border="1" width="100%">
6222 pcg 1.1 <tr>
6223 pcg 1.17 <th width="10%">NAME</th>
6224 pcg 1.37 <th width="8%">TYPE</th>
6225     <th width="4%">VALUE</th>
6226 pcg 1.17 <th>DESCRIPTION</th>
6227 pcg 1.37 <th width="10%">GUARD</th>
6228 pcg 1.1 </tr>
6229     <tr>
6230     <td>channel</td>
6231 pcg 1.3 <td>U16</td>
6232 pcg 1.17 <td> </td>
6233 pcg 1.3 <td>
6234 pcg 1.17
6235      
6236     </td>
6237     <td>
6238     <b></b>
6239      
6240     </td>
6241 pcg 1.1 </tr>
6242     <tr>
6243     <td>name</td>
6244 pcg 1.3 <td>username</td>
6245 pcg 1.17 <td> </td>
6246     <td>
6247    
6248      
6249     </td>
6250 pcg 1.3 <td>
6251 pcg 1.17 <b></b>
6252      
6253     </td>
6254 pcg 1.1 </tr>
6255     <tr>
6256     <td>message</td>
6257     <td>STRING</td>
6258 pcg 1.17 <td> </td>
6259 pcg 1.3 <td>
6260 pcg 1.17
6261      
6262     </td>
6263     <td>
6264     <b></b>
6265      
6266     </td>
6267 pcg 1.1 </tr>
6268     </table>
6269    
6270 pcg 1.17 <h4>
6271 pcg 1.32 <a name="S4302"></a>ORIGIN: SERVER;
6272     MESSAGE: part_room</h4>
6273 pcg 1.17 NUMERIC TYPE (hex): 4302<p>
6274     </p>
6275     <table border="1" width="100%">
6276 pcg 1.1 <tr>
6277 pcg 1.17 <th width="10%">NAME</th>
6278 pcg 1.37 <th width="8%">TYPE</th>
6279     <th width="4%">VALUE</th>
6280 pcg 1.17 <th>DESCRIPTION</th>
6281 pcg 1.37 <th width="10%">GUARD</th>
6282 pcg 1.1 </tr>
6283     <tr>
6284     <td>channel</td>
6285 pcg 1.3 <td>U16</td>
6286 pcg 1.17 <td> </td>
6287     <td>
6288    
6289      
6290     </td>
6291 pcg 1.3 <td>
6292 pcg 1.17 <b></b>
6293      
6294     </td>
6295 pcg 1.1 </tr>
6296     <tr>
6297     <td>user</td>
6298     <td>user</td>
6299 pcg 1.17 <td> </td>
6300     <td>
6301    
6302      
6303     </td>
6304 pcg 1.3 <td>
6305 pcg 1.17 <b></b>
6306      
6307     </td>
6308 pcg 1.1 </tr>
6309     </table>
6310    
6311 pcg 1.17 <h4>
6312 pcg 1.32 <a name="S4303"></a>ORIGIN: SERVER;
6313     MESSAGE: del_room</h4>
6314 pcg 1.17 NUMERIC TYPE (hex): 4303<p>
6315     </p>
6316     <table border="1" width="100%">
6317 pcg 1.1 <tr>
6318 pcg 1.17 <th width="10%">NAME</th>
6319 pcg 1.37 <th width="8%">TYPE</th>
6320     <th width="4%">VALUE</th>
6321 pcg 1.17 <th>DESCRIPTION</th>
6322 pcg 1.37 <th width="10%">GUARD</th>
6323 pcg 1.1 </tr>
6324     <tr>
6325     <td>channel</td>
6326 pcg 1.3 <td>U16</td>
6327 pcg 1.17 <td> </td>
6328 pcg 1.3 <td>
6329 pcg 1.17
6330      
6331     </td>
6332     <td>
6333     <b></b>
6334      
6335     </td>
6336 pcg 1.1 </tr>
6337     </table>
6338    
6339 pcg 1.17 <h4>
6340 pcg 1.32 <a name="S4304"></a>ORIGIN: SERVER;
6341     MESSAGE: upd_games</h4>
6342 pcg 1.17 NUMERIC TYPE (hex): 4304<p>
6343     </p>
6344     <table border="1" width="100%">
6345 pcg 1.1 <tr>
6346 pcg 1.17 <th width="10%">NAME</th>
6347 pcg 1.37 <th width="8%">TYPE</th>
6348     <th width="4%">VALUE</th>
6349 pcg 1.17 <th>DESCRIPTION</th>
6350 pcg 1.37 <th width="10%">GUARD</th>
6351 pcg 1.1 </tr>
6352     <tr>
6353     <td>channel</td>
6354 pcg 1.3 <td>U16</td>
6355 pcg 1.17 <td> </td>
6356     <td>
6357    
6358      
6359     </td>
6360 pcg 1.3 <td>
6361 pcg 1.17 <b></b>
6362      
6363     </td>
6364 pcg 1.1 </tr>
6365     <tr>
6366     <td>games</td>
6367     <td>game</td>
6368 pcg 1.17 <td> </td>
6369     <td>
6370    
6371      
6372     </td>
6373 pcg 1.3 <td>
6374 pcg 1.17 <b></b>
6375      
6376     </td>
6377 pcg 1.1 </tr>
6378     </table>
6379    
6380 pcg 1.17 <h4>
6381 pcg 1.32 <a name="S4319"></a>ORIGIN: SERVER;
6382     MESSAGE: desc_room</h4>
6383 pcg 1.17 NUMERIC TYPE (hex): 4319<p>
6384     </p>
6385     <table border="1" width="100%">
6386 pcg 1.1 <tr>
6387 pcg 1.17 <th width="10%">NAME</th>
6388 pcg 1.37 <th width="8%">TYPE</th>
6389     <th width="4%">VALUE</th>
6390 pcg 1.17 <th>DESCRIPTION</th>
6391 pcg 1.37 <th width="10%">GUARD</th>
6392 pcg 1.1 </tr>
6393     <tr>
6394     <td>channel</td>
6395 pcg 1.3 <td>U16</td>
6396 pcg 1.17 <td> </td>
6397 pcg 1.3 <td>
6398 pcg 1.17
6399      
6400     </td>
6401     <td>
6402     <b></b>
6403      
6404     </td>
6405 pcg 1.1 </tr>
6406     <tr>
6407     <td>owner</td>
6408 pcg 1.3 <td>username</td>
6409 pcg 1.17 <td> </td>
6410     <td>
6411    
6412      
6413     </td>
6414 pcg 1.3 <td>
6415 pcg 1.17 <b></b>
6416      
6417     </td>
6418 pcg 1.1 </tr>
6419     <tr>
6420     <td>description</td>
6421     <td>STRING</td>
6422 pcg 1.17 <td> </td>
6423 pcg 1.3 <td>
6424 pcg 1.17
6425      
6426     </td>
6427     <td>
6428     <b></b>
6429      
6430     </td>
6431 pcg 1.1 </tr>
6432     </table>
6433 pcg 1.27
6434 pcg 1.1 <h3>Game messages</h3>
6435    
6436 pcg 1.17 <h4>
6437 pcg 1.32 <a name="S4400"></a>ORIGIN: SERVER;
6438 pcg 1.59 MESSAGE: challenge</h4>
6439 pcg 1.17 NUMERIC TYPE (hex): 4400<p>
6440     Unclear.
6441     </p>
6442     <table border="1" width="100%">
6443 pcg 1.1 <tr>
6444 pcg 1.17 <th width="10%">NAME</th>
6445 pcg 1.37 <th width="8%">TYPE</th>
6446     <th width="4%">VALUE</th>
6447 pcg 1.17 <th>DESCRIPTION</th>
6448 pcg 1.37 <th width="10%">GUARD</th>
6449 pcg 1.1 </tr>
6450     <tr>
6451     <td>channel</td>
6452 pcg 1.3 <td>U16</td>
6453 pcg 1.17 <td> </td>
6454     <td>
6455    
6456      
6457     </td>
6458 pcg 1.3 <td>
6459 pcg 1.17 <b></b>
6460      
6461     </td>
6462 pcg 1.1 </tr>
6463     <tr>
6464 pcg 1.60 <td>black</td>
6465     <td>user</td>
6466     <td> </td>
6467     <td>
6468    
6469      
6470     </td>
6471     <td>
6472     <b></b>
6473      
6474     </td>
6475     </tr>
6476     <tr>
6477     <td>white</td>
6478     <td>user</td>
6479     <td> </td>
6480     <td>
6481    
6482      
6483     </td>
6484     <td>
6485     <b></b>
6486      
6487     </td>
6488     </tr>
6489     <tr>
6490     <td>gametype</td>
6491     <td>U8</td>
6492     <td> </td>
6493     <td>
6494    
6495      
6496     </td>
6497     <td>
6498     <b></b>
6499      
6500     </td>
6501     </tr>
6502     <tr>
6503     <td>cid</td>
6504     <td>CLIENTID8</td>
6505     <td> </td>
6506     <td>
6507    
6508      
6509     </td>
6510     <td>
6511     <b></b>
6512      
6513     </td>
6514     </tr>
6515     <tr>
6516     <td>rules</td>
6517     <td>rules</td>
6518     <td> </td>
6519     <td>
6520    
6521      
6522     </td>
6523     <td>
6524     <b></b>
6525      
6526     </td>
6527     </tr>
6528     <tr>
6529     <td>notes</td>
6530     <td>STRING</td>
6531 pcg 1.17 <td> </td>
6532     <td>
6533 pcg 1.60
6534 pcg 1.17  
6535     </td>
6536 pcg 1.3 <td>
6537 pcg 1.17 <b></b>
6538      
6539     </td>
6540 pcg 1.1 </tr>
6541     </table>
6542    
6543 pcg 1.17 <h4>
6544 pcg 1.32 <a name="S4401"></a>ORIGIN: SERVER;
6545     MESSAGE: upd_game</h4>
6546 pcg 1.17 NUMERIC TYPE (hex): 4401<p>
6547     </p>
6548     <table border="1" width="100%">
6549 pcg 1.1 <tr>
6550 pcg 1.17 <th width="10%">NAME</th>
6551 pcg 1.37 <th width="8%">TYPE</th>
6552     <th width="4%">VALUE</th>
6553 pcg 1.17 <th>DESCRIPTION</th>
6554 pcg 1.37 <th width="10%">GUARD</th>
6555 pcg 1.1 </tr>
6556     <tr>
6557     <td>channel</td>
6558 pcg 1.3 <td>U16</td>
6559 pcg 1.17 <td> </td>
6560     <td>
6561    
6562      
6563     </td>
6564 pcg 1.3 <td>
6565 pcg 1.17 <b></b>
6566      
6567     </td>
6568 pcg 1.1 </tr>
6569     <tr>
6570     <td>game</td>
6571     <td>game</td>
6572 pcg 1.17 <td> </td>
6573 pcg 1.3 <td>
6574 pcg 1.17
6575      
6576     </td>
6577     <td>
6578     <b></b>
6579      
6580     </td>
6581 pcg 1.1 </tr>
6582     </table>
6583    
6584 pcg 1.17 <h4>
6585 pcg 1.32 <a name="S4402"></a>ORIGIN: SERVER;
6586     MESSAGE: del_game</h4>
6587 pcg 1.17 NUMERIC TYPE (hex): 4402<p>
6588     </p>
6589     <table border="1" width="100%">
6590 pcg 1.1 <tr>
6591 pcg 1.17 <th width="10%">NAME</th>
6592 pcg 1.37 <th width="8%">TYPE</th>
6593     <th width="4%">VALUE</th>
6594 pcg 1.17 <th>DESCRIPTION</th>
6595 pcg 1.37 <th width="10%">GUARD</th>
6596 pcg 1.1 </tr>
6597     <tr>
6598     <td>channel</td>
6599 pcg 1.3 <td>U16</td>
6600 pcg 1.17 <td> </td>
6601     <td>
6602    
6603      
6604     </td>
6605 pcg 1.3 <td>
6606 pcg 1.17 <b></b>
6607      
6608     </td>
6609 pcg 1.1 </tr>
6610     </table>
6611    
6612 pcg 1.17 <h4>
6613 pcg 1.32 <a name="S4403"></a>ORIGIN: SERVER;
6614     MESSAGE: upd_observers</h4>
6615 pcg 1.17 NUMERIC TYPE (hex): 4403<p>
6616     </p>
6617     <table border="1" width="100%">
6618 pcg 1.1 <tr>
6619 pcg 1.17 <th width="10%">NAME</th>
6620 pcg 1.37 <th width="8%">TYPE</th>
6621     <th width="4%">VALUE</th>
6622 pcg 1.17 <th>DESCRIPTION</th>
6623 pcg 1.37 <th width="10%">GUARD</th>
6624 pcg 1.1 </tr>
6625     <tr>
6626     <td>channel</td>
6627 pcg 1.3 <td>U16</td>
6628 pcg 1.17 <td> </td>
6629     <td>
6630    
6631      
6632     </td>
6633 pcg 1.3 <td>
6634 pcg 1.17 <b></b>
6635      
6636     </td>
6637 pcg 1.1 </tr>
6638     <tr>
6639     <td>users</td>
6640     <td>user</td>
6641 pcg 1.17 <td> </td>
6642 pcg 1.3 <td>
6643 pcg 1.17
6644      
6645     </td>
6646     <td>
6647     <b></b>
6648      
6649     </td>
6650 pcg 1.1 </tr>
6651     </table>
6652    
6653 pcg 1.17 <h4>
6654 pcg 1.32 <a name="S4404"></a>ORIGIN: SERVER;
6655     MESSAGE: del_observer</h4>
6656 pcg 1.17 NUMERIC TYPE (hex): 4404<p>
6657     </p>
6658     <table border="1" width="100%">
6659 pcg 1.1 <tr>
6660 pcg 1.17 <th width="10%">NAME</th>
6661 pcg 1.37 <th width="8%">TYPE</th>
6662     <th width="4%">VALUE</th>
6663 pcg 1.17 <th>DESCRIPTION</th>
6664 pcg 1.37 <th width="10%">GUARD</th>
6665 pcg 1.1 </tr>
6666     <tr>
6667     <td>channel</td>
6668 pcg 1.3 <td>U16</td>
6669 pcg 1.17 <td> </td>
6670     <td>
6671    
6672      
6673     </td>
6674 pcg 1.3 <td>
6675 pcg 1.17 <b></b>
6676      
6677     </td>
6678 pcg 1.1 </tr>
6679     <tr>
6680     <td>name</td>
6681 pcg 1.3 <td>username</td>
6682 pcg 1.17 <td> </td>
6683     <td>
6684    
6685      
6686     </td>
6687 pcg 1.3 <td>
6688 pcg 1.17 <b></b>
6689      
6690     </td>
6691 pcg 1.1 </tr>
6692     </table>
6693    
6694 pcg 1.17 <h4>
6695 pcg 1.32 <a name="S4405"></a>ORIGIN: SERVER;
6696     MESSAGE: set_tree</h4>
6697 pcg 1.17 NUMERIC TYPE (hex): 4405<p>
6698     </p>
6699     <table border="1" width="100%">
6700 pcg 1.1 <tr>
6701 pcg 1.17 <th width="10%">NAME</th>
6702 pcg 1.37 <th width="8%">TYPE</th>
6703     <th width="4%">VALUE</th>
6704 pcg 1.17 <th>DESCRIPTION</th>
6705 pcg 1.37 <th width="10%">GUARD</th>
6706 pcg 1.1 </tr>
6707     <tr>
6708     <td>channel</td>
6709 pcg 1.3 <td>U16</td>
6710 pcg 1.17 <td> </td>
6711 pcg 1.3 <td>
6712 pcg 1.17
6713      
6714     </td>
6715     <td>
6716     <b></b>
6717      
6718     </td>
6719 pcg 1.1 </tr>
6720     <tr>
6721     <td>tree</td>
6722     <td>TREE</td>
6723 pcg 1.17 <td> </td>
6724     <td>
6725    
6726      
6727     </td>
6728 pcg 1.3 <td>
6729 pcg 1.17 <b></b>
6730      
6731     </td>
6732 pcg 1.1 </tr>
6733     </table>
6734    
6735 pcg 1.17 <h4>
6736 pcg 1.32 <a name="S4406"></a>ORIGIN: SERVER;
6737     MESSAGE: upd_tree</h4>
6738 pcg 1.17 NUMERIC TYPE (hex): 4406<p>
6739     </p>
6740     <table border="1" width="100%">
6741 pcg 1.1 <tr>
6742 pcg 1.17 <th width="10%">NAME</th>
6743 pcg 1.37 <th width="8%">TYPE</th>
6744     <th width="4%">VALUE</th>
6745 pcg 1.17 <th>DESCRIPTION</th>
6746 pcg 1.37 <th width="10%">GUARD</th>
6747 pcg 1.1 </tr>
6748     <tr>
6749     <td>channel</td>
6750 pcg 1.3 <td>U16</td>
6751 pcg 1.17 <td> </td>
6752     <td>
6753    
6754      
6755     </td>
6756 pcg 1.3 <td>
6757 pcg 1.17 <b></b>
6758      
6759     </td>
6760 pcg 1.1 </tr>
6761     <tr>
6762     <td>tree</td>
6763     <td>TREE</td>
6764 pcg 1.17 <td> </td>
6765     <td>
6766    
6767      
6768     </td>
6769 pcg 1.3 <td>
6770 pcg 1.17 <b></b>
6771      
6772     </td>
6773 pcg 1.1 </tr>
6774     </table>
6775    
6776 pcg 1.17 <h4>
6777 pcg 1.32 <a name="S4409"></a>ORIGIN: SERVER;
6778     MESSAGE: superko</h4>
6779 pcg 1.17 NUMERIC TYPE (hex): 4409<p>
6780     Superko-warning.
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     </table>
6804    
6805 pcg 1.17 <h4>
6806 pcg 1.63 <a name="S440a"></a>ORIGIN: SERVER;
6807     MESSAGE: game_done</h4>
6808     NUMERIC TYPE (hex): 440a<p>
6809     <p>Send by the server when one of the players sends a done.</p>
6810     </p>
6811     <table border="1" width="100%">
6812     <tr>
6813     <th width="10%">NAME</th>
6814     <th width="8%">TYPE</th>
6815     <th width="4%">VALUE</th>
6816     <th>DESCRIPTION</th>
6817     <th width="10%">GUARD</th>
6818     </tr>
6819     <tr>
6820     <td>channel</td>
6821     <td>U16</td>
6822     <td> </td>
6823     <td>
6824    
6825      
6826     </td>
6827     <td>
6828     <b></b>
6829      
6830     </td>
6831     </tr>
6832     <tr>
6833     <td>id</td>
6834     <td>U32</td>
6835     <td> </td>
6836     <td>
6837    
6838      
6839     </td>
6840     <td>
6841     <b></b>
6842      
6843     </td>
6844     </tr>
6845     <tr>
6846     <td>black</td>
6847     <td>flag</td>
6848     <td> </td>
6849     <td>
6850    
6851      
6852     </td>
6853     <td>
6854     <b></b>
6855      
6856     </td>
6857     </tr>
6858     <tr>
6859     <td>white</td>
6860     <td>flag</td>
6861     <td> </td>
6862     <td>
6863    
6864      
6865     </td>
6866     <td>
6867     <b></b>
6868      
6869     </td>
6870     </tr>
6871     </table>
6872    
6873     <h4>
6874 pcg 1.32 <a name="S440b"></a>ORIGIN: SERVER;
6875     MESSAGE: final_result</h4>
6876 pcg 1.17 NUMERIC TYPE (hex): 440b<p>
6877     </p>
6878     <table border="1" width="100%">
6879 pcg 1.1 <tr>
6880 pcg 1.17 <th width="10%">NAME</th>
6881 pcg 1.37 <th width="8%">TYPE</th>
6882     <th width="4%">VALUE</th>
6883 pcg 1.17 <th>DESCRIPTION</th>
6884 pcg 1.37 <th width="10%">GUARD</th>
6885 pcg 1.1 </tr>
6886     <tr>
6887     <td>channel</td>
6888 pcg 1.3 <td>U16</td>
6889 pcg 1.17 <td> </td>
6890 pcg 1.3 <td>
6891 pcg 1.17
6892      
6893     </td>
6894     <td>
6895     <b></b>
6896      
6897     </td>
6898 pcg 1.1 </tr>
6899     <tr>
6900     <td>blackscore</td>
6901 pcg 1.10 <td>scorevalues</td>
6902 pcg 1.17 <td> </td>
6903     <td>
6904    
6905      
6906     </td>
6907 pcg 1.3 <td>
6908 pcg 1.17 <b></b>
6909      
6910     </td>
6911 pcg 1.1 </tr>
6912     <tr>
6913     <td>whitescore</td>
6914 pcg 1.10 <td>scorevalues</td>
6915 pcg 1.17 <td> </td>
6916 pcg 1.3 <td>
6917 pcg 1.17
6918      
6919     </td>
6920     <td>
6921     <b></b>
6922      
6923     </td>
6924 pcg 1.1 </tr>
6925     </table>
6926    
6927 pcg 1.17 <h4>
6928 pcg 1.61 <a name="S440c"></a>ORIGIN: SERVER;
6929     MESSAGE: out_of_time</h4>
6930     NUMERIC TYPE (hex): 440c<p>
6931 pcg 1.62 <p>Sent when the user is out of time and moves, or when the opponent
6932     requests <a href="#S0008">userinfo(0008)</a>.</p>
6933     </p>
6934 pcg 1.61 <table border="1" width="100%">
6935     <tr>
6936     <th width="10%">NAME</th>
6937     <th width="8%">TYPE</th>
6938     <th width="4%">VALUE</th>
6939     <th>DESCRIPTION</th>
6940     <th width="10%">GUARD</th>
6941     </tr>
6942     <tr>
6943     <td>channel</td>
6944     <td>U16</td>
6945     <td> </td>
6946     <td>
6947    
6948      
6949     </td>
6950     <td>
6951     <b></b>
6952      
6953     </td>
6954     </tr>
6955     <tr>
6956     <td>player</td>
6957     <td>U8</td>
6958     <td> </td>
6959     <td>
6960    
6961      
6962     </td>
6963     <td>
6964     <b></b>
6965      
6966     </td>
6967     </tr>
6968     </table>
6969    
6970     <h4>
6971 pcg 1.32 <a name="S440e"></a>ORIGIN: SERVER;
6972     MESSAGE: req_undo</h4>
6973 pcg 1.17 NUMERIC TYPE (hex): 440e<p>
6974     </p>
6975     <table border="1" width="100%">
6976 pcg 1.1 <tr>
6977 pcg 1.17 <th width="10%">NAME</th>
6978 pcg 1.37 <th width="8%">TYPE</th>
6979     <th width="4%">VALUE</th>
6980 pcg 1.17 <th>DESCRIPTION</th>
6981 pcg 1.37 <th width="10%">GUARD</th>
6982 pcg 1.1 </tr>
6983     <tr>
6984     <td>channel</td>
6985 pcg 1.3 <td>U16</td>
6986 pcg 1.17 <td> </td>
6987 pcg 1.3 <td>
6988 pcg 1.17
6989      
6990     </td>
6991     <td>
6992     <b></b>
6993      
6994     </td>
6995 pcg 1.1 </tr>
6996     </table>
6997    
6998 pcg 1.17 <h4>
6999 pcg 1.32 <a name="S4410"></a>ORIGIN: SERVER;
7000     MESSAGE: resign_game</h4>
7001 pcg 1.17 NUMERIC TYPE (hex): 4410<p>
7002     </p>
7003     <table border="1" width="100%">
7004 pcg 1.1 <tr>
7005 pcg 1.17 <th width="10%">NAME</th>
7006 pcg 1.37 <th width="8%">TYPE</th>
7007     <th width="4%">VALUE</th>
7008 pcg 1.17 <th>DESCRIPTION</th>
7009 pcg 1.37 <th width="10%">GUARD</th>
7010 pcg 1.1 </tr>
7011     <tr>
7012     <td>channel</td>
7013 pcg 1.3 <td>U16</td>
7014 pcg 1.17 <td> </td>
7015     <td>
7016    
7017      
7018     </td>
7019 pcg 1.3 <td>
7020 pcg 1.17 <b></b>
7021      
7022     </td>
7023 pcg 1.1 </tr>
7024     <tr>
7025     <td>player</td>
7026 pcg 1.3 <td>U8</td>
7027 pcg 1.17 <td> </td>
7028 pcg 1.3 <td>
7029 pcg 1.17
7030      
7031     </td>
7032     <td>
7033     <b></b>
7034      
7035     </td>
7036 pcg 1.1 </tr>
7037     </table>
7038    
7039 pcg 1.17 <h4>
7040 pcg 1.40 <a name="S4415"></a>ORIGIN: SERVER;
7041     MESSAGE: game_error</h4>
7042     NUMERIC TYPE (hex): 4415<p>
7043     </p>
7044     <table border="1" width="100%">
7045     <tr>
7046     <th width="10%">NAME</th>
7047     <th width="8%">TYPE</th>
7048     <th width="4%">VALUE</th>
7049     <th>DESCRIPTION</th>
7050     <th width="10%">GUARD</th>
7051     </tr>
7052     <tr>
7053     <td>channel</td>
7054     <td>U16</td>
7055     <td> </td>
7056     <td>
7057    
7058      
7059     </td>
7060     <td>
7061     <b></b>
7062      
7063     </td>
7064     </tr>
7065     <tr>
7066     <td>message</td>
7067     <td>CONSTANT</td>
7068     <td>Sorry, this is a lecture game. Only authorized players are allowed to make comments. </td>
7069     <td>
7070    
7071      
7072     </td>
7073     <td>
7074     <b></b>
7075      
7076     </td>
7077     </tr>
7078     </table>
7079    
7080     <h4>
7081 pcg 1.32 <a name="S441a"></a>ORIGIN: SERVER;
7082     MESSAGE: set_teacher</h4>
7083 pcg 1.17 NUMERIC TYPE (hex): 441a<p>
7084     </p>
7085     <table border="1" width="100%">
7086 pcg 1.1 <tr>
7087 pcg 1.17 <th width="10%">NAME</th>
7088 pcg 1.37 <th width="8%">TYPE</th>
7089     <th width="4%">VALUE</th>
7090 pcg 1.17 <th>DESCRIPTION</th>
7091 pcg 1.37 <th width="10%">GUARD</th>
7092 pcg 1.1 </tr>
7093     <tr>
7094     <td>channel</td>
7095 pcg 1.3 <td>U16</td>
7096 pcg 1.17 <td> </td>
7097     <td>
7098    
7099      
7100     </td>
7101 pcg 1.3 <td>
7102 pcg 1.17 <b></b>
7103      
7104     </td>
7105 pcg 1.1 </tr>
7106     <tr>
7107     <td>name</td>
7108 pcg 1.3 <td>username</td>
7109 pcg 1.17 <td> </td>
7110     <td>
7111    
7112      
7113     </td>
7114 pcg 1.3 <td>
7115 pcg 1.17 <b></b>
7116      
7117     </td>
7118 pcg 1.1 </tr>
7119     </table>
7120    
7121 pcg 1.17 <h4>
7122 pcg 1.32 <a name="S441d"></a>ORIGIN: SERVER;
7123     MESSAGE: owner_left</h4>
7124 pcg 1.17 NUMERIC TYPE (hex): 441d<p>
7125     </p>
7126     <table border="1" width="100%">
7127 pcg 1.1 <tr>
7128 pcg 1.17 <th width="10%">NAME</th>
7129 pcg 1.37 <th width="8%">TYPE</th>
7130     <th width="4%">VALUE</th>
7131 pcg 1.17 <th>DESCRIPTION</th>
7132 pcg 1.37 <th width="10%">GUARD</th>
7133 pcg 1.1 </tr>
7134     <tr>
7135     <td>channel</td>
7136 pcg 1.3 <td>U16</td>
7137 pcg 1.17 <td> </td>
7138     <td>
7139 pcg 1.40
7140      
7141     </td>
7142     <td>
7143     <b></b>
7144      
7145     </td>
7146     </tr>
7147     <tr>
7148     <td>message</td>
7149     <td>CONSTANT</td>
7150     <td>Sorry, the owner of this game has left. Nobody will be allowed to edit it until the owner returns. </td>
7151     <td>
7152 pcg 1.17
7153      
7154     </td>
7155 pcg 1.3 <td>
7156 pcg 1.17 <b></b>
7157      
7158     </td>
7159 pcg 1.1 </tr>
7160     </table>
7161    
7162 pcg 1.17 <h4>
7163 pcg 1.32 <a name="S441e"></a>ORIGIN: SERVER;
7164     MESSAGE: teacher_left</h4>
7165 pcg 1.17 NUMERIC TYPE (hex): 441e<p>
7166     Unclear.
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    
7182      
7183     </td>
7184 pcg 1.3 <td>
7185 pcg 1.17 <b></b>
7186      
7187     </td>
7188 pcg 1.1 </tr>
7189     </table>
7190    
7191 pcg 1.17 <h4>
7192 pcg 1.32 <a name="S4422"></a>ORIGIN: SERVER;
7193 pcg 1.40 MESSAGE: allow_user_result</h4>
7194 pcg 1.17 NUMERIC TYPE (hex): 4422<p>
7195     </p>
7196     <table border="1" width="100%">
7197 pcg 1.1 <tr>
7198 pcg 1.17 <th width="10%">NAME</th>
7199 pcg 1.37 <th width="8%">TYPE</th>
7200     <th width="4%">VALUE</th>
7201 pcg 1.17 <th>DESCRIPTION</th>
7202 pcg 1.37 <th width="10%">GUARD</th>
7203 pcg 1.1 </tr>
7204     <tr>
7205 pcg 1.40 <td>message</td>
7206     <td>CONSTANT</td>
7207     <td>User "%s" will now be allowed full access to your game. </td>
7208     <td>
7209    
7210      
7211     </td>
7212     <td>
7213     <b></b>
7214      
7215     </td>
7216     </tr>
7217     <tr>
7218 pcg 1.1 <td>channel</td>
7219 pcg 1.3 <td>U16</td>
7220 pcg 1.17 <td> </td>
7221 pcg 1.3 <td>
7222 pcg 1.40
7223      
7224     </td>
7225     <td>
7226     <b></b>
7227      
7228     </td>
7229     </tr>
7230     </table>
7231    
7232     <h4>
7233     <a name="S4424"></a>ORIGIN: SERVER;
7234     MESSAGE: allow_user_result</h4>
7235     NUMERIC TYPE (hex): 4424<p>
7236     </p>
7237     <table border="1" width="100%">
7238     <tr>
7239     <th width="10%">NAME</th>
7240     <th width="8%">TYPE</th>
7241     <th width="4%">VALUE</th>
7242     <th>DESCRIPTION</th>
7243     <th width="10%">GUARD</th>
7244     </tr>
7245     <tr>
7246     <td>message</td>
7247     <td>CONSTANT</td>
7248     <td>Sorry, user "%s" is a guest and cannot be allowed full access to your game. </td>
7249     <td>
7250 pcg 1.17
7251      
7252     </td>
7253     <td>
7254     <b></b>
7255      
7256     </td>
7257 pcg 1.1 </tr>
7258     <tr>
7259 pcg 1.40 <td>channel</td>
7260     <td>U16</td>
7261 pcg 1.17 <td> </td>
7262     <td>
7263 pcg 1.40
7264      
7265     </td>
7266     <td>
7267     <b></b>
7268      
7269     </td>
7270     </tr>
7271     </table>
7272    
7273     <h4>
7274     <a name="S4425"></a>ORIGIN: SERVER;
7275     MESSAGE: allow_user_result</h4>
7276     NUMERIC TYPE (hex): 4425<p>
7277     </p>
7278     <table border="1" width="100%">
7279     <tr>
7280     <th width="10%">NAME</th>
7281     <th width="8%">TYPE</th>
7282     <th width="4%">VALUE</th>
7283     <th>DESCRIPTION</th>
7284     <th width="10%">GUARD</th>
7285     </tr>
7286     <tr>
7287     <td>message</td>
7288     <td>CONSTANT</td>
7289     <td>Sorry, user "%s" does not seem to exist and cannot be allowed into your game. </td>
7290     <td>
7291 pcg 1.17
7292      
7293     </td>
7294 pcg 1.3 <td>
7295 pcg 1.17 <b></b>
7296      
7297     </td>
7298 pcg 1.1 </tr>
7299     <tr>
7300 pcg 1.40 <td>channel</td>
7301     <td>U16</td>
7302 pcg 1.26 <td> </td>
7303     <td>
7304    
7305      
7306     </td>
7307     <td>
7308     <b></b>
7309      
7310     </td>
7311     </tr>
7312     </table>
7313    
7314     <h4>
7315 pcg 1.32 <a name="S4428"></a>ORIGIN: SERVER;
7316     MESSAGE: add_tree</h4>
7317 pcg 1.26 NUMERIC TYPE (hex): 4428<p>
7318 pcg 1.32 <p>See <a href="#S4405">set_tree(4405)</a>. In addition, flags the tree as being
7319 pcg 1.26 uploaded completely.</p>
7320     </p>
7321     <table border="1" width="100%">
7322     <tr>
7323     <th width="10%">NAME</th>
7324 pcg 1.37 <th width="8%">TYPE</th>
7325     <th width="4%">VALUE</th>
7326 pcg 1.26 <th>DESCRIPTION</th>
7327 pcg 1.37 <th width="10%">GUARD</th>
7328 pcg 1.26 </tr>
7329     <tr>
7330     <td>channel</td>
7331     <td>U16</td>
7332     <td> </td>
7333     <td>
7334    
7335      
7336     </td>
7337     <td>
7338     <b></b>
7339      
7340     </td>
7341     </tr>
7342     <tr>
7343     <td>tree</td>
7344     <td>TREE</td>
7345 pcg 1.40 <td> </td>
7346     <td>
7347    
7348      
7349     </td>
7350     <td>
7351     <b></b>
7352      
7353     </td>
7354     </tr>
7355     </table>
7356    
7357     <h4>
7358     <a name="S4429"></a>ORIGIN: SERVER;
7359     MESSAGE: reject_challenge</h4>
7360     NUMERIC TYPE (hex): 4429<p>
7361     Reject a challenge by a given user. Not checked.
7362     </p>
7363     <table border="1" width="100%">
7364     <tr>
7365     <th width="10%">NAME</th>
7366     <th width="8%">TYPE</th>
7367     <th width="4%">VALUE</th>
7368     <th>DESCRIPTION</th>
7369     <th width="10%">GUARD</th>
7370     </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>name</td>
7386     <td>username</td>
7387 pcg 1.17 <td> </td>
7388 pcg 1.3 <td>
7389 pcg 1.60
7390      
7391     </td>
7392     <td>
7393     <b></b>
7394      
7395     </td>
7396     </tr>
7397     <tr>
7398     <td>gametype</td>
7399     <td>U8</td>
7400     <td> </td>
7401     <td>
7402    
7403      
7404     </td>
7405     <td>
7406     <b></b>
7407      
7408     </td>
7409     </tr>
7410     <tr>
7411     <td>cid</td>
7412     <td>CLIENTID8</td>
7413     <td> </td>
7414     <td>
7415    
7416      
7417     </td>
7418     <td>
7419     <b></b>
7420      
7421     </td>
7422     </tr>
7423     <tr>
7424     <td>rules</td>
7425     <td>rules</td>
7426     <td> </td>
7427     <td>
7428 pcg 1.17
7429 pcg 1.41  
7430     </td>
7431     <td>
7432     <b></b>
7433      
7434     </td>
7435     </tr>
7436     </table>
7437    
7438     <h4>
7439 pcg 1.63 <a name="S442b"></a>ORIGIN: SERVER;
7440     MESSAGE: set_comments</h4>
7441     NUMERIC TYPE (hex): 442b<p>
7442     <p>Sent at end of games to set the comments not seen previously.</p>
7443     </p>
7444     <table border="1" width="100%">
7445     <tr>
7446     <th width="10%">NAME</th>
7447     <th width="8%">TYPE</th>
7448     <th width="4%">VALUE</th>
7449     <th>DESCRIPTION</th>
7450     <th width="10%">GUARD</th>
7451     </tr>
7452     <tr>
7453     <td>channel</td>
7454     <td>U16</td>
7455     <td> </td>
7456     <td>
7457    
7458      
7459     </td>
7460     <td>
7461     <b></b>
7462      
7463     </td>
7464     </tr>
7465     <tr>
7466     <td>node</td>
7467     <td>U32</td>
7468     <td> </td>
7469     <td>
7470    
7471      
7472     </td>
7473     <td>
7474     <b></b>
7475      
7476     </td>
7477     </tr>
7478     <tr>
7479     <td>comments</td>
7480     <td>STRING</td>
7481     <td> </td>
7482     <td>
7483    
7484      
7485     </td>
7486     <td>
7487     <b></b>
7488      
7489     </td>
7490     </tr>
7491     </table>
7492    
7493     <h4>
7494     <a name="S442c"></a>ORIGIN: SERVER;
7495     MESSAGE: add_comments</h4>
7496     NUMERIC TYPE (hex): 442c<p>
7497     <p>Sent at end of games to add all game commentary.</p>
7498     </p>
7499     <table border="1" width="100%">
7500     <tr>
7501     <th width="10%">NAME</th>
7502     <th width="8%">TYPE</th>
7503     <th width="4%">VALUE</th>
7504     <th>DESCRIPTION</th>
7505     <th width="10%">GUARD</th>
7506     </tr>
7507     <tr>
7508     <td>channel</td>
7509     <td>U16</td>
7510     <td> </td>
7511     <td>
7512    
7513      
7514     </td>
7515     <td>
7516     <b></b>
7517      
7518     </td>
7519     </tr>
7520     <tr>
7521     <td>node</td>
7522     <td>U32</td>
7523     <td> </td>
7524     <td>
7525    
7526      
7527     </td>
7528     <td>
7529     <b></b>
7530      
7531     </td>
7532     </tr>
7533     <tr>
7534     <td>comments</td>
7535     <td>STRING</td>
7536     <td> </td>
7537     <td>
7538    
7539      
7540     </td>
7541     <td>
7542     <b></b>
7543      
7544     </td>
7545     </tr>
7546     </table>
7547    
7548     <h4>
7549 pcg 1.46 <a name="S442f"></a>ORIGIN: SERVER;
7550 pcg 1.41 MESSAGE: new_game</h4>
7551     NUMERIC TYPE (hex): 442f<p>
7552     <p>Notifies the client that a new game has been created. This
7553 pcg 1.46 message is sent long *after* upd_games and upd_observers etc.
7554     have been received. *sigh*</p>
7555 pcg 1.41 </p>
7556     <table border="1" width="100%">
7557     <tr>
7558     <th width="10%">NAME</th>
7559     <th width="8%">TYPE</th>
7560     <th width="4%">VALUE</th>
7561     <th>DESCRIPTION</th>
7562     <th width="10%">GUARD</th>
7563     </tr>
7564     <tr>
7565     <td>channel</td>
7566     <td>U16</td>
7567     <td> </td>
7568     <td>
7569    
7570      
7571     </td>
7572     <td>
7573     <b></b>
7574      
7575     </td>
7576     </tr>
7577     <tr>
7578 pcg 1.58 <td>cid</td>
7579 pcg 1.60 <td>CLIENTID16</td>
7580 pcg 1.41 <td> </td>
7581     <td>
7582    
7583 pcg 1.17  
7584     </td>
7585     <td>
7586     <b></b>
7587      
7588     </td>
7589 pcg 1.1 </tr>
7590     </table>
7591    
7592 pcg 1.17 <h4>
7593 pcg 1.32 <a name="S4433"></a>ORIGIN: SERVER;
7594     MESSAGE: req_result</h4>
7595 pcg 1.17 NUMERIC TYPE (hex): 4433<p>
7596     Unclear.
7597     </p>
7598     <table border="1" width="100%">
7599 pcg 1.1 <tr>
7600 pcg 1.17 <th width="10%">NAME</th>
7601 pcg 1.37 <th width="8%">TYPE</th>
7602     <th width="4%">VALUE</th>
7603 pcg 1.17 <th>DESCRIPTION</th>
7604 pcg 1.37 <th width="10%">GUARD</th>
7605 pcg 1.1 </tr>
7606     <tr>
7607     <td>channel</td>
7608 pcg 1.3 <td>U16</td>
7609 pcg 1.17 <td> </td>
7610 pcg 1.3 <td>
7611 pcg 1.1 # # recv_result(?)
7612 pcg 1.17
7613      
7614     </td>
7615     <td>
7616     <b></b>
7617      
7618     </td>
7619 pcg 1.1 </tr>
7620     </table>
7621    
7622 pcg 1.17 <h4>
7623 pcg 1.32 <a name="S4434"></a>ORIGIN: SERVER;
7624 pcg 1.48 MESSAGE: set_quiet</h4>
7625 pcg 1.17 NUMERIC TYPE (hex): 4434<p>
7626 pcg 1.48 <p>Sets (or clears) the quiet flag on a game.</p>
7627     </p>
7628 pcg 1.17 <table border="1" width="100%">
7629 pcg 1.1 <tr>
7630 pcg 1.17 <th width="10%">NAME</th>
7631 pcg 1.37 <th width="8%">TYPE</th>
7632     <th width="4%">VALUE</th>
7633 pcg 1.17 <th>DESCRIPTION</th>
7634 pcg 1.37 <th width="10%">GUARD</th>
7635 pcg 1.1 </tr>
7636     <tr>
7637     <td>channel</td>
7638 pcg 1.3 <td>U16</td>
7639 pcg 1.17 <td> </td>
7640     <td>
7641    
7642      
7643     </td>
7644 pcg 1.3 <td>
7645 pcg 1.17 <b></b>
7646      
7647     </td>
7648 pcg 1.1 </tr>
7649     <tr>
7650 pcg 1.48 <td>quiet</td>
7651 pcg 1.58 <td>flag</td>
7652 pcg 1.17 <td> </td>
7653 pcg 1.3 <td>
7654 pcg 1.17
7655      
7656     </td>
7657     <td>
7658     <b></b>
7659      
7660     </td>
7661 pcg 1.1 </tr>
7662     </table>
7663    
7664 pcg 1.43 <h4>
7665 pcg 1.50 <a name="S4437"></a>ORIGIN: SERVER;
7666 pcg 1.57 MESSAGE: set_gametime</h4>
7667 pcg 1.50 NUMERIC TYPE (hex): 4437<p>
7668 pcg 1.57 <p>Sent when joining a game. Gives the remaining time +
7669     periods/moves for the players, to correctly initialize the clocks.</p>
7670 pcg 1.50 </p>
7671     <table border="1" width="100%">
7672     <tr>
7673     <th width="10%">NAME</th>
7674     <th width="8%">TYPE</th>
7675     <th width="4%">VALUE</th>
7676     <th>DESCRIPTION</th>
7677     <th width="10%">GUARD</th>
7678     </tr>
7679     <tr>
7680     <td>channel</td>
7681     <td>U16</td>
7682     <td> </td>
7683     <td>
7684    
7685      
7686     </td>
7687     <td>
7688     <b></b>
7689      
7690     </td>
7691     </tr>
7692     <tr>
7693 pcg 1.64 <td>black_time</td>
7694 pcg 1.50 <td>time</td>
7695     <td> </td>
7696     <td>
7697    
7698      
7699     </td>
7700     <td>
7701     <b></b>
7702      
7703     </td>
7704     </tr>
7705     <tr>
7706 pcg 1.64 <td>black_moves</td>
7707 pcg 1.50 <td>U16</td>
7708     <td> </td>
7709     <td>
7710    
7711      
7712     </td>
7713     <td>
7714     <b></b>
7715      
7716     </td>
7717     </tr>
7718     <tr>
7719 pcg 1.64 <td>white_time</td>
7720 pcg 1.50 <td>time</td>
7721     <td> </td>
7722     <td>
7723    
7724      
7725     </td>
7726     <td>
7727     <b></b>
7728      
7729     </td>
7730     </tr>
7731     <tr>
7732 pcg 1.64 <td>white_moves</td>
7733 pcg 1.50 <td>U16</td>
7734     <td> </td>
7735     <td>
7736    
7737      
7738     </td>
7739     <td>
7740     <b></b>
7741      
7742     </td>
7743     </tr>
7744     </table>
7745    
7746     <h4>
7747 pcg 1.44 <a name="S443b"></a>ORIGIN: SERVER;
7748 pcg 1.46 MESSAGE: del_global_challenge</h4>
7749 pcg 1.43 NUMERIC TYPE (hex): 443b<p>
7750 pcg 1.46 <p>
7751     Remove a game from the global challenge list (open game list).
7752 pcg 1.43 </p>
7753 pcg 1.46 </p>
7754 pcg 1.43 <table border="1" width="100%">
7755     <tr>
7756     <th width="10%">NAME</th>
7757     <th width="8%">TYPE</th>
7758     <th width="4%">VALUE</th>
7759     <th>DESCRIPTION</th>
7760     <th width="10%">GUARD</th>
7761     </tr>
7762     <tr>
7763     <td>channel</td>
7764     <td>U16</td>
7765     <td> </td>
7766     <td>
7767    
7768      
7769     </td>
7770     <td>
7771     <b></b>
7772      
7773     </td>
7774     </tr>
7775     <tr>
7776 pcg 1.44 <td>game</td>
7777 pcg 1.43 <td>U16</td>
7778     <td> </td>
7779     <td>
7780 pcg 1.46
7781 pcg 1.43  
7782     </td>
7783     <td>
7784     <b></b>
7785      
7786     </td>
7787     </tr>
7788     </table>
7789 pcg 1.1 </body>
7790     </html>