Işınlanınca Binek Mühürün Takılı Kalması Fix !

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Öncelikler merhabalar , sorun binek üzerindeyken ışınlanınca binekten inili kalmanız ve mühürün hala slotta takılı kalıyor olmasıdır. ileri zekalı arkadaşlar şimdi diyecek special iteme ekleyince binek üzerinde kalmaya devam ediyorsunuz diye. bu fix sadece ışınlanınca binek mührünün unequip yapılmasını sağlar. yani hala binek üzerinde olmasınız ve mühür unequip olur.​

questlua_pc.cpp açılır ve pc_warp bloğu bulunur.
altına bulunur
Kod:
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();

altına eklenir
Kod:
LPITEM item = ch->GetWear(WEAR_COSTUME_MOUNT);

Bulunur
Kod:
ch->WarpSet((int)lua_tonumber(L, 1), (int)lua_tonumber(L, 2), map_index);

Altına eklenir
Kod:
if (item && item->IsRideItem())             ch->UnequipItem(item);

For
Işınlanınca Binek Mühürünün Takılı Kalması Sorunu ve Çözümü

Metin2 özel sunucularında geliştirme yaparken karşılaşılan sorunlardan birisi de binek mühürlerinin takılı kalmasıdır. Özellikle ışınlanma işlemleri sırasında bu sorun sıkça ortaya çıkar. Bu durum hem oyuncu deneyimini olumsuz etkiler hem de sunucu tarafında hatalı durumlar oluşmasına neden olabilir. Bu yazıda, ışınlanınca binek mühürünün takılı kalması sorununu detaylı olarak inceleyip çözümünü sunacağız.

Sorun Nedir?
Oyuncu bir binek mühürü takmışsa ve ışınlanma işlemi sırasında binek kaldırılmışsa bile bazı durumlarda binek görünümü veya efekti hâlâ oyuncuda takılı kalabiliyor. Bu durum genellikle istem dışıdır ve hem oyun içi görsel hatalara yol açar hem de bazı yeteneklerin veya sistemlerin doğru çalışmasını engeller.

Neden Oluşur?
Bu sorun genellikle sunucu tarafında binek sistemlerinin tam olarak senkronize edilmemesinden kaynaklanır. Işınlanma sırasında binek kaldırılmalı, ama bazı durumlarda bu kaldırma işlemi sunucu tarafından yeterince hızlı veya doğru şekilde yapılmaz. Bu da binek efektinin oyuncuda takılı kalmasına neden olur. Ayrıca, client tarafında binek durumu resetlenmemişse bu da soruna neden olabilir.

Teknik Açıklama
Sunucu tarafında binek kaldırma işlemi genellikle horse_unsummon veya benzeri bir fonksiyon ile yapılır. Ancak ışınlanma sırasında bu komutun çağrılması ihmal edilebilir veya zamanlama hatası oluşabilir. Bu da client ile sunucu arasında tutarsızlık yaratır. Ayrıca bazı özel sistemlerde binek kaldırma işlemi özel kontrollerle yapılır, bu da hatayı artırabilir.

Fix Uygulaması
Sorunu çözmek için ışınlanma sırasında bineğin mutlaka kaldırılmasını sağlayacak bir sistem geliştirmek gerekir. Bunun için aşağıdaki adımları izlemek önerilir:

- Oyuncu ışınlanmadan önce bineğini otomatik olarak kaldırmalıdır.
- Sunucu tarafında teleport eventine özel bir kontrol eklenmelidir.
- Client tarafında binek durumu resetlenebilmelidir.

Fix Kod Örneği (Python)
Sunucu tarafında game/core dosyasında bulunan ışınlanma fonksiyonuna aşağıdaki gibi bir kontrol eklenebilir:

Kod:
[B]if horse.is_mounted(player):[BR][/BR]    horse.unsummon(player)[BR][/BR]    player.send_message('Bineğiniz ışınlanma nedeniyle kaldırıldı.')[/B]


Ayrıca, client tarafında da binek efektinin resetlenmesi için uygun komutlar gönderilmelidir. Bu sayede hem binek efekti hem de görünümü ışınlanma esnasında temizlenir.

Ekstra Güvenlik Önlemleri
Sunucu tarafında binek takılı kalma riskini azaltmak için her ışınlanmada binek durumu kontrol edilmeli ve aktifse kaldırılmalıdır. Ayrıca, belirli bölgelerde ışınlanma yasaklanarak bu sorun daha da azaltılabilir. Örneğin PK alanlarında binek kullanılamaması gibi.

Sonuç
Işınlanınca binek mühürünün takılı kalması problemi, Metin2 özel sunucularında karşılaşılan yaygın bir hata olup, kullanıcı deneyimini olumsuz etkileyebilir. Ancak doğru teknik bilgi ve uygulamalarla bu sorun kolayca çözülebilir. Bu fix, sunucu güvenliğini ve kullanıcı deneyimini artırmak için oldukça etkilidir.


Teleportation Bug with Mount Seal Stuck On and Its Fix!

One of the common issues encountered during Metin2 private server development is mount seals getting stuck. This issue often arises during teleportation operations. It negatively affects both player experience and can cause incorrect states on the server side. In this article, we will examine the issue of mount seals getting stuck after teleportation in detail and provide a solution.

What Is The Issue?
If a player has equipped a mount seal and the mount is removed during teleportation, in some cases the mount appearance or effect may still remain on the player. This situation is usually unintended and causes visual errors within the game, as well as preventing certain skills or systems from functioning properly.

Why Does It Happen?
This issue generally stems from the mount systems not being fully synchronized on the server-side. During teleportation, the mount should be dismounted, but sometimes this action is either overlooked or occurs at an improper timing on the server. This causes the mount effect to remain visible on the player. Additionally, if the mount status is not reset on the client-side, this too can contribute to the issue.

Technical Explanation
On the server-side, dismounting is typically handled by functions such as horse_unsummon. However, during teleportation, calling this command might be overlooked or occur with incorrect timing, causing inconsistency between the client and the server. Additionally, in custom systems, the dismount process might involve special checks which could increase the chance of error.

Applying the Fix
To resolve this issue, a system must be implemented that ensures mounts are always dismissed during teleportation. The following steps are recommended:

- Before teleportation, the player's mount must be automatically dismounted.
- Add a specific check to the teleport event on the server-side.
- Reset the mount status on the client-side.

Sample Fix Code (Python)
In the game/core file on the server-side, you can add the following check into the teleport function:

Kod:
[B]if horse.is_mounted(player):[BR][/BR]    horse.unsummon(player)[BR][/BR]    player.send_message('Your mount was dismissed due to teleportation.')[/B]


Additionally, commands should be sent to reset the mount effect on the client-side. This ensures that both the mount effect and appearance are cleared during teleportation.

Additional Safety Measures
To reduce the risk of mounts getting stuck on the server-side, the mount status should be checked during every teleportation and dismissed if active. Furthermore, teleportation can be disabled in certain areas to further reduce this issue, for example in PK zones where mounts are not allowed.

Conclusion
The issue of mount seals getting stuck after teleportation is a common bug in Metin2 private servers and can negatively impact user experience. However, with proper technical knowledge and implementation, this issue can be easily resolved. This fix is highly effective in improving both server stability and user experience.​
 

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

Benzer konular

Geri
Üst Alt