lua это что самп

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

UFDHBI

Гениальный

lua это что самп

lua это что самп

lua это что самп

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

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

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

lua это что самп

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

lua это что самп

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

lua это что самп

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

lua это что самп

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

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

lua это что самп

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

Источник

SAMP.Lua

Изначально эта библиотека задумывалась как простой апи исключительно для обработки сетевых пакетов, но в процессе было решешо, что лучше бы сделать её полноценной библиотекой для работы с сампом, в будущем это позволит избавить от необходимости использования SAMPFUNCS. Пока реализован только модуль, значительно упрощающий работу с пакетами, так что говорить сейчас будем о нём.

SAMP.Events
Этот модуль добавляет событийную обработку входящих и исходящих RakNet пакетов. Имеет удобный API, полностью кастомизируем, предоставляет те же возможности, что и обычные хуки: чтение, перезапись, игнорирование.

Использование
Простой пример обработки исходящего сообщения в чат:

Структуры всех пакетов находятся в файле events.lua.

Это применимо только в событиях onSendPlayerSync, onSendVehicleSync, onSendPassengerSync, onSendAimSync, onSendUnoccupiedSync, onSendTrailerSync, onSendBulletSync, onSendSpectatorSync.
Структуры всех пакетов синхронизации находятся в файле synchronization.lua.

Новый тип тоже можно добавить без изменения исходников библиотеки:

Скачать последнюю версию и следить за изменениями всегда можно на GitHub.
Установка: скачать samp.zip из последнего релиза и целиком скопировать папку ‘samp’ (не содержимое папки!) из архива в каталог ‘moonloader/lib/’.

Любая помощь в разработке приветствуется, особенно с добавлением новых структур. Предложите Pull request на гитхабе или напишите в этой теме.

Ну и конечно же крохотное нано-спасибо hnnssy за помощь.

lua это что самп

Garrus

Участник

[15:20:25] SAMPFUNCS v5.3.3 release #19 (SA-MP 0.3.7) loaded. Base address: 0x042B0000.
[15:20:25] Compiled: Aug 8 2016 13:19:58
[15:20:25] Initializing opcodes.
[15:20:25] Opcodes initialized successfully. Total opcodes count: 382.
[15:20:27] samp.dll base addres: 0x02FA0000
[15:20:27] Installing hooks:
[15:20:27] Hook command process input installed.
[15:20:27] Hook on dialog response installed.
[15:20:27] Hook init netgame installed.
[15:20:27] Hook QuitGameHook installed.
[15:20:27] All hooks installed.
[15:20:42] [ML] (system) Session started.
[15:20:42] [ML]
MoonLoader v.021-alpha loaded.
[15:20:42] [ML] Developers: FYP, hnnssy, EvgeN 1137

[15:20:42] [ML] © BlastHack Team, 2016
[15:20:42] [ML] https://www.blast.hk/moonloader/

[15:20:42] [ML] (info) Working directory: D:\Games\San Andreas Multiplayer\moonloader
[15:20:42] [ML] (system) Installing pre-game hooks.
[15:20:42] [ML] OK.
[15:20:42] [ML] (system) Loading script ‘D:\Games\San Andreas Multiplayer\moonloader\Script.lua’.
[15:20:42] [ML] (system) Script: Loaded successfully.
[15:20:42] [ML] (system) Loading script ‘D:\Games\San Andreas Multiplayer\moonloader\reload_all.lua’.
[15:20:42] [ML] (system) ML-ReloadAll: Loaded successfully.
[15:20:42] [ML] (system) Loading script ‘D:\Games\San Andreas Multiplayer\moonloader\SF Integration.lua’.
[15:20:42] [ML] (system) SAMPFUNCS Integration: Loaded successfully.
[15:20:42] [ML] (system) Installing post-load hooks.
[15:20:42] [ML] OK.
[15:20:43] Direct3DDevice9 hook installed.
[15:20:44] Hook RakPeer::HandleRPCPacket installed.
[15:20:44] Initializing SAMP data.
[15:20:44] Info initialized.
[15:20:44] Pools initialized.
[15:20:44] Player pool initialized.
[15:20:44] Vehicle pool initialized.
[15:20:44] Chat initialized.
[15:20:44] Input initialized.
[15:20:44] Death list initialized.
[15:20:44] Dialog initialized.
[15:20:44] Misc data initialized.
[15:20:44] Scoreboard initialized.
[15:20:44] RakNet initialized.
[15:20:44] ==========================================
[15:20:44] SAMPFUNCS v5.3.3 release #19 (SA-MP 0.3.7)
Compiled: Aug 8 2016 13:18:13

Author: FYP
Active developers: FYP, SR_Team, EXPORT

Past developers and special thanks:
MogAika, urShadow, legend2360, NarutoUA, Dark_Knight

[16:00:25] > SCM Thread:
hj 00A903D0 00000000 00A561AD true
noname 00A904B0 00000000 00A56B07 true
intman 00A90590 00000000 00A56FDA true
main 00A90750 00000000 00A56091 true
benzo xy 042A87F8 0B7C0048 0B7C0194 true

Источник

Информация Гайд Всё о 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:

Источник

Гайд Урок по регулярным выражениям и использование хука.

Удалённый пользователь 341712

Гость

Сейчас я привел пример регулярных выражения, давай их изучим:

Так же элементы шаблона:

Элементом шаблона может быть:

•Одиночный символьный класс, который соответствует любому одиночному символу из заданного класса;
•Одиночный символьный класс, сопровождаемый ‘*’, что соответствует 0 или большему количеству повторений символов из заданного класса. Эти элементы повторения будут всегда соответствовать самой длинной возможной последовательности.
•Одиночный символьный класс, сопровождаемый ‘+’, что соответствует 1 или большему количеству повторений символов из заданного класса. Эти элементы повторения будут всегда соответствовать самой длинной возможной последовательности.
•Одиночный символьный класс, сопровождаемый ‘-‘, что также соответствует 0 или большему количеству повторений символов из заданного класса. В отличие от *, элементы повторения будут всегда соответствовать самой короткой возможной последовательности
•Одиночный символьный класс, сопровождаемый ‘?’, что соответствует 0 или единственному вхождению символа из заданного класса
•Символ, сопровождаемый ‘^’, что соответствует началу строки

Во всех регулярных выражениях мы использовали знак «+» после регулярки, это означает, что символ может быть не один, от 1 до беск.
В других случаях, когда мы будем использовать знак «*» после регулярки, это будет означать, что символ может быть от 0 до беск.

Во втором и третьем регулярном выражении мы использовали символы, которые значат цифры, мы использовали их для поиска.

Дальше мы записываем в переменные все, что хранится в наших регулярных выражениях используя match.

Когда переменные запишутся, мы получим такой текст в чате: Ник_Ник [Ид] номерОтчета

А если мы хотим получить только номер шаблона? Это делается так:

Т.е. мы убрали скобки, значит регулярные выражения будут работать, но просто записать их нельзя будет, регулярное выражение не будет захватываться переменной.

И все те луа-профи сейчас заметили экранирование, мб всего понемногу?

Знак % является частью всего регулярного выражения, так же при помощи его, можно экранировать символы в регулярном выражении, т.е. мы хотим записать определенный текст в переменную, но после вывода появляется это: Текст, чтобы это исправить мы должны экранировать данный HEX код необходимо провернуть кое какой трюк с экранированием:

Источник

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

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