Участник
Пользователь
- Сообщения
- 66
- Реакции
- 7
- Помог
- 1 раз(а)
- Ошибка
-
не имеется.
- ОС
- Linux
- Amx Mod X
-
amxx version AMX Mod X 1.9.0.5249 (http://www.amxmodx.org) Authors: David "BAILOPAN" Anderson, Pavol "PM OnoTo" Marko Felix "SniperBeamer" Geyer, Jonny "Got His Gun" Bergstrom Lukasz "SidLuke" Wlasinski, Christian "Basic-Master" Hammacher Borja "faluco" Ferrer, Scott "DS" Ehlert Compiled: Jun 19 2019 13:32:02 Built from: https://github.com/alliedmodders/amxmodx/commit/6cecb34e Build ID: 5249:6cecb34e Core mode: JIT+ASM32
C++
- Билд
-
version Protocol version 48 Exe version 1.6.3.7/Stdio (cstrike) ReHLDS version: 3.13.0.788-dev Build date: 07:37:36 Jul 12 2023 (3378) Build from: https://github.com/dreamstalker/rehlds/commit/f955b07
C++
- ReGamedll
-
game version ReGameDLL version: 5.26.0.668-dev Build date: 19:02:33 Dec 31 2023 Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/d3c0ec8
C++
- Версия Metamod
-
meta version Metamod-r v1.3.0.128, API (5:13) Metamod-r build: 15:47:38 Aug 24 2018 Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/0cf2f70
C++
- Список метамодулей
-
description stat pend file vers src load unload [ 1] AMX Mod X RUN - amxmodx_mm.dll v1.9.0.5249 ini Start ANY [ 2] Reunion RUN - reunion_mm.dll v0.1.0.92 ini Start Never [ 3] Revoice RUN - revoice_mm.dll v0.1.0.32 ini Start Never [ 4] ReAPI RUN - reapi_amxx.dll v5.24.0.300-dev pl1 ANY Never [ 5] GeoIP RUN - geoip_amxx.dll v1.9.0.5249 pl1 ANY ANY [ 6] MySQL RUN - mysql_amxx.dll v1.9.0.5249 pl1 ANY ANY 6 plugins, 6 running
C++
- Список плагинов
-
[ 1] Custom Player Informer 1.2 Pre-re kreedzru CustomPlayerInf debug [ 2] Admin Base 1.9.0.5249 AMXX Dev Team admin.amxx running [ 3] Admin Commands 1.9.0.5249 AMXX Dev Team admincmd.amxx running [ 4] Admin Help 1.9.0.5249 AMXX Dev Team adminhelp.amxx running [ 5] Slots Reservation 1.9.0.5249 AMXX Dev Team adminslots.amxx running [ 6] Multi-Lingual System 1.9.0.5249 AMXX Dev Team multilingual.am running [ 7] Menus Front-End 1.9.0.5249 AMXX Dev Team menufront.amxx running [ 8] Commands Menu 1.9.0.5249 AMXX Dev Team cmdmenu.amxx running [ 9] Players Menu 1.9.0.5249 AMXX Dev Team plmenu.amxx running [ 10] Maps Menu 1.9.0.5249 AMXX Dev Team mapsmenu.amxx running [ 11] Plugin Menu 1.9.0.5249 AMXX Dev Team pluginmenu.amxx running [ 12] Admin Chat 1.9.0.5249 AMXX Dev Team adminchat.amxx running [ 13] Anti Flood 1.9.0.5249 AMXX Dev Team antiflood.amxx running [ 14] Scrolling Message 1.9.0.5249 AMXX Dev Team scrollmsg.amxx running [ 15] Info. Messages 1.9.0.5249 AMXX Dev Team imessage.amxx running [ 16] Admin Votes 1.9.0.5249 AMXX Dev Team adminvote.amxx running [ 17] NextMap 1.9.0.5249 AMXX Dev Team nextmap.amxx running [ 18] Nextmap Chooser 1.9.0.5249 AMXX Dev Team mapchooser.amxx running [ 19] TimeLeft 1.9.0.5249 AMXX Dev Team timeleft.amxx running [ 20] Pause Plugins 1.9.0.5249 AMXX Dev Team pausecfg.amxx running [ 21] Stats Configuration 1.9.0.5249 AMXX Dev Team statscfg.amxx running 21 plugins, 21 running
C++
- Автор плагина
- kreedzru
- Версия плагина
- 1.2 Pre-release
- Исходный код
-
#include <amxmodx> #include <geoip> #include <sqlx> #define g_isPlugin "Custom Player Informer" #define g_isVersion "1.2 Pre-release" #define g_isAuthors "kreedzru" // mysql integration :D new Handle:g_SqlTuple; new g_SqlHost[64], g_SqlUser[32], g_SqlPassword[32], g_SqlDatabase[64]; new g_SqlErrors[512]; new g_CPIEnabled, g_CPILogConsole, g_CPILogFile, g_CPIShowIpAdress, g_CPIShowSteamId, g_CPIClientCountry; public plugin_init() { register_plugin(g_isPlugin, g_isVersion, g_isAuthors); register_dictionary("custom_player_informer.txt"); register_cvar("cpi_enabled", "1", FCVAR_SPONLY | FCVAR_UNLOGGED); register_cvar("cpi_log_console", "1", FCVAR_SPONLY | FCVAR_UNLOGGED); register_cvar("cpi_log_file", "1", FCVAR_SPONLY | FCVAR_UNLOGGED); register_cvar("cpi_show_ip", "1", FCVAR_SPONLY | FCVAR_UNLOGGED); register_cvar("cpi_show_steamid", "1", FCVAR_SPONLY | FCVAR_UNLOGGED); register_cvar("cpi_show_country", "1", FCVAR_SPONLY | FCVAR_UNLOGGED); register_cvar("cpi_sqlhost", "localhost", FCVAR_SPONLY | FCVAR_UNLOGGED); register_cvar("cpi_sqluser", "username", FCVAR_SPONLY | FCVAR_UNLOGGED); register_cvar("cpi_sqlpass", "password", FCVAR_SPONLY | FCVAR_UNLOGGED); register_cvar("cpi_dbname", "dbname", FCVAR_SPONLY | FCVAR_UNLOGGED); AutoExecConfig(true, "custom_player_informer"); log_amx("[Custom Player Informer] Plugin is initialized // kreedzru"); } public plugin_cfg() { LoadSettings(); LoadMySQLSettings(); //ConnectToMySQL(); ConnectToMySQL(g_SqlHost, g_SqlUser, g_SqlPassword, g_SqlDatabase); dbTableCreate(); } LoadSettings() { g_CPIEnabled = get_cvar_num("cpi_enabled"); g_CPILogConsole = get_cvar_num("cpi_log_console"); g_CPILogFile = get_cvar_num("cpi_log_file"); g_CPIShowIpAdress = get_cvar_num("cpi_show_ip"); g_CPIShowSteamId = get_cvar_num("cpi_show_steamid"); g_CPIClientCountry = get_cvar_num("cpi_show_country"); log_amx("[Custom Player Informer] Настройки плагина загружены."); //log_amx("[Custom Player Informer Debug] Settings: Enabled=%d, LogConsole=%d, , LogFile=%d, ShowIP=%d, ShowSteamID=%d, ShowCountry=%d", g_CPIEnabled, g_CPILogConsole, g_CPILogFile, g_CPIShowIpAdress, g_CPIShowSteamId, g_CPIClientCountry); } LoadMySQLSettings() { get_cvar_string("cpi_sqlhost", g_SqlHost, charsmax(g_SqlHost)); get_cvar_string("cpi_sqluser", g_SqlUser, charsmax(g_SqlUser)); get_cvar_string("cpi_sqlpass", g_SqlPassword, charsmax(g_SqlPassword)); get_cvar_string("cpi_dbname", g_SqlDatabase, charsmax(g_SqlDatabase)); } ConnectToMySQL(const g_SqlHost[], const g_SqlUser[], const g_SqlPassword[], const g_SqlDatabase[], timeout = 0) { g_SqlTuple = SQL_MakeDbTuple(g_SqlHost, g_SqlUser, g_SqlPassword, g_SqlDatabase, timeout); new errcode; new Handle:SqlConnection = SQL_Connect(g_SqlTuple, errcode, g_SqlErrors, charsmax(g_SqlErrors)); if (SqlConnection == Empty_Handle) { log_amx("[Custom Player Informer] Ошибка при подключении к MySQL: %s", g_SqlErrors); return; } log_amx("[Custom Player Informer] Успешное подключение к MySQL."); SQL_FreeHandle(SqlConnection); } public client_putinserver(id) { if(!g_CPIEnabled) { return; } new szName[32], szIp[16], szSteamId[35], szCountry[3], iUserid; new szTime[16]; get_user_name(id, szName, charsmax(szName)); get_user_ip(id, szIp, charsmax(szIp), 1); iUserid = get_user_userid(id); get_user_authid(id, szSteamId, charsmax(szSteamId)); geoip_code2_ex(szIp, szCountry); get_time("%H:%M:%S", szTime, charsmax(szTime)); new szLogMsg[256], iLen; iLen = formatex(szLogMsg, charsmax(szLogMsg), "[Custom Player Informer] Player: %s, Time: %s", szName, szTime); if(g_CPIShowIpAdress) { iLen += formatex(szLogMsg[iLen], charsmax(szLogMsg) - iLen, " || IP: %s", szIp); } if(g_CPIShowSteamId) { iLen += formatex(szLogMsg[iLen], charsmax(szLogMsg) - iLen, " || SteamID: %s", szSteamId); } if(g_CPIClientCountry) { iLen += formatex(szLogMsg[iLen], charsmax(szLogMsg) - iLen, " || Country: %s", szCountry); } formatex(szLogMsg[iLen], charsmax(szLogMsg) - iLen, " || UserID: %d", iUserid); if(g_CPILogConsole && !g_CPILogFile) log_amx(szLogMsg); if(g_CPILogFile) { new szFileName[64]; get_time("CustomPlayerInformer_%Y-%m-%d.log", szFileName, charsmax(szFileName)); log_to_file(szFileName, szLogMsg); } client_print(0, print_chat, "%L", LANG_PLAYER, "CPI_CONNECT", szName, szTime, szIp, szSteamId, szCountry, iUserid); iSaveDataPlayer(id); } // хз нах я сделал пустой обработчик sql-запросов ну лан public Empty_Handler(FailState, Handle:Query, Error[], ErrCode, Data[], DataSize) { if (FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) { log_amx("[Custom Player Informer] SQL Error: %s", Error); } } dbTableCreate() { new errcode; new Handle:SqlConnection = SQL_Connect(g_SqlTuple, errcode, g_SqlErrors, charsmax(g_SqlErrors)); if (SqlConnection == Empty_Handle) { log_amx("[Custom Player Informer] Ошибка подключения к MySQL: %s", g_SqlErrors); return; } new iQuery[512]; formatex(iQuery, charsmax(iQuery), "CREATE TABLE IF NOT EXISTS `cpi_players` ( \ `id` INT AUTO_INCREMENT PRIMARY KEY, \ `name` VARCHAR(64) NOT NULL, \ `ip` VARCHAR(16) NOT NULL, \ `steamid` VARCHAR(35) NOT NULL, \ `country` VARCHAR(3) NOT NULL, \ `userid` INT NOT NULL, \ `connect_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP \ );") if (!SQL_ThreadQuery(g_SqlTuple, "Empty_Handler", iQuery)) { SQL_QueryError(SqlConnection, g_SqlErrors, charsmax(g_SqlErrors)); log_amx("[Custom Player Informer] Ошибка при создании таблицы: %s", g_SqlErrors); } SQL_FreeHandle(SqlConnection); //SQL_ThreadQuery(g_SqlTuple, "Empty_Handler", iQuery); } iSaveDataPlayer(id) { new szName[32], szIp[16], szSteamId[35], szCountry[3], iUserid; get_user_name(id, szName, charsmax(szName)); get_user_ip(id, szIp, charsmax(szIp), 1); iUserid = get_user_userid(id); get_user_authid(id, szSteamId, charsmax(szSteamId)); geoip_code2_ex(szIp, szCountry); new iQuery[512]; formatex(iQuery, charsmax(iQuery), "INSERT INTO `cpi_players` (`name`, `ip`, `steamid`, `country`, `userid`) \ VALUES ('%s', '%s', '%s', '%s', '%d');", szName, szIp, szSteamId, szCountry, iUserid); SQL_ThreadQuery(g_SqlTuple, "Empty_Handler", iQuery); }
C++
yo all, не судите за данное чудо-юдо.
суть проблемы:
плагин успешно соединяется с бд, создает таблицу все дела.
но, после подключения к серверу, данные не сохраняются в бд. // табличка пустая.
суть проблемы:
плагин успешно соединяется с бд, создает таблицу все дела.
но, после подключения к серверу, данные не сохраняются в бд. // табличка пустая.
я уже 8 часов сижу колдую, думая что может быть не так.
думаю сделать экранирование строк через SQL_QuoteString, но скорее всего положительного результата не будет.
думаю сделать экранирование строк через SQL_QuoteString, но скорее всего положительного результата не будет.
В этой теме было размещено решение! Перейти к решению.