Участник
Пользователь
- Сообщения
- 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
- Билд
-
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
- 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
- Версия 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
- Список метамодулей
-
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
- Список плагинов
-
[ 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
- Автор плагина
- 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);
}
yo all, не судите за данное чудо-юдо.
суть проблемы:
плагин успешно соединяется с бд, создает таблицу все дела.
но, после подключения к серверу, данные не сохраняются в бд. // табличка пустая.
суть проблемы:
плагин успешно соединяется с бд, создает таблицу все дела.
но, после подключения к серверу, данные не сохраняются в бд. // табличка пустая.
я уже 8 часов сижу колдую, думая что может быть не так.
думаю сделать экранирование строк через SQL_QuoteString, но скорее всего положительного результата не будет.
думаю сделать экранирование строк через SQL_QuoteString, но скорее всего положительного результата не будет.
В этой теме было размещено решение! Перейти к решению.