raderde 1
raderde
Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
melankolıa18 1
melankolıa18
romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Karekter silememe bugu mt2 - Fix

yunus0399

YunusEmreOfficial
TM Üye
Katılım
1 May 2016
Konular
64
Mesajlar
327
Çözüm
2
Online süresi
1mo 16d
Reaksiyon Skoru
173
Altın Konu
1
TM Yaşı
10 Yıl 1 Ay 6 Gün
Başarım Puanı
131
MmoLira
6,455
DevLira
21
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

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;

[CODE lang="cpp" title="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;
}[/CODE]

Ve Bu şekilde değiştir.

[CODE lang="cpp" title="ClientManagerPlayer.cpp" highlight="3, 9"] 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;
}[/CODE]

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.

1771692322989.png
1771692336751.png


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.
 
Son düzenleme:
Konu daha önce paylaşılmış ve aynı kodları içeriyor. @XxZeMaHSeRxX @keyloq @Lorenzo
 
Konu daha önce paylaşılmış ve aynı kodları içeriyor. @XxZeMaHSeRxX @keyloq @Lorenzo
Oradaki kodlar eksik bakabilirsin. Eksik dememin sebebi silinen hesaplar direk gidiyor. Ben silindikten sonra player_delete tabloma kaydedilmesini istiyorum. Sonuçta loglamak önemli dimi.
 
Son düzenleme:
1771689956043.png


bilerek bu şekilde görsel paylaşıyorum kodlar aynı denildiği için gözle görülür fark var paylaşım için teşekkürler
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst