Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
romegames 1
romegames
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Best Studio 1
Best Studio
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
InfernoShade 1
InfernoShade
BlackFullMoon 1
BlackFullMoon
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

welberw map aç kapa şeysi

  • Konuyu başlatan Konuyu başlatan mistikaptal
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 25
  • Görüntüleme Görüntüleme 2K

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

konuya dahil ettim

0 = tamamen kapalı
1 = herkes girebilir (default)
2 = sadece GM girebilir

Chat.cpp en üste ekle
#i#includeunordered_map>
static std::unordered_map<long, BYTE> g_mapAccessCache;

Kod:
BYTE CHARACTER::GetMapAccessMode(long lMapIndex)
{
    auto it = g_mapAccessCache.find(lMapIndex);
    if (it != g_mapAccessCache.end())
        return it->second;

    char query[256];
    snprintf(query, sizeof(query), "SELECT access_mode FROM map_access_control WHERE map_index = %ld", lMapIndex);
    std::unique_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(query));

    BYTE accessMode = 1;

    if (msg->Get()->uiNumRows > 0)
    {
        MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult);
        if (row && row[0])
            accessMode = static_cast<BYTE>(atoi(row[0]));
    }

    g_mapAccessCache[lMapIndex] = accessMode;
    return accessMode;
}


Kod:
bool CHARACTER::IsMapAccessAllowed(long lMapIndex)
{
    BYTE accessMode = GetMapAccessMode(lMapIndex);

    switch (accessMode)
    {
    case 0:
        return false;         // Harita tamamen kapalı
    case 1:
        return true;          // Herkese açık
    case 2:
        return IsGM();        // Sadece GM'ler girebilir
    default:
        return true;
    }
}

Kod:
warpset fonksiyonunun en başına ekleyin.

if (!IsMapAccessAllowed(lMapIndex))
{
    if (GetDesc())
        ChatPacket(CHAT_TYPE_INFO, "Bu haritaya giriş şu anda kapalı.");
    return false;
}

Kod:
void ClearMapAccessCache()
{
    g_mapAccessCache.clear();
}
Bu fonksiyonu bir GM komutuna ya da reload sistemine bağlarsan cache güncellenir.

/map_access set 21 0
Şeklinde gm kodu olarak da yapılabilir
Veya günlük olarak aç kapa otomatik yapacak sistem de yapılabilir.
 
İçimden geldi quest olarak da vereyim aç kapayı
Kod:
quest mapcontrol begin
    state start begin
        when login with pc.is_gm() begin
            send_letter("Harita Kontrol Paneli")
        end

        when button or info begin
            say_title("Harita Erişim Paneli")
            say("Hangi harita kontrol edilecek?")
            local map_index = tonumber(input())

            say("Yeni erişim modu ne olsun?")
            say("0 = Tamamen kapalı")
            say("1 = Herkese açık")
            say("2 = Sadece GM")
            local mode = tonumber(input())

            if map_index and mode and (mode >= 0 and mode <= 2) then
                local query = string.format(
                    "REPLACE INTO map_access_control (map_index, access_mode) VALUES (%d, %d)",
                    map_index, mode
                )
                mysql_query(query)

                say_reward(string.format("Harita %d için mod %d olarak ayarlandı.", map_index, mode))
            else
                say("Geçersiz giriş yaptınız.")
            end
        end
    end
end

Kod:
void CHARACTER::ClearMapAccessCache()
{
    g_mapAccessCache.clear();
}
Kod:
{ "clear_map_access_cache", pc_clear_map_access_cache },

Kod:
questlua_pc.cpp
int pc_clear_map_access_cache(lua_State* L)
{
    ClearMapAccessCache();
    return 0;
}
Quest fonksiyonu
pc.clear_map_access_cache()
 
Son düzenleme:
0 = tamamen kapalı
1 = herkes girebilir (default)
2 = sadece GM girebilir

Chat.cpp en üste ekle
#i#includeunordered_map>
static std::unordered_map<long, BYTE> g_mapAccessCache;

Kod:
BYTE CHARACTER::GetMapAccessMode(long lMapIndex)
{
    auto it = g_mapAccessCache.find(lMapIndex);
    if (it != g_mapAccessCache.end())
        return it->second;

    char query[256];
    snprintf(query, sizeof(query), "SELECT access_mode FROM map_access_control WHERE map_index = %ld", lMapIndex);
    std::unique_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(query));

    BYTE accessMode = 1;

    if (msg->Get()->uiNumRows > 0)
    {
        MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult);
        if (row && row[0])
            accessMode = static_cast<BYTE>(atoi(row[0]));
    }

    g_mapAccessCache[lMapIndex] = accessMode;
    return accessMode;
}


Kod:
bool CHARACTER::IsMapAccessAllowed(long lMapIndex)
{
    BYTE accessMode = GetMapAccessMode(lMapIndex);

    switch (accessMode)
    {
    case 0:
        return false;         // Harita tamamen kapalı
    case 1:
        return true;          // Herkese açık
    case 2:
        return IsGM();        // Sadece GM'ler girebilir
    default:
        return true;
    }
}

Kod:
warpset fonksiyonunun en başına ekleyin.

if (!IsMapAccessAllowed(lMapIndex))
{
    if (GetDesc())
        ChatPacket(CHAT_TYPE_INFO, "Bu haritaya giriş şu anda kapalı.");
    return false;
}

Kod:
void ClearMapAccessCache()
{
    g_mapAccessCache.clear();
}
Bu fonksiyonu bir GM komutuna ya da reload sistemine bağlarsan cache güncellenir.

/map_access set 21 0
Şeklinde gm kodu olarak da yapılabilir
Veya günlük olarak aç kapa otomatik yapacak sistem de yapılabilir.
Bu şekilde kullanmak için nasıl ekleme yapabiliriz
 
İçimden geldi quest olarak da vereyim aç kapayı
Kod:
quest mapcontrol begin
    state start begin
        when login with pc.is_gm() begin
            send_letter("Harita Kontrol Paneli")
        end

        when button or info begin
            say_title("Harita Erişim Paneli")
            say("Hangi harita kontrol edilecek?")
            local map_index = tonumber(input())

            say("Yeni erişim modu ne olsun?")
            say("0 = Tamamen kapalı")
            say("1 = Herkese açık")
            say("2 = Sadece GM")
            local mode = tonumber(input())

            if map_index and mode and (mode >= 0 and mode <= 2) then
                local query = string.format(
                    "REPLACE INTO map_access_control (map_index, access_mode) VALUES (%d, %d)",
                    map_index, mode
                )
                mysql_query(query)

                say_reward(string.format("Harita %d için mod %d olarak ayarlandı.", map_index, mode))
            else
                say("Geçersiz giriş yaptınız.")
            end
        end
    end
end

Kod:
void CHARACTER::ClearMapAccessCache()
{
    g_mapAccessCache.clear();
}
Kod:
{ "clear_map_access_cache", pc_clear_map_access_cache },

Kod:
questlua_pc.cpp
int pc_clear_map_access_cache(lua_State* L)
{
    ClearMapAccessCache();
    return 0;
}
Quest fonksiyonu
pc.clear_map_access_cache()
benim şu offline shop a da el atsana AS:D
 

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

Geri
Üst