- Katılım
- 8 Haz 2024
- Konular
- 85
- Mesajlar
- 526
- Online süresi
- 2mo 12d
- Reaksiyon Skoru
- 407
- Altın Konu
- 0
- Başarım Puanı
- 121
- MmoLira
- 3,278
- DevLira
- 189
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!
welberwden gördüm hoşuma gitti bende neden olmasın ki dedim ama bunu questflagla butona atamalı şekilde yapılabilir gerçi tavsiye etmiyorum zehirli oktur questflag
üşengeç bi insanım şimdi on numara elit bi anlatım çıkarmakla uğraşamiyacam anlayın halimi
char.cpp açılır
arat ve bul aşko
if (!CMapLocation::instance().Get(x, y, lMapIndex, lAddr, wPort))
{
sys_err("cannot find map location index %d x %d y %d name %s", lMapIndex, x, y, GetName());
return false;
}
altına şu kodu ekle aşko
if (!IsMapAccessAllowed(lMapIndex))
{
if (GetDesc())
ChatPacket(CHAT_TYPE_INFO, "Bu haritaya giriş şu anda kapalı.");
return false;
}
warpset üstüne bu fonksiyonu ekle aşko
bool IsMapAccessAllowed(long lMapIndex)
{
char query[256];
snprintf(query, sizeof(query), "SELECT access_enabled FROM map_access_control WHERE map_index = %ld", lMapIndex);
std::unique_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(query));
if (msg->Get()->uiNumRows == 0)
return true;
MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult);
return row && row[0] && atoi(row[0]) != 0;
}
tamamdır aşko şimdi şu query yi okutuyosun aşko
CREATE TABLE IF NOT EXISTS map_access_control (
map_index INT PRIMARY KEY,
access_enabled TINYINT(1) NOT NULL DEFAULT 1
);
kanıt from my çokletbar
0 yaparsanız girmez 1 yaparsanız girer anlık çalışır iyi kullanımlar şapşikler <3
üşengeç bi insanım şimdi on numara elit bi anlatım çıkarmakla uğraşamiyacam anlayın halimi

char.cpp açılır
arat ve bul aşko
if (!CMapLocation::instance().Get(x, y, lMapIndex, lAddr, wPort))
{
sys_err("cannot find map location index %d x %d y %d name %s", lMapIndex, x, y, GetName());
return false;
}
altına şu kodu ekle aşko
if (!IsMapAccessAllowed(lMapIndex))
{
if (GetDesc())
ChatPacket(CHAT_TYPE_INFO, "Bu haritaya giriş şu anda kapalı.");
return false;
}
warpset üstüne bu fonksiyonu ekle aşko
bool IsMapAccessAllowed(long lMapIndex)
{
char query[256];
snprintf(query, sizeof(query), "SELECT access_enabled FROM map_access_control WHERE map_index = %ld", lMapIndex);
std::unique_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(query));
if (msg->Get()->uiNumRows == 0)
return true;
MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult);
return row && row[0] && atoi(row[0]) != 0;
}
tamamdır aşko şimdi şu query yi okutuyosun aşko
CREATE TABLE IF NOT EXISTS map_access_control (
map_index INT PRIMARY KEY,
access_enabled TINYINT(1) NOT NULL DEFAULT 1
);
kanıt from my çokletbar
0 yaparsanız girmez 1 yaparsanız girer anlık çalışır iyi kullanımlar şapşikler <3
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
C++:Aktif sunucuda gereksiz yük oluşturur. Performans düşüklüğüne sebep olur. Cache olarak kullanılabilir. std::unordered_map<long, bool> g_mapAccessCache; bool CHARACTER::IsMapAccessAllowed(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_enabled FROM map_access_control WHERE map_index = %ld", lMapIndex); std::unique_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(query)); bool result = true; if (msg->Get()->uiNumRows > 0) { MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult); result = row && row[0] && atoi(row[0]) != 0; } g_mapAccessCache[lMapIndex] = result; return result; }
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.
Son düzenleme:
En Çok Reaksiyon Alan Mesajlar
C++:Aktif sunucuda gereksiz yük oluşturur. Performans düşüklüğüne sebep olur. Cache olarak kullanılabilir. std::unordered_map<long, bool> g_mapAccessCache; bool CHARACTER::IsMapAccessAllowed(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_enabled FROM map_access_control WHERE map_index = %ld", lMapIndex); std::unique_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(query)); bool result = true; if (msg->Get()->uiNumRows > 0) { MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult); result = row && row[0] && atoi(row[0]) != 0; } g_mapAccessCache[lMapIndex] = result; return result; }
- Katılım
- 8 Haz 2024
- Konular
- 85
- Mesajlar
- 526
- Online süresi
- 2mo 12d
- Reaksiyon Skoru
- 407
- Altın Konu
- 0
- Başarım Puanı
- 121
- MmoLira
- 3,278
- DevLira
- 189
rica ederim iyi kullanımlarPaylaşım için teşekkürler.
- Katılım
- 22 Eki 2024
- Konular
- 27
- Mesajlar
- 268
- Online süresi
- 1mo 3d
- Reaksiyon Skoru
- 166
- Altın Konu
- 0
- Başarım Puanı
- 74
- MmoLira
- 2,281
- DevLira
- 42
şeyi merak ettim denermisin ışınlanma yüzüğüyle ışınlanırken bir hata oluşuyormu questte.rica ederim iyi kullanımlar
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 8
- Görüntüleme
- 296
- Cevaplar
- 0
- Görüntüleme
- 266
- Cevaplar
- 9
- Görüntüleme
- 432
- Cevaplar
- 33
- Görüntüleme
- 2K

