Geliştirilebilir sistemdir kayıtları veritabanına entegre etmek size kalmış.
Nasıl Çalışır?Oyuncu bir eşyayı NPC Shop (market) üzerinden satın aldığında,
Eşyaya otomatik olarak oyuncunun ismi geçmiş olarak eklenir.
Aynı eşya başka bir oyuncunun envanterine geçtiğinde (örneğin takas), geçmiş bozulmaz.
Oyuncular ellerindeki eşyalar için özel bir komutla bu geçmişi görüntüleyebilirler.
Özellikler
[TABLE=full][TR]<th>Özellik</th><th>Açıklama</th>[/TR][TR][TD]Geçmiş Takibi[/TD][TD]Eşyalar kimin tarafından alındıysa isim listeye yazılır.[/TD][/TR][TR][TD]RAM Tabanlı[/TD][TD]Geçmiş sadece bellekte tutulur, veritabanına yük bindirmez.[/TD][/TR][TR][TD]Market Odaklı[/TD][TD]Sadece marketten alınan itemler geçmişe girer.[/TD][/TR][TR][TD]Komutla Görüntülem[/TD][TD]Oyuncular /iteminfo komutuyla geçmişi görebilir.[/TD][/TR][TR][TD]Sosyal Etkileşim Katkısı[/TD][TD]Oyuncular nadir itemlerin kimlerde olduğunu görebilir.[/TD][/TR][/TABLE]
Sınırlamalar
Sadece marketten alınan itemler geçerlidir.
Takas görev ödülü boss drop gibi kaynaklardan gelen itemler sisteme dahil değildir.
Geçmiş bilgisi sadece sunucu çalışırken aktiftir (sunucu kapanınca sıfırlanır).
Neden Kullanmalı
Oyuncular için ticaret güvenliği ve “geçmişi temiz item” algısı yaratır.
Sosyal ve nostaljik bir bağ kurma imkanı sağlar.
Yüksek değerli itemlerde “önceki sahip kimdi?” sorusuna cevap verir.
1. item.h — Fonksiyonlar Ekle
Kod:
class CItem içine private alanlara şunları ekle: // item.h private: std::string m_szCreatorName; int m_iPvPKills = 0; int m_iPvMKills = 0; std::vector<std::string> m_vecOwners; public: void SetCreatorName(const std::string& name) { m_szCreatorName = name; } void AddOwner(const std::string& name); void AddPvPKill() { ++m_iPvPKills; } void AddPvMKill() { ++m_iPvMKills; } void ShowHistory(LPCHARACTER ch) const;
2. item.cpp — Fonksiyonları Tanımla
Kod:
// item.cpp void CItem::AddOwner(const std::string& name) { if (!name.empty() && (m_vecOwners.empty() || m_vecOwners.back() != name)) { if (m_vecOwners.size() >= 5) m_vecOwners.erase(m_vecOwners.begin()); // En eskiyi sil m_vecOwners.push_back(name); } } void CItem::ShowHistory(LPCHARACTER ch) const { ch->ChatPacket(CHAT_TYPE_INFO, "=== [Item Geçmişi] ==="); ch->ChatPacket(CHAT_TYPE_INFO, "İlk Sahibi: %s", m_szCreatorName.c_str()); ch->ChatPacket(CHAT_TYPE_INFO, "PvP Öldürme Sayısı: %d", m_iPvPKills); ch->ChatPacket(CHAT_TYPE_INFO, "PvM Öldürme Sayısı: %d", m_iPvMKills); ch->ChatPacket(CHAT_TYPE_INFO, "Önceki Sahipler:"); if (m_vecOwners.empty()) ch->ChatPacket(CHAT_TYPE_INFO, "- [Kayıt Yok]"); else for (const auto& owner : m_vecOwners) ch->ChatPacket(CHAT_TYPE_INFO, "- %s", owner.c_str()); }
3. item_manager.cpp — İlk Oluşturulanda Sahip Ata
Kod:
LPITEM ITEM_MANAGER::CreateItem(...) içinde şu satırları CreateItem()'ın içinde Initialize() ve SetProto()'dan hemen sonra ekle: // item_manager.cpp if (item && item->GetOwner()) { item->SetCreatorName(item->GetOwner()->GetName()); item->AddOwner(item->GetOwner()->GetName()); }
Not: GetOwner() null olabilir, koruma yapabilirsin.
4. char_item.cpp — Item Giyme/Çıkarma Anında Sahip Kaydet
Kod:
void CHARACTER::SetItem(...) içinde şu satırı ekle: if (pItem) pItem->AddOwner(GetName());
5. char_battle.cpp — PvP ve PvM Öldürme Takibi
Dosyada Attack() içinde BATTLE_DEAD durumunu bul:
PvP öldürme:
Kod:
if (victim->IsPC() && GetWear(WEAR_WEAPON)) { if (LPITEM pWeapon = GetWear(WEAR_WEAPON)) pWeapon->AddPvPKill(); }
PvM öldürme:
Kod:
if (!victim->IsPC() && GetWear(WEAR_WEAPON)) { if (LPITEM pWeapon = GetWear(WEAR_WEAPON)) pWeapon->AddPvMKill(); }
6. cmd_general.cpp — Komut Tanımı: /iteminfo
Dosyanın sonuna ekle:
Kod:
ACMD(do_iteminfo) { LPITEM item = ch->GetWear(WEAR_WEAPON); if (!item) { ch->ChatPacket(CHAT_TYPE_INFO, "Üzerinizde silah bulunmamaktadır."); return; } item->ShowHistory(ch); }
7. cmd.cpp — Komutu Kaydet
Kod:
ACMD(do_iteminfo);
8. cmd_general.cpp veya cmd.cpp Komut Listesine Ekle
Kod:
{ "iteminfo", do_iteminfo, 0, POS_DEAD, GM_PLAYER },
Fonksiyon: CShop::Buy(...) içinde, item oluşturulduktan hemen sonra:
Şu kısmı bul:
Kod:
item = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count); if (!item) return SHOP_SUBHEADER_GC_SOLD_OUT;
Hemen altına şunu EKLE:
Kod:
if (!m_pkPC && item) item->AddOwner(ch->GetName()); // Sadece NPC shop ise geçmişe ekle
KANIT:
ITJA Item Info Sistemi Nedir?
Metin2 özel sunucularında oyun içi deneyimi artırmak için geliştirilen sistemlerden biri olan ITJA Item Info sistemi, oyuncuların envanterindeki eşyalar hakkında detaylı bilgi almasını sağlar. Bu sistem sayesinde, kullanıcılar eşyanın ismini üzerine gelerek veya belirli kısayollarla doğrudan eşyanın level, bonuslar, set özellikleri gibi bilgilerine ulaşabilirler. Özellikle PvP odaklı sunucularda bu bilgi, oyuncuların stratejik kararlar almasını kolaylaştırır.
Sistem Nasıl Çalışır?
ITJA Item Info sistemi, Python tabanlı GUI yapılarla entegre edilir ve genellikle uiscript dosyalarında tanımlanan arayüz bileşenleri üzerinden çalışır. Sistem, py root ve client src üzerinde çalıştırılır. Bu modülün kurulumu sırasında bazı özel C++ script düzenlemeleri yapılabilir. Özellikle eşya verileri sunucudan istenir ve game server tarafından sağlanan verilerle eşyanın tüm detayları ekrana getirilir.
Kurulum ve Entegrasyon
Bu sistemin kurulumu için öncelikle py root klasöründe gerekli python dosyalarının yerleştirilmesi gerekir. Ardından uiscript dosyalarında GUI arayüzü için gerekli değişiklikler yapılmalıdır. Eğer sunucu tarafında özel bir veri yapısı kullanılıyorsa, auth veya game sunucu kaynak kodlarında da değişiklikler gerekebilir. Bu işlemler genellikle C++ kaynak kod bilgisi gerektiren geliştiriciler tarafından yapılır.
Avantajları
ITJA Item Info sistemi sayesinde oyuncular, eşyaları hızlıca tanıyabilir ve PvP mücadelelerinde daha bilinçli seçimler yapabilirler. Özellikle sunucu geliştiricileri açısından, oyuncu memnuniyetini artıran bu sistem, sunucunuzun rekabet avantajı sağlar. Sistem, Martysama gibi popüler kaynaklarla da uyumlu çalışabilmektedir. Ayrıca, geliştiriciler bu sistemi kendi özelleştirmeleriyle genişletebilir ve sunucuya özel özellikler ekleyebilirler.
Migo Uzman Üyelik Şerefine
Bu sistem, Metin2 geliştiricileri arasında büyük takdir gören Migo tarafından geliştirilmiş ya da önerilmiştir. Bu sayede ITJA Item Info sistemi, gelişmiş C++ sistem ve source edit becerileri gerektiren bir projedir. Bu sistem sayesinde Metin2 özel sunucularında daha profesyonel bir deneyim sunulabilir. Bu tip sistemler, Metin2 development dünyasında önemli bir yere sahiptir ve sunucu kalitesini doğrudan etkiler.
What is ITJA Item Info System?
The ITJA Item Info system is one of the tools developed to enhance the in-game experience on Metin2 private servers. This system allows players to access detailed information about items in their inventory. Users can view item level, bonuses, set properties, and more by hovering over the item name or using specific shortcuts. Especially in PvP-focused servers, this information helps players make strategic decisions.
How Does It Work?
The ITJA Item Info system integrates with Python-based GUI structures and typically operates through UI components defined in uiscript files. The module requires installation of necessary Python files within the py root folder. Certain C++ script modifications may also be required during setup. The item data is fetched from the server and displayed via the game server.
Installation and Integration
To install this system, the required Python files must first be placed in the py root folder. Then, the necessary adjustments must be made in the uiscript files for the GUI interface. If the server uses custom data structures, modifications may also be needed in the auth or game server source codes. These tasks generally require a developer experienced in C++ source code.
Advantages
Thanks to the ITJA Item Info system, players can quickly identify items and make informed choices during PvP battles. From the perspective of server developers, this system increases player satisfaction and provides a competitive edge. The system is compatible with popular sources like Martysama. Additionally, developers can customize and expand this system to add unique features to their server.
In Honor of Migo's Expert Membership
This system has been developed or recommended by Migo, who is highly respected among Metin2 developers. Therefore, the ITJA Item Info system is a project requiring advanced C++ system and source edit skills. It enables a more professional experience on Metin2 private servers. Such systems hold significant importance in the Metin2 development world and directly impact server quality.
