[Oyuncu İsmi] Tekrar Hoşgeldin Mesajı Sistemi

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Karakter Değiştirdiğinizde, Kanal Değiştirdiğinizde ve Işınlandığınızda Çalışmaz.

Sistemin Amacı Oyundan Genel Olarak Çıkış Yaptığınızda, Dilerseniz Başka Bir Zaman Girin Dilerseniz Çıkış Yaptığınız An Girin Farketmez Oyuna Girdiğinizde "Oyuncu İsmi Tekrar Hoşgeldin." Mesajını Herkesin Görebileceği Şekilde Yayınlanır.

Kodlarımız:

Char.cpp Açın ve Aratın:

Kod:
m_iMoveCount = 0;

Altına Ekleyin:


Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM     m_welcome_message = 0; #endif

Tekrar Aratın:

Kod:
tab.horse = GetHorseData();

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM     tab.welcome_message = GetWelcomeMessage(); #endif

Tekrar Aratın:

Kod:
SetMapIndex(t->lMapIndex);     SetXYZ(t->x, t->y, t->z);

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM     SetWelcomeMessage(t->welcome_message); #endif

Tekrar Aratın:

Kod:
GetDesc()->Packet(&p, sizeof(TPacketGCWarp));

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM     SetWelcomeMessage(EFirstWelcomeMessage::EXIT_LOGIN); #endif

Dosyanın En Sonuna Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM void CHARACTER::FirstWelcomeMessage(LPCHARACTER ch) {     if (!ch)         return;     ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s Welcome Again"), ch->GetName()); } #endif

Char.h Açın ve Aratın:

Kod:
}; ESex GET_SEX(LPCHARACTER ch); #endif

Üstüne Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM     public:         void    SetWelcomeMessage(DWORD message_pin) {m_welcome_message = message_pin;}         BYTE    GetWelcomeMessage() {return m_welcome_message;}         void FirstWelcomeMessage(LPCHARACTER ch);     protected:         BYTE m_welcome_message; #endif

Input_Login.cpp Açın ve Aratın:

Kod:
CGuildManager::instance().LoginMember(ch);     ch->Show(ch->GetMapIndex(), pos.x, pos.y, pos.z);

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM     if (ch->GetWelcomeMessage() == EFirstWelcomeMessage::FIRST_LOGIN)         ch->FirstWelcomeMessage(ch); #endif

Cmd_General.cpp Açın ve Aratın:

Kod:
case SCMD_QUIT:                 ch->ChatPacket(CHAT_TYPE_COMMAND, "quit");

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM                 ch->SetWelcomeMessage(EFirstWelcomeMessage::FIRST_LOGIN); #endif

Tekrar Aratın:

Kod:
db_clientdesc->DBPacket( HEADER_GD_VALID_LOGOUT, 0, &acc_info, sizeof(acc_info) );                     LogManager::instance().DetailLoginLog( false, ch );

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM                     ch->SetWelcomeMessage(EFirstWelcomeMessage::EXIT_LOGIN); #endif

Tekrar Aratın:

Kod:
case SCMD_LOGOUT:                 if (d)                     d->SetPhase(PHASE_CLOSE);

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM                 ch->SetWelcomeMessage(EFirstWelcomeMessage::FIRST_LOGIN); #endif

Hızlı Çıkış Sisteminiz Var İse Cmd İle Çalışan İçine Aynı Şekilde FIRST_LOGIN Olarak Ekleyin.

Buraya Kadar Tamam Common/Tables.h Açın ve Aratın:


Kod:
short    stat_reset_count;     THorseInfo    horse;     DWORD    logoff_interval;

Üstüne Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM     BYTE    welcome_message; #endif

Common/Lenght.h Açın ve enum EMisc Üstüne Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM enum EFirstWelcomeMessage {     EXIT_LOGIN             = 0,     FIRST_LOGIN             = 1,     LOGIN_MESSAGE_NUM     = 3 }; #endif

DB/SRC/ClientManagerPlayer.cpp Açın ve Aratın:

Kod:
"horse_hp_droptime = %u, "             "horse_stamina = %d, "             "horse_skill_point = %d, "

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM             "welcome_message = %d, " #endif

Tekrar Aratın:

Kod:
pkTab->horse.dwHorseHealthDropTime,         pkTab->horse.sStamina,         pkTab->horse_skill_point

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM         , pkTab->welcome_message #endif

Tekrar Aratın:

Kod:
"UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(last_play),horse_skill_point"

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM                 " ,welcome_message " #endif

Tekrar Aratın:

Kod:
str_to_number(pkTab->horse.sStamina, row[col++]);     str_to_number(pkTab->logoff_interval, row[col++]);     str_to_number(pkTab->horse_skill_point, row[col++]);

Altına Ekleyin:

Kod:
#ifdef ENABLE_WELCOME_AGAIN_SYSTEM     str_to_number(pkTab->welcome_message, row[col++]); #endif

Şuan Herşey Tamam GameSource'yi Tümüyle(all) Derleyin.

MYSQL

player ve player_deleted.sql Olarak


161557_a41741c3789f63f4e8d8ee13d8fbfc2e.png


KANIT:

1: Karakter Değişikliğinde Mesaj Tekrar Gösterilmez.

giphy.gif


2: Go Kullanıldığında Mesaj Tekrar Gösterilmez.

giphy.gif


3: Warp Kullanıldığında Mesaj Tekrar Gösterilmez.

giphy.gif


4: Oyundan Çıkış veya Oyun Sonu Dediğimde Mesaj Gösterilir.

giphy.gif

Metin2 Lobby platformunda [Oyuncu İsmi] Tekrar Hoşgeldin Mesajı Sistemi konusunu ele alıyoruz. Bu sistem, Metin2 özel sunucularında kullanıcı deneyimini artırmak ve oyuncuların dönüşlerini daha değerli hissetmelerini sağlamak amacıyla geliştirilmiş özel bir özelliktir. Oyuncu tekrar giriş yaptığında, sistem tarafından otomatik olarak kişisel bir mesaj gönderilmesi sağlanır. Bu sistem hem C++ backend tarafında hem de Python GUI ile entegre bir şekilde çalışabilir.

Sistem Nedir?
Metin2 özel sunucularında aktif olan oyuncular zamanla aradan çıkabiliyor. Sunucuya tekrar giriş yaptıklarında onları karşılayan özel bir sistem kurulabilir. Bu sistem sayesinde, oyuncu adı ile birlikte kişisel bir mesaj görüntülenir. Örneğin: Ahmet, tekrar hoş geldin!. Bu tür mesajlar, oyuncuların kendini değerli hissetmesini sağlar ve sunucu sadakatini artırır.

Neden Kullanılır?
Bu tür sistemler, Metin2 PvP sunucularında oynayan oyuncuların motivasyonunu artırır. Özellikle uzun süredir oyunda olmayan oyuncuların dönüşü, sunucu yönetimi açısından önemli bir durumdur. Bu sistem sayesinde, oyuncu tekrar giriş yaptığı anda, onun için özel bir mesaj gönderilir. Bu da onun tekrar oyuna adapte olmasını kolaylaştırır.

C++ Tarafında Uygulama
Sistem, Metin2 game server kaynak kodlarında geliştirilebilir. Auth veya game sunucusuna özel bir kontrol fonksiyonu eklenerek, oyuncu tekrar giriş yaptığında, son çıkış tarihi kontrol edilir. Eğer belirli bir süre geçmişse, oyuncuya özel bir mesaj gönderilir. Bu işlem için packet yapısı ve client-server iletişimi üzerinde çalışmak gerekir.

Python GUI Entegrasyonu
Sunucu yönetim panelleri genellikle Python tabanlıdır. Py GUI veya tkinter gibi kütüphanelerle yazılmış panellerde, bu sistemin ayarlarını değiştirebilen bir arayüz hazırlanabilir. Yönetici, hangi kullanıcıya hangi mesajı göndereceğini veya mesaj formatını değiştirebilir. Bu tür bir arayüz, sunucu sahiplerinin sistemi daha esnek kullanabilmesini sağlar.

Örnek Kod Yapısı (C++)
Kod:
void CheckPlayerReconnect(LPCHARACTER ch) { if (ch->GetLastLogoutTime() > TIME_THRESHOLD) { char msg[256]; snprintf(msg, sizeof(msg), '%s, tekrar hos geldin!', ch->GetName()); ch->ChatPacket(CHAT_TYPE_INFO, msg); } }


Avantajları Nelerdir?
- Oyuncu sadakati artırılır.
- Sunucuya yeniden giriş yapan oyuncular daha hızlı adapte olur.
- Oyuncu deneyimi kişiselleştirilir.
- Sunucu yönetimi için daha fazla etkileşim imkanı sunar.

Sonuç[/BR]-
Metin2 Lobby kullanıcıları için bu sistem, sunucu sahiplerinin oyuncu memnuniyetini artırmak adına harika bir yöntemdir. C++ backend tarafında geliştirilip, Python GUI ile desteklenerek daha verimli kullanılabilir. Bu tip sistemler, Metin2 özel sunucularında fark yaratmak isteyen geliştiriciler için idealdir.


Metin2 Lobby discusses the [Player Name] Welcome Back Message System. This feature aims to enhance the user experience on Metin2 private servers by sending a personalized message when players return after being inactive for a while. It can be implemented both on the C++ backend side and integrated with a Python GUI interface.

What Is The System?[/BR]The system sends a custom welcome-back message to players upon their return to the server. For example: Ahmet, welcome back!. This type of message makes players feel more valued and increases loyalty to the server.

Why Use It?[/BR]Such systems boost player motivation in Metin2 PvP servers. When long-absent players return, the system automatically sends them a personalized message, helping them reconnect with the game faster.

Implementation in C++[/BR]The system can be developed within the Metin2 game server source code. By adding a function to check the last logout time of a player, the server can send a custom message if the player has been offline for a set period. This involves working with packet structures and client-server communication.

Integration with Python GUI[/BR]Server administration panels are often built using Python. With GUI libraries like tkinter, administrators can customize which message is sent to which player, making the system more flexible and manageable.

Sample Code Structure (C++)[/BR]
Kod:
void CheckPlayerReconnect(LPCHARACTER ch) { if (ch->GetLastLogoutTime() > TIME_THRESHOLD) { char msg[256]; snprintf(msg, sizeof(msg), '%s, welcome back!', ch->GetName()); ch->ChatPacket(CHAT_TYPE_INFO, msg); } }


Benefits[/BR]- Increases player loyalty.
- Helps returning players adapt faster.
- Personalizes the gaming experience.
- Offers more interaction opportunities for server management.

Conclusion[/BR]-
For Metin2 Lobby users, this system provides an excellent way for server owners to increase player satisfaction. Implemented via C++ backend and supported by Python GUI, it offers flexibility and impact for developers looking to differentiate their private servers.
 

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

Geri
Üst Alt