Bineklerin geriye atma ve senkronizasyon sorunu çözümü

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhaba, Daha önce paylaşılan ( ) konudaki çözüm çok fazla sıkıntıya yol açabileceğinden gerçek çözümünü paylaşmak istedim, yaklaşık 3-4 sene önce farkettiğim bir problemdi hala doğru düzgün bir çözümünün paylaşılmaması üzücü.

Öncelikle bahsettiğim konudaki çözümden farkını söyleyeyim. Önceki konuda direkt 2 hareket arasındaki mesafenin kontrolünü artırarak(ya da direk iptal ederek) pek çok probleme yol açabilir. Işınlanma hilesi, Senkronizasyon ile yapılan oyundan atma hilesi, Mobları harita dışına taşıyarak full canla öldürebilme vs vs...

Sorunun nasıl bir şey olduğunu göstermek gerekirse;

İlk problem, Binek ile hareket ederken ilerledikten sonra karakteri geriye ışınlaması.
Bunun için video bulamadım muhtemelen ne demek istediğimi anlamışsınızdır.

Diğer problem, Binek ile hareket edip uzaklaştıktan sonra indiğinizde etrafdaki NPClerin görünmez kalması



Çözüm için;
Source sourcelerinden game source klasöründen ve char_affect.cpp dosyasını açın.

Burada bulmanız gereken yer 2 farklı şekilde olabilir.

Düzenlenmemiş kodlarda:
Kod:
if (AFFECT_REVIVE_INVISIBLE != pkAff->dwType)     {         ComputePoints();     }

Görünmezlik bugu için sonradan düzenlenmiş kodlarda:
Kod:
if (AFFECT_REVIVE_INVISIBLE != pkAff->dwType)         ComputePoints();     else         UpdatePacket();


Bu kısmı bulduktan sonra aşağıdaki şekilde düzenlemeniz gerekiyor:
Kod:
if (AFFECT_REVIVE_INVISIBLE != pkAff->dwType && AFFECT_MOUNT != pkAff->dwType)         ComputePoints();     else         UpdatePacket();


Örnek:
piqyi0.png

Metin2 özel sunucularında oynayan oyuncuların karşılaştığı yaygın sorunlardan birisi de bineklerin geriye atma ve senkronizasyon problemleridir. Bu durum, özellikle PvP sistemlerinde büyük bir dezavantaj yaratır ve oyun deneyimini ciddi şekilde etkileyebilir. Bu yazıda, Metin2 özel sunucu geliştiricilerinin sıkça karşılaştığı binek geri atma ve senkronizasyon sorunlarını detaylı olarak ele alacağız. Ayrıca bu sorunların neden kaynaklandığını ve nasıl çözülebileceğini açıklayacağız.

Binek Sistemi Nasıl Çalışır?
Metin2 oyununda binekler, karakterin hızını artırmak ve daha hızlı seyahat etmek amacıyla kullanılır. Ancak bazı özel sunucularda bineklerin kontrolü ve senkronizasyonu eksik kalmıştır. Özellikle C++ tabanlı sunucularda game server tarafında eksiklikler olabilir. Bu da karakterin bineğe bindiği halde bazı oyuncuların bunu görememesine veya karakterin birdenbire bineğinden düşmesine neden olabilir.

Sık Karşılaşılan Sorunlar
Metin2 özel sunucularda şu ana sorunlar sıklıkla görülür:
- Karakter bineğe bindiği halde diğer oyuncular tarafından görünmeme.
- Oyuncu bineğe bindikten sonra birdenbire geri atma.
- Binek animasyonları senkronize olmama.
- Sunucuda binek verisi eksikliği veya çakışması.

Neden Kaynaklanır?
Bu tür sorunlar genellikle server-side yapılandırmaların eksik veya hatalı olması sonucu ortaya çıkar. Özellikle auth ve game sunucuları arasında veri aktarımı sırasında bir aksaklık varsa, binek bilgileri doğru şekilde senkronize edilemez. Ayrıca client-side değişiklikler de bu sorunlara neden olabilir. Örneğin uiscript dosyalarında yapılan yanlış düzenlemeler, binek animasyonlarının düzgün gösterilmemesine yol açabilir.

Teknik Çözüm Yolları
Bu sorunları çözmek için öncelikle server-side kodları incelenmelidir. Game server src üzerinde binek sistemiyle ilgili fonksiyonlar kontrol edilmeli ve gerekli düzeltmeler yapılmalıdır. Örneğin horse.cpp ve char_horse.cpp gibi dosyalar incelenmeli. Ayrıca db core kısmında binek verilerinin doğru şekilde tutulup tutulmadığı kontrol edilmelidir.

Ayrıca Python tabanlı system dosyalarında (py root) yapılan değişikliklerin binek sistemini etkileyip etkilemediği test edilmelidir. Martysama gibi Metin2 geliştirme platformlarında bulunan hazır sistemlerden faydalanmak da bu konuda yardımcı olabilir.

Sunucu Derleme ve Paketleme
Binek sistemini düzelttikten sonra sunucuyu derlemek (compile) ve test etmek önemlidir. Bu işlem sırasında pack yapısı da dikkate alınmalıdır. Client src tarafında locale ve root klasörlerinde yapılan değişikliklerin paketleme sırasında doğru yansıması sağlanmalıdır. Aksi takdirde binek verileri eksik veya hatalı aktarılabilir.

Sonuç
Metin2 özel sunucularında binek sistemlerinin doğru çalışması, hem PvP performansını hem de genel oyun deneyimini doğrudan etkiler. Bu nedenle sunucu geliştiricileri, bineklerin senkronizasyonu ve kullanıcıya doğru yansıtılması konusunda titiz davranmalıdır. C++ ve Python tabanlı sistemlerde yapılan her değişikliğin detaylı test edilmesi, bu tür sorunların önlenmesi açısından kritiktir.


Metin2 players on private servers often face common issues related to mounts throwing characters backwards or experiencing synchronization problems. This issue creates a significant disadvantage especially in PvP systems and can seriously affect the gaming experience. In this article, we will examine the common mount backward throw and synchronization problems frequently encountered by Metin2 private server developers. We'll also explain the causes of these problems and how they can be solved.

How Does the Mount System Work?
In Metin2, mounts are used to increase character speed and travel faster. However, on some private servers, mount control and synchronization may have been inadequately implemented. Particularly on C++ based servers, there might be missing elements on the game server side. This can cause other players not to see a character riding a mount or cause the character to suddenly fall off the mount.

Common Issues
The following issues frequently occur on Metin2 private servers:
- The character appears not mounted to other players even though mounted.
- Character is thrown off the mount suddenly after mounting.
- Mount animations are out of sync.
- Missing or conflicting mount data on the server.

What Causes These Problems?
These problems generally arise due to incomplete or incorrect server-side configurations. If there is an issue during data transfer between auth and game servers, mount information cannot be synchronized properly. Additionally, client-side modifications can also lead to these issues. For instance, incorrect edits in uiscript files may prevent mount animations from displaying correctly.

Technical Solutions
To solve these issues, first the server-side code should be reviewed. Functions related to the mount system in the game server src should be examined and necessary corrections made. Files like horse.cpp and char_horse.cpp should be checked. Additionally, it must be verified whether mount data is stored correctly in the db core.

It should also be tested whether modifications made in Python based system files (py root) affect the mount system. Ready-made systems available on Metin2 development platforms like Martysama can also assist in this regard.

Server Compilation and Packaging
After fixing the mount system, it's important to compile the server and test it. During this process, the pack structure should also be considered. Changes made in client src folders like locale and root must be accurately reflected during packaging. Otherwise, mount data may be transferred incompletely or incorrectly.

Conclusion
Correct functioning of mount systems on Metin2 private servers directly affects both PvP performance and overall gameplay experience. Therefore, server developers must be careful about mount synchronization and proper display to users. Detailed testing of every change made in C++ and Python based systems is critical to prevent such issues.
 

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

Benzer konular

Geri
Üst Alt