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

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

?? game.cpp

?? MUD游戲編程光盤代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
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( (int)(100*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( (int)(100 * 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 );
        return true;

    case ARMOR:
        p.UseArmor( i );
        return true;

    case HEALING:
        p.AddBonuses( itm.ID() );
        p.AddHitpoints( BasicLib::RandomInt( itm.Min(), itm.Max() ) );
        p.DropItem( i );
        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 )
    {
        p.RemoveWeapon();
        return true;
    }

    if( p_item == "armor" && p.Armor() != 0 )
    {
        p.RemoveArmor();
        return true;
    }

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





void Game::GotoTrain()
{
    Player& p = *m_player;
    LogoutMessage( p.Name() + " leaves to edit stats" );
    m_connection->AddHandler( new Train( *m_connection, p.ID() ) );
}




}   // end namespace SimpleMUD

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区日韩精品| 日本欧美加勒比视频| 欧美日本一区二区三区四区 | 日本女人一区二区三区| 亚洲国产精品成人综合 | 7777精品伊人久久久大香线蕉的 | 美女精品自拍一二三四| 亚洲欧美在线观看| 精品国产免费一区二区三区四区 | 麻豆专区一区二区三区四区五区| 国产精品卡一卡二| 日韩精品一区二区三区中文精品| 91精彩视频在线| 成人午夜精品在线| 久久爱www久久做| 精品国产sm最大网站免费看| 国产激情偷乱视频一区二区三区| 午夜欧美大尺度福利影院在线看 | 中文字幕av一区二区三区高| 欧美不卡一区二区三区四区| 欧美日韩三级一区二区| 色综合久久天天| 成人激情视频网站| 国产福利精品一区二区| 激情综合色丁香一区二区| 舔着乳尖日韩一区| 亚洲成人激情社区| 亚洲国产婷婷综合在线精品| 亚洲精品国产精华液| 亚洲三级电影全部在线观看高清| 中文字幕免费不卡| 国产欧美精品区一区二区三区| 精品999在线播放| 日韩精品资源二区在线| 欧美成人欧美edvon| 日韩一级片在线观看| 69堂成人精品免费视频| 欧美精品第一页| 欧美妇女性影城| 日韩一区二区三区在线| 日韩久久久久久| 精品日韩欧美在线| 精品毛片乱码1区2区3区| 精品国产乱子伦一区| 亚洲精品在线电影| 久久综合中文字幕| 国产丝袜美腿一区二区三区| 欧美国产亚洲另类动漫| 国产精品久久免费看| 亚洲九九爱视频| 亚洲电影中文字幕在线观看| 日韩精品成人一区二区在线| 麻豆成人91精品二区三区| 精品一区精品二区高清| 国产成人综合自拍| 成人18精品视频| 色哟哟国产精品免费观看| 91成人免费电影| 欧美午夜免费电影| 91麻豆精品91久久久久同性| 久久综合色一综合色88| 国产精品久久久久9999吃药| 亚洲黄色尤物视频| 人人爽香蕉精品| 国产精品影视在线观看| 91在线小视频| 欧美日韩亚洲综合| 精品久久久久久最新网址| 中文一区在线播放| 夜夜亚洲天天久久| 久久66热re国产| hitomi一区二区三区精品| 精品视频全国免费看| 久久先锋影音av鲁色资源网| 最近日韩中文字幕| 视频在线观看一区| 丁香婷婷综合五月| 欧美日韩国产一二三| 久久一夜天堂av一区二区三区| 亚洲欧洲成人自拍| 青青草91视频| 99久久免费精品| 91精品国产入口| 日韩一区日韩二区| 精品一区二区三区在线观看国产| 97精品超碰一区二区三区| 欧美一级在线观看| 国产精品色婷婷| 男女性色大片免费观看一区二区 | 视频一区在线视频| 国产91精品一区二区| 欧美美女视频在线观看| 欧美精品一区二区三| 亚洲国产精品综合小说图片区| 国产真实乱对白精彩久久| 在线视频欧美精品| 久久九九国产精品| 免费不卡在线观看| 欧美日韩亚洲综合在线| 亚洲少妇30p| 国内精品伊人久久久久av一坑| 在线观看日韩国产| 亚洲国产精品av| 久久99久久精品| 欧美日韩高清不卡| 亚洲精品免费看| 成人综合激情网| 久久精品网站免费观看| 蜜臀av一区二区三区| 欧美视频一区二区三区在线观看| 欧美国产日产图区| 精品在线播放免费| 91精品国产综合久久久蜜臀粉嫩| 亚洲在线视频网站| 一本大道久久精品懂色aⅴ| 欧美激情一区二区三区| 久久99深爱久久99精品| 欧美精品99久久久**| 夜夜精品浪潮av一区二区三区| 99国产欧美久久久精品| 中文一区二区在线观看| 成人亚洲精品久久久久软件| 欧美精品一区二区三区在线播放| 日本免费在线视频不卡一不卡二| 欧美日韩国产高清一区| 亚洲一二三四区| 色偷偷成人一区二区三区91| 亚洲情趣在线观看| 色综合久久久久综合体桃花网| 中文字幕亚洲在| 不卡电影一区二区三区| 中文字幕日韩一区二区| 成人aaaa免费全部观看| 中文字幕亚洲精品在线观看| 成人久久视频在线观看| 中文字幕日韩一区| 99re免费视频精品全部| 亚洲毛片av在线| 日本电影欧美片| 亚洲一区影音先锋| 欧美久久婷婷综合色| 久久精品二区亚洲w码| 精品久久一二三区| 国产v综合v亚洲欧| 亚洲国产成人在线| 色综合天天做天天爱| 亚洲综合成人在线| 欧美日韩1区2区| 极品美女销魂一区二区三区免费| 久久久久久久国产精品影院| 成人av网址在线观看| 亚洲激情欧美激情| 欧美日韩国产一二三| 精品一区二区三区影院在线午夜| 欧美精品一区二区三区在线| 波多野结衣亚洲| 一区二区三区蜜桃| 777久久久精品| 国产精品一级片| 亚洲女人的天堂| 欧美日韩成人综合天天影院 | 国产精品乱码久久久久久| 91麻豆swag| 亚洲va国产va欧美va观看| 日韩欧美久久久| 成人国产精品免费网站| 亚洲国产wwwccc36天堂| 精品久久久久久亚洲综合网| 成人精品鲁一区一区二区| 一区二区三区国产精品| 日韩免费观看高清完整版| 成人激情av网| 婷婷六月综合网| 国产色产综合色产在线视频| 日本高清不卡aⅴ免费网站| 精品一区二区三区久久| 中文字幕在线视频一区| 日韩一区二区三区三四区视频在线观看| 国产suv精品一区二区883| 亚洲视频一二三| www日韩大片| 欧美视频三区在线播放| 国产高清精品在线| 亚洲午夜三级在线| 久久久99免费| 欧美日韩精品一区二区| 成人午夜免费视频| 日韩av不卡在线观看| 成人免费在线视频观看| 欧美一级欧美三级在线观看 | 国产午夜精品理论片a级大结局| 色av一区二区| 国产精品一二三区在线| 天天av天天翘天天综合网色鬼国产| 国产视频一区在线播放| 日韩三级中文字幕| 91精品福利视频| 国产很黄免费观看久久| 另类小说欧美激情| 亚洲一二三四区|