مرحبا
اليوم جايبلكم طريقة حل مشكلة حذف الشخصيات
المشكلة باختصار خطأ في إسم الجدول الخاص بالشخصيات المحذوفة
سورس السيرفر DB/ClinetManagerPlayer.cpp
ابحث عن
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; }
استبدل بـ
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; }
ملاحظة
الجدول player والجدول player_deleted لازم كل العناصر فيه تكون متساوية
بمعنى لو فيه عنصر اسمه cheque لازم يتواجد في كل العنصرين عشان تتم عملية نقل البيانات بشكل صحيح
