Server Klasöründeki common klasörü açılır içerisindeki length.h açılır ve aratılır
Bu Şekilde Değiştirilir Ve length.h Kapatılır.
Şimdi Game / src İçindeki exchange.cpp açılır ve aratılır.
Altına Eklenir
exchange.cpp içerisinde tekrar aratılır :
Altına Eklenir
Tekrar exchange.cpp de aratılır
Ve Kod Bloğunu Tamamen Şu Şekilde Değiştiriniz
Client Kısmında Client/Userinterface içerisindeki GameType.h açılır ve aratılır
Bu Şekilde Değiştirilir
Taşma Sorununu Engelleyen Kodlar:
char_item.cpp açılır ve ne kadar
Varsa Aratılır Hepsi Şu Şekilde Değiştirilir
Python Eklentileri Hazır .py ler
uinventory.py root içerisine inventorywindow.py locale_tr içerisine atılır
Link:
Virüs Taraması:
İyi Forumlar.
Kanıt:
Metin2 özel sunucularında envanter sistemi, oyuncuların eşyalarını düzenlemeleri ve taşıdıkları itemleri kontrol edebilmeleri açısından oldukça kritiktir. Bu sistem, hem client tarafında hem de server tarafında senkronize çalışmalıdır. Bu yazıda, C++ tabanlı 5 farklı envanter yapımı incelenecek ve nasıl daha iyi bir kullanıcı deneyimi sunulabileceği ele alınacaktır.
1. Temel Envanter Yapısı
Temel envanter yapısı, game/core dosyalarında tanımlanır. inventory.cpp ve inventory.h gibi dosyalar üzerinden envanter slotları tanımlanır. Her slot, bir item ID, miktar ve durum bilgisi içerir. Bu yapı, client/src/uigame.py dosyasında UIScript yardımıyla ekrana yansıtılır.
2. GUI Tabanlı Envanter
Python GUI sistemleri (PyRoot) kullanılarak envanter arayüzü özelleştirilebilir. uiscript dosyalarında tanımlanan butonlar, slotlar ve görseller, py dosyalarıyla etkileşime girer. Bu sayede kullanıcı dostu ve dinamik bir arayüz oluşturulabilir.
3. Sunucu Tarafında Eşya Taşıma Sistemi
Auth ve Game sunucularında, eşya taşıma işlemleri packet sistemleriyle yönetilir. C++ üzerinden tanımlanan bu paketler, client tarafından gönderilen envanter isteklerini karşılar. Paket yapısı, güvenlik açısından hash tabanlı doğrulama içerir.
4. Veritabanı Entegrasyonu
DB Core üzerinde, envanter verileri item_slot tablosunda tutulur. Her karakterin envanteri, karakter ID'siyle ilişkilendirilerek saklanır. SQL sorguları ile eşyalar silinir, güncellenir veya aktarılır. Bu sistem, Metin2 özel sunucularında PvP ve PvE sistemlerinde önemli rol oynar.
5. Gelişmiş Özellikler ve Optimizasyon
MartySama gibi geliştiricilerin katkılarıyla, envanter sistemlerinde C++ seviyesinde optimizasyonlar yapılabiliyor. Örneğin, eşya taşınırken checksum algoritmaları ile veri bütünlüğü sağlanabilir. Ayrıca, client/src tarafında drag&drop işlemleri için özel fonksiyonlar yazılabilir.
Sonuç olarak, Metin2[/BR] özel sunucularında envanter sistemleri, C++ tabanlı kodlama ile güçlü ve stabil hale getirilebilir. Metin2Lobby olarak, bu tür sistemlerin geliştirilmesi için kaynak kodlar, derleme araçları ve compile rehberleri sunuyoruz.
Metin2 private servers require a robust inventory system that allows players to manage items and control their equipment. This system must work synchronously on both client and server sides. In this article, we will examine 5 different inventory implementations based on C++ and discuss how to improve user experience.
1. Basic Inventory Structure
The basic inventory structure is defined within game/core files. Files like inventory.cpp and inventory.h define inventory slots. Each slot holds an item ID, quantity, and status. This structure is displayed on screen via UIScript in the client/src/uigame.py file.
2. GUI-Based Inventory
Using Python GUI systems (PyRoot), the inventory interface can be customized. Buttons, slots, and graphics defined in uiscript files interact with py files, allowing for a user-friendly and dynamic interface.
3. Server-Side Item Movement System
Item movement operations are managed through packet systems on Auth and Game servers. These packets defined in C++ handle inventory requests sent by the client. The packet structure includes hash-based validation for security purposes.
4. Database Integration
Within the DB Core, inventory data is stored in the item_slot table. Each character's inventory is associated with the character ID. SQL queries are used to delete, update, or transfer items. This system plays a key role in PvP and PvE mechanics of Metin2 private servers.
5. Advanced Features and Optimization
Thanks to contributions from developers like MartySama, optimizations at the C++ level are possible in inventory systems. For instance, checksum algorithms can ensure data integrity during item movements. Additionally, custom functions for drag&drop operations can be written on the client/src side.
In conclusion, inventory systems in Metin2 private servers can be made powerful and stable with C++-based coding. Metin2Lobby provides source codes, compilation tools, and compile guides to support such system developments.
Kod:
INVENTORY_MAX_NUM = 90,
Kod:
INVENTORY_MAX_NUM = 225,
Bu Şekilde Değiştirilir Ve length.h Kapatılır.
Şimdi Game / src İçindeki exchange.cpp açılır ve aratılır.
Kod:
static CGrid s_grid1(5, INVENTORY_MAX_NUM/5 / 2); // inven page 1 static CGrid s_grid2(5, INVENTORY_MAX_NUM/5 / 2); // inven page 2
Altına Eklenir
Kod:
static CGrid s_grid3(5, INVENTORY_MAX_NUM/5 / 2); // inven page 3 static CGrid s_grid4(5, INVENTORY_MAX_NUM/5 / 2); // inven page 3 static CGrid s_grid5(5, INVENTORY_MAX_NUM/5 / 2); // inven page 3
exchange.cpp içerisinde tekrar aratılır :
Kod:
s_grid1.Clear(); s_grid2.Clear();
Altına Eklenir
Kod:
s_grid3.Clear(); s_grid4.Clear(); s_grid5.Clear();
Tekrar exchange.cpp de aratılır
Kod:
for (i = 0; i < INVENTORY_MAX_NUM / 2; ++i)
Ve Kod Bloğunu Tamamen Şu Şekilde Değiştiriniz
Kod:
for (i = 0; i < INVENTORY_MAX_NUM / 5; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; s_grid1.Put(i, 1, item->GetSize()); } for (i = INVENTORY_MAX_NUM / 5; i < INVENTORY_MAX_NUM; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; s_grid2.Put(i - INVENTORY_MAX_NUM / 5, 1, item->GetSize()); } for (i = INVENTORY_MAX_NUM / 5; i < INVENTORY_MAX_NUM; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; s_grid3.Put(i - INVENTORY_MAX_NUM / 5, 1, item->GetSize()); } for (i = INVENTORY_MAX_NUM / 5; i < INVENTORY_MAX_NUM; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; s_grid4.Put(i - INVENTORY_MAX_NUM / 5, 1, item->GetSize()); } for (i = INVENTORY_MAX_NUM / 5; i < INVENTORY_MAX_NUM; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; s_grid5.Put(i - INVENTORY_MAX_NUM / 5, 1, item->GetSize()); }
Client Kısmında Client/Userinterface içerisindeki GameType.h açılır ve aratılır
Kod:
const DWORD c_Inventory_Page_Count = 2;
Bu Şekilde Değiştirilir
Kod:
const DWORD c_Inventory_Page_Count = 5;
Taşma Sorununu Engelleyen Kodlar:
char_item.cpp açılır ve ne kadar
Kod:
INVENTORY_MAX_NUM / 2
Varsa Aratılır Hepsi Şu Şekilde Değiştirilir
Kod:
INVENTORY_MAX_NUM / 5
Python Eklentileri Hazır .py ler
uinventory.py root içerisine inventorywindow.py locale_tr içerisine atılır
Link:
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Virüs Taraması:
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
İyi Forumlar.
Kanıt:
C++ ile Metin2'de Envanter Sistemi Geliştirme
Metin2 özel sunucularında envanter sistemi, oyuncuların eşyalarını düzenlemeleri ve taşıdıkları itemleri kontrol edebilmeleri açısından oldukça kritiktir. Bu sistem, hem client tarafında hem de server tarafında senkronize çalışmalıdır. Bu yazıda, C++ tabanlı 5 farklı envanter yapımı incelenecek ve nasıl daha iyi bir kullanıcı deneyimi sunulabileceği ele alınacaktır.
1. Temel Envanter Yapısı
Temel envanter yapısı, game/core dosyalarında tanımlanır. inventory.cpp ve inventory.h gibi dosyalar üzerinden envanter slotları tanımlanır. Her slot, bir item ID, miktar ve durum bilgisi içerir. Bu yapı, client/src/uigame.py dosyasında UIScript yardımıyla ekrana yansıtılır.
2. GUI Tabanlı Envanter
Python GUI sistemleri (PyRoot) kullanılarak envanter arayüzü özelleştirilebilir. uiscript dosyalarında tanımlanan butonlar, slotlar ve görseller, py dosyalarıyla etkileşime girer. Bu sayede kullanıcı dostu ve dinamik bir arayüz oluşturulabilir.
3. Sunucu Tarafında Eşya Taşıma Sistemi
Auth ve Game sunucularında, eşya taşıma işlemleri packet sistemleriyle yönetilir. C++ üzerinden tanımlanan bu paketler, client tarafından gönderilen envanter isteklerini karşılar. Paket yapısı, güvenlik açısından hash tabanlı doğrulama içerir.
4. Veritabanı Entegrasyonu
DB Core üzerinde, envanter verileri item_slot tablosunda tutulur. Her karakterin envanteri, karakter ID'siyle ilişkilendirilerek saklanır. SQL sorguları ile eşyalar silinir, güncellenir veya aktarılır. Bu sistem, Metin2 özel sunucularında PvP ve PvE sistemlerinde önemli rol oynar.
5. Gelişmiş Özellikler ve Optimizasyon
MartySama gibi geliştiricilerin katkılarıyla, envanter sistemlerinde C++ seviyesinde optimizasyonlar yapılabiliyor. Örneğin, eşya taşınırken checksum algoritmaları ile veri bütünlüğü sağlanabilir. Ayrıca, client/src tarafında drag&drop işlemleri için özel fonksiyonlar yazılabilir.
Sonuç olarak, Metin2[/BR] özel sunucularında envanter sistemleri, C++ tabanlı kodlama ile güçlü ve stabil hale getirilebilir. Metin2Lobby olarak, bu tür sistemlerin geliştirilmesi için kaynak kodlar, derleme araçları ve compile rehberleri sunuyoruz.
Developing Inventory Systems in Metin2 with C++
Metin2 private servers require a robust inventory system that allows players to manage items and control their equipment. This system must work synchronously on both client and server sides. In this article, we will examine 5 different inventory implementations based on C++ and discuss how to improve user experience.
1. Basic Inventory Structure
The basic inventory structure is defined within game/core files. Files like inventory.cpp and inventory.h define inventory slots. Each slot holds an item ID, quantity, and status. This structure is displayed on screen via UIScript in the client/src/uigame.py file.
2. GUI-Based Inventory
Using Python GUI systems (PyRoot), the inventory interface can be customized. Buttons, slots, and graphics defined in uiscript files interact with py files, allowing for a user-friendly and dynamic interface.
3. Server-Side Item Movement System
Item movement operations are managed through packet systems on Auth and Game servers. These packets defined in C++ handle inventory requests sent by the client. The packet structure includes hash-based validation for security purposes.
4. Database Integration
Within the DB Core, inventory data is stored in the item_slot table. Each character's inventory is associated with the character ID. SQL queries are used to delete, update, or transfer items. This system plays a key role in PvP and PvE mechanics of Metin2 private servers.
5. Advanced Features and Optimization
Thanks to contributions from developers like MartySama, optimizations at the C++ level are possible in inventory systems. For instance, checksum algorithms can ensure data integrity during item movements. Additionally, custom functions for drag&drop operations can be written on the client/src side.
In conclusion, inventory systems in Metin2 private servers can be made powerful and stable with C++-based coding. Metin2Lobby provides source codes, compilation tools, and compile guides to support such system developments.
