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