Проверенный
Пользователь
- Сообщения
- 1,032
- Реакции
- 828
- Помог
- 10 раз(а)
- Ошибка
-
"SQL QueryHandleInsertInto Error: unrecognized token: "'karatel'')""
"SQL QueryHandleInsertInto Error: UNIQUE constraint failed: stats.AuthID"
- ОС
- Linux
- Amx Mod X
-
v1.9.0.5241
- Билд
-
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.4.0.668-dev
- ReGamedll
-
ReGameDLL version: 5.7.0.322-dev
- Версия Metamod
-
Metamod-r v1.3.0.128, API (5:13)
- Список метамодулей
-
[ 1] SafeNameAndChat RUN - safenameandchat.so v1.1 ini ANY ANY
[ 2] Reunion RUN - reunion_mm_i386.so v0.1.0.92 ini Start Never
[ 3] VoiceTranscoder RUN - voicetranscoder.so v2017RC3 ini ANY ANY
[ 4] AMX Mod X RUN - amxmodx_mm_i386.so v1.9.0.5241 ini Start ANY
[ 5] WHBlocker RUN - whblocker_mm_i386.so v1.5.696 ini Chlvl ANY
[ 6] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY
[ 7] Rechecker RUN - rechecker_mm_i386.so v2.5 ini Chlvl ANY
[ 8] ReSRDetector RUN - resrdetector_mm_i386.so v0.1.0 ini Chlvl ANY
[ 9] ReAuthCheck RUN - reauthcheck_mm_i386.so v0.1.6 ini Start Never
[10] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl4 ANY Never
[11] SQLite RUN - sqlite_amxx_i386.so v1.9.0.5241 pl4 ANY ANY
[12] Engine RUN - engine_amxx_i386.so v1.9.0.5241 pl4 ANY ANY
12 plugins, 12 running
- Список плагинов
-
[ 1] ReAimDetector API 0.2.2 ReHLDS Team reaimdetector.a debug
[ 2] Server Commands 2.0 Javekson server_cmds.amx debug
[ 3] Stats 2.0 Javekson stats.amxx debug
[ 4] Map Spawns Editor 1.0.16 iG_os map_spawns_edit debug
- Автор плагина
- Javekson
- Версия плагина
- 2.0
- Исходный код
-
#include <amxmodx>
#include <sqlx>
#pragma loadlib sqlite
#pragma semicolon 1
const QUERY_STRLEN = 256;
const PATH_STRLEN = 64;
const MESSAGE_STRLEN = 512;
const TIME_STRLEN = 32;
const ELLIPSES_ARG = 4;
const AUTHID_STRLEN = 24;
const PLAYER_NAME_STRLEN = 32;
const ADDITIONAL_DATA = 1;
new Handle:g_SQLTuple;
new g_SQLQuery[QUERY_STRLEN];
new g_sDataDir[PATH_STRLEN];
new g_sLogsDir[PATH_STRLEN];
new g_sDataBase[PATH_STRLEN + 32];
new g_aData[ADDITIONAL_DATA];
public plugin_init() {
register_plugin("Stats", "2.0", "Javekson");
}
public plugin_cfg() {
get_localinfo("amxx_logs", g_sLogsDir, charsmax(g_sLogsDir));
get_localinfo("amxx_datadir", g_sDataDir, charsmax(g_sDataDir));
formatex(g_sDataBase, charsmax(g_sDataBase), "%s/stats.db", g_sDataDir);
if(!file_exists(g_sDataBase)) {
new iFileID = fopen(g_sDataBase, "a");
fclose(iFileID);
}
SQL_SetAffinity("sqlite");
g_SQLTuple = SQL_MakeDbTuple("", "", "", g_sDataBase);
formatex(g_SQLQuery, charsmax(g_SQLQuery),
"CREATE TABLE IF NOT EXISTS stats( \
AuthID TEXT PRIMARY KEY, \
Name TEXT NOT NULL, \
Frags INTEGER DEFAULT 0, \
Deaths INTEGER DEFAULT 0)");
SQL_ThreadQuery(g_SQLTuple, "QueryHandleCreate", g_SQLQuery);
}
public client_putinserver(id) {
if(is_user_bot(id) || is_user_hltv(id)) {
return PLUGIN_CONTINUE;
}
g_aData[0] = id;
new sAuthID[AUTHID_STRLEN], sPlayerName[PLAYER_NAME_STRLEN];
get_user_authid(id, sAuthID, charsmax(sAuthID));
get_user_name(id, sPlayerName, charsmax(sPlayerName));
logging(g_sLogsDir, "stats_inf_", "^"Игрок зашел на сервер: %s %s^"", sAuthID, sPlayerName);
formatex(g_SQLQuery, charsmax(g_SQLQuery), "SELECT * FROM stats WHERE AuthID = '%s'", sAuthID);
SQL_ThreadQuery(g_SQLTuple, "QueryHandleCheckPlayer", g_SQLQuery, g_aData, sizeof(g_aData));
return PLUGIN_CONTINUE;
}
public plugin_end() {
SQL_FreeHandle(g_SQLTuple);
}
public QueryHandleCreate(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime) {
if(failstate != TQUERY_SUCCESS) {
logging(g_sLogsDir, "stats_error_", "^"SQL QueryHandleCreate Error: %s^"", error);
pause("a");
}
}
public QueryHandleCheckPlayer(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime) {
if(failstate != TQUERY_SUCCESS) {
logging(g_sLogsDir, "stats_error_", "^"SQL QueryHandleCheckPlayer Error: %s^"", error);
return PLUGIN_CONTINUE;
}
if(SQL_MoreResults(query)) {
logging(g_sLogsDir, "stats_inf_", "^"Игрок найден в базе, строк в запросе: %d^"", SQL_MoreResults(query));
return PLUGIN_CONTINUE;
}
logging(g_sLogsDir, "stats_inf_", "^"Игрок не найден, добавляем^"");
new id = g_aData[0];
new sAuthID[AUTHID_STRLEN], sPlayerName[PLAYER_NAME_STRLEN];
get_user_authid(id, sAuthID, charsmax(sAuthID));
get_user_name(id, sPlayerName, charsmax(sPlayerName));
logging(g_sLogsDir, "stats_inf_", "^"Добавили игрока %s %s^"", sAuthID, sPlayerName);
formatex(g_SQLQuery, charsmax(g_SQLQuery), "INSERT INTO stats(AuthID, Name) VALUES ('%s', '%s')", sAuthID, sPlayerName);
SQL_ThreadQuery(g_SQLTuple, "QueryHandleInsertInto", g_SQLQuery);
return PLUGIN_CONTINUE;
}
public QueryHandleInsertInto(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime) {
if(failstate != TQUERY_SUCCESS) {
logging(g_sLogsDir, "stats_error_", "^"SQL QueryHandleInsertInto Error: %s^"", error);
}
}
stock logging(const sLogsDir[], const sFileName[], const sMessage[], any:...) {
new sFmtMsg[MESSAGE_STRLEN], sTime[TIME_STRLEN], sLogFile[PATH_STRLEN + 32], iFileID;
vformat(sFmtMsg, charsmax(sFmtMsg), sMessage, ELLIPSES_ARG);
get_time("%m.%Y.logs", sTime, charsmax(sTime));
formatex(sLogFile, charsmax(sLogFile), "%s/%s%s", sLogsDir, sFileName, sTime);
iFileID = fopen(sLogFile, "at");
get_time("%d.%m.%Y - %H:%M:%S", sTime, charsmax(sTime));
fprintf(iFileID, "^"%s^" %s^n", sTime, sFmtMsg);
fclose(iFileID);
}
При подключении игрока с ником
Так же при подключении игрока
karatel'
вылезла ошибка: unrecognized token: "'karatel'')"
Так же при подключении игрока
"Игрок зашел на сервер: STEAM_1:0:143418091 gh"
вылезла ошибка: UNIQUE constraint failed: stats.AuthID"
, что очень странно, ибо спустя минут 10 игрок перезашел и запись прошла успешно.
В этой теме было размещено решение! Перейти к решению.
Последнее редактирование: