ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.73
Committed: Tue Jun 1 10:11:14 2004 UTC (20 years ago) by root
Content type: text/html
Branch: MAIN
Changes since 1.72: +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.73 <h1>$Revision: 1.72 $</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     MESSAGE: unknown_030c</h4>
5815     NUMERIC TYPE (hex): 030c<p>
5816     <p>Not the slightest... No payload, either.</p>
5817     </p>
5818     <table border="1" width="100%">
5819     <tr>
5820     <th width="10%">NAME</th>
5821     <th width="8%">TYPE</th>
5822     <th width="4%">VALUE</th>
5823     <th>DESCRIPTION</th>
5824     <th width="10%">GUARD</th>
5825     </tr>
5826     </table>
5827    
5828     <h4>
5829 pcg 1.32 <a name="S0310"></a>ORIGIN: SERVER;
5830     MESSAGE: priv_room</h4>
5831 pcg 1.17 NUMERIC TYPE (hex): 0310<p>
5832     "permission denied" when joining a room
5833     </p>
5834     <table border="1" width="100%">
5835 pcg 1.1 <tr>
5836 pcg 1.17 <th width="10%">NAME</th>
5837 pcg 1.37 <th width="8%">TYPE</th>
5838     <th width="4%">VALUE</th>
5839 pcg 1.17 <th>DESCRIPTION</th>
5840 pcg 1.37 <th width="10%">GUARD</th>
5841 pcg 1.1 </tr>
5842     <tr>
5843     <td>name</td>
5844     <td>STRING</td>
5845 pcg 1.17 <td> </td>
5846 pcg 1.3 <td>
5847 pcg 1.17
5848      
5849     </td>
5850     <td>
5851     <b></b>
5852      
5853     </td>
5854 pcg 1.1 </tr>
5855     </table>
5856    
5857 pcg 1.17 <h4>
5858 pcg 1.32 <a name="S0318"></a>ORIGIN: SERVER;
5859     MESSAGE: upd_rooms</h4>
5860 pcg 1.17 NUMERIC TYPE (hex): 0318
5861     (possibly in response to
5862 pcg 1.32 <a href="#C0318">list_rooms(0318)</a>
5863 pcg 1.17 )
5864     <p>
5865     </p>
5866     <table border="1" width="100%">
5867     <tr>
5868     <th width="10%">NAME</th>
5869 pcg 1.37 <th width="8%">TYPE</th>
5870     <th width="4%">VALUE</th>
5871 pcg 1.17 <th>DESCRIPTION</th>
5872 pcg 1.37 <th width="10%">GUARD</th>
5873 pcg 1.1 </tr>
5874     <tr>
5875     <td>rooms</td>
5876     <td>room</td>
5877 pcg 1.17 <td> </td>
5878 pcg 1.3 <td>
5879 pcg 1.17
5880      
5881     </td>
5882     <td>
5883     <b></b>
5884      
5885     </td>
5886 pcg 1.1 </tr>
5887     </table>
5888    
5889 pcg 1.17 <h4>
5890 pcg 1.32 <a name="S0411"></a>ORIGIN: SERVER;
5891     MESSAGE: chal_defaults</h4>
5892 pcg 1.17 NUMERIC TYPE (hex): 0411
5893     (possibly in response to
5894 pcg 1.32 <a href="#C0000">login(0000)</a>
5895 pcg 1.17 )
5896     <p>
5897     </p>
5898     <table border="1" width="100%">
5899     <tr>
5900     <th width="10%">NAME</th>
5901 pcg 1.37 <th width="8%">TYPE</th>
5902     <th width="4%">VALUE</th>
5903 pcg 1.17 <th>DESCRIPTION</th>
5904 pcg 1.37 <th width="10%">GUARD</th>
5905 pcg 1.1 </tr>
5906     <tr>
5907 pcg 1.14 <td>channel</td>
5908 pcg 1.3 <td>U16</td>
5909 pcg 1.17 <td> </td>
5910 pcg 1.3 <td>
5911 pcg 1.17
5912      
5913     </td>
5914     <td>
5915     <b></b>
5916      
5917     </td>
5918 pcg 1.1 </tr>
5919     <tr>
5920 pcg 1.14 <td>defaults</td>
5921     <td>challenge_defaults</td>
5922 pcg 1.17 <td> </td>
5923     <td>
5924    
5925      
5926     </td>
5927 pcg 1.3 <td>
5928 pcg 1.17 <b></b>
5929      
5930     </td>
5931 pcg 1.1 </tr>
5932     </table>
5933    
5934 pcg 1.17 <h4>
5935 pcg 1.32 <a name="S0412"></a>ORIGIN: SERVER;
5936 pcg 1.61 MESSAGE: already_playing</h4>
5937 pcg 1.17 NUMERIC TYPE (hex): 0412<p>
5938 pcg 1.61 Unable to create new game.
5939 pcg 1.17 </p>
5940     <table border="1" width="100%">
5941 pcg 1.15 <tr>
5942 pcg 1.17 <th width="10%">NAME</th>
5943 pcg 1.37 <th width="8%">TYPE</th>
5944     <th width="4%">VALUE</th>
5945 pcg 1.17 <th>DESCRIPTION</th>
5946 pcg 1.37 <th width="10%">GUARD</th>
5947 pcg 1.15 </tr>
5948     <tr>
5949 pcg 1.40 <td>message</td>
5950     <td>CONSTANT</td>
5951     <td>Sorry, you are already playing in one game, so you can't start playing in another. </td>
5952     <td>
5953    
5954      
5955     </td>
5956     <td>
5957     <b></b>
5958      
5959     </td>
5960     </tr>
5961     <tr>
5962 pcg 1.61 <td>cid</td>
5963     <td>CLIENTID16</td>
5964 pcg 1.17 <td> </td>
5965     <td>
5966 root 1.72 <p>The cid of the new_game etc. request.</p>
5967    
5968 pcg 1.17  
5969     </td>
5970 pcg 1.15 <td>
5971 pcg 1.17 <b></b>
5972      
5973     </td>
5974 pcg 1.15 </tr>
5975     </table>
5976    
5977 pcg 1.17 <h4>
5978 pcg 1.32 <a name="S0414"></a>ORIGIN: SERVER;
5979     MESSAGE: game_record</h4>
5980 pcg 1.17 NUMERIC TYPE (hex): 0414
5981     (possibly in response to
5982 pcg 1.32 <a href="#C0413">req_game_record(0413)</a>
5983 pcg 1.17 )
5984     <p>
5985     The users game record.
5986     </p>
5987     <table border="1" width="100%">
5988 pcg 1.1 <tr>
5989 pcg 1.17 <th width="10%">NAME</th>
5990 pcg 1.37 <th width="8%">TYPE</th>
5991     <th width="4%">VALUE</th>
5992 pcg 1.17 <th>DESCRIPTION</th>
5993 pcg 1.37 <th width="10%">GUARD</th>
5994 pcg 1.14 </tr>
5995     <tr>
5996     <td>name</td>
5997     <td>username</td>
5998 pcg 1.17 <td> </td>
5999 pcg 1.14 <td>
6000 pcg 1.17
6001      
6002     </td>
6003     <td>
6004     <b></b>
6005      
6006     </td>
6007 pcg 1.14 </tr>
6008     <tr>
6009     <td>more</td>
6010     <td>flag</td>
6011 pcg 1.17 <td> </td>
6012 pcg 1.14 <td>
6013     Wether more games are available (must be requested manually)
6014 pcg 1.17
6015      
6016     </td>
6017     <td>
6018     <b></b>
6019      
6020     </td>
6021 pcg 1.1 </tr>
6022     <tr>
6023 pcg 1.14 <td>games</td>
6024     <td>game_record</td>
6025 pcg 1.17 <td> </td>
6026 pcg 1.3 <td>
6027 pcg 1.17
6028      
6029     </td>
6030     <td>
6031     <b></b>
6032      
6033     </td>
6034 pcg 1.14 </tr>
6035     </table>
6036    
6037 pcg 1.17 <h4>
6038 pcg 1.40 <a name="S0417"></a>ORIGIN: SERVER;
6039     MESSAGE: error</h4>
6040     NUMERIC TYPE (hex): 0417<p>
6041     </p>
6042     <table border="1" width="100%">
6043     <tr>
6044     <th width="10%">NAME</th>
6045     <th width="8%">TYPE</th>
6046     <th width="4%">VALUE</th>
6047     <th>DESCRIPTION</th>
6048     <th width="10%">GUARD</th>
6049     </tr>
6050     <tr>
6051     <td>message</td>
6052     <td>CONSTANT</td>
6053     <td>Sorry, your opponent is currently not logged in, so you can't resume this game. </td>
6054     <td>
6055    
6056      
6057     </td>
6058     <td>
6059     <b></b>
6060      
6061     </td>
6062     </tr>
6063     </table>
6064    
6065     <h4>
6066     <a name="S0418"></a>ORIGIN: SERVER;
6067     MESSAGE: error</h4>
6068     NUMERIC TYPE (hex): 0418<p>
6069     </p>
6070     <table border="1" width="100%">
6071     <tr>
6072     <th width="10%">NAME</th>
6073     <th width="8%">TYPE</th>
6074     <th width="4%">VALUE</th>
6075     <th>DESCRIPTION</th>
6076     <th width="10%">GUARD</th>
6077     </tr>
6078     <tr>
6079     <td>message</td>
6080     <td>CONSTANT</td>
6081     <td>Sorry, your opponent is already playing in a game, so you cannot continue this one. </td>
6082     <td>
6083    
6084      
6085     </td>
6086     <td>
6087     <b></b>
6088      
6089     </td>
6090     </tr>
6091     </table>
6092    
6093     <h4>
6094     <a name="S0419"></a>ORIGIN: SERVER;
6095     MESSAGE: error</h4>
6096     NUMERIC TYPE (hex): 0419<p>
6097     </p>
6098     <table border="1" width="100%">
6099     <tr>
6100     <th width="10%">NAME</th>
6101     <th width="8%">TYPE</th>
6102     <th width="4%">VALUE</th>
6103     <th>DESCRIPTION</th>
6104     <th width="10%">GUARD</th>
6105     </tr>
6106     <tr>
6107     <td>message</td>
6108     <td>CONSTANT</td>
6109     <td>Sorry, the server is out of boards! Please wait a few minutes and try to start a game again. </td>
6110     <td>
6111    
6112      
6113     </td>
6114     <td>
6115     <b></b>
6116      
6117     </td>
6118     </tr>
6119     </table>
6120    
6121     <h4>
6122 pcg 1.32 <a name="S041c"></a>ORIGIN: SERVER;
6123     MESSAGE: upd_game2</h4>
6124 pcg 1.17 NUMERIC TYPE (hex): 041c<p>
6125     Unclear.
6126     </p>
6127     <table border="1" width="100%">
6128 pcg 1.14 <tr>
6129 pcg 1.17 <th width="10%">NAME</th>
6130 pcg 1.37 <th width="8%">TYPE</th>
6131     <th width="4%">VALUE</th>
6132 pcg 1.17 <th>DESCRIPTION</th>
6133 pcg 1.37 <th width="10%">GUARD</th>
6134 pcg 1.1 </tr>
6135     <tr>
6136 pcg 1.14 <td>channel_junk</td>
6137     <td>U16</td>
6138 pcg 1.17 <td> </td>
6139     <td>
6140    
6141      
6142     </td>
6143 pcg 1.3 <td>
6144 pcg 1.17 <b></b>
6145      
6146     </td>
6147 pcg 1.1 </tr>
6148     <tr>
6149 pcg 1.14 <td>game</td>
6150     <td>game</td>
6151 pcg 1.17 <td> </td>
6152     <td>
6153    
6154      
6155     </td>
6156 pcg 1.3 <td>
6157 pcg 1.17 <b></b>
6158      
6159     </td>
6160 pcg 1.1 </tr>
6161     </table>
6162    
6163 pcg 1.40 <h4>
6164     <a name="S041f"></a>ORIGIN: SERVER;
6165     MESSAGE: error</h4>
6166     NUMERIC TYPE (hex): 041f<p>
6167     </p>
6168     <table border="1" width="100%">
6169     <tr>
6170     <th width="10%">NAME</th>
6171     <th width="8%">TYPE</th>
6172     <th width="4%">VALUE</th>
6173     <th>DESCRIPTION</th>
6174     <th width="10%">GUARD</th>
6175     </tr>
6176     <tr>
6177     <td>message</td>
6178     <td>CONSTANT</td>
6179     <td>Sorry, the game you tried to load was not correctly saved...probably caused by the server crashing. It cannot be recovered. </td>
6180     <td>
6181    
6182      
6183     </td>
6184     <td>
6185     <b></b>
6186      
6187     </td>
6188     </tr>
6189     </table>
6190    
6191     <h4>
6192     <a name="S0420"></a>ORIGIN: SERVER;
6193     MESSAGE: error</h4>
6194     NUMERIC TYPE (hex): 0420<p>
6195     </p>
6196     <table border="1" width="100%">
6197     <tr>
6198     <th width="10%">NAME</th>
6199     <th width="8%">TYPE</th>
6200     <th width="4%">VALUE</th>
6201     <th>DESCRIPTION</th>
6202     <th width="10%">GUARD</th>
6203     </tr>
6204     <tr>
6205     <td>message</td>
6206     <td>CONSTANT</td>
6207     <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>
6208     <td>
6209    
6210      
6211     </td>
6212     <td>
6213     <b></b>
6214      
6215     </td>
6216     </tr>
6217     </table>
6218    
6219     <h4>
6220     <a name="S0421"></a>ORIGIN: SERVER;
6221     MESSAGE: error</h4>
6222     NUMERIC TYPE (hex): 0421<p>
6223     </p>
6224     <table border="1" width="100%">
6225     <tr>
6226     <th width="10%">NAME</th>
6227     <th width="8%">TYPE</th>
6228     <th width="4%">VALUE</th>
6229     <th>DESCRIPTION</th>
6230     <th width="10%">GUARD</th>
6231     </tr>
6232     <tr>
6233     <td>message</td>
6234     <td>CONSTANT</td>
6235     <td>Sorry, this game is a private lesson. You will not be allowed to observe it. </td>
6236     <td>
6237    
6238      
6239     </td>
6240     <td>
6241     <b></b>
6242      
6243     </td>
6244     </tr>
6245     </table>
6246    
6247 pcg 1.44 <!-- added recently -->
6248     <h4>
6249     <a name="S043a"></a>ORIGIN: SERVER;
6250 pcg 1.46 MESSAGE: add_global_challenge</h4>
6251 pcg 1.44 NUMERIC TYPE (hex): 043a<p>
6252 pcg 1.46 <p>
6253     Adds or updates a global challenge (open game list).
6254 pcg 1.44 </p>
6255 pcg 1.46 </p>
6256 pcg 1.44 <table border="1" width="100%">
6257     <tr>
6258     <th width="10%">NAME</th>
6259     <th width="8%">TYPE</th>
6260     <th width="4%">VALUE</th>
6261     <th>DESCRIPTION</th>
6262     <th width="10%">GUARD</th>
6263     </tr>
6264     <tr>
6265     <td>channel</td>
6266     <td>U16</td>
6267     <td> </td>
6268     <td>
6269 root 1.72 <p>
6270     The room this game is associated with.
6271     </p>
6272 pcg 1.44
6273      
6274     </td>
6275     <td>
6276     <b></b>
6277      
6278     </td>
6279     </tr>
6280     <tr>
6281     <td>game</td>
6282     <td>game</td>
6283     <td> </td>
6284     <td>
6285 root 1.72 <p>The game. The "moves" member contains a small number. Probably garbage.</p>
6286    
6287 pcg 1.44  
6288     </td>
6289     <td>
6290     <b></b>
6291      
6292     </td>
6293     </tr>
6294     </table>
6295    
6296 pcg 1.1 <h3>Room messages</h3>
6297    
6298     <p>Not all room messages are for rooms only, and rooms need to parse
6299     not only these messages. Orthogonality, what for?</p>
6300    
6301 pcg 1.17 <h4>
6302 pcg 1.32 <a name="S4300"></a>ORIGIN: SERVER;
6303     MESSAGE: join_room</h4>
6304 pcg 1.17 NUMERIC TYPE (hex): 4300
6305     (possibly in response to
6306 pcg 1.32 <a href="#C4300">join_room(4300)</a>
6307 pcg 1.17 )
6308     <p>
6309     </p>
6310     <table border="1" width="100%">
6311     <tr>
6312     <th width="10%">NAME</th>
6313 pcg 1.37 <th width="8%">TYPE</th>
6314     <th width="4%">VALUE</th>
6315 pcg 1.17 <th>DESCRIPTION</th>
6316 pcg 1.37 <th width="10%">GUARD</th>
6317 pcg 1.1 </tr>
6318     <tr>
6319     <td>channel</td>
6320 pcg 1.3 <td>U16</td>
6321 pcg 1.17 <td> </td>
6322     <td>
6323    
6324      
6325     </td>
6326 pcg 1.3 <td>
6327 pcg 1.17 <b></b>
6328      
6329     </td>
6330 pcg 1.1 </tr>
6331     <tr>
6332     <td>users</td>
6333     <td>user</td>
6334 pcg 1.17 <td> </td>
6335     <td>
6336    
6337      
6338     </td>
6339 pcg 1.3 <td>
6340 pcg 1.17 <b></b>
6341      
6342     </td>
6343 pcg 1.1 </tr>
6344     </table>
6345    
6346 pcg 1.17 <h4>
6347 pcg 1.32 <a name="S4301"></a>ORIGIN: SERVER;
6348     MESSAGE: msg_room</h4>
6349 pcg 1.17 NUMERIC TYPE (hex): 4301<p>
6350     </p>
6351     <table border="1" width="100%">
6352 pcg 1.1 <tr>
6353 pcg 1.17 <th width="10%">NAME</th>
6354 pcg 1.37 <th width="8%">TYPE</th>
6355     <th width="4%">VALUE</th>
6356 pcg 1.17 <th>DESCRIPTION</th>
6357 pcg 1.37 <th width="10%">GUARD</th>
6358 pcg 1.1 </tr>
6359     <tr>
6360     <td>channel</td>
6361 pcg 1.3 <td>U16</td>
6362 pcg 1.17 <td> </td>
6363 pcg 1.3 <td>
6364 pcg 1.17
6365      
6366     </td>
6367     <td>
6368     <b></b>
6369      
6370     </td>
6371 pcg 1.1 </tr>
6372     <tr>
6373     <td>name</td>
6374 pcg 1.3 <td>username</td>
6375 pcg 1.17 <td> </td>
6376     <td>
6377    
6378      
6379     </td>
6380 pcg 1.3 <td>
6381 pcg 1.17 <b></b>
6382      
6383     </td>
6384 pcg 1.1 </tr>
6385     <tr>
6386     <td>message</td>
6387     <td>STRING</td>
6388 pcg 1.17 <td> </td>
6389 pcg 1.3 <td>
6390 pcg 1.17
6391      
6392     </td>
6393     <td>
6394     <b></b>
6395      
6396     </td>
6397 pcg 1.1 </tr>
6398     </table>
6399    
6400 pcg 1.17 <h4>
6401 pcg 1.32 <a name="S4302"></a>ORIGIN: SERVER;
6402     MESSAGE: part_room</h4>
6403 pcg 1.17 NUMERIC TYPE (hex): 4302<p>
6404     </p>
6405     <table border="1" width="100%">
6406 pcg 1.1 <tr>
6407 pcg 1.17 <th width="10%">NAME</th>
6408 pcg 1.37 <th width="8%">TYPE</th>
6409     <th width="4%">VALUE</th>
6410 pcg 1.17 <th>DESCRIPTION</th>
6411 pcg 1.37 <th width="10%">GUARD</th>
6412 pcg 1.1 </tr>
6413     <tr>
6414     <td>channel</td>
6415 pcg 1.3 <td>U16</td>
6416 pcg 1.17 <td> </td>
6417     <td>
6418    
6419      
6420     </td>
6421 pcg 1.3 <td>
6422 pcg 1.17 <b></b>
6423      
6424     </td>
6425 pcg 1.1 </tr>
6426     <tr>
6427     <td>user</td>
6428     <td>user</td>
6429 pcg 1.17 <td> </td>
6430     <td>
6431    
6432      
6433     </td>
6434 pcg 1.3 <td>
6435 pcg 1.17 <b></b>
6436      
6437     </td>
6438 pcg 1.1 </tr>
6439     </table>
6440    
6441 pcg 1.17 <h4>
6442 pcg 1.32 <a name="S4303"></a>ORIGIN: SERVER;
6443     MESSAGE: del_room</h4>
6444 pcg 1.17 NUMERIC TYPE (hex): 4303<p>
6445     </p>
6446     <table border="1" width="100%">
6447 pcg 1.1 <tr>
6448 pcg 1.17 <th width="10%">NAME</th>
6449 pcg 1.37 <th width="8%">TYPE</th>
6450     <th width="4%">VALUE</th>
6451 pcg 1.17 <th>DESCRIPTION</th>
6452 pcg 1.37 <th width="10%">GUARD</th>
6453 pcg 1.1 </tr>
6454     <tr>
6455     <td>channel</td>
6456 pcg 1.3 <td>U16</td>
6457 pcg 1.17 <td> </td>
6458 pcg 1.3 <td>
6459 pcg 1.17
6460      
6461     </td>
6462     <td>
6463     <b></b>
6464      
6465     </td>
6466 pcg 1.1 </tr>
6467     </table>
6468    
6469 pcg 1.17 <h4>
6470 pcg 1.32 <a name="S4304"></a>ORIGIN: SERVER;
6471     MESSAGE: upd_games</h4>
6472 pcg 1.17 NUMERIC TYPE (hex): 4304<p>
6473     </p>
6474     <table border="1" width="100%">
6475 pcg 1.1 <tr>
6476 pcg 1.17 <th width="10%">NAME</th>
6477 pcg 1.37 <th width="8%">TYPE</th>
6478     <th width="4%">VALUE</th>
6479 pcg 1.17 <th>DESCRIPTION</th>
6480 pcg 1.37 <th width="10%">GUARD</th>
6481 pcg 1.1 </tr>
6482     <tr>
6483     <td>channel</td>
6484 pcg 1.3 <td>U16</td>
6485 pcg 1.17 <td> </td>
6486     <td>
6487    
6488      
6489     </td>
6490 pcg 1.3 <td>
6491 pcg 1.17 <b></b>
6492      
6493     </td>
6494 pcg 1.1 </tr>
6495     <tr>
6496     <td>games</td>
6497     <td>game</td>
6498 pcg 1.17 <td> </td>
6499     <td>
6500    
6501      
6502     </td>
6503 pcg 1.3 <td>
6504 pcg 1.17 <b></b>
6505      
6506     </td>
6507 pcg 1.1 </tr>
6508     </table>
6509    
6510 pcg 1.17 <h4>
6511 pcg 1.32 <a name="S4319"></a>ORIGIN: SERVER;
6512     MESSAGE: desc_room</h4>
6513 pcg 1.17 NUMERIC TYPE (hex): 4319<p>
6514     </p>
6515     <table border="1" width="100%">
6516 pcg 1.1 <tr>
6517 pcg 1.17 <th width="10%">NAME</th>
6518 pcg 1.37 <th width="8%">TYPE</th>
6519     <th width="4%">VALUE</th>
6520 pcg 1.17 <th>DESCRIPTION</th>
6521 pcg 1.37 <th width="10%">GUARD</th>
6522 pcg 1.1 </tr>
6523     <tr>
6524     <td>channel</td>
6525 pcg 1.3 <td>U16</td>
6526 pcg 1.17 <td> </td>
6527 pcg 1.3 <td>
6528 pcg 1.17
6529      
6530     </td>
6531     <td>
6532     <b></b>
6533      
6534     </td>
6535 pcg 1.1 </tr>
6536     <tr>
6537     <td>owner</td>
6538 pcg 1.3 <td>username</td>
6539 pcg 1.17 <td> </td>
6540     <td>
6541    
6542      
6543     </td>
6544 pcg 1.3 <td>
6545 pcg 1.17 <b></b>
6546      
6547     </td>
6548 pcg 1.1 </tr>
6549     <tr>
6550     <td>description</td>
6551     <td>STRING</td>
6552 pcg 1.17 <td> </td>
6553 pcg 1.3 <td>
6554 pcg 1.17
6555      
6556     </td>
6557     <td>
6558     <b></b>
6559      
6560     </td>
6561 pcg 1.1 </tr>
6562     </table>
6563 pcg 1.27
6564 pcg 1.1 <h3>Game messages</h3>
6565    
6566 pcg 1.17 <h4>
6567 pcg 1.32 <a name="S4400"></a>ORIGIN: SERVER;
6568 pcg 1.59 MESSAGE: challenge</h4>
6569 pcg 1.17 NUMERIC TYPE (hex): 4400<p>
6570     Unclear.
6571     </p>
6572     <table border="1" width="100%">
6573 pcg 1.1 <tr>
6574 pcg 1.17 <th width="10%">NAME</th>
6575 pcg 1.37 <th width="8%">TYPE</th>
6576     <th width="4%">VALUE</th>
6577 pcg 1.17 <th>DESCRIPTION</th>
6578 pcg 1.37 <th width="10%">GUARD</th>
6579 pcg 1.1 </tr>
6580     <tr>
6581     <td>channel</td>
6582 pcg 1.3 <td>U16</td>
6583 pcg 1.17 <td> </td>
6584     <td>
6585    
6586      
6587     </td>
6588 pcg 1.3 <td>
6589 pcg 1.17 <b></b>
6590      
6591     </td>
6592 pcg 1.1 </tr>
6593     <tr>
6594 pcg 1.60 <td>black</td>
6595     <td>user</td>
6596     <td> </td>
6597     <td>
6598    
6599      
6600     </td>
6601     <td>
6602     <b></b>
6603      
6604     </td>
6605     </tr>
6606     <tr>
6607     <td>white</td>
6608     <td>user</td>
6609     <td> </td>
6610     <td>
6611    
6612      
6613     </td>
6614     <td>
6615     <b></b>
6616      
6617     </td>
6618     </tr>
6619     <tr>
6620     <td>gametype</td>
6621     <td>U8</td>
6622     <td> </td>
6623     <td>
6624    
6625      
6626     </td>
6627     <td>
6628     <b></b>
6629      
6630     </td>
6631     </tr>
6632     <tr>
6633     <td>cid</td>
6634     <td>CLIENTID8</td>
6635     <td> </td>
6636     <td>
6637 root 1.72 <p>Possibly an id. No idea. Better echo this from the challenge request.</p>
6638 pcg 1.60
6639      
6640     </td>
6641     <td>
6642     <b></b>
6643      
6644     </td>
6645     </tr>
6646     <tr>
6647     <td>rules</td>
6648     <td>rules</td>
6649     <td> </td>
6650     <td>
6651    
6652      
6653     </td>
6654     <td>
6655     <b></b>
6656      
6657     </td>
6658     </tr>
6659     <tr>
6660     <td>notes</td>
6661     <td>STRING</td>
6662 pcg 1.17 <td> </td>
6663     <td>
6664 root 1.72 <p>This field is optional</p>
6665    
6666 pcg 1.17  
6667     </td>
6668 pcg 1.3 <td>
6669 pcg 1.17 <b></b>
6670      
6671     </td>
6672 pcg 1.1 </tr>
6673     </table>
6674    
6675 pcg 1.17 <h4>
6676 pcg 1.32 <a name="S4401"></a>ORIGIN: SERVER;
6677     MESSAGE: upd_game</h4>
6678 pcg 1.17 NUMERIC TYPE (hex): 4401<p>
6679     </p>
6680     <table border="1" width="100%">
6681 pcg 1.1 <tr>
6682 pcg 1.17 <th width="10%">NAME</th>
6683 pcg 1.37 <th width="8%">TYPE</th>
6684     <th width="4%">VALUE</th>
6685 pcg 1.17 <th>DESCRIPTION</th>
6686 pcg 1.37 <th width="10%">GUARD</th>
6687 pcg 1.1 </tr>
6688     <tr>
6689     <td>channel</td>
6690 pcg 1.3 <td>U16</td>
6691 pcg 1.17 <td> </td>
6692     <td>
6693    
6694      
6695     </td>
6696 pcg 1.3 <td>
6697 pcg 1.17 <b></b>
6698      
6699     </td>
6700 pcg 1.1 </tr>
6701     <tr>
6702     <td>game</td>
6703     <td>game</td>
6704 pcg 1.17 <td> </td>
6705 pcg 1.3 <td>
6706 pcg 1.17
6707      
6708     </td>
6709     <td>
6710     <b></b>
6711      
6712     </td>
6713 pcg 1.1 </tr>
6714     </table>
6715    
6716 pcg 1.17 <h4>
6717 pcg 1.32 <a name="S4402"></a>ORIGIN: SERVER;
6718     MESSAGE: del_game</h4>
6719 pcg 1.17 NUMERIC TYPE (hex): 4402<p>
6720     </p>
6721     <table border="1" width="100%">
6722 pcg 1.1 <tr>
6723 pcg 1.17 <th width="10%">NAME</th>
6724 pcg 1.37 <th width="8%">TYPE</th>
6725     <th width="4%">VALUE</th>
6726 pcg 1.17 <th>DESCRIPTION</th>
6727 pcg 1.37 <th width="10%">GUARD</th>
6728 pcg 1.1 </tr>
6729     <tr>
6730     <td>channel</td>
6731 pcg 1.3 <td>U16</td>
6732 pcg 1.17 <td> </td>
6733     <td>
6734    
6735      
6736     </td>
6737 pcg 1.3 <td>
6738 pcg 1.17 <b></b>
6739      
6740     </td>
6741 pcg 1.1 </tr>
6742     </table>
6743    
6744 pcg 1.17 <h4>
6745 pcg 1.32 <a name="S4403"></a>ORIGIN: SERVER;
6746     MESSAGE: upd_observers</h4>
6747 pcg 1.17 NUMERIC TYPE (hex): 4403<p>
6748     </p>
6749     <table border="1" width="100%">
6750 pcg 1.1 <tr>
6751 pcg 1.17 <th width="10%">NAME</th>
6752 pcg 1.37 <th width="8%">TYPE</th>
6753     <th width="4%">VALUE</th>
6754 pcg 1.17 <th>DESCRIPTION</th>
6755 pcg 1.37 <th width="10%">GUARD</th>
6756 pcg 1.1 </tr>
6757     <tr>
6758     <td>channel</td>
6759 pcg 1.3 <td>U16</td>
6760 pcg 1.17 <td> </td>
6761     <td>
6762    
6763      
6764     </td>
6765 pcg 1.3 <td>
6766 pcg 1.17 <b></b>
6767      
6768     </td>
6769 pcg 1.1 </tr>
6770     <tr>
6771     <td>users</td>
6772     <td>user</td>
6773 pcg 1.17 <td> </td>
6774 pcg 1.3 <td>
6775 pcg 1.17
6776      
6777     </td>
6778     <td>
6779     <b></b>
6780      
6781     </td>
6782 pcg 1.1 </tr>
6783     </table>
6784    
6785 pcg 1.17 <h4>
6786 pcg 1.32 <a name="S4404"></a>ORIGIN: SERVER;
6787     MESSAGE: del_observer</h4>
6788 pcg 1.17 NUMERIC TYPE (hex): 4404<p>
6789     </p>
6790     <table border="1" width="100%">
6791 pcg 1.1 <tr>
6792 pcg 1.17 <th width="10%">NAME</th>
6793 pcg 1.37 <th width="8%">TYPE</th>
6794     <th width="4%">VALUE</th>
6795 pcg 1.17 <th>DESCRIPTION</th>
6796 pcg 1.37 <th width="10%">GUARD</th>
6797 pcg 1.1 </tr>
6798     <tr>
6799     <td>channel</td>
6800 pcg 1.3 <td>U16</td>
6801 pcg 1.17 <td> </td>
6802     <td>
6803    
6804      
6805     </td>
6806 pcg 1.3 <td>
6807 pcg 1.17 <b></b>
6808      
6809     </td>
6810 pcg 1.1 </tr>
6811     <tr>
6812     <td>name</td>
6813 pcg 1.3 <td>username</td>
6814 pcg 1.17 <td> </td>
6815     <td>
6816    
6817      
6818     </td>
6819 pcg 1.3 <td>
6820 pcg 1.17 <b></b>
6821      
6822     </td>
6823 pcg 1.1 </tr>
6824     </table>
6825    
6826 pcg 1.17 <h4>
6827 pcg 1.32 <a name="S4405"></a>ORIGIN: SERVER;
6828     MESSAGE: set_tree</h4>
6829 pcg 1.17 NUMERIC TYPE (hex): 4405<p>
6830     </p>
6831     <table border="1" width="100%">
6832 pcg 1.1 <tr>
6833 pcg 1.17 <th width="10%">NAME</th>
6834 pcg 1.37 <th width="8%">TYPE</th>
6835     <th width="4%">VALUE</th>
6836 pcg 1.17 <th>DESCRIPTION</th>
6837 pcg 1.37 <th width="10%">GUARD</th>
6838 pcg 1.1 </tr>
6839     <tr>
6840     <td>channel</td>
6841 pcg 1.3 <td>U16</td>
6842 pcg 1.17 <td> </td>
6843 pcg 1.3 <td>
6844 pcg 1.17
6845      
6846     </td>
6847     <td>
6848     <b></b>
6849      
6850     </td>
6851 pcg 1.1 </tr>
6852     <tr>
6853     <td>tree</td>
6854     <td>TREE</td>
6855 pcg 1.17 <td> </td>
6856     <td>
6857    
6858      
6859     </td>
6860 pcg 1.3 <td>
6861 pcg 1.17 <b></b>
6862      
6863     </td>
6864 pcg 1.1 </tr>
6865     </table>
6866    
6867 pcg 1.17 <h4>
6868 pcg 1.32 <a name="S4406"></a>ORIGIN: SERVER;
6869     MESSAGE: upd_tree</h4>
6870 pcg 1.17 NUMERIC TYPE (hex): 4406<p>
6871     </p>
6872     <table border="1" width="100%">
6873 pcg 1.1 <tr>
6874 pcg 1.17 <th width="10%">NAME</th>
6875 pcg 1.37 <th width="8%">TYPE</th>
6876     <th width="4%">VALUE</th>
6877 pcg 1.17 <th>DESCRIPTION</th>
6878 pcg 1.37 <th width="10%">GUARD</th>
6879 pcg 1.1 </tr>
6880     <tr>
6881     <td>channel</td>
6882 pcg 1.3 <td>U16</td>
6883 pcg 1.17 <td> </td>
6884     <td>
6885    
6886      
6887     </td>
6888 pcg 1.3 <td>
6889 pcg 1.17 <b></b>
6890      
6891     </td>
6892 pcg 1.1 </tr>
6893     <tr>
6894     <td>tree</td>
6895     <td>TREE</td>
6896 pcg 1.17 <td> </td>
6897     <td>
6898    
6899      
6900     </td>
6901 pcg 1.3 <td>
6902 pcg 1.17 <b></b>
6903      
6904     </td>
6905 pcg 1.1 </tr>
6906     </table>
6907    
6908 pcg 1.17 <h4>
6909 pcg 1.32 <a name="S4409"></a>ORIGIN: SERVER;
6910     MESSAGE: superko</h4>
6911 pcg 1.17 NUMERIC TYPE (hex): 4409<p>
6912     Superko-warning.
6913     </p>
6914     <table border="1" width="100%">
6915 pcg 1.1 <tr>
6916 pcg 1.17 <th width="10%">NAME</th>
6917 pcg 1.37 <th width="8%">TYPE</th>
6918     <th width="4%">VALUE</th>
6919 pcg 1.17 <th>DESCRIPTION</th>
6920 pcg 1.37 <th width="10%">GUARD</th>
6921 pcg 1.1 </tr>
6922     <tr>
6923     <td>channel</td>
6924 pcg 1.3 <td>U16</td>
6925 pcg 1.17 <td> </td>
6926     <td>
6927    
6928      
6929     </td>
6930 pcg 1.3 <td>
6931 pcg 1.17 <b></b>
6932      
6933     </td>
6934 pcg 1.1 </tr>
6935     </table>
6936    
6937 pcg 1.17 <h4>
6938 pcg 1.63 <a name="S440a"></a>ORIGIN: SERVER;
6939     MESSAGE: game_done</h4>
6940     NUMERIC TYPE (hex): 440a<p>
6941     <p>Send by the server when one of the players sends a done.</p>
6942     </p>
6943     <table border="1" width="100%">
6944     <tr>
6945     <th width="10%">NAME</th>
6946     <th width="8%">TYPE</th>
6947     <th width="4%">VALUE</th>
6948     <th>DESCRIPTION</th>
6949     <th width="10%">GUARD</th>
6950     </tr>
6951     <tr>
6952     <td>channel</td>
6953     <td>U16</td>
6954     <td> </td>
6955     <td>
6956    
6957      
6958     </td>
6959     <td>
6960     <b></b>
6961      
6962     </td>
6963     </tr>
6964     <tr>
6965     <td>id</td>
6966     <td>U32</td>
6967     <td> </td>
6968     <td>
6969 root 1.72 <p>An id field to make sure that the client responds to the correct done click.</p>
6970     <p>The high bit has the "please press done again" warning function, i.e. if set, opponent has changed board.</p>
6971 pcg 1.63
6972      
6973     </td>
6974     <td>
6975     <b></b>
6976      
6977     </td>
6978     </tr>
6979     <tr>
6980     <td>black</td>
6981     <td>flag</td>
6982     <td> </td>
6983     <td>
6984    
6985      
6986     </td>
6987     <td>
6988     <b></b>
6989      
6990     </td>
6991     </tr>
6992     <tr>
6993     <td>white</td>
6994     <td>flag</td>
6995     <td> </td>
6996     <td>
6997    
6998      
6999     </td>
7000     <td>
7001     <b></b>
7002      
7003     </td>
7004     </tr>
7005     </table>
7006    
7007     <h4>
7008 pcg 1.32 <a name="S440b"></a>ORIGIN: SERVER;
7009     MESSAGE: final_result</h4>
7010 pcg 1.17 NUMERIC TYPE (hex): 440b<p>
7011     </p>
7012     <table border="1" width="100%">
7013 pcg 1.1 <tr>
7014 pcg 1.17 <th width="10%">NAME</th>
7015 pcg 1.37 <th width="8%">TYPE</th>
7016     <th width="4%">VALUE</th>
7017 pcg 1.17 <th>DESCRIPTION</th>
7018 pcg 1.37 <th width="10%">GUARD</th>
7019 pcg 1.1 </tr>
7020     <tr>
7021     <td>channel</td>
7022 pcg 1.3 <td>U16</td>
7023 pcg 1.17 <td> </td>
7024 pcg 1.3 <td>
7025 pcg 1.17
7026      
7027     </td>
7028     <td>
7029     <b></b>
7030      
7031     </td>
7032 pcg 1.1 </tr>
7033     <tr>
7034     <td>blackscore</td>
7035 pcg 1.10 <td>scorevalues</td>
7036 pcg 1.17 <td> </td>
7037     <td>
7038    
7039      
7040     </td>
7041 pcg 1.3 <td>
7042 pcg 1.17 <b></b>
7043      
7044     </td>
7045 pcg 1.1 </tr>
7046     <tr>
7047     <td>whitescore</td>
7048 pcg 1.10 <td>scorevalues</td>
7049 pcg 1.17 <td> </td>
7050 pcg 1.3 <td>
7051 pcg 1.17
7052      
7053     </td>
7054     <td>
7055     <b></b>
7056      
7057     </td>
7058 pcg 1.1 </tr>
7059     </table>
7060    
7061 pcg 1.17 <h4>
7062 pcg 1.61 <a name="S440c"></a>ORIGIN: SERVER;
7063 root 1.73 MESSAGE: time_win</h4>
7064 pcg 1.61 NUMERIC TYPE (hex): 440c<p>
7065 root 1.73 <p>Sent when the opponent is out of time and moves, or when the other
7066 pcg 1.62 requests <a href="#S0008">userinfo(0008)</a>.</p>
7067     </p>
7068 pcg 1.61 <table border="1" width="100%">
7069     <tr>
7070     <th width="10%">NAME</th>
7071     <th width="8%">TYPE</th>
7072     <th width="4%">VALUE</th>
7073     <th>DESCRIPTION</th>
7074     <th width="10%">GUARD</th>
7075     </tr>
7076     <tr>
7077     <td>channel</td>
7078     <td>U16</td>
7079     <td> </td>
7080     <td>
7081    
7082      
7083     </td>
7084     <td>
7085     <b></b>
7086      
7087     </td>
7088     </tr>
7089     <tr>
7090     <td>player</td>
7091     <td>U8</td>
7092     <td> </td>
7093     <td>
7094 root 1.73 <p>Colour who won.</p>
7095 pcg 1.61
7096      
7097     </td>
7098     <td>
7099     <b></b>
7100      
7101     </td>
7102     </tr>
7103     </table>
7104    
7105     <h4>
7106 pcg 1.32 <a name="S440e"></a>ORIGIN: SERVER;
7107     MESSAGE: req_undo</h4>
7108 pcg 1.17 NUMERIC TYPE (hex): 440e<p>
7109     </p>
7110     <table border="1" width="100%">
7111 pcg 1.1 <tr>
7112 pcg 1.17 <th width="10%">NAME</th>
7113 pcg 1.37 <th width="8%">TYPE</th>
7114     <th width="4%">VALUE</th>
7115 pcg 1.17 <th>DESCRIPTION</th>
7116 pcg 1.37 <th width="10%">GUARD</th>
7117 pcg 1.1 </tr>
7118     <tr>
7119     <td>channel</td>
7120 pcg 1.3 <td>U16</td>
7121 pcg 1.17 <td> </td>
7122 pcg 1.3 <td>
7123 pcg 1.17
7124      
7125     </td>
7126     <td>
7127     <b></b>
7128      
7129     </td>
7130 pcg 1.1 </tr>
7131     </table>
7132    
7133 pcg 1.17 <h4>
7134 pcg 1.32 <a name="S4410"></a>ORIGIN: SERVER;
7135     MESSAGE: resign_game</h4>
7136 pcg 1.17 NUMERIC TYPE (hex): 4410<p>
7137     </p>
7138     <table border="1" width="100%">
7139 pcg 1.1 <tr>
7140 pcg 1.17 <th width="10%">NAME</th>
7141 pcg 1.37 <th width="8%">TYPE</th>
7142     <th width="4%">VALUE</th>
7143 pcg 1.17 <th>DESCRIPTION</th>
7144 pcg 1.37 <th width="10%">GUARD</th>
7145 pcg 1.1 </tr>
7146     <tr>
7147     <td>channel</td>
7148 pcg 1.3 <td>U16</td>
7149 pcg 1.17 <td> </td>
7150     <td>
7151    
7152      
7153     </td>
7154 pcg 1.3 <td>
7155 pcg 1.17 <b></b>
7156      
7157     </td>
7158 pcg 1.1 </tr>
7159     <tr>
7160     <td>player</td>
7161 pcg 1.3 <td>U8</td>
7162 pcg 1.17 <td> </td>
7163 pcg 1.3 <td>
7164 pcg 1.17
7165      
7166     </td>
7167     <td>
7168     <b></b>
7169      
7170     </td>
7171 pcg 1.1 </tr>
7172     </table>
7173    
7174 pcg 1.17 <h4>
7175 pcg 1.40 <a name="S4415"></a>ORIGIN: SERVER;
7176     MESSAGE: game_error</h4>
7177     NUMERIC TYPE (hex): 4415<p>
7178     </p>
7179     <table border="1" width="100%">
7180     <tr>
7181     <th width="10%">NAME</th>
7182     <th width="8%">TYPE</th>
7183     <th width="4%">VALUE</th>
7184     <th>DESCRIPTION</th>
7185     <th width="10%">GUARD</th>
7186     </tr>
7187     <tr>
7188     <td>channel</td>
7189     <td>U16</td>
7190     <td> </td>
7191     <td>
7192    
7193      
7194     </td>
7195     <td>
7196     <b></b>
7197      
7198     </td>
7199     </tr>
7200     <tr>
7201     <td>message</td>
7202     <td>CONSTANT</td>
7203     <td>Sorry, this is a lecture game. Only authorized players are allowed to make comments. </td>
7204     <td>
7205    
7206      
7207     </td>
7208     <td>
7209     <b></b>
7210      
7211     </td>
7212     </tr>
7213     </table>
7214    
7215     <h4>
7216 pcg 1.32 <a name="S441a"></a>ORIGIN: SERVER;
7217     MESSAGE: set_teacher</h4>
7218 pcg 1.17 NUMERIC TYPE (hex): 441a<p>
7219     </p>
7220     <table border="1" width="100%">
7221 pcg 1.1 <tr>
7222 pcg 1.17 <th width="10%">NAME</th>
7223 pcg 1.37 <th width="8%">TYPE</th>
7224     <th width="4%">VALUE</th>
7225 pcg 1.17 <th>DESCRIPTION</th>
7226 pcg 1.37 <th width="10%">GUARD</th>
7227 pcg 1.1 </tr>
7228     <tr>
7229     <td>channel</td>
7230 pcg 1.3 <td>U16</td>
7231 pcg 1.17 <td> </td>
7232     <td>
7233    
7234      
7235     </td>
7236 pcg 1.3 <td>
7237 pcg 1.17 <b></b>
7238      
7239     </td>
7240 pcg 1.1 </tr>
7241     <tr>
7242     <td>name</td>
7243 pcg 1.3 <td>username</td>
7244 pcg 1.17 <td> </td>
7245     <td>
7246    
7247      
7248     </td>
7249 pcg 1.3 <td>
7250 pcg 1.17 <b></b>
7251      
7252     </td>
7253 pcg 1.1 </tr>
7254     </table>
7255    
7256 pcg 1.17 <h4>
7257 pcg 1.32 <a name="S441d"></a>ORIGIN: SERVER;
7258     MESSAGE: owner_left</h4>
7259 pcg 1.17 NUMERIC TYPE (hex): 441d<p>
7260     </p>
7261     <table border="1" width="100%">
7262 pcg 1.1 <tr>
7263 pcg 1.17 <th width="10%">NAME</th>
7264 pcg 1.37 <th width="8%">TYPE</th>
7265     <th width="4%">VALUE</th>
7266 pcg 1.17 <th>DESCRIPTION</th>
7267 pcg 1.37 <th width="10%">GUARD</th>
7268 pcg 1.1 </tr>
7269     <tr>
7270     <td>channel</td>
7271 pcg 1.3 <td>U16</td>
7272 pcg 1.17 <td> </td>
7273     <td>
7274 pcg 1.40
7275      
7276     </td>
7277     <td>
7278     <b></b>
7279      
7280     </td>
7281     </tr>
7282     <tr>
7283     <td>message</td>
7284     <td>CONSTANT</td>
7285     <td>Sorry, the owner of this game has left. Nobody will be allowed to edit it until the owner returns. </td>
7286     <td>
7287 pcg 1.17
7288      
7289     </td>
7290 pcg 1.3 <td>
7291 pcg 1.17 <b></b>
7292      
7293     </td>
7294 pcg 1.1 </tr>
7295     </table>
7296    
7297 pcg 1.17 <h4>
7298 pcg 1.32 <a name="S441e"></a>ORIGIN: SERVER;
7299     MESSAGE: teacher_left</h4>
7300 pcg 1.17 NUMERIC TYPE (hex): 441e<p>
7301     Unclear.
7302     </p>
7303     <table border="1" width="100%">
7304 pcg 1.1 <tr>
7305 pcg 1.17 <th width="10%">NAME</th>
7306 pcg 1.37 <th width="8%">TYPE</th>
7307     <th width="4%">VALUE</th>
7308 pcg 1.17 <th>DESCRIPTION</th>
7309 pcg 1.37 <th width="10%">GUARD</th>
7310 pcg 1.1 </tr>
7311     <tr>
7312     <td>channel</td>
7313 pcg 1.3 <td>U16</td>
7314 pcg 1.17 <td> </td>
7315     <td>
7316    
7317      
7318     </td>
7319 pcg 1.3 <td>
7320 pcg 1.17 <b></b>
7321      
7322     </td>
7323 pcg 1.1 </tr>
7324     </table>
7325    
7326 pcg 1.17 <h4>
7327 pcg 1.32 <a name="S4422"></a>ORIGIN: SERVER;
7328 pcg 1.40 MESSAGE: allow_user_result</h4>
7329 pcg 1.17 NUMERIC TYPE (hex): 4422<p>
7330     </p>
7331     <table border="1" width="100%">
7332 pcg 1.1 <tr>
7333 pcg 1.17 <th width="10%">NAME</th>
7334 pcg 1.37 <th width="8%">TYPE</th>
7335     <th width="4%">VALUE</th>
7336 pcg 1.17 <th>DESCRIPTION</th>
7337 pcg 1.37 <th width="10%">GUARD</th>
7338 pcg 1.1 </tr>
7339     <tr>
7340 pcg 1.40 <td>message</td>
7341     <td>CONSTANT</td>
7342     <td>User "%s" will now be allowed full access to your game. </td>
7343     <td>
7344    
7345      
7346     </td>
7347     <td>
7348     <b></b>
7349      
7350     </td>
7351     </tr>
7352     <tr>
7353 pcg 1.1 <td>channel</td>
7354 pcg 1.3 <td>U16</td>
7355 pcg 1.17 <td> </td>
7356 pcg 1.3 <td>
7357 pcg 1.40
7358      
7359     </td>
7360     <td>
7361     <b></b>
7362      
7363     </td>
7364     </tr>
7365     </table>
7366    
7367     <h4>
7368     <a name="S4424"></a>ORIGIN: SERVER;
7369     MESSAGE: allow_user_result</h4>
7370     NUMERIC TYPE (hex): 4424<p>
7371     </p>
7372     <table border="1" width="100%">
7373     <tr>
7374     <th width="10%">NAME</th>
7375     <th width="8%">TYPE</th>
7376     <th width="4%">VALUE</th>
7377     <th>DESCRIPTION</th>
7378     <th width="10%">GUARD</th>
7379     </tr>
7380     <tr>
7381     <td>message</td>
7382     <td>CONSTANT</td>
7383     <td>Sorry, user "%s" is a guest and cannot be allowed full access to your game. </td>
7384     <td>
7385 pcg 1.17
7386      
7387     </td>
7388     <td>
7389     <b></b>
7390      
7391     </td>
7392 pcg 1.1 </tr>
7393     <tr>
7394 pcg 1.40 <td>channel</td>
7395     <td>U16</td>
7396 pcg 1.17 <td> </td>
7397     <td>
7398 pcg 1.40
7399      
7400     </td>
7401     <td>
7402     <b></b>
7403      
7404     </td>
7405     </tr>
7406     </table>
7407    
7408     <h4>
7409     <a name="S4425"></a>ORIGIN: SERVER;
7410     MESSAGE: allow_user_result</h4>
7411     NUMERIC TYPE (hex): 4425<p>
7412     </p>
7413     <table border="1" width="100%">
7414     <tr>
7415     <th width="10%">NAME</th>
7416     <th width="8%">TYPE</th>
7417     <th width="4%">VALUE</th>
7418     <th>DESCRIPTION</th>
7419     <th width="10%">GUARD</th>
7420     </tr>
7421     <tr>
7422     <td>message</td>
7423     <td>CONSTANT</td>
7424     <td>Sorry, user "%s" does not seem to exist and cannot be allowed into your game. </td>
7425     <td>
7426 pcg 1.17
7427      
7428     </td>
7429 pcg 1.3 <td>
7430 pcg 1.17 <b></b>
7431      
7432     </td>
7433 pcg 1.1 </tr>
7434     <tr>
7435 pcg 1.40 <td>channel</td>
7436     <td>U16</td>
7437 pcg 1.26 <td> </td>
7438     <td>
7439    
7440      
7441     </td>
7442     <td>
7443     <b></b>
7444      
7445     </td>
7446     </tr>
7447     </table>
7448    
7449     <h4>
7450 pcg 1.32 <a name="S4428"></a>ORIGIN: SERVER;
7451     MESSAGE: add_tree</h4>
7452 pcg 1.26 NUMERIC TYPE (hex): 4428<p>
7453 pcg 1.32 <p>See <a href="#S4405">set_tree(4405)</a>. In addition, flags the tree as being
7454 pcg 1.26 uploaded completely.</p>
7455     </p>
7456     <table border="1" width="100%">
7457     <tr>
7458     <th width="10%">NAME</th>
7459 pcg 1.37 <th width="8%">TYPE</th>
7460     <th width="4%">VALUE</th>
7461 pcg 1.26 <th>DESCRIPTION</th>
7462 pcg 1.37 <th width="10%">GUARD</th>
7463 pcg 1.26 </tr>
7464     <tr>
7465     <td>channel</td>
7466     <td>U16</td>
7467     <td> </td>
7468     <td>
7469    
7470      
7471     </td>
7472     <td>
7473     <b></b>
7474      
7475     </td>
7476     </tr>
7477     <tr>
7478     <td>tree</td>
7479     <td>TREE</td>
7480 pcg 1.40 <td> </td>
7481     <td>
7482    
7483      
7484     </td>
7485     <td>
7486     <b></b>
7487      
7488     </td>
7489     </tr>
7490     </table>
7491    
7492     <h4>
7493     <a name="S4429"></a>ORIGIN: SERVER;
7494     MESSAGE: reject_challenge</h4>
7495     NUMERIC TYPE (hex): 4429<p>
7496     Reject a challenge by a given user. Not checked.
7497     </p>
7498     <table border="1" width="100%">
7499     <tr>
7500     <th width="10%">NAME</th>
7501     <th width="8%">TYPE</th>
7502     <th width="4%">VALUE</th>
7503     <th>DESCRIPTION</th>
7504     <th width="10%">GUARD</th>
7505     </tr>
7506     <tr>
7507     <td>channel</td>
7508     <td>U16</td>
7509     <td> </td>
7510     <td>
7511    
7512      
7513     </td>
7514     <td>
7515     <b></b>
7516      
7517     </td>
7518     </tr>
7519     <tr>
7520     <td>name</td>
7521     <td>username</td>
7522 pcg 1.17 <td> </td>
7523 pcg 1.3 <td>
7524 pcg 1.60
7525      
7526     </td>
7527     <td>
7528     <b></b>
7529      
7530     </td>
7531     </tr>
7532     <tr>
7533     <td>gametype</td>
7534     <td>U8</td>
7535     <td> </td>
7536     <td>
7537    
7538      
7539     </td>
7540     <td>
7541     <b></b>
7542      
7543     </td>
7544     </tr>
7545     <tr>
7546     <td>cid</td>
7547     <td>CLIENTID8</td>
7548     <td> </td>
7549     <td>
7550 root 1.72 <p>Possibly an id. No idea. Better echo this from the challenge request.</p>
7551 pcg 1.60
7552      
7553     </td>
7554     <td>
7555     <b></b>
7556      
7557     </td>
7558     </tr>
7559     <tr>
7560     <td>rules</td>
7561     <td>rules</td>
7562     <td> </td>
7563     <td>
7564 pcg 1.17
7565 pcg 1.41  
7566     </td>
7567     <td>
7568     <b></b>
7569      
7570     </td>
7571     </tr>
7572     </table>
7573    
7574     <h4>
7575 pcg 1.63 <a name="S442b"></a>ORIGIN: SERVER;
7576     MESSAGE: set_comments</h4>
7577     NUMERIC TYPE (hex): 442b<p>
7578     <p>Sent at end of games to set the comments not seen previously.</p>
7579     </p>
7580     <table border="1" width="100%">
7581     <tr>
7582     <th width="10%">NAME</th>
7583     <th width="8%">TYPE</th>
7584     <th width="4%">VALUE</th>
7585     <th>DESCRIPTION</th>
7586     <th width="10%">GUARD</th>
7587     </tr>
7588     <tr>
7589     <td>channel</td>
7590     <td>U16</td>
7591     <td> </td>
7592     <td>
7593    
7594      
7595     </td>
7596     <td>
7597     <b></b>
7598      
7599     </td>
7600     </tr>
7601     <tr>
7602     <td>node</td>
7603     <td>U32</td>
7604     <td> </td>
7605     <td>
7606    
7607      
7608     </td>
7609     <td>
7610     <b></b>
7611      
7612     </td>
7613     </tr>
7614     <tr>
7615     <td>comments</td>
7616     <td>STRING</td>
7617     <td> </td>
7618     <td>
7619    
7620      
7621     </td>
7622     <td>
7623     <b></b>
7624      
7625     </td>
7626     </tr>
7627     </table>
7628    
7629     <h4>
7630     <a name="S442c"></a>ORIGIN: SERVER;
7631     MESSAGE: add_comments</h4>
7632     NUMERIC TYPE (hex): 442c<p>
7633     <p>Sent at end of games to add all game commentary.</p>
7634     </p>
7635     <table border="1" width="100%">
7636     <tr>
7637     <th width="10%">NAME</th>
7638     <th width="8%">TYPE</th>
7639     <th width="4%">VALUE</th>
7640     <th>DESCRIPTION</th>
7641     <th width="10%">GUARD</th>
7642     </tr>
7643     <tr>
7644     <td>channel</td>
7645     <td>U16</td>
7646     <td> </td>
7647     <td>
7648    
7649      
7650     </td>
7651     <td>
7652     <b></b>
7653      
7654     </td>
7655     </tr>
7656     <tr>
7657     <td>node</td>
7658     <td>U32</td>
7659     <td> </td>
7660     <td>
7661    
7662      
7663     </td>
7664     <td>
7665     <b></b>
7666      
7667     </td>
7668     </tr>
7669     <tr>
7670     <td>comments</td>
7671     <td>STRING</td>
7672     <td> </td>
7673     <td>
7674    
7675      
7676     </td>
7677     <td>
7678     <b></b>
7679      
7680     </td>
7681     </tr>
7682     </table>
7683    
7684     <h4>
7685 pcg 1.65 <a name="S442d"></a>ORIGIN: SERVER;
7686     MESSAGE: more_comments</h4>
7687     NUMERIC TYPE (hex): 442d<p>
7688     <p>Quite brokenly, the server sends you this to make you ask for more comments.
7689     Reply with <a href="#S442d">more_comments(442d)</a>.</p>
7690     </p>
7691     <table border="1" width="100%">
7692     <tr>
7693     <th width="10%">NAME</th>
7694     <th width="8%">TYPE</th>
7695     <th width="4%">VALUE</th>
7696     <th>DESCRIPTION</th>
7697     <th width="10%">GUARD</th>
7698     </tr>
7699     <tr>
7700     <td>channel</td>
7701     <td>U16</td>
7702     <td> </td>
7703     <td>
7704    
7705      
7706     </td>
7707     <td>
7708     <b></b>
7709      
7710     </td>
7711     </tr>
7712     <tr>
7713     <td>node</td>
7714     <td>U32</td>
7715     <td> </td>
7716     <td>
7717    
7718      
7719     </td>
7720     <td>
7721     <b></b>
7722      
7723     </td>
7724     </tr>
7725     </table>
7726    
7727     <h4>
7728 pcg 1.46 <a name="S442f"></a>ORIGIN: SERVER;
7729 pcg 1.41 MESSAGE: new_game</h4>
7730     NUMERIC TYPE (hex): 442f<p>
7731     <p>Notifies the client that a new game has been created. This
7732 pcg 1.46 message is sent long *after* upd_games and upd_observers etc.
7733     have been received. *sigh*</p>
7734 pcg 1.41 </p>
7735     <table border="1" width="100%">
7736     <tr>
7737     <th width="10%">NAME</th>
7738     <th width="8%">TYPE</th>
7739     <th width="4%">VALUE</th>
7740     <th>DESCRIPTION</th>
7741     <th width="10%">GUARD</th>
7742     </tr>
7743     <tr>
7744     <td>channel</td>
7745     <td>U16</td>
7746     <td> </td>
7747     <td>
7748 root 1.72 <p>The newly created game.</p>
7749 pcg 1.41
7750      
7751     </td>
7752     <td>
7753     <b></b>
7754      
7755     </td>
7756     </tr>
7757     <tr>
7758 pcg 1.58 <td>cid</td>
7759 pcg 1.60 <td>CLIENTID16</td>
7760 pcg 1.41 <td> </td>
7761     <td>
7762 root 1.72 <p>The ID sent to the server in new_game.</p>
7763    
7764 pcg 1.17  
7765     </td>
7766     <td>
7767     <b></b>
7768      
7769     </td>
7770 pcg 1.1 </tr>
7771     </table>
7772    
7773 pcg 1.17 <h4>
7774 pcg 1.32 <a name="S4433"></a>ORIGIN: SERVER;
7775     MESSAGE: req_result</h4>
7776 pcg 1.17 NUMERIC TYPE (hex): 4433<p>
7777     Unclear.
7778     </p>
7779     <table border="1" width="100%">
7780 pcg 1.1 <tr>
7781 pcg 1.17 <th width="10%">NAME</th>
7782 pcg 1.37 <th width="8%">TYPE</th>
7783     <th width="4%">VALUE</th>
7784 pcg 1.17 <th>DESCRIPTION</th>
7785 pcg 1.37 <th width="10%">GUARD</th>
7786 pcg 1.1 </tr>
7787     <tr>
7788     <td>channel</td>
7789 pcg 1.3 <td>U16</td>
7790 pcg 1.17 <td> </td>
7791 pcg 1.3 <td>
7792 pcg 1.1 # # recv_result(?)
7793 pcg 1.17
7794      
7795     </td>
7796     <td>
7797     <b></b>
7798      
7799     </td>
7800 pcg 1.1 </tr>
7801     </table>
7802    
7803 pcg 1.17 <h4>
7804 pcg 1.32 <a name="S4434"></a>ORIGIN: SERVER;
7805 pcg 1.48 MESSAGE: set_quiet</h4>
7806 pcg 1.17 NUMERIC TYPE (hex): 4434<p>
7807 pcg 1.48 <p>Sets (or clears) the quiet flag on a game.</p>
7808     </p>
7809 pcg 1.17 <table border="1" width="100%">
7810 pcg 1.1 <tr>
7811 pcg 1.17 <th width="10%">NAME</th>
7812 pcg 1.37 <th width="8%">TYPE</th>
7813     <th width="4%">VALUE</th>
7814 pcg 1.17 <th>DESCRIPTION</th>
7815 pcg 1.37 <th width="10%">GUARD</th>
7816 pcg 1.1 </tr>
7817     <tr>
7818     <td>channel</td>
7819 pcg 1.3 <td>U16</td>
7820 pcg 1.17 <td> </td>
7821     <td>
7822    
7823      
7824     </td>
7825 pcg 1.3 <td>
7826 pcg 1.17 <b></b>
7827      
7828     </td>
7829 pcg 1.1 </tr>
7830     <tr>
7831 pcg 1.48 <td>quiet</td>
7832 pcg 1.58 <td>flag</td>
7833 pcg 1.17 <td> </td>
7834 pcg 1.3 <td>
7835 pcg 1.17
7836      
7837     </td>
7838     <td>
7839     <b></b>
7840      
7841     </td>
7842 pcg 1.1 </tr>
7843     </table>
7844    
7845 pcg 1.43 <h4>
7846 pcg 1.50 <a name="S4437"></a>ORIGIN: SERVER;
7847 pcg 1.57 MESSAGE: set_gametime</h4>
7848 pcg 1.50 NUMERIC TYPE (hex): 4437<p>
7849 pcg 1.66 <p>Sent when joining a running game. Gives the remaining time +
7850 pcg 1.57 periods/moves for the players, to correctly initialize the clocks.</p>
7851 pcg 1.50 </p>
7852     <table border="1" width="100%">
7853     <tr>
7854     <th width="10%">NAME</th>
7855     <th width="8%">TYPE</th>
7856     <th width="4%">VALUE</th>
7857     <th>DESCRIPTION</th>
7858     <th width="10%">GUARD</th>
7859     </tr>
7860     <tr>
7861     <td>channel</td>
7862     <td>U16</td>
7863     <td> </td>
7864     <td>
7865    
7866      
7867     </td>
7868     <td>
7869     <b></b>
7870      
7871     </td>
7872     </tr>
7873     <tr>
7874 pcg 1.64 <td>black_time</td>
7875 pcg 1.50 <td>time</td>
7876     <td> </td>
7877     <td>
7878    
7879      
7880     </td>
7881     <td>
7882     <b></b>
7883      
7884     </td>
7885     </tr>
7886     <tr>
7887 pcg 1.64 <td>black_moves</td>
7888 pcg 1.50 <td>U16</td>
7889     <td> </td>
7890     <td>
7891    
7892      
7893     </td>
7894     <td>
7895     <b></b>
7896      
7897     </td>
7898     </tr>
7899     <tr>
7900 pcg 1.64 <td>white_time</td>
7901 pcg 1.50 <td>time</td>
7902     <td> </td>
7903     <td>
7904    
7905      
7906     </td>
7907     <td>
7908     <b></b>
7909      
7910     </td>
7911     </tr>
7912     <tr>
7913 pcg 1.64 <td>white_moves</td>
7914 pcg 1.50 <td>U16</td>
7915     <td> </td>
7916     <td>
7917    
7918      
7919     </td>
7920     <td>
7921     <b></b>
7922      
7923     </td>
7924     </tr>
7925     </table>
7926    
7927     <h4>
7928 pcg 1.44 <a name="S443b"></a>ORIGIN: SERVER;
7929 pcg 1.46 MESSAGE: del_global_challenge</h4>
7930 pcg 1.43 NUMERIC TYPE (hex): 443b<p>
7931 pcg 1.46 <p>
7932     Remove a game from the global challenge list (open game list).
7933 pcg 1.43 </p>
7934 pcg 1.46 </p>
7935 pcg 1.43 <table border="1" width="100%">
7936     <tr>
7937     <th width="10%">NAME</th>
7938     <th width="8%">TYPE</th>
7939     <th width="4%">VALUE</th>
7940     <th>DESCRIPTION</th>
7941     <th width="10%">GUARD</th>
7942     </tr>
7943     <tr>
7944     <td>channel</td>
7945     <td>U16</td>
7946     <td> </td>
7947     <td>
7948 root 1.72 <p>The game id to remove.</p>
7949 pcg 1.43
7950      
7951     </td>
7952     <td>
7953     <b></b>
7954      
7955     </td>
7956     </tr>
7957     <tr>
7958 pcg 1.44 <td>game</td>
7959 pcg 1.43 <td>U16</td>
7960     <td> </td>
7961     <td>
7962 root 1.72 <p>Probably the same. I suggest to use this id for no good reason.</p>
7963    
7964 pcg 1.43  
7965     </td>
7966     <td>
7967     <b></b>
7968      
7969     </td>
7970     </tr>
7971     </table>
7972 pcg 1.1 </body>
7973     </html>