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:
Altına Ekleyin:
Tekrar Aratın:
Altına Ekleyin:
Tekrar Aratın:
Altına Ekleyin:
Tekrar Aratın:
Altına Ekleyin:
Dosyanın En Sonuna Ekleyin:
Char.h Açın ve Aratın:
Üstüne Ekleyin:
Input_Login.cpp Açın ve Aratın:
Altına Ekleyin:
Cmd_General.cpp Açın ve Aratın:
Altına Ekleyin:
Tekrar Aratın:
Altına Ekleyin:
Tekrar Aratın:
Altına Ekleyin:
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:
Üstüne Ekleyin:
Common/Lenght.h Açın ve enum EMisc Üstüne Ekleyin:
DB/SRC/ClientManagerPlayer.cpp Açın ve Aratın:
Altına Ekleyin:
Tekrar Aratın:
Altına Ekleyin:
Tekrar Aratın:
Altına Ekleyin:
Tekrar Aratın:
Altına Ekleyin:
Şuan Herşey Tamam GameSource'yi Tümüyle(all) Derleyin.
MYSQL
player ve player_deleted.sql Olarak
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
KANIT:
1: Karakter Değişikliğinde Mesaj Tekrar Gösterilmez.
2: Go Kullanıldığında Mesaj Tekrar Gösterilmez.
3: Warp Kullanıldığında Mesaj Tekrar Gösterilmez.
4: Oyundan Çıkış veya Oyun Sonu Dediğimde Mesaj Gösterilir.
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.
