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

Üye
Üye
Mesaj
149
Beğeni
62
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:
ALTER TABLE `account`
ADD COLUMN `ban_reason` varchar(256) DEFAULT NULL AFTER `referrer_link`;
alınan hata
Kod:
[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++:
//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:
[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.png
 
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