Перейти к содержанию

Этот сайт находится в стадии разработки!

This site is being actively worked on.

Feel you could help? Please do by clicking on the page with a pencil on the right!

This can be done any page too.

Справочник по серверным скриптам

Версия сервера 2.X

Предупреждение

BeamMP server version 2.X is now unsupported. This documentation is provided as a reference only.
Please update to the latest version for maintenance and support.

Это скрипт 2.x. Обращайтесь к нему только если ваш сервер старый/устаревший (версия 2.xx). Для получения последней документации см. здесь . {.is-warning}

Примечания

Чтобы получить вывод функции в консоли сервера, вам нужно обернуть его в оператор print() . Например: print(GetPlayerName(0)) вернет имя первого игрока вашего сервера.

<PlayersServerID> начинается с 0.

Список доступных функций для написания скриптов

GetPlayerName(идентификатор_сервера_игроков)

Возвращает имя игрока в Discord в виде строки

function onPlayerJoin(playerID)
    local name = GetPlayerName(playerID)
    -- Do something
end

GetPlayerDiscordID(playersServerID)

Возвращает имя игрока в Discord в виде строки

function onPlayerJoin(playerID)
    local name = GetPlayerDiscordID(playerID)
    -- Do something
end

GetPlayerHWID(идентификатор_сервера_игроков)

Возвращает идентификатор игрока в Discord в виде строки

function onPlayerJoin(playerID)
    local name = GetPlayerHWID(playerID)
    -- Do something
end

GetPlayerVehicles(идентификатор_сервера_игроков)

Возвращает транспортные средства игрока в виде объекта/массива.

function onChatMessage(playerID, senderName, message)
    local vehicleList = GetPlayerVehicles(playerID)
    for vehicleID, vehicleData in pairs(vehicleList) do
    -- Do something
    -- Could also be used to check how many vehicles a player have
    end
end

DropPlayer(идентификатор_сервера_игроков)

Сбрасывает соединение для определенного игрока. По сути выгоняет его

function onVehicleSpawn(playerID, vehicleID, vehicleData)
    -- Do something
    DropPlayer(playerID)
end

SendChatMessage(playersServerID, сообщение)

Отправляет сообщение по сети указанному пользователю. Используйте -1 для всех

function onPlayerJoin(playerID)
    SendChatMessage(-1, "Someone just joined!")
end

CancelEvent() -- УСТАРЕЛО

Отменяет событие. Это может произойти скоро. Используйте return 1 чтобы отменить событие.

onInit()

Если объявлено в файле lua, оно будет вызвано после того, как C++ успешно завершит загрузку текущего файла lua.

function onInit()
    print("Server ready")
end

Выход()

Закрою сервер.

function onInit()
    print("Server Ready. But who needs a server which is running")
    exit() -- Stops the server
end

CreateThread(имя_функции, интервал_вызова)

Функция будет выполняться в выделенном потоке, и она будет запускать callInterval раз в секунду. 1 = Она будет запускаться каждую секунду.

function yourFunction()
    for i = 1,10 do
        SendChatMessage(-1, "Countdown: "..i)
        Sleep(1000)
    end
end
CreateThread("yourFunction", 30)

УСТАРЕВШИЙ ПРИМЕР Функция будет выполняться в выделенном потоке

function yourFunction()
    for i = 1,10 do
        SendChatMessage(-1, "Countdown: "..i)
        Sleep(1000)
    end
end
CreateThread("yourFunction", 30)

StopThread(имя_функции)

Прекратит попытки вызвать функцию потока текущего скрипта.

function yourFunction()
    delayExpired = false
    Sleep(10000)
    delayExpired = true
end
CreateThread("yourFunction", 30)
-- Do something
if not delayExpired then
    StopThread("yourFunction")
else
    -- Do something
end

Сон (миллисек) - ИЗНОС

Приостановит выполнение на указанное время (предупреждение: это приведет к приостановке всего сервера, если вы не создали поток)

function countdown()
    for i = 1,10 do
        SendChatMessage(-1, "Countdown: "..i)
        Sleep(1000)
    end
end
CreateThread("countdown", 10)

ПолучитьPlayerCount()

Вернет количество подключенных игроков

function onPlayerJoin(playerID)
    SendChatMessage(playerID, "You are the "..GetPlayerCount().."th player!"
end

RemoveVehicle(playerServerID, VehicleID)

Исчезнет транспортное средство.

function onVehicleSpawn(playerID, vehicleID, vehicleData)
    if --[[ Vehicle data equal something it shouldn't be ]] then
        RemoveVehicle(playerID, vehicleIID)
    end
end

ПолучитьИгроков()

Вернет таблицу идентификаторов с именами

local function onPlayerJoin(joinedPlayerID)
    local players = GetPlayers()
    for playerID, playerName in pairs(players) do
        if playerID == joinedPlayerID then
            -- Do something
        end
    end
end

RegisterEvent(имя_события, имя_функции)

Зарегистрирует эту функцию для указанного события. Оба должны быть строками

  function anyEvent()
        -- Do something
    end
    RegisterEvent("onAnyEventHappen", "anyEvent")
    -- Do something
    TriggerLocalEvent("onAnyEventHappen")

TriggerLocalEvent(имя_события)

Будет вызывать каждую зарегистрированную функцию в той же папке плагина.

  function anyEvent()
        -- Do something
    end
    RegisterEvent("onAnyEventHappen", "anyEvent")
    -- Do something
    TriggerLocalEvent("onAnyEventHappen")

TriggerGlobalEvent(имя_события)

Будет вызывать каждую зарегистрированную функцию с этим именем события.

    -- File A
  function anyEvent()
        -- Do something
    end
    RegisterEvent("onAnyEventHappen", "anyEvent")
    -- File B
    TriggerGlobalEvent("onAnyEventHappen")

TriggerClientEvent(playerServerID, eventName, data)

Вызовет это событие с указанными данными на указанном клиенте (-1 для широковещательной передачи)

  function onPlayerJoin(playerServerID)
     TriggerClientEvent(playerServerID, "anyEvent", "You just joined the server")
  end
    RegisterEvent("onAnyEventHappen", "anyEvent")

Установить(configID, newValue)

установит настройку конфигурации на новое указанное значение из таблицы ниже|

  function onChatMessage(playerID, senderName, message)
    if playerID == adminPlayer then
      if message == --[[ anything ]] then
        Set(3, 10)
      end
    end
  end

Список доступных настроек конфигурации для команды Set()

Обратите внимание, что они не будут сохранены в файле конфигурации.

Идентификатор конфигурации Имя Приму только
0 Настройка отладки правда или ложь
1 Частная обстановка правда или ложь
2 Макс. количество автомобилей на игрока число
3 Макс. количество игроков число
4 Карта нить
5 Имя нить
6 Описание нить
любой другой идентификатор приведет к появлению предупреждения на консоли

Список доступных событий для написания сценариев

События по умолчанию

Пример использования события:

    function onInit()
    RegisterEvent("onPlayerJoin", "onPlayerJoin")
  end

  function onPlayerJoin(playerServerID)
    -- Do something
  end

Если вы не хотите, чтобы на вашем сервере были гости:

    function onInit()
        print("noGuests Ready")
        RegisterEvent("onPlayerAuth","onPlayerAuth")
    end

    function onPlayerAuth(name, role, isGuest)
        if isGuest then
            return "You must be signed in to join this server!"
        end
    end
Событие Параметры Описание
onPlayerAuth Имя игрока, роль на форуме, гостевая учетная запись (bool) Игрок прошел аутентификацию и запрашивает присоединение
onPlayerConnecting Идентификатор игрока Игрок загружается (до загрузки карты)
onPlayerJoining Идентификатор игрока Игрок загружает карту и скоро присоединится
onPlayerJoin Идентификатор игрока Игрок присоединился и загрузился
onPlayerDisconnect Идентификатор игрока Игрок отключился
onChatMessage Идентификатор отправителя, имя и сообщение чата Сообщение чата было отправлено. Это было бы хорошо для создания системы команд
onVehicleSpawn Идентификатор игрока, идентификатор транспортного средства и данные транспортного средства Это называется, когда кто-то создает транспортное средство.
onVehicleEdited Идентификатор игрока, идентификатор транспортного средства и данные транспортного средства Это называется, когда кто-то редактирует транспортное средство или заменяет существующее.
onVehicleDeleted Идентификатор игрока и идентификатор транспортного средства Это называется, когда кто-то удаляет принадлежащее ему транспортное средство.

Пользовательские события

Пользовательские события также могут быть созданы для вашего собственного использования. Это делается примерно так же, как и события по умолчанию.

Пример использования пользовательского события:

    function onInit()
    RegisterEvent("myCustomEvent", "myCustomEvent")
  end

  function myCustomEvent(playerServerID, customData)
    -- Do something
  end

Затем его можно вызвать либо со стороны клиента, либо со стороны сервера, используя соответствующие функции.

Игроки

Когда игрок подключается к вашему серверу, ему назначается serverID, начиная с 0 и далее. serverID используются повторно; если игрок покидает сервер и снова присоединяется, ему не будет назначен новый serverID, он просто получит другой доступный. Когда сервер перезапустится, serverID будут сброшены.

Статические идентификаторы

У игроков в BeamMP есть 3 статических идентификатора, которые можно получить из их serverID: имя, discordID и hardwareID или HWID. (Хотя последний из вышеупомянутых не реализован, мы будем действовать так, как будто он реализован). Каждый из трех типов идентификаторов имеет свое собственное происхождение и сильные/слабые стороны при использовании их для идентификации игрока.

ТИП ИДЕНТИФИКАТОРА ПЛЮСЫ МИНУСЫ ФУНКЦИЯ ДЛЯ ПОЛУЧЕНИЯ
имя легко получить, просто не безопасно ПолучитьИмяИгрока()
DiscordID довольно безопасно неудобно GetPlayerDiscordID()
HWID чрезвычайно безопасно трудно получить GetPlayerHWID()

Транспортные средства

У транспортных средств в beamMP есть 3 атрибута, на которые обращает внимание сервер: serverID владельца, vehicleID транспортного средства и его данные. ServerID владельца прост, это serverID, у каждого транспортного средства также есть ID, идентификаторы транспортных средств не уникальны для транспортного средства; два транспортных средства могут иметь одинаковый ID, если они принадлежат разным владельцам. В отличие от serverID, vehicleID используются повторно, например, если у меня есть 4 транспортных средства, их идентификаторы — 0, 1, 2 и 3, если я удалю транспортное средство в vehicleID 2, у меня будут 0, 1 и 3, когда я создам новое транспортное средство, новое транспортное средство будет помещено в слот ID 2. Наконец, последний атрибут, который есть у транспортных средств, — это data, data содержит транспортное средство, название, детали и другие данные; как следует из названия. data хранится в виде необработанной строки JSON, поэтому вам понадобится библиотека JSON. В качестве альтернативы вы можете вручную пройти по строке и извлечь необходимую информацию.