Haritaya Seviye Sınırı Koyma[LUA]

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 43

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhabalar,

Son zamanlarda çok fazla istek gördüm bu konu hakkında. Herkes haritalara seviye sınırı koymaya çalışıyor ve bir çok kişi sorunlu bir şekilde ekliyor yada hiç yapamıyor. Şimdi bu kodlamış olduğum sistem ile dilediğiniz haritaya seviye sınırı koyabileceksiniz. Çok basit üstelik. Tüm haritalarla tek tek uğraşmanız gerekmiyor. Nasıl yapacağınızı da anlatacağım.



Haritaya Seviye Sınırı Koyma - Dosyalar​





Haritaya Seviye Sınırı Koyma - ÖNEMLİ BİLGİLER​

Kaç tane haritaya seviye sınırı koyduysanız şu kısma onu yazıyorsunuz:

Kod:
kacAdetHaritaVar = 3

Daha sonra:

Kod:
function haritaKontrol(gelen_harita_kimlik) harita = { [1] = {61,70}, -- sohan dağı [2] = {62,60}, -- doyum [3] = {67,80} -- hayalet orman } return harita[gelen_harita_kimlik] end


Seviye sınırı koymak istediğiniz haritayı buradan düzenliyorsunuz.

Kod:
[1] = {61,70}, -- sohan dağı

Buradaki 61 o haritanın kimlik numarasıdır. 61'in hemen yanındaki 70 o haritaya kaç seviyede girileceğidir. Eğer haritanın kimlik numarasını bilmiyorsanız dert etmeyin. Bu sistemi eklediğinizde hangi haritaya ışınlanırsanız o haritanın kimlik numarasını görebileceksiniz. (Sadece oyun yöneticilerine görünür) Aşağıdaki gibi:

94k1Eo.jpg



ÖNEMLİ UYARI:

Yeni bir harita eklediğinizde aşağıdaki gibi ekleyeceksiniz:

Kod:
function haritaKontrol(gelen_harita_kimlik) harita = { [1] = {61,70}, -- sohan dağı [2] = {62,60}, -- doyum [3] = {67,80}, -- hayalet orman [4] = {103,105} -- Yönetici bölgesi } return harita[gelen_harita_kimlik] end


Gördüğünüz gibi yeni ekleme yaparken:

Kod:
[3] = {67,80}, -- hayalet orman

80 ifadesinden sonra " , " koydum. " , " koymazsanız fonksiyon çalışmaz. Ekleme yaparken dikkat edin.


Kodları indirmeden incelemek isteyenler için:

Kod:
quest isinlama_engel begin state start begin when login begin if pc.is_gm() then chat("Harita kimlik : "..pc.get_map_index()) end oyuncu_isinladigi_harita = pc.get_map_index() oyuncu_seviye = pc.get_level() kacAdetHaritaVar = 4 harita_kimlik = {} harita_giris_seviye = {} for i=1,kacAdetHaritaVar,1 do harita_bilgileri = { [1] = isinlama_engel.haritaKontrol(i)} harita_kimlik[i] = harita_bilgileri[1][1] harita_giris_seviye[i] = harita_bilgileri[1][2] end -- for i=1,kacAdetHaritaVar,1 do endi for i=1,kacAdetHaritaVar,1 do if oyuncu_isinladigi_harita == harita_kimlik[i] then if oyuncu_seviye < harita_giris_seviye[i] then syschat("Sistem: Bu haritaya girebilmek için seviyeniz uygun değil.") warp_to_village(oyuncu_isinladigi_harita) end -- if oyuncu_seviye < harita_giris_seviye[i] then end -- if oyuncu_isinladigi_harita == harita_kimlik[i] then endi end end --when login begin endi function haritaKontrol(gelen_harita_kimlik) harita = { [1] = {61,100}, -- sohan dağı [2] = {62,60}, -- doyum [3] = {67,80}, -- hayalet orman [4] = {103,105} -- Yönetici bölgesi } return harita[gelen_harita_kimlik] end -- function haritaKontrol(gelen_harita_kimlik) endi end -- state start begin endi end -- quest isinlama_engel begin endi

Haritaya Seviye Sınırı Koyma [LUA] Nedir?

Metin2 sunucularında güvenlik ve deneyim kalitesini artırmak için bazı bölgelerde seviye sınırlaması getirmek oldukça faydalıdır. Bu yazıda, Metin2 oyununda harita bazında oyuncu seviyesine göre erişimi sınırlandırmak amacıyla geliştirilen LUA tabanlı bir yöntemden bahsedeceğiz. Bu yöntem sayesinde, belirli seviyenin altındaki karakterlerin tehlikeli ya da gelişmiş alanlara girmesi engellenir.

Haritaya Seviye Sınırı Eklemek Neden Gerekli?

Oyuncuların ilerlemesini koruyarak daha dengeli bir oyun ortamı yaratmak, Metin2 gibi MMORPG oyunlarında kritik öneme sahiptir. Özellikle yeni başlayan oyuncuların çok güçlü düşmanların bulunduğu alanlara rastgele girmesi, hem can sıkıntısı yaşamasına neden olur hem de oyun içi dengeyi bozar. Bu tür alanlara seviye sınırlaması getirmek, oyuncuların hangi alana ne zaman girebileceğini bilmelerini sağlar.

LUA Script Kullanımı ile Uygulama

LUA, Metin2'nin sunucu tarafında kullanılan ana script dilidir. Oyuncu giriş çıkışları, harita değişiklikleri, görev sistemleri gibi birçok işlem LUA üzerinden kontrol edilir. Seviye sınırı uygulamak için, oyuncu bir haritaya giriş yaparken çalışan bir tetikleyici (trigger) fonksiyonu yazılır.

Örnek LUA Kod Yapısı:

Kod:
[B]function check_level_limit(map_index, player_level)[BR][/BR] local level_limits = {[BR][/BR] [1] = 10, -- map index 1 için min level 10[BR][/BR] [2] = 25, -- map index 2 için min level 25[BR][/BR] [3] = 40, -- map index 3 için min level 40[BR][/BR] }[BR][/BR][BR][/BR] if level_limits[map_index] and player_level < level_limits[map_index] then[BR][/BR] return false[BR][/BR] else[BR][/BR] return true[BR][/BR] end[BR][/BR]end[/B]


Kod Açıklaması:

Yukarıdaki kod parçası, belirli haritalar için minimum seviye değerlerini tanımlar. Oyuncu bir haritaya giriş yapmaya çalıştığında, bu fonksiyon çağrılır ve oyuncunun seviyesi ile haritanın izin verdiği minimum seviye karşılaştırılır. Eğer oyuncunun seviyesi yeterli değilse, giriş engellenir.

Uygulamada Dikkat Edilmesi Gerekenler

Hata ayıklama (debugging) süreci oldukça önemlidir. Yanlış bir indeks veya eksik bir koşul, tüm giriş sistemini bozabilir. Bu nedenle, test sunucusunda her zaman öncelikle küçük çaplı testler yapılmalıdır. Ayrıca, sunucu logları takip edilerek olası hatalar erken fark edilmelidir.

Sunucu Tarafında Entegrasyon

Bu tür bir sistem, genellikle Metin2 Quest Sistemi ile entegre çalışır. Oyuncunun haritaya giriş yapması bir görev tetikleyicisi (quest trigger) olabilir. Bu durumda,.quest dosyası içine bu kontrolün yazılması gerekir. Quest sistemine entegre edildiğinde, oyuncuya bir mesaj bile gösterilebilir: 'Bu bölgeye girmek için yeterli seviyeye ulaşmalısınız.'

Sonuç

Haritaya seviye sınırı koymak, Metin2 sunucularında deneyimi optimize etmenin etkili yollarından biridir. Doğru uygulandığında, yeni oyuncuların güvenli ilerlemesini sağlarken, yüksek seviyeli oyuncuların da uygun alanlarda oynamasını teşvik eder. LUA script teknik bilgisiyle bu işlem kolayca gerçekleştirilebilir.


What is Setting Level Limits on Maps [LUA]?

In Metin2 servers, applying level restrictions to certain areas helps enhance security and improve gameplay experience. In this article, we will discuss a LUA-based method for restricting access to specific maps based on player level in Metin2. This method prevents characters below a certain level from entering dangerous or advanced zones.

Why Is It Necessary to Apply Level Limits to Maps?

Creating a balanced gaming environment by supporting player progression is crucial in MMORPG games like Metin2. Especially for new players, randomly entering areas with powerful enemies can lead to frustration and disrupt the game balance. Applying level limits to such areas ensures that players know when they are eligible to enter specific zones.

Implementation Using LUA Scripts

LUA is the main scripting language used on the server side in Metin2. Player logins, map changes, quest systems, and many other actions are controlled via LUA. To apply a level limit, a trigger function is written that runs when a player attempts to enter a map.

Sample LUA Code Structure:

Kod:
[B]function check_level_limit(map_index, player_level)[BR][/BR] local level_limits = {[BR][/BR] [1] = 10, -- min level 10 for map index 1[BR][/BR] [2] = 25, -- min level 25 for map index 2[BR][/BR] [3] = 40, -- min level 40 for map index 3[BR][/BR] }[BR][/BR][BR][/BR] if level_limits[map_index] and player_level < level_limits[map_index] then[BR][/BR] return false[BR][/BR] else[BR][/BR] return true[BR][/BR] end[BR][/BR]end[/B]


Code Explanation:

The code snippet above defines minimum level values for specific maps. When a player tries to enter a map, this function is called, and the player's level is compared against the minimum required level for that map. If the player's level is insufficient, entry is denied.

Important Considerations During Implementation

Debugging is critical during this process. An incorrect index or missing condition could break the entire entry system. Therefore, small-scale tests should always be conducted first on a test server. Additionally, server logs should be monitored to detect potential errors early.

Server-Side Integration

Such a system typically works integrated with the Metin2 Quest System. A player's attempt to enter a map may act as a quest trigger. In this case, the check must be written inside the .quest file. When integrated into the quest system, a message can also be displayed to the player: 'You must reach the required level to enter this area.'

Conclusion

Setting level limits on maps is one of the effective ways to optimize gameplay in Metin2 servers. When applied correctly, it ensures safe progression for new players while encouraging high-level players to play in appropriate areas. With LUA scripting knowledge, this implementation can be easily achieved.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Geri
Üst Alt