mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
Mt2Hizmet 1
Mt2Hizmet
berkmenoo 1
berkmenoo
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
farkmt2official 1
farkmt2official
cemalggevenc 1
cemalggevenc
Bvural41 1
Bvural41
Hikaye Ekle

GameMaster Yetki Kısıtlaması

GM'lerin oyuncu ile ticaret yapmasını engeller.
Test server'da herkes gm olduğu için ticareti engellememesi için test server'da devre dışı olur.

C++:
// Service.h AÇILIR

// Eklenir.


#define ENABLE_GAMEMASTER_RESTRICTION

----------------------------------------------------------------------------------------

// exchange.cpp AÇILIR

// Aratılır:

if (victim->IsBlockMode(BLOCK_EXCHANGE))


// Eklenir:

#ifdef ENABLE_GAMEMASTER_RESTRICTION
    if (!IsGM())
    {
        if (!test_server && victim->GetGMLevel() != GM_PLAYER)
            {
                ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Game Master ile ticaret yapamazsınız."));
                return false;
            }
    }

    if (!test_server && IsGM())
    {
        std::unique_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT * FROM gamemaster_restriction"));
        SQLResult * pRes = pMsg->Get();
        if (pRes->uiNumRows)
        {
            MYSQL_ROW row;
            while ((row = mysql_fetch_row(pRes->pSQLResult)))
            {
                DWORD datos = 0;
                str_to_number(datos, row[0]);
                if (GetPlayerID()==datos)
                {
                    ChatPacket(CHAT_TYPE_INFO, "Bunu yapmak için izniniz yok.");
                    return false;
                }
            }
        }
    }

#endif


----------------------------------------------------------------------------------------


// char_item.cpp AÇILIR

// Aratılır:


bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)


// Eklenir:



#ifdef ENABLE_GAMEMASTER_RESTRICTION
    if (!test_server && IsGM())
    {
        std::unique_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT * FROM gamemaster_restriction"));
        SQLResult * pRes = pMsg->Get();
        if (pRes->uiNumRows)
        {
            MYSQL_ROW row;
            while ((row = mysql_fetch_row(pRes->pSQLResult)))
            {
                DWORD datos = 0;
                str_to_number(datos, row[0]);
                if (GetPlayerID()==datos)
                {
                    ChatPacket(CHAT_TYPE_INFO, "Bunu yapmak için izniniz yok");
                    return false;
                }
            }
        }
    }
#endif




----------------------------------------------------------------------------------------


// cmd_general.cpp AÇILIR

// Aratılır


ACMD(do_click_safebox)


// Eklenir:



#ifdef ENABLE_GAMEMASTER_RESTRICTION
    if (!test_server && ch->IsGM())
    {
        std::unique_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT * FROM gamemaster_restriction"));
        SQLResult * pRes = pMsg->Get();
        if (pRes->uiNumRows)
        {
            MYSQL_ROW row;
            while ((row = mysql_fetch_row(pRes->pSQLResult)))
            {
                DWORD datos = 0;
                str_to_number(datos, row[0]);
                if (ch->GetPlayerID()==datos)
                {
                    ch->ChatPacket(CHAT_TYPE_INFO, "Bunu yapmak için izniniz yok");
                    return;
                }
            }
        }
    }
#endif


----------------------------------------------------------------------------------------


// Player.sql'e eklenir:


SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for gamemaster_restriction

-- ----------------------------

DROP TABLE IF EXISTS `gamemaster_restriction`;

CREATE TABLE `gamemaster_restriction` (

`gamemaster` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',

PRIMARY KEY (`gamemaster`) USING BTREE

) ENGINE = MyISAM CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;
süpersin
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst