Cube'de Socket'leri Olduğu Gibi Aktar

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhaba arkadaşlar.
Bir müşterimin isteği üzerine dikkatimi çekti ve sizlerle paylaşmak istedim.
Socket bulunduran itemlerin Socket'lerini olduğu gibi aktarmak için yapılan bir eklentidir.

Kod:
//arat;     this->gold = 0; //altına ekle;     this->allowCopySocket = false; //tekrar arat;         else TOKEN("gold")         {             cube_data->gold = value1;         } //altına ekle;         else TOKEN("allow_copy_socket")         {             cube_data->allowCopySocket = (value1 == 1 ? true : false);         } //tekrar arat;     LPITEM    new_item; //altına ekle;     DWORD    copySocket[ITEM_SOCKET_MAX_NUM]; //tekrar arat;     CUBE_VALUE* reward_value = cube_proto->reward_value(); //altına ekle;     for (int i = 0; i < CUBE_MAX_NUM; ++i)     {         if (nullptr == items[i])    continue;         if (items[i]->GetType() == ITEM_WEAPON || items[i]->GetType() == ITEM_ARMOR || items[i]->GetType() == ITEM_UNIQUE || items[i]->GetType() == ITEM_COSTUME)         {             bool hasElement = false;             for (int j = 0; j < cube_proto->item.size(); ++j)             {                 if (cube_proto->item[j].vnum == items[i]->GetVnum())                 {                     hasElement = true;                     break;                 }             }             if (hasElement == false)                 continue;             for (int a = 0; a < ITEM_SOCKET_MAX_NUM; a++)                 copySocket[a] = items[i]->GetSocket(a);             break;         }         continue;     } //tekrar arat;         new_item = ch->AutoGiveItem(reward_value->vnum, reward_value->count); //altına ekle;         if (cube_proto->allowCopySocket == true)         {             for (int i = 0; i < ITEM_SOCKET_MAX_NUM; i++)                 new_item->SetSocket(i, copySocket[i]);         }

Kod:
//arat;     unsigned int            gold; //altına ekle;     bool                    allowCopySocket;

Örnek cube.txt:
Kod:
section npc    20095 item    189    1 allow_copy_socket    1 reward    319    1 percent    100 end

Aşağıdaki kodu eklediğiniz her blok Socket'leri silmeden aktaracaktır.
Kod:
allow_copy_socket    1

İyi forumlar.
Cube'de Socket'leri Olduğu Gibi Aktar

Metin2 özel sunucu geliştirme süreçlerinde, oyuncuların ekipmanlarını güçlendirme mekaniklerinden biri olan socket sistemi büyük önem taşır. Cube sistemi içerisinde yer alan socket yapılandırmasının doğru bir şekilde aktarılması, hem kullanıcı deneyimini artırır hem de sunucu tarafında oluşabilecek hataları engeller. Bu makalede, Cube sistemine entegre edilmiş socket yapılarının nasıl olduğu gibi doğrudan aktarılacağı detaylı olarak ele alınacaktır.

Socket Sisteminin Önemi

Socket, Metin2 oyununda oyuncuların silah veya zırhlara özel taşlar takarak bonuslar kazandığı sistemdir. Bu sistem, oyuncuların karakterlerini kişiselleştirmelerine olanak tanır. Cube yapısı içerisinde socketlerin doğru tanımlanması, sunucu tarafında veri bütünlüğünü sağlar. Socket aktarma işlemi sırasında dikkat edilmesi gereken bazı önemli konular vardır.

Socket Tanımlamalarını Aktarma Adımları

C++ tabanlı Metin2 sunucu yapılarında, socket bilgileri genellikle client src ve game src arasında paylaşılan yapılar üzerinden tanımlanır. Cube sistemine entegre edilmiş socket tanımlamaları, genellikle ITEM_SOCKET_SLOT_COUNT gibi sabit değerler üzerinden belirlenir. Bu tanımlar doğrudan ITEM_MANAGER sınıfı üzerinden yönetilir. Socket verilerinin aktarımı sırasında, önce client tarafında tanımlanan yapıların game sunucusuna aktarılması gerekir.

Client ve Game Sunucusu Arasında Veri Paylaşımı

Socket verileri, client tarafında ITEM_DATA adı altında tutulur. Bu veriler, AUTH ve GAME sunucuları arasında güvenli bir şekilde aktarılmalıdır. Cube yapısında bu aktarım genellikle paket (pack) mekanizmaları üzerinden yapılır. Paketleme sırasında, socket slot sayısı, mevcut taşlar ve bonus değerler gibi tüm bilgiler doğru sırayla serialize edilmelidir. Bu sayede client ve server arasında tutarsızlıklar önlenir.

Python GUI Kullanımı ile Socket Yönetimi

Python GUI araçları, socket sistemlerinin test edilmesi ve geliştirilmesi sürecinde büyük kolaylık sağlar. Py Root yapısı altında geliştirilen arayüzlerle, socket verileri dinamik olarak kontrol edilebilir. Bu tür arayüzler, geliştiricilere gerçek zamanlı veri değişimi imkanı sunar. Örneğin, bir socket slotuna özel bir taş eklendiğinde, bu değişikliğin hemen client'a yansıtılması sağlanabilir.

Martysama ve Diğer Geliştirici Kaynakları

Metin2 geliştirme dünyasında Martysama gibi açık kaynak projeler, socket sistemlerinin doğru entegrasyonu için örnek teşkil eder. Bu tür projelerde yer alan C++ script yapıları, geliştiriciler için iyi bir referans oluşturur. Cube yapısında socket aktarımı sırasında, bu tür örneklerden faydalanmak oldukça faydalıdır.

DB ve Oyun Sunucusu Uyumluğu

DB Core ve Game Core yapıları arasında socket verilerinin doğru aktarımı için, veritabanında ITEM_SOCKET_SLOT_COUNT ve benzeri alanlar doğru tanımlanmalıdır. Cube sistemi, bu verileri doğrudan ITEM_MANAGER sınıfı üzerinden okur. Socket verileri DB'de saklanırken, aynı zamanda AUTH ve GAME sunucuları arasında senkronize edilmelidir. Bu süreçte, veri kaybı yaşanmaması için_checksum_ kontrolleri yapılmalıdır.

Sonuç

Cube üzerinde socket sistemlerinin doğru aktarılması, Metin2 özel sunucularında kaliteli bir oyun deneyimi sunmak için kritik öneme sahiptir. Socket verilerinin client, auth ve game katmanları arasında hatasızca aktarılması, veri bütünlüğü açısından büyük önem taşır. Py GUI ve C++ sistemlerinin uyumlu çalışması, bu süreci daha da kolaylaştırır.


Transferring Sockets in Cube as They Are

In Metin2 private server development, the socket system is one of the key mechanics for enhancing player equipment. Properly transferring socket configurations integrated into the Cube system not only enhances user experience but also prevents potential errors on the server side. This article details how socket structures integrated into the Cube system can be transferred directly as they are.

Importance of the Socket System

Sockets allow players in Metin2 to attach special stones to their weapons or armor, granting various bonuses. This system allows players to customize their characters. Correctly defining socket structures within the Cube framework ensures data integrity on the server. There are several important considerations during the process of transferring socket data.

Steps for Transferring Socket Definitions

In C++ based Metin2 server structures, socket information is typically defined through shared structures between client src and game src. In Cube-integrated socket definitions, fixed values like ITEM_SOCKET_SLOT_COUNT are commonly used. These definitions are managed directly by the ITEM_MANAGER class. During the transfer of socket data, structures defined on the client side must be securely passed to the game server.

Sharing Data Between Client and Game Server

Socket data is stored under ITEM_DATA on the client side. This data must be transferred securely between AUTH and GAME servers. Within the Cube structure, this transfer is usually done via pack mechanisms. During packaging, all related information such as socket slot count, current stones, and bonus values must be serialized in the correct order to prevent inconsistencies between the client and server.

Managing Sockets with Python GUI

Python GUI tools provide significant convenience during testing and development of socket systems. Interfaces developed under the Py Root structure allow dynamic control over socket data. Such interfaces enable real-time data exchange for developers. For example, when a special stone is added to a socket slot, this change can be immediately reflected on the client side.

Resources Like Martysama for Developers

Within the world of Metin2 development, open-source projects like Martysama serve as examples for correctly integrating socket systems. The C++ script structures found in these projects serve as good references for developers. Utilizing such examples during socket transfers in the Cube system proves highly beneficial.

Database and Game Server Compatibility

For correct socket data transfer between DB Core and Game Core structures, fields such as ITEM_SOCKET_SLOT_COUNT must be properly defined in the database. The Cube system reads this data directly from the ITEM_MANAGER class. While storing socket data in the DB, it must also be synchronized between AUTH and GAME servers. To avoid data loss, _checksum_ checks should be implemented during this process.

Conclusion

Properly transferring socket systems in Cube is critical for delivering a high-quality gaming experience in Metin2 private servers. Error-free transfer of socket data across client, auth, and game layers is essential for data integrity. Seamless cooperation between Py GUI and C++ systems significantly simplifies this process.
 

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

Geri
Üst Alt