Merhaba arkadaşlar bu konuyu açmamın sebebi prim değildir sadece başkalarına yararım dokunsun diye açmış bulunmaktayım kanıt videosu ekledim sistem çalışmıyor deme hakkına sahip değilsiniz.Sizlere yaptıklarımın aynısını aktarmaya çalışacağım ;
Konuya bakmak yetmiyor bir teşekkürü hor görme
BUG : 3 ve 4.envanter veya 5.envanter ne olursa olsun fark etmez 2.envanterden sonra item hiç bir türlü dönüşmüyordu ve bu sorunu nasıl çözerim diye herkese sordum ama çözüm bulamadım ama çok basitmiş bulduğum zaman.
Şimdi ilk olarak sizlere şunu söyleyeyim
1 Envanterde : 45 Slot ;
2 Envanterde : 90 Slot ;
3 Envanterde : 135 Slot ;
4 Envanterde : 180 Slot ;
5 Envanterde : 225 Slot ;
Bulunmaktadır ona göre ayarlayacaksınız kodları
Bu sorunu çözmeniz için ilk olarak ;
[/FONT]FTP: Game/Src
char_battle.cpp
itemmanager.cpp
input_main.cpp
exchange.cpp
char_item.cpp
cmd_general.cpp
cube.cpp
Bu dosyaların içinde bulunan inventorysize = 180 kodunu bularak (bende 4 envanter olduğu için 180 kodu bulunmakta sizin filesinizde kaç envanter varsa ona göre slot sayısını değiştirin)
[Başka srclerde inventorysize kodu yerine INVENTORY_MAX_NUM adında da geçebilir.]
Yukarıda envanter sayısına göre toplam slot sayılıranı verdim ona göre değiştirin
Bug sadece büyülü metal iteminde değildir epic sura , demirci vb npclerde de iteme artı basılmıyordu o sorunda ortadan kalkmış oluyor
Kanıt @
@
Konuya bakmak yetmiyor bir teşekkürü hor görme
BUG : 3 ve 4.envanter veya 5.envanter ne olursa olsun fark etmez 2.envanterden sonra item hiç bir türlü dönüşmüyordu ve bu sorunu nasıl çözerim diye herkese sordum ama çözüm bulamadım ama çok basitmiş bulduğum zaman.
Şimdi ilk olarak sizlere şunu söyleyeyim
1 Envanterde : 45 Slot ;
2 Envanterde : 90 Slot ;
3 Envanterde : 135 Slot ;
4 Envanterde : 180 Slot ;
5 Envanterde : 225 Slot ;
Bulunmaktadır ona göre ayarlayacaksınız kodları
Bu sorunu çözmeniz için ilk olarak ;
[/FONT]FTP: Game/Src
char_battle.cpp
itemmanager.cpp
input_main.cpp
exchange.cpp
char_item.cpp
cmd_general.cpp
cube.cpp
Bu dosyaların içinde bulunan inventorysize = 180 kodunu bularak (bende 4 envanter olduğu için 180 kodu bulunmakta sizin filesinizde kaç envanter varsa ona göre slot sayısını değiştirin)
[Başka srclerde inventorysize kodu yerine INVENTORY_MAX_NUM adında da geçebilir.]
Yukarıda envanter sayısına göre toplam slot sayılıranı verdim ona göre değiştirin
Bug sadece büyülü metal iteminde değildir epic sura , demirci vb npclerde de iteme artı basılmıyordu o sorunda ortadan kalkmış oluyor
Kanıt @
@
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
; yardımları için ayrıca teşekkürler..
Metin2 oyununda karşılaşılan envanter sorunları, özellikle özel sunucularda çalışan geliştiriciler için zaman zaman büyük engeller yaratmaktadır. Bu yazıda, C++ tabanlı Metin2 kaynak kodlarında meydana gelen 4-5 yaygın envanter hatası ve bunların çözüm yolları detaylıca ele alınacaktır. Bu hatalar genellikle game server tarafında meydana gelmekte olup, client ile server arasındaki veri aktarımındaki eksikliklerden veya eksik tanımlamalardan kaynaklanmaktadır.
Öncelikle, envanter sisteminin doğru çalışabilmesi için hem game hem de auth sunucularında tutarlı veri yapılarının bulunması gerekir. Eğer bu yapılar senkron değilse, oyuncu envanterinde eşya kaybı, eşyanın tekrar görünmesi gibi hatalar görülebilir. Bu durum, C++ seviyesinde packet tanımlamalarının eksik ya da yanlış yapılması sonucu ortaya çıkar.
Hata 1: Eşya silinmesine rağmen envanterde görünür kalır. Bu hata genellikle item_remove_packet fonksiyonunun eksik çalışmasından kaynaklanır. Çözüm olarak, C++ kaynak kodunda PacketManager sınıfında eksik kontrol edilir ve RemoveItemFromSlot fonksiyonuna uygun parametreler gönderilir.
Hata 2: Aynı eşyadan birden fazla görünmesi. Bu durum, packet yapısında item_count değeri eksik olduğunda meydana gelir. C++ seviyesinde item_add_packet fonksiyonuna count parametresi eklenmelidir. Bu işlem, sunucu tarafında eşya sayısının doğru gönderilmesini sağlar.
Hata 3: Eşya taşıma sırasında slot karışıklığı. MoveItemPacket fonksiyonu eksik olduğundan dolayı slot numaraları doğru aktarılmaz. Bu sorun, C++ kaynak kodunda SwapItem fonksiyonunun düzgün tanımlanmasıyla çözülebilir.
Hata 4: Envater açıldığında eşyaların rastgele konumlarda görünmesi. Bu hata, packet sırası bozuk olduğunda meydana gelir. C++ tarafında SendInventoryData fonksiyonu, slot sıralamasını koruyacak şekilde yeniden düzenlenmelidir.
Hata 5: Oyuncu envanterden eşya attığında veritabanında silinmemesi. Bu, database tarafında delete_item_query komutunun eksik veya hatalı olmasıdır. C++ kaynak kodunda OnItemRemoveFromInventory fonksiyonu, DBThread ile doğru entegre edilmelidir.
Tüm bu hatalar, Metin2 özel sunucu geliştiricileri tarafından dikkatlice incelenmeli ve C++ seviyesinde düzeltilmelidir. Metin2Lobby olarak, bu tür hataların çözümünde yardımcı olacak kaynak kod örnekleri ve destek forumları sunmaktayız. Daha stabil ve güvenilir bir Metin2 sunucusu için bu temel hataların giderilmesi şarttır.
Metin2 game inventory issues can sometimes create significant obstacles for developers working on private servers. In this article, we will discuss 4-5 common inventory bugs that occur in C++-based Metin2 source codes and their solutions in detail. These errors usually occur on the game server side, stemming from missing or incorrect data transfers between the client and server.
Firstly, for the inventory system to work correctly, consistent data structures must exist on both game and auth servers. If these structures are not synchronized, players may experience item loss or duplication in the inventory. This occurs due to missing or incorrect packet definitions at the C++ level.
Bug 1: Items remain visible in the inventory even after deletion. This error typically stems from incomplete execution of the item_remove_packet function. The solution involves checking for missing implementations in the PacketManager class in the C++ source code and ensuring appropriate parameters are passed to the RemoveItemFromSlot function.
Bug 2: Multiple instances of the same item appearing. This happens when the item_count value is missing in the packet structure. At the C++ level, the count parameter should be added to the item_add_packet function to ensure correct item counts are sent by the server.
Bug 3: Slot confusion during item movement. Since the MoveItemPacket function is incomplete, slot numbers are not transferred correctly. This issue can be resolved by properly defining the SwapItem function in the C++ source code.
Bug 4: Items appear in random locations when the inventory is opened. This bug occurs when the packet order is disrupted. The SendInventoryData function in C++ must be restructured to maintain proper slot ordering.
Bug 5: Items not deleted from the database when dropped by the player. This is due to a missing or incorrect delete_item_query command on the database side. In the C++ source code, the OnItemRemoveFromInventory function should be properly integrated with the DBThread.
All these bugs should be carefully reviewed and fixed at the C++ level by Metin2 private server developers. At Metin2Lobby, we provide sample source codes and support forums to assist in resolving such issues. Addressing these fundamental bugs is essential for a more stable and reliable Metin2 server.
