Пользователи, просматривающие тему (Пользователей: 0, Гостей: 0)

  1. xopoIIIuu

    Регистрация:
    22.04.15
    Сообщения:
    244
    Симпатии:
    54
    Пол:
    Мужской
    Собственно нужна помощь, потихоньку стал изучать лабуду с sql в плагинах, сначала делал по статье с ya-cs - всё получилось, а вот по статье mforce я зашел в тупик, ибо не совсем понимаю чего от меня хотят, да и с гугл переводчиком тяжеловато :D
    - Данные для подключения прописаны верно, по статье с ya-cs всё работало )
    Код:
    #include < amxmodx >
    #include < as_core >
    #include < sqlx >
    
    new const SQL_INFO[][] = {
        "",    // HOST
        "",     // USERNAME
        "",     // PASSWORD
        ""      // DATABASE
    }
    new Handle:g_SqlTuple;
    new g_Steam [ 33 ][ 35 ]
    public plugin_cfg() {
        new Query[512];
        g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3])
        formatex(Query, charsmax(Query), "CREATE TABLE IF NOT EXISTS `armystats` (`steam` VARCHAR( 35 ) NOT NULL, `nick` VARCHAR( 32 ) NOT NULL, `level` VARCHAR( 32 ) NOT NULL, `exp` VARCHAR( 32 ) NOT NULL, id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
        SQL_ThreadQuery(g_SqlTuple,"createTableThread", Query)
    }
    public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
        if(FailState == TQUERY_CONNECT_FAILED)
            set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
        else if(FailState == TQUERY_QUERY_FAILED)
            set_fail_state("Query Error");
        if(Errcode)
            log_amx("Hibat dobtam: %s",Error);
    }
    public client_putinserver(id) {
        if(!is_user_bot(id)) {
            load(id)
        }
    }
    public load(id) {
        new Query[512], Data[1]
        Data[0] = id
        formatex(Query, charsmax(Query), "SELECT * FROM armystats")
        SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1)
    }
    public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
        if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
            log_amx("%s", Error)
            return
        }
        else {
            new id = Data[0];
            if(SQL_NumRows(Query) > 0) {
                SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "level"), as_get_user_level ( id ))
                SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "exp"), as_get_user_exp ( id ))
            }
            else {
                save(id)
            }
        }
    }
    public save(id) {
        new text[512];
        new szName [ 64 ]; get_user_name ( id, szName, charsmax ( szName ) );
        replace_all(szName,64,"'","\'")
        replace_all(szName,64,"`","\`")
        formatex(text, charsmax(text), "INSERT INTO `armystats` (`steam`, `nick`, `level`, `exp` ) VALUES  ('%s', '%s', '0', '0' );", g_Steam [ id ], szName)
        SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text)
    }
    public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
        if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
            log_amx("%s", Error)
            return
        }
    }
    public update(id) {
        new text[512];
        formatex(text, charsmax(text), "UPDATE `armystats` SET `level` = '%i', `exp` = '%i' WHERE `armystats`.`steam` = '%s';", as_get_user_level ( id ), as_get_user_exp ( id ), g_Steam [ id ] )
        SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text)
    }
    public client_disconnect(id) {
        if(!is_user_bot(id)) {
            update(id)
        }
    }
    public plugin_end() {
        SQL_FreeHandle(g_SqlTuple)
    }
    Сама ошибка:
    Код:
    L 01/17/2016 - 01:55:46: [AMXX] Plugin ("as_mysql2.amxx") is setting itself as failed.
    L 01/17/2016 - 01:55:46: [AMXX] Plugin says: Query Error
    L 01/17/2016 - 01:55:46: [AMXX] Displaying debug trace (plugin "as_mysql2.amxx")
    L 01/17/2016 - 01:55:46: [AMXX] Run time error 1: forced exit
    L 01/17/2016 - 01:55:46: [AMXX]    [0] as_mysql2.sma::createTableThread (line 28)
     
  2. zhorzh78

    Регистрация:
    24.08.15
    Сообщения:
    156
    Симпатии:
    53
    Пол:
    Мужской
    PHP:
    NOT NULLid` INT(11) 
    => 
    NOT NULL, 
    `id` INT(11)
     
    xopoIIIuu нравится это.
  3. xopoIIIuu

    Регистрация:
    22.04.15
    Сообщения:
    244
    Симпатии:
    54
    Пол:
    Мужской
    zhorzh78, спасибо, делал на скорую руку, не заметил видимо)
    --- добавлено 17.01.16 ---
    Но появился другой вопрос, статистику не сохраняет - по идеи после дисконекта игрока, его достижения сохраняет в бд - оно их сохраняет, но когда этот же игрок снова заходит в игру - его достижения обнуляются.
     
  4. zhorzh78

    Регистрация:
    24.08.15
    Сообщения:
    156
    Симпатии:
    53
    Пол:
    Мужской
    PHP:
    public load(id)
    formatex(Querycharsmax(Query), "SELECT * FROM armystats")
    PHP:
    public QuerySelectData
    if(SQL_NumRows(Query) > 0) {
    Чьи данные-то загружаешь? Выборку сделай по паспорту