Merhaba arkadaşlar,
Normal şartlarda mysqldan player ve player_delete tablolarını eşitlediğinizde yani kategorilerini silmesi lazım. Ama yinede karekter silemezsin diyor.
Çünkü src kısmında silme komutlarında tablo ismi yanlış girilmiş. Şimdi onu düzeltiyoruz ve karekterimizi başarılı bir şekilde siliyoruz.
Src/Server/db içerisinde Şu dosyada Arat;
ClientManagerPlayer.cpp:
Ve Bu şekilde değiştir.
ClientManagerPlayer.cpp:
Gördüğünüz gibi çok basit bir şekilde hatayı çözmüş olduk.
Yapılan işlem; player%s_deleted kısmını player_deleted%s şeklinde değiştirmek oldu.


Not: Karekter silinirken, account kısmındaki social_id sütununa bakar. Eğer orası boşsa şu şekilde log atar.
Kod:
Eğer Config dosyalarınızdaki Karekter silme levelinide düzenlemesseniz
Kod:
bu şekilde log atar ve karekter silinmez.
Normal şartlarda mysqldan player ve player_delete tablolarını eşitlediğinizde yani kategorilerini silmesi lazım. Ama yinede karekter silemezsin diyor.
Çünkü src kısmında silme komutlarında tablo ismi yanlış girilmiş. Şimdi onu düzeltiyoruz ve karekterimizi başarılı bir şekilde siliyoruz.
Src/Server/db içerisinde Şu dosyada Arat;
ClientManagerPlayer.cpp:
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;
}
Ve Bu şekilde değiştir.
ClientManagerPlayer.cpp:
char queryStr[QUERY_MAX_LEN];
snprintf(queryStr, sizeof(queryStr), "INSERT INTO player_deleted%s 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_deleted%s", dwPID, GetTablePostfix());
peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, pi->dwHandle, 1);
peer->EncodeBYTE(pi->account_index);
return;
}
Gördüğünüz gibi çok basit bir şekilde hatayı çözmüş olduk.
Yapılan işlem; player%s_deleted kısmını player_deleted%s şeklinde değiştirmek oldu.


Not: Karekter silinirken, account kısmındaki social_id sütununa bakar. Eğer orası boşsa şu şekilde log atar.
Kod:
Feb 21 19:37:30.91470 :: AUTH_LOGIN id(2) login(admin) social_id() login_key(429782019), client_key(1481696223 648049349 1875834706 2093965782) Feb 21 19:37:30.692346 :: [ 4350] return 0/0/0 async 0/0/0 Feb 21 19:37:31.91442 :: LOGIN_BY_KEY success admin 429782019 192.168.1.4 Feb 21 19:37:31.291670 :: RESULT_LOGIN: login success admin rows: 2 Feb 21 19:37:31.291802 :: Lyrion 961364 273242 hair 0 Feb 21 19:37:31.291879 :: bvnvbn 962849 270371 hair 0 Feb 21 19:37:35.692566 :: [ 4400] return 0/0/0 async 0/0/0 Feb 21 19:37:37.591452 :: PLAYER_DELETE FAILED len(0) Feb 21 19:37:39.991444 :: PLAYER_DELETE FAILED len(0) Feb 21 19:37:40.691465 :: [ 4450] return 0/0/0 async 0/0/0 Feb 21 19:37:42.391411 :: PLAYER_DELETE FAILED len(0) Feb 21 19:37:45.691672 :: [ 4500] return 0/0/0 async 0/0/0 Feb 21 19:37:50.691741 :: [ 4550] return 0/0/0 async 0/0/0 Feb 21 19:37:55.691676 :: [ 4600] return 0/0/0 async 0/0/0 Feb 21 19:38:00.691452 :: [ 4650] return 0/0/0 async 0/0/0 Feb 21 19:38:04.391478 :: PLAYER_DELETE FAILED len(0) Feb 21 19:38:05.691745 :: [ 4700] return 0/0/0 async 0/0/0 Feb 21 19:38:10.692240 :: [ 4750] return 0/0/0 async 0/0/0 Feb 21 19:38:10.791503 :: PLAYER_DELETE FAILED len(0) Feb 21 19:38:15.692134 :: [ 4800] return 0/0/0 async 0/0/0
Eğer Config dosyalarınızdaki Karekter silme levelinide düzenlemesseniz
Kod:
Feb 21 19:44:16.728435 :: PLAYER_DELETE TRY: admin 10002 pid1
Feb 21 19:44:16.827946 :: PLAYER_DELETE FAILED LEVEL 80 >= DELETE LIMIT 70
Feb 21 19:44:17.627553 :: [ 1800] return 0/0/1 async 0/0/0
Feb 21 19:44:22.625891 :: [ 1850] return 0/0/0 async 0/0/0
Feb 21 19:44:27.629179 :: [ 1900] return 0/0/0 async 0/0/0
Feb 21 19:44:32.624934 :: [ 1950] return 0/0/0 async 0/0/0
Feb 21 19:44:37.624862 :: [ 2000] return 0/0/0 async 0/0/0
Feb 21 19:44:42.627589 :: [ 2050] return 0/0/0 async 0/0/0
Feb 21 19:44:47.625254 :: [ 2100] return 0/0/0 async 0/0/0
Feb 21 19:44:52.625453 :: [ 2150] return 0/0/0 async 0/0/0
bu şekilde log atar ve karekter silinmez.



