Kod:
quest baslangic_kutusu begin state start begin when 50187.use begin if pc.getqf("baslangic_sandik") == 1 then --------------------- Bug Kontrol chat("Bu sandığı daha önce kullanmışsın.") return end if pc.get_level() != 1 then ----------------------------- Seviye Şartı chat("Bu sandık sadece 1. seviyede kullanılabilir.") return end say_reward("Sunucumuza Hoşgeldin "..pc.get_name().."") say_title("") -- bosluk say_sari("Bu sandığı yalnızca bir defa kullanabilirsin") say_sari("Ve Kullanabilmek için 1.seviye olman gerekir") say_sari("Bu sandığı açmak istediğine eminmisin?") local basliyoruz = select("Evet","Hayır") if basliyoruz == 1 then pc.setqf("baslangic_sandik",1) pc.remove_item("50187",1) pc.give_item2("72726",1) ---- Güneş Özütü (Ö) pc.give_item2("72730",1) ---- Ay Özütü (Ö) pc.give_item2("40003",1) ---- Işınlama Yüzüğü pc.give_item2("50053",1) ---- Askeri at kitabı pc.give_item2("71050",1) ---- Hız İksiri pc.give_item2("27112",1) ---- Yeşil İksir(B) pc.give_item2("72701",1) ----Rüzgarın Ayakkabıları pc.give_item2("70038",1) ----pelerin pc.give_gold("1000000") ---- 750K Başlangıç Parası pc.give_item2("13009",1) ---- Savaş Kalkanı+9 pc.give_item2("17009",1) ---- Tahta Küpe+9 pc.give_item2("14009",1) ---- Tahta Bilezik+9 pc.give_item2("16009",1) ---- Tahta Kolye+9 pc.give_item2("15009",1) ---- Deri Ayakkabı+9 if pc.get_job() == 0 then pc.give_item2("19",1) ---- Kılıç+9 pc.give_item2("11209",1) ---- Keşiş Plaka Zırh+9 pc.give_item2("12209",1) ---- Geleneksel Miğfer+9 return elseif pc.get_job() == 1 then pc.give_item2("1009",1) ---- Hançer+9 pc.give_item2("11409",1) ---- Gök Mavisi Takım+9 pc.give_item2("12349",1) ---- Deri Kapşon+9 return elseif pc.get_job() == 2 then pc.give_item2("19",1) ---- Kılıç+9 pc.give_item2("11609",1) ---- Ağıt Plaka Zırh+9 pc.give_item2("12489",1) ---- Kanlı Kask+9 return elseif pc.get_job() == 3 then pc.give_item2("7009",1) ---- Yelpaze+9 pc.give_item2("11809",1) ---- Gök Mavisi Elbise+9 pc.give_item2("12629",1) ---- Keşiş Şapkası+9 return end elseif basliyoruz == 2 then return end end end end
Metin2'de İstediğiniz Mapa (Bölgeye) Lv Sınırı Koyma (LUA) Rehberi #Karaca425
Metin2 sunucularında özel quest sistemleri, güvenlik önlemleri ve kullanıcı deneyimi açısından bazı bölgelere seviye sınırlaması getirmek isteyebilirsiniz. Bu rehberde, LUA dilinde yazılmış bir script yardımıyla istediğiniz haritaya(level map) seviye sınırı koymayı öğreneceksiniz.
Neden Lv Sınırı Gerekir?
Metin2 oyununda bazı alanlar yeni başlayan oyuncular için tehlikeli olabilir veya belirli seviyelerin altındaki karakterlerin girmesini istemeyebilirsiniz. Örneğin, güçlü düşmanlarla dolu bir dungeon veya özel bir PvP bölgesi gibi. Lv sınırı koymak, hem oyun dengesini korur hem de yeni başlayan oyuncuların güvende olmasını sağlar.
Scriptin Amacı
Bu LUA scripti, belirli bir haritada karakterin seviyesine bakarak giriş izni verir veya reddeder. Gerekirse oyuncuya bir mesaj gösterilir ve giriş engellenir.
Script Yapısı ve Kullanımı
Öncelikle quest dizinine yeni bir quest dosyası oluşturun. Örnek adlandırma: 'map_level_limit.quest'.
Kod Örneği:
Kod:
[BR][/BR]quest map_level_limit begin[BR][/BR] state start begin[BR][/BR] function on_enter_map() -- Haritaya girişte kontrol[BR][/BR] local required_level = 70 -- Girmek için gerekli seviye[BR][/BR] local current_map_index = pc.get_map_index()[BR][/BR][BR][/BR] if current_map_index == 123 then -- Belirli harita indexi (örneğin: Devias)[BR][/BR] if pc.get_level() < required_level then[BR][/BR] chat('Bu bölgeye girebilmeniz için en az '..required_level..' seviye olması gerekir!')[BR][/BR] pc.warp_to_village() -- Kasabaya geri gönder[BR][/BR] end[BR][/BR] end[BR][/BR] end[BR][/BR][BR][/BR] when login or enter begin[BR][/BR] on_enter_map()[BR][/BR] end[BR][/BR][BR][/BR] when logout or leave begin[BR][/BR] -- Gerekirse çıkışta işlemler[BR][/BR] end[BR][/BR] end[BR][/BR]end[BR][/BR]
Anlamı:
- pc.get_level(): Oyuncunun seviyesini alır.
- pc.get_map_index(): Oyuncunun bulunduğu haritanın indeksini döner.
- pc.warp_to_village(): Karakteri kasabaya geri gönderir.
- chat(): Oyuncuya bir mesaj gösterir.
Harita İndex Numarasını Bulmak
Her Metin2 haritasının benzersiz bir indeks numarası vardır. Bu değeri bulmak için sunucu dosyalarındaki 'locale/' klasöründeki 'mapindex.txt' dosyasını kontrol edin.
Güvenlik ve Hata Ayıklama
Quest sisteminde hata oluşması durumunda, server log dosyalarını kontrol ederek hatanın nerede olduğunu tespit edebilirsiniz. Özellikle LUA syntax hataları questin çalışmasını engeller.
Faydalı İpuçları
- Birden fazla haritaya aynı anda seviye sınırı eklemek isterseniz, 'if' koşuluna birden fazla harita indeksi ekleyebilirsiniz.
- Seviye sınırını global olarak tüm haritalara uygulamak istiyorsanız, 'if current_map_index' kontrolünü kaldırabilirsiniz.
Sonuç
Metin2 sunucularınızda kullanıcı deneyimini artırmak ve oyun içi dengeleri korumak adına Lv sınırı koymak oldukça faydalıdır. LUA tabanlı quest sistemleri sayesinde bu işlem kolayca yapılabilir ve özelleştirilebilir. Dilerseniz daha gelişmiş sistemler de entegre edebilirsiniz. Metin2 Lobby olarak quest sistemleriyle ilgili daha fazla bilgiyi sitemizde bulabilirsiniz.
How to Set Level Limit for Desired Map (Region) in Metin2 (LUA) #Karaca425
In Metin2 servers, special quest systems, security measures, and user experience may require you to set level limits for certain areas. This guide will teach you how to apply a level restriction to any desired map using a LUA-written script.
Why Do You Need a Level Limit?
In Metin2, some areas might be too dangerous for low-level players, or you may not want characters below a certain level to enter. For example, a dungeon filled with strong enemies or a specific PvP zone. Applying a level limit helps maintain game balance and ensures newer players stay safe.
Purpose of the Script
This LUA script checks the player's level upon entering a specific map and allows or denies access. Optionally, a message can be shown to the player, and entry can be blocked.
Script Structure and Usage
Firstly, create a new quest file inside your quest directory. Example name: 'map_level_limit.quest'.
Sample Code:
Kod:
[BR][/BR]quest map_level_limit begin[BR][/BR] state start begin[BR][/BR] function on_enter_map() -- Check upon entering the map[BR][/BR] local required_level = 70 -- Required level to enter[BR][/BR] local current_map_index = pc.get_map_index()[BR][/BR][BR][/BR] if current_map_index == 123 then -- Specific map index (example: Devias)[BR][/BR] if pc.get_level() < required_level then[BR][/BR] chat('You must be at least level '..required_level..' to enter this area!')[BR][/BR] pc.warp_to_village() -- Warp player back to village[BR][/BR] end[BR][/BR] end[BR][/BR] end[BR][/BR][BR][/BR] when login or enter begin[BR][/BR] on_enter_map()[BR][/BR] end[BR][/BR][BR][/BR] when logout or leave begin[BR][/BR] -- Perform actions if needed on exit[BR][/BR] end[BR][/BR] end[BR][/BR]end[BR][/BR]
Meaning:
- pc.get_level(): Retrieves the player's current level.
- pc.get_map_index(): Returns the map index where the player is located.
- pc.warp_to_village(): Sends the character back to the village.
- chat(): Displays a message to the player.
Finding the Map Index Number
Every Metin2 map has a unique index number. To find this value, check the 'mapindex.txt' file inside the 'locale/' folder of your server files.
Security and Debugging
If errors occur in the quest system, you can inspect the server log files to detect where the error occurred. Especially LUA syntax errors can prevent the quest from running properly.
Helpful Tips
- If you wish to add level limits to multiple maps at once, you can add more map indices to the 'if' condition.
- To apply the level limit globally across all maps, you can remove the 'if current_map_index' check.
Conclusion
Setting level limits in your Metin2 servers is highly beneficial for improving user experience and maintaining in-game balance. Thanks to LUA-based quest systems, this process can be done easily and customized. You can also integrate more advanced systems if desired. Visit Metin2 Lobby for more information about quest systems.
