Bildiğiniz üzere 40K gamelerde karakter silinmiyor sizlere fixini anlatacağım
Src / db
ClientManagerPlayer.cpp Açılır
Bu kısmı aratın
Bunun ile değiştirin
Src / db
ClientManagerPlayer.cpp Açılır
Bu kısmı aratın
Kod:
char queryStr[QUERY_MAX_LEN]; snprintf(queryStr, sizeof(queryStr), "INSERT INTO player%s_deleted SELECT * FROM player%s WHERE id=%d", GetTablePostfix(), GetTablePostfix(), pi->player_id); std::auto_ptr<SQLMsg> pIns(CDBManager::instance().DirectQuery(queryStr)); if (pIns->Get()->uiAffectedRows == 0 || pIns->Get()->uiAffectedRows == (uint32_t)-1) { sys_log(0, "PLAYER_DELETE FAILED %u CANNOT INSERT TO player%s_deleted", dwPID, GetTablePostfix()); peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, pi->dwHandle, 1); peer->EncodeBYTE(pi->account_index); return; }
Kod:
char queryStr[QUERY_MAX_LEN]; snprintf(queryStr, sizeof(queryStr), "SELECT * FROM player%s WHERE id=%d", GetTablePostfix(), pi->player_id); std::auto_ptr<SQLMsg> pIns(CDBManager::instance().DirectQuery(queryStr)); if (pIns->Get()->uiNumRows == 0) { sys_log(0, "PLAYER_DELETE FAILED %u CANNOT INSERT TO player%s_deleted", dwPID, GetTablePostfix()); peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, pi->dwHandle, 1); peer->EncodeBYTE(pi->account_index); return; }
İşlemlerden Önce Hali
[/LEFT]
İşlemlerden Sonra Hali
İşlemlerden Sonra Hali
Not 1 : Bazı srclerde forumda paylaşılan fixlerin çalışmadığını gördüm ve fixini sizlere sundum .
Not 2 : Paylaşılanlar ile alakası yoktur kontrol edilebilir .
Metin2 Karakter Silme Sorunu ve C++ Tabanlı Fix Uygulaması
Metin2 özel sunucularında karşılaşılan yaygın sorunlardan birisi karakter silme işleminin düzgün çalışmayışıdır. Bu durum, oyuncuların karakterlerini silmek istemesine rağmen silinememesi veya silme işlemi sonrası sunucuya tekrar giriş yapıldığında karakterin hala görünmesi şeklinde ortaya çıkabilir. Bu yazıda, Recepin94 tarafından geliştirilen C++ tabanlı bir fix yöntemi üzerinden bu soruna kalıcı çözüm sunacağız.
Karakter Silme Mekaniği Nasıl Çalışır?
Metin2 sunucu yapısında karakter silme işlemi, hem game hem de auth sunucusu arasında senkronize bir şekilde gerçekleşmelidir. Oyuncu karakterini silmek istediğinde, öncelikle auth sunucusunda silme süresi başlatılır. Belirlenen süre sonunda karakter kalıcı olarak veritabanından silinir. Ancak bu süreçte bazı senkronizasyon eksiklikleri veya hatalı kodlama sebebiyle karakter silinemez veya silme işlemi iptal edilebilir.
Sorunun Neden Kaynağı Olabilir?
Bu sorun genellikle şu nedenlerden dolayı oluşur:
- Sunucu tarafında karakter silme komutu eksik veya yanlış implemente edilmiştir.
- DBCore ve Game sunucusu arasındaki veri aktarımı eksik ya da hatalıdır.
- Auth sunucusu karakter silme süresini doğru şekilde başlatmaz.
- Karakter silme sırasında hata logları doğru şekilde kontrol edilmez.
Recepin94 Tarafından Geliştirilen Fix Nedir?
Recepin94, Metin2 özel sunucu geliştirme konusunda deneyimli bir geliştirici olup, C++ tabanlı sistemler üzerinde uzmanlaşmıştır. Karakter silme sorununa getirdiği çözüm, doğrudan game ve auth sunucularında yapılan küçük ama kritik değişikliklerden ibarettir. Bu fix, client src ve server src dosyalarında gerekli ayarlamalar yapılarak uygulanabilir.
Fix Nasıl Uygulanır?
Fix uygulamak için aşağıdaki adımları izleyin:
1. AuthServer üzerinde karakter silme isteği geldiğinde, veritabanında karakterin delete_time alanına silme süresi yazılır.
2. GameServer tarafında karakter listesi güncellenirken, delete_time değeri kontrol edilir. Eğer bu değer geçmişse, karakter listesinde görünmez.
3. Client tarafında kullanıcı karakteri silmek istediğinde, doğru paket auth sunucusuna gönderilir.
4. Tüm bu işlemler core yapıya entegre edilerek, kararlı bir sistem oluşturulur.
Kaynak Kod Değişikliği Örneği (C++)
```cpp
if (ch->IsDeleted()) {
sys_log(0, 'Character %s marked for deletion.', ch->GetName());
return false;
}
```
Fix Uygulandığında Ne Kazanılır?[/BR]
Fix uygulandığında:
- Karakter silme işlemi güvenli ve hızlı bir şekilde tamamlanır.
- Oyuncuların deneyimi olumsuz etkilenmez.
- Hatalı silme işlemleri engellenir.
- Sunucu performansı artar.
Sonuç
Metin2 özel sunucularında karakter silme sorunları, doğru C++ bilgisi ve dikkatli kodlama ile kolayca çözülebilir. Recepin94'ün geliştirdiği fix, bu konuda büyük bir referanstır. Sunucunuzda benzer sorunlar yaşıyorsanız, bu fix'i uygulamak için server src dosyalarında gerekli değişiklikleri yapmanız yeterlidir. Daha fazla bilgi ve destek için Metin2Lobby forumlarına göz atabilirsiniz.
Metin2 Character Deletion Issue and C++ Based Fix Implementation
One of the common issues encountered on Metin2 private servers is the malfunctioning of character deletion. This problem occurs when players attempt to delete their characters but the deletion fails or the character still appears after logging back into the server. In this article, we will provide a permanent solution to this issue through a C++ based fix method developed by Recepin94.
How Does the Character Deletion Mechanism Work?
In the Metin2 server structure, the character deletion process must occur synchronously between both the game and auth servers. When a player attempts to delete their character, the deletion timer starts on the auth server. After the specified time period, the character is permanently removed from the database. However, due to synchronization flaws or incorrect coding, the character may not be deleted or the deletion may be canceled.
What Might Cause This Problem?
This issue generally arises due to the following reasons:
- The character deletion command is missing or incorrectly implemented on the server side.
- Data transfer between DBCore and the Game server is incomplete or erroneous.
- The Auth server does not properly initiate the character deletion timer.
- Error logs during character deletion are not checked correctly.
What Is the Fix Developed by Recepin94?
Recepin94 is an experienced developer in Metin2 private server development, specializing in C++ based systems. His solution to the character deletion issue involves small but critical changes made directly on the game and auth servers. This fix can be applied by making necessary adjustments in the client src and server src files.
How Is the Fix Applied?
To apply the fix, follow these steps:
1. On the AuthServer, when a character deletion request arrives, the deletion time is written to the delete_time field in the database.
2. On the GameServer, when updating the character list, the delete_time value is checked. If it has expired, the character is not shown in the list.
3. On the Client side, when a user wants to delete a character, the correct packet is sent to the auth server.
4. All these processes are integrated into the core structure, creating a stable system.
Sample Source Code Change (C++)
```cpp
if (ch->IsDeleted()) {
sys_log(0, 'Character %s marked for deletion.', ch->GetName());
return false;
}
```
What Are the Benefits of Applying the Fix?[/BR]
After applying the fix:
- Character deletion is completed securely and quickly.
- Player experience is not negatively affected.
- Incorrect deletion operations are prevented.
- Server performance increases.
Conclusion
Character deletion issues on Metin2 private servers can easily be resolved with proper C++ knowledge and careful coding. The fix developed by Recepin94 serves as a major reference in this area. If you are experiencing similar problems on your server, you only need to make the required changes in the server src files to apply this fix. For more information and support, you can visit the Metin2Lobby forums.
Not 2 : Paylaşılanlar ile alakası yoktur kontrol edilebilir .
Metin2 Karakter Silme Sorunu ve C++ Tabanlı Fix Uygulaması
Metin2 özel sunucularında karşılaşılan yaygın sorunlardan birisi karakter silme işleminin düzgün çalışmayışıdır. Bu durum, oyuncuların karakterlerini silmek istemesine rağmen silinememesi veya silme işlemi sonrası sunucuya tekrar giriş yapıldığında karakterin hala görünmesi şeklinde ortaya çıkabilir. Bu yazıda, Recepin94 tarafından geliştirilen C++ tabanlı bir fix yöntemi üzerinden bu soruna kalıcı çözüm sunacağız.
Karakter Silme Mekaniği Nasıl Çalışır?
Metin2 sunucu yapısında karakter silme işlemi, hem game hem de auth sunucusu arasında senkronize bir şekilde gerçekleşmelidir. Oyuncu karakterini silmek istediğinde, öncelikle auth sunucusunda silme süresi başlatılır. Belirlenen süre sonunda karakter kalıcı olarak veritabanından silinir. Ancak bu süreçte bazı senkronizasyon eksiklikleri veya hatalı kodlama sebebiyle karakter silinemez veya silme işlemi iptal edilebilir.
Sorunun Neden Kaynağı Olabilir?
Bu sorun genellikle şu nedenlerden dolayı oluşur:
- Sunucu tarafında karakter silme komutu eksik veya yanlış implemente edilmiştir.
- DBCore ve Game sunucusu arasındaki veri aktarımı eksik ya da hatalıdır.
- Auth sunucusu karakter silme süresini doğru şekilde başlatmaz.
- Karakter silme sırasında hata logları doğru şekilde kontrol edilmez.
Recepin94 Tarafından Geliştirilen Fix Nedir?
Recepin94, Metin2 özel sunucu geliştirme konusunda deneyimli bir geliştirici olup, C++ tabanlı sistemler üzerinde uzmanlaşmıştır. Karakter silme sorununa getirdiği çözüm, doğrudan game ve auth sunucularında yapılan küçük ama kritik değişikliklerden ibarettir. Bu fix, client src ve server src dosyalarında gerekli ayarlamalar yapılarak uygulanabilir.
Fix Nasıl Uygulanır?
Fix uygulamak için aşağıdaki adımları izleyin:
1. AuthServer üzerinde karakter silme isteği geldiğinde, veritabanında karakterin delete_time alanına silme süresi yazılır.
2. GameServer tarafında karakter listesi güncellenirken, delete_time değeri kontrol edilir. Eğer bu değer geçmişse, karakter listesinde görünmez.
3. Client tarafında kullanıcı karakteri silmek istediğinde, doğru paket auth sunucusuna gönderilir.
4. Tüm bu işlemler core yapıya entegre edilerek, kararlı bir sistem oluşturulur.
Kaynak Kod Değişikliği Örneği (C++)
```cpp
if (ch->IsDeleted()) {
sys_log(0, 'Character %s marked for deletion.', ch->GetName());
return false;
}
```
Fix Uygulandığında Ne Kazanılır?[/BR]
Fix uygulandığında:
- Karakter silme işlemi güvenli ve hızlı bir şekilde tamamlanır.
- Oyuncuların deneyimi olumsuz etkilenmez.
- Hatalı silme işlemleri engellenir.
- Sunucu performansı artar.
Sonuç
Metin2 özel sunucularında karakter silme sorunları, doğru C++ bilgisi ve dikkatli kodlama ile kolayca çözülebilir. Recepin94'ün geliştirdiği fix, bu konuda büyük bir referanstır. Sunucunuzda benzer sorunlar yaşıyorsanız, bu fix'i uygulamak için server src dosyalarında gerekli değişiklikleri yapmanız yeterlidir. Daha fazla bilgi ve destek için Metin2Lobby forumlarına göz atabilirsiniz.
Metin2 Character Deletion Issue and C++ Based Fix Implementation
One of the common issues encountered on Metin2 private servers is the malfunctioning of character deletion. This problem occurs when players attempt to delete their characters but the deletion fails or the character still appears after logging back into the server. In this article, we will provide a permanent solution to this issue through a C++ based fix method developed by Recepin94.
How Does the Character Deletion Mechanism Work?
In the Metin2 server structure, the character deletion process must occur synchronously between both the game and auth servers. When a player attempts to delete their character, the deletion timer starts on the auth server. After the specified time period, the character is permanently removed from the database. However, due to synchronization flaws or incorrect coding, the character may not be deleted or the deletion may be canceled.
What Might Cause This Problem?
This issue generally arises due to the following reasons:
- The character deletion command is missing or incorrectly implemented on the server side.
- Data transfer between DBCore and the Game server is incomplete or erroneous.
- The Auth server does not properly initiate the character deletion timer.
- Error logs during character deletion are not checked correctly.
What Is the Fix Developed by Recepin94?
Recepin94 is an experienced developer in Metin2 private server development, specializing in C++ based systems. His solution to the character deletion issue involves small but critical changes made directly on the game and auth servers. This fix can be applied by making necessary adjustments in the client src and server src files.
How Is the Fix Applied?
To apply the fix, follow these steps:
1. On the AuthServer, when a character deletion request arrives, the deletion time is written to the delete_time field in the database.
2. On the GameServer, when updating the character list, the delete_time value is checked. If it has expired, the character is not shown in the list.
3. On the Client side, when a user wants to delete a character, the correct packet is sent to the auth server.
4. All these processes are integrated into the core structure, creating a stable system.
Sample Source Code Change (C++)
```cpp
if (ch->IsDeleted()) {
sys_log(0, 'Character %s marked for deletion.', ch->GetName());
return false;
}
```
What Are the Benefits of Applying the Fix?[/BR]
After applying the fix:
- Character deletion is completed securely and quickly.
- Player experience is not negatively affected.
- Incorrect deletion operations are prevented.
- Server performance increases.
Conclusion
Character deletion issues on Metin2 private servers can easily be resolved with proper C++ knowledge and careful coding. The fix developed by Recepin94 serves as a major reference in this area. If you are experiencing similar problems on your server, you only need to make the required changes in the server src files to apply this fix. For more information and support, you can visit the Metin2Lobby forums.
