ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.html
Revision: 1.2
Committed: Wed Jun 4 19:12:51 2003 UTC (20 years, 11 months ago) by pcg
Content type: text/html
Branch: MAIN
Changes since 1.1: +17 -15 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     <!--
5     Copyright (C) 2003 Marc Lehmannn &lt;pcg@goof.com&gt;
6    
7     You can redistribute and/or modify this document under the terms of
8     the GNU General Public License as published by the Free Software
9     Foundation; either version 2 of the License, or (at your option) any
10     later version.
11    
12     This document is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15     General Public License for more details.
16    
17     You should have received a copy of the GNU General Public License
18     along with this program; if not, write to the Free Software
19     Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20     -->
21     </head>
22     <body>
23    
24     <h1>KGS Protocol Description</h1>
25    
26     <p>This XML document describes the KGS protocol. It is also used
27     to automatically generate the perl parser for all the messages and
28     structures in the protocol. Adapting it to other languages should be
29     trivial.</p>
30    
31     <h2>Structure and conventions of this document and the protocol</h2>
32    
33     <p>"Send" means messages send from the client to the server, while
34     "received" means messages send by the server to the client.</p>
35    
36     <p>Everything on the wire are in little-endian format (what a shame).</p>
37    
38     <p>Primitive types (in upper case) are mostly integers ("Ibits"), ascii
39     strings ("USERNAME", "Alength"), or UCS2-Strings ("STRING"). Yes, I
40     know java is supposed to do UTF-16, but no implementation seems to
41     care...</p>
42    
43     <p>For the rest, go figure or bug me, Marc Lehmann &lt;pcg@goof.com&gt;</p>
44    
45     <h2>Stream and message structure.</h2>
46    
47     <p>After connecting to the server, a handshake byte is exchanged. It's the
48     major version number of the protocol the client uses. Version 3 and 4 are
49     mostly the same, except that Version 4 clients expect server messages to
50     be compressed, version 3 clients not.</p>
51    
52     <p>After that, the server sends back his version number, which is
53     always 3 in the current protocol. Most of the protocol variation is
54     determined by the server using the client version that is used in the
55     initial login message.</p>
56    
57     <p>After the initial handshake, the client sends uncompressed
58     messages, while the server sends back a zlib-compressed
59     stream (<a href="http://rfc1950.x42.com/">rfc1950</a> and <a href="http://rfc1950.x42.com/">rfc1951</a>).</p>
60    
61     <p>All messages have the same header:</p>
62    
63     <h4>MACRO message_header</h4>
64     <table border="1">
65     <tr>
66     <th>NAME</th>
67     <th>TYPE</th>
68     <th>DEFAULT</th>
69     <th>GUARD</th>
70     </tr>
71     <tr>
72     <td colspan="4">
73     </td>
74     </tr>
75     <tr>
76     <td>_unknown</td>
77     <td>I16</td>
78     <td></td>
79     <td></td>
80     </tr>
81     <tr>
82     <td colspan="4">
83     </td>
84     </tr>
85     <tr>
86     <td>length</td>
87     <td>I16</td>
88     <td></td>
89     <td></td>
90     </tr>
91     <tr>
92     <td colspan="4">
93     The length is the length of the full message including the header.
94     </td>
95     </tr>
96     <tr>
97     <td>type</td>
98     <td>I16</td>
99     <td></td>
100     <td></td>
101     </tr>
102     <tr>
103     <td colspan="4">
104     If the type is &gt;= 0x4000 this is a message for a specific channel. The channel
105     number is always the next I16.
106     </td>
107     </tr>
108     </table>
109    
110     <h2>Constants, enumartaion and set types used in the protocol.</h2>
111    
112     <p>Baaah... not yet.</p>
113    
114     <h2>Macros used in send &amp; receive messages</h2>
115    
116     <h4>MACRO user</h4>
117     <table border="1">
118     <tr>
119     <th>NAME</th>
120     <th>TYPE</th>
121     <th>DEFAULT</th>
122     <th>GUARD</th>
123     </tr>
124     <tr>
125     <td colspan="4">
126     </td>
127     </tr>
128     <tr>
129     <td>name</td>
130     <td>USERNAME</td>
131     <td></td>
132     <td></td>
133     </tr>
134     <tr>
135     <td colspan="4">
136     </td>
137     </tr>
138     <tr>
139     <td>flags</td>
140     <td>I32</td>
141     <td>1</td>
142     <td></td>
143     </tr>
144     <tr>
145     <td colspan="4">
146     </td>
147     </tr>
148     </table>
149    
150     <h2>Macros used in send messages</h2>
151    
152     <h4>MESSAGE login</h4>
153     NUMERIC TYPE (hex): 0000 SEND<table border="1">
154     <tr>
155     <th>NAME</th>
156     <th>TYPE</th>
157     <th>DEFAULT</th>
158     <th>GUARD</th>
159     </tr>
160     <tr>
161     <td colspan="4">
162     </td>
163     </tr>
164     <tr>
165     <td>ver_major</td>
166     <td>I32</td>
167     <td>2</td>
168     <td></td>
169     </tr>
170     <tr>
171     <td colspan="4">
172     </td>
173     </tr>
174     <tr>
175     <td>ver_minor</td>
176     <td>I32</td>
177     <td>4</td>
178     <td></td>
179     </tr>
180     <tr>
181     <td colspan="4">
182     </td>
183     </tr>
184     <tr>
185     <td>ver_micro</td>
186     <td>I32</td>
187     <td>67</td>
188     <td></td>
189     </tr>
190     <tr>
191     <td colspan="4">
192     </td>
193     </tr>
194     <tr>
195 pcg 1.2 <td>login</td>
196 pcg 1.1 <td>USERNAME</td>
197     <td></td>
198     <td></td>
199     </tr>
200     <tr>
201     <td colspan="4">
202     </td>
203     </tr>
204     <tr>
205     <td>password </td>
206 pcg 1.2 <td>I64</td>
207 pcg 1.1 <td>0</td>
208     <td></td>
209     </tr>
210     <tr>
211     <td colspan="4">
212 pcg 1.2 Password is a number calculcated as follows:
213     password = 0; for (characters) { password = password * 1055 + ascii (char) }
214 pcg 1.1 </td>
215     </tr>
216     <tr>
217 pcg 1.2 <td>guest</td>
218 pcg 1.1 <td>FLAG</td>
219     <td>1</td>
220     <td></td>
221     </tr>
222     <tr>
223     <td colspan="4">
224     </td>
225     </tr>
226     <tr>
227     <td>_unknown3</td>
228     <td>I16</td>
229     <td>0</td>
230     <td></td>
231     </tr>
232     <tr>
233     <td colspan="4">
234     </td>
235     </tr>
236     <tr>
237 pcg 1.2 <td>locale</td>
238 pcg 1.1 <td>A5</td>
239     <td>en_US</td>
240     <td></td>
241     </tr>
242     <tr>
243     <td colspan="4">
244     </td>
245     </tr>
246     <tr>
247     <td>clientver</td>
248     <td>DATA</td>
249     <td></td>
250     <td></td>
251     </tr>
252     <tr>
253     <td colspan="4">
254     </td>
255     </tr>
256     </table>
257    
258     <h4>MESSAGE server_stats</h4>
259 pcg 1.2 NUMERIC TYPE (hex): 0014 SEND<table border="1">
260 pcg 1.1 <tr>
261     <th>NAME</th>
262     <th>TYPE</th>
263     <th>DEFAULT</th>
264     <th>GUARD</th>
265     </tr>
266     <tr>
267     <td colspan="4">
268     Request server statistics.
269     </td>
270     </tr>
271     </table>
272    
273     <h4>MESSAGE pic_req</h4>
274 pcg 1.2 NUMERIC TYPE (hex): 0021 SEND<table border="1">
275 pcg 1.1 <tr>
276     <th>NAME</th>
277     <th>TYPE</th>
278     <th>DEFAULT</th>
279     <th>GUARD</th>
280     </tr>
281     <tr>
282     <td colspan="4">
283     Request a user picture from the server.
284     </td>
285     </tr>
286     <tr>
287     <td>name</td>
288     <td>USERNAME</td>
289     <td></td>
290     <td></td>
291     </tr>
292     <tr>
293     <td colspan="4">
294     </td>
295     </tr>
296     </table>
297    
298     <h4>MESSAGE pic_upload</h4>
299 pcg 1.2 NUMERIC TYPE (hex): 0021 SEND<table border="1">
300 pcg 1.1 <tr>
301     <th>NAME</th>
302     <th>TYPE</th>
303     <th>DEFAULT</th>
304     <th>GUARD</th>
305     </tr>
306     <tr>
307     <td colspan="4">
308     Same code as pic_req, but with an additional data section that
309     should contain a JPEG image that is &lt;=7KB. It must have 141×200 Pixels.
310     </td>
311     </tr>
312     <tr>
313     <td>name</td>
314     <td>USERNAME</td>
315     <td></td>
316     <td></td>
317     </tr>
318     <tr>
319     <td colspan="4">
320     </td>
321     </tr>
322     <tr>
323     <td>data</td>
324     <td>DATA</td>
325     <td></td>
326     <td></td>
327     </tr>
328     <tr>
329     <td colspan="4">
330     </td>
331     </tr>
332     </table>
333    
334     <h4>MESSAGE gnotice</h4>
335 pcg 1.2 NUMERIC TYPE (hex): 0100 SEND<table border="1">
336 pcg 1.1 <tr>
337     <th>NAME</th>
338     <th>TYPE</th>
339     <th>DEFAULT</th>
340     <th>GUARD</th>
341     </tr>
342     <tr>
343     <td colspan="4">
344     Send a global message. Maybe. Never tried, for obvious reasons :/
345     </td>
346     </tr>
347     <tr>
348     <td>notice</td>
349     <td>STRING</td>
350     <td></td>
351     <td></td>
352     </tr>
353     <tr>
354     <td colspan="4">
355     </td>
356     </tr>
357     </table>
358    
359     <h4>MESSAGE list_rooms</h4>
360 pcg 1.2 NUMERIC TYPE (hex): 0318 SEND<table border="1">
361 pcg 1.1 <tr>
362     <th>NAME</th>
363     <th>TYPE</th>
364     <th>DEFAULT</th>
365     <th>GUARD</th>
366     </tr>
367     <tr>
368     <td colspan="4">
369     List the rooms in a specific group/category.
370     </td>
371     </tr>
372     <tr>
373     <td>group</td>
374     <td>I8</td>
375     <td></td>
376     <td></td>
377     </tr>
378     <tr>
379     <td colspan="4">
380     </td>
381     </tr>
382     </table>
383    
384     <h4>MESSAGE new_room</h4>
385 pcg 1.2 NUMERIC TYPE (hex): 031a SEND<table border="1">
386 pcg 1.1 <tr>
387     <th>NAME</th>
388     <th>TYPE</th>
389     <th>DEFAULT</th>
390     <th>GUARD</th>
391     </tr>
392     <tr>
393     <td colspan="4">
394     Create a new room. Not verified.
395     </td>
396     </tr>
397     <tr>
398     <td>name</td>
399     <td>USERNAME</td>
400     <td></td>
401     <td></td>
402     </tr>
403     <tr>
404     <td colspan="4">
405     </td>
406     </tr>
407     <tr>
408     <td>i1</td>
409     <td>I32</td>
410     <td>0</td>
411     <td></td>
412     </tr>
413     <tr>
414     <td colspan="4">
415     </td>
416     </tr>
417     <tr>
418     <td>b1</td>
419     <td>I8</td>
420     <td>0</td>
421     <td></td>
422     </tr>
423     <tr>
424     <td colspan="4">
425     </td>
426     </tr>
427     <tr>
428     <td>b2</td>
429     <td>I8</td>
430     <td>255</td>
431     <td></td>
432     </tr>
433     <tr>
434     <td colspan="4">
435     </td>
436     </tr>
437     <tr>
438     <td>b3</td>
439     <td>I8</td>
440     <td>255</td>
441     <td></td>
442     </tr>
443     <tr>
444     <td colspan="4">
445     </td>
446     </tr>
447     <tr>
448     <td>group</td>
449     <td>I8</td>
450     <td>1</td>
451     <td></td>
452     </tr>
453     <tr>
454     <td colspan="4">
455     </td>
456     </tr>
457     <tr>
458     <td>name</td>
459     <td>STRING</td>
460     <td></td>
461     <td></td>
462     </tr>
463     <tr>
464     <td colspan="4">
465     </td>
466     </tr>
467     <tr>
468     <td>description</td>
469     <td>STRING</td>
470     <td></td>
471     <td></td>
472     </tr>
473     <tr>
474     <td colspan="4">
475     </td>
476     </tr>
477     <tr>
478     <td>flags</td>
479     <td>I8</td>
480     <td></td>
481     <td></td>
482     </tr>
483     <tr>
484     <td colspan="4">
485     0x10 .. private room etc.. see code
486     </td>
487     </tr>
488     </table>
489    
490     <h4>MESSAGE join_room</h4>
491     NUMERIC TYPE (hex): 4300 SEND<table border="1">
492     <tr>
493     <th>NAME</th>
494     <th>TYPE</th>
495     <th>DEFAULT</th>
496     <th>GUARD</th>
497     </tr>
498     <tr>
499     <td colspan="4">
500     </td>
501     </tr>
502     <tr>
503     <td>channel</td>
504     <td>I16</td>
505     <td></td>
506     <td></td>
507     </tr>
508     <tr>
509     <td colspan="4">
510     </td>
511     </tr>
512     <tr>
513     <td>user</td>
514     <td>user</td>
515     <td></td>
516     <td></td>
517     </tr>
518     <tr>
519     <td colspan="4">
520     </td>
521     </tr>
522     </table>
523    
524     <h4>MESSAGE msg_room</h4>
525     NUMERIC TYPE (hex): 4301 SEND<table border="1">
526     <tr>
527     <th>NAME</th>
528     <th>TYPE</th>
529     <th>DEFAULT</th>
530     <th>GUARD</th>
531     </tr>
532     <tr>
533     <td colspan="4">
534     </td>
535     </tr>
536     <tr>
537     <td>channel</td>
538     <td>I16</td>
539     <td></td>
540     <td></td>
541     </tr>
542     <tr>
543     <td colspan="4">
544     </td>
545     </tr>
546     <tr>
547     <td>name</td>
548     <td>USERNAME</td>
549     <td></td>
550     <td></td>
551     </tr>
552     <tr>
553     <td colspan="4">
554     </td>
555     </tr>
556     <tr>
557     <td>message</td>
558     <td>STRING</td>
559     <td></td>
560     <td></td>
561     </tr>
562     <tr>
563     <td colspan="4">
564     </td>
565     </tr>
566     </table>
567    
568     <h4>MESSAGE part_room</h4>
569     NUMERIC TYPE (hex): 4302 SEND<table border="1">
570     <tr>
571     <th>NAME</th>
572     <th>TYPE</th>
573     <th>DEFAULT</th>
574     <th>GUARD</th>
575     </tr>
576     <tr>
577     <td colspan="4">
578     </td>
579     </tr>
580     <tr>
581     <td>channel</td>
582     <td>I16</td>
583     <td></td>
584     <td></td>
585     </tr>
586     <tr>
587     <td colspan="4">
588     </td>
589     </tr>
590     <tr>
591     <td>name</td>
592     <td>USERNAME</td>
593     <td></td>
594     <td></td>
595     </tr>
596     <tr>
597     <td colspan="4">
598     </td>
599     </tr>
600     </table>
601    
602     <h4>MESSAGE new_game</h4>
603     NUMERIC TYPE (hex): 4305 SEND<table border="1">
604     <tr>
605     <th>NAME</th>
606     <th>TYPE</th>
607     <th>DEFAULT</th>
608     <th>GUARD</th>
609     </tr>
610     <tr>
611     <td colspan="4">
612     </td>
613     </tr>
614     <tr>
615     <td>channel</td>
616     <td>I16</td>
617     <td></td>
618     <td></td>
619     </tr>
620     <tr>
621     <td colspan="4">
622     </td>
623     </tr>
624     <tr>
625     <td>id</td>
626     <td>I16</td>
627     <td></td>
628     <td></td>
629     </tr>
630     <tr>
631     <td colspan="4">
632     </td>
633     </tr>
634     <tr>
635     <td>gametype</td>
636     <td>I32</td>
637     <td></td>
638     <td></td>
639     </tr>
640     <tr>
641     <td colspan="4">
642     </td>
643     </tr>
644     <tr>
645     <td>rules</td>
646     <td>rules</td>
647     <td></td>
648     <td></td>
649     </tr>
650     <tr>
651     <td colspan="4">
652     </td>
653     </tr>
654     <tr>
655     <td>notes</td>
656     <td>STRING</td>
657     <td></td>
658     <td></td>
659     </tr>
660     <tr>
661     <td colspan="4">
662     </td>
663     </tr>
664     </table>
665    
666     <h4>MESSAGE req_games</h4>
667     NUMERIC TYPE (hex): 430b SEND<table border="1">
668     <tr>
669     <th>NAME</th>
670     <th>TYPE</th>
671     <th>DEFAULT</th>
672     <th>GUARD</th>
673     </tr>
674     <tr>
675     <td colspan="4">
676     request to update room game list (send once per minute)
677     </td>
678     </tr>
679     <tr>
680     <td>channel</td>
681     <td>I16</td>
682     <td></td>
683     <td></td>
684     </tr>
685     <tr>
686     <td colspan="4">
687     </td>
688     </tr>
689     </table>
690    
691     <h4>MESSAGE req_desc</h4>
692     NUMERIC TYPE (hex): 4319 SEND<table border="1">
693     <tr>
694     <th>NAME</th>
695     <th>TYPE</th>
696     <th>DEFAULT</th>
697     <th>GUARD</th>
698     </tr>
699     <tr>
700     <td colspan="4">
701     Request room description.
702     </td>
703     </tr>
704     <tr>
705     <td>channel</td>
706     <td>I16</td>
707     <td></td>
708     <td></td>
709     </tr>
710     <tr>
711     <td colspan="4">
712     </td>
713     </tr>
714     </table>
715    
716     <h4>MESSAGE send_chal</h4>
717     NUMERIC TYPE (hex): 4400 SEND<table border="1">
718     <tr>
719     <th>NAME</th>
720     <th>TYPE</th>
721     <th>DEFAULT</th>
722     <th>GUARD</th>
723     </tr>
724     <tr>
725     <td colspan="4">
726     No idea.
727     </td>
728     </tr>
729     <tr>
730     <td>channel</td>
731     <td>I16</td>
732     <td></td>
733     <td></td>
734     </tr>
735     <tr>
736     <td colspan="4">
737     </td>
738     </tr>
739     <tr>
740     <td>black</td>
741     <td>USERNAME</td>
742     <td></td>
743     <td></td>
744     </tr>
745     <tr>
746     <td colspan="4">
747     </td>
748     </tr>
749     <tr>
750     <td>white</td>
751     <td>USERNAME</td>
752     <td></td>
753     <td></td>
754     </tr>
755     <tr>
756     <td colspan="4">
757     More following... TREE or challenge.
758     </td>
759     </tr>
760     </table>
761    
762     <h4>MESSAGE join_game</h4>
763     NUMERIC TYPE (hex): 4403 SEND<table border="1">
764     <tr>
765     <th>NAME</th>
766     <th>TYPE</th>
767     <th>DEFAULT</th>
768     <th>GUARD</th>
769     </tr>
770     <tr>
771     <td colspan="4">
772     </td>
773     </tr>
774     <tr>
775     <td>user</td>
776     <td>user</td>
777     <td></td>
778     <td></td>
779     </tr>
780     <tr>
781     <td colspan="4">
782     </td>
783     </tr>
784     <tr>
785     <td>channel</td>
786     <td>I16</td>
787     <td></td>
788     <td></td>
789     </tr>
790     <tr>
791     <td colspan="4">
792     </td>
793     </tr>
794     </table>
795    
796     <h4>MESSAGE part_game</h4>
797     NUMERIC TYPE (hex): 4404 SEND<table border="1">
798     <tr>
799     <th>NAME</th>
800     <th>TYPE</th>
801     <th>DEFAULT</th>
802     <th>GUARD</th>
803     </tr>
804     <tr>
805     <td colspan="4">
806     </td>
807     </tr>
808     <tr>
809     <td>channel</td>
810     <td>I16</td>
811     <td></td>
812     <td></td>
813     </tr>
814     <tr>
815     <td colspan="4">
816     </td>
817     </tr>
818     <tr>
819     <td>name</td>
820     <td>USERNAME</td>
821     <td></td>
822     <td></td>
823     </tr>
824     <tr>
825     <td colspan="4">
826     </td>
827     </tr>
828     </table>
829    
830     <h4>MESSAGE set_tree</h4>
831     NUMERIC TYPE (hex): 4405 SEND<table border="1">
832     <tr>
833     <th>NAME</th>
834     <th>TYPE</th>
835     <th>DEFAULT</th>
836     <th>GUARD</th>
837     </tr>
838     <tr>
839     <td colspan="4">
840     </td>
841     </tr>
842     <tr>
843     <td>channel</td>
844     <td>I16</td>
845     <td></td>
846     <td></td>
847     </tr>
848     <tr>
849     <td colspan="4">
850     </td>
851     </tr>
852     <tr>
853     <td>tree</td>
854     <td>TREE</td>
855     <td></td>
856     <td></td>
857     </tr>
858     <tr>
859     <td colspan="4">
860     </td>
861     </tr>
862     </table>
863    
864     <h4>MESSAGE get_tree</h4>
865     NUMERIC TYPE (hex): 4408 SEND<table border="1">
866     <tr>
867     <th>NAME</th>
868     <th>TYPE</th>
869     <th>DEFAULT</th>
870     <th>GUARD</th>
871     </tr>
872     <tr>
873     <td colspan="4">
874     </td>
875     </tr>
876     <tr>
877     <td>channel</td>
878     <td>I16</td>
879     <td></td>
880     <td></td>
881     </tr>
882     <tr>
883     <td colspan="4">
884     </td>
885     </tr>
886     <tr>
887     <td>node</td>
888     <td>I32</td>
889     <td></td>
890     <td></td>
891     </tr>
892     <tr>
893     <td colspan="4">
894     </td>
895     </tr>
896     </table>
897    
898     <h4>MESSAGE claim_win</h4>
899     NUMERIC TYPE (hex): 440c SEND<table border="1">
900     <tr>
901     <th>NAME</th>
902     <th>TYPE</th>
903     <th>DEFAULT</th>
904     <th>GUARD</th>
905     </tr>
906     <tr>
907     <td colspan="4">
908     </td>
909     </tr>
910     <tr>
911     <td>channel</td>
912     <td>I16</td>
913     <td></td>
914     <td></td>
915     </tr>
916     <tr>
917     <td colspan="4">
918     </td>
919     </tr>
920     <tr>
921     <td>_byte</td>
922     <td>I8 </td>
923     <td></td>
924     <td></td>
925     </tr>
926     <tr>
927     <td colspan="4">
928     Player colour maybe? Unclear.
929     </td>
930     </tr>
931     </table>
932    
933     <h4>MESSAGE add_time</h4>
934     NUMERIC TYPE (hex): 440d SEND<table border="1">
935     <tr>
936     <th>NAME</th>
937     <th>TYPE</th>
938     <th>DEFAULT</th>
939     <th>GUARD</th>
940     </tr>
941     <tr>
942     <td colspan="4">
943     </td>
944     </tr>
945     <tr>
946     <td>channel</td>
947     <td>I16</td>
948     <td></td>
949     <td></td>
950     </tr>
951     <tr>
952     <td colspan="4">
953     </td>
954     </tr>
955     <tr>
956     <td>time</td>
957     <td>I32</td>
958     <td></td>
959     <td></td>
960     </tr>
961     <tr>
962     <td colspan="4">
963     </td>
964     </tr>
965     <tr>
966     <td>player</td>
967     <td>I8</td>
968     <td></td>
969     <td></td>
970     </tr>
971     <tr>
972     <td colspan="4">
973     </td>
974     </tr>
975     </table>
976    
977     <h4>MESSAGE grant_undo</h4>
978     NUMERIC TYPE (hex): 440f SEND<table border="1">
979     <tr>
980     <th>NAME</th>
981     <th>TYPE</th>
982     <th>DEFAULT</th>
983     <th>GUARD</th>
984     </tr>
985     <tr>
986     <td colspan="4">
987     </td>
988     </tr>
989     <tr>
990     <td>channel</td>
991     <td>I16</td>
992     <td></td>
993     <td></td>
994     </tr>
995     <tr>
996     <td colspan="4">
997     </td>
998     </tr>
999     </table>
1000    
1001     <h4>MESSAGE resign_game</h4>
1002     NUMERIC TYPE (hex): 4410 SEND<table border="1">
1003     <tr>
1004     <th>NAME</th>
1005     <th>TYPE</th>
1006     <th>DEFAULT</th>
1007     <th>GUARD</th>
1008     </tr>
1009     <tr>
1010     <td colspan="4">
1011     </td>
1012     </tr>
1013     <tr>
1014     <td>channel</td>
1015     <td>I16</td>
1016     <td></td>
1017     <td></td>
1018     </tr>
1019     <tr>
1020     <td colspan="4">
1021     </td>
1022     </tr>
1023     <tr>
1024     <td>player</td>
1025     <td>I8</td>
1026     <td></td>
1027     <td></td>
1028     </tr>
1029     <tr>
1030     <td colspan="4">
1031     </td>
1032     </tr>
1033     </table>
1034    
1035     <h4>MESSAGE set_teacher</h4>
1036     NUMERIC TYPE (hex): 441a SEND<table border="1">
1037     <tr>
1038     <th>NAME</th>
1039     <th>TYPE</th>
1040     <th>DEFAULT</th>
1041     <th>GUARD</th>
1042     </tr>
1043     <tr>
1044     <td colspan="4">
1045     </td>
1046     </tr>
1047     <tr>
1048     <td>channel</td>
1049     <td>I16</td>
1050     <td></td>
1051     <td></td>
1052     </tr>
1053     <tr>
1054     <td colspan="4">
1055     </td>
1056     </tr>
1057     <tr>
1058     <td>name</td>
1059     <td>USERNAME</td>
1060     <td></td>
1061     <td></td>
1062     </tr>
1063     <tr>
1064     <td colspan="4">
1065     </td>
1066     </tr>
1067     </table>
1068    
1069     <h4>MESSAGE add_user</h4>
1070     NUMERIC TYPE (hex): 4422 SEND<table border="1">
1071     <tr>
1072     <th>NAME</th>
1073     <th>TYPE</th>
1074     <th>DEFAULT</th>
1075     <th>GUARD</th>
1076     </tr>
1077     <tr>
1078     <td colspan="4">
1079     </td>
1080     </tr>
1081     <tr>
1082     <td>channel</td>
1083     <td>I16</td>
1084     <td></td>
1085     <td></td>
1086     </tr>
1087     <tr>
1088     <td colspan="4">
1089     </td>
1090     </tr>
1091     <tr>
1092     <td>othername</td>
1093     <td>USERNAME</td>
1094     <td></td>
1095     <td></td>
1096     </tr>
1097     <tr>
1098     <td colspan="4">
1099     </td>
1100     </tr>
1101     <tr>
1102     <td>name</td>
1103     <td>USERNAME</td>
1104     <td></td>
1105     <td></td>
1106     </tr>
1107     <tr>
1108     <td colspan="4">; # gives user access to the game (to what? ;)
1109     </td>
1110     </tr>
1111     </table>
1112    
1113     <h4>MESSAGE set_privacy</h4>
1114     NUMERIC TYPE (hex): 4423 SEND<table border="1">
1115     <tr>
1116     <th>NAME</th>
1117     <th>TYPE</th>
1118     <th>DEFAULT</th>
1119     <th>GUARD</th>
1120     </tr>
1121     <tr>
1122     <td colspan="4">
1123     </td>
1124     </tr>
1125     <tr>
1126     <td>channel</td>
1127     <td>I16</td>
1128     <td></td>
1129     <td></td>
1130     </tr>
1131     <tr>
1132     <td colspan="4">
1133     </td>
1134     </tr>
1135     <tr>
1136     <td>private</td>
1137     <td>I8</td>
1138     <td></td>
1139     <td></td>
1140     </tr>
1141     <tr>
1142     <td colspan="4">
1143     </td>
1144     </tr>
1145     </table>
1146    
1147     <h4>MESSAGE reject_chal</h4>
1148     NUMERIC TYPE (hex): 4429 SEND<table border="1">
1149     <tr>
1150     <th>NAME</th>
1151     <th>TYPE</th>
1152     <th>DEFAULT</th>
1153     <th>GUARD</th>
1154     </tr>
1155     <tr>
1156     <td colspan="4">
1157     </td>
1158     </tr>
1159     <tr>
1160     <td>channel</td>
1161     <td>I16</td>
1162     <td></td>
1163     <td></td>
1164     </tr>
1165     <tr>
1166     <td colspan="4">
1167     </td>
1168     </tr>
1169     <tr>
1170     <td>name</td>
1171     <td>USERNAME</td>
1172     <td></td>
1173     <td></td>
1174     </tr>
1175     <tr>
1176     <td colspan="4">
1177     </td>
1178     </tr>
1179     </table>
1180    
1181     <h4>MESSAGE req_result</h4>
1182     NUMERIC TYPE (hex): 4433 SEND<table border="1">
1183     <tr>
1184     <th>NAME</th>
1185     <th>TYPE</th>
1186     <th>DEFAULT</th>
1187     <th>GUARD</th>
1188     </tr>
1189     <tr>
1190     <td colspan="4">
1191     </td>
1192     </tr>
1193     <tr>
1194     <td>channel</td>
1195     <td>I16</td>
1196     <td></td>
1197     <td></td>
1198     </tr>
1199     <tr>
1200     <td colspan="4">
1201     </td>
1202     </tr>
1203     <tr>
1204     <td>channel</td>
1205     <td>I16</td>
1206     <td></td>
1207     <td></td>
1208     </tr>
1209     <tr>
1210     <td colspan="4">
1211     </td>
1212     </tr>
1213     </table>
1214    
1215     <h2>Macros mainly used in receive messages</h2>
1216    
1217     <h4>MACRO challenge_defaults</h4>
1218     <table border="1">
1219     <tr>
1220     <th>NAME</th>
1221     <th>TYPE</th>
1222     <th>DEFAULT</th>
1223     <th>GUARD</th>
1224     </tr>
1225     <tr>
1226     <td colspan="4">
1227     </td>
1228     </tr>
1229     <tr>
1230     <td>gametype</td>
1231     <td>I32</td>
1232     <td></td>
1233     <td></td>
1234     </tr>
1235     <tr>
1236     <td colspan="4">
1237     </td>
1238     </tr>
1239     <tr>
1240     <td>size</td>
1241     <td>I32</td>
1242     <td></td>
1243     <td></td>
1244     </tr>
1245     <tr>
1246     <td colspan="4">
1247     </td>
1248     </tr>
1249     <tr>
1250     <td>timesys</td>
1251     <td>I32</td>
1252     <td></td>
1253     <td></td>
1254     </tr>
1255     <tr>
1256     <td colspan="4">
1257     </td>
1258     </tr>
1259     <tr>
1260     <td>time</td>
1261     <td>I32</td>
1262     <td></td>
1263     <td></td>
1264     </tr>
1265     <tr>
1266     <td colspan="4">
1267     </td>
1268     </tr>
1269     <tr>
1270     <td>byo_time</td>
1271     <td>I32</td>
1272     <td></td>
1273     <td></td>
1274     </tr>
1275     <tr>
1276     <td colspan="4">
1277     </td>
1278     </tr>
1279     <tr>
1280     <td>byo_periods</td>
1281     <td>I32</td>
1282     <td></td>
1283     <td></td>
1284     </tr>
1285     <tr>
1286     <td colspan="4">
1287     </td>
1288     </tr>
1289     <tr>
1290     <td>can_time</td>
1291     <td>I32</td>
1292     <td></td>
1293     <td></td>
1294     </tr>
1295     <tr>
1296     <td colspan="4">
1297     </td>
1298     </tr>
1299     <tr>
1300     <td>can_stones</td>
1301     <td>I32</td>
1302     <td></td>
1303     <td></td>
1304     </tr>
1305     <tr>
1306     <td colspan="4">)
1307     </td>
1308     </tr>
1309     </table>
1310    
1311     <h4>MACRO </h4>
1312     <table border="1">
1313     <tr>
1314     <th>NAME</th>
1315     <th>TYPE</th>
1316     <th>DEFAULT</th>
1317     <th>GUARD</th>
1318     </tr>
1319     <tr>
1320     <td colspan="4">
1321     </td>
1322     </tr>
1323     <tr>
1324     <td>ruleset</td>
1325     <td>I8</td>
1326     <td></td>
1327     <td></td>
1328     </tr>
1329     <tr>
1330     <td colspan="4">
1331     </td>
1332     </tr>
1333     <tr>
1334     <td>size</td>
1335     <td>I8</td>
1336     <td></td>
1337     <td></td>
1338     </tr>
1339     <tr>
1340     <td colspan="4">
1341     </td>
1342     </tr>
1343     <tr>
1344     <td>handicap</td>
1345     <td>I8</td>
1346     <td></td>
1347     <td></td>
1348     </tr>
1349     <tr>
1350     <td colspan="4">
1351     </td>
1352     </tr>
1353     <tr>
1354     <td>komi</td>
1355     <td>KOMI</td>
1356     <td></td>
1357     <td></td>
1358     </tr>
1359     <tr>
1360     <td colspan="4">
1361     </td>
1362     </tr>
1363     <tr>
1364     <td>timesys</td>
1365     <td>I8</td>
1366     <td></td>
1367     <td></td>
1368     </tr>
1369     <tr>
1370     <td colspan="4">
1371     </td>
1372     </tr>
1373     <tr>
1374     <td>time</td>
1375     <td>I32</td>
1376     <td></td>
1377     <td></td>
1378     </tr>
1379     <tr>
1380     <td colspan="4">
1381     </td>
1382     </tr>
1383     <tr>
1384     <td>interval</td>
1385     <td>I32</td>
1386     <td></td>
1387     <td></td>
1388     </tr>
1389     <tr>
1390     <td colspan="4">
1391     byo-yomi time / canadian time
1392     </td>
1393     </tr>
1394     <tr>
1395     <td>count</td>
1396     <td>I16</td>
1397     <td></td>
1398     <td></td>
1399     </tr>
1400     <tr>
1401     <td colspan="4">
1402     periods / moves
1403     </td>
1404     </tr>
1405     </table>
1406    
1407     <h4>MACRO challenge</h4>
1408     <table border="1">
1409     <tr>
1410     <th>NAME</th>
1411     <th>TYPE</th>
1412     <th>DEFAULT</th>
1413     <th>GUARD</th>
1414     </tr>
1415     <tr>
1416     <td colspan="4">
1417     </td>
1418     </tr>
1419     <tr>
1420     <td>user1</td>
1421     <td>user</td>
1422     <td></td>
1423     <td></td>
1424     </tr>
1425     <tr>
1426     <td colspan="4">
1427     </td>
1428     </tr>
1429     <tr>
1430     <td>user2</td>
1431     <td>user</td>
1432     <td></td>
1433     <td></td>
1434     </tr>
1435     <tr>
1436     <td colspan="4">
1437     </td>
1438     </tr>
1439     <tr>
1440     <td>gametype</td>
1441     <td>I32</td>
1442     <td></td>
1443     <td></td>
1444     </tr>
1445     <tr>
1446     <td colspan="4">
1447     </td>
1448     </tr>
1449     <tr>
1450     <td>rules</td>
1451     <td>rules</td>
1452     <td></td>
1453     <td></td>
1454     </tr>
1455     <tr>
1456     <td colspan="4">
1457     Maybe the rules" are in TREE format. I forgot.
1458     </td>
1459     </tr>
1460     </table>
1461    
1462     <h4>MACRO game</h4>
1463     <table border="1">
1464     <tr>
1465     <th>NAME</th>
1466     <th>TYPE</th>
1467     <th>DEFAULT</th>
1468     <th>GUARD</th>
1469     </tr>
1470     <tr>
1471     <td colspan="4">
1472     </td>
1473     </tr>
1474     <tr>
1475     <td>channel</td>
1476     <td>I16</td>
1477     <td></td>
1478     <td></td>
1479     </tr>
1480     <tr>
1481     <td colspan="4">
1482     </td>
1483     </tr>
1484     <tr>
1485     <td>type </td>
1486     <td>I32</td>
1487     <td></td>
1488     <td></td>
1489     </tr>
1490     <tr>
1491     <td colspan="4">
1492     </td>
1493     </tr>
1494     <tr>
1495     <td>user1</td>
1496     <td>user</td>
1497     <td></td>
1498     <td></td>
1499     </tr>
1500     <tr>
1501     <td colspan="4">
1502     White
1503     </td>
1504     </tr>
1505     <tr>
1506     <td>user2</td>
1507     <td>user</td>
1508     <td></td>
1509     <td></td>
1510     </tr>
1511     <tr>
1512     <td colspan="4">
1513     Black
1514     </td>
1515     </tr>
1516     <tr>
1517     <td>user3</td>
1518     <td>user</td>
1519     <td></td>
1520     <td></td>
1521     </tr>
1522     <tr>
1523     <td colspan="4">
1524     Owner
1525     </td>
1526     </tr>
1527     <tr>
1528     <td>size</td>
1529     <td>I32</td>
1530     <td></td>
1531     <td></td>
1532     </tr>
1533     <tr>
1534     <td colspan="4">
1535     </td>
1536     </tr>
1537     <tr>
1538     <td>handicap</td>
1539     <td>I32</td>
1540     <td></td>
1541     <td></td>
1542     </tr>
1543     <tr>
1544     <td colspan="4">
1545     &lt; 0 not fully setup
1546     </td>
1547     </tr>
1548     <tr>
1549     <td>komi</td>
1550     <td>I322</td>
1551     <td></td>
1552     <td></td>
1553     </tr>
1554     <tr>
1555     <td colspan="4">
1556     </td>
1557     </tr>
1558     <tr>
1559     <td>moves</td>
1560     <td>I16</td>
1561     <td></td>
1562     <td></td>
1563     </tr>
1564     <tr>
1565     <td colspan="4">
1566     </td>
1567     </tr>
1568     <tr>
1569     <td>flags</td>
1570     <td>I16</td>
1571     <td></td>
1572     <td></td>
1573     </tr>
1574     <tr>
1575     <td colspan="4">
1576     </td>
1577     </tr>
1578     <tr>
1579     <td>observers</td>
1580     <td>I32</td>
1581     <td></td>
1582     <td></td>
1583     </tr>
1584     <tr>
1585     <td colspan="4">
1586     </td>
1587     </tr>
1588     <tr>
1589     <td>saved</td>
1590     <td>FLAG</td>
1591     <td></td>
1592     <td></td>
1593     </tr>
1594     <tr>
1595     <td colspan="4">
1596     </td>
1597     </tr>
1598     <tr>
1599     <td>notes</td>
1600     <td>STRING</td>
1601     <td></td>
1602     <td>handicap &lt; 0</td>
1603     </tr>
1604     <tr>
1605     <td colspan="4">
1606     </td>
1607     </tr>
1608     </table>
1609    
1610     <h4>MACRO room_obs</h4>
1611     <table border="1">
1612     <tr>
1613     <th>NAME</th>
1614     <th>TYPE</th>
1615     <th>DEFAULT</th>
1616     <th>GUARD</th>
1617     </tr>
1618     <tr>
1619     <td colspan="4">
1620     </td>
1621     </tr>
1622     <tr>
1623     <td>name</td>
1624     <td>A50</td>
1625     <td></td>
1626     <td></td>
1627     </tr>
1628     <tr>
1629     <td colspan="4">
1630     </td>
1631     </tr>
1632     <tr>
1633     <td>channel</td>
1634     <td>I16</td>
1635     <td></td>
1636     <td></td>
1637     </tr>
1638     <tr>
1639     <td colspan="4">
1640     </td>
1641     </tr>
1642     <tr>
1643     <td>flags</td>
1644     <td>I32</td>
1645     <td></td>
1646     <td></td>
1647     </tr>
1648     <tr>
1649     <td colspan="4">
1650     </td>
1651     </tr>
1652     <tr>
1653     <td>users</td>
1654     <td>I32</td>
1655     <td></td>
1656     <td></td>
1657     </tr>
1658     <tr>
1659     <td colspan="4">)
1660     </td>
1661     </tr>
1662     </table>
1663    
1664     <h4>MACRO room</h4>
1665     <table border="1">
1666     <tr>
1667     <th>NAME</th>
1668     <th>TYPE</th>
1669     <th>DEFAULT</th>
1670     <th>GUARD</th>
1671     </tr>
1672     <tr>
1673     <td colspan="4">
1674     </td>
1675     </tr>
1676     <tr>
1677     <td>channel</td>
1678     <td>I16</td>
1679     <td></td>
1680     <td></td>
1681     </tr>
1682     <tr>
1683     <td colspan="4">
1684     </td>
1685     </tr>
1686     <tr>
1687     <td>flags</td>
1688     <td>I8</td>
1689     <td></td>
1690     <td></td>
1691     </tr>
1692     <tr>
1693     <td colspan="4">
1694     </td>
1695     </tr>
1696     <tr>
1697     <td>group</td>
1698     <td>I8</td>
1699     <td></td>
1700     <td></td>
1701     </tr>
1702     <tr>
1703     <td colspan="4">
1704     </td>
1705     </tr>
1706     <tr>
1707     <td>users</td>
1708     <td>I16</td>
1709     <td></td>
1710     <td></td>
1711     </tr>
1712     <tr>
1713     <td colspan="4">
1714     </td>
1715     </tr>
1716     <tr>
1717     <td>games</td>
1718     <td>I16</td>
1719     <td></td>
1720     <td></td>
1721     </tr>
1722     <tr>
1723     <td colspan="4">
1724     </td>
1725     </tr>
1726     <tr>
1727     <td>name</td>
1728     <td>STRING</td>
1729     <td></td>
1730     <td></td>
1731     </tr>
1732     <tr>
1733     <td colspan="4">)
1734     </td>
1735     </tr>
1736     </table>
1737    
1738     <h4>MACRO score</h4>
1739     <table border="1">
1740     <tr>
1741     <th>NAME</th>
1742     <th>TYPE</th>
1743     <th>DEFAULT</th>
1744     <th>GUARD</th>
1745     </tr>
1746     <tr>
1747     <td colspan="4">
1748     </td>
1749     </tr>
1750     <tr>
1751     <td>score</td>
1752     <td>I324</td>
1753     <td></td>
1754     <td></td>
1755     </tr>
1756     <tr>
1757     <td colspan="4">
1758     </td>
1759     </tr>
1760     <tr>
1761     <td>territory</td>
1762     <td>I32</td>
1763     <td></td>
1764     <td></td>
1765     </tr>
1766     <tr>
1767     <td colspan="4">
1768     </td>
1769     </tr>
1770     <tr>
1771     <td>captures</td>
1772     <td>I32</td>
1773     <td></td>
1774     <td></td>
1775     </tr>
1776     <tr>
1777     <td colspan="4">
1778     </td>
1779     </tr>
1780     <tr>
1781     <td>i3</td>
1782     <td>I32</td>
1783     <td></td>
1784     <td></td>
1785     </tr>
1786     <tr>
1787     <td colspan="4">
1788     </td>
1789     </tr>
1790     <tr>
1791     <td>f2</td>
1792     <td>I324</td>
1793     <td></td>
1794     <td></td>
1795     </tr>
1796     <tr>
1797     <td colspan="4">
1798     </td>
1799     </tr>
1800     <tr>
1801     <td>komi</td>
1802     <td>I324</td>
1803     <td></td>
1804     <td></td>
1805     </tr>
1806     <tr>
1807     <td colspan="4">
1808     </td>
1809     </tr>
1810     <tr>
1811     <td>i4</td>
1812     <td>I32</td>
1813     <td></td>
1814     <td></td>
1815     </tr>
1816     <tr>
1817     <td colspan="4">)
1818     Apperently the i3, f2, i4 are zero.
1819     </td>
1820     </tr>
1821     </table>
1822    
1823     <h2>Receive messages</h2>
1824    
1825     <h4>MESSAGE login</h4>
1826     NUMERIC TYPE (hex): 0001 RECV<table border="1">
1827     <tr>
1828     <th>NAME</th>
1829     <th>TYPE</th>
1830     <th>DEFAULT</th>
1831     <th>GUARD</th>
1832     </tr>
1833     <tr>
1834     <td colspan="4">
1835     </td>
1836     </tr>
1837     <tr>
1838     <td>result</td>
1839     <td>CONSTANT</td>
1840     <td>login ok</td>
1841     <td></td>
1842     </tr>
1843     <tr>
1844     <td colspan="4">
1845     </td>
1846     </tr>
1847     <tr>
1848     <td>success</td>
1849     <td>CONSTANT</td>
1850     <td>1</td>
1851     <td></td>
1852     </tr>
1853     <tr>
1854     <td colspan="4">
1855     </td>
1856     </tr>
1857     </table>
1858    
1859     <h4>MESSAGE login</h4>
1860     NUMERIC TYPE (hex): 0002 RECV<table border="1">
1861     <tr>
1862     <th>NAME</th>
1863     <th>TYPE</th>
1864     <th>DEFAULT</th>
1865     <th>GUARD</th>
1866     </tr>
1867     <tr>
1868     <td colspan="4">
1869     </td>
1870     </tr>
1871     <tr>
1872     <td>result</td>
1873     <td>CONSTANT</td>
1874     <td>guest login ok</td>
1875     <td></td>
1876     </tr>
1877     <tr>
1878     <td colspan="4">
1879     </td>
1880     </tr>
1881     <tr>
1882     <td>success</td>
1883     <td>CONSTANT</td>
1884     <td>1</td>
1885     <td></td>
1886     </tr>
1887     <tr>
1888     <td colspan="4">
1889     </td>
1890     </tr>
1891     </table>
1892    
1893     <h4>MESSAGE login</h4>
1894     NUMERIC TYPE (hex): 0003 RECV<table border="1">
1895     <tr>
1896     <th>NAME</th>
1897     <th>TYPE</th>
1898     <th>DEFAULT</th>
1899     <th>GUARD</th>
1900     </tr>
1901     <tr>
1902     <td colspan="4">
1903     </td>
1904     </tr>
1905     <tr>
1906     <td>result</td>
1907     <td>CONSTANT</td>
1908     <td>login error 3</td>
1909     <td></td>
1910     </tr>
1911     <tr>
1912     <td colspan="4">
1913     ** maybe more following? **
1914     </td>
1915     </tr>
1916     </table>
1917    
1918     <h4>MESSAGE login</h4>
1919     NUMERIC TYPE (hex): 0004 RECV<table border="1">
1920     <tr>
1921     <th>NAME</th>
1922     <th>TYPE</th>
1923     <th>DEFAULT</th>
1924     <th>GUARD</th>
1925     </tr>
1926     <tr>
1927     <td colspan="4">
1928     </td>
1929     </tr>
1930     <tr>
1931     <td>result</td>
1932     <td>CONSTANT</td>
1933     <td>wrong password</td>
1934     <td></td>
1935     </tr>
1936     <tr>
1937     <td colspan="4">
1938     ** maybe more following? **
1939     </td>
1940     </tr>
1941     </table>
1942    
1943     <h4>MESSAGE login</h4>
1944     NUMERIC TYPE (hex): 0005 RECV<table border="1">
1945     <tr>
1946     <th>NAME</th>
1947     <th>TYPE</th>
1948     <th>DEFAULT</th>
1949     <th>GUARD</th>
1950     </tr>
1951     <tr>
1952     <td colspan="4">
1953     </td>
1954     </tr>
1955     <tr>
1956     <td>result</td>
1957     <td>CONSTANT</td>
1958     <td>user unknown</td>
1959     <td></td>
1960     </tr>
1961     <tr>
1962     <td colspan="4">
1963     ** maybe more following? **
1964     </td>
1965     </tr>
1966     </table>
1967    
1968     <h4>MESSAGE login</h4>
1969     NUMERIC TYPE (hex): 0006 RECV<table border="1">
1970     <tr>
1971     <th>NAME</th>
1972     <th>TYPE</th>
1973     <th>DEFAULT</th>
1974     <th>GUARD</th>
1975     </tr>
1976     <tr>
1977     <td colspan="4">
1978     </td>
1979     </tr>
1980     <tr>
1981     <td>result</td>
1982     <td>CONSTANT</td>
1983     <td>user exists</td>
1984     <td></td>
1985     </tr>
1986     <tr>
1987     <td colspan="4">
1988     ** maybe more following? **
1989     </td>
1990     </tr>
1991     </table>
1992    
1993     <h4>MESSAGE login</h4>
1994     NUMERIC TYPE (hex): 0018 RECV<table border="1">
1995     <tr>
1996     <th>NAME</th>
1997     <th>TYPE</th>
1998     <th>DEFAULT</th>
1999     <th>GUARD</th>
2000     </tr>
2001     <tr>
2002     <td colspan="4">
2003     </td>
2004     </tr>
2005     <tr>
2006     <td>result</td>
2007     <td>CONSTANT</td>
2008     <td>login error 18</td>
2009     <td></td>
2010     </tr>
2011     <tr>
2012     <td colspan="4">
2013     ** maybe more following? **
2014     </td>
2015     </tr>
2016     </table>
2017    
2018     <h4>MESSAGE login</h4>
2019     NUMERIC TYPE (hex): 0022 RECV<table border="1">
2020     <tr>
2021     <th>NAME</th>
2022     <th>TYPE</th>
2023     <th>DEFAULT</th>
2024     <th>GUARD</th>
2025     </tr>
2026     <tr>
2027     <td colspan="4">
2028     </td>
2029     </tr>
2030     <tr>
2031     <td colspan="4">
2032     </td>
2033     </tr>
2034     <tr>
2035     <td>result</td>
2036     <td>CONSTANT</td>
2037     <td>user or ip blocked</td>
2038     <td></td>
2039     </tr>
2040     <tr>
2041     <td colspan="4">
2042     </td>
2043     </tr>
2044     <tr>
2045     <td>reason</td>
2046     <td>STRING</td>
2047     <td></td>
2048     <td></td>
2049     </tr>
2050     <tr>
2051     <td colspan="4">
2052     </td>
2053     </tr>
2054     </table>
2055    
2056     <h4>MESSAGE msg_chat</h4>
2057     NUMERIC TYPE (hex): 0013 RECV<table border="1">
2058     <tr>
2059     <th>NAME</th>
2060     <th>TYPE</th>
2061     <th>DEFAULT</th>
2062     <th>GUARD</th>
2063     </tr>
2064     <tr>
2065     <td colspan="4">
2066     </td>
2067     </tr>
2068     <tr>
2069     <td>user1</td>
2070     <td>USERNAME</td>
2071     <td></td>
2072     <td></td>
2073     </tr>
2074     <tr>
2075     <td colspan="4">
2076     </td>
2077     </tr>
2078     <tr>
2079     <td>user2</td>
2080     <td>USERNAME</td>
2081     <td></td>
2082     <td></td>
2083     </tr>
2084     <tr>
2085     <td colspan="4">
2086     </td>
2087     </tr>
2088     <tr>
2089     <td>message</td>
2090     <td>STRING</td>
2091     <td></td>
2092     <td></td>
2093     </tr>
2094     <tr>
2095     <td colspan="4">
2096     </td>
2097     </tr>
2098     </table>
2099    
2100     <h4>MESSAGE stats</h4>
2101     NUMERIC TYPE (hex): 0015 RECV<table border="1">
2102     <tr>
2103     <th>NAME</th>
2104     <th>TYPE</th>
2105     <th>DEFAULT</th>
2106     <th>GUARD</th>
2107     </tr>
2108     <tr>
2109     <td colspan="4">
2110     </td>
2111     </tr>
2112     <tr>
2113     <td>ver_major</td>
2114     <td>I16</td>
2115     <td></td>
2116     <td></td>
2117     </tr>
2118     <tr>
2119     <td colspan="4">
2120     </td>
2121     </tr>
2122     <tr>
2123     <td>ver_minor</td>
2124     <td>I16</td>
2125     <td></td>
2126     <td></td>
2127     </tr>
2128     <tr>
2129     <td colspan="4">
2130     </td>
2131     </tr>
2132     <tr>
2133     <td>ver_micro</td>
2134     <td>I16</td>
2135     <td></td>
2136     <td></td>
2137     </tr>
2138     <tr>
2139     <td colspan="4">
2140     </td>
2141     </tr>
2142     <tr>
2143     <td>boot_time</td>
2144 pcg 1.2 <td>I64</td>
2145 pcg 1.1 <td></td>
2146     <td></td>
2147     </tr>
2148     <tr>
2149     <td colspan="4">
2150     </td>
2151     </tr>
2152     <tr>
2153     <td>users_cur</td>
2154     <td>I32</td>
2155     <td></td>
2156     <td></td>
2157     </tr>
2158     <tr>
2159     <td colspan="4">
2160     </td>
2161     </tr>
2162     <tr>
2163     <td>users_max</td>
2164     <td>I32</td>
2165     <td></td>
2166     <td></td>
2167     </tr>
2168     <tr>
2169     <td colspan="4">
2170     </td>
2171     </tr>
2172     <tr>
2173     <td>users_lim</td>
2174     <td>I32</td>
2175     <td></td>
2176     <td></td>
2177     </tr>
2178     <tr>
2179     <td colspan="4">
2180     </td>
2181     </tr>
2182     <tr>
2183     <td>accts_cur</td>
2184     <td>I32</td>
2185     <td></td>
2186     <td></td>
2187     </tr>
2188     <tr>
2189     <td colspan="4">
2190     </td>
2191     </tr>
2192     <tr>
2193     <td>accts_max</td>
2194     <td>I32</td>
2195     <td></td>
2196     <td></td>
2197     </tr>
2198     <tr>
2199     <td colspan="4">
2200     </td>
2201     </tr>
2202     <tr>
2203     <td>unknown1</td>
2204     <td>I32</td>
2205     <td></td>
2206     <td></td>
2207     </tr>
2208     <tr>
2209     <td colspan="4">
2210     </td>
2211     </tr>
2212     <tr>
2213     <td>work_max</td>
2214     <td>I32</td>
2215     <td></td>
2216     <td></td>
2217     </tr>
2218     <tr>
2219     <td colspan="4">
2220     </td>
2221     </tr>
2222     <tr>
2223     <td>rooms_cur</td>
2224     <td>I32</td>
2225     <td></td>
2226     <td></td>
2227     </tr>
2228     <tr>
2229     <td colspan="4">
2230     </td>
2231     </tr>
2232     <tr>
2233     <td>rooms_max</td>
2234     <td>I32</td>
2235     <td></td>
2236     <td></td>
2237     </tr>
2238     <tr>
2239     <td colspan="4">
2240     </td>
2241     </tr>
2242     <tr>
2243     <td>rooms_lim</td>
2244     <td>I32</td>
2245     <td></td>
2246     <td></td>
2247     </tr>
2248     <tr>
2249     <td colspan="4">
2250     </td>
2251     </tr>
2252     <tr>
2253     <td>games_cur</td>
2254     <td>I32</td>
2255     <td></td>
2256     <td></td>
2257     </tr>
2258     <tr>
2259     <td colspan="4">
2260     </td>
2261     </tr>
2262     <tr>
2263     <td>games_max</td>
2264     <td>I32</td>
2265     <td></td>
2266     <td></td>
2267     </tr>
2268     <tr>
2269     <td colspan="4">
2270     </td>
2271     </tr>
2272     <tr>
2273     <td>games_lim</td>
2274     <td>I32</td>
2275     <td></td>
2276     <td></td>
2277     </tr>
2278     <tr>
2279     <td colspan="4">
2280     </td>
2281     </tr>
2282     <tr>
2283     <td>results_cur</td>
2284     <td>I32</td>
2285     <td></td>
2286     <td></td>
2287     </tr>
2288     <tr>
2289     <td colspan="4">
2290     </td>
2291     </tr>
2292     <tr>
2293     <td>results_max</td>
2294     <td>I32</td>
2295     <td></td>
2296     <td></td>
2297     </tr>
2298     <tr>
2299     <td colspan="4">
2300     </td>
2301     </tr>
2302     <tr>
2303     <td>unknown2</td>
2304     <td>I32</td>
2305     <td></td>
2306     <td></td>
2307     </tr>
2308     <tr>
2309     <td colspan="4">
2310     </td>
2311     </tr>
2312     <tr>
2313     <td>params_cur</td>
2314     <td>I32</td>
2315     <td></td>
2316     <td></td>
2317     </tr>
2318     <tr>
2319     <td colspan="4">
2320     </td>
2321     </tr>
2322     <tr>
2323     <td>params_max</td>
2324     <td>I32</td>
2325     <td></td>
2326     <td></td>
2327     </tr>
2328     <tr>
2329     <td colspan="4">
2330     </td>
2331     </tr>
2332     <tr>
2333     <td>bytes_in</td>
2334 pcg 1.2 <td>I64</td>
2335 pcg 1.1 <td></td>
2336     <td></td>
2337     </tr>
2338     <tr>
2339     <td colspan="4">
2340     </td>
2341     </tr>
2342     <tr>
2343     <td>packets_in</td>
2344 pcg 1.2 <td>I64</td>
2345 pcg 1.1 <td></td>
2346     <td></td>
2347     </tr>
2348     <tr>
2349     <td colspan="4">
2350     </td>
2351     </tr>
2352     <tr>
2353     <td>bytes_out</td>
2354 pcg 1.2 <td>I64</td>
2355 pcg 1.1 <td></td>
2356     <td></td>
2357     </tr>
2358     <tr>
2359     <td colspan="4">
2360     </td>
2361     </tr>
2362     <tr>
2363     <td>packets_out</td>
2364 pcg 1.2 <td>I64</td>
2365 pcg 1.1 <td></td>
2366     <td></td>
2367     </tr>
2368     <tr>
2369     <td colspan="4">)
2370     </td>
2371     </tr>
2372     </table>
2373    
2374     <h4>MESSAGE idle_warn</h4>
2375     NUMERIC TYPE (hex): 0016 RECV<table border="1">
2376     <tr>
2377     <th>NAME</th>
2378     <th>TYPE</th>
2379     <th>DEFAULT</th>
2380     <th>GUARD</th>
2381     </tr>
2382     <tr>
2383     <td colspan="4">
2384     idle warning, autologout soon (10 minutes...)
2385     </td>
2386     </tr>
2387     </table>
2388    
2389     <h4>MESSAGE timewarning_default</h4>
2390     NUMERIC TYPE (hex): 001b RECV<table border="1">
2391     <tr>
2392     <th>NAME</th>
2393     <th>TYPE</th>
2394     <th>DEFAULT</th>
2395     <th>GUARD</th>
2396     </tr>
2397     <tr>
2398     <td colspan="4">
2399     WILD guess
2400     </td>
2401     </tr>
2402     <tr>
2403     <td>channel</td>
2404     <td>I16</td>
2405     <td></td>
2406     <td></td>
2407     </tr>
2408     <tr>
2409     <td colspan="4">
2410     </td>
2411     </tr>
2412     <tr>
2413     <td>time</td>
2414     <td>I16</td>
2415     <td></td>
2416     <td></td>
2417     </tr>
2418     <tr>
2419     <td colspan="4">
2420     </td>
2421     </tr>
2422     </table>
2423    
2424     <h4>MESSAGE idle_err</h4>
2425     NUMERIC TYPE (hex): 001c RECV<table border="1">
2426     <tr>
2427     <th>NAME</th>
2428     <th>TYPE</th>
2429     <th>DEFAULT</th>
2430     <th>GUARD</th>
2431     </tr>
2432     <tr>
2433     <td colspan="4">
2434     autologout
2435     </td>
2436     </tr>
2437     </table>
2438    
2439     <h4>MESSAGE ping</h4>
2440     NUMERIC TYPE (hex): 001d RECV<table border="1">
2441     <tr>
2442     <th>NAME</th>
2443     <th>TYPE</th>
2444     <th>DEFAULT</th>
2445     <th>GUARD</th>
2446     </tr>
2447     <tr>
2448     <td colspan="4">
2449     </td>
2450     </tr>
2451     </table>
2452    
2453     <h4>MESSAGE userpic</h4>
2454     NUMERIC TYPE (hex): 0021 RECV<table border="1">
2455     <tr>
2456     <th>NAME</th>
2457     <th>TYPE</th>
2458     <th>DEFAULT</th>
2459     <th>GUARD</th>
2460     </tr>
2461     <tr>
2462     <td colspan="4">
2463     </td>
2464     </tr>
2465     <tr>
2466     <td>name</td>
2467     <td>USERNAME</td>
2468     <td></td>
2469     <td></td>
2470     </tr>
2471     <tr>
2472     <td colspan="4">
2473     Reply to pic_req, contains an image in jpeg format.
2474     </td>
2475     </tr>
2476     <tr>
2477     <td>data</td>
2478     <td>DATA</td>
2479     <td></td>
2480     <td></td>
2481     </tr>
2482     <tr>
2483     <td colspan="4">
2484     </td>
2485     </tr>
2486     </table>
2487    
2488     <h4>MESSAGE gnotice</h4>
2489     NUMERIC TYPE (hex): 0100 RECV<table border="1">
2490     <tr>
2491     <th>NAME</th>
2492     <th>TYPE</th>
2493     <th>DEFAULT</th>
2494     <th>GUARD</th>
2495     </tr>
2496     <tr>
2497     <td colspan="4">
2498     global notice, sent to everybody
2499     </td>
2500     </tr>
2501     <tr>
2502     <td>notice</td>
2503     <td>STRING</td>
2504     <td></td>
2505     <td></td>
2506     </tr>
2507     <tr>
2508     <td colspan="4">
2509     </td>
2510     </tr>
2511     </table>
2512    
2513    
2514     <h4>MESSAGE priv_room</h4>
2515     NUMERIC TYPE (hex): 0310 RECV<table border="1">
2516     <tr>
2517     <th>NAME</th>
2518     <th>TYPE</th>
2519     <th>DEFAULT</th>
2520     <th>GUARD</th>
2521     </tr>
2522     <tr>
2523     <td colspan="4">
2524     "permission denied" when joining a room
2525     </td>
2526     </tr>
2527     <tr>
2528     <td>name</td>
2529     <td>STRING</td>
2530     <td></td>
2531     <td></td>
2532     </tr>
2533     <tr>
2534     <td colspan="4">
2535     </td>
2536     </tr>
2537     </table>
2538    
2539     <h4>MESSAGE upd_rooms</h4>
2540     NUMERIC TYPE (hex): 0318 RECV<table border="1">
2541     <tr>
2542     <th>NAME</th>
2543     <th>TYPE</th>
2544     <th>DEFAULT</th>
2545     <th>GUARD</th>
2546     </tr>
2547     <tr>
2548     <td colspan="4">
2549     </td>
2550     </tr>
2551     <tr>
2552     <td>rooms</td>
2553     <td>room</td>
2554     <td></td>
2555     <td></td>
2556     </tr>
2557     <tr>
2558     <td colspan="4">
2559     </td>
2560     </tr>
2561     </table>
2562    
2563     <h4>MESSAGE upd_game2</h4>
2564     NUMERIC TYPE (hex): 041c RECV<table border="1">
2565     <tr>
2566     <th>NAME</th>
2567     <th>TYPE</th>
2568     <th>DEFAULT</th>
2569     <th>GUARD</th>
2570     </tr>
2571     <tr>
2572     <td colspan="4">
2573     </td>
2574     </tr>
2575     <tr>
2576     <td>channel_junk</td>
2577     <td>I16</td>
2578     <td></td>
2579     <td></td>
2580     </tr>
2581     <tr>
2582     <td colspan="4">
2583     </td>
2584     </tr>
2585     <tr>
2586     <td>game</td>
2587     <td>game</td>
2588     <td></td>
2589     <td></td>
2590     </tr>
2591     <tr>
2592     <td colspan="4">
2593     </td>
2594     </tr>
2595     </table>
2596    
2597     <h4>MESSAGE upd_user</h4>
2598     NUMERIC TYPE (hex): 0202 RECV<table border="1">
2599     <tr>
2600     <th>NAME</th>
2601     <th>TYPE</th>
2602     <th>DEFAULT</th>
2603     <th>GUARD</th>
2604     </tr>
2605     <tr>
2606     <td colspan="4">
2607     # loc 0" type="chat(?) loc 1 =&gt; gameinfo?, loc 2 =&gt; game result (more data)
2608     </td>
2609     </tr>
2610     <tr>
2611     <td>location</td>
2612     <td>I32</td>
2613     <td></td>
2614     <td></td>
2615     </tr>
2616     <tr>
2617     <td colspan="4">
2618     </td>
2619     </tr>
2620     <tr>
2621     <td>user</td>
2622     <td>user</td>
2623     <td></td>
2624     <td></td>
2625     </tr>
2626     <tr>
2627     <td colspan="4">
2628     </td>
2629     </tr>
2630     <tr>
2631     <td>lotsofinfo</td>
2632     <td>DATA</td>
2633     <td></td>
2634     <td>location == 2</td>
2635     </tr>
2636     <tr>
2637     <td colspan="4">
2638     </td>
2639     </tr>
2640     </table>
2641    
2642     <h3>Room messages</h3>
2643    
2644     <p>Not all room messages are for rooms only, and rooms need to parse
2645     not only these messages. Orthogonality, what for?</p>
2646    
2647     <h4>MESSAGE join_room</h4>
2648     NUMERIC TYPE (hex): 4300 RECV<table border="1">
2649     <tr>
2650     <th>NAME</th>
2651     <th>TYPE</th>
2652     <th>DEFAULT</th>
2653     <th>GUARD</th>
2654     </tr>
2655     <tr>
2656     <td colspan="4">
2657     </td>
2658     </tr>
2659     <tr>
2660     <td>channel</td>
2661     <td>I16</td>
2662     <td></td>
2663     <td></td>
2664     </tr>
2665     <tr>
2666     <td colspan="4">
2667     </td>
2668     </tr>
2669     <tr>
2670     <td>users</td>
2671     <td>user</td>
2672     <td></td>
2673     <td></td>
2674     </tr>
2675     <tr>
2676     <td colspan="4">
2677     </td>
2678     </tr>
2679     </table>
2680    
2681     <h4>MESSAGE msg_room</h4>
2682     NUMERIC TYPE (hex): 4301 RECV<table border="1">
2683     <tr>
2684     <th>NAME</th>
2685     <th>TYPE</th>
2686     <th>DEFAULT</th>
2687     <th>GUARD</th>
2688     </tr>
2689     <tr>
2690     <td colspan="4">
2691     </td>
2692     </tr>
2693     <tr>
2694     <td>channel</td>
2695     <td>I16</td>
2696     <td></td>
2697     <td></td>
2698     </tr>
2699     <tr>
2700     <td colspan="4">
2701     </td>
2702     </tr>
2703     <tr>
2704     <td>name</td>
2705     <td>USERNAME</td>
2706     <td></td>
2707     <td></td>
2708     </tr>
2709     <tr>
2710     <td colspan="4">
2711     </td>
2712     </tr>
2713     <tr>
2714     <td>message</td>
2715     <td>STRING</td>
2716     <td></td>
2717     <td></td>
2718     </tr>
2719     <tr>
2720     <td colspan="4">
2721     </td>
2722     </tr>
2723     </table>
2724    
2725     <h4>MESSAGE part_room</h4>
2726     NUMERIC TYPE (hex): 4302 RECV<table border="1">
2727     <tr>
2728     <th>NAME</th>
2729     <th>TYPE</th>
2730     <th>DEFAULT</th>
2731     <th>GUARD</th>
2732     </tr>
2733     <tr>
2734     <td colspan="4">
2735     </td>
2736     </tr>
2737     <tr>
2738     <td>channel</td>
2739     <td>I16</td>
2740     <td></td>
2741     <td></td>
2742     </tr>
2743     <tr>
2744     <td colspan="4">
2745     </td>
2746     </tr>
2747     <tr>
2748     <td>user</td>
2749     <td>user</td>
2750     <td></td>
2751     <td></td>
2752     </tr>
2753     <tr>
2754     <td colspan="4">
2755     </td>
2756     </tr>
2757     </table>
2758    
2759     <h4>MESSAGE del_room</h4>
2760     NUMERIC TYPE (hex): 4303 RECV<table border="1">
2761     <tr>
2762     <th>NAME</th>
2763     <th>TYPE</th>
2764     <th>DEFAULT</th>
2765     <th>GUARD</th>
2766     </tr>
2767     <tr>
2768     <td colspan="4">
2769     </td>
2770     </tr>
2771     <tr>
2772     <td>channel</td>
2773     <td>I16</td>
2774     <td></td>
2775     <td></td>
2776     </tr>
2777     <tr>
2778     <td colspan="4">
2779    
2780     </td>
2781     </tr>
2782     </table>
2783    
2784     <h4>MESSAGE upd_games</h4>
2785     NUMERIC TYPE (hex): 4304 RECV<table border="1">
2786     <tr>
2787     <th>NAME</th>
2788     <th>TYPE</th>
2789     <th>DEFAULT</th>
2790     <th>GUARD</th>
2791     </tr>
2792     <tr>
2793     <td colspan="4">
2794     </td>
2795     </tr>
2796     <tr>
2797     <td>channel</td>
2798     <td>I16</td>
2799     <td></td>
2800     <td></td>
2801     </tr>
2802     <tr>
2803     <td colspan="4">
2804     </td>
2805     </tr>
2806     <tr>
2807     <td>games</td>
2808     <td>game</td>
2809     <td></td>
2810     <td></td>
2811     </tr>
2812     <tr>
2813     <td colspan="4">
2814     </td>
2815     </tr>
2816     </table>
2817    
2818     <h4>MESSAGE desc_room</h4>
2819     NUMERIC TYPE (hex): 4319 RECV<table border="1">
2820     <tr>
2821     <th>NAME</th>
2822     <th>TYPE</th>
2823     <th>DEFAULT</th>
2824     <th>GUARD</th>
2825     </tr>
2826     <tr>
2827     <td colspan="4">
2828     </td>
2829     </tr>
2830     <tr>
2831     <td>channel</td>
2832     <td>I16</td>
2833     <td></td>
2834     <td></td>
2835     </tr>
2836     <tr>
2837     <td colspan="4">
2838     </td>
2839     </tr>
2840     <tr>
2841     <td>owner</td>
2842     <td>USERNAME</td>
2843     <td></td>
2844     <td></td>
2845     </tr>
2846     <tr>
2847     <td colspan="4">
2848     </td>
2849     </tr>
2850     <tr>
2851     <td>description</td>
2852     <td>STRING</td>
2853     <td></td>
2854     <td></td>
2855     </tr>
2856     <tr>
2857     <td colspan="4">
2858     </td>
2859     </tr>
2860     </table>
2861    
2862    
2863     <h4>MESSAGE chal_defaults</h4>
2864     NUMERIC TYPE (hex): 0411 RECV<table border="1">
2865     <tr>
2866     <th>NAME</th>
2867     <th>TYPE</th>
2868     <th>DEFAULT</th>
2869     <th>GUARD</th>
2870     </tr>
2871     <tr>
2872     <td colspan="4">
2873     </td>
2874     </tr>
2875     <tr>
2876     <td>channel</td>
2877     <td>I16</td>
2878     <td></td>
2879     <td></td>
2880     </tr>
2881     <tr>
2882     <td colspan="4">
2883     </td>
2884     </tr>
2885     <tr>
2886     <td>defaults</td>
2887     <td>challenge_defaults</td>
2888     <td></td>
2889     <td></td>
2890     </tr>
2891     <tr>
2892     <td colspan="4">
2893     </td>
2894     </tr>
2895     </table>
2896    
2897     <h3>Game messages</h3>
2898    
2899     <h4>MESSAGE upd_chal</h4>
2900     NUMERIC TYPE (hex): 4400 RECV<table border="1">
2901     <tr>
2902     <th>NAME</th>
2903     <th>TYPE</th>
2904     <th>DEFAULT</th>
2905     <th>GUARD</th>
2906     </tr>
2907     <tr>
2908     <td colspan="4">
2909     Unclear.
2910     </td>
2911     </tr>
2912     <tr>
2913     <td>channel</td>
2914     <td>I16</td>
2915     <td></td>
2916     <td></td>
2917     </tr>
2918     <tr>
2919     <td colspan="4">
2920     </td>
2921     </tr>
2922     <tr>
2923     <td>challenge</td>
2924     <td>challenge</td>
2925     <td></td>
2926     <td></td>
2927     </tr>
2928     <tr>
2929     <td colspan="4">
2930     </td>
2931     </tr>
2932     </table>
2933    
2934     <h4>MESSAGE upd_game</h4>
2935     NUMERIC TYPE (hex): 4401 RECV<table border="1">
2936     <tr>
2937     <th>NAME</th>
2938     <th>TYPE</th>
2939     <th>DEFAULT</th>
2940     <th>GUARD</th>
2941     </tr>
2942     <tr>
2943     <td colspan="4">
2944     </td>
2945     </tr>
2946     <tr>
2947     <td>channel</td>
2948     <td>I16</td>
2949     <td></td>
2950     <td></td>
2951     </tr>
2952     <tr>
2953     <td colspan="4">
2954     </td>
2955     </tr>
2956     <tr>
2957     <td>game</td>
2958     <td>game</td>
2959     <td></td>
2960     <td></td>
2961     </tr>
2962     <tr>
2963     <td colspan="4">
2964     </td>
2965     </tr>
2966     </table>
2967    
2968     <h4>MESSAGE del_game</h4>
2969     NUMERIC TYPE (hex): 4402 RECV<table border="1">
2970     <tr>
2971     <th>NAME</th>
2972     <th>TYPE</th>
2973     <th>DEFAULT</th>
2974     <th>GUARD</th>
2975     </tr>
2976     <tr>
2977     <td colspan="4">
2978     </td>
2979     </tr>
2980     <tr>
2981     <td>channel</td>
2982     <td>I16</td>
2983     <td></td>
2984     <td></td>
2985     </tr>
2986     <tr>
2987     <td colspan="4">
2988     </td>
2989     </tr>
2990     </table>
2991    
2992     <h4>MESSAGE upd_observers</h4>
2993     NUMERIC TYPE (hex): 4403 RECV<table border="1">
2994     <tr>
2995     <th>NAME</th>
2996     <th>TYPE</th>
2997     <th>DEFAULT</th>
2998     <th>GUARD</th>
2999     </tr>
3000     <tr>
3001     <td colspan="4">
3002     </td>
3003     </tr>
3004     <tr>
3005     <td>channel</td>
3006     <td>I16</td>
3007     <td></td>
3008     <td></td>
3009     </tr>
3010     <tr>
3011     <td colspan="4">
3012     </td>
3013     </tr>
3014     <tr>
3015     <td>users</td>
3016     <td>user</td>
3017     <td></td>
3018     <td></td>
3019     </tr>
3020     <tr>
3021     <td colspan="4">
3022     </td>
3023     </tr>
3024     </table>
3025    
3026     <h4>MESSAGE del_observer</h4>
3027     NUMERIC TYPE (hex): 4404 RECV<table border="1">
3028     <tr>
3029     <th>NAME</th>
3030     <th>TYPE</th>
3031     <th>DEFAULT</th>
3032     <th>GUARD</th>
3033     </tr>
3034     <tr>
3035     <td colspan="4">
3036     </td>
3037     </tr>
3038     <tr>
3039     <td>channel</td>
3040     <td>I16</td>
3041     <td></td>
3042     <td></td>
3043     </tr>
3044     <tr>
3045     <td colspan="4">
3046     </td>
3047     </tr>
3048     <tr>
3049     <td>name</td>
3050     <td>USERNAME</td>
3051     <td></td>
3052     <td></td>
3053     </tr>
3054     <tr>
3055     <td colspan="4">
3056     </td>
3057     </tr>
3058     </table>
3059    
3060     <h4>MESSAGE set_tree</h4>
3061     NUMERIC TYPE (hex): 4405 RECV<table border="1">
3062     <tr>
3063     <th>NAME</th>
3064     <th>TYPE</th>
3065     <th>DEFAULT</th>
3066     <th>GUARD</th>
3067     </tr>
3068     <tr>
3069     <td colspan="4">
3070     </td>
3071     </tr>
3072     <tr>
3073     <td>channel</td>
3074     <td>I16</td>
3075     <td></td>
3076     <td></td>
3077     </tr>
3078     <tr>
3079     <td colspan="4">
3080     </td>
3081     </tr>
3082     <tr>
3083     <td>tree</td>
3084     <td>TREE</td>
3085     <td></td>
3086     <td></td>
3087     </tr>
3088     <tr>
3089     <td colspan="4">
3090     </td>
3091     </tr>
3092     </table>
3093    
3094     <h4>MESSAGE upd_tree</h4>
3095     NUMERIC TYPE (hex): 4406 RECV<table border="1">
3096     <tr>
3097     <th>NAME</th>
3098     <th>TYPE</th>
3099     <th>DEFAULT</th>
3100     <th>GUARD</th>
3101     </tr>
3102     <tr>
3103     <td colspan="4">
3104     </td>
3105     </tr>
3106     <tr>
3107     <td>channel</td>
3108     <td>I16</td>
3109     <td></td>
3110     <td></td>
3111     </tr>
3112     <tr>
3113     <td colspan="4">
3114     </td>
3115     </tr>
3116     <tr>
3117     <td>tree</td>
3118     <td>TREE</td>
3119     <td></td>
3120     <td></td>
3121     </tr>
3122     <tr>
3123     <td colspan="4">
3124     </td>
3125     </tr>
3126     </table>
3127    
3128     <h4>MESSAGE set_node</h4>
3129     NUMERIC TYPE (hex): 4407 RECV<table border="1">
3130     <tr>
3131     <th>NAME</th>
3132     <th>TYPE</th>
3133     <th>DEFAULT</th>
3134     <th>GUARD</th>
3135     </tr>
3136     <tr>
3137     <td colspan="4">
3138     </td>
3139     </tr>
3140     <tr>
3141     <td>channel</td>
3142     <td>I16</td>
3143     <td></td>
3144     <td></td>
3145     </tr>
3146     <tr>
3147     <td colspan="4">
3148     </td>
3149     </tr>
3150     <tr>
3151     <td>node</td>
3152     <td>I32</td>
3153     <td></td>
3154     <td></td>
3155     </tr>
3156     <tr>
3157     <td colspan="4">
3158     </td>
3159     </tr>
3160     </table>
3161    
3162     <h4>MESSAGE superko</h4>
3163     NUMERIC TYPE (hex): 4409 RECV<table border="1">
3164     <tr>
3165     <th>NAME</th>
3166     <th>TYPE</th>
3167     <th>DEFAULT</th>
3168     <th>GUARD</th>
3169     </tr>
3170     <tr>
3171     <td colspan="4">
3172     Superko-warning.
3173     </td>
3174     </tr>
3175     <tr>
3176     <td>channel</td>
3177     <td>I16</td>
3178     <td></td>
3179     <td></td>
3180     </tr>
3181     <tr>
3182     <td colspan="4">
3183     </td>
3184     </tr>
3185     </table>
3186    
3187     <h4>MESSAGE final_result</h4>
3188     NUMERIC TYPE (hex): 440b RECV<table border="1">
3189     <tr>
3190     <th>NAME</th>
3191     <th>TYPE</th>
3192     <th>DEFAULT</th>
3193     <th>GUARD</th>
3194     </tr>
3195     <tr>
3196     <td colspan="4">
3197     </td>
3198     </tr>
3199     <tr>
3200     <td>channel</td>
3201     <td>I16</td>
3202     <td></td>
3203     <td></td>
3204     </tr>
3205     <tr>
3206     <td colspan="4">
3207     </td>
3208     </tr>
3209     <tr>
3210     <td>blackscore</td>
3211     <td>score</td>
3212     <td></td>
3213     <td></td>
3214     </tr>
3215     <tr>
3216     <td colspan="4">
3217     </td>
3218     </tr>
3219     <tr>
3220     <td>whitescore</td>
3221     <td>score</td>
3222     <td></td>
3223     <td></td>
3224     </tr>
3225     <tr>
3226     <td colspan="4">
3227     </td>
3228     </tr>
3229     </table>
3230    
3231     <h4>MESSAGE req_undo</h4>
3232     NUMERIC TYPE (hex): 440e RECV<table border="1">
3233     <tr>
3234     <th>NAME</th>
3235     <th>TYPE</th>
3236     <th>DEFAULT</th>
3237     <th>GUARD</th>
3238     </tr>
3239     <tr>
3240     <td colspan="4">
3241     </td>
3242     </tr>
3243     <tr>
3244     <td>channel</td>
3245     <td>I16</td>
3246     <td></td>
3247     <td></td>
3248     </tr>
3249     <tr>
3250     <td colspan="4">
3251    
3252     </td>
3253     </tr>
3254     </table>
3255    
3256     <h4>MESSAGE resign_game</h4>
3257     NUMERIC TYPE (hex): 4410 RECV<table border="1">
3258     <tr>
3259     <th>NAME</th>
3260     <th>TYPE</th>
3261     <th>DEFAULT</th>
3262     <th>GUARD</th>
3263     </tr>
3264     <tr>
3265     <td colspan="4">
3266     </td>
3267     </tr>
3268     <tr>
3269     <td>channel</td>
3270     <td>I16</td>
3271     <td></td>
3272     <td></td>
3273     </tr>
3274     <tr>
3275     <td colspan="4">
3276     </td>
3277     </tr>
3278     <tr>
3279     <td>player</td>
3280     <td>I8</td>
3281     <td></td>
3282     <td></td>
3283     </tr>
3284     <tr>
3285     <td colspan="4">
3286     </td>
3287     </tr>
3288     </table>
3289    
3290     <h4>MESSAGE set_teacher</h4>
3291     NUMERIC TYPE (hex): 441a RECV<table border="1">
3292     <tr>
3293     <th>NAME</th>
3294     <th>TYPE</th>
3295     <th>DEFAULT</th>
3296     <th>GUARD</th>
3297     </tr>
3298     <tr>
3299     <td colspan="4">
3300     </td>
3301     </tr>
3302     <tr>
3303     <td>channel</td>
3304     <td>I16</td>
3305     <td></td>
3306     <td></td>
3307     </tr>
3308     <tr>
3309     <td colspan="4">
3310     </td>
3311     </tr>
3312     <tr>
3313     <td>name</td>
3314     <td>USERNAME</td>
3315     <td></td>
3316     <td></td>
3317     </tr>
3318     <tr>
3319     <td colspan="4">
3320     </td>
3321     </tr>
3322     </table>
3323    
3324     <h4>MESSAGE owner_left</h4>
3325     NUMERIC TYPE (hex): 441d RECV<table border="1">
3326     <tr>
3327     <th>NAME</th>
3328     <th>TYPE</th>
3329     <th>DEFAULT</th>
3330     <th>GUARD</th>
3331     </tr>
3332     <tr>
3333     <td colspan="4">
3334     Unclear.
3335     </td>
3336     </tr>
3337     <tr>
3338     <td>channel</td>
3339     <td>I16</td>
3340     <td></td>
3341     <td></td>
3342     </tr>
3343     <tr>
3344     <td colspan="4">
3345     </td>
3346     </tr>
3347     </table>
3348    
3349     <h4>MESSAGE teacher_left</h4>
3350     NUMERIC TYPE (hex): 441e RECV<table border="1">
3351     <tr>
3352     <th>NAME</th>
3353     <th>TYPE</th>
3354     <th>DEFAULT</th>
3355     <th>GUARD</th>
3356     </tr>
3357     <tr>
3358     <td colspan="4">
3359     Unclear.
3360     </td>
3361     </tr>
3362     <tr>
3363     <td>channel</td>
3364     <td>I16</td>
3365     <td></td>
3366     <td></td>
3367     </tr>
3368     <tr>
3369     <td colspan="4">
3370     </td>
3371     </tr>
3372     </table>
3373    
3374     <h4>MESSAGE unknown4422</h4>
3375     NUMERIC TYPE (hex): 4422 RECV<table border="1">
3376     <tr>
3377     <th>NAME</th>
3378     <th>TYPE</th>
3379     <th>DEFAULT</th>
3380     <th>GUARD</th>
3381     </tr>
3382     <tr>
3383     <td colspan="4">
3384     change teacher? something to do with editing?
3385     </td>
3386     </tr>
3387     <tr>
3388     <td>channel</td>
3389     <td>I16</td>
3390     <td></td>
3391     <td></td>
3392     </tr>
3393     <tr>
3394     <td colspan="4">
3395     </td>
3396     </tr>
3397     <tr>
3398     <td>name1</td>
3399     <td>USERNAME</td>
3400     <td></td>
3401     <td></td>
3402     </tr>
3403     <tr>
3404     <td colspan="4">
3405     </td>
3406     </tr>
3407     <tr>
3408     <td>name2</td>
3409     <td>USERNAME</td>
3410     <td></td>
3411     <td></td>
3412     </tr>
3413     <tr>
3414     <td colspan="4">
3415     </td>
3416     </tr>
3417     </table>
3418    
3419     <h4>MESSAGE req_result</h4>
3420     NUMERIC TYPE (hex): 4433 RECV<table border="1">
3421     <tr>
3422     <th>NAME</th>
3423     <th>TYPE</th>
3424     <th>DEFAULT</th>
3425     <th>GUARD</th>
3426     </tr>
3427     <tr>
3428     <td colspan="4">
3429     Unclear.
3430     </td>
3431     </tr>
3432     <tr>
3433     <td>channel</td>
3434     <td>I16</td>
3435     <td></td>
3436     <td></td>
3437     </tr>
3438     <tr>
3439     <td colspan="4">
3440     # # recv_result(?)
3441     </td>
3442     </tr>
3443     </table>
3444    
3445     <h4>MESSAGE unknown4434</h4>
3446     NUMERIC TYPE (hex): 4434 RECV<table border="1">
3447     <tr>
3448     <th>NAME</th>
3449     <th>TYPE</th>
3450     <th>DEFAULT</th>
3451     <th>GUARD</th>
3452     </tr>
3453     <tr>
3454     <td colspan="4">
3455     </td>
3456     </tr>
3457     <tr>
3458     <td>channel</td>
3459     <td>I16</td>
3460     <td></td>
3461     <td></td>
3462     </tr>
3463     <tr>
3464     <td colspan="4">
3465     </td>
3466     </tr>
3467     <tr>
3468     <td>b1</td>
3469     <td>I8</td>
3470     <td></td>
3471     <td></td>
3472     </tr>
3473     <tr>
3474     <td colspan="4">
3475     ?? !demonstration game??
3476     </td>
3477     </tr>
3478     </table>
3479    
3480     </body>
3481     </html>