2 Kişi ticaret yaparken dışarıdan gelen serbeste alsa bile vuruşu engeller.
Kısacası Türklerin yaptığı bir sistem
Noldu yani Türkler sistem yaptı da?
Alıp yabancı forumda'mı paylaştılar..
Ne yani milletin işine yaramadı mı? Bütün paylaşımlar
Her neyse Ticaret yapan iki kişiye damage atamıyorsunuz.
char_battle.cpp
açın
Arat
Altına Ekle.
battle.cpp
Açın
aratın
Altına Ekleriz
Sistemi geliştirip süre ekleyebilirsiniz.
WS'Lerde ticaret atarlar diye gelmeyin
Ws atanlara ticaret engeli koyun
veya onaylı ticaret ekleyin.
Çok isteyen olursa Ws'te ticaret engelini kodlayıp paylaşabilirim ..
Kısacası Türklerin yaptığı bir sistem
Noldu yani Türkler sistem yaptı da?
Alıp yabancı forumda'mı paylaştılar..
Ne yani milletin işine yaramadı mı? Bütün paylaşımlar
Her neyse Ticaret yapan iki kişiye damage atamıyorsunuz.
char_battle.cpp
açın
Arat
Kod:
bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)
Altına Ekle.
Kod:
if (pkVictim->GetExchange()) return false;
battle.cpp
Açın
aratın
Kod:
bool battle_is_attackable(LPCHARACTER ch, LPCHARACTER victim)
Altına Ekleriz
Kod:
if (victim->GetExchange()) return false;
Sistemi geliştirip süre ekleyebilirsiniz.
WS'Lerde ticaret atarlar diye gelmeyin
Ws atanlara ticaret engeli koyun
veya onaylı ticaret ekleyin.
Çok isteyen olursa Ws'te ticaret engelini kodlayıp paylaşabilirim ..
Metin2 Ticaret Sistemlerinde Damage Engeli Uygulamaları - C++ Tarafında Geliştirme
Metin2 özel sunucularında güvenlik ve denge açısından önemli bir konu olan ticaret sırasında damage alma engeli sistemleri, oyuncuların savaş ortamında ticaret yaparken saldırıya uğramaması için geliştirilmektedir. Bu yazıda C++ tabanlı game core üzerinde nasıl bir damage engeli sistemi geliştirileceği ele alınacaktır.
Ticaret Sistemi Nedir?
Ticaret, iki oyuncu arasında eşya ve altın transferi yapılmasını sağlayan temel sistemlerden biridir. Ancak bazı özel sunucularda, özellikle PvP odaklı sunucularda bu sistem kötüye kullanılabilir. Örneğin bir oyuncu saldırıya uğrar, sonra hızlıca bir rakipyle ticaret açarak combat durumunu sıfırlayabilir. Bu da haksız avantaj yaratır.
Sorun: Ticaret Sırasında Saldırıya Açık Kalma[/CHARSET]
Bazı sunucularda, oyuncular ticaret esnasında hâlâ damage alabiliyor veya saldırmaya devam edebiliyorlar. Bu, PvP deneyimini bozar ve adil olmayan durumlar yaratır. Bu nedenle, ticaret sırasında damage alma ve verme engeli getirmek hayati önem taşır.
C++ Tarafında Uygulama Adımları
1. Trade State Kontrolü:
Oyuncu trade sırasında özel bir state (durum) almalıdır. Bu state, battle başlamasını engellemelidir. C++ tarafında bu kontrol genellikle CHARACTER_MANAGER sınıfında yapılır.
2. Damage Alım Engeli:
Trade açıkken, oyuncuya damage gelmemelidir. Bu işlem, DamagePacket fonksiyonu içinde kontrol edilerek yapılabilir. Eğer bir oyuncu trade modundaysa, ona damage gönderimi engellenmelidir.
3. Combat Sıfırlama Engeli:
Trade sırasında combat durumu sıfırlanmamalıdır. Yani bir oyuncu combatdayken trade açamamalıdır veya trade açıldığında combat süresi bitse bile combat durumu korunmalıdır.
Uygulama Kodu Örneği (Basit)
Kod:
[B]bool CHARACTER::CanReceiveDamage() const {[/B][BR][/BR][B] if (IsTrading()) return false;[/B][BR][/BR][B] return true;[/B][BR][/BR][B]}[/B]
Yukarıdaki örnek, CHARACTER sınıfına ait bir fonksiyondur. Eğer oyuncu trade modundaysa, damage alımını engeller.
Sunucu-Side Güvenlik
Herhangi bir client tarafında yapılan manipülasyonları engellemek için tüm kontroller server-side yapılmalıdır. Python tabanlı uiscript sistemleriyle client tarafı desteklenirken, C++ tarafında game core üzerinden tüm güvenlik önlemleri alınmalıdır.
Sonuç
Metin2 özel sunucularında ticaret sırasında damage alma engeli, PvP deneyimini iyileştiren ve exploit kullanımını önleyen kritik bir sistemdir. C++ seviyesinde game core üzerinde geliştirilen bu tür sistemler, hem dengeyi hem de güvenliği sağlar. Martysama gibi geliştirici kaynakları takip ederek bu sistemleri daha da ileri taşıyabilirsiniz.
Implementing Damage Block During Trade in Metin2 - C++ Side Development
In Metin2 private servers, implementing a damage block during trade is an important security and balance feature that prevents players from being attacked while trading in combat situations. In this article, we will examine how to develop a damage block system on the C++ game core side.
What is the Trade System?
Trading is one of the fundamental systems that allows item and gold transfers between two players. However, on some private servers, especially PvP-oriented ones, this system can be exploited. For example, a player under attack might open trade with another player to reset their combat status unfairly. This creates an unfair advantage.
Problem: Vulnerability During Trading
On certain servers, players may still receive damage or continue attacking during trade. This ruins the PvP experience and leads to unfair gameplay. Therefore, blocking damage during trade becomes crucial for maintaining fairness.
Implementation Steps in C++
1. Trade State Control:
Players must enter a special state during trade which prevents battle initiation. This control is usually implemented within the CHARACTER_MANAGER class in C++.
2. Blocking Damage Reception:
While trade is active, players should not receive damage. This can be handled by checking the trade status inside the DamagePacket function, and blocking any damage sent to a player in trade mode.
3. Blocking Combat Reset:
Combat status should not reset during trade. If a player is in combat, they should not be allowed to initiate trade, or the combat timer should remain active even after trade begins.
Sample Code Implementation (Basic)
Kod:
[B]bool CHARACTER::CanReceiveDamage() const {[/B][BR][/BR][B] if (IsTrading()) return false;[/B][BR][/BR][B] return true;[/B][BR][/BR][B]}[/B]
The above example is a function belonging to the CHARACTER class. If the player is in trade mode, damage reception is blocked.
Server-Side Security
To prevent client-side manipulation, all checks must be done on the server-side. While Python-based uiscript systems support client-side features, security measures must be fully implemented through the C++ game core.
Conclusion
Implementing a damage block during trade in Metin2 private servers is a critical system that enhances the PvP experience and prevents exploit usage. Systems developed at the C++ game core level ensure both balance and security. You can further enhance these systems by following developer resources such as Martysama.
