[C ++] OfflineShop <Bug fix>

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Bugün forumda birisi arıyordu bende paylaşmak istedim.
Bu düzeltme, banka offlineshop, mağaza vb., Yang artış sınırı olan kişiler için geçerlidir ..

/Src/common/service.h
Müsait bir yere ekle
Kod:
#define __OFFLINE_SHOP_FIX_OPEN    #define __OFFLINE_SHOP_VALUE_MAX 2000000000 #define __OFFLINE_SHOP_WARNING "[Protect Offline] 2.000.000.000'dan fazla Yangınız olsun !"

/Src/game/src/char.cpp
Ara

Kod:
if (!LC_IsBrazil())     {         DWORD nTotalMoney = 0;         for (BYTE n = 0; n &lt; bItemCount; ++n)             nTotalMoney += (pTable + n)-&gt;price;         if (GOLD_MAX - 1 &lt;= nTotalMoney)         {             sys_err("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id %u name %s", GetPlayerID(), GetName());             ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20억 냥을 초과하여 상점을 열수가 없습니다"));             return;         }     }

Değiştir

Kod:
#ifdef __OFFLINE_SHOP_FIX_OPEN     int64_t szTotalMoney = 0;     for (int n = 0; n &lt; bItemCount; ++n)     {         szTotalMoney += static_cast&lt;int64_t&gt;((pTable+n)-&gt;price);     }     std::auto_ptr&lt;SQLMsg&gt; pMsg(DBManager::instance().DirectQuery("SELECT money FROM player.player WHERE id = %u", GetPlayerID()));     if (pMsg-&gt;Get()-&gt;uiNumRows == 0)         return;             DWORD dwCurrentMoney = 0;     MYSQL_ROW row = mysql_fetch_row(pMsg-&gt;Get()-&gt;pSQLResult);     str_to_number(dwCurrentMoney, row[0]);        szTotalMoney += static_cast&lt;int64_t&gt;(dwCurrentMoney);     if (__OFFLINE_SHOP_VALUE_MAX &lt;= szTotalMoney)     {         ChatPacket(CHAT_TYPE_INFO, __OFFLINE_SHOP_WARNING);         return;     } #else            if (!LC_IsBrazil())     {         DWORD nTotalMoney = 0;         for (BYTE n = 0; n &lt; bItemCount; ++n)             nTotalMoney += (pTable + n)-&gt;price;         if (GOLD_MAX - 1 &lt;= nTotalMoney)         {             sys_err("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id %u name %s", GetPlayerID(), GetName());             ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20억 냥을 초과하여 상점을 열수가 없습니다"));             return;         }     } #endif

[C ++] OfflineShop Sistemi Hata Giderme Rehberi

Metin2 Lobby olarak sunucu geliştirme konusunda aktif olan geliştiriciler için önemli bir konu olan OfflineShop sistemi, oyuncuların oyun dışıyken dükkanlarını açık bırakmalarını sağlar. Bu sistem genellikle C++ tabanlı sunucularda kullanılır ve doğru şekilde yapılandırıldığında oldukça güçlü bir araç haline gelir. Ancak, bazı durumlarda sistemde hatalar oluşabilir. Bu yazıda OfflineShop sisteminde sık karşılaşılan hataları ve çözümlerini detaylıca ele alacağız.

OfflineShop Nedir?
OfflineShop, Metin2 özel sunucularında oyuncuların oyun kapalıyken bile eşya satışı yapabilmelerini sağlayan gelişmiş bir özelliktir. Bu sistem sayesinde oyuncular, belirli slotlara eşyalarını koyar, fiyat belirler ve diğer oyuncuların satın almasını sağlar. Bu işlem genellikle C++ tabanlı game core üzerinde çalışır ve veritabanı bağlantısı ile yönetilir.

Sık Karşılaşılan Hatalar
1. Hata: Eşya Satışta Gözükmez
Bu durum genellikle db_core ile game_server arasındaki veri senkronizasyon sorunundan kaynaklanabilir. Çözüm için, game/src/ dizinindeki offlineshop.cpp dosyasının güncel olduğundan emin olun. Ayrıca, veritabanında gerekli tabloların doğru tanımlandığından ve trigger’ların çalıştığından emin olun.

2. Hata: Oyuncu Dükkanını Açamıyor
Bu durum genellikle client_src tarafında eksik UI implementasyonundan veya uiscript dosyalarında eksikliklerden kaynaklanır. py_root içindeki offlineshop.py dosyası kontrol edilmeli ve gerekli fonksiyonlar eksiksiz tanımlanmalıdır.

Hata Giderme Adımları
- auth_server ve game_server logları kontrol edilmelidir. Özellikle syserr dosyasında offline shop ile ilgili hata mesajları varsa, bu mesajlar üzerinden kök neden analizi yapılabilir.

- pack dosyalarında gerekli locale/ alt yapısı doğru tanımlanmış mı? Eğer değilse, sunucuya özel dil dosyaları eksik olabilir. Bu da UI hatalarına yol açabilir.

- Martysama tarafından geliştirilen bazı modül entegrasyonlarında, python gui sistemleriyle uyumsuzluk olabilir. Bu durumda uiscript dosyaları yeniden düzenlenmelidir.

Önerilen Geliştirme Pratikleri
- Sunucu derlemesi sırasında metin2 compile işlemleri dikkatlice yapılmalı. Özellikle source edit işlemleri sonrasında test sunucusunda tüm fonksiyonlar kontrol edilmelidir.

- Metin2Dev topluluğu ve diğer geliştirici forumları üzerinden benzer hatalar incelenmeli ve çözüm yolları araştırılmalıdır.

- PVP sistemleri ile entegre çalışan OfflineShop modüllerinde, savaş esnasında dükkanlara erişim engellenmeli ya da geçici olarak satış durdurulmalıdır.

Teknik Bilgi
OfflineShop sistemi genellikle MySQL veritabanında player.offline_shop gibi bir tabloya sahiptir. Her dükkan açıldığında, oyuncunun ID’si, eşya verileri ve fiyat bilgileri bu tabloya yazılır. Satın alma gerçekleştiğinde, core tarafından otomatik olarak para aktarımı yapılır ve eşya alıcıya gönderilir. Bu süreçte db ve game sunucuları arasında güvenilir bir bağlantı olması şarttır.

Sonuç
OfflineShop sistemi, Metin2 özel sunucularında kullanıcı deneyimini artıran değerli bir özelliktir. Ancak, hata ayıklama ve geliştirme aşamasında dikkatli hareket etmek gereklidir. Doğru yapılandırılmış bir sistem, oyuncular için güvenli ve karlı bir ekonomik kanal oluşturur.


[C ++] OfflineShop Bug Fix Guide

Metin2 Lobby for developers active in server development, the OfflineShop system is an important topic that allows players to keep their shops open while offline. This system is commonly used on C++ based servers and becomes a powerful tool when configured correctly. However, certain errors may occur in the system. In this article, we will examine common bugs in the OfflineShop system and their solutions in detail.

What is OfflineShop?
OfflineShop is an advanced feature in Metin2 private servers that allows players to sell items even when they are offline. With this system, players can place items into specific slots, set prices, and allow other players to purchase them. This process typically runs on a C++ based game core and is managed via database connections.

Common Errors
1. Error: Item Does Not Appear For Sale
This issue often stems from data synchronization problems between db_core and game_server. To resolve, ensure the offlineshop.cpp file in the game/src/ directory is up to date. Additionally, verify that the required tables are properly defined in the database and triggers are running.

2. Error: Player Cannot Open Shop
This issue usually arises from incomplete UI implementation in client_src or missing elements in uiscript files. The offlineshop.py file within py_root should be checked and necessary functions must be fully defined.

Debugging Steps
- Logs of auth_server and game_server should be reviewed. If there are error messages related to offline shop in the syserr file, root cause analysis can be performed based on these messages.

- Are the necessary locale/ structures properly defined in the pack files? If not, custom language files may be missing, which could lead to UI errors.

- In integrations developed by Martysama, there might be incompatibilities with python gui systems. In such cases, uiscript files need to be restructured.

Recommended Development Practices
- Server compilation processes like metin2 compile should be done carefully. After any source edit, all functions should be tested thoroughly on a test server.

- Similar errors should be researched in Metin2Dev communities and other developer forums to find solution paths.

- In OfflineShop modules integrated with PVP systems, access to shops during combat should be blocked or sales temporarily paused.

Technical Information
The OfflineShop system usually has a table like player.offline_shop in MySQL database. Each time a shop opens, the player's ID, item data, and price information are written to this table. When a purchase occurs, money transfer and item delivery to the buyer are handled automatically by the core. A reliable connection between db and game servers is essential during this process.

Conclusion
The OfflineShop system is a valuable feature that enhances user experience in Metin2 private servers. However, careful attention is needed during debugging and development phases. A well-configured system creates a safe and profitable economic channel for players.
 

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

Benzer konular

Geri
Üst Alt