Neler yeni

Foruma hoş geldin, Ziyaretçi

Metin2Lobby.com Metin2 Private Server Tanıtım Advertising Ve Geliştirme Forumudur.Metin2 pvp serverler,1-99,1-105,1-120,55-120 global serverları paylaş yada ara.
Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

MaviAyGames | Offline Shop Satış Yapınca Pm Bildirisi

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Konular
48,291
Mesajlar
48,601
Tepkime puanı
75
M2 Yaşı
3 yıl 11 ay 10 gün
Trophy Puan
48
Konum
Web sitesi
M2 Yang
488,879
Ticaret : 1 / 0 / 0
Ticaret Oranı : 100%
Dün offline shop log adlı konu altına bu eklentiyi paylaşmamı isteyenler olmuş buyrun.

İnput.h

Kod:
public:         CPacketInfoGG     m_packetInfoGG; };

Üstüne ekle:
Kod:
void        SendOfflineShopMessage(LPDESC d, const char * c_pData);

İnput_p2p.cpp

Ekle:

Kod:
void CInputP2P::SendOfflineShopMessage(LPDESC d, const char * c_pData) {     TPacketGGOfflineShopMessage * p = (TPacketGGOfflineShopMessage *)c_pData;     LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(p->dwTargetPID);     if (ch)     {         LPDESC pkVictimDesc = ch->GetDesc();         if (pkVictimDesc)         {             char msg[CHAT_MAX_LEN + 1];             snprintf(msg, sizeof(msg), LC_TEXT("Your item %s sold, buyer is: %s."), p->szItemName, p->szName);             TPacketGCWhisper pack;             int len = MIN(CHAT_MAX_LEN, strlen(msg) + 1);             pack.bHeader = HEADER_GC_WHISPER;             pack.wSize = sizeof(TPacketGCWhisper)+len;             pack.bType = WHISPER_TYPE_SYSTEM;             strlcpy(pack.szNameFrom, "[Market Tezgahı]", sizeof(pack.szNameFrom));             TEMP_BUFFER buf;             buf.write(&pack, sizeof(TPacketGCWhisper));             buf.write(msg, len);             pkVictimDesc->Packet(buf.read_peek(), buf.size());         }     } }




Arat:
Kod:
}     return (iExtraLen); }

Altına ekle:
Kod:
case HEADER_GG_OFFLINE_SHOP_SEND_MESSAGE:             SendOfflineShopMessage(d, c_pData);             break;

Packet.h
Arat:
Kod:
HEADER_GG_LOGIN                                    = 1,     HEADER_GG_LOGOUT                                = 2,     HEADER_GG_RELAY                                    = 3,     HEADER_GG_NOTICE                                = 4,     HEADER_GG_SHUTDOWN                                = 5,
Sıralama en altına ekle:
Kod:
HEADER_GG_OFFLINE_SHOP_SEND_MESSAGE                = 53,


Uygun alana ekle:
Kod:
typedef struct SPacketGGOfflineShopMessage {     BYTE    bHeader;     DWORD    dwTargetPID;     char    szName[CHARACTER_NAME_MAX_LEN + 1];     char    szItemName[ITEM_NAME_MAX_LEN + 1]; } TPacketGGOfflineShopMessage;

Packet_info.cpp
Arat:
Kod:
CPacketInfoGG::CPacketInfoGG()

Altına ekle:
Kod:
Set(HEADER_GG_OFFLINE_SHOP_SEND_MESSAGE, sizeof(TPacketGGOfflineShopMessage), "OfflineShopUpdateMessage", false);

Shop.cpp

Arat:
Kod:
#ifdef FULL_YANG             snprintf(buf, sizeof(buf), "%s %u(%s) %lld %u", pkNewItem->GetName(), mpid, m_pkPC->GetName(), dwPrice, pkNewItem->GetCount());             LogManager::instance().ItemLog(ch, pkNewItem, szBuy.c_str(), buf);             snprintf(buf, sizeof(buf), "%s %u(%s) %lld %u", pkNewItem->GetName(), ch->GetPlayerID(), ch->GetName(), dwPrice, pkNewItem->GetCount());             LogManager::instance().ItemLog(m_pkPC, pkNewItem, szSell.c_str(), buf); #else             snprintf(buf, sizeof(buf), "%s %u(%s) %u %u", pkNewItem->GetName(), mpid, m_pkPC->GetName(), dwPrice, pkNewItem->GetCount());             LogManager::instance().ItemLog(ch, pkNewItem, szBuy.c_str(), buf);             snprintf(buf, sizeof(buf), "%s %u(%s) %u %u", pkNewItem->GetName(), ch->GetPlayerID(), ch->GetName(), dwPrice, pkNewItem->GetCount());             LogManager::instance().ItemLog(m_pkPC, pkNewItem, szSell.c_str(), buf); #endif

Kod:
LPCHARACTER BuyPMCh = CHARACTER_MANAGER::instance().FindByPID(m_pkPC->GetPrivShopOwner());             if (BuyPMCh)             {                 char msg[CHAT_MAX_LEN + 1];                 snprintf(msg, sizeof(msg), LC_TEXT("Your item %s x%u sold, buyer is: %s."), pkNewItem->GetName(), pkNewItem->GetCount(), ch->GetName());                 LPDESC pkVictimDesc = BuyPMCh->GetDesc();                 if (pkVictimDesc)                 {                     TPacketGCWhisper pack;                     int len = MIN(CHAT_MAX_LEN, strlen(msg) + 1);                     pack.bHeader = HEADER_GC_WHISPER;                     pack.wSize = sizeof(TPacketGCWhisper)+len;                     pack.bType = WHISPER_TYPE_SYSTEM;                     strlcpy(pack.szNameFrom, "[Market Tezgahı]", sizeof(pack.szNameFrom));                     TEMP_BUFFER buf;                     buf.write(&pack, sizeof(TPacketGCWhisper));                     buf.write(msg, len);                     pkVictimDesc->Packet(buf.read_peek(), buf.size());                 }             }             else             {                 TPacketGGOfflineShopMessage p;                 p.bHeader = HEADER_GG_OFFLINE_SHOP_SEND_MESSAGE;                 p.dwTargetPID = m_pkPC->GetPlayerID();                 strlcpy(p.szItemName, pkNewItem->GetName(), sizeof(p.szItemName));                 strlcpy(p.szName, ch->GetName(), sizeof(p.szName));                 P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGOfflineShopMessage));             }


MaviAyGames | Offline Shop Satış Yapınca PM Bildirisi Sistemi

Metin2 özel sunucularında kullanıcı deneyimini artırmak ve satış süreçlerini daha verimli hale getirmek için birçok geliştirici, gelişmiş sistemler geliştirmektedir. Bu bağlamda, MaviAyGames tarafından sunulan Offline Shop sistemi, oyuncuların oyun dışındayken bile satın alma yapabilmesini sağlar. Ancak satış gerçekleştiğinde geliştirici veya yetkiliye bildirim gönderilmesi oldukça önemli bir özelliktir. İşte tam burada devreye PM Bildirimi sistemi giriyor.

Offline Shop Nedir?
Offline Shop, oyuncuların sunucuda aktif olmasalar bile, belirli bir mağaza arayüzü üzerinden eşya alıp satabileceği bir sistemdir. Bu sistem genellikle C++ tabanlı sunucu tarafında geliştirilir ve veritabanı (DB) ile entegre çalışır. Özellikle PvP sunucularında popüler olan bu sistem, oyuncuların zamanında olmayan karakterlerine bile gelir sağlamak açısından oldukça faydalıdır.

Satış Gerçekleşince Neden PM Bildirimi Gerekir?
Bir oyuncu Offline Shop üzerinden bir eşya satın aldığında, eşyanın doğru şekilde teslim edildiğinden emin olmak gerekir. Ayrıca, satışın izlenebilir olması ve olası hile durumlarında müdahale edebilmek için geliştiricinin veya yetkilinin haberdar olması kritik öneme sahiptir. Bu nedenle, satış yapıldığında otomatik olarak yetkiliye bir özel mesaj (PM) gönderilmesi büyük kolaylık sağlar.

PM Bildirimi Nasıl Çalışır?
Sistem, bir satış işlemi gerçekleştiğinde, sunucu tarafında çalışan bir C++ fonksiyonu sayesinde belirlenen yetkiliye özel mesaj gönderir. Bu mesajda genellikle şu bilgiler yer alır:
- Satın alan oyuncu adı
- Alınan eşya ismi
- Eşya miktarı (varsa)
- Satış tarihi ve saati
- Kullanılan para miktarı

Bu bilgiler, geliştiricinin veya yetkilinin satışları takip edebilmesini sağlar. Ayrıca, Python tabanlı GUI sistemlerle entegre edilirse, bu veriler daha detaylı analiz edilebilir.

MaviAyGames Tarafından Sağlanan Özellikler
MaviAyGames, bu sistemi kolayca entegre edilebilir şekilde sunmaktadır. Kurulumu oldukça basittir ve mevcut Metin2 sunucu yapılandırmasına zarar vermez. Geliştiriciler, bu sistemi sadece Offline Shop değil, diğer e-ticaret benzeri sistemlerde de kullanabilirler. Ayrıca, Martysama tarzı modülasyonlarla da uyumlu çalışabilmektedir.

Teknik Detaylar ve Entegrasyon
Offline Shop sistemi genellikle game core kısmında çalışır ve db core ile senkronize edilir. C++ source edit işlemleri sırasında dikkat edilmesi gereken bazı önemli noktalar vardır. Örneğin, veritabanı tablolarında gerekli değişiklikler yapılmalı ve satış işleminin tamamlandığı anda PM fonksiyonu çağrılmalıdır. Bu tür sistemlerde auth server ile olan bağlantı da önemlidir çünkü kullanıcı doğrulaması bu şekilde sağlanır.

Sonuç
MaviAyGames tarafından geliştirilen Offline Shop sistemi, Metin2 özel sunucuları için oldukça değerli bir özelliktir. Satış yapıldığında otomatik olarak yetkiliye PM gönderilmesi, hem güvenliği artırır hem de yönetim kolaylığı sağlar. Geliştiriciler bu sistemi kullanarak oyuncu memnuniyetini artırırken, aynı zamanda sunucularının performansını da optimize edebilirler.


MaviAyGames | Offline Shop PM Notification Upon Sale

To enhance the user experience on Metin2 private servers and make sales processes more efficient, many developers create advanced systems. In this context, the Offline Shop system provided by MaviAyGames allows players to make purchases even while they are offline. However, sending a notification to the developer or admin when a sale occurs is a highly important feature. This is where the PM Notification system comes into play.

What is Offline Shop?
Offline Shop is a system that allows players to buy and sell items through a specific shop interface even if they are not active in the game. This system is usually developed on the server-side with C++ and works integrated with a database (DB). Particularly popular on PvP servers, this system is very useful for generating income for characters that players cannot log in with regularly.

Why is PM Notification Needed When a Sale Occurs?
When a player purchases an item via Offline Shop, ensuring the item is delivered correctly is essential. Additionally, for tracking sales and intervening in potential fraud cases, it is critical for the developer or admin to be informed. Therefore, automatically sending a private message (PM) to the admin upon a sale provides significant convenience.

How Does PM Notification Work?
When a sale occurs, a C++ function running on the server side sends a private message to the designated admin. The message typically includes:
- Buyer character name
- Item name purchased
- Quantity of the item (if applicable)
- Date and time of the sale
- Amount of currency used

These details allow the developer or admin to track sales effectively. Moreover, if integrated with Python-based GUI systems, this data can be analyzed more thoroughly.

Features Provided by MaviAyGames
MaviAyGames offers this system in an easily integrable way. Installation is straightforward and does not harm existing Metin2 server configurations. Developers can use this system not only for Offline Shop but also in other e-commerce-like systems. Furthermore, it is compatible with modular structures like Martysama.

Technical Details and Integration
Offline Shop usually runs within the game core and synchronizes with db core. There are several important points to consider during C++ source edit operations. For instance, necessary changes must be made to database tables, and the PM function must be called immediately after the sale is completed. Connections with the auth server are also important in such systems, as user validation relies on this connection.

Conclusion
The Offline Shop system developed by MaviAyGames is a valuable feature for Metin2 private servers. Automatically sending a PM to admins upon sales increases both security and management ease. Developers can use this system to increase player satisfaction while optimizing their server's performance.
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kaydol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Üye ol
Giriş Yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş Yap

Tema düzenleyici

Tema özelletirmeleri