A Simple Greeter Bot


This program implements a very simple bot.  The bot logs into the universe, enters a world, and says "hello" to every user that enters the world.

#include "aw.h"
#include <stdio.h>
#include <stdlib.h>

void handle_avatar_add (void);

main (int argc, char *argv[])
{

  int rc;

  /* check command line */
  if (argc < 3) {
    printf ("Usage: %s number password\n", argv[0]);
    exit (1);
  }

  /* initialize Active Worlds API */
  if (rc = aw_init (AW_BUILD)) {
    printf ("Unable to initialize API (reason %d)\n", rc);
    exit (1);
  }

  /* install handler for avatar_add event */
  aw_event_set (AW_EVENT_AVATAR_ADD, handle_avatar_add);

  /* create bot instance */
  if (rc = aw_create (0, 0, 0)) {
    printf ("Unable to create bot instance (reason %d)\n", rc);
    exit (1);
  }

  /* log bot into the universe */
  aw_int_set (AW_LOGIN_OWNER, atoi (argv[1]));
  aw_string_set (AW_LOGIN_PRIVILEGE_PASSWORD, argv[2]);
  aw_string_set (AW_LOGIN_APPLICATION, "SDK Sample Application #1");
  aw_string_set (AW_LOGIN_NAME, "GreeterBot");
  if (rc = aw_login ()) {
    printf ("Unable to login (reason %d)\n", rc);
    exit (1);
  }

  /* log bot into the world called "beta" */
  if (rc = aw_enter ("Beta")) {
    printf ("Unable to enter world (reason %d)\n", rc);
    exit (1);
  }

  /* announce our position in the world */
  aw_int_set (AW_MY_X, 1000); /* 1W */
  aw_int_set (AW_MY_Z, 1000); /* 1N */
  aw_int_set (AW_MY_YAW, 2250); /* face towards GZ */
  if (rc = aw_state_change ()) {
    printf ("Unable to change state (reason %d)\n", rc);
    exit (1);
  }

  /* main event loop */
  while (!aw_wait (-1))
    ;

  /* close everything down */
  aw_destroy ();
  aw_term ();
  return 0;

}

void handle_avatar_add (void)
{

  char message[100];

  sprintf (message, "Hello %s", aw_string (AW_AVATAR_NAME));
  aw_say (message);
  /* log the event to the console */
  printf ("avatar_add: %s\n", aw_string (AW_AVATAR_NAME));

}


Active Worlds™ is a trademark of Activeworlds Inc. Questions or problems regarding this product should be posted to the newsgroup news://news.activeworlds.com/sdk. Problems with this web page should be reported to the author.

Copyright © 1998-2008 Activeworlds Inc. All rights reserved.