dont write info logfile

Сообщения
66
Реакции
7
Помог
1 раз(а)
Ошибка
плагин не создает лог-файл, и не вносит информацию.
ОС
Linux
Amx Mod X
amxx version
AMX Mod X 1.9.0.5294 (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: Dec 3 2021 15:54:56
Built from: https://github.com/alliedmodders/amxmodx/commit/363871a
Build ID: 5294:363871a
Core mode: JIT+ASM32
Билд
version
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.13.0.788-dev
Build date: 07:36:33 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:48 Dec 31 2023
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/d3c0ec8
Версия Metamod
meta version
Metamod-r v1.3.0.131, API (5:13)
Metamod-r build: 18:51:02 Jul 11 2022
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/adc9414
Список метамодулей
meta list
Currently loaded plugins:
description stat pend file vers src load unload
[ 1] Reunion RUN - reunion.so v0.1.0.137 ini Start Never
[ 2] AMX Mod X RUN - amxmodx.so v1.9.0.5294 ini Start ANY
[ 3] CStrike RUN - cstrike_amxx_i386.so v1.9.0.5294 pl2 ANY
[ 4] CSX RUN - csx_amxx_i386.so v1.9.0.5294 pl2 ANY
[ 5] FakeMeta RUN - fakemeta_amxx_i386.so v1.9.0.5294 pl2 ANY
[ 6] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5294 pl2 ANY
[ 7] MySQL RUN - mysql_amxx_i386.so v1.9.0.5294 pl2 ANY
[ 8] Fun RUN - fun_amxx_i386.so v1.9.0.5294 pl2 ANY
[ 9] Engine RUN - engine_amxx_i386.so v1.9.0.5294 pl2 ANY
9 plugins, 9 running
Список плагинов
amxx plugins
Currently loaded plugins:
name version author file status
[ 1] Accuracy Fix 3.0 Numb accuracy_fix.am running
[ 2] Admin Loader 3.5 neygomon admin_loader.am running
[ 3] FreshBans 1.4.8b kanagava fresh_bans.amxx running
[ 4] Admin Chat 1.9.0.5294 AMXX Dev Team adminchat.amxx running
[ 5] Admin Commands 1.9.0.5294 AMXX Dev Team admincmd.amxx running
[ 6] Anti Flood 1.9.0.5294 AMXX Dev Team antiflood.amxx running
[ 7] Commands Menu 1.9.0.5294 AMXX Dev Team cmdmenu.amxx running
[ 8] Info. Messages 1.9.0.5294 AMXX Dev Team imessage.amxx running
[ 9] Menus Front-End 1.9.0.5294 AMXX Dev Team menufront.amxx running
[ 10] Maps Menu 1.9.0.5294 AMXX Dev Team mapsmenu.amxx running
[ 11] NextMap 1.9.0.5294 AMXX Dev Team nextmap.amxx running
[ 12] Nextmap Chooser 1.9.0.5294 AMXX Dev Team mapchooser.amxx running
[ 13] Players Menu 1.9.0.5294 AMXX Dev Team plmenu.amxx running
[ 14] Plugin Menu 1.9.0.5294 AMXX Dev Team pluginmenu.amxx running
[ 15] Restrict Weapons 1.9.0.5294 AMXX Dev Team restmenu.amxx running
[ 16] TimeLeft 1.9.0.5294 AMXX Dev Team timeleft.amxx running
[ 17] Scrolling Message 1.9.0.5294 AMXX Dev Team scrollmsg.amxx running
[ 18] Admin Votes 1.9.0.5294 AMXX Dev Team adminvote.amxx running
[ 19] CS Misc. Stats 1.9.0.5294 AMXX Dev Team miscstats.amxx running
[ 20] CS Stats Logging 1.9.0.5294 AMXX Dev Team stats_logging.a running
[ 21] Stats Configuration 1.9.0.5294 AMXX Dev Team statscfg.amxx running
[ 22] Toggle Damager Alpha dripcather666 damager.amxx running
[ 23] Automatic Give All Gre Alpha dripcather666 automatlygrenad running
[ 24] Rush Mode 1.1.8 Sho0ter rush_mode.amxx running
[ 25] Player Actions Logger 2.1 dripcather & Ren playeractions.a running
Автор плагина
dripcather666
Версия плагина
1.2
Исходный код
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <fakemeta>

// Путь к файлу логов
new const LOG_FILE[] = "addons/amxmodx/logs/player_actions.log";
// Кэш для хранения предыдущих значений CVAR клиента
new g_cvar_cache[33][128];
// Флаги, которые отслеживают, был ли заголовок записан
new header_written[33];

public plugin_init() {
register_plugin("Player Actions Logger", "1.2", "dripcather & Rentai Squad");
register_forward(FM_CmdStart, "hook_cmdstart", 1);
}

public plugin_cfg() {
for (new i = 1; i <= get_maxplayers(); i++) {
if (is_user_connected(i)) {
arrayset(g_cvar_cache[i], 0, charsmax(g_cvar_cache[]));
header_written[i] = false;
}
}
}

public hook_cmdstart(client, seed) {
if (!is_user_connected(client)) return FMRES_IGNORED;

new command[128], args[128];
client_cmd(client, command, charsmax(command));
read_args(args, charsmax(args));

if (is_cvar_valid(command)) {
new cvar_value[128];
get_cvar_string(command, cvar_value, charsmax(cvar_value));

if (!equal(cvar_value, g_cvar_cache[client])) {
log_to_beauty_file(client, command, g_cvar_cache[client], cvar_value);
copy(g_cvar_cache[client], charsmax(g_cvar_cache[]), cvar_value);
}
}
return FMRES_IGNORED;
}

public log_to_beauty_file(client, const cvar_name[], const old_value[], const new_value[]) {
new player_name[32], steam_id[32];
get_player_info(client, player_name, steam_id); // Получаем имя и Steam ID

if (!header_written[client]) {
log_to_file(LOG_FILE, fmt("[%s] Игрок %s / steam_id:%s изменил значения кваров:", get_time_stamp(), player_name, steam_id));
header_written[client] = true;
}
log_to_file(LOG_FILE, " %s: '%s' -> '%s'", cvar_name, old_value, new_value);
return 1;
}

bool:is_cvar_valid(const name[]) {
return get_cvar_pointer(name) != 0;
}

public get_time_stamp() {
new timestamp[32];
get_time("%Y-%m-%d %H:%M:%S", timestamp, charsmax(timestamp));
return timestamp;
}

public get_player_info(id, name[], authid[]) {
get_user_name(id, name, 32);

// Получаем Steam ID
get_user_authid(id, authid, 32); // Получаем Steam ID
}
плагин не создает лог-файл, и не вносит информацию.
 
Сообщения
66
Реакции
7
Помог
1 раз(а)
мистическая фигня какая-то, надеюсь кто-то поможет разобраться :D
 
Сообщения
91
Реакции
87
Помог
7 раз(а)
Код:
#include <amxmodx>

new const LOG_FILE[] = "addons/amxmodx/logs/player_actions.log";

public plugin_init() {
    register_plugin("Player Actions Logger", "1.2", "dripcather & Rentai Squad");
}

public client_command(id) {
    if (!is_user_connected(id)) return;
    
    new szComand[128];    read_argv(0, szComand, charsmax(szComand));
    new szNewValue[64];    read_argv(1, szNewValue, charsmax(szNewValue));
    
    if (!is_cvar_valid(szComand))
        return;
    
    new cvar_value[64];        get_cvar_string(szComand, cvar_value, charsmax(cvar_value));
    
    if (!equal(cvar_value, szNewValue)) {
        log_to_beauty_file(id, szComand, cvar_value, szNewValue);
    }
}

public log_to_beauty_file(id, const cvar_name[], const old_value[], const new_value[]) {
    new player_name[32];    get_user_name(id, player_name, charsmax(player_name));
    new steam_id[32];    get_user_authid(id, steam_id, charsmax(steam_id));
    
    log_to_file(LOG_FILE, fmt("[%s] Игрок %s / steam_id:%s изменил значения кваров:^n   %s: [%s] -> [%s]", get_time_stamp(), player_name, steam_id, cvar_name, old_value, new_value));
}

bool:is_cvar_valid(const name[]) {
    return get_cvar_pointer(name) != 0;
}

public get_time_stamp() {
    new timestamp[32];
    get_time("%Y-%m-%d %H:%M:%S", timestamp, charsmax(timestamp));
    return timestamp;
}
 
Сообщения
66
Реакции
7
Помог
1 раз(а)
Flymic24, плагин так же никакой лог-файл не создает, если создать в ручную, то плагин даже не делает записи в лог-файл. // проблема осталась
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
midnightfury, а если не испльзовать fmt в log_to_file, а вынести форматирование за пределы, тоесть до???
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
midnightfury, ну тогда для начала проверь аргументы которые получаешь в client_command и условия. Я бы проверил это условия if (!is_cvar_valid(szComand)) и if (!equal(cvar_value, szNewValue))
 
Последнее редактирование:
Сообщения
66
Реакции
7
Помог
1 раз(а)
Code_0xABC,
Код:
#include <amxmodx>

new const LOG_FILE[] = "addons/amxmodx/logs/player_actions.log";

public plugin_init() {
    register_plugin("Player Actions Logger", "1.2", "dripcather & Rentai Squad");
}

public client_command(id) {
    if (!is_user_connected(id)) return PLUGIN_CONTINUE;

    new szComand[128];    read_argv(0, szComand, charsmax(szComand));
    new szNewValue[64];    read_argv(1, szNewValue, charsmax(szNewValue));

    if (!is_cvar_valid(szComand))
        return PLUGIN_CONTINUE;

    new cvar_value[64];        get_cvar_string(szComand, cvar_value, charsmax(cvar_value));

    if (!equal(cvar_value, szNewValue)) {
        log_to_beauty_file(id, szComand, cvar_value, szNewValue);
    }
    return PLUGIN_CONTINUE;
}

public log_to_beauty_file(id, const cvar_name[], const old_value[], const new_value[]) {
    new player_name[32];    get_user_name(id, player_name, charsmax(player_name));
    new steam_id[32];    get_user_authid(id, steam_id, charsmax(steam_id));
    new time_stamp[32];    get_time("%Y-%m-%d %H:%M:%S", time_stamp, charsmax(time_stamp));

    new log_message[512];
    formatex(log_message, charsmax(log_message), "[%s] Игрок %s / steam_id:%s изменил значения кваров:^n   %s: [%s] -> [%s]", time_stamp, player_name, steam_id, cvar_name, old_value, new_value);

    log_to_file(LOG_FILE, log_message);
}

bool:is_cvar_valid(const name[]) {
    return get_cvar_pointer(name) != 0;
}
код с вынесением форматирования, так же не дал успеха, аргументы проверил.
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
midnightfury, а условия??? Доходит ли до выполнения функции log_to_beauty_file
 
Сообщения
66
Реакции
7
Помог
1 раз(а)
Code_0xABC, как я понимаю да доходят.
пришел к такому варианту кода, проблема так же не решилась.
Код:
#include <amxmodx>

new const LOG_FILE[] = "addons/amxmodx/logs/player_actions.log";

public plugin_init() {
    register_plugin("121212", "1.2", "dripcather & Rentai Squad");
    register_logevent("LogPlayerCommand", 2, "userid", "command"); 
}

public LogPlayerCommand(id)
{
    if (!is_user_connected(id)) return PLUGIN_CONTINUE;

    new szCommand[128];
    read_data(2, szCommand, charsmax(szCommand)); 

    new szNewValue[64];
    new szCommandName[64];

    if (containi(szCommand, " "))
    {
        strtok(szCommand, szCommandName, charsmax(szCommandName), szNewValue, charsmax(szNewValue), ' ');
    }
    else
    {
        copy(szCommandName, charsmax(szCommandName), szCommand);
    }

    if (!is_cvar_valid(szCommandName))
    {
        return PLUGIN_CONTINUE;
    }

    new cvar_value[64];
    get_cvar_string(szCommandName, cvar_value, charsmax(cvar_value));
    if (strlen(szNewValue) > 0)
    {
        if (!equal(cvar_value, szNewValue))
        {
            log_to_beauty_file(id, szCommandName, cvar_value, szNewValue);
        }
    }
    else
    {
        log_to_beauty_file(id, szCommandName, cvar_value, "Нет нового значения");
    }
    return PLUGIN_CONTINUE;
}

public log_to_beauty_file(id, const cvar_name[], const old_value[], const new_value[]) {
    new player_name[32];    get_user_name(id, player_name, charsmax(player_name));
    new steam_id[32];    get_user_authid(id, steam_id, charsmax(steam_id));
    new time_stamp[32];    get_time("%Y-%m-%d %H:%M:%S", time_stamp, charsmax(time_stamp));

    new log_message[512];
    formatex(log_message, charsmax(log_message), "[%s] Игрок %s / steam_id:%s изменил значения кваров:^n   %s: [%s] -> [%s]", time_stamp, player_name, steam_id, cvar_name, old_value, new_value);

    log_to_file(LOG_FILE, log_message);
}

bool:is_cvar_valid(const name[]) {
    return get_cvar_pointer(name) != 0;
}
[/spoiler]
23 Янв 2025
Code_0xABC, а если попробывать такой вариант?
Код:
 вместо: log_to_file(LOG_FILE, log_message); // сделать это: server_print(log_message);
 
Сообщения
1,193
Реакции
90
Помог
15 раз(а)
midnightfury, "как понимаю доходят", проверял?
В начале этой функции, кинь сообщение например в консоль
Код:
public log_to_beauty_file(id, const cvar_name[], const old_value[], const new_value[]) {
    new player_name[32];    get_user_name(id, player_name, charsmax(player_name));
    new steam_id[32];    get_user_authid(id, steam_id, charsmax(steam_id));
    new time_stamp[32];    get_time("%Y-%m-%d %H:%M:%S", time_stamp, charsmax(time_stamp));

    new log_message[512];
    formatex(log_message, charsmax(log_message), "[%s] Игрок %s / steam_id:%s изменил значения кваров:^n   %s: [%s] -> [%s]", time_stamp, player_name, steam_id, cvar_name, old_value, new_value);

    log_to_file(LOG_FILE, log_message);
}
 
Сообщения
66
Реакции
7
Помог
1 раз(а)
Code_0xABC, ошибся сам же в своих словах, не доходят раз плагин не создает лог-файл, сейчас попробую вместо log_to_file(LOG_FILE, log_message), использовать
server_print(log_message);

посмотрим что будет.
23 Янв 2025
Code_0xABC, в консоли ничего нет, в начало функции сообщение кинул, консоль пустая)
 
Сообщения
91
Реакции
87
Помог
7 раз(а)
midnightfury, Что должен регистрировать плагин?
Как понял из вашего кода, должен в лог записывать попытки игроков изменить квары путем ввода новых в консоль в игре?
Предоставленный код регистрирует изменение кваров созданных другими плагинами, квары клиента он не регистрирует.
Регистрация каких кваров вам нужна?
 
Сообщения
66
Реакции
7
Помог
1 раз(а)
Flymic24, суть плагина должна была быть, в что что плагин будет делать записи в лог-файл об изменении значений кваров, пример лога могу скинуть:
[2025-01-20 22:20:15] Игрок Player1 / steam_id:0000000 изменил значения кваров:
volume: '1.0' -> '0.5'
sensitivity: '1.5' -> '2.5'
rate: '25000' -> '30000'
cl_crosshair_color: '1' -> '5'
 
Сообщения
250
Реакции
30
Помог
7 раз(а)
midnightfury, пытаться...

Код:
    new file = fopen(LOG_FILE, "w")

    fputs(file, fmt("[%s] Игрок %s / steam_id:%s изменил значения кваров:", get_time_stamp(), player_name, steam_id));

    fclose(file)
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу