Привет, мне нехуй делать так что расскажу вам как написать простейший биндер на луа для сампа. для начала определимся с функционалом нашего "мега супер биндера". Я буду писать биндер, который будет отправлять в чат "/lock" при нажатии на L Создание .lua файла: Что бы создать .lua файл достаточно создать текстовый документ и изменить его расширение с '.txt' на '.lua' (сам в ахуе) Важно: сам скрипт необходимо сохранять в кодировке Windows-1251 Написание кода: Итак, в начало скрипта нам надо вписать require 'lib.moonloader' , на самом деле это не обязательно, но так мы сможем писать название клавиши вместо ее айди (например вместо 76 мы сможем писать VK_L ) Теперь нам надо создать функцию main, именно она будет запускаться после загрузки мунлоадера: require 'lib.moonloader' function main() end LUA require 'lib.moonloader' function main() end Обратите внимание: мунлоадер загружается ДО запуска самого сампа, так что при вызове самповских функций сразу после запуска приведет к крашам, что бы этого избежать достаточно добавить цикл, который будет выполнять ожидает до тех пор пока самп не будет загружен, для этого в функцию main вставим следующий код: while not isSampAvailable() do wait(0) end LUA while not isSampAvailable() do wait(0) end Теперь нам надо создать бесконечный цикл, так как скрипт должен постоянно получать статус (нажата или нет) определенной клавиши , для этого в функцию main после проверки на доступность сампа пропишем: while true do wait(0) end 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) , а именно: if wasKeyPressed(VK_L) then end LUA if wasKeyPressed(VK_L) then end (!) VK_L - код клавиши которую нам надо проверять (ебать неожиданно) Действие если клавиша была нажата: так как нам надо отправлять сообщение в чат, я буду использовать функцию sampSendChat() Обратите внимание: если вы хотите отправить команду так, что бы это "увидел" другой скрипт, то вам надо использовать sampProcessChatInput(string text) if wasKeyPressed(VK_L) then sampSendChat('/lock') end LUA if wasKeyPressed(VK_L) then sampSendChat('/lock') end Все, наш биндер готов, но есть небольшая (большая) проблема, заключается она в том что бинд срабатывает если открыт чат, что бы этого избежать добавим проверку на видимость курсора, выглядеть это должно примерно так: if wasKeyPressed(VK_L) and not sampIsCursorActive() then LUA if wasKeyPressed(VK_L) and not sampIsCursorActive() then Готовый код с комментариями: 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() 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()
Помню в 2019 сам такие писал --- Сообщение объединено с предыдущим 24 ноя 2021 Кстати, вспомнил тру стори. Был и есть в SAMP такой сервер как Advance RP. И есть на форуме тема с рекордами сервера, вроде: Был первым лидером гетто который взял сотку, добыл на шахте 100500 руды и т. п. Так вот, я написал Lua-скрипт который по команде выводил что я сделал нужное количество товара на заводе. Таким образом я смог попасть в рекорды сервера "сделав" 854 продукта на заводе. И держался бы в рекордах до сих пор если бы не написал на один известный форум о своих достижениях. Естественно я понимал чем это грозит, но в SAMP я всё равно уже не играл. Кстати, вот то видео по которому у меня приняли рекорд: --- Сообщение объединено с предыдущим 24 ноя 2021 --- Сообщение объединено с предыдущим 24 ноя 2021