Fethi Polat 1
Fethi Polat
Mt2Hizmet 1
Mt2Hizmet
Sevdamsın 1
Sevdamsın
Nedved35 1
Nedved35
Hikaye Ekle

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

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 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