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