[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: volk, WhiteDZ  
Форум » Статии и Уроки МТА » Скриптинг (Scripting) » Moving Objects (Анимация движения обьекта)
Moving Objects
IvanWhite
77 Оффлайн
Вторник, 18.01.2011, 01:21:09 | 1
Группа: Пользователи
Репутация:

Я думаю этот урок будет полезен всем кто хочет зделать движущиеся обьекты по заданной траектории!

Начнём с настроек Meta-файла:

1. Откройте папку с вашей картой
2. Найдите там файл Meta.xml
3. Откройте файл Meta.xml (Лучше с помощью Notepad)
4. На следующей строке, после тега <meta> вставьте этот код (Предварительно нажав клавишу "TAB" (не обязательно)):

Code
<script src="server.lua" type="server" />

5. Теперь сохраните ваш Meta-файл
6. Теперь можете спокойно закрывать файл Meta.xml

Теперь создадим файл, в который будем записывать нужный нам код:

1. После того, как вы сохранили Meta-файл - создайте новый документ
2. После того, как вы создали новый документ В Верхнем меню найдите пункт "Синтаксис"
3. Наведите на английскую букву "L", после чего выберите там пункт "Lua"
4. Сохраните этот файл в папку с вашей картой, с названием "server"

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

1. Нам требуется создать новую переменную с названием "start", чтобы записать туда всё, что нам нужно. Поэтому в первой строчке мы записываем этот код:

Code
function start ()

Сейчас мы разберём, что это всё означает:
- function - Объявляем, что дальше идёт новая переменная.
- start - Название переменной. Вы можете изменить название, но в дальнейшем вы должны будете писать вместо слова "start" то слово, которое вы выберите (Примечание: Название переменной должно быть написано по латинскими буквами и не должно содержать пробелов)

2. После того, как мы написали этот код, нам нужно поставить туда всё, что нам потребуется в дальнейшем. Тоесть:
- Нам требуется указать, когда объект начнёт двигаться (Через какое время после старта карты), поэтому мы напишем этот код (Предварительно нажав клавишу "TAB" (не обязательно)):

Code
setTimer(objectm, 5000, 0)

- setTimer - Название переменной. Примечание: Эту часть переменной нельзя изменять, всё что указано ниже в этой переменной можно.
- objectm - Название переменной, для которой мы указываем все значения. (В нашем случае это "objectm", вы можете изменить название, но в дальнейшем вы должны будете писать вместо слова "objectm" то слово, которое вы выберите ). Примечание: Название переменной должно быть написано латинскими буквами и без пробелов.
- 5000 - Время, за которое объект будет проходить нужное расстояние. Примечание: Время указывается в миллисекундах (5000 = 5 секунд).
- 0 - Количество повторений движения объекта. Примечание: 0 = Бесконечно.

3. После того, как вы написали код - перейдите на следующую строку
4. Теперь нам требуется создать новую переменную, для упрощения управления движения объектом (Чтобы движения объектом выполнялось в том случае, когда значение этой переменной равно нужному нам числу). Напишем следующий код:

Code
status = 1

Теперь мы разберём что мы написали:
- status - Название переменной, для которой мы поставили значение. ( Вы можете изменить название, но в дальнейшем вы должны будете писать вместо слова "status" то, которое вы выберите ).
- 1 - Значение переменной, которую мы написали ранее. ( Вы можете изменить название, но в дальнейшем вы должны будете писать вместо цифры "1" то, что вы выберите )

5. Теперь нам необходимо создать объект на карте, который мы собираемся двигать. Для этого на следующей строке мы напишем этот код:

Code
objectone = createObject(3458,X-Позиция,Y-Позиция,Z-Позиция,rotX,rotY,rotZ)

Теперь мы разберём этот код:
- objectone - Имя объекта, которое мы будем указывать в дальнейшем ( Вы можете изменить название, но в дальнейшем вы должны будете писать вместо слова "objectone" то, что вы выберите ).
- createObject - переменная добавления объекта на карту. Примечание: Её изменять нельзя!
- 3458 - Номер объекта, который мы собираемся двигать.
- X-Позиция - Положение объекта на оси X
- Y-Позиция - Положение объекта на оси Y
- Z-Позиция - Положение объекта на оси Z
- rotX - Вращение объекта по оси X (Не перемещение!)
- rotY - Вращение объекта по оси Y (Не перемещение!)
- rotZ - Вращение объекта по оси Z (Не перемещение!)
6. После того, как вы всё написали - перейдите на следующую строчку
7. Напишите слово - end . (Предварительно убрав все пробелы на строчке)

Первая переменная готова, теперь перейдём к следующей:

1. Пропустите две строчки от предыдущей переменная.
2. Напишите этот код:

Code
function objectm ()

Сейчас мы вспомним, что всё это значит:
- function - Объявляем, что дальше идёт переменная.
- objectm - Название переменной (Возможно вы его изменили в предыдущих действиях). Вы можете изменить название, но в дальнейшем вы должны будете писать вместо слова "start" то слово, которое вы выберите (Примечание: Название переменнойи должно быть написано по латинскими буквами и не должно содержать пробелов)
3. Теперь мы должны поставить условие, при которое объект будет двигаться. Для этого на следующей строчке напишем этот код (Предварительно нажав клавишу "TAB" (не обязательно)):
Code
if status == 1 then

Сейчас мы разберём, что всё это означает:
- if - Это слово пишется тогда, когда мы объявляем условие, при котором будет что-либо выполняться.
- status == 1 - Это условие, при котом будет выполняться код, написанный вами ниже. Мы с вами ранее написали код, в котором указывается, что слово "status" ровно "1" Примечание: Два знака "="обязательно!
- then - Если условие выполнено, то с помощью этого значения будет выполняться код, написанный вами ниже.
4. Теперь, после того как условие выполнено, нам требуется заставить нужный нам объект двигаться. Теперь нам нужно написать следующий код:
Code
moveObject (objectone, 5000, movX, movY, movZ)

Теперь мы разберём написанный нами код:
- moveObject - переменной, при помощи которой мы заставляем двигаться нужный нам объект. Примечание: Изменять нельзя!
- objectone - Название объекта, который мы писали ранее. (Возможно вы его изменили).
- 5000 - Время, за которое объект будет проходить нужное расстояние.
- movX - Координаты по оси X, куда должен будет переместиться объект.
- movY - Координаты по оси Y, куда должен будет переместиться объект.
- movZ - Координаты по оси Z, куда должен будет переместиться объект.
Далее будет всё писаться для тех, кому нужно чтобы объект двигался после передвижения на нужную нам точку в другое место (Например обратно на начальную поцизию). Если вам это не нужно, то переходите к пункту №9.
5. Теперь нам требуется чтобы объект не стоял на месте, а двигался на следующую позицию. Для этого нам требуется изменить значение переменной "status" на 2. Для этого напишем такой код (Предварительно перейдя на новую строку):
Code
status = 2

Теперь мы вспомним что это такое:
- status - Название переменной, для которой мы поставили значение. ( Вы можете изменить название, но в дальнейшем вы должны будете писать вместо слова "status" то, которое вы выберите ).
- 2 - Значение переменной, которую мы написали ранее. ( Вы можете изменить название, но в дальнейшем вы должны будете писать вместо цифры "2" то, что вы выберите ).
6. Теперь нам нужно поставить новое условие, при котором объект будет двигаться в новом направлении. Для этого напишем этот код:
Code
elseif status == 2 then

- elseif - Это слово пишется тогда, когда мы объявляем условие, при котором будет что-либо выполняться.
- status == 2 - Это условие, при котом будет выполняться код, написанный вами ниже. Мы с вами ранее написали код, в котором указывается, что слово "status" ровно "2" Примечание: Два знака "="обязательно!
- then - Если условие выполнено, то с помощью этого значения будет выполняться код, написанный вами ниже
7. Теперь нам требуется подвинуть объект туда, куда нам требуется. Для этого напишем этот код:
Code
moveObject (objectone, 5000, movX, movY, movZ)

Теперь мы разберём написанный нами код:
- moveObject - переменной, при помощи которой мы заставляем двигаться нужный нам объект. Примечание: Изменять нельзя!
- objectone - Название объекта, который мы писали ранее. (Возможно вы его изменили).
- 5000 - Время, за которое объект будет проходить нужное расстояние.
- movX - Координаты по оси X, куда должен будет переместиться объект.
- movY - Координаты по оси Y, куда должен будет переместиться объект.
- movZ - Координаты по оси Z, куда должен будет переместиться объект.
8. Теперь нам требуется чтобы объект двигался в первоначальном направлении. Для этого мы вернём функции "status" первоначальное значение - "1". Вот код ( Не забудьте перейти на новую строку ):
Code
status = 1

Теперь мы вспомним что это такое:
- status - Название переменной, для которой мы поставили значение. ( Вы можете изменить название, но в дальнейшем вы должны будете писать вместо слова "status" то, которое вы выберите ).
- 1 - Значение переменной, которую мы написали ранее. ( Вы можете изменить название, но в дальнейшем вы должны будете писать вместо цифры "1" то, что вы выберите ).
ВАЖНО: Если вы хотите, чтобы объект не возвращался на старое место, а двигался на новое, то поставьте вместо цифры "1" другое число (какое угодно) и делайте всё также, как в предыдущих действиях.
9. После выполненных действий перейдите на новую строчку и напишите слово - end .
10. После того, как вы написали слово "end" - перейдите на новую строчку и напишите слово "end" ещё раз.
11. Затем пропустите две строки и напишите этот код:
Code
addEventHandler ( "onResourceStart", getRootElement(), start )

Я думаю вам уже не понадобится знать, что это значит всё, но знайте: последнее слово "start" - это название той переменной, которую мы писали в начале.
12. Сохраните ваш документ. ( Нажмите на иконку дискеты, она третья по счёту в панели инструментов и выглядит так: )

Вот такой код у вас должен был получиться (Только с вашими значениями местами):

Code
function start ()
  setTimer(objectm, 5000, 0)
  status = 1
  objectone = createObject(3458,2488.9965820313,-1667.4375,13.86528015136,0,0,0)
end

function objectm()
  if status == 1 then
   moveObject (objectone, 5000, 2488.9965820313, -1667.4375, 30.86528015136)
   status = 2
  elseif status == 2 then
   moveObject (objectone, 5000, 2488.9965820313, -1667.4375, 13.86528015136)
   status = 1
  end
end

addEventHandler ( "onResourceStart", getRootElement(), start )

Примечания:
- Чтобы проще было найти то, что вам нужно - после открытия новой переменной ( Тоесть после таких переменных как: function, if, elseif ) на следующей строке нажмите один раз клавишу "TAB", а когда пишите слово "end" , то убирайте этот пробел. Таким образом у вас будет получаться что-то типо "дерева" переменных.
- Каждый новый код, написанный выше, должен писать с новой строки. (Смотрите пример кода, написанный выше)

 
Jpg-45
2 Оффлайн
Среда, 09.02.2011, 10:54:14 | 2
Группа: Пользователи
Репутация:

помогите пожалуйста. Вот мн нужно сделать ворота для базы. Как сделать чтобы объект открывался (двигался) только по приближению определённого человека (например админа, или члена банды)
 
volk
71 Оффлайн
Среда, 09.02.2011, 16:21:54 | 3
Группа: Администратор
Репутация:

мда на сайте всё больше и больше нубов! sad

смотри вики http://wiki.multitheftauto.com/wiki/Main_Page



скриптер в мта ^_^

создаю Zombie mod версия 2.6.0
IP mtasa://109.95.210.20:22043 кликни и попадёшь на сервер
название: Advanced Zombie Mod

если уебался люби и кататься. :D

хочешь отблагодарить? ставь + в репу или в награду :)

хочешь классные скрипты для своего сервера? пиши в лс оплата веб мани или яндекс деньги.

 
VeTaL
5 Оффлайн
Пятница, 08.04.2011, 20:55:40 | 4
Группа: Пользователи
Репутация:

ну некоторые не супер скриптеры, и ненадо называть их нубами! dry
 
MaZaFaKa-killer
1 Оффлайн
Понедельник, 27.02.2012, 15:25:37 | 5
Группа: Пользователи
Репутация:

блин у меня ворота не двигаються помогите плз вот скайп serega-45region weep
 
sana65
1 Оффлайн
Воскресенье, 22.07.2012, 01:25:57 | 6
Группа: Пользователи
Репутация:

спасибо тебе,ты очень хороший человек!!!

Добавлено (22.07.2012, 01:25:50)
---------------------------------------------
MaZaFaKa-killer, могу показать в скайпе как это зделать!!

Добавлено (22.07.2012, 01:25:57)
---------------------------------------------
MaZaFaKa-killer, могу показать в скайпе как это зделать!!

 
Форум » Статии и Уроки МТА » Скриптинг (Scripting) » Moving Objects (Анимация движения обьекта)
  • Страница 1 из 1
  • 1
Поиск: