Yardım (admin ban tool ) nacivata bırakılacak sql error

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

nesterali

Platin Üye
Platin Üye
MT Üye
Mesaj
187
Beğeni
66
Puan
726
Ticaret Puanı
0
merhabalar admin ban tool sisteminin içindeki nacivata sürüklenip bırakılac dosyayı sürükleyip bırakıp start dediğimde şu hatayı alıyorum düzeltilebilirmi?
12312.png

dosya içeriği
SQL:
Genişlet Daralt Kopyala
ALTER TABLE `account`
ADD COLUMN `ban_reason` varchar(256) DEFAULT NULL AFTER `referrer_link`;
alınan hata
Kod:
Genişlet Daralt Kopyala
[Err] 1054 - Unknown column 'referrer_link' in 'account'
[Err] ALTER TABLE `account`
ADD COLUMN `ban_reason` varchar(256) DEFAULT NULL AFTER `referrer_link`;
[Msg] Finished - Unsuccessfully
--------------------------------------------------
 
Kodda referrer_link'ten sonra ekle var sende o tablo yok srcde hangi tablonun yanına yazdıysan referrer_link yerine o tablonun adını yaz sonra start ver
 
anlatımda "ban_reason" nun geçtiği dosya input_main.cpp içine ekleniyor fakat tam anlayamadım
altta belirttiğim gibi kod blogları hangi kod bloğunun altına eklenmesini gösteriyor hangi" referrer_link " kısmına yazamam gerekiyor burada anlaşılıyormu peki :/
C++:
Genişlet Daralt Kopyala
//1.) Search for:
        case HEADER_CG_REFINE:
            Refine(ch, c_pData);
            break;
//2.) Add after:
#ifdef ENABLE_ADMIN_BAN_MANAGER
        case HEADER_CG_ADMIN_BAN_MANAGER:
            SendAdminBanManager(ch, c_pData);
            break;
#endif

//1.) Search for:
void CInputMain::Warp(LPCHARACTER ch, const char * pcData)
{
    ch->WarpEnd();
}
//2.) Add after:
#ifdef ENABLE_ADMIN_BAN_MANAGER
enum ETypeActionBan
{
    ACTION_BAN_PERMANENTLY = 0,
    ACTION_BAN_IP = 1    ,   
    ACTION_BAN_TIME = 2,
};

bool CheckIsStaffAdmin(LPCHARACTER ch)
{
    const char* arListMembers[] = /* Here add people member from staff what you want to have acces on administration area ban, unlimited slots !*/
    {
        "[DEV]VegaS",
        "Slot 2",
        "Slot 3",
        "Slot 4",
        "Slot 5",
        "Slot 6"
    };

    for(unsigned int key = 0; key < _countof(arListMembers); key++) {
        return ((!strcmp(arListMembers[key], ch->GetName())) && ch->GetGMLevel() > GM_PLAYER) ? true : false;
    }
}

bool CheckIsBlocked(LPCHARACTER ch, const char* c_szName)
{
    std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT account_id FROM player.player WHERE name = '%s'", c_szName));
    MYSQL_ROW row_id = mysql_fetch_row(pMsg->Get()->pSQLResult);
            
    if (pMsg->uiSQLErrno != 0 || !pMsg->Get()->uiNumRows)
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("admin_manager_error_cannot_find_user"), c_szName);
        return false;
    }
            
    int account_id = 0;
    str_to_number(account_id, row_id[0]);

    std::auto_ptr<SQLMsg> pMsg2(DBManager::instance().DirectQuery("SELECT status FROM account.account WHERE id = '%d'", account_id));
    MYSQL_ROW row_inf = mysql_fetch_row(pMsg2->Get()->pSQLResult);

    const char* c_szStatus = row_inf[0];
    
    if (!strcmp(c_szStatus, "BLOCK"))
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("admin_manager_error_is_blocked"), c_szName);   
        return true;
    }
    
    return false;
}

void InsertLogsBan(const char* c_pszWho, const char* c_pszAction, const char* c_pszVictim, const char* c_pszReason)
{
    DBManager::Instance().DirectQuery("INSERT INTO log.tool_ban (who, action, victim, reason, date) VALUES('%s', '%s', '%s', '%s', NOW())", c_pszWho, c_pszAction, c_pszVictim, c_pszReason);       
}

void CInputMain::SendAdminBanManager(LPCHARACTER ch, const char* c_pData)
{
    const TPacketCGAdminBanManger* p = reinterpret_cast<const TPacketCGAdminBanManger*>(c_pData);
    
    if (!ch)
        return;
    
    if (!CheckIsStaffAdmin(ch))
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "<Server> Error 0x01.");
        return;
    }
    
    char szEscapedUserName[CHAT_MAX_LEN * 2 + 1];
    DBManager::instance().EscapeString(szEscapedUserName, sizeof(szEscapedUserName), p->user_name, strlen(p->user_name));
                
    char szEscapedReason[CHAT_MAX_LEN * 2 + 1];
    DBManager::instance().EscapeString(szEscapedReason, sizeof(szEscapedReason), p->reason, strlen(p->reason));
    
    if (!strcmp(szEscapedUserName, ch->GetName()))
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("admin_manager_error_yourself"));   
        return;
    }
    
    if (CheckIsBlocked(ch, szEscapedUserName))
        return;

    switch (p->action)
    {
        case ACTION_BAN_PERMANENTLY:
        case ACTION_BAN_TIME:
        {
            std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT name, account_id FROM player.player WHERE name = '%s'", szEscapedUserName));
            MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult);
            
            if (pMsg->uiSQLErrno != 0 || !pMsg->Get()->uiNumRows)
                return;
            
            int account_id = 0;
            str_to_number(account_id, row[1]);
            
            if (p->action == ACTION_BAN_PERMANENTLY)
            {
                DBManager::Instance().DirectQuery("UPDATE account.account SET status = 'BLOCK', ban_reason = '%s' WHERE id = '%d'", p->reason, account_id);
                InsertLogsBan(ch->GetName(), "ACTION_BAN_PERMANENTLY", szEscapedUserName, p->reason);
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("admin_manager_succes_ban_permanently"), szEscapedUserName);
            }
            else
            {
                if (p->duration < 300)
                {
                    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("admin_manager_error_timer"));
                    return;   
                }
                
                DBManager::Instance().DirectQuery("UPDATE account.account SET availDt = FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) + %i), ban_reason = '%s' WHERE id = %d", p->duration, p->reason, account_id);
                InsertLogsBan(ch->GetName(), "ACTION_BAN_TIME", szEscapedUserName, p->reason);
                ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("admin_manager_succes_ban_time"), szEscapedUserName);
            }
        }
        break;
        
        case ACTION_BAN_IP:
        {
            std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT name, ip FROM player.player WHERE name = '%s'", szEscapedUserName));
            MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult);
            
            if (pMsg->uiSQLErrno != 0 || !pMsg->Get()->uiNumRows)
                return;

            std::auto_ptr<SQLMsg> pMsg2(DBManager::Instance().DirectQuery("UPDATE account.account INNER JOIN player.player ON player.account_id = account.id SET status = 'BLOCK', ban_reason = '%s' WHERE player.ip = '%s'", p->reason, row[1]));
            InsertLogsBan(ch->GetName(), "ACTION_BAN_IP", szEscapedUserName, p->reason);
            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("admin_manager_succes_ban_ip"), szEscapedUserName, pMsg2->Get()->uiAffectedRows);
        }
        break;
        default:
            return;
    }
}
#endif
 
Navicatta account tablosuna gir en sonda ne varsa reffer_link yerine onu yaz okut
 
dediğiniz gibi yaptım ama bu hatayı aldım

Kod:
Genişlet Daralt Kopyala
[Err] 1054 - Unknown column 'tool_ban' in 'account'
[Err] ALTER TABLE `account`
ADD COLUMN `ban_reason` varchar(256) DEFAULT NULL AFTER `tool_ban`;
[Msg] Finished - Unsuccessfully
--------------------------------------------------

Adsız.webp
 
Gireceğiniz verinin boyutuna göre ayarlayabilirsiniz. Varcharda en fazla 256 verilebilir

referrer_link'den sonra ban_reason sütununu eklemeye çalıştığı için elle sürüklediğinizde hata vermiş.
ban_reason öncesinde birde referrer_link adında bir tane daha varchar sütun oluşturunuz.
 
Geri
Üst