亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? game.cpp

?? MUD游戲編程光盤代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
//  flooding the server.
// ------------------------------------------------------------------------
void Game::Flooded()
{
    USERLOG.Log(  
        GetIPString( m_connection->GetRemoteAddress() ) + 
        " - User " + m_player->Name() + 
        " flooded." );

    Player& p = *m_player;
    LogoutMessage( p.Name() + " has been kicked for flooding!" );
}

// ------------------------------------------------------------------------
//  Sends a string to everyone connected.
// ------------------------------------------------------------------------
void Game::SendGlobal( const string& p_str )
{
    operate_on_if( PlayerDatabase::begin(),
                   PlayerDatabase::end(),
                   playersend( p_str ),
                   playerloggedin() );
}

// ------------------------------------------------------------------------
//  Sends a string to everyone "within the game"
// ------------------------------------------------------------------------
void Game::SendGame( const std::string& p_str )
{
    operate_on_if( PlayerDatabase::begin(),
                   PlayerDatabase::end(),
                   playersend( p_str ),
                   playeractive() );
}

// ------------------------------------------------------------------------
//  Sends a logout message
// ------------------------------------------------------------------------
void Game::LogoutMessage( const string& p_reason )
{
    SendGame( SocketLib::red + SocketLib::bold + p_reason );
}

// ------------------------------------------------------------------------
//  Sends a system announcement
// ------------------------------------------------------------------------
void Game::Announce( const string& p_announcement )
{
    SendGlobal( SocketLib::cyan + SocketLib::bold + 
                "System Announcement: " + p_announcement );
}

// ------------------------------------------------------------------------
//  Sends a whisper string to the requested player
// ------------------------------------------------------------------------
void Game::Whisper( std::string p_str, std::string p_player )
{
    // find the player
    PlayerDatabase::iterator itr = PlayerDatabase::findactive( p_player );
    
    // if no match was found
    if( itr == PlayerDatabase::end() )
    {
        m_player->SendString( red + bold + "Error, cannot find user." );
    }
    else
    {
        itr->SendString( yellow + m_player->Name() + " whispers to you: " + 
                         reset + p_str );

        m_player->SendString( yellow + "You whisper to " + itr->Name() + 
                              ": " + reset + p_str );
    }
}

// ------------------------------------------------------------------------
//  Functor that generates a who-listing for a single player
// ------------------------------------------------------------------------
struct wholist
{
    string str;

    void operator() ( Player& p )
    {
        str += " " + tostring( p.Name(), 17 ) + "| ";
        str += tostring( p.Level(), 10 ) + "| ";
        
        
        if( p.Active() )
            str += green + "Online  " + white;
        else if( p.LoggedIn() )
            str += yellow + "Inactive" + white;
        else
            str += red + "Offline " + white;

        str += " | ";
        switch( p.Rank() )
        {
            case REGULAR:   str += white;   break;
            case GOD:       str += yellow;  break;
            case ADMIN:     str += green;   break;
        }

        str += GetRankString( p.Rank() );

        str += white + "\r\n";
    }
};

// ------------------------------------------------------------------------
//  This prints up the who-list for the realm.
// ------------------------------------------------------------------------
string Game::WhoList( const string& p_who )
{
    using namespace BasicLib;

    string str = white + bold +
        "--------------------------------------------------------------------------------\r\n" + 
        " Name             | Level     | Activity | Rank\r\n" + 
        "--------------------------------------------------------------------------------\r\n";

    wholist who;
    if( p_who == "all" )
    {
        who = BasicLib::operate_on_if( 
                        PlayerDatabase::begin(),
                        PlayerDatabase::end(),
                        wholist(),
                        always<Player>() );
    }
    else
    {
        who = BasicLib::operate_on_if( 
                        PlayerDatabase::begin(),
                        PlayerDatabase::end(),
                        wholist(),
                        playerloggedin() );
    }

    str += who.str;

    
    str +=
        "--------------------------------------------------------------------------------";

    return str;
}

// ------------------------------------------------------------------------
//  Prints out a help listing based on a user's rank.
// ------------------------------------------------------------------------
string Game::PrintHelp( PlayerRank p_rank )
{
    static string help = white + bold + 
        "--------------------------------- Command List ---------------------------------\r\n" + 
        " /                          - Repeats your last command exactly.\r\n" +
        " chat <mesg>                - Sends message to everyone in the game\r\n" +
        " experience                 - Shows your experience statistics\r\n" +
        " help                       - Shows this menu\r\n" +
        " inventory                  - Shows a list of your items\r\n" + 
        " quit                       - Allows you to leave the realm.\r\n" + 
        " remove <'weapon'/'armor'>  - removes your weapon or armor\r\n" + 
        " stats                      - Shows all of your statistics\r\n" + 
        " time                       - shows the current system time.\r\n" +
        " use <item>                 - use an item in your inventory\r\n" +
        " whisper <who> <msg>        - Sends message to one person\r\n" +
        " who                        - Shows a list of everyone online\r\n" +
        " who all                    - Shows a list of everyone\r\n" +
        " look                       - Shows you the contents of a room\r\n" +
        " north/east/south/west      - Moves in a direction\r\n" +
        " get/drop <item>            - Picks up or drops an item on the ground\r\n" +
        " train                      - Train to the next level (TR)\r\n" +
        " editstats                  - Edit your statistics (TR)\r\n" +
        " list                       - Lists items in a store (ST)\r\n" +
        " buy/sell <item>            - Buy or Sell an item in a store (ST)\r\n" +
        " attack <enemy>             - Attack an enemy\r\n";


    static string god = yellow + bold +
        "--------------------------------- God Commands ---------------------------------\r\n" + 
        " kick <who>                 - kicks a user from the realm\r\n";

    static string admin = green + bold +
        "-------------------------------- Admin Commands --------------------------------\r\n" + 
        " announce <msg>             - Makes a global system announcement\r\n" + 
        " changerank <who> <rank>    - Changes the rank of a player\r\n" + 
        " reload <db>                - Reloads the requested database\r\n" + 
        " shutdown                   - Shuts the server down\r\n";

    static string end = white + bold + 
        "--------------------------------------------------------------------------------";


    if( p_rank == REGULAR )
        return help + end;
    else if( p_rank == GOD )
        return help + god + end;
    else if( p_rank == ADMIN )
        return help + god + admin + end;
    else return "ERROR";

}

// ------------------------------------------------------------------------
//  This prints up the stats of the player
// ------------------------------------------------------------------------
string Game::PrintStats()
{
    using namespace BasicLib;
    Player& p = *m_player;

    return white + bold +
        "---------------------------------- Your Stats ----------------------------------\r\n" + 
        " Name:          " + p.Name() + "\r\n" +
        " Rank:          " + GetRankString( p.Rank() ) + "\r\n" + 
        " HP/Max:        " + tostring( p.HitPoints() ) + "/" + tostring( p.GetAttr( MAXHITPOINTS ) ) +
        "  (" + tostring( percent( p.HitPoints(), p.GetAttr( MAXHITPOINTS )) ) + "%)\r\n" +
        PrintExperience() + "\r\n" + 
        " Strength:      " + tostring( p.GetAttr( STRENGTH ), 16 ) + 
        " Accuracy:      " + tostring( p.GetAttr( ACCURACY ) ) + "\r\n" +
        " Health:        " + tostring( p.GetAttr( HEALTH ), 16 ) + 
        " Dodging:       " + tostring( p.GetAttr( DODGING ) ) + "\r\n" +
        " Agility:       " + tostring( p.GetAttr( AGILITY ), 16 ) + 
        " Strike Damage: " + tostring( p.GetAttr( STRIKEDAMAGE ) ) + "\r\n" +
        " StatPoints:    " + tostring( p.StatPoints(), 16 ) + 
        " Damage Absorb: " + tostring( p.GetAttr( DAMAGEABSORB ) ) + "\r\n" +
        "--------------------------------------------------------------------------------";
}

// ------------------------------------------------------------------------
//  This prints up the experience of the player
// ------------------------------------------------------------------------
string Game::PrintExperience()
{
    using namespace BasicLib;
    Player& p = *m_player;

    return white + bold +
        " Level:         " + tostring( p.Level() ) + "\r\n" + 
        " Experience:    " + tostring( p.Experience() ) + "/" +
        tostring( p.NeedForLevel( p.Level() + 1 ) ) + " (" + 
        tostring( percent( p.Experience(), p.NeedForLevel( p.Level() + 1 ) ) ) + 
        "%)";
}

// ------------------------------------------------------------------------
//  This prints up the inventory-list of the player
// ------------------------------------------------------------------------
string Game::PrintInventory()
{
    using namespace BasicLib;
    Player& p = *m_player;

    // Inventory
    string itemlist = white + bold +
        "-------------------------------- Your Inventory --------------------------------\r\n" +
        " Items:  ";

    for( int i = 0; i < PLAYERITEMS; i++ )
    {
        if( p.GetItem( i ) != 0 )
        {
            itemlist += p.GetItem( i )->Name() + ", ";
        }
    }

    // chop off the extraneous comma, and add a newline.
    itemlist.erase( itemlist.size() - 2, 2 );
    itemlist += "\r\n";

    // Weapon/Armor
    itemlist += " Weapon: ";
    if( p.Weapon() == 0 )
        itemlist += "NONE!";
    else
        itemlist += p.Weapon()->Name();

    itemlist += "\r\n Armor:  ";
    if( p.Armor() == 0 )
        itemlist += "NONE!";
    else
        itemlist += p.Armor()->Name();

    // Money
    itemlist += "\r\n Money:  $" + tostring( p.Money() );

    itemlist +=
        "\r\n--------------------------------------------------------------------------------";
    
    return itemlist;
}

// ------------------------------------------------------------------------
//  This finds and attempts to "use" an item in your inventory.
// ------------------------------------------------------------------------
bool Game::UseItem( const std::string& p_item )
{
    Player& p = *m_player;

    int i = p.GetItemIndex( p_item );

    if( i == -1 )
    {
        p.SendString( red + bold + "Could not find that item!" );
        return false;
    }

    Item& itm = *p.GetItem( i );
    

    switch( itm.Type() )
    {
    case WEAPON:
        p.UseWeapon( i );
        SendRoom( green + bold + p.Name() + " arms a " + itm.Name(), 
                  p.CurrentRoom() );
        return true;

    case ARMOR:
        p.UseArmor( i );
        SendRoom( green + bold + p.Name() + " puts on a " + itm.Name(), 
                  p.CurrentRoom() );
        return true;

    case HEALING:
        p.AddBonuses( itm.ID() );
        p.AddHitpoints( BasicLib::RandomInt( itm.Min(), itm.Max() ) );
        p.DropItem( i );
        SendRoom( green + bold + p.Name() + " uses a " + itm.Name(), 
                  p.CurrentRoom() );

        return true;
    }
    return false;
}

// ------------------------------------------------------------------------
//  This removes your weapon or your armor
// ------------------------------------------------------------------------
bool Game::RemoveItem( std::string p_item )
{
    Player& p = *m_player;

    p_item = BasicLib::LowerCase( p_item );

    if( p_item == "weapon" && p.Weapon() != 0 )
    {
        SendRoom( green + bold + p.Name() + " puts away a " + 
                  p.Weapon()->Name(), p.CurrentRoom() );
        p.RemoveWeapon();
        return true;
    }

    if( p_item == "armor" && p.Armor() != 0 )
    {
        SendRoom( green + bold + p.Name() + " takes off a " + 
                  p.Armor()->Name(), p.CurrentRoom() );
        p.RemoveArmor();
        return true;
    }

    p.SendString( red + bold + "Could not Remove item!" );
    return false;
}


string Game::PrintRoom( room p_room )
{
    string desc = "\r\n" + bold + white + p_room->Name() + "\r\n";
    string temp;
    int count;

    desc += bold + magenta + p_room->Description() + "\r\n";
    desc += bold + green + "exits: ";

    for( int d = 0; d < NUMDIRECTIONS; d++ )
    {
        if( p_room->Adjacent( d ) != 0 )
            desc += DIRECTIONSTRINGS[d] + "  ";
    }
    desc += "\r\n";


    // ---------------------------------
    // ITEMS
    // ---------------------------------
    temp = bold + yellow + "You see: ";
    count = 0;
    if( p_room->Money() > 0 )
    {
        count++;
        temp += "$" + tostring( p_room->Money() ) + ", ";
    }

    std::list<item>::iterator itemitr = p_room->Items().begin();
    while( itemitr != p_room->Items().end() )
    {
        count++;
        temp += (*itemitr)->Name() + ", ";
        ++itemitr;
    }

    if( count > 0 )
    {
        // chop off the trailing ", "
        temp.erase( temp.size() - 2, 2 );
        // add a newline
        desc += temp + "\r\n";
    }

    // ---------------------------------
    // PEOPLE
    // ---------------------------------
    temp = bold + cyan + "People: ";
    count = 0;
    std::list<player>::iterator playeritr = p_room->Players().begin();
    while( playeritr != p_room->Players().end() )
    {
        temp += (*playeritr)->Name() + ", ";
        count++;
        ++playeritr;
    }

    if( count > 0 )
    {
        temp.erase( temp.size() - 2, 2 );
        desc += temp + "\r\n";
    }

    // ---------------------------------
    // ENEMIES
    // ---------------------------------
    temp = bold + red + "Enemies: ";
    count = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久av资源站| 国产欧美精品一区aⅴ影院 | 日本麻豆一区二区三区视频| 波多野结衣91| 欧美一区欧美二区| 一区二区三区电影在线播| 成人av电影在线网| 国产欧美日韩综合精品一区二区| 另类小说色综合网站| 欧美日韩高清一区二区| 亚洲超碰97人人做人人爱| 欧美日韩视频在线一区二区 | 91蝌蚪porny九色| 亚洲婷婷国产精品电影人久久| 成人精品视频.| 国产亚洲女人久久久久毛片| 国产精品资源站在线| 亚洲精品在线三区| 国产精品综合在线视频| 久久久精品免费免费| 成人午夜电影网站| 亚洲欧美激情一区二区| 精品视频免费在线| 一区二区三区欧美| 欧美美女激情18p| 久久99久久99| 国产精品无遮挡| 色婷婷国产精品综合在线观看| 一区二区三区不卡在线观看 | 国产精品99久久久久久似苏梦涵 | 1区2区3区欧美| 欧洲一区二区三区在线| 天天综合色天天综合| 欧美一区二区三区在线观看| 久久99国产精品成人| 亚洲成人精品影院| 欧美日韩和欧美的一区二区| 青草av.久久免费一区| 久久久久久久久久电影| 91一区在线观看| 日韩激情一区二区| 欧美国产精品专区| 欧美精品黑人性xxxx| 日韩精品成人一区二区在线| 久久蜜桃av一区二区天堂| 91视频在线观看免费| 一区二区三区日本| 久久综合一区二区| 在线看日韩精品电影| 久久精品国产第一区二区三区| 国产精品久久久久aaaa樱花| 欧美高清激情brazzers| 五月激情六月综合| 久久影院视频免费| 一本一本久久a久久精品综合麻豆| 青青草成人在线观看| 亚洲一区二区三区小说| 亚洲欧美日韩成人高清在线一区| 中文字幕免费不卡在线| 精品国产免费人成在线观看| 在线成人小视频| 欧美精品久久一区二区三区 | 欧美色网站导航| 99精品欧美一区二区三区综合在线| 激情综合一区二区三区| 青青草原综合久久大伊人精品 | 欧美午夜精品久久久| fc2成人免费人成在线观看播放| 国产在线观看一区二区| 久久99国内精品| 韩国欧美一区二区| 九色综合国产一区二区三区| 乱中年女人伦av一区二区| 日韩av中文字幕一区二区三区| 五月天网站亚洲| 日韩av中文在线观看| 天天av天天翘天天综合网色鬼国产 | 亚洲伦理在线精品| 亚洲精品国产无天堂网2021| 综合激情成人伊人| 夜夜嗨av一区二区三区| 亚洲国产三级在线| 天天综合色天天| 美女网站色91| 国产激情视频一区二区三区欧美| 国产精品 欧美精品| 丁香婷婷综合色啪| 91丨porny丨最新| 欧美三级一区二区| 欧美一区二区三区在线| 欧美成人一级视频| 国产精品视频一区二区三区不卡| 最新日韩在线视频| 一区二区高清在线| 久久激情综合网| 丁香另类激情小说| 色综合视频一区二区三区高清| 欧美久久久久久久久| 日韩欧美一二三区| 国产精品家庭影院| 无码av免费一区二区三区试看 | 国产精品一区二区久久精品爱涩| 成人小视频免费观看| 亚洲视频 欧洲视频| 欧美三级电影在线看| 精品区一区二区| 国产精品99久| 国产成a人亚洲精| 色综合久久久久综合| 欧美又粗又大又爽| 日韩精品一区二区三区在线观看 | 另类人妖一区二区av| 国产一区视频网站| 91激情五月电影| 久久人人爽爽爽人久久久| 亚洲免费观看高清在线观看| 日韩国产欧美在线观看| 成人黄色小视频在线观看| 欧美美女黄视频| 亚洲色图制服诱惑| 国内精品免费在线观看| 91蝌蚪国产九色| 久久精品视频在线看| 亚洲高清免费视频| 成人在线一区二区三区| 91麻豆精品91久久久久同性| 中文字幕+乱码+中文字幕一区| 天天色综合成人网| 91色视频在线| 久久免费午夜影院| 日韩成人午夜电影| 在线观看av不卡| 亚洲欧洲另类国产综合| 美国毛片一区二区三区| 欧美三级日韩在线| 亚洲欧美电影一区二区| 国产精品一卡二卡| 日韩精品自拍偷拍| 午夜欧美一区二区三区在线播放| aaa欧美色吧激情视频| 精品国产乱码久久| 日韩电影免费在线观看网站| 色成年激情久久综合| 国产精品视频一区二区三区不卡| 久久精品99国产精品日本| 欧美性做爰猛烈叫床潮| 一色桃子久久精品亚洲| 国v精品久久久网| 2020国产精品久久精品美国| 日韩二区三区四区| 4438x亚洲最大成人网| 亚洲精品中文在线| 成人午夜电影久久影院| 精品国产91久久久久久久妲己| 蜜桃一区二区三区在线观看| 欧美亚洲精品一区| 日韩美女精品在线| 成人h版在线观看| 欧美国产丝袜视频| 成人福利在线看| 亚洲欧洲精品天堂一级| 成人综合婷婷国产精品久久蜜臀| 国产亚洲精品精华液| 国产一区二区三区日韩| 精品1区2区在线观看| 精品亚洲porn| 国产欧美综合在线| 不卡的av中国片| 亚洲视频免费在线| 欧美亚洲精品一区| 日韩成人免费电影| 欧美成人三级在线| 国产麻豆一精品一av一免费| 精品免费日韩av| 国产91综合网| 最新成人av在线| 在线免费一区三区| 日韩av不卡一区二区| 精品日韩一区二区| 成人午夜视频在线观看| 亚洲日本青草视频在线怡红院 | 91蝌蚪porny| 亚洲欧美色综合| 欧美日韩亚洲丝袜制服| 三级影片在线观看欧美日韩一区二区| 欧美老肥妇做.爰bbww| 免费在线视频一区| 国产喂奶挤奶一区二区三区| 丁香网亚洲国际| 亚洲国产aⅴ成人精品无吗| 8x8x8国产精品| 国产成人小视频| 樱花草国产18久久久久| 91精品国产丝袜白色高跟鞋| 国内精品不卡在线| 尤物视频一区二区| 精品国产乱码久久久久久影片| 成人av在线看| 日韩制服丝袜av| 亚洲国产精品成人综合色在线婷婷|