[C++] Demircinin Başarısız Olması Yerine Seviye Düşürmesi

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

Admin

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


Metin2 özel sunucularında demircilik sistemi, oyuncuların silah ve zırh gibi ekipmanlarını güçlendirmek için kullandığı önemli bir özelliktir. Ancak bazı durumlarda, demircilik deneyimi başarısızlıkla sonuçlanabilir. Bu durumda, oyuncuların ekipman seviyesinin düşmesi yerine sadece başarısız olması tercih edilebilir. Bu yazıda, C++ tabanlı game core üzerinde demircinin başarısız olmasının yerine seviye düşürülmemesi için nasıl bir sistem geliştirileceğini detaylıca inceleyeceğiz.

Öncelikle, Metin2 oyununda demircilik işlemi genellikle refine (yani yükseltme) olarak bilinir. Bu işlem sırasında, oyuncu belirli malzemeleri ve para harcayarak eşyasını bir sonraki seviyeye yükseltmeyi dener. Ancak yükseltme başarısız olursa, eski sistemlerde eşyanın seviyesi düşebilirdi. Bu, oyuncular için ciddi bir dezavantaj teşkil ederdi.

Yeni geliştirilen sistemlerde ise, başarısızlık durumunda eşya seviyesi düşmez; sadece işlem sonucu başarısız olur. Bu sayede oyuncuların zarar etmeden yükseltme yapabilmesi sağlanır. Bu tür sistemler, PvP sunucularında özellikle tercih edilir çünkü oyuncular güçlü ekipmanlarla savaşmak isterler ama risk almak istemezler.

Bu sistemin C++ kod tarafında nasıl uygulanacağına gelirsek, öncelikle refine işlemini yöneten fonksiyonu değiştirmemiz gerekir. Game Core üzerinde, genellikle char_refine.cpp gibi bir dosya bu işlemi gerçekleştirir. Burada, yükseltme olasılığı hesaplandıktan sonra, başarısızlık durumunda eşya seviyesinin azaltılması yerine, sadece mesaj gönderilmesi sağlanmalıdır.

Ayrıca, Python tabanlı UIScript veya Py GUI üzerinden kullanıcı arayüzüne, yükseltmenin başarısız olma ihtimali yerine 'deneme' mantığıyla çalıştığı belirtilmelidir. Bu sayede oyuncular, işlemde herhangi bir kayıp yaşamadan deneyim sürebilirler.

Sistemde DB Core ile de entegrasyon önemlidir. Başarısızlık durumunda eşya verisi değişmeyeceği için, database tarafında da bu kontrolü yapan sorguların doğru ayarlanması gerekir. Bu, hem sunucu güvenliğini artırır hem de veri bütünlüğünü sağlar.

Sonuç olarak, Metin2 özel sunucularında demircilik sisteminin daha adil ve oyuncu dostu hale getirilmesi için, başarısız olma yerine seviye koruma sistemi uygulanmalıdır. Bu sistem, C++ tabanlı source edit işlemleriyle kolayca entegre edilebilir. Bu tür gelişmeler, Metin2 Development dünyasında kaliteli ve rekabetçi sunucuların oluşmasına yardımcı olur.

Kaynak Kod: Martysama gibi bilinen sistemlerde bu tür geliştirmeler örnek alınabilir. Metin2Dev toplulukları da bu konuda birçok örnek sunmaktadır.


Blacksmithing system in Metin2 private servers is a vital feature that allows players to enhance their weapons and armor. However, there are cases where the blacksmithing attempt may fail. In such cases, it is often preferred that the item's level does not decrease upon failure. This article explains in detail how to develop a system on the C++ based game core where the item's level remains unchanged even if the blacksmithing process fails.

Firstly, the blacksmithing process in Metin2 is commonly known as refining. During this process, players attempt to upgrade their items by spending materials and money. However, in older systems, if the upgrade failed, the item's level would decrease, which was a significant disadvantage for players.

In newer developed systems, the item level does not decrease upon failure; instead, the upgrade attempt simply results in failure. This allows players to upgrade without the risk of losing their equipment's power. Such systems are especially preferred in PvP servers because players want strong gear but do not wish to take high risks.

Regarding how this system is implemented on the C++ side, we need to modify the function that handles the refining process. In the Game Core, typically a file like char_refine.cpp manages this operation. Here, after calculating the success probability, the code should only send a message indicating failure rather than decreasing the item's level upon failure.

Additionally, the user interface built with Python-based UIScript or Py GUI should indicate that the refine process works more like an 'attempt' rather than risking a downgrade. This way, players can experiment without any loss of item value.

Integration with DB Core is also important. Since the item data does not change upon failure, database queries must be correctly configured to reflect this behavior. This enhances both server security and data integrity.

In conclusion, to make the blacksmithing system in Metin2 private servers more fair and player-friendly, a system that preserves the item level upon failure should be implemented. This system can easily be integrated using C++-based source edit processes. Such improvements contribute to the creation of quality and competitive servers in the Metin2 Development scene.

Source Code: Systems like Martysama offer examples of such implementations. Metin2Dev communities provide many resources regarding these topics.
 

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

Benzer konular

Geri
Üst Alt