1. xopoIIIuu Пользователь

    Регистрация:
    22.04.15
    Сообщения:
    234
    Симпатии:
    51
    Пол:
    Мужской
    Собственно нужна помощь, потихоньку стал изучать лабуду с sql в плагинах, сначала делал по статье с ya-cs - всё получилось, а вот по статье mforce я зашел в тупик, ибо не совсем понимаю чего от меня хотят, да и с гугл переводчиком тяжеловато :D
    - Данные для подключения прописаны верно, по статье с ya-cs всё работало )
    Код (Unknown Language):
    1. #include < amxmodx >
    2. #include < as_core >
    3. #include < sqlx >
    4.  
    5. new const SQL_INFO[][] = {
    6.     "",    // HOST
    7.     "",     // USERNAME
    8.     "",     // PASSWORD
    9.     ""      // DATABASE
    10. }
    11. new Handle:g_SqlTuple;
    12. new g_Steam [ 33 ][ 35 ]
    13. public plugin_cfg() {
    14.     new Query[512];
    15.     g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3])
    16.     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)")
    17.     SQL_ThreadQuery(g_SqlTuple,"createTableThread", Query)
    18. }
    19. public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
    20.     if(FailState == TQUERY_CONNECT_FAILED)
    21.         set_fail_state("Nem tudtam csatlakozni az adatbazishoz.");
    22.     else if(FailState == TQUERY_QUERY_FAILED)
    23.         set_fail_state("Query Error");
    24.     if(Errcode)
    25.         log_amx("Hibat dobtam: %s",Error);
    26. }
    27. public client_putinserver(id) {
    28.     if(!is_user_bot(id)) {
    29.         load(id)
    30.     }
    31. }
    32. public load(id) {
    33.     new Query[512], Data[1]
    34.     Data[0] = id
    35.     formatex(Query, charsmax(Query), "SELECT * FROM armystats")
    36.     SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1)
    37. }
    38. public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
    39.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
    40.         log_amx("%s", Error)
    41.         return
    42.     }
    43.     else {
    44.         new id = Data[0];
    45.         if(SQL_NumRows(Query) > 0) {
    46.             SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "level"), as_get_user_level ( id ))
    47.             SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "exp"), as_get_user_exp ( id ))
    48.         }
    49.         else {
    50.             save(id)
    51.         }
    52.     }
    53. }
    54. public save(id) {
    55.     new text[512];
    56.     new szName [ 64 ]; get_user_name ( id, szName, charsmax ( szName ) );
    57.     replace_all(szName,64,"'","\'")
    58.     replace_all(szName,64,"`","\`")
    59.     formatex(text, charsmax(text), "INSERT INTO `armystats` (`steam`, `nick`, `level`, `exp` ) VALUES  ('%s', '%s', '0', '0' );", g_Steam [ id ], szName)
    60.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text)
    61. }
    62. public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
    63.     if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
    64.         log_amx("%s", Error)
    65.         return
    66.     }
    67. }
    68. public update(id) {
    69.     new text[512];
    70.     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 ] )
    71.     SQL_ThreadQuery(g_SqlTuple, "QuerySetData", text)
    72. }
    73. public client_disconnect(id) {
    74.     if(!is_user_bot(id)) {
    75.         update(id)
    76.     }
    77. }
    78. public plugin_end() {
    79.     SQL_FreeHandle(g_SqlTuple)
    80. }
    Сама ошибка:
    Код (Unknown Language):
    1. L 01/17/2016 - 01:55:46: [AMXX] Plugin ("as_mysql2.amxx") is setting itself as failed.
    2. L 01/17/2016 - 01:55:46: [AMXX] Plugin says: Query Error
    3. L 01/17/2016 - 01:55:46: [AMXX] Displaying debug trace (plugin "as_mysql2.amxx")
    4. L 01/17/2016 - 01:55:46: [AMXX] Run time error 1: forced exit
    5. L 01/17/2016 - 01:55:46: [AMXX]    [0] as_mysql2.sma::createTableThread (line 28)
     
  2. zhorzh78 Пользователь

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

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

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