Как сделать луа скрипт

Обновлено: 05.07.2024

HasAura() проверяет есть ли на вас эта аура.
RemoveAura() снимает эту ауру.

Так же я добавил player:SendBroadcastMessage объяснять что это делает я не буду. Так как это понятно наглядно.

Конечно, вы все равно должны добавить end для "if" и "function".

Итак, теперь у нас есть два intids, давайте посмотрим на нашу функцию сейчас, и добавить последнюю.

function exampleGossipOnSelect(Unit, Event, player, id, intid, code, pMisc)
if (intid == 1) then
player:Teleport(1, -9101.980469, 1612.902832, 21)
player:GossipComplete()
end
if (intid == 2) then
if (player:HasAura(15007) == true) then
player:SendBroadcastMessage("Болезнь после воскрешения была удалена. Будьте осторожны в следующий раз!")
player:RemoveAura(15007)
player:GossipComplete()
else
player:SendBroadcastMessage("У вас нет болезни после воскрешения!")
player:GossipComplete()
end
end
if (intid == 3) then
player:GossipComplete()
end
end

Мы просто добавили в intid 3: GossipComplete(), потому что опция стоит, чтобы закрыть окно.

Теперь посмотрим что у нас получилось.

--[[
Мой первый сценарий!
]]
-- Variables
local NPC_ID = ид нпс

-- On Triggers
function exampleGossipOnTalk(Unit, Event, player)
Unit:GossipCreateMenu(100, player, 0)
Unit:GossipMenuAddItem(0, "Телепорт меня в столицу.", 1, 0)
Unit:GossipMenuAddItem(0, "Удалить болезнь после воскрешения.", 2, 0)
Unit:GossipMenuAddItem(0, "Выход.", 3, 0)
Unit:GossipSendMenu(player)
end
function exampleGossipOnSelect(Unit, Event, player, id, intid, code, pMisc)
if (intid == 1) then
player:Teleport(1, -9101.980469, 1612.902832, 21)
player:GossipComplete()
end
if (intid == 2) then
if (player:HasAura(15007) == true) then
player:SendBroadcastMessage("Болезнь после воскрешения была удалена. Будьте осторожны в следующий раз!")
player:RemoveAura(15007)
player:GossipComplete()
else
player:SendBroadcastMessage("У вас нет болезни после воскрешения!")
player:GossipComplete()
end
end
if (intid == 3) then
player:GossipComplete()
end
end
RegisterUnitGossipEvent(NPC_ID, 1, "exampleGossipOnTalk")
RegisterUnitGossipEvent(NPC_ID, 2, exampleGossipOnSelect)

Молодцы! Вы создали свой первый сценарий функционирования. Или, по крайней мере, с помощью этого учебника. Сохраните его как TeleporterNPC.lua и поместить его в папку scripts. Поставьте нпс и перезагрузите сервер, и наслаждайтесь вашим первым сценарием!

Таким образом, вы знаете, как использовать If и elseif но, используя следующее довольно сложно читать ну и как то однообразно;

if (var == true) then
Weee()
end
if (var == false) then
Awww()
end
if (var == nil) then
WTFITSHOULDNTBENIL()
end

Вместо этого, вы можете заменить 2й и 3й if на elseIf, в зависимости от ситуации. elseIf в основном удаляет последующие if и заканчивается так, что они легко читаются. Вот наглядным пример.

if (var == true) then
Wee()
elseif (var == false) then
Awww()
elseif (var == nil) then
WTFITSHOULDNTBENIL()
end

Как вы можете видеть, это гораздо легче читать, чем предыдущие.

Ну что же. Вот и конец этого учебника. Вторая часть будет более позже.

Так же если вы будете использовать lua скрипты с русскими символами не забываем ставить кодировку UTF-8

Всем удачного изучения этого языка.

Если у вас есть какие то либо вопросы то не стесняйтесь задавайте их.



There is nothing better than .LUA

Благодарность

👍🏻

И да, всем спасибо за 1к, ну и конечно же приятного просмотра)

Ваня Веспанов

Назар Чиж

Коля Руснак


Коля Руснак

Кеша Мегатроллев


Кеша Мегатроллев

TheChampGuess | Уроки Lua SAMP

TheChampGuess | Уроки Lua SAMP запись закреплена

Hellllloooo

😎

Смотрим, учимся, ставим лайки и пишем новые компоненты для своих скриптов с новым роликом))

👍🏻

Все файлы с ролика по традиции в документах группы

Дарья Щур


Дарья Щур

Александр Адаев


Александр Адаев


Николай Фролов

TheChampGuess | Уроки Lua SAMP

TheChampGuess | Уроки Lua SAMP запись закреплена

Сам скрипт будет прикреплен к посту, а также в документе. Кроме того, вы можете ознакомиться с базовой версией функции, с которой и была написана оптимизированная версия текущего скрипта. За предварительную оптимизацию спасибо главному администратору данного сообщества - Vlad Tsurkan

Пока что не знаю, буду ли снимать видео по данному скрипту или нет, если что пишите в комменты. Скрипт имеет функционал включения/выключения, а также смены пола персонажа для отыгровок.

Діма Колодич


Діма Колодич

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

История Lua

Как я сказал выше, Луа был разработан одним из подразделений Католического университета Рио-де-Жанейро. Произошло это аж в далёком 1993 году. Но с того момента луа активно развивался и периодически выходили новые версии Lua – он становился удобнее, быстрее, функциональнее. В данный момент стабильной версией Lua является 5.1, однако уже доступна alpha-версия 5.2.

Типы Lua

В Lua насчитывается восемь основных типов данных:

  • nil (неопределенный)
  • boolean (логический)
  • number (числовой)
  • string (строковый)
  • function (функция)
  • userdata (пользовательские данные)
  • thread (поток)
  • table (таблица)

Lua это язык с динамическим определением типов данных. Любая переменная в Lua может содержать значения любого типа из вышеперечисленных. Все значения в Lua могут храниться в переменных, использоваться в качестве аргументов при вызове функций и возвращаться в виде результата исполнения функции.

Таблицы Lua

Таблицы являются наиболее важным типом данных в Lua – именно таблицы являются основой для хранения и использования пользовательских типов данных: структуры, массивы, списки, множества и т.д. реализуются в Lua именно через таблицы. Таблица в Луа представляет собой набор пар [Ключ, Значение], где в качестве ключа может быть значение любого типа, кроме nil.

Устройство Lua

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

Где используется Lua

Lua, за долгие годы его существования и развития, завоевал сердца многих разработчиков ПО и в наше время он используется в самых разнообразных областях программирования: в скриптинге компьютерных игр (Crysis, Far Cry, Diablo 3, S.T.A.L.K.E.R.), на серверах MMO-игр (World of Warcraft, Аллоды Онлайн), в пакетах графики (например, в Adobe Photoshop Lightroom), в игровых движках и конструкторах игр (INSTEAD), для программирования GUI некоторых приложений (тот же самый Photoshop Lightroom) и во многих других задачах.

Документация по Lua

Вообще, документации, как и примеров использования, в сети достаточно много. Потому я не буду особо углубляться в эту тему. Скажу лишь, что могу посоветовать вам почитать официальную документацию по Lua . Есть и русский вариант . Заодно могу ещё посоветовать вам просмотреть раздел Lua: Papers , где так же можно найти много интересной информации.

Это всё, что я хотел рассказать. Практическое применение Луа, как я уже сказал, мы рассмотрим в следующих уроках.

Ресурсы являются ключевой частью MTA. Ресурс - это папка или zip-архив, содержащий набор файлов, а также meta-файл, который описывает серверу как нужно загружать ресурс и из каких файлов он состоит. Ресурс играет практически ту же роль, что и программа в операционной системе - он может быть запущен и остановлен, при этом несколько ресурсов могут быть запущены одновременно.

Все, связанное со скриптингом, находится в ресурсах. Назначение ресурса и определяет, является ли он модом, картой или чем-либо еще. MTA поставляется с ресурсами, которые вы можете выборочно использовать в своих модах, например, maplimits, позволяющий удерживать игроков в рамках указанных границ карты, или deathpickups, создающий пикапы с оружием.

Contents

Создание работающего скрипта

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

Где находятся все скрипты?

Давайте взглянем на файловую структуру скрипта. Зайдите в папку сервера MTA и пройдите по следующему пути:

Вы увидите множество .zip-архивов, являющихся упакованными пробными скриптами, поставляемыми с MTA DM. Каждый файл - это "ресурс", все они будут распакованы и загружены сервером при его старте. Чтобы создать свой собственный ресурс, просто создайте папку и назовите ее так, как хотите. В нашем случае мы назовем ее "myserver".

Читайте также: