Beispiel #1
0
int process_do_mssp( DESCRIPTOR_DATA *d, unsigned char *src, int srclen )
{
    DESCRIPTOR_DATA *dc;
    int cnt = 0;
    extern int int_boot_time;

    for ( dc = first_desc; dc != NULL; dc = dc->next )
        if ( dc->character != NULL )
            cnt++;

    write_to_buffer(d, (const char *)IAC_SB_MSSP);

    /* Required */
    mssp_reply(d, "PLAYERS", cnt);
    mssp_reply(d, "UPTIME", int_boot_time);

    /* Generic */
    mssp_reply(d, "HOSTNAME", MSSP_HOSTNAME);
    mssp_reply(d, "PORT", MSSP_PORT);
    mssp_reply(d, "CODEBASE", VERS_STRING);
    mssp_reply(d, "CONTACT", MSSP_CONTACT);
    mssp_reply(d, "CREATED", MSSP_CREATED);
    mssp_reply(d, "ICON", MSSP_ICON);
    mssp_reply(d, "IP", MSSP_IP);
    mssp_reply(d, "LANGUAGE", MSSP_LANGUAGE);
    mssp_reply(d, "LOCATION", MSSP_LOCATION);
    mssp_reply(d, "MINIMUM AGE", MSSP_MIN_AGE);
    mssp_reply(d, "NAME", MSSP_NAME);
    mssp_reply(d, "WEBSITE", MSSP_WEBSITE);

    /* Categorization */
    mssp_reply(d, "FAMILY", MSSP_FAMILY);
    mssp_reply(d, "GENRE", MSSP_GENRE);
    mssp_reply(d, "GAMEPLAY", MSSP_GAMEPLAY);
    mssp_reply(d, "GAMESYSTEM", MSSP_GAMESYSTEM);
    mssp_reply(d, "INTERMUD", MSSP_INTERMUD);
    mssp_reply(d, "STATUS", MSSP_STATUS);
    mssp_reply(d, "SUBGENRE", MSSP_SUBGENRE);

    /* World */
    mssp_reply(d, "AREAS", area_list.size());
    mssp_reply(d, "HELPFILES", mudinfo.total_helpfiles);
    mssp_reply(d, "MOBILES", mob_index_list.size());
    mssp_reply(d, "OBJECTS", obj_index_list.size());
    mssp_reply(d, "ROOMS", room_index_list.size());
    mssp_reply(d, "RESETS", reset_list.size());
    mssp_reply(d, "MUDPROGS", 0);
    mssp_reply(d, "MUDTRIGS", 0);
    mssp_reply(d, "CLASSES", MSSP_CLASSES);
    mssp_reply(d, "LEVELS", MSSP_LEVELS);
    mssp_reply(d, "RACES", MSSP_RACES);
    mssp_reply(d, "SKILLS", count_skills());

    /* Protocols */
    mssp_reply(d, "ANSI", 1);
    mssp_reply(d, "MCCP", 0);
    mssp_reply(d, "MCP", 0);
    mssp_reply(d, "MSP", 0);
    mssp_reply(d, "SSL", 0);
    mssp_reply(d, "MXP", 0);
    mssp_reply(d, "PUEBLO", 0);
    mssp_reply(d, "VT100", 0);
    mssp_reply(d, "XTERM 256 COLORS", 0);

    /* Commercial */
    mssp_reply(d, "PAY TO PLAY", 0);
    mssp_reply(d, "PAY FOR PERKS", 0);

    /* Hiring */
    mssp_reply(d, "HIRING BUILDERS", MSSP_HIRE_BUILDER);
    mssp_reply(d, "HIRING CODERS", MSSP_HIRE_CODER);

    write_to_buffer(d, (const char *)IAC_SE);
    return 3;
}
Beispiel #2
0
void send_mssp_data( DESCRIPTOR_DATA *d )
{
    if ( !d ) {
        bug( "%s: NULL d", __FUNCTION__ );
        return;
    }

    write_to_descriptor( d, "\r\nMSSP-REPLY-START\r\n", 0 );

    mssp_reply( d, "HOSTNAME", "%s", mssp_info->hostname );
    mssp_reply( d, "PORT", "%d", port );
    mssp_reply( d, "UPTIME", "%d", ( int ) mud_start_time );
    mssp_reply( d, "PLAYERS", "%d", player_count(  ) );
    mssp_reply( d, "CODEBASE", "%s", codebase );
    mssp_reply( d, "CONTACT", "%s", mssp_info->contact );
    mssp_reply( d, "CREATED", "%d", mssp_info->created );
    mssp_reply( d, "ICON", "%s", mssp_info->icon );
    mssp_reply( d, "LANGUAGE", "%s", mssp_info->language );
    mssp_reply( d, "LOCATION", "%s", mssp_info->location );
    mssp_reply( d, "MINIMUM AGE", "%d", mssp_info->minAge );
    mssp_reply( d, "NAME", "%s", sysdata.mud_name );
    mssp_reply( d, "WEBSITE", "%s", mssp_info->website );
    mssp_reply( d, "FAMILY", "%s", mssp_info->family );
    mssp_reply( d, "GENRE", "%s", mssp_info->genre );
    mssp_reply( d, "GAMEPLAY", "%s", mssp_info->gamePlay );
    mssp_reply( d, "GAMESYSTEM", "%s", mssp_info->gameSystem );
    mssp_reply( d, "INTERMUD", "%s", mssp_info->intermud );
    mssp_reply( d, "STATUS", "%s", mssp_info->status );
    mssp_reply( d, "SUBGENRE", "%s", mssp_info->subgenre );
    mssp_reply( d, "AREAS", "%d", top_area );
    mssp_reply( d, "HELPFILES", "%d", top_help );
    mssp_reply( d, "MOBILES", "%d", top_mob_index );
    mssp_reply( d, "OBJECTS", "%d", top_obj_index );
    mssp_reply( d, "ROOMS", "%d", top_room );
    mssp_reply( d, "RESETS", "%d", top_reset );
//   mssp_reply( d, "MUDPROGS", "%d", top_prog );
    mssp_reply( d, "CLASSES", "%d", MAX_CLASS );
    mssp_reply( d, "LEVELS", "%d", MAX_LEVEL );
    mssp_reply( d, "RACES", "%d", MAX_RACE );
    // mssp_reply( d, "SKILLS", "%d", num_skills );
    mssp_reply( d, "WORLDS", "%d", mssp_info->worlds );
    mssp_reply( d, "ANSI", "%d", mssp_info->ansi );
    mssp_reply( d, "MCCP", "%d", mssp_info->mccp );
    mssp_reply( d, "MCP", "%d", mssp_info->mcp );
    mssp_reply( d, "MSP", "%d", mssp_info->msp );
    mssp_reply( d, "SSL", "%d", mssp_info->ssl );
    mssp_reply( d, "MXP", "%d", mssp_info->mxp );
    mssp_reply( d, "PUEBLO", "%d", mssp_info->pueblo );
    mssp_reply( d, "VT100", "%d", mssp_info->vt100 );
    mssp_reply( d, "XTERM 256 COLORS", "%d", mssp_info->xterm256 );
    mssp_reply( d, "PAY TO PLAY", "%d", mssp_info->pay2play );
    mssp_reply( d, "PAY FOR PERKS", "%d", mssp_info->pay4perks );
    mssp_reply( d, "HIRING BUILDERS", "%d", mssp_info->hiringBuilders );
    mssp_reply( d, "HIRING CODERS", "%d", mssp_info->hiringCoders );
    mssp_reply( d, "ADULT MATERIAL", "%d", mssp_info->adultMaterial );
    mssp_reply( d, "MULTICLASSING", "%d", mssp_info->multiclassing );
    mssp_reply( d, "NEWBIE FRIENDLY", "%d", mssp_info->newbieFriendly );
    mssp_reply( d, "PLAYER CITIES", "%d", mssp_info->playerCities );
    mssp_reply( d, "PLAYER CLANSS", "%d", mssp_info->playerClans );
    mssp_reply( d, "PLAYER CRAFTING", "%d", mssp_info->playerCrafting );
    mssp_reply( d, "PLAYER GUILDS", "%d", mssp_info->playerGuilds );
    mssp_reply( d, "EQUIPMENT SYSTEM", "%s", mssp_info->equipmentSystem );
    mssp_reply( d, "MULTIPLAYING", "%s", mssp_info->multiplaying );
    mssp_reply( d, "PLAYERKILLING", "%s", mssp_info->playerKilling );
    mssp_reply( d, "QUEST SYSTEM", "%s", mssp_info->questSystem );
    mssp_reply( d, "ROLEPLAYING", "%s", mssp_info->roleplaying );
    mssp_reply( d, "TRAINING SYSTEM", "%s", mssp_info->trainingSystem );
    mssp_reply( d, "WORLD ORIGINALITY", "%s", mssp_info->worldOriginality );
    write_to_descriptor( d, "MSSP-REPLY-END\r\n", 0 );
}