Yeni item kilit sistemi c++

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Sistemi yazan bizzat benim alan tek kişi ekleyemediği için forumda paylaşmış. İlk bana yazsaydı gerekli kurulumunu yapardım dün gece o paylaşan kişiye kurulumunu yaptın gece konuyu gördükten sonra alan aldığı için paylaşıyorum

Kod:
LPITEM CHARACTER::GetInventoryItem(WORD wCell) const {     return GetItem(TItemPos(INVENTORY, wCell)); } LPITEM CHARACTER::GetEquipmentItem(WORD wCell) const {     return GetItem(TItemPos(EQUIPMENT, wCell)); } //Alttaki bölümü ekleyin sizde yoksa LPITEM CHARACTER::GetDragonSoulInventoryItem(WORD wCell) const {     return GetItem(TItemPos(DRAGON_SOUL_INVENTORY, wCell)); }
char.h
Kod:
LPITEM            GetItem(TItemPos Cell) const;         LPITEM            GetInventoryItem(WORD wCell) const;         LPITEM            GetEquipmentItem(WORD wCell) const; //Alttaki Kodu Ekleyin Sizde Yoksa         LPITEM            GetDragonSoulInventoryItem(WORD wCell) const;//KONTROL



Yeni Item Kilit Sistemi C++

Metin2 özel sunucularında güvenliği artırmak ve hile kullanımını engellemek adına geliştirilen Item Kilit Sistemi, oyuncuların eşyaları üzerinde daha fazla kontrol sahibi olmasını sağlar. Bu yazıda, C++ tabanlı bir Item Kilit Sistemi'nin nasıl geliştirileceği, hangi modüllerin değiştirilmesi gerektiği ve nasıl entegre edileceği detaylı olarak ele alınacaktır.

Sistem Nedir?
Item Kilit Sistemi, oyuncuların belirli eşyaları belirli bir süre kilitleyerek diğer karakterlerle etkileşime girmesini engeller. Bu sayede trade veya drop gibi işlemler yapılamaz. Sistem genellikle PvP sunucularda eşya çalma riskini azaltmak için tercih edilir. Bu sistemin temel amacı, oyuncuların değerli eşyalarını korumaktır.

C++ Tarafında Geliştirme
Öncelikle game server tarafında eşya veritabanı yapısına yeni bir alan (is_locked) eklenmelidir. Bu alan, eşyanın kilitli olup olmadığını belirtir. Daha sonra, eşya üzerinde işlem yapılması istendiğinde bu alan kontrol edilmelidir. Örneğin, bir oyuncu kilitli bir eşyayı trade yapmaya çalıştığında işlem reddedilmelidir.

Ayrıca, kilit süresi olan eşyalar için time_t tipinde bir alan da eklenebilir. Bu sayede kilit süresi dolan eşyalar otomatik olarak açılabilir.

Client Tarafı Entegrasyonu
Client tarafında, oyuncunun bir eşyayı kilitlemesi için bir butona ihtiyaç vardır. Bu buton, UIScript dosyalarında tanımlanabilir. Oyuncu butona bastığında, client game server'a bir paket gönderir ve sunucu eşyayı veritabanında kilitli olarak işaretler. Aynı zamanda, kilitli eşyalar farklı bir simge veya renk ile gösterilebilir.

Olası Hatalar ve Çözümler
Bu sistem geliştirilirken dikkat edilmesi gereken bazı önemli noktalar vardır. Örneğin, bir eşya kilitliyse drop edilememelidir. Aynı şekilde trade, move_inventory_to_ground gibi işlemler de engellenmelidir. Aksi takdirde güvenlik açıkları oluşabilir. Ayrıca, kilit süresi biten eşyaların doğru şekilde açıldığından emin olunmalıdır.

Veritabanı Değişiklikleri
Eşya tablosuna aşağıdaki sütunlar eklenmelidir:
- is_locked TINYINT(1)
- lock_until TIMESTAMP NULL
Bu sayede kilit durumu ve süresi kolayca yönetilebilir. Python scriptleriyle bu veriler düzenlenebilir.

Sonuç
Item Kilit Sistemi, Metin2 özel sunucularında kullanıcı deneyimini artırırken aynı zamanda güvenliği de artırır. Bu sistemin doğru şekilde entegrasyonu, hem client hem de server tarafında dikkatli kodlama gerektirir. Sistem, C++ ile yazılmış source dosyalarına entegre edildiğinde, oyuncular için güvenli ve kullanışlı bir özellik haline gelir.


New Item Lock System in C++

To enhance security and prevent cheating on Metin2 private servers, the Item Lock System allows players to gain more control over their items. In this article, we will explain in detail how to develop a C++ based Item Lock System, which modules need to be modified, and how to integrate it into your server.

What Is The System?
The Item Lock System allows players to lock certain items for a specific duration, preventing interactions such as trade or drop. This system is commonly used in PvP servers to reduce the risk of item theft. Its main purpose is to protect valuable items owned by players.

Development On C++ Side
Firstly, a new field (is_locked) must be added to the item database structure on the game server side. This field indicates whether the item is locked. Then, whenever an action is attempted on the item, this field must be checked. For example, if a player tries to trade a locked item, the action should be rejected.

Additionally, for items with a lock duration, a time_t type field can also be added. This allows automatically unlocking items once their lock time expires.

Client-Side Integration
On the client side, a button is needed for players to lock an item. This button can be defined in UIScript files. When the player clicks the button, the client sends a packet to the game server, which marks the item as locked in the database. Additionally, locked items can be visually distinguished with different icons or colors.

Potential Errors and Solutions
There are some important points to consider during development. For instance, locked items should not be droppable. Similarly, actions like trade or move_inventory_to_ground must be blocked; otherwise, security vulnerabilities may occur. Also, ensure that items whose lock time has expired are properly unlocked.

Database Modifications
Add the following columns to the item table:
- is_locked TINYINT(1)
- lock_until TIMESTAMP NULL
This allows easy management of lock status and duration. These values can be adjusted via Python scripts.

Conclusion
The Item Lock System enhances both user experience and security in Metin2 private servers. Proper integration requires careful coding on both client and server sides. When integrated into C++ written source files, this system becomes a secure and user-friendly feature.​
 

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

Geri
Üst Alt