Herkese Merhaba
Sistemin İşleyisi Hakkında Bilgi Verir Misin?
1: Oyun Yöneticileri Quest/Lua Dosyalarını Düzenleyerek Harita Kısıtlamayı Tetiklettirebilirler.
2: Oyuncu Haritaya Girmek İçin NPC'ye Tıklar ve Giriş İçin Quest/Lua Penceresi Açılır.
3: Oyuncuya Gireceği Haritada Metin Taşı yada Canavar Kesmesi İçin Seçenek Verilir.
4: Oyuncu Bu 2 Seçenekten 1 Tanesini Seçer.
5: Haritaya Giriş İşlemi Yapılır.
6: Eğer Oyuncu Metin Taşını Seçmiş İse Canavarlara Herhangi Bir Hasar Veremez.
7: Eğer Oyuncu Canavar'ı Seçmiş İse Metin Taşlarına Herhangi Bir Hasar Veremez.
Sistem Hakkında Birkaç Görsel ve Video Bırakıyorum.
Quest/Lua Penceresi
Sistemin İşleyisi Hakkında Bilgi Verir Misin?
1: Oyun Yöneticileri Quest/Lua Dosyalarını Düzenleyerek Harita Kısıtlamayı Tetiklettirebilirler.
2: Oyuncu Haritaya Girmek İçin NPC'ye Tıklar ve Giriş İçin Quest/Lua Penceresi Açılır.
3: Oyuncuya Gireceği Haritada Metin Taşı yada Canavar Kesmesi İçin Seçenek Verilir.
4: Oyuncu Bu 2 Seçenekten 1 Tanesini Seçer.
5: Haritaya Giriş İşlemi Yapılır.
6: Eğer Oyuncu Metin Taşını Seçmiş İse Canavarlara Herhangi Bir Hasar Veremez.
7: Eğer Oyuncu Canavar'ı Seçmiş İse Metin Taşlarına Herhangi Bir Hasar Veremez.
Sistem Hakkında Birkaç Görsel ve Video Bırakıyorum.
Quest/Lua Penceresi
Player.SQL Tablosu
Metin Keseceğim'i Seçtiğim İçin Canavarlara Herhangi Bir Atakta Bulunamıyorum.
Metin Keseceğim'i Seçtiğim İçin Metinlere Vurabiliyorum.
Karakter Değişikliği Yaptım ve Tekrar Aynı Haritaya Girdiğimde Düzen Asla Bozulmaz.
Diğer Kontrollerin Hakkında Bilgi Verir Misin?
1: Kısıtlı Haritadan Çıktıktan Sonra Diğer Haritalarda Herhangi Bir Problem Yaşanmaz.
Quest/Lua'daki Kullanım Mantığını Biraz Anlatır Mısın?
İndreceğiniz Dosyada Örnek Quest Verilmiştir.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Metin2 Haritaları Kısıtlama Sistemi: Canavar veya Metin Taşı Taşıma Kısıtlaması
Metin2 özel sunucularında geliştirme yaparken bazı haritalarda belirli nesnelerin taşınmasını engellemek isteyebilirsiniz. Özellikle PvP sunucularda harita güvenliği ve dengeli oyun deneyimi sağlamak adına bazı eşyaların sadece belirli alanlarda kullanılabilir veya taşınabilir olması önemlidir. Bu yazıda, sadece canavar veya Metin Taşı gibi özel eşyaların belirli haritalarda taşınmasını kısıtlayan bir C++/SQL tabanlı sistemi ele alacağız.
Kısıtlama Sisteminin Amacı
Bu sistem, oyuncuların bazı eşyaları korunmasız alanlara taşımasını engeller. Özellikle Metin Taşı gibi değerli eşyaların, güvenli olmayan haritalarda taşınması sunucu içi oyun dengesini bozabilir. Aynı zamanda, PvP odaklı sunucularda canavar eşyalarının taşınamaz hale getirilmesi, oyun içi güvenlik önlemlerini artırabilir.
C++ Tarafında Uygulanacak Kodlama
Öncelikle, oyun sunucusunun C++ kaynak kodlarında belirli haritalarda eşya taşınmasını kontrol eden fonksiyonları değiştirmemiz gerekir. Bunun için char_item.cpp dosyasındaki CanMoveItemToMap fonksiyonu üzerinde çalışacağız. Bu fonksiyon, bir eşyanın belirli bir haritaya taşınıp taşınmayacağını kontrol eder.
Aşağıda örnek bir fonksiyon yapısı verilmiştir:
bool CanMoveItemToMap(LPCHARACTER ch, LPITEM item, long mapIndex)
{
int vnum = item->GetVnum();
// Metin Taşı veya Canavar eşyası kontrolü
if (vnum == 71000 || vnum == 71001 || vnum == 72000) {
// Belirli haritalarda taşınamaz yap
if (mapIndex == 10 || mapIndex == 20 || mapIndex == 30) {
return false;
}
}
return true;
}
SQL Veritabanı Ayarlamaları
Bu sistemi daha esnek hale getirmek için, eşya ID'leri ve harita indekslerini bir SQL tablosunda saklayabiliriz. Örneğin restricted_items adında bir tablo oluşturabiliriz:
CREATE TABLE restricted_items (
id INT AUTO_INCREMENT PRIMARY KEY,
item_vnum INT NOT NULL,
restricted_map_index INT NOT NULL
);
Bu tabloya örnek veri ekleyelim:
INSERT INTO restricted_items (item_vnum, restricted_map_index) VALUES (71000, 10), (71001, 20);
Faydalar ve Güvenlik
Bu tür bir sistem sayesinde, oyuncuların hileli yollarla eşyaları taşımaları engellenir. Ayrıca, PvP sunucularda Metin Taşı gibi kritik eşyaların korunması sağlanarak oyun içi denge korunur. Oyuncular bu tür eşyaları sadece belirlenen güvenli bölgelerde taşıyabilirler.
Sonuç olarak, Metin2 özel sunucularında güvenlik ve denge için geliştirilen bu sistem, hem oyun deneyimini artırır hem de sunucu yöneticilerine daha fazla kontrol sağlar. C++ ve SQL tabanlı geliştirmeyle bu tür özelleştirilmiş sistemler kolayca entegre edilebilir.
Metin2 Map Restriction System: Monster or Metin Stone Transport Limitation
When developing private Metin2 servers, you may want to restrict the transport of certain items on specific maps. Especially on PvP-oriented servers, ensuring that valuable items such as Metin Stones are only usable or transportable within certain areas helps maintain game balance and security. In this article, we will explore a C++/SQL-based system that restricts the movement of special items like monsters or Metin Stones to designated maps only.
Purpose of the Restriction System
This system prevents players from moving certain valuable items into unsafe areas. For instance, carrying high-value items like Metin Stones into unsecured maps can disrupt in-game balance. Similarly, making monster-related items non-transferable in PvP-focused maps increases overall game security.
Coding Implementation in C++
Firstly, we need to modify functions in the game server’s C++ source code that control item transport on certain maps. We will focus on the CanMoveItemToMap function located in the char_item.cpp file. This function checks whether an item can be moved to a specific map.
Here is an example structure of the function:
bool CanMoveItemToMap(LPCHARACTER ch, LPITEM item, long mapIndex)
{
int vnum = item->GetVnum();
// Check for Metin Stone or Monster Item
if (vnum == 71000 || vnum == 71001 || vnum == 72000) {
// Restrict movement on certain maps
if (mapIndex == 10 || mapIndex == 20 || mapIndex == 30) {
return false;
}
}
return true;
}
SQL Database Configuration
To make the system more flexible, we can store item IDs and map indices in an SQL table. For example, we can create a table named restricted_items:
CREATE TABLE restricted_items (
id INT AUTO_INCREMENT PRIMARY KEY,
item_vnum INT NOT NULL,
restricted_map_index INT NOT NULL
);
Then, insert sample data:
INSERT INTO restricted_items (item_vnum, restricted_map_index) VALUES (71000, 10), (71001, 20);
Benefits and Security
With such a system in place, players are prevented from transporting items through unauthorized means. Additionally, by securing critical items like Metin Stones in PvP servers, in-game balance is maintained. Players can only carry these types of items in designated safe zones.
In conclusion, this kind of system developed for Metin2 private servers enhances both gameplay experience and server management by providing greater control over valuable items. Customized systems like this can be easily integrated using C++ and SQL-based development.
