Исходник Информация Гайд Создание своей библиотеки

chapo

чопа сребдс // @moujeek
Автор темы
Модератор
8,934
11,700
Ку, после этой статьи вы сможете написать свою мини библиотеку (на самом деле ее можно юзать например для сокращения действий)

Для создания библиотеки вам необходимо создать 2 .lua файла, а именно: сама библиотека и скрипт для теста. В моем случае это myLib.lua и myLib_test.lua.
Для примера я буду делать "библиотеку", которая после ввода команды /aboutme будет выводить в чат информацию об игроке

Написание "библиотеки"
1. Начало библиотеки
Начало библиотеки должно выглядеть как и начало самого банального скрипта (потому что эта библиотека и является обычным скриптом, но заточена она для вызова функций другими скриптами)
Начало скрипта:
function main()
    while not isSampAvailable() do wait(0) end
    while true do
        wait(-1)
   
    end
end

2. Создание вызываемой другим скриптом функции
Для начала нам необходимо создать обычную функцию, но в ее название добавить EXPORTS.
Я буду делать "библиотеку", которая будет выводить в чат информация об игроке, поэтому я назову свою функцию EXPORTS.aboutme
функция:
function EXPORTS.aboutme(arg)
    --code
end

3. Добавление "функционала" не ебу как это еще можно назвать
Lua:
function EXPORTS.aboutme()
    id = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
    sampAddChatMessage('Мой ID: '..id, -1)
    sampAddChatMessage('Мой ник: '..sampGetPlayerNickname(id), -1)
    sampAddChatMessage('Мой лвл: '..sampGetPlayerScore(id), -1)
    sampAddChatMessage('Мой пинг: '..sampGetPlayerPing(id), -1)
    sampAddChatMessage('Мое здоровье: '..sampGetPlayerHealth(id), -1)
    sampAddChatMessage('Моя броня: '..sampGetPlayerArmor(id), -1)
end

Вызов библиотеки из вашего скрипта
1. Импорт библиотеки
После создания скрипта для теста нашей библиотеки нам надо импортировать библиотеку, для этого в самом начале скрипта пишем:
Lua:
local myLib = import 'myLib.lua'
myLib - то, что надо будет писать перед названием функции
'myLib.lua' - название "библиотеки" (скрипта в котором вы ранее создавали функцию)

2. Вызов функции из библиотеки
я буду вызывать функцию вводом команды /libtest, для этого я создам обычный .lua файл и вставлю в него следующее:

Lua:
local myLib = import 'myLib.lua'

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('mylibtest', mylibtest)
    while true do
        wait(-1)
    end
end

3. Вызов библиотеки:
Для вызова библиотеки вам нужна прописать следующее:
myLib.aboutme() (myLib- название переменной указанной в начале скрипта, aboutme- название функции из библиотеки (без EXPORTS.)

4. В итоге мы получаем это:

Lua:
local myLib = import 'myLib.lua'

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('mylibtest', mylibtest)
    while true do
        wait(-1)
    end
end

function mylibtest()
    myLib.aboutme()
end

Результат:
1611855447342.png


кароч я просто открыл imgui notify от DonHomka и посмотрел как это работает
 

Вложения

  • myLib.lua
    591 байт · Просмотры: 42
  • myLib_test.lua
    254 байт · Просмотры: 30
Последнее редактирование:

clrn1w

Известный
316
146
Начало скрипта:
Код:
function main()
    while not isSampAvailable() do wait(0) end
    while true do
        wait(0)
        end
    end
end
У тебя тут синтаксическая ошибка, лишний end. И тебе отвечали, что если цикл не используется, то нужно убрать его и вставить вместо него
Lua:
wait(-1)
Иначе будет утечка памяти
 
  • Нравится
Реакции: dart__ и chapo

chapo

чопа сребдс // @moujeek
Автор темы
Модератор
8,934
11,700
У тебя тут синтаксическая ошибка, лишний end. И тебе отвечали, что если цикл не используется, то нужно убрать его и вставить вместо него
Lua:
wait(-1)
Иначе будет утечка памяти
исправил
 

imring

Ride the Lightning
Всефорумный модератор
2,365
2,552
  • Нравится
Реакции: kin4stat

Vintik

Через тернии к звёздам
Проверенный
1,556
1,027
А нафига wait(-1) в цикле, если оно остановится на его первой итерации?
 
  • Нравится
Реакции: 4el0ve4ik