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

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

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

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

2 страниц V   1 2

Логгер количества игроков

Статус пользователя S0m3Th1nG_AwFul!
сообщение 17.3.2014, 21:50
Сообщение #21
Стаж: 15 лет

Сообщений: 454
Благодарностей: 323
Полезность: 961

Цитата(exec1337 @ 17.3.2014, 23:40) *
Нерешаемо?

Без orpheu или, что вероятнее, собственного метамод-плагина никак. Только если вновь разрешить в dproto неугодных клиентов, а уже потом делать с ними что душе угодно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 18.3.2014, 9:39
Сообщение #22
Стаж: 12 лет

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

Код:
#include <amxmodx>

public plugin_init() {

register_plugin("Connecting Kick", "1.0", "Esecman")

}

public client_connect(id) {

if(is_user_connecting(id)) { // проверяем, коннектится ли
new name[32]
new steamid[32]
get_user_name(id, name, 31)
get_user_authid(id, steamid, 31)
new userid = get_user_userid(id)
log_to_file("connect_players.log", "Name: %s, SteamID: %s, userid: #%d", name, steamid, userid)
server_cmd("kick #%d", userid)
}

}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя nsgenn
сообщение 18.3.2014, 10:08
Сообщение #23


Стаж: 13 лет

Сообщений: 885
Благодарностей: 561
Полезность: 667

Esecman,
"STEAM ID" сервер получает на более позднем этапе
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 18.3.2014, 10:08
Сообщение #24
Стаж: 12 лет

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

Что-то вы съехали с темы, можно ли доработать плагин??

Если не сложно реализовать, то можно поправить вывод на более удобный.
Идея такая - привязка к "имени карты". Если имя карты = предыдущей, то через 5 минут выводить только цифру (количество игроков),
если имя карты изменилось - то дополнительно вывести серверное время и название карты.
Каждая новая циферка через 3 пробела или через табуляцию, для выравнивания.
Чем дольше карта была не измененялась - тем больше значений будет в этой строчке.

Вот так:

Код
L 03/16/2014 - 09:23:30: de_dust2_2x2
6   8   10   8   11   12

L 03/16/2014 - 09:45:55: de_inferno_2x2
14   11   10   8   10   12  14  15  12

L 03/16/2014 - 10:24:18: de_nuke
14   12   8   8   10

L 03/16/2014 - 10:43:30: de_dust
12   10   7   6   8   10   8   11   12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 20.3.2014, 11:35
Сообщение #25
Стаж: 12 лет

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

Жаль... никто не взялся доделать, а такой логгер был бы компактнее и значительно удобнее.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 20.3.2014, 14:10
Сообщение #26


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

yukish, как то так:
Код:
#include <amxmodx>

#define PLUGIN "Players num to log"
#define VERSION "0.1"
#define AUTHOR "Fintok!"

new g_dTime
new szLogsDir[128], szLog[160], szMap[32]

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

g_dTime = register_cvar("time_logging", "10") // Время в минутах

get_localinfo("amxx_logs", szLogsDir, charsmax(szLogsDir))
formatex(szLog, charsmax(szLog), "%s/playersnum.log", szLogsDir)

get_mapname(szMap, charsmax(szMap))
log_to_file(szLog, "Mapchange to %s", szMap)

set_task(get_pcvar_num(g_dTime) * 60.0, "log_function", .flags="b")
}

public log_function()
{
new pFile = fopen(szLog, "at")

if(pFile)
fprintf(pFile, "%d ", get_playersnum())

fclose(pFile)
}

public plugin_end()
{
new pFile = fopen(szLog, "at")

if(pFile)
fprintf(pFile, "^n")

fclose(pFile)
}


Отредактировал: Fintok, - 20.3.2014, 14:34
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
yukish
сообщение 20.3.2014, 19:40
Сообщение #27
Стаж: 12 лет

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

Цитата(Fintok @ 20.3.2014, 15:10) *
yukish, как то так:


Спасибо дружище, сейчас буду компилить и смотреть результат.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 21.3.2014, 9:06
Сообщение #28
Стаж: 12 лет

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

Отписываю результат тестирования, есть 2 нюанса:

1) В предыдущем исполнении не было таких функций как fclose(), fopen(), был только log_to_file()
Не создаёт ли это дополнительную нагрузку на сервер.
Может обойтись без них, как это сделал предыдущий автор?

2) Прошу немного поправить вывод, при логировании каждые 2 минуты табуляция быстро приводит
к концу строки, прошу заменить fprintf(pFile, "%d(табуляция)", get_playersnum()) на уплотнённый способ выравнивания:
на вывод кол-ва игроков + 3 пробела если кол-во 0...9; или кол-во + 2 пробела если на сервере > 10 игроков
как-то так
if (get_playersnum <10)
fprintf(pFile, "%d(3 пробела)", get_playersnum())
else
fprintf(pFile, "%d(2 пробела)", get_playersnum())

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя usercn
сообщение 21.3.2014, 12:00
Сообщение #29


Стаж: 12 лет

Сообщений: 341
Благодарностей: 140
Полезность: 495

Замените
Код:
public log_function()
{
new pFile = fopen(szLog, "at")
new plnum = get_playersnum();
if(pFile)
{
if(plnum < 10)
{
fprintf(pFile, "%d ", plnum)
}
else
{
fprintf(pFile, "%d ", plnum)
}
}

fclose(pFile)
}


Просунутий сервер з максимумом зброї, можливо старійший в Україні
[UA] DNET CS Public Server #1
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
yukish
сообщение 21.3.2014, 13:16
Сообщение #30
Стаж: 12 лет

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

Спасибо.

А первый вопрос?
1) В предыдущем исполнении не было таких функций как fclose(), fopen(), был только log_to_file()
Не создаёт ли это дополнительную нагрузку на сервер.
Может обойтись без них, как это сделал предыдущий автор?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 21.3.2014, 19:51
Сообщение #31


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

yukish,
1) Хотите использовать логирование одной строкой извольте пользоваться этими функциями.
Нагрузки от них не более чем от log_to_file. По сути log_to_file выполняет все те же операции, что и fopen, fprintf, fclose.
2) Я вообще не понял сути вашего вопроса, зачем вы таким мазохизмом страдаете?

Скрытый текст
Последняя время у всех прям разыграть паранойя оптимизации сервера. psych.gif
Хех, intercs постарался на славу. crazy.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 21.3.2014, 19:53
Сообщение #32


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Fintok, я тоже. Но врятли мы дойдем до такой глубокой мысли как детальный мониторинг онлайна на определенных картах...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 21.3.2014, 20:00
Сообщение #33
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Цитата(Bloo @ 21.3.2014, 19:53) *
детальный мониторинг онлайна

С двумя пробелами lol.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 21.3.2014, 20:15
Сообщение #34
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Цитата(S0m3Th1nG_AwFul! @ 17.3.2014, 22:50) *
Без orpheu или, что вероятнее, собственного метамод-плагина никак. Только если вновь разрешить в dproto неугодных клиентов, а уже потом делать с ними что душе угодно.

Да, именно такой метод и предлгает использовать один скриптер. Быдловато будет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: