İlan
04 Haz 2026 12 çevrimiçi üye Duyurular
Ana Sayfa C++ / C# / Python
Ana Sayfa Forum C++ / C# / Python Konu Başlığı: Karakter Silme Sorununun Çözümü MT2 ...
İlan Yan banner placeholder

Konu Başlığı: Karakter Silme Sorununun Çözümü MT2 - Hata Ayıklaması

EvrenHost 09.04.2026 02:46 591 görüntüleme 29 cevap
Son Mesaj
EvrenHost
Üye
Üye
Katılım23 Şub 2026
Konular5
Mesajlar58
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
09.04.2026 02:46 #1
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:
        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.
arkabalkon
Üye
Üye
Katılım07 Ara 2025
Konular1
Mesajlar52
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 04:21 #2
Konu daha önce paylaşılmış ve aynı kodları içeriyor. @XxZeMaHSeRxX @keyloq @Lorenzo
EvrenHost
Üye
Üye
Katılım23 Şub 2026
Konular5
Mesajlar58
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
07.05.2026 05:29 #3
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.
arkabalkon
Üye
Üye
Katılım07 Ara 2025
Konular1
Mesajlar52
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
07.05.2026 13:33 #4
Oradaki kodlar hatalı bakabilirsin.
Kodlar aynı dostum. Hatalı olan yer neresi tam olarak??
Sosyalio
Üye
Üye
Katılım24 Mar 2026
Konular8
Mesajlar61
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
07.05.2026 14:49 #5


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
EvrenHost
Üye
Üye
Katılım23 Şub 2026
Konular5
Mesajlar58
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
08.05.2026 01:12 #6
Ekli dosyayı görüntüle 168263

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
Rica Ederim. <3
arkabalkon
Üye
Üye
Katılım07 Ara 2025
Konular1
Mesajlar52
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
08.05.2026 01:15 #7
Ekli dosyayı görüntüle 168263

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
Linkini paylaştığım konudaki kodları sorunsuz kendi filesimde denemiştim ve silinmeyen karakter sorunsuz bir şekilde silinmişti. Sanırım bir tek bana aynı geldi. Teşekkürler.
EvrenHost
Üye
Üye
Katılım23 Şub 2026
Konular5
Mesajlar58
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
08.05.2026 01:17 #8
Linkini paylaştığım konudaki kodları sorunsuz kendi filesimde denemiştim ve silinmeyen karakter sorunsuz bir şekilde silinmişti. Sanırım bir tek bana aynı geldi. Teşekkürler.
Developer rankın var biliyorum ama yanlış anlaşılma olmasın diye teknik olarak açıklayayım
İlk kod sadece SELECT ile kayıt kontrolü yapıyor.
İkinci kod ise INSERT INTO ... SELECT ile veriyi player_deleted tablosuna taşıyor.
Yani sorgular benzer görünse de yaptıkları işlem farklı.
Silme işlemi ayrıca DELETE FROM player ile gerçekleşiyor.
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
Benzer Konular
6 cevap
2K görüntüleme
9 cevap
1.9K görüntüleme
4 cevap
1.9K görüntüleme
8 cevap
1.9K görüntüleme
İlan Yan banner placeholder