Гайд [GLUA] Работа с Server-Side(SV)

  • 49
  • 1
  • 5
В этой статье я постараюсь немного объяснить серверную часть.

Наш главный помощник - вики
На сервер сайде можно творить чудеса с помощью кривого кода
Пример: код без каких либо проверок

Начнём с net'ов.
Неты можно отсылать игроку при любом действии.

Страница на вики
Ниже предоставлю свой небольшой код:

Lua:
-- shared
if CLIENT then
    local fr = vgui.Create('EditablePanel')
    fr:SetSize(ScrW(), ScrH())
    fr:SetTerm(2) -- фрейм будет виден 2 секунды, далее скроется
    fr:MakePopup()
    local bt = vgui.Create('DButton', fr)
    bt:Dock(BOTTOM)
    bt:SetText('Отправка нета')
    bt.DoClick = function()
        net.Start('myfirstnet') -- запускаем нет
        net.WriteString('Привет сервер!') -- отправляем значение, может быть любое. Для отправки данных из таблиц рекоменду использовать net.WriteInt
        net.SendToServer() -- отправляем на сервер
    end
elseif SERVER then
    util.AddNetworkString('myfirstnet') -- создаем нет
    net.Receive('myfirstnet', function() -- ресиваем нет
        local p = net.ReadString() -- читаем данные с клиента
        print(p) -- принтим результат
       
    end)
end

SQL запросы
При помощи SQL запроса можно записать данные в дата базу локального сервера

Код:
sql.Query( "CREATE TABLE IF NOT EXISTS myfirstsql(`name` TEXT, `steamid64` TEXT)")

hook.Add('PlayerInitialSpawn', 'myfirstsqlzapros', function(ply)
    local zapr = sql.Query('SELECT * FROM `myfirstsql` WHERE `name` ='..sql.SQLStr(ply:Name())..'AND `steamid64` ='..sql.SQLStr(ply:SteamID64())..';') -- делаем запрос
    if (zapr) then -- если
        print('огогогого') -- принтим в консоль
    end -- конец
end)

На этом пока всё

Постараюсь позже записать ролик, с более детальным рассказом об этом, если лень не будет☠️
 
  • 201
  • 16
  • 68
имею в виду, что допустим моё старое smenu. Там не было проверок на выдачу оружие(на группу игрока были, а на сами оружия - нет)
Тебя не понимаю.
Берём из головы систему, с которой пользователь взаимодействует. Если сделать conditions только на клиенте, их легко обойдут. А так как сервер не защищён, чел спокойно может что-то сломать. Пример с теми же net запросами, которые ламеры используют, в результате чего дюпы и баги возникают
 
  • 49
  • 1
  • 5
Тебя не понимаю.
Берём из головы систему, с которой пользователь взаимодействует. Если сделать conditions только на клиенте, их легко обойдут. А так как сервер не защищён, чел спокойно может что-то сломать. Пример с теми же net запросами, которые ламеры используют, в результате чего дюпы и баги возникают
есть разные штуки, что-бы творить дичь, я просто назвал обычный пример
 
Сверху Снизу