Gün Bitmiyorki Fixler Bitsin 
char_item.cpp eklentisini değiştir ( kilit vs engellerini kaldırdım kendinize göre düzenleyin )
Kod:
case USE_CHANGE_ATTRIBUTE3: { if ((GM_PLAYER == GetGMLevel()) && (false == test_server)) { DWORD dwChangeItemAttrCycle = quest::CQuestManager::instance().GetEventFlag(msc_ szChangeItemAttrCycleFlag); if (dwChangeItemAttrCycle < msc_dwDefaultChangeItemAttrCycle) dwChangeItemAttrCycle = msc_dwDefaultChangeItemAttrCycle; quest::PC* pPC = quest::CQuestManager::instance().GetPC(GetPlayerID ()); if (pPC) { DWORD dwNowMin = get_global_time() / 60; DWORD dwLastChangeItemAttrMin = pPC->GetFlag(msc_szLastChangeItemAttrFlag); if (dwLastChangeItemAttrMin + dwChangeItemAttrCycle > dwNowMin) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ìì±ì ë°ê¾¼ì§ %dë¶ ì´ë´ìë ë¤ì ë³ê²½í ì ììµëë¤.(%d ë¶ ë¨ì)"), dwChangeItemAttrCycle, dwChangeItemAttrCycle - (dwNowMin - dwLastChangeItemAttrMin)); return false; } pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowMin); } } newEnchant_type1 = 0; newEnchant_value1 = 0; newEnchant_type2 = 1; newEnchant_value2 = 1; newEnchant_type3 = 2; newEnchant_value3 = 2; newEnchant_type4 = 3; newEnchant_value4 = 3; newEnchant_type5 = 4; newEnchant_value5 = 4; SetEnchantAttr(DestCell.cell); item2->PrepareAttribute(); ChatPacket(CHAT_TYPE_COMMAND, "EnchantAttr_open #%d#%d#%d#%d#%d#%d#%d#%d#%d#%d#%d#", DestCell.cell, newEnchant_type1, newEnchant_value1, newEnchant_type2, newEnchant_value2, newEnchant_type3, newEnchant_value3, newEnchant_type4, newEnchant_value4, newEnchant_type5, newEnchant_value5); SetQuestFlag("efsunsystem.newEnchant_type1", newEnchant_type1); SetQuestFlag("efsunsystem.newEnchant_type2", newEnchant_type2); SetQuestFlag("efsunsystem.newEnchant_type3", newEnchant_type3); SetQuestFlag("efsunsystem.newEnchant_type4", newEnchant_type4); SetQuestFlag("efsunsystem.newEnchant_type5", newEnchant_type5); SetQuestFlag("efsunsystem.newEnchant_value1", newEnchant_value1); SetQuestFlag("efsunsystem.newEnchant_value2", newEnchant_value2); SetQuestFlag("efsunsystem.newEnchant_value3", newEnchant_value3); SetQuestFlag("efsunsystem.newEnchant_value4", newEnchant_value4); SetQuestFlag("efsunsystem.newEnchant_value5", newEnchant_value5); { char buf[128]; snprintf(buf, sizeof(buf), "%u", item2->GetID()); LogManager::instance().ItemLog(this, item, "CHANGE_ATTRIBUTE3 WAIT_PLAYER", buf); } item2->Lock(true); item->SetCount(item->GetCount() - 1); } break;
item_attirubute eklentisini değiştir
Kod:
void CItem::SetNewEfsunAttribute(int newEnchant_type1,int newEnchant_type2,int newEnchant_type3,int newEnchant_type4,int newEnchant_type5) { ClearAttribute(); AddAttr(newEnchant_type1, 6); AddAttr(newEnchant_type2, 6); AddAttr(newEnchant_type3, 6); AddAttr(newEnchant_type4, 6); AddAttr(newEnchant_type5, 6); UpdatePacket(); Save(); }
cmd_general.cpp new fonk değiştir
Kod:
ACMD(do_enchant_new) { if (!ch) return; if (!ch->GetEnchantAttr()) return; LPITEM itemTarget = ch->GetInventoryItem(ch->GetEnchantAttr()); if (itemTarget == NULL) return; ch->SetEnchantAttr(0); itemTarget->SetForceAttribute(0,ch->GetQuestFlag("efsunsystem.newEnchant_type1"), ch->GetQuestFlag("efsunsystem.newEnchant_value1")); itemTarget->SetForceAttribute(1,ch->GetQuestFlag("efsunsystem.newEnchant_type2"), ch->GetQuestFlag("efsunsystem.newEnchant_value2")); itemTarget->SetForceAttribute(2,ch->GetQuestFlag("efsunsystem.newEnchant_type3"), ch->GetQuestFlag("efsunsystem.newEnchant_value3")); itemTarget->SetForceAttribute(3,ch->GetQuestFlag("efsunsystem.newEnchant_type4"), ch->GetQuestFlag("efsunsystem.newEnchant_value4")); itemTarget->SetForceAttribute(4,ch->GetQuestFlag("efsunsystem.newEnchant_type5"), ch->GetQuestFlag("efsunsystem.newEnchant_value5")); itemTarget->Lock(false); ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You choose to take the new bonuses.")); { char buf[128]; snprintf(buf, sizeof(buf), "%u", itemTarget->GetID()); LogManager::instance().ItemLog(ch, itemTarget, "CHANGE_ATTRIBUTE3 ANSWER_YES", buf); } ch->Save(); }
Güvenli Efsun Bugunun Fixi
Metin2 özel sunucularında güvenli efsun sistemi, oyuncuların eşyalarını koruma altına almak için kritik öneme sahiptir. Ancak bazı durumlarda efsun sisteminde hatalar oluşabilir ve bu da oyuncuların canını yakabilir. Bu yazıda, Metin2 güvenli efsun bugunun fixini ele alacağız ve bu hatanın nasıl çözüleceği konusunda detaylı bilgi vereceğiz.
Güvenli Efsun Nedir?
Metin2 oyununda güvenli efsun, oyuncuların eşyalarını yükseltirken olası kayıpları önlemek için kullanılan bir özelliktir. Efsun işlemi sırasında eşya hasar görebilir veya yok olabilir. Güvenli efsun sayesinde bu tür riskler azaltılır. Ancak bazı sunucularda bu sistemde hata meydana gelmekte ve beklenmedik şekilde eşya kayıpları yaşanabilmektedir.
Bug Nereden Kaynaklanıyor?
Bu sorun genellikle sunucu tarafında çalışan C++ kaynak kodlarında bulunan bir mantık hatasından veya eksik kontrol mekanizmasından kaynaklanmaktadır. Özellikle efsun işlemi sırasında güvenlik kontrolü yapılmadığında, sistem beklenmedik durumlarda güvenli efsunun devre dışı kalmasına neden olabilir. Bu da oyuncuların değerli eşyalarının yok olmasına yol açabilir.
Fix Nasıl Uygulanır?
Güvenli efsun hatasını çözmek için öncelikle ilgili C++ dosyası incelenmelidir. Genellikle bu işlem game_core tarafında gerçekleşir. Efsun sisteminin çalıştığı fonksiyonlar detaylı olarak analiz edilmeli ve gerekli kontroller yapılmalıdır. Örneğin, 'safe_attr_brooch' veya benzeri güvenlik itemlerinin aktif olup olmadığı kontrol edilmelidir. Eğer bu itemlerin kontrolü yapılmıyorsa, bu durumda sistem güvenli efsunu atlayabilir.
Python Tarafında İyileştirmeler
PyRoot ve UIScript tarafında da bu hatayı önlemeye yönelik kontroller yapılabilir. Oyuncuya gösterilen efsun ekranında, güvenli efsunun aktif olup olmadığı daha net belirtilebilir. Py GUI kullanılarak kullanıcı arayüzünde bu bilgi daha belirgin hale getirilebilir. Böylece oyuncu, efsun işlemini yapmadan önce sistemin güvenli olup olmadığını kontrol edebilir.
Veritabanı Düzeltmeleri
DB tarafında da güvenli efsunla ilgili log kayıtları tutularak, hangi işlemlerde hata meydana geldiği daha net görülebilir. Bu sayede hata tekrarlandığında, log üzerinden hızlıca çözüm üretilebilir. Ayrıca, DB Core üzerinde yapılan küçük değişikliklerle efsun işlemi sırasında güvenlik kontrolü daha sıkı hale getirilebilir.
Sonuç
Güvenli efsun sisteminin doğru şekilde çalışması, Metin2 özel sunucularında oyuncu memnuniyetini doğrudan etkiler. Bu nedenle, güvenli efsun bugunun fixi için hem C++ hem de Python tarafında gerekli kontrollerin yapılması büyük önem taşır. Sunucu sahipleri, bu gibi hataları erken fark edip düzeltebildiklerinde, oyuncu sadakati ve oyun içi ekonomi dengesi korunmuş olur.
Metin2Lobby olarak, Metin2 özel sunucu geliştirme konusunda en güncel ve güvenilir bilgileri sizlere sunmaya devam ediyoruz.
Secure Enchant Fix for Today's Bug
In Metin2 private servers, the secure enchant system is crucial for protecting player items. However, sometimes errors may occur within the enchant system, which can frustrate players. In this article, we will address the fix for the secure enchant bug in Metin2 and provide detailed information on how to resolve this issue.
What is Secure Enchant?
In the Metin2 game, secure enchant is a feature that helps prevent potential losses when players upgrade their items. During the enchant process, items can be damaged or destroyed. With secure enchant, such risks are reduced. However, on certain servers, errors may occur in this system, unexpectedly causing valuable item losses.
Where Does the Bug Stem From?
This issue typically arises from a logic error or missing control mechanism in the C++ source code running on the server side. Specifically, if security checks during the enchant process are not properly implemented, the secure enchant function might be bypassed unexpectedly, leading to the loss of valuable items.
How to Apply the Fix?
To fix the secure enchant bug, first the relevant C++ file must be examined. Usually, this process occurs within the game_core. The functions responsible for the enchant system should be analyzed in detail, and necessary checks must be implemented. For example, the activation status of security items like 'safe_attr_brooch' should be verified. If these items are not being checked, the system may skip the secure enchant functionality.
Improvements on the Python Side
Preventive checks can also be implemented in PyRoot and UIScript. The secure enchant status can be more clearly displayed to the player on the enchant interface. By using Py GUI, this information can be made more prominent in the user interface, allowing players to verify whether the secure enchant is active before proceeding with the enchantment process.
Database Fixes
Logging related to secure enchant can be implemented on the database side to identify where errors occur during enchant operations. This way, when bugs reoccur, solutions can be found quickly via logs. Additionally, small modifications in the DB Core can tighten security checks during enchant operations.
Conclusion
Proper functioning of the secure enchant system directly impacts player satisfaction on Metin2 private servers. Therefore, implementing necessary checks on both C++ and Python sides to fix the secure enchant bug is of great importance. Server owners who detect and resolve such issues early help maintain player loyalty and balance the in-game economy.
At Metin2Lobby, we continue to provide you with the most up-to-date and reliable information regarding Metin2 private server development.
