#1 | Пишем биндер на Lua.

Статус
В этой теме нельзя размещать новые ответы.

UFDHBI

Гениальный
Автор темы
Проверенный
1,455
836
Сегодня рассмотрим создание наипростейшего биндера на lua
С задержками
И без задержки между сообщениями.

Создаем в папке moonloader текстовый документ.
Переименовываем в файл с расширением .lua, например binder.lua
Открывает через текстовый редактор, кто-то через системный, кто-то через notepad, sublime, atom

И вставляем данный код:
Lua:
require "lib.moonloader"

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    while true do
    wait(0)

    end
end

Этот шаблон здорового lua скрипта.

Мы загрузили библиотеку moonloader
Lua:
require "lib.moonloader"

И у нас есть главная фунция MAIN.
Lua:
function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end
    while true do
    wait(0)

    end
end
В этой функции скрипт проверяет загружен ли самп.
Lua:
if not isSampfuncsLoaded() or not isSampLoaded() then return end
while not isSampAvailable() do wait(100) end
Когда самп будет загружен то скрипт запускает бесконечный цикл
Lua:
while true do
wait(0)

end

Бесконечный потому что в условии цикла стоит true, то есть истина.

Lua:
Wait(0)
Нулевая задержка нужна в каждом бесконечном цикле, чтобы у вас не зависла игра.

Вернемся к написанию биндера.
Чтобы отправить сообщение по нажатию клавиши, нам нужно это нажатие отследить.
Поэтому в бесконечном цикле функции main пишем условие:
Lua:
if isKeyJustPressed(VK_P) then

end

Мы написали: если Нажата клавиша P(англ.) то... А действий никаких не приписали.
Припишем отправку сообщения.
Lua:
if isKeyJustPressed(VK_P) then
  sampSendChat("my first binder")
end

И получаем такой код:
Lua:
require "lib.moonloader"
function main()
  if not isSampfuncsLoaded() or not isSampLoaded() then return end
  while not isSampAvailable() do wait(100) end
  while true do
  wait(0)
    if isKeyJustPressed(VK_P) then
      sampSendChat("my first binder")
    end
  end
  end

Можем сохранить, зайти в игру и проверить.
Мы сделали бинд на кнопку P, отправляется одно сообщение.
Чтобы отправить несколько сообщений с задержкой между ними сделаем еще одно условие нажатия на кнопку, например O (англ.)
Lua:
if isKeyJustPressed(VK_O) then

end

В него пишем сообщение, задержка, еще одно сообщение, выглядит это так:
Lua:
if isKeyJustPressed(VK_O) then
  sampSendChat("первое сообщение")
  wait(1500) -- задержка в мс 1500 - 1.5 сек
  sampSendChat("второе сообщение")
end

Чтобы не выводило в чат иероглифы при биндах с русским текстом - сохраняем файл с кодировкой 'Windows 1251'

В итоге у нас получилось:
6TPO0YM.png


Все, написали наипростейший биндер, задача выполнена.
 
Последнее редактирование:

SR_team

like pancake
BH Team
4,393
5,389
В контексте воспринимать как размер или здоровье? Типа "Этот шаблон здорового(большого) lua скрипта.", потому что он будет большим; или "Этот шаблон здорового(не имеющего болезней) lua скрипта.", потому что в нем все правильно и это хорошая заготовка.
 

UFDHBI

Гениальный
Автор темы
Проверенный
1,455
836
В контексте воспринимать как размер или здоровье? Типа "Этот шаблон здорового(большого) lua скрипта.", потому что он будет большим; или "Этот шаблон здорового(не имеющего болезней) lua скрипта.", потому что в нем все правильно и это хорошая заготовка.
потому что в нем все правильно и это хорошая заготовка
 

luchare

f o l l o w ❤️ m e
Друг
542
625
И у нас есть главный блок MAIN.
Блок - в программировании: часть кода, которая воспринимается как единое целое.
main - это функция, являющаяся entry point'ом скрипта.

блоком можно назвать проверку на загрузку опкодов и сампа.
 
  • Нравится
Реакции: UFDHBI

AnWu

Известный
Всефорумный модератор
4,154
3,835
Забиндил некоторое действие на кнопку - это ли не биндер?
p.s. наипростейший
Забиндил, одну, кнопку. Это тупо скрипт. Биндер отличает наличие интерфейса и хоть какой-либо сейв данных.
 
  • Нравится
Реакции: RTD и applethecandy

D3.Pheonix

Event Loop
Модератор
2,297
1,129
Забиндил, одну, кнопку. Это тупо скрипт. Биндер отличает наличие интерфейса и хоть какой-либо сейв данных.
и что, что одну? Интерфейс и все остальное это плюхи, а не обязательства.
Или ты просто доебаться решил ?
слово НАИПРОСТЕЙШИЙ
 
Последнее редактирование:

AnWu

Известный
Всефорумный модератор
4,154
3,835
и что, что одну? Интерфейс и все остальное это плюхи, а не обязательства.
Или ты просто доебаться решил ?
слово НАИПРОСТЕЙШИЙ
Наипростейший это когда заходишь в прогу и выбираешь кнопку рядом с "СКАЗАТЬ ВСЕМ ПРИВЕТ". А всё остальное это ни капли не биндер. И нет я доебаться не хочу. Мне этот разговор вообще не нравится и я высказал своё мнение.
 
  • Нравится
Реакции: applethecandy

UFDHBI

Гениальный
Автор темы
Проверенный
1,455
836
Наипростейший это когда заходишь в прогу и выбираешь кнопку рядом с "СКАЗАТЬ ВСЕМ ПРИВЕТ". А всё остальное это ни капли не биндер. И нет я доебаться не хочу. Мне этот разговор вообще не нравится и я высказал своё мнение.
ну и вали отсюда
 
  • Нравится
Реакции: ClydeSimons и kawa operand

k1zn

Известный
Проверенный
2,086
1,614
номера клавиш где узнать? нумпад 2 нужен
 
Статус
В этой теме нельзя размещать новые ответы.