Questlerde item ile yapılan buglara acıklara bir çare

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Adımları sırasıyla takip ederseniz sorunsuz olarak questlere renkli yazılara yazabilirsiniz.

1.)Quest klasöründeki questlib dosyasını notepad ile açın.ve kodları en alta ekleyin.

Kod:
function say_color(color,text) if color=="blue" then say(color256(0, 0, 255)..text..color256(196, 196, 196)) elseif color == "green" then say(color256(0, 255, 0)..text..color256(196, 196, 196)) elseif color == "red" then say(color256(255, 0, 0)..text..color256(196, 196, 196)) elseif color == "yellow" then say(color256(255, 255, 0)..text..color256(196, 196, 196)) elseif color == "white" then say(color256(255, 255, 255)..text..color256(196, 196, 196)) elseif color == "black" then say(color256(0, 0, 0)..text..color256(196, 196, 196)) elseif color == "cyan" then say(color256(0, 255, 255)..text..color256(196, 196, 196)) elseif color == "pink" then say(color256(255, 0, 255)..text..color256(196, 196, 196)) elseif color == "orange" then say(color256(255, 145, 0)..text..color256(196, 196, 196)) elseif color == "purple" then say(color256(100, 0, 255)..text..color256(196, 196, 196)) else say(color256(196, 196, 196)..text..color256(196, 196, 196)) end end


2.) Yine Quest klasöründeki quest_functions dosyasını notepad ile açın ve kodları ekleyin.

Kod:
say_size say_color

3.) Reboot ve bitti

Sonra questinizde kullanırken

Kod:
say_color("green","Bu quest yeşil renklidir.")

green yerine renklerin ingilizcesi yazılarak renklendirilir.
quest_functions a bir de say_size ekledik. Bunla da yazının boyutunu ayarlayabilirsiniz.

Kod:
say_size(256, 512) say_color("black","Bu quest siyahtır ve harfler 256*512 büyüklüğündedir.")

Questlerde Item ile Oluşan Buglara ve Açıklara Karşı Çözümler

Metin2 sunucularında quest sistemleri, oyuncuların oyun içi deneyimini zenginleştirmek ve seviye atlama, item kazanma gibi ödüllerle motive edici yapılar sunmak için kritik öneme sahiptir. Ancak bazı durumlarda questlerde item kullanımı sırasında hatalar veya açıklar ortaya çıkabilir. Bu tür hatalar, hem sunucu güvenliğini hem de oyuncu deneyimini ciddi şekilde etkileyebilir. Bu yazıda, questlerde item ile yapılan buglara ve açıklara karşı alınabilecek önlemleri ve çözüm yollarını detaylı olarak ele alacağız.

Quest Sistemlerinde Item Kullanımı Nasıl Gerçekleşir?

Metin2 quest sistemleri genellikle Lua dilinde yazılmaktadır. Bir questin içinde item kontrolü, item ekleme, silme gibi işlemler yapılabilir. Örneğin bir oyuncuya belirli bir item verilmesi ya da quest tamamlandığında bir itemin silinmesi gibi işlemleri gerçekleştirebiliriz. Ancak bazı yazılım hataları ya da kötü niyetli kullanıcılar tarafından bu işlemler suistimal edilebilir.

Sık Karşılaşılan Hatalar ve Açıklar

1. Item Duplication (Çoğaltma): Bazı questlerde item verilmeden önce kontrol eksikliği olursa, aynı item birden fazla kez verilebilir. Bu durumda oyuncu elinde sınırsız iteme sahip olabilir.

2. Gereksiz Item Silme: Bir questin başlangıcında item silinmesi istenmişse ama kontrol eksikse, oyuncunun elinde item yokken bile silme işlemi çalışabilir ve sistem hatası oluşabilir.

3. Item Gereksinimi Kontrolü Eksikliği: Bir questte item verilmeden önce gerekli itemlerin kontrolü yapılmazsa, oyuncu item olmamasına rağmen ödülleri alabilir.

Buglara ve Açıklara Getirilen Çözümler

1. Item Kontrollerini Doğru Yazın

Quest scriptlerinde item kontrolleri her zaman doğru ve detaylı yazılmalıdır. Örneğin bir itemin elde varlığını kontrol ederken, sadece adı değil, miktarı da kontrol edilmelidir. Bu tür kontrolleri yaparken pc.count_item() fonksiyonunu kullanabilirsiniz.

2. Flag ve State Kullanımı

Questlerde flag ve state yapıları, questin hangi aşamada olduğunu takip etmek için idealdir. Oyuncunun questte daha önce item aldığını anlamak için flag kullanabilirsiniz. Bu sayede, aynı itemi tekrar alma ihtimali ortadan kalkar.

3. Trigger ve Timer Kullanımı

Bazı questlerde, item verildikten sonra kısa bir bekleme süresiyle tekrar item verilmesi engellenmelidir. Bu durumda timer veya trigger kullanarak, aynı işlemin tekrar tekrar yapılmasını önleyebilirsiniz.

4. Debug ve Test Aşaması

Her quest yazımı sonrası mutlaka test aşaması geçirilmeli ve olası hatalar debug edilmelidir. Bu sayede sunucuya aktarılmasından önce açıklar kapatılabilir.

Örnek Güvenli Script Yapısı

Kod:
[COLOR=green]if pc.count_item('item_vnum') >= 1 then[BR][/BR]    if pc.getqf('quest_flag') == 0 then[BR][/BR]        pc.remove_item('item_vnum', 1)[BR][/BR]        pc.give_item('reward_item_vnum', 1)[BR][/BR]        pc.setqf('quest_flag', 1)[BR][/BR]    else[BR][/BR]        chat('Zaten bu questten ödül almışsınız.')[BR][/BR]    end[BR][/BR]else[BR][/BR]    chat('Gerekli iteminiz bulunmamaktadır.')[BR][/BR]end[/COLOR]


Sonuç

Metin2 quest sistemlerinde item kullanımı sırasında oluşabilecek açıklar, dikkatli planlama ve kodlama ile kolaylıkla önlenebilir. Bu tür güvenlik açıklarını kapatarak, sunucunuzun hem performansını hem de güvenliğini artırabilirsiniz. Daha fazla quest scripti ve geliştirme ipucu için Metin2Lobby sitesini takip etmeyi unutmayın.


Solutions for Bugs and Exploits Related to Items in Quests

In Metin2 servers, quest systems are critical for enriching player experience and providing incentive structures like leveling up or earning items. However, sometimes errors or exploits may occur during item usage within quests. Such issues can seriously affect both server security and player experience. In this article, we will examine solutions and preventive measures against bugs and exploits related to item usage in quests in detail.

How Item Usage Works in Quest Systems?

Metin2 quest systems are generally coded in Lua. Within a quest, operations such as item checks, adding or removing items can be performed. For example, giving specific items to players or removing an item upon quest completion can be achieved. However, due to coding errors or malicious users, these operations might be exploited.

Common Errors and Exploits

1. Item Duplication: If item checks are missing in certain quests, the same item might be given multiple times. In this case, the player could end up with unlimited items.

2. Unnecessary Item Removal: If an item removal is intended at the start of a quest but there is no check beforehand, the system may attempt to remove an item even if the player doesn’t have it, causing errors.

3. Missing Item Requirement Check: If required items are not checked before rewarding, players might receive rewards without having the necessary items.

Solutions Against Bugs and Exploits

1. Write Correct Item Checks

Item checks in quest scripts should always be accurate and detailed. For instance, when checking for an item, not only its name but also quantity should be verified. You can use the function pc.count_item() for such checks.

2. Use Flags and States

Flag and state mechanisms in quests are ideal for tracking the current stage of a quest. You can use flags to ensure that a player does not receive the same reward multiple times.

3. Use Triggers and Timers

In some quests, after an item is given, a short delay should prevent receiving the same item again. Using timers or triggers, you can avoid repetitive actions.

4. Debugging and Testing Phase

After every quest creation, a testing phase must be conducted and potential errors should be debugged. This allows vulnerabilities to be fixed before deployment to the live server.

Example Secure Script Structure

Kod:
[COLOR=green]if pc.count_item('item_vnum') >= 1 then[BR][/BR]    if pc.getqf('quest_flag') == 0 then[BR][/BR]        pc.remove_item('item_vnum', 1)[BR][/BR]        pc.give_item('reward_item_vnum', 1)[BR][/BR]        pc.setqf('quest_flag', 1)[BR][/BR]    else[BR][/BR]        chat('You have already received a reward from this quest.')[BR][/BR]    end[BR][/BR]else[BR][/BR]    chat('You do not have the required item.')[BR][/BR]end[/COLOR]


Conclusion

Security loopholes related to item usage in Metin2 quest systems can be easily prevented through careful planning and coding. By closing such vulnerabilities, you can enhance both performance and security of your server. Don't forget to follow Metin2Lobby for more quest scripts and development tips.
 

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

Geri
Üst Alt