Меню
GTA 5
GTA San Andreas
GTA Online GTA 6 GTA 4 GTA Vice City GTA 3 GTA CTW GTA VC Stories GTA LC Stories Rockstar Classics Модмейкерам
Ads
Любая игра из Steam БЕСПЛАТНО!Антикризисная акция от LibertyCity
1Загружай годные файлы к нам в архив
2Подними денег и отправляйся в магазин
3Выбирай игру в Steam и получи ее бесплатно
Прочее
Топ коммент за вчера
Подписывайся!

Введение в скриптинг MTA Lua


Введение в скриптинг MTA Lua    
Здравствуйте. В этом уроке мы познакомимся с таким программированием, как Lua. Данный учебник будет написан на простом и понятном языке, чтобы не усложнять жизнь начинающим скриптерам. В введении в курс Lua я буду сравнивать аналогичные функции с SA-MP Pawn.


Введение в скриптинг MTA Lua


Содержание:

1) Client’n’Server Sides (2 стороны сервера – C-Сторона и S-Сторона) – Введение
2) Иерархическое строение сервера (meta.xml)
3) Администрирование (ACL)
4) Аргументы игрока (source, thePlayer, getLocalPlayer())
5) Вывод (Окончание учебника)
6) Дополнительный материал


Введение

Наша статья прямо связана с сетевой игрой для GTA San Andreas – Multi Theft Auto. Начну с того, что в MTA Lua вам предоставлены 2 стороны – Server (связана с функциями и действиями в основном с игроками и игровым миром) и Client (связана с функциями и действиями, не связанными с игроком). На S-Стороне пишут в основном системы, которые непосредственно связаны с игроком, например система команд. На C-Стороне пишут диалоговые окна (GUI), изображения на экран (dxDraw). Про dxDraw могу сказать то, что он немного похож на TextDraw из SA-MP, но имеет функцию загрузки любого выбранного вами изображения (на примере рабочего стола в моей системе Lunix OS).


Иерархическое строение сервера (meta.xml)

Сервер МТА имеет иерархическое строение, а именно один каталог принадлежит другому, а тот в свою очередь принадлежит третьему. Главным каталогом является папка или архив с названием ресурса (не имеет значения, как её назвать) в папке /MTA San Andreas Ver/server/mods/deathmatch/resources/

в котором в свою очередь обязательно должен находится файл meta.xml, где хранятся данные о ресурсе (тип, название ресурса, автор, версия, дочерние файлы (изображения, модели, текстуры, lua файлы ресурса, и другое)).
В МТА присутствует функция отделения карты/ресурса от главного запущенного (им является ресурс с пометкой «Gamemode» в файле meta.xml), следовательно, можно выгружать и загружать ресурс или карту прямо на сервер, не перезагружая при этом сервер.

Так-же тут присутствует возможность использовать функции из других ресурсов, например есть 2 ресурса – «admin» (система администрирования) и «TvoyRes». Вашим ресурсом является «TvoyRes». Вы можете прямо использовать функции из ресурса «admin», ничего не подгружая (кроме директории ресурса в meta.xml)


Администрирование (ACL)

Поговорим об администрировании сервера MTA.

В МТА администратор ресурса зовётся resourceRoot (некоторая связь с администрированием систем Linux). Главными resourceRoot’ами являются командная строка запуска сервера, и игровая консоль (вызывающаяся на символ «~» при английской раскладке, или клавишей F8). Игровая консоль от командной строки сервера отличаются тем, что в консоли можно вводить команды ресурсов (в командной строке нельзя), и входить в режим resourceRoot в консоли не нужно.

Давайте сравним типы администрирования Rcon (SA-MP) и resourceRoot, или просто Root (MTA):

- В SA-MP Rcon может войти любой игрок, зная определённый единственный пароль для входа.
- В МТА Root могут войти только зарегистрированные на сервере пользователи, имеющие привилегии, указанные в специальном файле.

Это показывает то, что в МТА по стандартным установкам сервера последних версий уже имеется система аккаунтов, нежели в SA-MP, которую, если нужно, можно написать.

В МТА так же имеется система уровней администрирования:

- Everyone (Default) – зарегистрированные аккаунты, они сюда после регистрации не попадают, их нужно записывать самому.
- Moderator – модератор, с ограниченным набором команд.
- SuperModerator – модератор, имеющий больше привилегий.
- Admin – администратор, который имеет доступные привилегии модератора и супер-модератора с добавлением некоторых полномочий.
- RPC – связан с доступом в интернет, имеет только функцию callRemote, которая связана с загрузкой деталей из интернета.
- MapEditor – имеющий доступ к редактированию карты (если загружен скрипт редактирования (с сервера, не имеющий отношения к Map Editor в меню игры))
- raceACLGroup – многие знают, что МТА с начала существования начинала с серверов, связанных с гонками (нежели SA-MP был полон DM серверов), эта группа связана с администрированием Race ресурсов (думаю данная группа не важна).
- Console – resourceRoot всего сервера, имеющий все полномочия вместе взятых групп.

По сравнению с SA-MP, в МТА в сервер встроены команды для администраторов.

Использование функций ACL (администрирования) в скриптинге выглядит не так просто, потому что для того, чтобы найти администратора на сервере через скрипт, нужно ввести поиск полномочий пользователя. Например, функция поиска объекта, имеющего доступ к чему-либо (только S-Сторона):

hasObjectPermissionTo(object, what_is_to, bool)


И функция поиска объекта в ACL группах (поиск по группам администрирования) (только S-Сторона):

isObjectInACLGroup(object, acl_group)


Рассмотрим эти функции на примере:

if hasObjectPermissionTo(source, “function.addBan”, true) then ВАШ КОД end


Эта функция проверит, доступна ли у игрока source доступ к функции addBan (доступен администраторам и выше)

if isObjectInACLGroup(“user.”..getPlayerName(source), aclGetGroup(“Admin”)) then ВАШ КОД end


Данный код найдёт пользователя в группе Admins. Так как в файле администраторов игрок прописывается через user.name, то и поиск его тоже надо сделать через user. Функция getPlayerName покажет имя игрока, и, следовательно, исходный запрос будет выглядеть как user.name. Функция aclGetGroup ищет по группе администрирования, указанной в аргументе. Важно вводить группу такой, какая она есть (Admin, SuperModerator, Console, MapEditor), соблюдая регистр.

Это конечно выглядит и понимается сложней, чем то же самое в SA-MP:

if IsPlayerAdmin(playerid){ КОД }
return 1;



Аргументы игрока (source, thePlayer, getLocalPlayer())

Раз дело пошло о аргументе Source, расскажу о нём.

В МТА есть несколько аргументов на поиск игрока. Самым основным является source – он доступен для обеих сторон (S- и C- сторон), и определяет любого «раздражителя» (например, если объект выполняет действие с source, то в выполнении source’ом является именно этот объект, но не какой-либо левый игрок). Так же присутствует аргумент thePlayer, определяющий игрока, работает в S-Стороне. Ещё присутствует функция getLocalPlayer(), определяющая игрока в пределах C-Стороны.


Вывод (Окончание учебника)

На этом я заканчиваю данный урок. В заключении я добавлю, что МТА Lua является упрощённым языком, и пишется проще, чем SA-MP Pawn, но данный язык усложнён своими функциями, но именно они упрощают вид языка.


Дополнительный материал

Для тех кто думает переходить с Pawn в Lua (я всеми руками за) я могу предложить переменную, которая оставит вам привычный playerid.

Для S-Стороны:

playerid = source


Для C-Стороны:

playerid = getLocalPlayer()


Данный код можно писать в начале ресурса

Как редактор ресурсов, советую вам использовать MTA Script Editor.
Понравилась статья?
, · Написать статью


Проголосовать за статью "Введение в скриптинг MTA Lua"
Голосов
 ПлохоПриемлемоСреднеХорошоОтлично 
Рейтинг
5350%

Патч 1.0.3.0 (EN)

21 марта 2009 GTA 4
Патч 1.0.3.0 для английской версии GTA 4 исправляет множество различных проблем, включая проблемы с графикой, мультиплеером и системой управления. Кроме того, увеличена производительность игры.Полный список изменений:GRAPHICS:Interior Lights for ATI ...

GTA San Andreas - Camera Hack v1.2 для windows 7

13 мая 2010 GTA San Andreas
GTA San Andreas - Camera Hack v1.2 для windows 7Наверное многие столкнулись с проблемой что, очень хорошая программа GTA San Andreas - Camera Hack, не работает под windows 7.Проблема в том что из 7-ки зачем то, по удаляли необходимые библиотеки.Но эт...

San Andreas HRT Pack (v1.3 SF)

29 ноября 2010 GTA San Andreas
San Andreas HRT Pack — глобальная модификация для GTA: San Andreas, которая существенно улучшает качество графики, заменяя большую часть старых текстур высококачественными аналогами в высоком разрешении. Тысячи текстур местности были переработаны и о...

Autumn Mod 2.0 HRT

2 декабря 2010 GTA San Andreas
Autumn Mod — осенняя модификация для GTA: San Andreas, которую можно устанавливать как поверх оригинальной игры, так и поверх глобального мода HRT Pack (в таком случае будет больше нововведений). Autumn Mod меняет спрайты травы, текстуры травы на нек...

Вторжение пришельцев

5 декабря 2010 GTA San Andreas
К Сан-Андреасу движутся огромные инопланетные корабли! ФОТО.Три гигантских неопознанных летающих объекта, длина которых составляет десятки километров, движутся по направлению к штату Сан-Андреас, сообщил журналистам некто Истина (The Truth), кашляя, ...

GreenEffects Mod (v1.0)

8 декабря 2010 GTA San Andreas
Green Effects Mod (v.1)-глобальная модификация которая включает:Полностью переработанный файл grass (трава в GTA).Встроенную библиотеку ENBSeries благодаря ей в игре появятся реалистичные отражения на автомобилях, станет более реальной вода и другие ...

Winter Vacation 1.0

25 декабря 2010 GTA San Andreas
Winter Vacation — глобальная модификация, которая приносит в Сан-Андреас атмосферу зимних морозов и надвигающегося Нового года.Несколько областей штата полностью присыпаны снегом: морозы коснулись города Бэйсайд, который расположен в горах, порядочно...

Бар Сальери из «Mafia»

25 декабря 2010 GTA San Andreas
Бар Сальери — заведение из отличнейшей компьютерной игры «Mafia», прекрасно знакомое всем игрокам. Здесь проходили совещания семьи Сальери и решались судьбы противников клана, сюда Томми обратился за помощью и не сделай он этого, все могло бы быть ин...


Информация
Чтобы оставлять комментарии, необходимо зарегистрироваться на сайте.

10
комментарий написан, 13 июня 2017, 17:23
#
Dinar1998
Пользователь
Статус:
Комментариев:36
Друзей:0
Репутация: 0
Деньги: 0$
Награды:: 2


Активность на сайте
6%
#
0
Source указывает не игрока, а то, что вызвало событие.
Например при срабатывании события onVehicleDamage source'ом будет не игрок, а машина, которая вызвала это событие(в данном случае та, которая повредилась).
А, например, при вызове события onPlayerWasted Source'ом будет игрок, который вызвал это события(в данном случае тот, который умер).
thePlayer - нет такой функции, это лишь один из вариантов названия переменной.
Ребят, лучше читайте Mta Wiki, там больше полезного, хоть и большинство на английском.

Dinar1998 22.06.2017, 15:15:44

--------------------

9
комментарий написан, 18 июня 2015, 20:48
#
Pacr656
Пользователь
Статус:
Комментариев:2
Друзей:0
Репутация: 0
Деньги: 0$
#
0
Мдаа.. Много объяснил

--------------------

8
комментарий написан, 26 января 2014, 20:09
#
Mr.Konstantinos
Пользователь
Статус:
Комментариев:221
Друзей:3
Репутация: 5
Деньги: 0$
Награды:: 7
GForums: Mr.Konstantinos

Активность на сайте
8%
#
0
Я тоже почитаю как-нибудь.[6](хотя неа)

--------------------

7
комментарий написан, 23 января 2014, 10:24
#
S7en
Пользователь
Статус:
Комментариев:33
Друзей:7
Репутация: 0
Деньги: 0$
Награды:: 1
GForums: S7en

Активность на сайте
2%
#
0
Очень интересно. Почитаю как-нибудь. [5]

--------------------


--------------------

6
комментарий написан, 16 января 2014, 16:47
#
TheInsaneKiller
VIP-пользователь
Старший проверяющий
Статус:
Комментариев:444
Друзей:87
Репутация: 170
Деньги: 16$
Награды:: 8


Активность на сайте
34%
#
0
Новичкам пригодится)

--------------------


--------------------

5
комментарий написан, 6 января 2014, 16:44
#
bmynik
Пользователь
Статус:
Комментариев:58
Друзей:3
Репутация: 0
Деньги: 0$

Активность на сайте
2%
#
0
Очень интересно. Почитаю как-нибудь. [4]

--------------------

4
комментарий написан, 20 декабря 2013, 17:00
#
AriosJentu
Пользователь
Статус:
Комментариев:1945
Друзей:14
Репутация: 71
Деньги: 0$
Награды:: 7
GForums: Arios Jentu

Активность на сайте
49%
#
0
Я тут немного ошибся - в консоли обязательно нужно входить в root, а в командной строке сервера не надо; еще информация про гонки недостоверна, с самой первой версии - мта являлся дм и так и назывался - Multi Theft Auto Deathmatch

Сообщение отредактировал DarthPoezd 20.12.2013 в 17:01:50

--------------------


--------------------

3
комментарий написан, 19 декабря 2013, 18:54
#
Rockstar_man
Пользователь
Статус:
Комментариев:76
Друзей:10
Репутация: 1
Деньги: 0$

Активность на сайте
6%
#
0
Очень интересно. Почитаю как-нибудь. [3]

--------------------

2
комментарий написан, 18 декабря 2013, 16:02
#
Monyka_mouse
Пользователь
Статус:
Комментариев:137
Друзей:32
Репутация: 11
Деньги: 0$
Награды:: 2
GForums: Monyka_mouse

Активность на сайте
10%
#
-1
Очень интересно. Почитаю как-нибудь.(2)


--------------------


--------------------

1
комментарий написан, 17 декабря 2013, 22:49
#
iTz_XG4М3R
Забанен
Статус:
Комментариев:2296
Друзей:364
Репутация: 0
Деньги: 0$
Награды:: 13
GForums: iTz_XG4M3R

Активность на сайте
79%
#
-2
Очень интересно. Почитаю как-нибудь.

--------------------


--------------------

Ad
Опрос
Играете ли вы в GTA Online?
Играю
Не играю совсем

Подсчет GTAшников

Рейтинг@Mail.ru





Change language


Помогите нам перевести LibertyCity на другой язык!