ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/doc/protocol.xml
(Generate patch)

Comparing kgsueme/doc/protocol.xml (file contents):
Revision 1.30 by pcg, Mon Jul 21 01:41:01 2003 UTC vs.
Revision 1.31 by pcg, Mon Jul 21 13:39:03 2003 UTC

20 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21--> 21-->
22</head> 22</head>
23<body> 23<body>
24 24
25<h1>$Revision: 1.30 $</h1> 25<h1>$Revision: 1.31 $</h1>
26 26
27<h1>KGS Protocol Description</h1> 27<h1>KGS Protocol Description</h1>
28 28
29 <p>This XML document describes the KGS protocol. It is also used 29 <p>This XML document describes the KGS protocol. It is also used
30 to automatically generate the perl parser for all the messages and 30 to automatically generate the perl parser for all the messages and
241 241
242<h2>Structs used in send messages</h2> 242<h2>Structs used in send messages</h2>
243 243
244<h2>Send messages</h2> 244<h2>Send messages</h2>
245 245
246 <message type="0000" name="login" dir="send"> 246 <message type="0000" name="login" src="client">
247 247
248 <p>Sent to login, usually the first message sent. The password needs to be set when the 248 <p>Sent to login, usually the first message sent. The password needs to be set when the
249 guest flag is true. 249 guest flag is true.
250 Possible replies: <ref reply="login"/>. Followed by: <ref reply="timewarning_default"/> <ref reply="chal_defaults"/> 250 Possible replies: <ref reply="login"/>. Followed by: <ref reply="timewarning_default"/> <ref reply="chal_defaults"/>
251 </p> 251 </p>
262 The "default" is the java vm version, not exactly he client version. However, 262 The "default" is the java vm version, not exactly he client version. However,
263 you should always send a text like "Jonathan's C client bersion 0.6" or somesuch, 263 you should always send a text like "Jonathan's C client bersion 0.6" or somesuch,
264 so the server can, if necessary, block broken clients or client versions. 264 so the server can, if necessary, block broken clients or client versions.
265 </message> 265 </message>
266 266
267 <message type="0007" name="req_userinfo" dir="send"> 267 <message type="0007" name="req_userinfo" src="client">
268 <p>Request info about a certain user. Possible reply: <ref reply="userinfo"/></p> 268 <p>Request info about a certain user. Possible reply: <ref reply="userinfo"/></p>
269 <member name="name" type="username"/> 269 <member name="name" type="username"/>
270 </message> 270 </message>
271 271
272 <message type="0007" name="update_userinfo" dir="send"> 272 <message type="0007" name="update_userinfo" src="client">
273 <p>Update user info. Message structure is very similar 273 <p>Update user info. Message structure is very similar
274 to <ref ref="userinfo"/>.</p> 274 to <ref ref="userinfo"/>.</p>
275 <member name="setpass" type="flag"/> 275 <member name="setpass" type="flag"/>
276 Should the password be updated? 276 Should the password be updated?
277 <member name="password" type="password" default="0"/> 277 <member name="password" type="password" default="0"/>
281 <member name="homepage" type="url"/> 281 <member name="homepage" type="url"/>
282 <member name="_unused" type="U64" default="0"/> 282 <member name="_unused" type="U64" default="0"/>
283 <member name="_unused" type="U64" default="0"/> 283 <member name="_unused" type="U64" default="0"/>
284 </message> 284 </message>
285 285
286 <message type="0014" name="req_stats" dir="send"> 286 <message type="0014" name="req_stats" src="client">
287 <p>Request server statistics. Replied with <ref reply="stats"/></p> 287 <p>Request server statistics. Replied with <ref reply="stats"/></p>
288 </message> 288 </message>
289 289
290 <message type="0016" name="idle_reset" dir="send"> 290 <message type="0016" name="idle_reset" src="client">
291 <p>Send in response to <ref reply="idle_warn"/> to keep the server from disconnecting.</p> 291 <p>Send in response to <ref reply="idle_warn"/> to keep the server from disconnecting.</p>
292 </message> 292 </message>
293 293
294 <message type="001d" name="ping" dir="send"> 294 <message type="001d" name="ping" src="client">
295 <p>Wild guess, I send it in <ref ref="idle_warn"/>.</p> 295 <p>Wild guess, I send it in <ref ref="idle_warn"/>.</p>
296 </message> 296 </message>
297 297
298 <message type="001e" name="req_usergraph" dir="send"> 298 <message type="001e" name="req_usergraph" src="client">
299 <p>Request user graph data, replied with <ref reply="usergraph"/>.</p> 299 <p>Request user graph data, replied with <ref reply="usergraph"/>.</p>
300 <member name="name" type="username"/> 300 <member name="name" type="username"/>
301 </message> 301 </message>
302 302
303 <message type="001f" name="fetch_memos" dir="send"> 303 <message type="001f" name="fetch_memos" src="client">
304 <p>Unclear. Fetch all outstanding memos? Replied with <ref reply="memo"/></p> 304 <p>Unclear. Fetch all outstanding memos? Replied with <ref reply="memo"/></p>
305 </message> 305 </message>
306 306
307 <message type="0021" name="req_pic" dir="send"> 307 <message type="0021" name="req_pic" src="client">
308 <p>Request a user picture from the server. Results in a <ref reply="userpic"/> 308 <p>Request a user picture from the server. Results in a <ref reply="userpic"/>
309 or a timeout.</p> 309 or a timeout.</p>
310 <member name="name" type="username"/> 310 <member name="name" type="username"/>
311 </message> 311 </message>
312 312
313 <message type="0021" name="upload_pic" dir="send"> 313 <message type="0021" name="upload_pic" src="client">
314 Same code as pic_req, but with an additional data section that 314 Same code as pic_req, but with an additional data section that
315 must contain a JPEG image that is &lt;=7KB. It must have 141×200 pixels. 315 must contain a JPEG image that is &lt;=7KB. It must have 141×200 pixels.
316 <member name="name" type="username"/> 316 <member name="name" type="username"/>
317 <member name="data" type="DATA"/> 317 <member name="data" type="DATA"/>
318 </message> 318 </message>
319 319
320 <message type="0023" name="send_memo" dir="send"> 320 <message type="0023" name="send_memo" src="client">
321 <member name="name" type="username"/> 321 <member name="name" type="username"/>
322 <member name="msg" type="STRING"/> 322 <member name="msg" type="STRING"/>
323 </message> 323 </message>
324 324
325 <message type="0100" name="gnotice" dir="send"> 325 <message type="0100" name="gnotice" src="client">
326 <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results 326 <p>Send a global message. Maybe. Never tried, for obvious reasons :/. Results
327 in a <ref reply="gnotice"/> sent to all users.</p> 327 in a <ref reply="gnotice"/> sent to all users.</p>
328 <member name="notice" type="STRING"/> 328 <member name="notice" type="STRING"/>
329 </message> 329 </message>
330 330
331 <message type="0318" name="list_rooms" dir="send"> 331 <message type="0318" name="list_rooms" src="client">
332 <p>List the rooms in a specific group/category. Results in a <ref reply="upd_rooms"/> message.</p> 332 <p>List the rooms in a specific group/category. Results in a <ref reply="upd_rooms"/> message.</p>
333 <member name="group" type="U8"/> 333 <member name="group" type="U8"/>
334 </message> 334 </message>
335 335
336 <message type="031a" name="new_room" dir="send"> 336 <message type="031a" name="new_room" src="client">
337 Create a new room. Not verified. 337 Create a new room. Not verified.
338 <member name="name" type="username"/> 338 <member name="name" type="username"/>
339 <member name="i1" type="U32" default="0"/> 339 <member name="i1" type="U32" default="0"/>
340 <member name="b1" type="U8" default="0"/> 340 <member name="b1" type="U8" default="0"/>
341 <member name="b2" type="U8" default="255"/> 341 <member name="b2" type="U8" default="255"/>
345 <member name="description" type="STRING"/> 345 <member name="description" type="STRING"/>
346 <member name="flags" type="U8"/> 346 <member name="flags" type="U8"/>
347 0x10 .. private room etc.. see code 347 0x10 .. private room etc.. see code
348 </message> 348 </message>
349 349
350 <message type="0413" name="req_game_record" dir="send"> 350 <message type="0413" name="req_game_record" src="client">
351 <p>Requests part of the users game record to be sent. Results in a <ref reply="game_record"/> or maybe a timeout.</p> 351 <p>Requests part of the users game record to be sent. Results in a <ref reply="game_record"/> or maybe a timeout.</p>
352 <member name="name" type="username"/> 352 <member name="name" type="username"/>
353 <member name="timestamp" type="timestamp"/> 353 <member name="timestamp" type="timestamp"/>
354 If zero, start at the newest games, else only send games 354 If zero, start at the newest games, else only send games
355 before the given timestap. 355 before the given timestap.
356 </message> 356 </message>
357 357
358 <message type="4300" name="join_room" dir="send"> 358 <message type="4300" name="join_room" src="client">
359 <p>Joins the given room. <ref reply="join_room"/> messages for yourself 359 <p>Joins the given room. <ref reply="join_room"/> messages for yourself
360 and all users in that room, as well as the initial gamelist, are 360 and all users in that room, as well as the initial gamelist, are
361 send if the room exists. If not, timeout...</p> 361 send if the room exists. If not, timeout...</p>
362 <member name="channel" type="U16"/> 362 <member name="channel" type="U16"/>
363 <member name="user" type="user"/> 363 <member name="user" type="user"/>
364 </message> 364 </message>
365 365
366 <message type="4301" name="msg_room" dir="send"> 366 <message type="4301" name="msg_room" src="client">
367 Send a message to the room. 367 Send a message to the room.
368 <member name="channel" type="U16"/> 368 <member name="channel" type="U16"/>
369 <member name="name" type="username"/> 369 <member name="name" type="username"/>
370 Must be the login-name of the user. 370 Must be the login-name of the user.
371 <member name="message" type="STRING"/> 371 <member name="message" type="STRING"/>
372 </message> 372 </message>
373 373
374 <message type="4302" name="part_room" dir="send"> 374 <message type="4302" name="part_room" src="client">
375 Remove yourself (or maybe others as admin) from a room. 375 Remove yourself (or maybe others as admin) from a room.
376 <member name="channel" type="U16"/> 376 <member name="channel" type="U16"/>
377 <member name="name" type="username"/> 377 <member name="name" type="username"/>
378 </message> 378 </message>
379 379
380 <message type="4305" name="new_game" dir="send"> 380 <message type="4305" name="new_game" src="client">
381 Unclear. Start a new game. 381 Unclear. Start a new game.
382 <member name="channel" type="U16"/> 382 <member name="channel" type="U16"/>
383 <member name="id" type="U16"/> 383 <member name="id" type="U16"/>
384 <member name="gametype" type="U32"/> 384 <member name="gametype" type="U32"/>
385 <member name="rules" type="rules"/> 385 <member name="rules" type="rules"/>
386 <member name="notes" type="STRING"/> 386 <member name="notes" type="STRING"/>
387 </message> 387 </message>
388 388
389 <message type="430b" name="req_games" dir="send"> 389 <message type="430b" name="req_games" src="client">
390 Request to update room game list (send this once per minute to get 390 Request to update room game list (send this once per minute to get
391 updated). Results in upd_games messages. 391 updated). Results in upd_games messages.
392 <member name="channel" type="U16"/> 392 <member name="channel" type="U16"/>
393 </message> 393 </message>
394 394
395 <message type="4319" name="req_desc" dir="send"> 395 <message type="4319" name="req_desc" src="client">
396 Request room description. 396 Request room description.
397 <member name="channel" type="U16"/> 397 <member name="channel" type="U16"/>
398 </message> 398 </message>
399 399
400 <message type="4400" name="send_challenge" dir="send"> 400 <message type="4400" name="send_challenge" src="client">
401 Unclear. 401 Unclear.
402 <member name="channel" type="U16"/> 402 <member name="channel" type="U16"/>
403 <member name="black" type="username"/> 403 <member name="black" type="username"/>
404 <member name="white" type="username"/> 404 <member name="white" type="username"/>
405 More following... TREE or challenge. 405 More following... TREE or challenge.
406 </message> 406 </message>
407 407
408 <message type="4403" name="join_game" dir="send"> 408 <message type="4403" name="join_game" src="client">
409 Join a game. See join_room. 409 Join a game. See join_room.
410 <member name="channel" type="U16"/> 410 <member name="channel" type="U16"/>
411 <member name="user" type="user"/> 411 <member name="user" type="user"/>
412 </message> 412 </message>
413 413
414 <message type="4404" name="part_game" dir="send"> 414 <message type="4404" name="part_game" src="client">
415 Leave (or kick as admin?) a certain user from a game. 415 Leave (or kick as admin?) a certain user from a game.
416 <member name="channel" type="U16"/> 416 <member name="channel" type="U16"/>
417 <member name="name" type="username"/> 417 <member name="name" type="username"/>
418 </message> 418 </message>
419 419
420 <message type="4406" name="upd_tree" dir="send"> 420 <message type="4406" name="upd_tree" src="client">
421 Upload a partial game tree to the server. This is used to send moves 421 Upload a partial game tree to the server. This is used to send moves
422 and even in-game comments to the server. For the comments, the 422 and even in-game comments to the server. For the comments, the
423 server prepends the username and rank. 423 server prepends the username and rank.
424 424
425 <member name="channel" type="U16"/> 425 <member name="channel" type="U16"/>
426 <member name="tree" type="TREE"/> 426 <member name="tree" type="TREE"/>
427 </message> 427 </message>
428 428
429 <message type="4408" name="get_tree" dir="send"> 429 <message type="4408" name="get_tree" src="client">
430 Request the game tree starting at a given node. This is used 430 Request the game tree starting at a given node. This is used
431 when the server only sends a partial tree (with end code "more"). 431 when the server only sends a partial tree (with end code "more").
432 <member name="channel" type="U16"/> 432 <member name="channel" type="U16"/>
433 <member name="node" type="U32"/> 433 <member name="node" type="U32"/>
434 </message> 434 </message>
435 435
436 <message type="440c" name="claim_win" dir="send"> 436 <message type="440c" name="claim_win" src="client">
437 Unclear. 437 Unclear.
438 <member name="channel" type="U16"/> 438 <member name="channel" type="U16"/>
439 <member name="_byte" type="U8 "/> 439 <member name="_byte" type="U8 "/>
440 Player colour maybe? Unclear. 440 Player colour maybe? Unclear.
441 </message> 441 </message>
442 442
443 <message type="440d" name="add_time" dir="send"> 443 <message type="440d" name="add_time" src="client">
444 Not checked. 444 Not checked.
445 445
446 <member name="channel" type="U16"/> 446 <member name="channel" type="U16"/>
447 <member name="time" type="U32"/> 447 <member name="time" type="U32"/>
448 <member name="player" type="U8"/> 448 <member name="player" type="U8"/>
449 </message> 449 </message>
450 450
451 <message type="440f" name="grant_undo" dir="send"> 451 <message type="440f" name="grant_undo" src="client">
452 Can be send after a req_undo message was received to grant the undo. 452 Can be send after a req_undo message was received to grant the undo.
453 <member name="channel" type="U16"/> 453 <member name="channel" type="U16"/>
454 </message> 454 </message>
455 455
456 <message type="4410" name="resign_game" dir="send"> 456 <message type="4410" name="resign_game" src="client">
457 Resign the game. 457 Resign the game.
458 <member name="channel" type="U16"/> 458 <member name="channel" type="U16"/>
459 <member name="player" type="U8"/> 459 <member name="player" type="U8"/>
460 </message> 460 </message>
461 461
462 <message type="441a" name="set_teacher" dir="send"> 462 <message type="441a" name="set_teacher" src="client">
463 Change the teacher to somebody else (or possibly yourself == take it). 463 Change the teacher to somebody else (or possibly yourself == take it).
464 <member name="channel" type="U16"/> 464 <member name="channel" type="U16"/>
465 <member name="name" type="username"/> 465 <member name="name" type="username"/>
466 </message> 466 </message>
467 467
468 <message type="4422" name="add_user" dir="send"> 468 <message type="4422" name="add_user" src="client">
469 Unclear. Maybe allow users to talk? No idea, really. 469 Unclear. Maybe allow users to talk? No idea, really.
470 470
471 <member name="channel" type="U16"/> 471 <member name="channel" type="U16"/>
472 <member name="othername" type="username"/> 472 <member name="othername" type="username"/>
473 <member name="name" type="username"/>; # gives user access to the game (to what? ;) 473 <member name="name" type="username"/>; # gives user access to the game (to what? ;)
474 </message> 474 </message>
475 475
476 <message type="4423" name="set_privacy" dir="send"> 476 <message type="4423" name="set_privacy" src="client">
477 Probably sets the "quiet" flag. Not checked. 477 Probably sets the "quiet" flag. Not checked.
478 <member name="channel" type="U16"/> 478 <member name="channel" type="U16"/>
479 <member name="private" type="U8"/> 479 <member name="private" type="U8"/>
480 </message> 480 </message>
481 481
482 <message type="4429" name="reject_challenge" dir="send"> 482 <message type="4429" name="reject_challenge" src="client">
483 Reject a challenge from a given user. Not checked. 483 Reject a challenge from a given user. Not checked.
484 484
485 <member name="channel" type="U16"/> 485 <member name="channel" type="U16"/>
486 <member name="name" type="username"/> 486 <member name="name" type="username"/>
487 </message> 487 </message>
488 488
489 <message type="4433" name="req_result" dir="send"> 489 <message type="4433" name="req_result" src="client">
490 I forgot. 490 I forgot.
491 491
492 <member name="channel" type="U16"/> 492 <member name="channel" type="U16"/>
493 </message> 493 </message>
494 494
591 0x80 inprogress 591 0x80 inprogress
592 </struct> 592 </struct>
593 593
594<h2>Receive messages</h2> 594<h2>Receive messages</h2>
595 595
596 <message type="0001" name="login" dir="recv"> 596 <message type="0001" name="login" src="server">
597 <member name="result" type="CONSTANT" default='"login ok"'/> 597 <member name="result" type="CONSTANT" default='"login ok"'/>
598 <member name="success" type="CONSTANT" default="1"/> 598 <member name="success" type="CONSTANT" default="1"/>
599 </message> 599 </message>
600 600
601 <message type="0002" name="login" dir="recv"> 601 <message type="0002" name="login" src="server">
602 <member name="result" type="CONSTANT" default='"guest login ok"'/> 602 <member name="result" type="CONSTANT" default='"guest login ok"'/>
603 <member name="success" type="CONSTANT" default="1"/> 603 <member name="success" type="CONSTANT" default="1"/>
604 </message> 604 </message>
605 605
606 <message type="0003" name="login" dir="recv"> 606 <message type="0003" name="login" src="server">
607 <member name="result" type="CONSTANT" default='"login error 3"'/> 607 <member name="result" type="CONSTANT" default='"login error 3"'/>
608 ** maybe more following? ** 608 ** maybe more following? **
609 </message> 609 </message>
610 610
611 <message type="0004" name="login" dir="recv"> 611 <message type="0004" name="login" src="server">
612 <member name="result" type="CONSTANT" default='"wrong password"'/> 612 <member name="result" type="CONSTANT" default='"wrong password"'/>
613 ** maybe more following? ** 613 ** maybe more following? **
614 </message> 614 </message>
615 615
616 <message type="0005" name="login" dir="recv"> 616 <message type="0005" name="login" src="server">
617 <member name="result" type="CONSTANT" default='"user unknown"'/> 617 <member name="result" type="CONSTANT" default='"user unknown"'/>
618 ** maybe more following? ** 618 ** maybe more following? **
619 </message> 619 </message>
620 620
621 <message type="0006" name="login" dir="recv"> 621 <message type="0006" name="login" src="server">
622 <member name="result" type="CONSTANT" default='"user exists"'/> 622 <member name="result" type="CONSTANT" default='"user exists"'/>
623 ** maybe more following? ** 623 ** maybe more following? **
624 </message> 624 </message>
625 625
626 <message type="0008" name="userinfo" dir="recv"> 626 <message type="0008" name="userinfo" src="server">
627 User info. 627 User info.
628 <member name="user" type="user"/> 628 <member name="user" type="user"/>
629 <member name="_unused" type="U64"/> 629 <member name="_unused" type="U64"/>
630 <member name="realname" type="realname"/> 630 <member name="realname" type="realname"/>
631 <member name="email" type="email"/> 631 <member name="email" type="email"/>
636 <member name="lastlogin" type="timestamp"/> 636 <member name="lastlogin" type="timestamp"/>
637 When the user logged in for the last time. 637 When the user logged in for the last time.
638 <!-- maybe more? --> 638 <!-- maybe more? -->
639 </message> 639 </message>
640 640
641 <message type="0018" name="login" dir="recv"> 641 <message type="0018" name="login" src="server">
642 <member name="result" type="CONSTANT" default='"login error 18"'/> 642 <member name="result" type="CONSTANT" default='"login error 18"'/>
643 ** maybe more following? ** 643 ** maybe more following? **
644 </message> 644 </message>
645 645
646 <message type="0022" name="login" dir="recv"> 646 <message type="0022" name="login" src="server">
647 I was blocked sooo many times for developing this client that it was 647 I was blocked sooo many times for developing this client that it was
648 easy to figure out. The KGS admins sure need no extra nazi training 648 easy to figure out. The KGS admins sure need no extra nazi training
649 :( 649 :(
650 <member name="reason" type="STRING"/> 650 <member name="reason" type="STRING"/>
651 <member name="result" type="CONSTANT" default='"user or ip blocked"'/> 651 <member name="result" type="CONSTANT" default='"user or ip blocked"'/>
652 </message> 652 </message>
653 653
654 <message type="0013" name="msg_chat" dir="recv"> 654 <message type="0013" name="msg_chat" src="server">
655 <member name="user1" type="username"/> 655 <member name="user1" type="username"/>
656 <member name="user2" type="username"/> 656 <member name="user2" type="username"/>
657 <member name="message" type="STRING"/> 657 <member name="message" type="STRING"/>
658 </message> 658 </message>
659 659
660 <message type="0015" name="stats" dir="recv"> 660 <message type="0015" name="stats" src="server">
661 <member name="ver_major" type="U16"/> 661 <member name="ver_major" type="U16"/>
662 <member name="ver_minor" type="U16"/> 662 <member name="ver_minor" type="U16"/>
663 <member name="ver_micro" type="U16"/> 663 <member name="ver_micro" type="U16"/>
664 <member name="boot_time" type="timestamp"/> 664 <member name="boot_time" type="timestamp"/>
665 <member name="users_cur" type="U32"/> 665 <member name="users_cur" type="U32"/>
684 <member name="packets_in" type="U64"/> 684 <member name="packets_in" type="U64"/>
685 <member name="bytes_out" type="U64"/> 685 <member name="bytes_out" type="U64"/>
686 <member name="packets_out" type="U64"/> 686 <member name="packets_out" type="U64"/>
687 </message> 687 </message>
688 688
689 <message type="0016" name="idle_warn" dir="recv"> 689 <message type="0016" name="idle_warn" src="server">
690 idle warning, autologout soon (10 minutes...) 690 idle warning, autologout soon (10 minutes...)
691 </message> 691 </message>
692 692
693 <message type="001b" name="timewarning_default" dir="recv"> 693 <message type="001b" name="timewarning_default" src="server">
694 WILD guess 694 WILD guess
695 <member name="channel" type="U16"/> 695 <member name="channel" type="U16"/>
696 <member name="time" type="U16"/> 696 <member name="time" type="U16"/>
697 </message> 697 </message>
698 698
699 <message type="001c" name="idle_err" dir="recv"> 699 <message type="001c" name="idle_err" src="server">
700 autologout 700 autologout
701 </message> 701 </message>
702 702
703 <message type="001d" name="ping" dir="recv"> 703 <message type="001d" name="ping" src="server">
704 Sent by the server regularly, but not answering them 704 Sent by the server regularly, but not answering them
705 isn't valid. Strange form of keepalive? 705 isn't valid. Strange form of keepalive?
706 </message> 706 </message>
707 707
708 <message type="001e" name="usergraph" dir="recv"> 708 <message type="001e" name="usergraph" src="server">
709 User graph data. 709 User graph data.
710 <member name="data" type="I16" array="yes"/> 710 <member name="data" type="I16" array="yes"/>
711 If empty, no graph is available. The unit seems to 711 If empty, no graph is available. The unit seems to
712 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100. 712 be centi-kyu, with 1 dan == 0, 2 dan == 100, 1 kyu == -100.
713 There is probably one entry per day, the newest one last. 713 There is probably one entry per day, the newest one last.
714 </message> 714 </message>
715 715
716 <message type="001f" name="memo" dir="recv"> 716 <message type="001f" name="memo" src="server">
717 Unclear. "Leave Message"? 717 Unclear. "Leave Message"?
718 6 strings following. 718 6 strings following.
719 <member name="s1" type="STRING"/> 719 <member name="s1" type="STRING"/>
720 <member name="s2" type="STRING"/> 720 <member name="s2" type="STRING"/>
721 <member name="s3" type="STRING"/> 721 <member name="s3" type="STRING"/>
722 <member name="s4" type="STRING"/> 722 <member name="s4" type="STRING"/>
723 <member name="s5" type="STRING"/> 723 <member name="s5" type="STRING"/>
724 <member name="s6" type="STRING"/> 724 <member name="s6" type="STRING"/>
725 </message> 725 </message>
726 726
727 <message type="0021" name="userpic" dir="recv"> 727 <message type="0021" name="userpic" src="server">
728 <member name="name" type="username"/> 728 <member name="name" type="username"/>
729 Reply to pic_req, contains an image in jpeg format. 729 Reply to pic_req, contains an image in jpeg format.
730 <member name="data" type="DATA"/> 730 <member name="data" type="DATA"/>
731 </message> 731 </message>
732 732
733 <message type="0100" name="gnotice" dir="recv"> 733 <message type="0100" name="gnotice" src="server">
734 global notice, sent to everybody 734 global notice, sent to everybody
735 <member name="notice" type="STRING"/> 735 <member name="notice" type="STRING"/>
736 </message> 736 </message>
737 737
738 <message type="0202" name="upd_user" dir="recv"> 738 <message type="0202" name="upd_user" src="server">
739 # maybe soe notify? Totally unclear. 739 # maybe soe notify? Totally unclear.
740 # loc 0" type="chat(?) loc 1 => gameinfo?, loc 2 => game result (more data) 740 # loc 0" type="chat(?) loc 1 => gameinfo?, loc 2 => game result (more data)
741 <member name="location" type="U32"/> 741 <member name="location" type="U32"/>
742 <member name="user" type="user"/> 742 <member name="user" type="user"/>
743 <member name="lotsofinfo" type="DATA" guard-member="location" guard-cond="== 2"/> 743 <member name="lotsofinfo" type="DATA" guard-member="location" guard-cond="== 2"/>
744 </message> 744 </message>
745 745
746 <message type="0310" name="priv_room" dir="recv"> 746 <message type="0310" name="priv_room" src="server">
747 "permission denied" when joining a room 747 "permission denied" when joining a room
748 <member name="name" type="STRING"/> 748 <member name="name" type="STRING"/>
749 </message> 749 </message>
750 750
751 <message type="0318" name="upd_rooms" dir="recv"> 751 <message type="0318" name="upd_rooms" src="server">
752 <member name="rooms" type="room" array="yes"/> 752 <member name="rooms" type="room" array="yes"/>
753 </message> 753 </message>
754 754
755 <message type="0411" name="chal_defaults" dir="recv"> 755 <message type="0411" name="chal_defaults" src="server">
756 <member name="channel" type="U16"/> 756 <member name="channel" type="U16"/>
757 <member name="defaults" type="challenge_defaults"/> 757 <member name="defaults" type="challenge_defaults"/>
758 </message> 758 </message>
759 759
760 <message type="0412" name="rej_game" dir="send"> 760 <message type="0412" name="rej_game" src="server">
761 Unable to create challenge. The channel might be optional. 761 Unable to create challenge. The channel might be optional.
762 <member name="channel" type="U16"/> 762 <member name="channel" type="U16"/>
763 </message> 763 </message>
764 764
765 <message type="0414" name="game_record" dir="recv"> 765 <message type="0414" name="game_record" src="server">
766 The users game record. 766 The users game record.
767 <member name="name" type="username"/> 767 <member name="name" type="username"/>
768 <member name="more" type="flag"/> 768 <member name="more" type="flag"/>
769 Wether more games are available (must be requested manually) 769 Wether more games are available (must be requested manually)
770 <member name="games" type="game_record" array="yes"/> 770 <member name="games" type="game_record" array="yes"/>
771 </message> 771 </message>
772 772
773 <message type="041c" name="upd_game2" dir="recv"> 773 <message type="041c" name="upd_game2" src="server">
774 Unclear. 774 Unclear.
775 <member name="channel_junk" type="U16"/> 775 <member name="channel_junk" type="U16"/>
776 <member name="game" type="game"/> 776 <member name="game" type="game"/>
777 </message> 777 </message>
778 778
779<h3>Room messages</h3> 779<h3>Room messages</h3>
780 780
781 <p>Not all room messages are for rooms only, and rooms need to parse 781 <p>Not all room messages are for rooms only, and rooms need to parse
782 not only these messages. Orthogonality, what for?</p> 782 not only these messages. Orthogonality, what for?</p>
783 783
784 <message type="4300" name="join_room" dir="recv"> 784 <message type="4300" name="join_room" src="server">
785 <member name="channel" type="U16"/> 785 <member name="channel" type="U16"/>
786 <member name="users" type="user" array="yes"/> 786 <member name="users" type="user" array="yes"/>
787 </message> 787 </message>
788 788
789 <message type="4301" name="msg_room" dir="recv"> 789 <message type="4301" name="msg_room" src="server">
790 <member name="channel" type="U16"/> 790 <member name="channel" type="U16"/>
791 <member name="name" type="username"/> 791 <member name="name" type="username"/>
792 <member name="message" type="STRING"/> 792 <member name="message" type="STRING"/>
793 </message> 793 </message>
794 794
795 <message type="4302" name="part_room" dir="recv"> 795 <message type="4302" name="part_room" src="server">
796 <member name="channel" type="U16"/> 796 <member name="channel" type="U16"/>
797 <member name="user" type="user"/> 797 <member name="user" type="user"/>
798 </message> 798 </message>
799 799
800 <message type="4303" name="del_room" dir="recv"> 800 <message type="4303" name="del_room" src="server">
801 <member name="channel" type="U16"/> 801 <member name="channel" type="U16"/>
802 </message> 802 </message>
803 803
804 <message type="4304" name="upd_games" dir="recv"> 804 <message type="4304" name="upd_games" src="server">
805 <member name="channel" type="U16"/> 805 <member name="channel" type="U16"/>
806 <member name="games" type="game" array="yes"/> 806 <member name="games" type="game" array="yes"/>
807 </message> 807 </message>
808 808
809 <message type="4319" name="desc_room" dir="recv"> 809 <message type="4319" name="desc_room" src="server">
810 <member name="channel" type="U16"/> 810 <member name="channel" type="U16"/>
811 <member name="owner" type="username"/> 811 <member name="owner" type="username"/>
812 <member name="description" type="STRING"/> 812 <member name="description" type="STRING"/>
813 </message> 813 </message>
814 814
815<h3>Game messages</h3> 815<h3>Game messages</h3>
816 816
817 <message type="4400" name="upd_challenge" dir="recv"> 817 <message type="4400" name="upd_challenge" src="server">
818 Unclear. 818 Unclear.
819 <member name="channel" type="U16"/> 819 <member name="channel" type="U16"/>
820 <member name="challenge" type="challenge"/> 820 <member name="challenge" type="challenge"/>
821 </message> 821 </message>
822 822
823 <message type="4401" name="upd_game" dir="recv"> 823 <message type="4401" name="upd_game" src="server">
824 <member name="channel" type="U16"/> 824 <member name="channel" type="U16"/>
825 <member name="game" type="game"/> 825 <member name="game" type="game"/>
826 </message> 826 </message>
827 827
828 <message type="4402" name="del_game" dir="recv"> 828 <message type="4402" name="del_game" src="server">
829 <member name="channel" type="U16"/> 829 <member name="channel" type="U16"/>
830 </message> 830 </message>
831 831
832 <message type="4403" name="upd_observers" dir="recv"> 832 <message type="4403" name="upd_observers" src="server">
833 <member name="channel" type="U16"/> 833 <member name="channel" type="U16"/>
834 <member name="users" type="user" array="yes"/> 834 <member name="users" type="user" array="yes"/>
835 </message> 835 </message>
836 836
837 <message type="4404" name="del_observer" dir="recv"> 837 <message type="4404" name="del_observer" src="server">
838 <member name="channel" type="U16"/>
839 <member name="name" type="username"/> 838 <member name="channel" type="U16"/>
839 <member name="name" type="username"/>
840 </message> 840 </message>
841 841
842 <message type="4405" name="set_tree" dir="recv"> 842 <message type="4405" name="set_tree" src="server">
843 <member name="channel" type="U16"/> 843 <member name="channel" type="U16"/>
844 <member name="tree" type="TREE"/> 844 <member name="tree" type="TREE"/>
845 </message> 845 </message>
846 846
847 <message type="4406" name="upd_tree" dir="recv"> 847 <message type="4406" name="upd_tree" src="server">
848 <member name="channel" type="U16"/> 848 <member name="channel" type="U16"/>
849 <member name="tree" type="TREE"/> 849 <member name="tree" type="TREE"/>
850 </message> 850 </message>
851 851
852 <message type="4409" name="superko" dir="recv"> 852 <message type="4409" name="superko" src="server">
853 Superko-warning. 853 Superko-warning.
854 <member name="channel" type="U16"/> 854 <member name="channel" type="U16"/>
855 </message> 855 </message>
856 856
857 <message type="440b" name="final_result" dir="recv"> 857 <message type="440b" name="final_result" src="server">
858 <member name="channel" type="U16"/> 858 <member name="channel" type="U16"/>
859 <member name="blackscore" type="scorevalues"/> 859 <member name="blackscore" type="scorevalues"/>
860 <member name="whitescore" type="scorevalues"/> 860 <member name="whitescore" type="scorevalues"/>
861 </message> 861 </message>
862 862
863 <message type="440e" name="req_undo" dir="recv"> 863 <message type="440e" name="req_undo" src="server">
864 <member name="channel" type="U16"/> 864 <member name="channel" type="U16"/>
865 865
866 </message> 866 </message>
867 867
868 <message type="4410" name="resign_game" dir="recv"> 868 <message type="4410" name="resign_game" src="server">
869 <member name="channel" type="U16"/> 869 <member name="channel" type="U16"/>
870 <member name="player" type="U8"/> 870 <member name="player" type="U8"/>
871 </message> 871 </message>
872 872
873 <message type="441a" name="set_teacher" dir="recv"> 873 <message type="441a" name="set_teacher" src="server">
874 <member name="channel" type="U16"/>
875 <member name="name" type="username"/> 874 <member name="channel" type="U16"/>
875 <member name="name" type="username"/>
876 </message> 876 </message>
877 877
878 <message type="441d" name="owner_left" dir="recv"> 878 <message type="441d" name="owner_left" src="server">
879 Unclear. 879 Unclear.
880 <member name="channel" type="U16"/> 880 <member name="channel" type="U16"/>
881 </message> 881 </message>
882 882
883 <message type="441e" name="teacher_left" dir="recv"> 883 <message type="441e" name="teacher_left" src="server">
884 Unclear. 884 Unclear.
885 <member name="channel" type="U16"/> 885 <member name="channel" type="U16"/>
886 </message> 886 </message>
887 887
888 <message type="4422" name="unknown4422" dir="recv"> 888 <message type="4422" name="unknown4422" src="server">
889 change teacher? something to do with editing? 889 change teacher? something to do with editing?
890 <member name="channel" type="U16"/> 890 <member name="channel" type="U16"/>
891 <member name="name1" type="username"/> 891 <member name="name1" type="username"/>
892 <member name="name2" type="username"/> 892 <member name="name2" type="username"/>
893 </message> 893 </message>
894 894
895 <message type="4428" name="add_tree" dir="recv"> 895 <message type="4428" name="add_tree" src="server">
896 <p>See <ref ref="set_tree"/>. In addition, flags the tree as being 896 <p>See <ref ref="set_tree"/>. In addition, flags the tree as being
897 uploaded completely.</p> 897 uploaded completely.</p>
898 <member name="channel" type="U16"/> 898 <member name="channel" type="U16"/>
899 <member name="tree" type="TREE"/> 899 <member name="tree" type="TREE"/>
900 </message> 900 </message>
901 901
902 <message type="4433" name="req_result" dir="recv"> 902 <message type="4433" name="req_result" src="server">
903 Unclear. 903 Unclear.
904 <member name="channel" type="U16"/> 904 <member name="channel" type="U16"/>
905 # # recv_result(?) 905 # # recv_result(?)
906 </message> 906 </message>
907 907
908 <message type="4434" name="unknown4434" dir="recv"> 908 <message type="4434" name="unknown4434" src="server">
909 <member name="channel" type="U16"/> 909 <member name="channel" type="U16"/>
910 <member name="b1" type="U8"/> 910 <member name="b1" type="U8"/>
911 ?? !demonstration game?? 911 ?? !demonstration game??
912 </message> 912 </message>
913 913

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines