[C++] Ticaret ve Pazar Sonrasın da Çıkış İçin 10 Saniye Beklemeyi Kaldırma

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
../Game/src/cmd_general.cpp aç arat;

Kod:
switch (subcmd) { case SCMD_LOGOUT: ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("·Î±×ÀΠȸéÀ¸·Î µ¹¾Æ °©´Ï´Ù. Àá½Ã¸¸ ±â´Ù¸®¼¼¿ä.")); break; case SCMD_QUIT: ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°ÔÀÓÀ» Á¾·á ÇÕ´Ï´Ù. Àá½Ã¸¸ ±â´Ù¸®¼¼¿ä.")); break; case SCMD_PHASE_SELECT: ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ij¸¯Å͸¦ Àüȯ ÇÕ´Ï´Ù. Àá½Ã¸¸ ±â´Ù¸®¼¼¿ä.")); break; }

Yukarıdaki kodları silin.
C++ ile Metin2 Ticaret ve Pazar Sonrası Çıkış İçin 10 Saniye Beklemeyi Kaldırma

Metin2 Private Sunucularında Oyun Deneyimi Geliştirme

Metin2 özel sunucularında oynayan oyuncuların karşılaştığı en can sıkıcı durumlardan birisi, ticaret veya pazar işlemleri sonrası sunucudan çıkış yaparken beklenen 10 saniyelik bekleme süresidir. Bu süre, oyuncu deneyimini olumsuz etkileyebilir ve özellikle hızlı hareket eden savaş sunucularında büyük bir dezavantaj yaratır. Bu makalede, C++ tabanlı game core üzerinde bu bekleme süresini nasıl kaldıracağımızı detaylıca ele alacağız.

Ticaret ve Pazar Sistemleri Nedir?

Metin2 oyununda ticaret (trade) ve pazar (safebox) işlemleri, oyuncuların eşya ve altın alışverişini gerçekleştirmeleri için kullanılır. Bu işlemler sırasında güvenlik önlemleri alınır; çünkü oyuncular eşya transferi yaparken sahte itemlerin veya hileli işlemlerin önüne geçmek için bazı gecikmeler getirilmiştir. Bunlardan birisi de işlem sonunda oyundan çıkma veya harita değiştirme gibi eylemler için 10 saniyelik bir bekleme süresidir.

C++ Kaynak Kodlarında Nerede Ayarlanır?

Bu bekleme süresi genellikle game core içindeki CInputMain sınıfında veya CInstanceBase sınıfında tanımlanmıştır. Kaynak koddaki anahtar kelime olarak GetTradeTimePassed() veya benzeri fonksiyonlar aranabilir. Bu fonksiyon, trade veya safebox kullanıldıktan sonra geçen süreyi kontrol eder. Bu kontrolü geçersiz kılmak veya sıfırlamak, bekleme süresini ortadan kaldırır.

Nasıl Yapılır?

Öncelikle game/src/char.cpp dosyasını açın. Burada bulunan CloseSafebox() ve EndShopping() fonksiyonlarını inceleyin. Bu fonksiyonların sonunda, m_dwTradeTime = 0; şeklinde bir satır ekleyerek trade zamanlayıcısını sıfırlayabilirsiniz. Ayrıca CInputMain::OnPressPacket fonksiyonunda, çıkış komutları geldiğinde trade ve safebox zamanlayıcı kontrolünü geçici olarak devre dışı bırakabilirsiniz.

Kod Örneği:

if (IsOpenSafebox() || IsTrading()) {
m_dwTradeTime = 0; // Trade zamanlayıcısını sıfırla
}

Sunucu Tarafında Güvenlik Etkileri

Bu değişikliğin hile veya exploit riskini artırabileceği düşünülse de, doğru uygulandığında sadece kullanıcı deneyimini artırır. Ancak, client tarafında manipülasyon yapılmasını engellemek için auth ve db core ile uyumlu bir yapı kurulmalıdır. Özellikle Martysama gibi gelişmiş src yapılarında, güvenlik katmanları daha özenli ayarlanmalıdır.

Sonuç

Metin2 özel sunucularında oyuncu memnuniyetini artırmak için ticaret ve pazar işlemleri sonrası bekletmeyi kaldırmak, küçük ama etkili bir iyileştirmedir. C++ tabanlı source edit işlemleri ile bu değişikliği kolayca uygulayabilirsiniz. Bu işlem, game server programming bilginizi derinleterek hem teknik hem de oyun deneyimi açısından katkı sağlar. Metin2Lobby olarak bu gibi gelişmeleri takip etmeye devam edin.


Removing the 10 Second Wait for Exit After Trade and Safebox in C++

Improving Game Experience on Metin2 Private Servers

One of the most annoying issues players face on Metin2 private servers is the 10-second wait required after completing trade or safebox operations before exiting the game. This delay negatively impacts the gaming experience and creates significant disadvantages, especially in fast-paced PvP servers. In this article, we will thoroughly examine how to remove this waiting time by modifying the C++-based game core.

What Are Trade and Safebox Systems?[/BR][/BR]
In Metin2, trade and safebox operations are used for players to exchange items and gold. Security measures are applied during these operations to prevent fake items or fraudulent activities. One such measure is a 10-second delay before actions like logging out or changing maps after completing trade or safebox usage.

Where Is It Configured in C++ Source Code?

This waiting period is typically defined within the CInputMain or CInstanceBase classes in the game core. Key functions like GetTradeTimePassed() can be searched in the source code. This function checks the elapsed time since trade or safebox usage. Overriding or resetting this function removes the waiting restriction.

How Is It Done?

First, open the game/src/char.cpp file. Examine the CloseSafebox() and EndShopping() functions. At the end of these functions, add a line such as m_dwTradeTime = 0; to reset the trade timer. Additionally, in the CInputMain::OnPressPacket function, you can temporarily disable the trade and safebox timer check when logout commands arrive.

Code Example:

if (IsOpenSafebox() || IsTrading()) {
m_dwTradeTime = 0; // Reset trade timer
}

Security Implications on Server Side

Although this modification might seem to increase exploit risks, if implemented correctly, it only enhances user experience. However, to prevent client-side manipulation, a structure compatible with auth and db core must be established. Especially in advanced structures like Martysama, security layers must be carefully configured.

Conclusion

Removing the post-trade and safebox waiting time is a small but effective improvement to increase player satisfaction on Metin2 private servers. You can easily implement this change with C++-based source edit operations. This process deepens your game server programming knowledge and contributes both technically and in terms of gameplay. Keep following such developments at Metin2Lobby.
 

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

Benzer konular

Geri
Üst Alt