Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

ДОПИСАТЬ плагин

Статус пользователя makc121
сообщение 23.6.2010, 17:27
Сообщение #1
Стаж: 17 лет

Сообщений: 19
Благодарностей: 1
Полезность: 0

как сделать так чтобы велись логи и куда вписать данную функцию
Код
client_cmd(id,"developer 1")


Код
#include <amxmodx>
#include <amxmisc>

public plugin_init()
{
        register_plugin("bind_button","1.0","Tolk");
        register_clcmd("amx_bind", "Player_Bind", ADMIN_BAN, "- exec binds on the player.")
        //toggle = register_cvar("toggle_exec","1");
}  
public Player_Bind(id, level)
{
    if (!(get_user_flags(id) & level))
{
        client_print(id, print_console, "Access denied")
        return PLUGIN_HANDLED
}
    
    new s_Arg[32], i_Target
    
    // Считываем переданный аргумент
    read_argv(1, s_Arg, charsmax(s_Arg))
    
    // Ищем игрока
    i_Target = cmd_target(id, s_Arg, 8)

    // Если игрока не найден, выходим
    if (!i_Target)
        return PLUGIN_HANDLED
        
    // Здесь действия над игроком, то есть бинды
    
            new iFile = fopen("/addons/amxmodx/configs/bind_button.ini","r");
            new Buffer[256];
            while(!feof(iFile))
            {
                fgets(iFile,Buffer,255);
                client_cmd(i_Target,"%s",Buffer);  
                client_print(id,print_center," "); центр
      
}
            return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя STR@TEG
сообщение 23.6.2010, 17:54
Сообщение #2
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

А что именно нужно логировать? Шаблон хотя бы напиши.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя makc121
сообщение 24.6.2010, 6:17
Сообщение #3
Стаж: 17 лет

Сообщений: 19
Благодарностей: 1
Полезность: 0

НУ НАПРИМЕР НИК-IP-ID-ДАТА ВРЕМЯ-КАРТА
ololo-10.10.26.45-STEAM_0:0:123456789-19:14:40 6/26/2010-de_dast2
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 24.6.2010, 22:52
Сообщение #4
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

makc121,
Попробуй:
Раскрывающийся текст
Код
#include <amxmodx>
#include <amxmisc>

public plugin_init()
{
    register_plugin("bind_button", "1.0", "Tolk")
    register_clcmd("amx_bind", "Player_Bind", ADMIN_BAN, "- exec binds on the player. Use amx_bind <#userid>")
}
  
public Player_Bind(id, level)
{
    if (!(get_user_flags(id) & level))
    {
        client_print(id, print_console, "Access denied")
        return PLUGIN_HANDLED
    }
    
    new s_Arg[32], i_Target
    
    // Считываем переданный аргумент
    read_argv(1, s_Arg, charsmax(s_Arg))
    
    // Ищем игрока
    i_Target = cmd_target(id, s_Arg, 8)

    // Если игрока не найден, выходим
    if(!i_Target)
    return PLUGIN_HANDLED
        
    // Здесь действия над игроком, то есть бинды
    
    new iFile = fopen("/addons/amxmodx/configs/bind_button.ini", "r")
    new Buffer[256]
    while(!feof(iFile))
    {
        client_cmd(id, "developer 1")
        fgets(iFile, Buffer, 255)
        client_cmd(i_Target, "%s", Buffer)
    }

    new name[32], authid[21], ip[16], map[32], log[142]
    get_user_name(id, name, 31)
    get_user_authid(id, authid, 20)
    get_user_ip(id, ip, 15, 1)
    get_mapname(map, 31)

    formatex(log, 141, "Name: ^"%s^" | SteamID: ^"%s^" | IP: ^"%s^" | Map: ^"%s^"", name, authid, ip, map)
    log_to_file("bind_button.log", log)

    return PLUGIN_HANDLED
}


Добавлено:
Перед биндом кнопки будет отправлена команда developer "1". Все бинды будут логироваться в файл bind_button.log в папке logs в таком виде:
Цитата
L 06/25/2010 - 01:00:00: Log file started (file "cstrike\addons\amxmodx\logs\bind_button.log") (game "cstrike") (amx "1.8.1.3746")
L 06/25/2010 - 01:00:00: Name: "ololo" | SteamID: "STEAM_0:0:123456789" | IP: "10.10.26.45" | Map: "de_dust2"


Отредактировал: STR@TEG, - 25.6.2010, 0:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Z[1].
сообщение 24.6.2010, 22:53
Сообщение #5


Стаж: 18 лет

Сообщений: 981
Благодарностей: 287
Полезность: 265

чёт я не пойму,а что именно логируется?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 24.6.2010, 23:05
Сообщение #6
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

0ne,
Логируется информация о игроке, к которому применяется действие плагина.

Отредактировал: STR@TEG, - 24.6.2010, 23:07
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя makc121
сообщение 24.6.2010, 23:21
Сообщение #7
Стаж: 17 лет

Сообщений: 19
Благодарностей: 1
Полезность: 0

пишу комманду amx_bind "nick" меня кик и пишет Reliable channel overflowe

а так логи ведутся норм )) спс )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 24.6.2010, 23:23
Сообщение #8
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

makc121,
Возможно, что слишком много биндов отправляется. Можешь вместо ника указывать userid.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя makc121
сообщение 24.6.2010, 23:33
Сообщение #9
Стаж: 17 лет

Сообщений: 19
Благодарностей: 1
Полезность: 0

просто я когда отправлял я со старым комом было все норм и тоже самое количество биндов щас отправил эта ошибка
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 25.6.2010, 0:18
Сообщение #10
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

makc121,
Сколько строчек у тебя в bind_button.ini? У меня с более чем 112 строками выкидывает с причиной Reliable channel overflowed

Отредактировал: STR@TEG, - 25.6.2010, 0:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 25.6.2010, 0:37
Сообщение #11
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

makc121,
Я изменил исходник, попробуй новый.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя makc121
сообщение 25.6.2010, 10:46
Сообщение #12
Стаж: 17 лет

Сообщений: 19
Благодарностей: 1
Полезность: 0

ПРОБЫВАЛ ТОЖЕ САМОЕ я попробывал переписать чудок код если убераеш из кода
Код
client_cmd(id, "developer 1")


то все норм ведутся логи и не выдает ошибок чтото в этой строке не так ((
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 25.6.2010, 16:34
Сообщение #13
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

Цитата(makc121 @ 25.6.2010, 12:46) *
ПРОБЫВАЛ ТОЖЕ САМОЕ я попробывал переписать чудок код если убераеш из кода
Код
client_cmd(id, "developer 1")


то все норм ведутся логи и не выдает ошибок чтото в этой строке не так ((
Я тоже думал на эту переменную, но не придал должного значения. Для какой цели тебе нужно ее принудительное выставление?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя makc121
сообщение 25.6.2010, 17:32
Сообщение #14
Стаж: 17 лет

Сообщений: 19
Благодарностей: 1
Полезность: 0

Цитата(STR@TEG @ 25.6.2010, 17:34) *
Я тоже думал на эту переменную, но не придал должного значения. Для какой цели тебе нужно ее принудительное выставление?


дело в том что эта переменная (например у тя config.cfg стоит ТОЛЬКО ЧТЕНИЕ и конфиг изменить нельзя) а эта переменная обходит и можно изменять ))))))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 25.6.2010, 19:48
Сообщение #15
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

makc121,
Вот измененная версия, теперь можно посылать до 183 биндов без переполнения канала:
Раскрывающийся текст
Код
#include <amxmodx>
#include <amxmisc>

public plugin_init()
{
    register_plugin("bind_button", "1.0", "Tolk")
    register_clcmd("amx_bind", "Player_Bind", ADMIN_BAN, "- exec binds on the player. Use amx_bind <#userid>")
}
  
public Player_Bind(id, level)
{
    if (!(get_user_flags(id) & level))
    {
        client_print(id, print_console, "Access denied")
        return PLUGIN_HANDLED
    }
    
    new s_Arg[32], i_Target
    
    client_cmd(i_Target, "developer 1")

    // Считываем переданный аргумент
    read_argv(1, s_Arg, charsmax(s_Arg))
    
    // Ищем игрока
    i_Target = cmd_target(id, s_Arg, 8)

    // Если игрока не найден, выходим
    if(!i_Target)
    return PLUGIN_HANDLED
        
    // Здесь действия над игроком, то есть бинды
    
    new iFile = fopen("/addons/amxmodx/configs/bind_button.ini", "r")
    new Buffer[256]
    while(!feof(iFile))
    {
        fgets(iFile, Buffer, 255)
        client_cmd(i_Target, "%s", Buffer)
    }

    client_cmd(i_Target, "developer 0")

    new name[32], authid[21], ip[16], map[32], log[142]
    get_user_name(id, name, 31)
    get_user_authid(id, authid, 20)
    get_user_ip(id, ip, 15, 1)
    get_mapname(map, 31)

    formatex(log, 141, "Name: ^"%s^" | SteamID: ^"%s^" | IP: ^"%s^" | Map: ^"%s^"", name, authid, ip, map)
    log_to_file("bind_button.log", log)

    return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя makc121
сообщение 26.6.2010, 12:26
Сообщение #16
Стаж: 17 лет

Сообщений: 19
Благодарностей: 1
Полезность: 0

не всеравно ошибка (((((
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 27.6.2010, 13:44
Сообщение #17
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

makc121,
Неужели у тебя больше чем 183 бинда? Может ты неправильно оформляешь файл bind_button.ini?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 27.6.2010, 22:21
Сообщение #18
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

makc121,
Можешь использовать этот плагин. Он более функциональный.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя steelz3r
сообщение 28.6.2010, 8:41
Сообщение #19
Стаж: 16 лет

Сообщений: 73
Благодарностей: 7
Полезность: 78

Тебе плагин для принудительной очистки, или принудитильного выставления биндов игроку, о которых он даже не знает, или запихивание игрока рекламы.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя makc121
сообщение 28.6.2010, 11:28
Сообщение #20
Стаж: 17 лет

Сообщений: 19
Благодарностей: 1
Полезность: 0

Цитата(STR@TEG @ 27.6.2010, 22:21) *
makc121,
Можешь использовать этот плагин. Он более функциональный.


спасиб пробыал но там на всех конфиг заменяется

Ошибка потому что посылаю слишком много client_cmd игроку.
А именно использую:

Код
client_cmd(id, "developer 1")


В цикле while, что не имеет смысла. Эту команду достаточно выполнить один раз. И сам:
Код
client_cmd(i_Target, "%s", Buffer)


Лучше тоже выполнять один раз, сформиров нужную полноценную строку, через разделение команд знаком ;.

Код
new iFile = fopen("/addons/amxmodx/configs/bind_button.ini", "r")
    new Buffer[256]
    while(!feof(iFile))
    {
        client_cmd(id, "developer 1")
        fgets(iFile, Buffer, 255)
        client_cmd(i_Target, "%s", Buffer)
    }

тут идет цикл Мне надо в этом цикле не команды отсылать а читать весь файл в одну переменную. После цикла отправлять примерно такую строчку


"developer 1; zdes buffer; developer 0"
но как ?

Отредактировал: makc121, - 28.6.2010, 11:34
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: