Metin2 eşya taşıma hatası fix (1 satır yukarı vb.)

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Eşyayı envanterde 1 satır aşağı kaydırabilirken 1 satır yukarı kaydıramazsınız. Veya daha değişik şekiller..
Bunun için aşağıdaki fixi uygulamanız yeterlidir.

Kod:
//arat void CGridSlotWindow::OnRenderPickingSlot() //tekrar arat if (GetPickedSlotList(byWidth, byHeight, &SlotList)) // içerisine ekle [HASH=2]#ifdef[/HASH] ENABLE_ITEM_MOVE_FIX         if (dwSlotNumber > 44)         {             if (dwSlotNumber < 90)             {                 dwSlotNumber -= 45;             }             else if (dwSlotNumber < 135)             {                 dwSlotNumber -= 90;             }             else if (dwSlotNumber < 180)             {                 dwSlotNumber -= 135;             }         } [HASH=3]#endif[/HASH] //arat BOOL CGridSlotWindow::GetPickedSlotPointer(TSlot ** ppSlot)      //tekrar arat if (pSlot->dwSlotNumber < pMinSlot->dwSlotNumber) //değiştir [HASH=2]#ifdef[/HASH] ENABLE_ITEM_MOVE_FIX             if (pSlot->dwSlotNumber < pMinSlot->dwSlotNumber && pSlot->dwItemIndex != pMinSlot->dwItemIndex) [HASH=2311]#else[/HASH]             if (pSlot->dwSlotNumber < pMinSlot->dwSlotNumber) [HASH=3]#endif[/HASH]                  // arat if (!pMinSlot->isItem && pSlot->isItem) // değiştir      [HASH=2]#ifdef[/HASH] ENABLE_ITEM_MOVE_FIX                 if (!pMinSlot->isItem && pSlot->isItem && pSlot->dwItemIndex == pMinSlot->dwItemIndex) [HASH=2311]#else[/HASH]                 if (!pMinSlot->isItem && pSlot->isItem) [HASH=3]#endif[/HASH] //arat if (dwSlotNumber == pCenterSlot->dwSlotNumber)      //üstüne ekle [HASH=2]#ifdef[/HASH] ENABLE_ITEM_MOVE_FIX             if (dwSlotNumber > 44)             {                 if (dwSlotNumber < 90)                 {                     dwSlotNumber -= 45;                 }                 else if (dwSlotNumber < 135)                 {                     dwSlotNumber -= 90;                 }                 else if (dwSlotNumber < 180)                 {                     dwSlotNumber -= 135;                 }             } [HASH=3]#endif[/HASH]

Kod:
//ekle [HASH=1]#define[/HASH] ENABLE_ITEM_MOVE_FIX

Metin2 Eşya Taşıma Hatası Fix (1 Satır Yukarı vb.)


Metin2 özel sunucularında karşılaşılan eşya taşıma hataları, oyuncuların deneyimini ciddi şekilde etkileyebilir. Özellikle eşyaların görünür durumda olup taşınamaması ya da eşyaların yanlış konumlara taşınması gibi sorunlar, hem oyun içi dengeleri bozar hem de kullanıcı memnuniyetini düşürür. Bu yazıda, Metin2 özel sunucularında görülen 'eşya taşıma hatası' ve çözümüne odaklanacağız. Bu hata genellikle kullanıcı arayüzü (UI) dosyalarında ya da client-side kodlarında meydana gelen bir sorundan kaynaklanır.

Hatanın Neden Kaynağı Olabilir?

Metin2 özel sunucularında eşya taşıma hatası, genellikle uiscript dosyalarındaki window sınıflarında yapılan değişikliklerden kaynaklanabilir. Örneğin, inventory veya safebox gibi alanlardan eşya taşırken, mouse event sistemlerinde bir aksaklık olursa, eşya istenen konuma gitmeyebilir. Hatanın en yaygın şekli, eşyanın fareyle sürüklendiği anda 1 satır yukarı ya da başka bir konuma atlamadır. Bu durum, hem estetik hem de işlevsel açıdan kullanıcıyı rahatsız eder.

Eşya Taşıma Sisteminin Mekaniği

Metin2'de eşya taşıma işlemi, pyRoot ve uiscript sistemleri üzerinden gerçekleşir. Kullanıcı bir eşyayı tıkladığında, onMouseLeftButtonDown fonksiyonu çalışır. Bu fonksiyon, eşyanın taşınmasını başlatır. Eğer bu fonksiyonda bir offset veya position hatası varsa, eşya istenen yere değil, farklı bir konuma taşınabilir. Bu tür hatalar genellikle C++ tarafında yazılmış game core ile Python GUI arayüzünün uyumsuzluğundan doğar.

Fix İçin Gerekli Adımlar

1. Client-side dosyalarınızda bulunan inventory.py ve item.py gibi dosyalarda OnMouseOverOut, OnMouseLeftButtonUp, OnMouseMove gibi fonksiyonları kontrol edin.
2. GetPosition() veya SetPosition(x, y) gibi komutlarda bir hata olup olmadığını kontrol edin.
3. UIScript dosyasında tanımlanan window boyutlarının gerçek boyutlarla uyumlu olduğundan emin olun.
4. Eğer Martysama ya da başka bir Metin2 development altyapısı kullanıyorsanız, core dosyalarında yapılan değişikliklerin bu hatayı tetiklemiş olma ihtimali vardır.

Fix Kodu Örneği

Aşağıda, eşya taşınırken doğru pozisyona yerleştirilmesini sağlayan örnek bir Python GUI kod parçası verilmiştir:

def OnMouseMove(self):
if self.isPicked():
x, y = self.mouse_local_x, self.mouse_local_y
self.SetPosition(x, y + 1) # Burada 1 piksel yukarı kaydırma yapılır
else:
pass

Bu kod sayesinde, eşya taşındığında fare imlecinden 1 piksel yukarıda görüntülenebilir ve bu sayede kullanıcı dostu bir deneyim sağlanabilir. Bu tip küçük değişiklikler, Metin2 özel sunucularında kullanıcı memnuniyetini artırır.

Sonuç

Metin2 özel sunucularında karşılaşılan eşya taşıma hataları, genellikle client-side kodlama hatalarından doğar. Bu tür hataların çözümü için pyRoot, uiscript ve game core dosyalarının detaylı incelenmesi gerekir. Metin2lobby.com olarak, Metin2 özel sunucu geliştiricilerine yardımcı olacak C++ ve Python tabanlı sistemler sunmaya devam ediyoruz. Bu tür küçük ama etkili düzeltmelerle, oyuncuların daha keyifli bir deneyim yaşamasını sağlayabilirsiniz.

Kaynaklar:
- Metin2lobby.com
-


Metin2 Item Drag Error Fix (1 Row Up etc.)


In Metin2 private servers, item dragging errors can significantly impact player experience. Issues such as items appearing visually but not being draggable or items moving to incorrect positions disrupt both gameplay balance and user satisfaction. In this article, we will focus on the 'item drag error' encountered in Metin2 private servers and its solution. This issue typically arises from problems within UI script files or client-side code.

What Might Cause This Error?

The item dragging error in Metin2 private servers often stems from modifications made to window classes in uiscript files. For instance, if there are issues in mouse event systems while dragging items from areas like inventory or safebox, the item may not move to the intended location. The most common form of this error is the item jumping one row up or to another location upon dragging with the mouse. This causes inconvenience both aesthetically and functionally for users.

Mechanism Behind Item Dragging

Item dragging in Metin2 is handled through pyRoot and uiscript systems. When a user clicks an item, the onMouseLeftButtonDown function is triggered, starting the drag process. If there is an error in offset or position values within this function, the item may be moved to an unintended location. Such errors often stem from mismatches between the C++ game core and the Python GUI.

Steps Required for the Fix

1. Check functions like OnMouseOverOut, OnMouseLeftButtonUp, and OnMouseMove in client-side files such as inventory.py and item.py.
2. Verify whether there are errors in commands like GetPosition() or SetPosition(x, y).
3. Ensure that window sizes defined in the UIScript file match actual dimensions.
4. If you are using Martysama or other Metin2 development frameworks, changes in the core files might have caused the error.

Sample Fix Code

Below is an example of Python GUI code that ensures items are placed correctly during dragging:

def OnMouseMove(self):
if self.isPicked():
x, y = self.mouse_local_x, self.mouse_local_y
self.SetPosition(x, y + 1) # Shifts item 1 pixel upward
else:
pass

With this code, the dragged item appears 1 pixel above the mouse cursor, providing a more user-friendly experience. Such small but effective adjustments can improve player satisfaction in Metin2 private servers.

Conclusion

Item dragging errors in Metin2 private servers usually originate from client-side coding mistakes. To resolve these errors, pyRoot, uiscript, and game core files must be examined carefully. At Metin2lobby.com, we continue to provide C++ and Python based systems to assist Metin2 private server developers. With fixes like these, you can ensure a more enjoyable experience for your players.

Sources:
- Metin2lobby.com
-
 

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

Geri
Üst Alt