Вижу у многих проблемы поднять или найти хостинг для loadingscreen.
Решил написать модуль на C++ пока что собрал только для win32 для обкатки.
gmsv_webserver_win32.zip (141,8 КБ)
Установка:
- Скачиваем модуль и пихаем его в garrysmod/lua/bin
- В любой серверной части пишем
require("webserver")
web.Start("127.0.0.1",8081)
-- этого должно хватить для начала
После запускаем сам сервер и все, у нас по ссылке http://127.0.0.1:8081 должна появится страница что сервер загружается и т.д.
После запуска модуль создает папку loadingscreen в папке garrysmod.
туда мы можем пихать все что хотим, НО, эта штука может закидывать только статичные ресурсы, т.е всякие php и прочее работать не будет!
API:
-- Запустить веб сервер
-- Тут мы первым параметром указываем какой ip будем слушать
-- вторым параметром указываем порт
-- учитывая что это экран загрузки можно пренебречь красивыми ссылками)
web.Start("127.0.0.1",8081)
-- Это своеобразный хук для отслеживания подключений, пока что он возвращает
-- только ip, жду ваших предложений что еще можно добавить)
web.SetConnectionHook(function(ip)
print("Web connection from: " .. ip)
end)
-- Очевидно останавливает веб-сервер.
web.Stop()
Думаю добавить шаблонизацию чтобы из луа мы могли передавать значения по типу списка игроков, онлайн и другие параметры.
V0.0.2
В этой версии добавил хук WebConnection который возвращает ip пользователя, в этом хуке можно заблокировать доступ или разрешить.
gmsv_webserver_win32_v0_0_2.zip (193,7 КБ)
Добавил шаблонизацию кода.
API:
-- Запустить веб сервер
-- Тут мы первым параметром указываем какой ip будем слушать
-- вторым параметром указываем порт
-- учитывая что это экран загрузки можно пренебречь красивыми ссылками)
web.Start("127.0.0.1",8081)
-- Это своеобразный хук для отслеживания подключений, пока что он возвращает
-- только ip, и позволяет запретить доступ к сайту
hook.Add("WebConnection","check",function(ip)
-- false - разрешить доступ к сайту / true - запретить доступ к сайту
return false
end)
-- Регистрация тега для шаблонизатора
-- тут мы указываем название тега в моем случае players_count
-- и функцию которая будет возвращать значение в тег
-- ВНИМАНИЕ: функция всегда должна возвращать string!!!!
-- т.е по стандарту заворачиваем ответ в tostring
web.RegisterTemplateTag("players_count", function()
return tostring(player.GetCount())
end)
-- Очевидно останавливает веб-сервер.
web.Stop()
для работы с шаблонизатором заходим в любой файл сайта к примеру index.html
<body>
<p>Players: <gm:players_count></p> <!-- <gm:players_count> заменится на кол-во игроков на сервере -->
<p>Server name: <gm:title></p>
<p>Server Time: <gm:server_time></p>
</body>
также эти теги можно пихать в css js они везде заменяются!