Загрузка...

Написание биндера на lua

Тема в разделе Гайды SAMP создана пользователем Amid24 24 ноя 2021. 2090 просмотров

Загрузка...
  1. Amid24
    Amid24 Автор темы 24 ноя 2021 8 10 ноя 2016
    Привет, мне нехуй делать так что расскажу вам как написать простейший биндер на луа для сампа.

    для начала определимся с функционалом нашего "мега супер биндера". Я буду писать биндер, который будет отправлять в чат "/lock" при нажатии на L

    Создание .lua файла:
    Что бы создать .lua файл достаточно создать текстовый документ и изменить его расширение с '.txt' на '.lua' (сам в ахуе)
    Важно: сам скрипт необходимо сохранять в кодировке Windows-1251

    Написание кода:
    Итак, в начало скрипта нам надо вписать
    require 'lib.moonloader'
    , на самом деле это не обязательно, но так мы сможем писать название клавиши вместо ее айди (например вместо
    76
    мы сможем писать
    VK_L
    )

    Теперь нам надо создать функцию main, именно она будет запускаться после загрузки мунлоадера:
    LUA

    require 'lib.moonloader'

    function main()

    end
    Обратите внимание: мунлоадер загружается ДО запуска самого сампа, так что при вызове самповских функций сразу после запуска приведет к крашам, что бы этого избежать достаточно добавить цикл, который будет выполнять ожидает до тех пор пока самп не будет загружен, для этого в функцию main вставим следующий код:
    LUA
    while not isSampAvailable() do wait(0) end
    Теперь нам надо создать бесконечный цикл, так как скрипт должен постоянно получать статус (нажата или нет) определенной клавиши , для этого в функцию main после проверки на доступность сампа пропишем:
    LUA
    while true do
    wait(0)
    end
    (!) вместо true можно написать то что будет равняться true (АХУЕТЬ!), например
    while 'chapo' ~= 'gay' do
    , или
    while not false do
    или
    while 'привет' ~= 'пока' and 'хуй' ~= 'пизда' and 'гей' ~= 'натурал' and true ~= false do

    (!) wait(0) - в нашем случае я вписал именно 0 так как нам надо считывать клавишу постоянно

    Проверка статуса клавиши:

    Для того что бы наш код сработал после нажатия на клавишу я буду использовать функцию
    wasKeyPressed(KEY_ID)
    , а именно:
    LUA
    if wasKeyPressed(VK_L) then

    end
    (!) VK_L - код клавиши которую нам надо проверять (ебать неожиданно)

    Действие если клавиша была нажата:
    так как нам надо отправлять сообщение в чат, я буду использовать функцию sampSendChat()
    Обратите внимание: если вы хотите отправить команду так, что бы это "увидел" другой скрипт, то вам надо использовать
    sampProcessChatInput(string text)

    LUA
    if wasKeyPressed(VK_L) then
    sampSendChat('/lock')
    end
    Все, наш биндер готов, но есть небольшая (большая) проблема, заключается она в том что бинд срабатывает если открыт чат, что бы этого избежать добавим проверку на видимость курсора, выглядеть это должно примерно так:
    LUA
    if wasKeyPressed(VK_L) and not sampIsCursorActive() then
    Готовый код с комментариями:
    LUA
    require 'lib.moonloader' -- подключаем moonloader.lua что бы использовать названия клавиш вместо их id

    function main() -- функция которая будет запускатся при запуске игры
    while not isSampAvailable() do wait(0) end -- ожидаем загрузки SA:MP
    while true do -- создаем бесконечный цикл для проверки клавиши
    wait(0) -- похуй
    if wasKeyPressed(VK_L) and not sampIsCursorActive() then -- если клавиша L была нажата и курсор НЕ активен, то...
    sampSendChat('/lock') -- ... отправляем в чат сообщение "/lock"
    end -- завершаем проверку на клавишу и курсор
    end -- завершаем беск. цикл
    end -- завершаем функцию main()


     
  2. Элейна
    Элейна 24 ноя 2021 4666 16 авг 2019
    Нахуя :ok_hm:
     
  3. РикаФурудэ
    РикаФурудэ 24 ноя 2021 Азартные игры не будут добавлены на форум
    Помню в 2019 сам такие писал :finger_up:
    --- Сообщение объединено с предыдущим 24 ноя 2021
    Кстати, вспомнил тру стори.
    Был и есть в SAMP такой сервер как Advance RP.
    И есть на форуме тема с рекордами сервера, вроде:
    Был первым лидером гетто который взял сотку, добыл на шахте 100500 руды и т. п.
    Так вот, я написал Lua-скрипт который по команде выводил что я сделал нужное количество товара на заводе.
    Таким образом я смог попасть в рекорды сервера "сделав" 854 продукта на заводе.
    И держался бы в рекордах до сих пор если бы не написал на один известный форум о своих достижениях.
    Естественно я понимал чем это грозит, но в SAMP я всё равно уже не играл.
    Кстати, вот то видео по которому у меня приняли рекорд:

    --- Сообщение объединено с предыдущим 24 ноя 2021
    [IMG]
    --- Сообщение объединено с предыдущим 24 ноя 2021
    [IMG]
     
Top