v-gondurov 0 Опубликовано 23 января, 2019 (изменено) проблема с авторизацией как администратор пишу команду alodin для авторизации и нечего не происходит и админка слетает вот сама команда. и лог mysql [15:56:15] [ERROR] mysql_connect - empty connection data specified [15:56:15] [ERROR] "mysql_errno" - invalid connection handle (id: 1) [15:57:07] [ERROR] "mysql_tquery" - invalid connection handle (id: 0) [15:57:20] [ERROR] "mysql_tquery" - invalid connection handle (id: 0) CMD:alogin(playerid, params[]) { if(GetPVarInt(playerid, "alogin_timer") > gettime()) return SendClientMessage(playerid, COLOR_GREY, "Не флуди"); else if(gAdminLogged[playerid]) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Вы уже авторизовались как администратор!"); new string[128]; format(string, sizeof(string), "SELECT * FROM "T_ADMIN" WHERE name = '%s'", GetName(playerid)); mysql_tquery(dbHandle, string, "@Alogin", "is", playerid, GetName(playerid)); SetPVarInt(playerid, "alogin_timer", gettime()+3); return 1; } Изменено 23 января, 2019 пользователем v-gondurov Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 23 января, 2019 У вас в mysql_connect(...) какие-то аргументы неправильно передаются. Покажите mysql_connect и дефайны, которые в нём используются, если есть. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
v-gondurov 0 Опубликовано 23 января, 2019 (изменено) .. @16Shadows, #if MYSQL_R41_2 == true /*if(GetString(bind, "127.0.0.1")) { dbHandle = mysql_connect(LOCAL_SQL_HOST, LOCAL_SQL_USER, LOCAL_SQL_PASS, LOCAL_SQL_DB); gTestServer = true; }*/ dbHandle = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB); mysql_log(ERROR | WARNING); #else /*if(GetString(bind, "127.0.0.1")) { dbHandle = mysql_connect(LOCAL_SQL_HOST, LOCAL_SQL_USER, LOCAL_SQL_DB, LOCAL_SQL_PASS); gTestServer = true; }*/ dbHandle = mysql_connect(SQL_HOST, SQL_USER, SQL_DB, SQL_PASS); mysql_log(LOG_WARNING | LOG_ERROR); #endif if(mysql_errno() == -1) { print(" MySQL connection: FALSE\n"); } else { print(" MySQL connection: TRUE\n"); mysql_tquery(dbHandle, "SET CHARACTER SET 'utf8'", "", ""); mysql_tquery(dbHandle, "SET NAMES 'utf8'", "", ""); mysql_tquery(dbHandle, "SET character_set_client = 'cp1251'", "", ""); mysql_tquery(dbHandle, "SET character_set_connection = 'cp1251'", "", ""); mysql_tquery(dbHandle, "SET character_set_results = 'cp1251'", "", ""); mysql_tquery(dbHandle, "SET SESSION collation_connection = 'utf8_general_ci'", "", ""); mysql_tquery(dbHandle, "SELECT * FROM "T_BIZ" ORDER BY "T_BIZ".id ASC ", "@LoadBiz", ""); mysql_tquery(dbHandle, "SELECT * FROM "T_HOUSE" ORDER BY "T_HOUSE".id ASC ", "@LoadHouse", ""); mysql_tquery(dbHandle, "SELECT * FROM "T_MAFIA"", "@LoadMafia", ""); mysql_tquery(dbHandle, "SELECT * FROM "T_GANG"", "@LoadGang", ""); mysql_tquery(dbHandle, "SELECT * FROM "T_GANGZONE"", "@LoadGZ", ""); mysql_tquery(dbHandle, "SELECT * FROM "T_ATM"", "@LoadATM", ""); mysql_tquery(dbHandle, "SELECT * FROM "T_FAMILY" ORDER BY "T_FAMILY".id ASC ", "@LoadFamily", ""); } Изменено 23 января, 2019 пользователем v-gondurov Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 23 января, 2019 Проверьте строки с #define SQL_HOST "127.0.0.1" #define SQL_USER "user" #define SQL_DB "db" Имели подобный вид. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
v-gondurov 0 Опубликовано 23 января, 2019 @16Shadows,с этим проблему вроде решил mysql_Log не создается. а сейчас проблема с админкой когда пишу команду /alogin то админка тут же слетает Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 23 января, 2019 Покажите public @Alogin Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
v-gondurov 0 Опубликовано 23 января, 2019 (изменено) @Alogin(playerid, name[]); @Alogin(playerid, name[]) { #if MYSQL_R41_2 == true new rows; cache_get_row_count(rows); if(!rows) { if(pInfo[playerid][pAdmin] > ADM_NONE) { pInfo[playerid][pAdmin] = ADM_NONE; MysqlUpdatePlayerInt(playerid, "admin", pInfo[playerid][pAdmin]); } return 1; } new Password[16]; cache_get_value_name(0, "password", Password); if(GetString(Password, "qwerty")) { SetPVarInt(playerid, "type_alogin", 1); ShowPlayerDialog(playerid, dAdminLogin, DIALOG_STYLE_PASSWORD, "{FFCC00}Регистрация администратора", "{FFFFFF}Введите пароль, который будет от панели администратора\n\n{63BD4E}Примечание:\n\t- Пароль должен состоять из латинских букв и цифр\n\t- Размер пароля от 6 до 15 символов", "Принять", "Отмена"); } else { SetPVarInt(playerid, "type_alogin", 0); ShowPlayerDialog(playerid, dAdminLogin, DIALOG_STYLE_PASSWORD, "{FFCC00}Доступ администратора", "{FFFFFF}Введите Ваш пароль от панели администратора", "Принять", "Отмена"); } #else new rows, fields; cache_get_data(rows, fields); if(!rows) { if(pInfo[playerid][pAdmin] > ADM_NONE) { pInfo[playerid][pAdmin] = ADM_NONE; MysqlUpdatePlayerInt(playerid, "admin", pInfo[playerid][pAdmin]); } return 1; } new Password[16]; cache_get_field_content(0, "password", Password, dbHandle); if(GetString(Password, "qwerty")) { SetPVarInt(playerid, "type_alogin", 1); ShowPlayerDialog(playerid, dAdminLogin, DIALOG_STYLE_PASSWORD, "{FFCC00}Регистрация администратора", "{FFFFFF}Введите пароль, который будет от панели администратора\n\n{63BD4E}Примечание:\n\t- Пароль должен состоять из латинских букв и цифр\n\t- Размер пароля от 6 до 15 символов", "Принять", "Отмена"); } else { SetPVarInt(playerid, "type_alogin", 0); ShowPlayerDialog(playerid, dAdminLogin, DIALOG_STYLE_PASSWORD, "{FFCC00}Доступ администратора", "{FFFFFF}Введите Ваш пароль от панели администратора", "Принять", "Отмена"); } #endif return 1; } @AloginReg(playerid, name[]); @AloginReg(playerid, name[]) { #if MYSQL_R41_2 == true new rows; cache_get_row_count(rows); if(!rows) return 1; new inputtext[16]; GetPVarString(playerid, "inputtext", inputtext, sizeof(inputtext)); mysql_query_string[0] = EOS; mysql_format(dbHandle, mysql_query_string, sizeof(mysql_query_string), "UPDATE "T_ADMIN" SET password = '%s' WHERE name = '%s' LIMIT 1", inputtext, GetName(playerid)); mysql_tquery(dbHandle, mysql_query_string, "", ""); gAdminLogged[playerid] = true; new string[144]; format(string, sizeof(string), "Ваш пароль администратора: {FFFFFF}%s", inputtext); SendClientMessage(playerid, COLOR_GREEN, string); SendClientMessage(playerid, COLOR_GREEN, "Рекомендуется сделать скриншот. Клавиша: {ffffff}F8"); cache_get_value_index_int(0, 2, pInfo[playerid][pAdmin]); MysqlUpdatePlayerInt(playerid, "admin", pInfo[playerid][pAdmin]); static const Admin_Names[8][24] = {"Хелпер","Модератор","Ст.Модератор","Администратор","Ст.Администратор","Зам.Гл.Администратора","Гл.Администратор","Руководитель"}; format(string, sizeof(string), "Вы авторизовались как %s", Admin_Names[pInfo[playerid][pAdmin]-1]); SendClientMessage(playerid, COLOR_ORANGE, string); if(pInfo[playerid][pAdmin] < ADM_FOUNDER) { new country[64], city[64]; GetIPCountry(pInfo[playerid][pLastIP], country, sizeof(country)); GetIPCity(pInfo[playerid][pLastIP], city, sizeof(city)); if(!pInfo[playerid][pCheckCode]) format(string, sizeof(string), "[A] %s %s[%i] авторизовал%s без граф.ключа [iP:%s (%s %s)]", Admin_Names[pInfo[playerid][pAdmin]-1], GetName(playerid), playerid, (pInfo[playerid][pSex]==1)?("ся"):("ась"), pInfo[playerid][pIP], country, city); else format(string, sizeof(string), "[A] %s %s[%i] авторизовал%s [iP:%s (%s %s)]", Admin_Names[pInfo[playerid][pAdmin]-1], GetName(playerid), playerid, (pInfo[playerid][pSex]==1)?("ся"):("ась"), pInfo[playerid][pIP], country, city); SendAdminMessage(0xFFCC00FF, string); } mysql_query_string[0] = EOS; format(mysql_query_string, 128, "UPDATE "T_ADMIN" SET last_connect = CURDATE() WHERE name = '%s' LIMIT 1", GetName(playerid)); mysql_tquery(dbHandle, mysql_query_string, "", ""); #else new rows, fields; cache_get_data(rows, fields); if(!rows) return 1; new inputtext[16]; GetPVarString(playerid, "inputtext", inputtext, sizeof(inputtext)); mysql_query_string[0] = EOS; mysql_format(dbHandle, mysql_query_string, sizeof(mysql_query_string), "UPDATE "T_ADMIN" SET password = '%s' WHERE name = '%s' LIMIT 1", inputtext, GetName(playerid)); mysql_tquery(dbHandle, mysql_query_string, "", ""); gAdminLogged[playerid] = true; new string[144]; format(string, sizeof(string), "Ваш пароль администратора: {FFFFFF}%s", inputtext); SendClientMessage(playerid, COLOR_GREEN, string); SendClientMessage(playerid, COLOR_GREEN, "Рекомендуется сделать скриншот. Клавиша: {ffffff}F8"); pInfo[playerid][pAdmin] = cache_get_row_int(0, 2); MysqlUpdatePlayerInt(playerid, "admin", pInfo[playerid][pAdmin]); static const Admin_Names[8][24] = {"Хелпер","Модератор","Ст.Модератор","Администратор","Ст.Администратор","Зам.Гл.Администратора","Гл.Администратор","Руководитель"}; format(string, sizeof(string), "Вы авторизовались как %s", Admin_Names[pInfo[playerid][pAdmin]-1]); SendClientMessage(playerid, COLOR_ORANGE, string); if(pInfo[playerid][pAdmin] < ADM_FOUNDER) { new country[64], city[64]; GetIPCountry(pInfo[playerid][pLastIP], country, sizeof(country)); GetIPCity(pInfo[playerid][pLastIP], city, sizeof(city)); if(!pInfo[playerid][pCheckCode]) format(string, sizeof(string), "[A] %s %s[%i] авторизовал%s без граф.ключа [iP:%s (%s %s)]", Admin_Names[pInfo[playerid][pAdmin]-1], GetName(playerid), playerid, (pInfo[playerid][pSex]==1)?("ся"):("ась"), pInfo[playerid][pIP], country, city); else format(string, sizeof(string), "[A] %s %s[%i] авторизовал%s [iP:%s (%s %s)]", Admin_Names[pInfo[playerid][pAdmin]-1], GetName(playerid), playerid, (pInfo[playerid][pSex]==1)?("ся"):("ась"), pInfo[playerid][pIP], country, city); SendAdminMessage(0xFFCC00FF, string); } mysql_query_string[0] = EOS; format(mysql_query_string, 128, "UPDATE "T_ADMIN" SET last_connect = CURDATE() WHERE name = '%s' LIMIT 1", GetName(playerid)); mysql_tquery(dbHandle, mysql_query_string, "", ""); #endif return 1; } @AloginAuth(playerid); @AloginAuth(playerid) { #if MYSQL_R41_2 == true new rows; cache_get_row_count(rows); if(!rows) { SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Неверный пароль!"); SetPVarInt(playerid, "attempt_password", GetPVarInt(playerid, "attempt_password")+1); if(GetPVarInt(playerid, "attempt_password")>3) { DeletePVar(playerid, "attempt_password"); return SKick(playerid, 2112); } } else { gAdminLogged[playerid] = true; cache_get_value_index_int(0, 0, AdminInfo[playerid][admID]); cache_get_value_index_int(0, 2, pInfo[playerid][pAdmin]); cache_get_value_index_int(0, 7, AdminInfo[playerid][admGoto]); cache_get_value_index_int(0, 8, AdminInfo[playerid][admGethere]); cache_get_value_index_int(0, 9, AdminInfo[playerid][admSpectate]); if(AdminInfo[playerid][admPlayTime] == 0) { new who_load[32]; format(who_load, 32, "online_%s", getDay()); if(GetString(who_load,"online_monday")) cache_get_value_index_int(0,10,AdminInfo[playerid][admPlayTime]); else if(GetString(who_load,"online_tuesday")) cache_get_value_index_int(0,11,AdminInfo[playerid][admPlayTime]); else if(GetString(who_load,"online_wednesday")) cache_get_value_index_int(0,12,AdminInfo[playerid][admPlayTime]); else if(GetString(who_load,"online_thursday")) cache_get_value_index_int(0,13,AdminInfo[playerid][admPlayTime]); else if(GetString(who_load,"online_friday")) cache_get_value_index_int(0,14,AdminInfo[playerid][admPlayTime]); else if(GetString(who_load,"online_saturday")) cache_get_value_index_int(0,15,AdminInfo[playerid][admPlayTime]); else if(GetString(who_load,"online_sunday")) cache_get_value_index_int(0,16,AdminInfo[playerid][admPlayTime]); } cache_get_value_index_int(0, 17, AdminInfo[playerid][admKicked]); // kicked cache_get_value_index(0, 18, AdminInfo[playerid][admKickedReason], 32); // kicked_reason cache_get_value_index_int(0, 19, AdminInfo[playerid][admSKicked]); // skicked cache_get_value_index_int(0, 20, AdminInfo[playerid][admWarned]); // warned cache_get_value_index(0, 21, AdminInfo[playerid][admWarnedReason], 32); // warned_reason cache_get_value_index_int(0, 22, AdminInfo[playerid][admOffWarned]); // offwarned cache_get_value_index(0, 23, AdminInfo[playerid][admOffWarnedReason], 32); // offwarned_reason cache_get_value_index_int(0, 24, AdminInfo[playerid][admBaned]); // baned cache_get_value_index(0, 25, AdminInfo[playerid][admBanedReason], 32); // baned_reason cache_get_value_index_int(0, 26, AdminInfo[playerid][admOffBaned]); // offbaned cache_get_value_index(0, 27, AdminInfo[playerid][admOffBanedReason], 32); // offbaned_reason cache_get_value_index_int(0, 28, AdminInfo[playerid][admMuted]); // muted cache_get_value_index(0, 29, AdminInfo[playerid][admMutedReason], 32); // muted_reason cache_get_value_index_int(0, 30, AdminInfo[playerid][admAnsed]); // ansed cache_get_value_index_int(0, 31, AdminInfo[playerid][admInfoNewPlayer]); // a_infonewpl static const Admin_Names[8][24] = {"Хелпер","Модератор","Ст.Модератор","Администратор","Ст.Администратор","Зам.Гл.Администратора","Гл.Администратор","Руководитель"}; new string[144]; format(string, sizeof(string), "Вы авторизовались как %s", Admin_Names[pInfo[playerid][pAdmin]-1]); SendClientMessage(playerid, COLOR_ORANGE, string); if(pInfo[playerid][pAdmin] < ADM_FOUNDER) { new country[64], city[64]; GetIPCountry(pInfo[playerid][pLastIP], country, sizeof(country)); GetIPCity(pInfo[playerid][pLastIP], city, sizeof(city)); if(!pInfo[playerid][pCheckCode]) format(string, sizeof(string), "[A] %s %s[%i] авторизовал%s без граф.ключа [iP:%s (%s %s)]", Admin_Names[pInfo[playerid][pAdmin]-1], GetName(playerid), playerid, (pInfo[playerid][pSex]==1)?("ся"):("ась"), pInfo[playerid][pIP], country, city); else format(string, sizeof(string), "[A] %s %s[%i] авторизовал%s [iP:%s (%s %s)]", Admin_Names[pInfo[playerid][pAdmin]-1], GetName(playerid), playerid, (pInfo[playerid][pSex]==1)?("ся"):("ась"), pInfo[playerid][pIP], country, city); SendAdminMessage(0xFFCC00FF, string); } mysql_query_string[0] = EOS; format(mysql_query_string, 128, "UPDATE "T_ADMIN" SET last_connect = CURDATE() WHERE name = '%s' LIMIT 1", GetName(playerid)); mysql_tquery(dbHandle, mysql_query_string, "", ""); } #else new rows, fields; cache_get_data(rows, fields); if(!rows) { SendClientMessage(playerid, COLOR_GREY, "[Ошибка] Неверный пароль!"); SetPVarInt(playerid, "attempt_password", GetPVarInt(playerid, "attempt_password")+1); if(GetPVarInt(playerid, "attempt_password")>3) { DeletePVar(playerid, "attempt_password"); return SKick(playerid, 2112); } } else { gAdminLogged[playerid] = true; AdminInfo[playerid][admID] = cache_get_row_int(0, 0); pInfo[playerid][pAdmin] = cache_get_row_int(0, 2); AdminInfo[playerid][admGoto] = cache_get_row_int(0, 7); AdminInfo[playerid][admGethere] = cache_get_row_int(0, 8); AdminInfo[playerid][admSpectate] = cache_get_row_int(0, 9); if(AdminInfo[playerid][admPlayTime] == 0) { new who_load[32]; format(who_load, 32, "online_%s", getDay()); if(GetString(who_load,"online_monday")) AdminInfo[playerid][admPlayTime] = cache_get_row_int(0,10); else if(GetString(who_load,"online_tuesday")) AdminInfo[playerid][admPlayTime] = cache_get_row_int(0,11); else if(GetString(who_load,"online_wednesday")) AdminInfo[playerid][admPlayTime] = cache_get_row_int(0,12); else if(GetString(who_load,"online_thursday")) AdminInfo[playerid][admPlayTime] = cache_get_row_int(0,13); else if(GetString(who_load,"online_friday")) AdminInfo[playerid][admPlayTime] = cache_get_row_int(0,14); else if(GetString(who_load,"online_saturday")) AdminInfo[playerid][admPlayTime] = cache_get_row_int(0,15); else if(GetString(who_load,"online_sunday")) AdminInfo[playerid][admPlayTime] = cache_get_row_int(0,16); } AdminInfo[playerid][admKicked] = cache_get_row_int(0, 17); // kicked cache_get_row(0, 18, AdminInfo[playerid][admKickedReason], 32); // kicked_reason AdminInfo[playerid][admSKicked] = cache_get_row_int(0, 19); // skicked AdminInfo[playerid][admWarned] = cache_get_row_int(0, 20); // warned cache_get_row(0, 21, AdminInfo[playerid][admWarnedReason], 32); // warned_reason AdminInfo[playerid][admOffWarned] = cache_get_row_int(0, 22); // offwarned cache_get_row(0, 23, AdminInfo[playerid][admOffWarnedReason], 32); // offwarned_reason AdminInfo[playerid][admBaned] = cache_get_row_int(0, 24); // baned cache_get_row(0, 25, AdminInfo[playerid][admBanedReason], 32); // baned_reason AdminInfo[playerid][admOffBaned] = cache_get_row_int(0, 26); // offbaned cache_get_row(0, 27, AdminInfo[playerid][admOffBanedReason], 32); // offbaned_reason AdminInfo[playerid][admMuted] = cache_get_row_int(0, 28); // muted cache_get_row(0, 29, AdminInfo[playerid][admMutedReason], 32); // muted_reason AdminInfo[playerid][admAnsed] = cache_get_row_int(0, 30); // ansed AdminInfo[playerid][admInfoNewPlayer] = cache_get_row_int(0, 31); // a_infonewpl static const Admin_Names[8][24] = {"Хелпер","Модератор","Ст.Модератор","Администратор","Ст.Администратор","Зам.Гл.Администратора","Гл.Администратор","Руководитель"}; new string[144]; format(string, sizeof(string), "Вы авторизовались как %s", Admin_Names[pInfo[playerid][pAdmin]-1]); SendClientMessage(playerid, COLOR_ORANGE, string); if(pInfo[playerid][pAdmin] < ADM_FOUNDER) { new country[64], city[64]; GetIPCountry(pInfo[playerid][pLastIP], country, sizeof(country)); GetIPCity(pInfo[playerid][pLastIP], city, sizeof(city)); if(!pInfo[playerid][pCheckCode]) format(string, sizeof(string), "[A] %s %s[%i] авторизовал%s без граф.ключа [iP:%s (%s %s)]", Admin_Names[pInfo[playerid][pAdmin]-1], GetName(playerid), playerid, (pInfo[playerid][pSex]==1)?("ся"):("ась"), pInfo[playerid][pIP], country, city); else format(string, sizeof(string), "[A] %s %s[%i] авторизовал%s [iP:%s (%s %s)]", Admin_Names[pInfo[playerid][pAdmin]-1], GetName(playerid), playerid, (pInfo[playerid][pSex]==1)?("ся"):("ась"), pInfo[playerid][pIP], country, city); SendAdminMessage(0xFFCC00FF, string); } mysql_query_string[0] = EOS; format(mysql_query_string, 128, "UPDATE "T_ADMIN" SET last_connect = CURDATE() WHERE name = '%s' LIMIT 1", GetName(playerid)); mysql_tquery(dbHandle, mysql_query_string, "", ""); } #endif return 1; } Изменено 23 января, 2019 пользователем v-gondurov Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 23 января, 2019 Возможно, Вы выдаёте себе права администратора только в игре, но не записываете это в базу данных о админах. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
v-gondurov 0 Опубликовано 23 января, 2019 @16Shadows,я админку через базу выдаю проблема решена Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты