Русское сообщество по скриптингу

WAMod: Статус сервера прямо в браузере (замена Webmod)

Утвержденные плагины для AMX Mod X администратором/модератором форума.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только работоспособных плагинов для AMX Mod X. Новые плагины нужно выкладывать в разделе "Новые плагины".

WAMod: Статус сервера прямо в браузере (замена Webmod)

Сообщение Fedcomp » 30 ноя 2014, 11:43

Авторы: Fedcomp (OnServer Project)
Версия: 0.0.1

Описание:
Данный плагин садится на тот же порт что и ваш сервер (только TCP) и позволяет игрокам прямо через браузер смотреть статистику.
Данная версия писалась умышленно на скорость (в формате хакатона), и пока что не предназначена для использования. Это лишь proof-of-concept. Лог разработки прикреплен. Плагин требует модуля sockets_hz, тестировался только в хроме.
WAMod - Web Amxx Mod.

Скриншот:


Используемые модули:
Sockets_hz

Настройки:
В этой версии не имеет.


Лог скоростной разработки:
18:33 Окружение готово. Вебсервер настроен, без внешнего ip. Игровой сервер готов для разработки плагина.
Команда на старт.
- Нужно найти как выглядел старый вебмод

18:36 нашел старый скрин - Вы должны зарегистрироваться, чтобы видеть ссылки. ... 9896_2.jpg

18:37 создаем index.html и накидываем структуру.

18:42 Скопировал пример для twitter Bootstrap - Вы должны зарегистрироваться, чтобы видеть ссылки.

18:58 плагин теперь называется WAMod

19:08 накидал первый вариант вебстранички Вы должны зарегистрироваться, чтобы видеть ссылки.

19:10 зеленая кнопочка

19:10 приступаем к плагину

19:26 Накидал набросок плагина, работающего с sockets_Hz. Создает слушающий сокет (listen socket) и отправляет в него треш ('something to send'). Проверяю соединение используя Python скрипт, работает.

20:02 работаю над плагином, пока как то так: Вы должны зарегистрироваться, чтобы видеть ссылки.
Кстати питон скрипт простейший: Вы должны зарегистрироваться, чтобы видеть ссылки. в дальнейшем его заменит браузер

20:16 Поймал большие глюки при работе со строками больших размеров. Че делать то ...
20:20 итак максимальный размер строки который я нашел и который не заставляет сервер падать - 4096, но при этом начинаются всякие странные глюки.
20:23 кажется при размере строки 4000, все работает. Попробуем.
Время уменьшить размер шаблона чтобы он вписывался в это значение. Сейчас размер 4986
20:34 сжал wamod.html до 2858 символов, практически ничего лишнего не удаляя
21:17 я все еще пытаюсь загрузить весь файл в память ...
хуй с ним. Буду динамически каждый раз файл читать. Нагрузка бешенная, ну и хуй с ним.
А вот чем я был занят все это время Вы должны зарегистрироваться, чтобы видеть ссылки.

21:53 заебись, "в лоб" браузер не хочет принимать страничку. Чтож, попробуем с некоторой задержкой
21:58 а пока вот что есть Вы должны зарегистрироваться, чтобы видеть ссылки. но браузер не кушает. curl "недокушивает". Придется слушать что браузер нам хочет сказать.
22:12 мда, надо было начать с питон реализации сервера, а потом уже переписывать на amxx, там бы и виднее реализация была бы. Ну чтож исправим ошибки, начнем кодить вариант на питоне.
22:28 разобрался. Знаю как сделать и задержка не нужна
22:36 я кажется придумал как реализовать всю эту туфту через Array!!! должно позволить любой размер файла.
23:46 уряяя хром через раз страничку открывает. Все перевел на рельсы Array: Вы должны зарегистрироваться, чтобы видеть ссылки.

0:03 Я сделал задержку перед закрытием соединения, теперь браузер всегда отображает страничку. Осталось обработать шаблонные значения, и вебмод будет готов!
0:17 Все, замена значений работает, осталось лишь сделать рабочими все макросы!

-----
Я взял перерыв на пару дней, потом взялся за плагин и доделал за минут 20

Утверждено. // Subb98
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Fedcomp 30 ноя 2014, 13:54, всего редактировалось 1 раз.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: WAMod: Статус сервера прямо в браузере (замена Webmod)

Сообщение Fedcomp » 30 ноя 2014, 13:46

Ser_UFL писал(а):А как по поводу загрузки файлов с компьютера на сервер? :-)
И консоль сервера планируется? :crazy:

Базовые планы: квары в шаблоне, админка, где можно кикать/банить средствами wamod
+ базовая консоль, но я хз как получать вывод с server_cmd/server_exec(). Можно поизгаляться как это hlsw делает, там что то типо add_network_console (не помню команду) и отправлять это на свой же сокет :-D

Ну и дизайн будет нормальным, картинка карты, все такое. Просто эту первую версию я кодил на скорость. Думаю над системой расширений, чтобы можно было расширять стандартные шаблоны, к примеру выводить в шаблоне wamod данные из сторонних плагинов, например рекорд на creedz сервере.
Можно также реализовать статистику, но это долго.
Еще как вариант возможность включать/выключать плагины через интерфейс wamod. Причем это можно будет реализовать расширением.

Загрузки файлов на сервер не будет :( это небезопасно.


PS. Ser_UFL, весьма полезная ссылочка, покорно благодарюс.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: WAMod: Статус сервера прямо в браузере (замена Webmod)

Сообщение Ser_UFL » 30 ноя 2014, 14:53

Типа logaddress_add ?
Да, это основной вариант, я полагаю..
Другой - это qconole.log + echo, но это костыль, как я делал, хотя и вполне рабочий. Больше способов не знаю.

Статистика - хорошо. Стандартного топа игроков вполне хватит для начала)

Загрузки файлов на сервер не будет :( это небезопасно.

А насколько сложно это реализуется? Знаю плагин, который загружает на сервер файлы из интернетов по ссылке, а интересует загрузка с компа через веб-интерфейс. Вы должны зарегистрироваться, чтобы видеть ссылки.

Еще как вариант возможность включать/выключать плагины через интерфейс wamod. Причем это можно будет реализовать расширением.

Интересно, как это будет выглядеть.. В вебмоде редактирование файлов. Открыл plugins.ini и закомментил.. Можно и красоту сделать с кнопочками, но смысл?
Запомните, всегда по жизни вас будут красить вежливость и спокойствие, а не наезды и дешевые понты ;)
Аватара пользователя
Ser_UFL
 
Сообщения: 975
Зарегистрирован: 22 авг 2009, 19:30
Откуда: Hell
Благодарил (а): 276 раз.
Поблагодарили: 380 раз.
Языки программирования: Counter-Strike 1.6:
WebMod-scripts, little Pawn.

Re: WAMod: Статус сервера прямо в браузере (замена Webmod)

Сообщение Fedcomp » 30 ноя 2014, 15:04

Ser_UFL писал(а):Стандартного топа игроков вполне хватит для начала)

Бинго! выводить содержимое statsx

Ser_UFL писал(а):А насколько сложно это реализуется? Знаю плагин, который загружает на сервер файлы из интернетов по ссылке, а интересует загрузка с компа через веб-интерфейс.

Это реализуется ровно с такой сложностью из какой состоит передача файлов http, ведь я по сути реализую http в моем amxx плагине. По идее прием файлов это не тривиально. Но это и без сложности само по себе небезопасно, так что я не собираюсь это реализовывать. Два против.

Ser_UFL писал(а):Интересно, как это будет выглядеть.. В вебмоде редактирование файлов. Открыл plugins.ini и закомментил.. Можно и красоту сделать с кнопочками, но смысл?

Смысл в том что это проще реализовать, кнопочками. В общем не вижу смысла в этой идее.

Ser_UFL писал(а):Типа logaddress_add ?
Да, это основной вариант, я полагаю..
Другой - это qconole.log + echo, но это костыль, как я делал, хотя и вполне рабочий. Больше способов не знаю.

qconsole.log на хостингах точно не работает. А вот TCP порт очень возможно.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: WAMod: Статус сервера прямо в браузере (замена Webmod)

Сообщение Asmodai » 30 ноя 2014, 15:45

Ser_UFL писал(а):P.S. Всё-таки надо делать на метамоде..
Очень порадовали чьи-то начинания в плане полноценного вебсервера с php и тд.. (Web Manager Module V1.1) но всё затихло.

Я тоже уже начал 2 недели назад, но подзабросил из-за других дел. При этом доступ к серверу имеют только его игроки через мотд и вместо php pawn.

Fedcomp, 4096 это ограничение конвертера cell->char. Тоже с этим столкнулся. Тебе наверно его не обойти из amxx.
Аватара пользователя
Asmodai
Адмирал
 
Сообщения: 466
Зарегистрирован: 24 фев 2011, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 393 раз.
Языки программирования: Counter-Strike 1.6

Re: WAMod: Статус сервера прямо в браузере (замена Webmod)

Сообщение Fedcomp » 30 ноя 2014, 15:54

Asmodai писал(а):Тебе наверно его не обойти из amxx.

Я его обошел использованием Array:
теперь ограничение идет только на длину одной строчки в файле. Строка в файле не может быть больше WAMOD_LINESIZE или как его там.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: WAMod: Статус сервера прямо в браузере (замена Webmod)

Сообщение Ser_UFL » 30 ноя 2014, 16:05

Бинго! выводить содержимое statsx

Завалялось)
[spoiler][pawn]
  1. #define MAX_BUFFER_SIZE         49521

  2.  

  3. enum

  4. {

  5.         STATS_KILLS,

  6.         STATS_DEATHS,

  7.         STATS_HS,

  8.         STATS_TKS,

  9.         STATS_SHOTS,

  10.         STATS_HITS,

  11.         STATS_DAMAGE

  12. }

  13.  

  14. new g_TopPlayers

  15. new g_s_Buffer[MAX_BUFFER_SIZE] = ""

  16.  

  17. public plugin_init()

  18. {

  19.         g_TopPlayers            = register_cvar("wre_topplayers", "15")

  20.  

  21.         set_task(1.0, "Update_Top")

  22. }

  23.  

  24. public Update_Top()

  25. {

  26.         new s_File[128]

  27.  

  28.         formatex(s_File, charsmax(s_File), "%s/%s", WRE_TEMP_DIR, WRE_TOP_FILE)

  29.  

  30.         Format_Top(g_s_Buffer)

  31.  

  32.         if (file_exists(s_File))

  33.                 delete_file(s_File)

  34.  

  35.         write_file(s_File, g_s_Buffer)

  36. }

  37.  

  38. Format_Top(s_Buffer[MAX_BUFFER_SIZE])

  39. {

  40.         new i, i_Max, i_MaxTop, i_Stats[8], i_Body[8], s_Name[128], i_Len = 0

  41.  

  42.         i_MaxTop = get_pcvar_num(g_TopPlayers)

  43.         i_Max = get_statsnum()

  44.  

  45.         if (i_Max > i_MaxTop)

  46.                 i_Max = i_MaxTop

  47.  

  48.         for (i = 0; i < i_Max && sizeof(s_Buffer) - i_Len > 0; i++)

  49.         {

  50.                 get_stats(i, i_Stats, i_Body, s_Name, charsmax(s_Name))

  51.  

  52.                 replace_all(s_Name, charsmax(s_Name), "{", "&#123;")

  53.                 replace_all(s_Name, charsmax(s_Name), "}", "&#125;")

  54.                 replace_all(s_Name, charsmax(s_Name), "<", "&lt;")

  55.                 replace_all(s_Name, charsmax(s_Name), ">", "&gt;")

  56.  

  57.                 i_Len += format(s_Buffer[i_Len], sizeof(s_Buffer) - i_Len, "<TR><TD class=norm>&nbsp;%d</TD><TD class=norm>&nbsp;%s</TD><TD class=norm>&nbsp;%d</TD><TD class=norm>&nbsp;%d</TD><TD class=norm>&nbsp;%d</TD>", i + 1, s_Name, i_Stats[STATS_KILLS], i_Stats[STATS_DEATHS], i_Stats[STATS_HITS])

  58.                 i_Len += format(s_Buffer[i_Len], sizeof(s_Buffer) - i_Len, "<TD class=norm>&nbsp;%d</TD><TD class=norm>&nbsp;%d</TD><TD class=norm>&nbsp;%d%%</TD><TD class=norm>&nbsp;%d%%</TD></TR>^n", i_Stats[STATS_SHOTS], i_Stats[STATS_HS], floatround(Effec(i_Stats)), floatround(Accuracy(i_Stats)))

  59.         }

  60. }

  61.  

  62. Float:Accuracy(i_Stats[8])

  63. {

  64.         if (!i_Stats[STATS_SHOTS])

  65.                 return (0.0)

  66.  

  67.         return (100.0 * float(i_Stats[STATS_HITS]) / float(i_Stats[STATS_SHOTS]))

  68. }

  69.  

  70. Float:Effec(i_Stats[8])

  71. {

  72.         if (!i_Stats[STATS_KILLS])

  73.                 return (0.0)

  74.  

  75.         return (100.0 * float(i_Stats[STATS_KILLS]) / float(i_Stats[STATS_KILLS] + i_Stats[STATS_DEATHS]))

  76. }
[/pawn][/spoiler]

Так что насчёт wamod.html

Я тоже уже начал 2 недели назад, но подзабросил из-за других дел. При этом доступ к серверу имеют только его игроки через мотд и вместо php pawn.

:thumbs_up :thumbs_up :thumbs_up
Запомните, всегда по жизни вас будут красить вежливость и спокойствие, а не наезды и дешевые понты ;)
Аватара пользователя
Ser_UFL
 
Сообщения: 975
Зарегистрирован: 22 авг 2009, 19:30
Откуда: Hell
Благодарил (а): 276 раз.
Поблагодарили: 380 раз.
Языки программирования: Counter-Strike 1.6:
WebMod-scripts, little Pawn.

Пред.

Вернуться в Утвержденные плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6