Что такое луа скрипты самп

Информация Гайд Всё о Lua скриптинге для MoonLoader

Для лёгкой и удобной работы с кодом Lua скриптов вам понадобится настроить для себя среду разработки. Для работы с Lua достаточно любого текстового редактора, но какой-нибудь блокнот Windows для этого подходит совсем плохо, поэтому лучше использовать специализированные программы. На текущий момент полная поддержка MoonLoader есть в Atom и Notepad++, помимо этого есть пользовательские дополнения для Visual Studio Code и Sublime Text.

Проект по-умолчанию.
В меню File выбираем пункт Open Folder. и указываем путь до папки moonloader, после этого она откроется как проект.

Проект по-умолчанию.
Как и в Atom, здесь есть возможность показа меню проекта, а точнее «Папка как Проект». В меню «Файл» выбираем пункт «Открыть Папку как Проект» и указываем путь к папке «moonloader».

Кодировка по-умолчанию.
Над лентой выбираем пункт Опции и переходим в Настройки. В меню слева выбираем пункт Новый документ и в разделе кодировки ставим флажок на список, в котором выбираем кодировку Windows-1251

После установки среды разработки, изучения основ Lua и ознакомления с документацией MoonLoader, можно приступать от теории к практике. Давайте сначала рассмотрим самое основное, на всякий случай.

В этом примере показаны не все директивы, за полным списком обращайтесь к соответствующей странице на вики.

События и колбэки
Событиями, а точнее их обработчиками, в MoonLoader называются функции, вызывающиеся в скриптах автоматически при каком-либо действии в игре, требующим обработки. Обработчики событий могут иметь входящие и возвращаемые параметры: входящие передают какую-то информацию скрипту, а возвращаемые позволяют повлиять на дальнейшую обработку после совершения события.
Зарегистрировать обработчик события можно двумя способами: просто добавить в скрипт функцию с соответствующим именем, либо воспользоваться функцией addEventHandler. Учтите, что первым способом обработчик может быть зарегистрирован только один раз.
Скрипты с зарегистрированными событиями не завершаются самостоятельно.
Пример: onScriptTerminate вызывается при завершении какого-либо скрипта

С основными принципами разработки вы теперь знакомы и при этих знаниях сможете выполнить большинство задач, однако некоторые задачи требуют применения специальных техник. Давайте рассмотрим некоторые из них.

Создание модулей
Модули делятся на два типа: Lua и DLL. Lua-модули пишутся, как вы уже могли догадаться, на языке Lua и в результате представляют из себя привычные Lua-скрипты, только с некоторыми особенностями.
Давайте рассмотрим пример простого модуля, назовём его example:

Источник

Как написать Lua скрипты и где они используются? Подробный обзор

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Lua-скрипты пишутся на языке программирования Lua, что очень даже естественно. Lua — это интерпретируемый скриптовой язык родом из Бразилии. Год его рождения — 1993-й год. С тех пор он постоянно развивается и расширяет свои возможности. Lua — это язык свободного распространения. По своей функциональности он ближе к JavaScript, но по некоторым компетентным мнениям он более гибкий, чем JS.

Скрипты Lua

Скрипты Lua не имеют собственной функции, с которой бы начиналось их выполнение. Это просто список заданных инструкций, которы е выполняются по порядку, стартуя с первой.

Скрипты Луа могут быть:

Переменные в скриптах Lua

Есть 4 требования при наименовании переменных:

Все переменные, как и в любом другом языке, делятся на 2 основных типа и могут быть:

Какую типизацию данных воспринимают скрипты Луа

Сам по себе язык Lua воспринимает следующую типизацию данных:

Любая переменная готова использовать любой из перечисленных типов — это определяет динамическая типизация языка Lua.

Комментарии в скриптах Lua

Комментарии в скриптах Lua могут быть:

Где используются скрипты Lua

Скриптинг Lua не так распространен, как JavaScript, но все равно за долгие годы существования этого языка он нашел последователей и занял свое место. Скрипты Lua применяются в проектах из разных сфер, некоторые из них довольно известные. Например:

Заключение

Отметим несколько достоинств скриптов Луа:

Да, Lua не самый популярный язык программирования, но он однозначно достоин внимания.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Гайд #3 | Работа с библиотекой SAMP.lua

UFDHBI

Гениальный

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Все, библиотеку мы установили, переходим к написанию скриптов.

Я создал файл Hooks.lua, кодировка windows 1251.

Поместил туда шаблон:

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Подключим нашу библиотеку:

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Попробуем отловить входящий пакет о присоеденении игрока к серверу на котором вы находитесь, пишем следующий код:

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Мы написали код который будет отлавливать пакеты с информацией о том что игрок присоеденился к серверу, но никак мы не обработали, давайте выведем в чат кто присоеденился и с каким ID.

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Теперь каждый раз когда кто-то присоединяется к серверу мы видим сообщение в чате:
nickname[id] присоединился к серверу.

Теперь перехватим входящее сообщение от сервера

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Давайте сделаем, чтобы все сообщения которые нам приходят от сервера были зелеными.

Источник

Что такое скрипты и с чем их едят — Lua & C++

Добрый день, Хабрахабр!
Решил написать этот топик на тему скриптов

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Что нужно знать?

Но есть способ, на голову выше — использование скриптов.

Решение проблемы

«Окей, для таких дел хватает обычного файла с описанием характеристиков игрока. Но что делать, если в бурно развивающемся проекте почти каждый день приходится немножко изменять логику главного игрока, и, следовательно, много раз компилировать проект?»
Хороший вопрос. В этом случае нам на помощь приходят скрипты, держащие именно логику игрока со всеми характеристиками либо какой-либо другой части игры.
Естественно, удобнее всего держать, логику игрока в виде кода какого-нибудь языка программирования.
Первая мысль — написать свой интерпретатор своего скриптового языка, выкидывается из мозга через несколько секунд. Логика игрока определенно не стоит таких жутких затрат.
К счастью, есть специальные библиотеки скриптовых языков для С++, которые принимают на вход текстовый файл и выполняют его.

Об одном таком скриптовом языке Lua пойдет речь.

Как это работает?

Прежде чем начать, важно понимать, как работает скриптовый язык. Дело в том, что в скриптовых языках есть очень мало функций, при наличии конструкций for, while, if, прочих.
В основном это функции вывода текста в консоль, математические функции и функции для работы с файлами.
Как же тогда можно управлять игроком через скрипты?

Мы в С++-программе делаем какие-либо функции, «регистрируем» их под каким-нибудь именем в скрипте и вызываем в скрипте. То есть если мы зарегистрировали функцию SetPos(x,y) для определения позиции игрока в С++-программе, то, встретив эту функцию в скрипте, «интерпретатор» из библиотеки скриптового языка вызывает эту функцию в С++-программе, естественно, с передачей всех методов.
Удивительно, да? 🙂

UPD: Внимание! Один юзер обратился мне с мейлом, что, когда я заливал код, я не полностью устранил все ошибки — habrahabr.ru/post/196272/#comment_6850016
В коде с позволения хабра проникли жучки
Замените участки кода вроде

И еще вместо lua_CFunction проскакивает lua_cfunction
Спасибо!

Я готов!

Когда вы поняли преимущества скриптовых языков программирования, самое время начать работать!
Скачайте из репозитория на гитхабе (низ топика) lib’у и includ’ы Lua, либо возмите их на официальном сайте.

Создаем консольный проект либо Win32 (это неважно) в Visual Studio (у меня стоит версия 2012)

Заходим в Проект->Свойства->Свойства конфигурации->Каталоги VC++ и в «каталоги включения» и «каталоги библиотек» добавьте папку Include и Lib из репозитория соответственно.

Теперь создаем файл main.cpp, пишем в нем:

Как вы догадались, у меня консольное приложение.

Теперь переходим к кодингу

Обещаю, что буду тщательно объяснять каждый момент

У нас за скрипты будет отвечать класс Script. Я буду объявлять и одновременно реализовывать функции в Script.h/.cpp
Создаем Script.cpp и пишем в нем

Создаем Script.h и пишем в нем

После 2 строчки и перед #endif мы определяем класс скриптов
Этот код пишется для предотвращения взаимного включения файлов. Допустим, что файл Game.h подключает Script.h, а Script.h подключает Game.h — непорядок! А с таким кодом включение выполняется только 1 раз

Теперь пишем внутри этого кода вот это

Первая строчка подключает сам lua.lib из архива.
Для чего нужен extern «C»? Дело в том, что lua написан на С и поэтому такой код необходим для подключения библиотек.

Дальше идет подключение хорошо известных многим файлов для работы с консолью

Теперь приступим к определению класса

Самый главный объект библиотеки Lua для C++ — lua_State, он необходим для выполнения скриптов

Дальше идут публичные функции

Эта функция инициализирует lua_State

Его определение в Script.cpp

Первой строчкой мы инициализируем наш lua_State.
Потом мы объявляем список «подключенных библиотек». Дело в том, что в «чистом» виде в луа есть только функция print(). Для математических и прочих функций требуется подключать специальные библиотеки и потом вызывать их как math.foo, base.foo, io.foo. Для подключения других библиотек добавьте в lualibs, например, <«math», luaopen_math>. Все названия библиотек начинаются с luaopen_. в конце lialibs должен стоять

Просто используем lua_close()

А эта функция выполняет файл. На вход она принимает название файла, например, «C:\\script.lua».
Почему она возвращает int? Просто некоторые скрипты могут содержать return, прерывая работу скрипта и возвращая какое-нибудь значение.

Как вы видите, я выполняю скрипт и возвращаю int. Но возращать функция может не только int, но еще и bool и char*, просто я всегда возвращаю числа (lua_toboolean, lua_tostring)

Теперь мы сделаем функцию, регистрирующую константы (числа, строки, функции)

Мы действуем через шаблоны. Пример вызова функции:
Ее определение

Для каждого возможного значения class T мы определяем свои действия.
*Капитан* последнее определение — регистрация функции
Функции, годные для регистрации, выглядят так:

Где n — количество возвращаемых значений. Если n = 2, то в Луа можно сделать так:

Читайте мануалы по Луа, если были удивлены тем, что одна функция возвращает несколько значений 🙂

Следующая функция создает таблицу для Луа. Если непонятно, что это значит, то тамошная таблица все равно что массив

Следующая функция регистрирует элемент в таблице.

Если вы не знаете Lua, вы, наверное, удивлены тем, что в один массив помещается столько типов? 🙂
На самом деле в элементе таблицы может содержаться еще и таблица, я так никогда не делаю.

Наконец, заполненную таблицу нужно зарегистрировать

Ничего особенного нет

Следующие функции предназначены в основном только для функций типа int foo(lua_State*), которые нужны для регистрации в Луа.

Первая из них — получает количество аргументов

Эта функция нужна, например, для функции Write(), куда можно запихать сколь угодно аргументов, а можно и ни одного
Подобную функцию мы реализуем позже

Следующая функция получает аргумент, переданный функции в скрипте

Можно получить все типы, описывавшиеся ранее, кроме таблиц и функций
index — это номер аргумента. И первый аргумент начинается с 1.

Наконец, последняя функция, которая возвращает значение в скрипт

Боевой код

Пора что-нибудь сделать!
Изменяем main.cpp

Компилируем. Теперь можно приступить к тестированию нашего класса

Помните, я обещал сделать функцию Write? 🙂
Видоизменяем main.cpp

А в папке с проектом создаем файл script.lua

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Компилируем и запускаем проект.

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Теперь изменяем script.lua

Теперь программа будет выводить по 2 строки («\n» — создание новой строки), ждать нажатия Enter и снова выводить строки.

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

Экспериментируйте со скриптами!

Вот пример main.cpp с функциями и пример script.lua

Полезные советы
Вопросы и ответы

Источник

Установка скриптов CLEO/ASI/LUA

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп

[CLEO] Cold Water

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп
Скрипт создаёт эффект «Холодной воды» добавляя морозную рамку на весь экран когда игрок попадает в воду. Отлично будет смотреться вместе с модификацией Snow Andreas.

[ASI] Screen Chat

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп
Удобная фото-фиксация только информации из чата, в папке с игрой создаётся папка «chat_screens», в которую попадают скриншоты чата без заднего фона.

Активация: left Shift+F2

[LUA] РВХ ( ВХ на руду для Аризона РП + статистика )

Активация меню управления: /res
Разрешить взаимодействие курсора с меню: res как чит-код, /reson.
Запретить взаимодействие курсора с меню: res как чит-код, /resof, нажать на Х в меню

Установка: Перекинуть файлы в папку moonloader

Требования: CLEO, SAMPFUNCS, Moonloader, imgui, samp.lua.

[ASI] Обход лаунчера Arizona-RP

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп
Скрипт позволяет обойти лаунчер Аризона РП, и в обход системы получать все преимущества лаунчера: гражданские талоны, открывать кейс с рулетками, иметь повышенный процент депозита и т.п.

[CLEO] CamHack

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп
Модификация добавляет возможность свободно перемещать камеру в пространстве. Отлично подойдёт для съёмки машиним и сериалов на основе SAMP.

[ASI] Скейтборд

Что такое луа скрипты самп. Смотреть фото Что такое луа скрипты самп. Смотреть картинку Что такое луа скрипты самп. Картинка про Что такое луа скрипты самп. Фото Что такое луа скрипты самп
Мод добавляет возможность кататься на скейте, содержит в себе модель, анимацию и ASI-плагин.

Инструкция по шагам:
1) Открываем программу «Crazy Img Editor». Открываем
через неё файл «gta3.img», путь к которому у меня таков
«D:\Games\GTA_San_Andreas\models» / Либо можно воспользоваться Modloader.

2) Нажимаем кнопку «Import (Remove if exists)», чтобы нам
выбрать файлы, которые будем вставлять в «gta3.img».

3) Импортируем (вставляем) подобным образом все файлы,
которые содержатся в папке «Файлы для gta3.img»

4) Нажимаем «Rebuild» (кнопку с изображением шестеренки),
и ожидаем пока программа устаканит/урезонит добавленные
файлы. После завершения данного процесса нужно закрыть
программу, ибо пока в ней открыт файл «gta3.img», игра
отказывается запускаться.

5)Скопируйте файл bikearmfix.asi в папку с gta_sa.exe

Помощник электрика на самп рп ( кликер + карта )

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *