ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:30
Установка Roblox Studio и начальные шаги:
  • 1. Для запуска Roblox Studio необходимо скачать программу с сайта create.roblx.com и установить её на компьютер
  • 2. После установки программы рекомендуется создать новый опыт (плейс), используя шаблон Base Plate
  • 3. Опубликовав созданный проект через опцию «publish to roblox», игра сохраняется на сервере Roblox и становится доступной другим пользователям
00:01:48
Интерфейс Roblox Studio и работа с элементами:
  • Участники обсудили интерфейс программы Roblox Studio и возможности работы с объектами (партами)
  • Разобраны функции перемещения, изменения размера и поворота объектов, использование интерфейсов и инструментов
  • Рассмотрены основы программирования на языке Lua, создание простых скриптов и вывод текста в консоль
00:09:59
Переменные и их использование:
  • 1. Рассматривались различные способы работы с переменными (локальные переменные, строковые значения, числовые значения, булевы выражения)
  • 2. Изучалась работа с условиями if/else, включая проверку количества ресурсов (монет), возраста игроков и имен персонажей
  • 3. Показано использование булевых операторов сравнения (`==`, `!=`) и арифметических операций (`+`, `-`, `*`), а также применение переменных для хранения значений и объектов
00:45:09
Циклы For и While:
  • Создан новый скрипт с использованием циклов `for` и `while`, позволяющий многократно выводить строки текста («Привет, бро», «Друг») заданное количество раз (от 10 до 100)
  • Реализован алгоритм изменения прозрачности объекта (переменной `part`) с помощью переменных и функций задержки (`wait`), где прозрачность изменяется плавно от 0 до 1 (полная непрозрачность), используя деление числа на 100
  • Разработан бесконечный цикл `while true`, использующий проверку условия (значение переменной `health` больше нуля), и реализована возможность восстановления здоровья игрока после достижения нулевого уровня
01:05:24
Функции и их применение:
  • Участники обсудили создание новых функций и скриптов, включая функции `hello`, `goodbye` и другие
  • Созданы функции `hello`, `world`, `goodbye`
  • Показано применение функций с параметрами (например, `name`, `age`) и вывод результата вызова функции
  • Рассмотрено использование оператора `return` для возврата значений из функций
  • Обсуждались встроенные функции Roblox, такие как `random()`, и работа циклов (`for`)
  • Использован оператор цикла `for` для многократного вывода случайных чисел
  • Показана возможность задания диапазона случайных чисел (от 1 до 100, от 100 до 200 и др.)
  • Участники разобрали базовые принципы работы функций и операторов, продемонстрировали пошагово выполнение примеров кода и исправление ошибок
01:20:05
Использование встроенных функций Roblox:
  • Обсудили работу встроенных функций печати чисел с плавающей точкой в Python
  • Рассмотрели поведение функции округления числа вверх и вниз (округление в большую и меньшую стороны)
  • Решено продолжить изучение строковых методов и функций во второй части встречи
01:22:57
Создание объектов и управление ими:
  • Участники разобрали работу встроенных функций Roblox, включая создание объектов (part), изменение их свойств (размер, положение, цвет)
  • Освоена функция клонирования объектов (cloning) с указанием родителя (parenting)
  • Создано десять уникальных объектов (parts) с разными цветами и размерами с использованием циклов и случайной генерации значений
01:29:24
Работа с событиями и ивентами:
  • Разработана система работы с хитбоксами, позволяющая отслеживать прикосновение игрока к определённым частям игрового объекта (например, руке или голове)
  • Реализована работа с GUI элементами, такими как текстовые кнопки, позволяющие отслеживать клики мыши и перемещения курсора над кнопкой
  • Создан механизм собственных ивентов (событий), позволяющий разработчикам самостоятельно инициировать и обрабатывать игровые события, такие как смерть персонажа или взаимодействие с предметами
01:47:53
Создание парт и работа с ними:
  • Определены параметры цвета и случайной позиции для парт-объектов (Part point color = From color 3, Part point random от 0 до 255)
  • Разработан скрипт для поиска и удаления парт-объектов через проверку наличия файла партс Файфер чайлд
  • Проведена демонстрация работы скриптов по созданию и удалению парт-объектов
01:51:02
Работа с таблицами и словарями:
  • Разработан новый скрипт под названием «leader stats», предназначенный для хранения статистики игроков (например, уровень здоровья, количество денег, ранг)
  • Созданы переменные для хранения отдельных элементов статистики игрока, таких как здоровье (`power`), деньги (`cash`) и ранг (`rank`)
  • Реализована возможность изменения и добавления новых игровых объектов через создание скриптов, использующих функции `local`, `print`, `table.insert`, `table.remove`, `for`, `if`
02:22:52
Различия между локальными и серверными скриптами:
  • Серверные скрипты выполняют операции, влияющие на всех игроков одновременно, тогда как локальные скрипты работают только для одного игрока
  • Скрипты, написанные на сервере, становятся невидимыми (прозрачными) после перемещения на сервер, их нельзя увидеть или изменить на стороне клиента
  • Логика игры и вычисления выполняются исключительно на сервере, изменения на клиентской стороне влияют только визуально и не оказывают влияния на игровой процесс
02:29:49
Ремонт ивенты и взаимодействие клиента и сервера:
  • Создан новый удалённый ивент `ремокс` и папка для хранения скриптов
  • Разработана структура взаимодействия между сервером и клиентом с использованием событий (иент)
  • Реализована передача данных между сервером и клиентом, включая передачу переменных и таблиц
02:39:10
Использование вектора 3 и Си фрейма:
  • Разобраны принципы работы вектора `Vector3` в Roblox Studio, включая использование для перемещения объектов и изменения их размеров и ориентации
  • Показана разница между использованием `Position` (позиция объекта) и `CFrame` (позиция и поворот), продемонстрировано преимущество последнего метода (`CFrame`) в точности и удобстве копирования позиций и поворотов объектов
  • Рассмотрена возможность реализации простого движения и вращения объектов с помощью циклов и функций, использующих `CFrame`, а также создание мини-игры с применением полученных знаний
03:11:49
Мини-игра с кликами и реберсами:
  • Разработан игровой цикл (game loop), включающий две партии, где первая партия увеличивает клики, а вторая партия активируется после кликов первой партии
  • Реализован механизм получения удвоенных кликов через использование ребордов (реберс), стоимость которых увеличивается ступенчато (от 100 до 8000 кликов)
  • Создан интерфейс (GUI) с элементами отображения количества кликов и ребордов, привязанных к переменным лидера статистики
0: Всем привет. Вы попали на 1 часть курса, в котором мы будем изучать роблокс студио. Со стороны программирования. В 1 части мы базово ознакомимся с интерфейсом, напишем 1 скрипт и в конце создадим свой простенький симулятор. После просмотра 1 части ты самостоятельно сможешь создавать свои
1: Несложные игры, которыми сможешь похвастаться друзьям или даже опубликовать, но это будет при условии, что ты будешь практиковаться, писать код вместе со мной. Также в моём telegram канале будут задания, выполнив которые, ты закрепишь знания. Если нравится подобный формат, прошу поддержать меня Лайком подпиской на
2: YouTube и telegram канал. Итак, для начала давайте скачаем сам roblox studio мы пишем роблокс студио в донлоуд и заходим на вот этот самый 1 сайт create роблокс точка ком тыкаем тут вот есть минимальные требования, рекомендованные ну, я думаю.
3: Всех потянет, нажимаем кнопочку данло, у вас начнётся скачка там. Да, да, да. Нет, нет, нет, тыкаете все, я не помню че там уже должно быть. И после того, как у вас все скачалось, он у вас появится или на рабочем столе, или вот тут в меню пуски, или
4: Даже сам запустится. После того, как мы открыли роблокс студио, мы нажимаем темплейтс или new experience, если нажали темплейтс, нажимаем Бейс плейт. Так вот, наш плейс создался, и у нас сейчас есть 2 варианта либо продолжить, так, либо мы можем нажать
5: File и safe to roblox, или publish to roblox? Да, мы нажмём паблито роблокс, тут дадим название нашей игре и нажмём крейт. Если мы вот это сделаем, то наша игра будет храниться на серверах роблокса, а так
6: Как она у нас хранится на нашем компьютере. И если мы вдруг забудем сохранить, да, то у нас может ничего не сохраниться, если вдруг зависнет там че то, да, у вас может что-то не сохраниться. Поэтому я рекомендую сделать publish to roblox. Мы Нажи.
7: Тут паблиш роблокс даём какое-то название, например my game и нажмём криейт так давайте разберём интерфейс что у нас тут вообще находится тут мы видим у нас есть file edit view плагинс тест виндоу хелп, а тут у нас
8: Home, аватар юай скрипт модел плагин и тут это я уже сам добавил то есть на плюсик можно нажать и добавить что-то своё хорошо давайте разберём хоум у нас здесь есть select давайте я создам парт и теперь этот парт я могу вот так переме.
9: Да, или, например, наш спаун локейшн я могу также перемещать с помощью селекта муф. Это практически тоже самое, но только мы перемещаем строго по осям я вот могу перемещать влево, вправо, да, вперёд, назад и
10: Вверх вниз. То есть я перемещаю по осям икс игрек и зет следующее. Это у нас идёт скейл, я могу вот так вот делать да, я могу наш парт увеличить вот так вот или
11: Могу его, наоборот, ещё уменьшить как я делаю вот эту отмену я нажимаю ctrl z, то есть я увеличиваю, нажал ctrl z, и у меня вот так обратно вернулось давайте ещё поменяем чуть чуть размер вот я могу менять по си игрек могу менять.
12: По оси x и могу менять по оси зет ротейт, что это у нас такое, это у нас повороты, то есть здесь у нас измеряется в углах оно вот я могу повернуть на 30 градусов, да, могу.
13: Повернуть на 90 градусов и могу повернуть на 180, на 360. Да, и так я могу делать с любым партом. Вот, например, я могу хоть что поворачивать по любым
14: Следующий это у нас трансформ, это можно сказать, 3. В 1 я могу и поворачивать, да, могу и перемещать, могу изменять.
15: Размер и вообще делать хоть что с ним это считайте 3 в 1, то есть все вот эти вот инструменты в 1 теперь разберём. Давайте вот это что это у нас такое вот смотрите, я могу перемещать вот так его да, давайте тут лучше я могу перемещать его вот так плавненько.
16: Да, но если я вот здесь поставлю, например, пятёрочку, то он у меня будет передвигаться вот так резко теперь, то есть на 5 метров. Ну тут не метры тьюсы, но представим, что метр, он у меня перемещается только на 5 метров, на 5 метров вперёд.
17: Или на 5 метров назад. А если я здесь поставлю единичку, то он перемещается на 1 метр. Видим, он уже у меня плавнее перемещается. Если я поставлю 0 1, он будет перемещаться ещё плавнее и с градусами тоже самое, если
18: Я поставлю 30 градусов, оно у меня вот так вертится резко, да, если я поставлю 1 градус, он у меня вот так плавненько. Следующий у нас идёт парт. Благодаря этому я могу создавать бесконечное количество пар.
19: И могу создавать парты разной формы, например, вот сфера, треугольник, да, какой-то цилиндр. И вот это все я могу создавать с помощью вот этой штучки. Затем у нас идёт
20: Rain. Я сейчас не буду это делать, потому что это муторно на самом деле, но там ничего сложного. Просто мы нажимаем и можем рисовать природой, скажем так, но это я не буду разбирать, потому что скриптерам это почти никогда не нужно, а это
21: Видео предназначено в основном для скриптеров чарактер, что это у нас такое. Давайте нажмём. И я могу создавать, например, самого себя. Р 15. Могу самого себя создать и могу создать самого себя. Р. 6. И вот
22: Такие 2 чубрика у нас получаются. Затем у нас идёт гуи. Как видим, я могу создать здесь скрин гуи, могу создать серфейс гуи, могу создать эд гуи и так далее. Что это такое? Мы пока что не будем углубляться.
23: Просто знаете что вот здесь можно создавать гуишки. Затем у нас идёт скрипт. Это как раз-таки то, что мы и будем использовать. Да, я могу здесь создавать серверный скрипт, локальный скрипт и модульный. Чем они отличаются, мы разберём позже. Пока что идём дальше. Import.
24: Мы не будем задевать материал тоже. И вот это у нас уже 1 из самых главных. То есть если у вас чего-то нету здесь, да, не как у меня, у вас, скорее всего, вот это будет справа, вы можете вот так взять, переместить. Вот оно у вас сначала вот так будет. Так, блин, оно у вас.
25: Изначально будет вот так, да, вроде бы, но вы можете переместить сюда, как у меня. Вдруг вам тоже так удобнее и если у вас чего-то нету, вы вот тут тыкаете, оно у вас добавляется, и вот туллбокс можно открыть, и можно его тут же закрыть. И ещё тут Асет менеджер, что это такое? Пока что не будем.
26: Разбирать следующий. У нас это аватар. В принципе, 1 инструмент. Мы тут уже разобрали остальные пока что мы не будем трогать. Единственное, вот анимейшн мы можем здесь создавать с помощью него, да? Ну вот это, это настройка аватара. Вы можете тыкнуть и уже сами там посмотреть.
27: Потом у нас идёт юай. Это вот тоже самое, что ювишки делать скрипт. Вот здесь самое главное, включите аутпут. То есть у вас, может быть, вот так вы должны нажать включить аутпут и можете ещё command включить, но я не знаю, понадобится ли он вам или нет.
28: Тут ещё у нас есть всякие скрипт активити аналитика какая-то да watch ещё что-то да но мы пока что это не будем использовать нам пока что нужно, только вот аутпут тут у нас следующая модул.
29: Мы уже разобрали тут некоторые, да, в принципе, остальное нам пока что и не нужно. Затем у нас идёт плагинс, тут будут все ваши плагины. Если у вас тут ничего нету, то значит, у вас нет плагинов. Следующее. Это уже я сам создал. Вы можете также нажать на плюс.
30: И создать сами и поместить туда-то что вам нужно будет так давайте приступим уже к программированию для этого мы создаём скрипт вот здесь вот сервер скрипт service, обычный скрипт и у нас здесь сразу print hello, world, давайте посмотрим что
31: Это такое. Для этого мы запускаем игру и у нас пишется в аутпуте хеллоу ворлд, чтобы открыть аутпут. Если у кого он вдруг закрытый, смотрите, мы нажимаем скрипт и вот здесь аутпут. И ещё
32: Command. Желательно открыть вот эти 2 у нас должны быть открыты обязательно, без этого будет очень тяжело. Так вот, у нас уже есть 1 маленький скрипт, который за нас написал роблокс, но давайте мы его напишем сами, я пишу print.
33: Hello, world, также протестим, все у нас работает. Давайте напишем. Не hello, world, а что-то другое, например. Привет, я крутой разработчик.
34: И запускаем, как видим, у нас вот все запринтил, все идеально. Давайте сделаем ещё что-то можем написать здесь ещё принт мне 20 лет.
35: Я живу в Казани, вот нам gpt от роблокса помогает искусственный интеллект давайте запустим и вот все работает мы можем вот это скопировать, много раз вставить и у нас
36: А также все это будет работать. То есть здесь нету никаких ограничений. Я могу написать ещё привет, я крутой разработчик и вот здесь напишу всяки.
37: Различные цифры, например 2, 5, 10 ещё у нас есть true ещё у нас есть false и у нас есть нил. Пока что не обращайте на это внимание, может кто не знает, но мы можем вот это все писат.
38: И можем ещё под конец здесь написать привет я строка. Вот нам искусственный интеллект подсказывает и как видим, все работает. Так давайте разберём что такое переменные переменные. Можно представить как коробка, у которой есть
39: Звание, то есть вот коробка, и мы её назвали, имя. Внутри этой коробки лежит Иван, то есть коробку мы назвали имя, а внутри коробки Иван. И это тоже самое, что мы
40: Бы написали локал нейм, равно Иван. И если мы напишем принт нейм, то у нас будет Иван. Сейчас мы это все протестим или представим. У нас есть коробка. И эту коробку мы назвали возраст, и в эту коробку мы
41: Положили число 15. Это будет тоже самое, что мы напишем локал эйдж. Равно 15. Единственное отличие, что здесь на русском у нас написано, а здесь на английском, ну, мы можем переименовать, да, я напишу эйдж. И вот
42: Коробка называется edge и внутри неё лежит число 15 тут тоже самое мы можем переименовать с имя на name и вот у нас получается такая картина что коробку мы назвали нейм и внутри.
43: Этой коробке нейм лежит Иван это тоже самое что мы вот видим тут написано local name равно Иван, а здесь локал эйдж равно 15 коробка под названием edge и внутри неё лежит число 15 а это?
44: Коробка под названием name и в ней лежит Иван. Давайте разберём это уже в скриптинге. Сначала мы должны создать, конечно же, скрипт. Создадим базовый серверный скрипт и напишем локал.
45: Name равно, Иван, мы можем запринтить, можем сделать вот так, да, Иван, но нам нужно запринтить саму переменную. Мы пишем print name. Давайте запустим.
46: Вот мы видим, нам написалось. Иван, мы можем нажать и нам покажет, откуда нам это написалось. То есть вот это вот отсюда нам написалось все правильно. Давайте укажем возраст Ивану, пишем locale. Эйдж равно 15. И
47: Также запринти этот наш эйдж. И вот нам написала Иван 15, давайте сделаем более красиво и напишем принт меня зовут
48: Здесь ставим запятую нейм, опять запятую кавычки открываем и пишем мне запятая эйдж, опять запятая лет.
49: Давайте запустим и посмотрим. Вот у нас вывелось. Меня зовут Иван. Мне 15 лет, мы можем сделать по другому. Здесь поставить не запятую, а двоеточие. Давайте покажу, в чем отличие.
50: Вот мы поставили 2 точки везде, мы можем здесь убрать пробелы, они вообще ни на что не влияют. И давайте запустим, как видим, у нас все слитно. То есть запятая, она разделяет
51: 2 точки они не разделяют. Это 1 из отличий, но вообще отличие в другом. Но пока что мы не будем этого касаться. Давайте вот сделаем здесь двоеточие и пробел. Здесь делаем точку.
52: Начинаем с большой буквы двоеточие и пробел. Смотрим, что у нас получилось. Меня зовут Иван. Мне 15 лет, и здесь мы забыли пробел поставить. Давайте поставим пробел.
53: Смотрим и все. Вот сейчас у нас все правильно. Меня зовут Иван, мне 15 лет. Давайте создадим ещё 1 переменную, которая будет отвечать за то, Иван в школе или нет. Мы назовём её in school, то есть она называется в школе in school. Равно true.
54: Сейчас я вам покажу, что это и здесь пишем. Я в школе.
55: Запятая ин скул давайте запустим и вот я в школе тру смотрите тру фолс у нас отвечает за истину или ложь, то есть если у нас true это значит правда, а если false это у нас ложь.
56: Сейчас, может быть, вам непонятно, но когда мы зайдём чуть глубже, вы все поймёте, мы ещё можем играться с этими переменными. То есть давайте сделаем вот так name равно и
57: Переименуем нашего ивана, то есть изменим переменную name. Сделаем здесь Андрей, и давайте эйдж тоже ему изменим. Ему теперь будет не 15, а пусть будет
58: 18. Нашему Ивану исполнилось 18 лет, и он переименовался с ивана в Андрея. Давайте скопируем вот эту вот этот принт, вставим и посмотрим, что у нас будет. То есть сначала
59: У нас пишеется. Меня зовут Иван, мне 15 лет, я в школе фолс, он дома сидит, и потом он переименовал себя в Андрея, и ему уже 18 лет. Прошло 3 года, и через 3 года он себя переименовал на Андрея.
60: И да, вот здесь вы можете заметить, я написал не вот так 15, а в кавычках. В чем разница? Разницы здесь в данном случае нет. То есть, если я сейчас запущу, все также будет работать. Но давайте я вам
61: Расскажу немного про типы. Вот это у нас нейм Иван, это у нас стринг, то есть это какая-то строка, то что вот это находится в кавычках это называется у нас строка здесь у нас находится number это вот любые числа. То есть я могу здесь написать не пятнадцат.
62: А, ну, допустим нашему Ивану уже 100 лет. Если я запущу, то все будет работать абсолютно все будет хорошо, я могу здесь написать и false также все будет работать, но у нас сломается логика.
63: Я здесь могу написать любое число, даже могу - 900 написать и нашему Ивану. Теперь - 900, а потом он становится андреем, и ему 18 лет. Вот это у нас называется буллион.
64: У нас true false ложь и истина это у нас буллион, давайте исправим возраст нашему Ивану, пусть ему будет также 15, и смотрите, мы можем сделать как нашего ива.
65: А точнее, у нашего Андрея появились собственные деньги. Мы создадим новую переменную моный, и у него сейчас 1000 денег. Давайте напишу принт. У меня есть моны вот рублей, то есть за нас.
66: Искусственный интеллект все сделал. Давайте запущу и вот у меня есть 1 000 ₽, я нажимаю, вот мне показывает, что вот с вот этой строчки вывелось. Давайте сделаем так, чтобы
67: У него было ещё больше денег, то есть он пошёл на работу, там где-то заработал денег, мы можем сделать вот так моны плюс равно давайте сначала так сделаю моны равно моны + 500 мани теперь у него
68: На 500 больше напишем принт, я сходил на работу и у меня теперь
69: Mini.
70: Рублей. Давайте запустим и вот видим, у нас пишет, я сходил на работу, у меня теперь 1 500 ₽. Мы можем сделать так, чтобы он потратил наши деньги. Давайте напишем моны равно моны - 200.
71: Да, я говорю, моны это неправильно правильно говорить. Мани сорянчик за мой английский. Давайте это, на это не будем обращать внимание. Главное, чтоб суть была понятна. Вот, и мы напишем принт. Опять я сходил в магазин.
72: И у меня теперь
73: Ставим пробел мани рублей запустим. Я сходил на работу, и у меня 1 500 ₽. И я сходил в магазин. И у меня теперь 1 300 ₽. Все в
74: Вроде бы логично. Если вам непонятно, то пересмотрите и самое главное тоже практикуйтесь, пишите это все, и вы поймёте. Давайте сделаем так, чтобы у нашего ивана приумножились деньги. Например, сделаем вот так мания.
75: Теперь.
76: Равно мани умножить на 10. Делаем принт. Я выиграл в лотерею, и у меня
77: Равно мани умножить на 10. Делаем принт. Я выиграл в лотерею, и у меня теперь
78: Вот столько-то рублей, то есть у него стало в 10 раз больше. Мы вот эту переменную умножили на 10. Давайте запустим сначала у него есть 1 000 ₽, потом он сходил на работу, у него 1 500 ₽. Затем он сходил в магазин, у него 1300.
79: 300 ₽. И вдруг ему повезло, он выиграл в лотерею, и у него теперь 13 000 ₽. Смотрите, мы можем немного упростить нашу запись, сделать вот так вот plus равно 500. Это тоже самое, что вот это
80: Да, мы просто сокращаем запись. Вот это у нас эквивалентно вот этому.
81: То есть вот эти записи, они одни и те же.
82: Равно вот это равно вот этому суть не меняется. Тут мы также можем сделать минус равно 200.
83: И здесь мы можем сделать тоже самое, просто поставить сначала знак умножения. И вот давайте я здесь распишу, чтобы вам было понятнее. Вот эти записи у нас равны друг другу. То есть вот эта равна
84: Вот этому давайте запустим и убедимся, что у нас нет ошибок. Все тоже самое. У него сначала есть 1 000 ₽. Затем он сходил на работу. У него теперь 1 500 ₽. После он сходил в магазин, у него 1 300 ₽.
85: А потом он выиграл в лотерею, и у него 13 000 ₽. Это 1 из маленьких примеров. Как мы можем использовать наши переменные? Давайте я это закомментирую. Пока что и плавненько подойдём к следующей теме такой маленькой микротеме.
86: Смотрите, давайте мы создадим вот здесь парт, вот обычный парт, ничем не примечательный, у него есть свои свойства размер. Вот мы можем изменить ему здесь размер вручную, да, через studio без скриптов, просто вот так вот.
87: Изменить ему размер. Можем изменить ему позицию, поставить его на 0 0 0. То есть это вот самая Середина. Можем изменить ему прозрачность. Это у нас трансперенси, да?
88: И мы можем сделать тоже самое через скрипты воркспейс точка парт точка транспереси равно 0 5. То есть мы его сейчас сделаем полупрозрачным. Давайте ещё изменим ему размер. Мы пишем воркспейс точка парт точка сайсс равно век.
89: 3 точка нью и сделаем его очень большим.
90: То есть, смотрите, вот воркспейс, это у нас вот воркспейс точка парт, у нас вот внутри воркспейса есть part, мы так и пишем воркспейс точка парт. И у парта есть свойство transparent.
91: Он заглядывает сюда, видит вот здесь у нас, ага, есть transparency и меняет его на 0 5. И тут тоже самое воркспейс. Вот у нас воркспейс находится, парт, вот у нас парт находится и у
92: Есть размер, вот он size, и мы меняем наш сайсс. Вы можете пока что не понять, что это такое. Вектор 3, точка нью, но не обращайте внимания. С этим мы ещё разберёмся, вы просто со временем поймёте. Ну а если вкратце,
93: Вектор 3 это у нас вот как мы передвигали по осям. Вот видите, вправо, влево, вперёд, назад, вверх вниз. Здесь тоже самое вот это у нас его размер вправо, влево, да, вот это
94: 1 x. Затем у нас идёт вверх вниз, это у нас вот игрек вверх вниз и идёт z. Это у нас вперёд, назад глубина.
95: Она у нас здесь, у нас все вот здесь по 10 стоит. Давайте запустим наш скрипт и посмотрим, что у нас изменится, и поставим вот здесь, пожалуй, маленькую задержку. Пока что не обращайте внимания, что это такое у нас. Но если
96: Это просто мы будем ждать 5 секунд перед тем, как запустится у нас вот эта часть. То есть я могу здесь написать print hello. Да, она у нас запустится сразу, а через 5 секунд выполнится этот скрипт ну пока что не забивайте себе этим голову, просто знайте, что вот это у нас.
97: Задержка какая-то, давайте запустим скрипт, видим вот у нас парт и через 5 секунд он у нас стал большим и прозрачным. Давайте воспользуемся нашими знаниями про переменными и создадим перемен.
98: Назовём её парт и укажем в ней наш парт. Это вот тоже самое, что и с коробками было то, что вот здесь вот мы писали, да?
99: Ну только здесь мы теперь уже указываем объект если здесь мы указывали какие-то такие данные да, string number Булин, то есть string это у нас строка Иван намбер это у нас число любое и Булин.
100: Это у нас true false, ложь, истина, а здесь мы уже указываем какой-то объект мы занесли в переменную парт наш парт. Вот также work space точка парт. И теперь мы можем писать не вот так вот воркспейс, точка парт да, транспор.
101: А мы можем писать парт точка трансперенси, то есть мы сократили немного нашу запись. Вот представьте, у нас вот этот парт бы находился, да? Ну, например, это бы выглядело.
102: Что-то типа вот такого вот да, нам бы там пришлось писать воркспейс точка парт воркспейс точка парт точка парт.
103: Точка парт опять, да.
104: И только потом точка трансперенси. А так мы вот указали наш парт, и мы можем ему сразу указать прозрачность. Транспорент. Это нам очень облегчает работу, особенно когда у нас слишком много каких-то
105: Данных, которые мы должны запомнить, очень много Партов, ещё чего-то, да, а тут у нас все сразу под рукой. Давайте изменим уже прозрачность. Нашему парту. Напишем 1, то есть через 5 секунд он станет полностью прозрачным. Проверим.
106: Ждём. И вот он у нас стал полностью прозрачным. Видим, он у нас есть, существует, да, вот он, но мы его не видим, он существует, но мы его не видим, потому что прозрачность мы поставили на полную катушку.
107: Давайте здесь я создам новую переменную напишу, локал нью трансперенси, то есть новая прозрачность у нас. И напишу 0 точка 5. И вот здесь я укажу уже не 1, а нашу переменную.
108: Мы это можем сделать, потому что вот эта наша переменная хранит число 0 5. То есть вот эта запись, да, вот new транспер это тоже самое, что я бы написал 0 точка 5. Ну, практически 1 и тоже самое. Давайте проверим, так ли это. Или я вам вру, запус.
109: Игру и, по сути, через 5 секунд, через какое-то время да, он у нас станет полупрозрачным и вот он у нас стал полупрозрачным, мы можем изменить ещё что-то, например, spice да, напишу локал нью са.
110: Равно вектор 3, точка нью и здесь также укажу 10, 10, 10. Необязательно вот указывать все одно и то же там как-то, да, мы можем поставить абсолютно любые цифры и пишем парт точка сайсс равно ньюс.
111: Запустим и вот, как видим, у нас все изменилось, как мы и хотели
112: Да.
113: Запустим и вот, как видим, у нас все изменилось, как мы и хотели, да.
114: Давайте подытожим вот эта вот запись, вот эта вот запись, да, у нас тоже самое, что я бы написал вот так вот давайте я здесь оставлю такой комментарий. Парт сайз равно и вот так вот, то есть они
115: Равны друг другу. И тут тоже самое, это вот тоже самое, что я бы написал. Пар, точка транспорент, равно 0 точка 5. Да, это вот оно эквивалентно друг другу. Следующая тема, которую мы разберём. Это условие if
116: Давайте сначала разберём все визуально, а потом перейдём в студию. Смотрите, у нас есть здесь какая-то переменная, да, денег равно 100, это количество денег игрока. И здесь мы сравниваем. Если денег больше, либо равно 50, то мы покупаем
117: А если денег меньше, то у нас какая-то ошибка там происходит, да? Либо вообще ничего не происходит. Смотрите, вот у нас денег сколько, да, то есть вот здесь у нас количество 100, у нас здесь 100 денег и 100 у нас, соответственно, больше 5.
118: 10 вот оно 100, оно больше чем 50. И поэтому мы идём по вот этому пути, да, и мы покупаем меч, переносим его в инвентарь игрока, сохраняем там все, да, какие-то процессы производим, но если
119: У нас денег будет меньше. Ну, например, там у чувака, он только зашёл в игру, у него там, у него там только 20 монеток, он нафармил, да, вот у него 20 монеток, а нужно 50, как минимум. И мы
120: Сравниваем 20, у нас меньше 50.
121: Вот у нас получается вот так. Xx меньше 50, и поэтому мы идём сюда вот так вот таким вот путём. То есть, смотрите, как это работает. Ещё раз расскажу. Вот у нас сейчас 20 монеток, мы сравниваем 20, больше 5.
122: Дети, соответственно, 20 не может быть больше 50, поэтому нет, у нас срабатывает условие. Нет, у нас срабатывает вот это вот условие нет. И мы производим какую-то ошибку, либо вообще ничего. Но если
123: Если у нас денег будет больше 50, ну, например, там опять-таки 100, да, вот 100 у нас денег 100, у нас больше 50.
124: Получается, мы можем купить меч, это у нас, да, и мы идём по вот этому условию. Вот 100, больше 50, да, 100 больше 50. И мы идём вот сюда. Вот мы покупаем меч, но если у нас денег меньше 50,
125: Также вот я напишу здесь, чтоб было более наглядно 10 монет у нас.
126: Вот 10 не может быть больше 50 вообще никак. И мы идём по вот этому пути. Получается 10, больше 50. Нет, оно меньше, и мы производим какую-то ошибку. Итак, давайте перейдём в roblox студию и уже рассмотрим это.
127: На скриптах заходим в скрипт, создадим также какую-то переменную, да? Ну давайте пока что просто без переменной я вам покажу, как это выглядит здесь. Допустим, если число 100 равно стам.
128: То давайте запринти хэллоу ворлд, ну или так store равно стам.
129: У нас это, конечно же запринтит, потому что store равно стам.
130: Но если я сделаю вот так store равно 110, то у нас ничего не запринтит вот как видим, у нас ничего не запринтил сь, у нас здесь пусто, для этого мы можем сделать здесь вот такую вот штучку написать. Else.
131: То есть, если 100 не равно 110, то мы вот тут напишем принт.
132: Произошла какая-то ошибка, давайте запустим. И вот у нас произошла какая-то ошибка, потому что 100 ne равно 110, но если я здесь опять напишу 100 равно 100.
133: И запущу, как видим, у нас здесь store равно 100 и ошибки уже никакой нету. Давайте я пока что вот это на секундочку закомментирую и напишу вот так принт 100 равно стам. И да, учтите, что, ну,
134: Нужно ставить 2 равно не 1. Если 1 равно, то это мы присваиваем. Присваивать мы можем только каким-то переменным, а если 2 равно, то это значит мы сравниваем. Вот у нас происходит сравнение и смотрите, если я сейчас запущу
135: Как думаете, что у нас выведется? У нас вывелось тру, то есть это у нас Булин. То есть это у нас правда, но если я напишу 100 равно 110 и запущу, у меня выводится фолс, потому что
136: 100 ne равно 110. Это у нас ложь. И вот это условие, оно срабатывает, только когда оно у нас равно истине тру.
137: Срабатывает.
138: Только когда?
139: Тру. А вот это у нас срабатывает.
140: Вот это у нас срабатывает, когда у нас в false происходит какая-то ошибка, да, то есть мы какую-то ошибку произвели, вот здесь что-то мы не так здесь сравнили и мы можем обработать эту ошибку вот здесь ну это как пример такой, да, запускаем и вот
141: У нас фолс вот здесь вот и произошла какая-то ошибка. Мы можем это занести в переменную. Также ничего страшного вообще не будет. Вот напишу локал намбер равно 100 и теперь я буду, могу здесь
142: Писать, например, намбер, и мы нашу переменную сравниваем с каким-то другим числом. Да, вот здесь я также напишу намбер. И вот если у нас намбер наша, то есть это store равно 110, то у нас произведётся вот это, а если оно не равно 100
143: 10, то у нас какая-то ошибка произошла. У нас сейчас произошла какая-то ошибка. Если я вот эту переменную изменю на 110 сейчас, то, как видим, у нас все идёт чётко, нету никакой ошибки. Так давайте я вот это закомментирую все и
144: Разберём следующий пример. Создаём переменную локал эйч равно, ну, это возраст, и пусть он будет 13. То есть мы представляем какого-то игрока персонажа, и ему 13 лет. Вот этот пример у нас ничем не будет отличаться от этого. Просто я так дела
145: Ради разнообразия, чтоб было более интересно, и мы здесь проверяем. Если возраст нашего игрока больше либо равно 13, то мы принтим. Ты можешь играть в игры для подростков.
146: Но если нашему чуваку меньше чем 13, то мы пишем, что тебе ещё рано. Подожди немного. То есть, допустим, у нас есть какая-то игра, да, чувак в неё захочет поиграть, и мы проверяем его возраст, он там указал где-то возраст.
147: Если ему больше 13 лет иили равно 13, то он может в это играть, а если ему меньше 13, то ему ещё рано. Давайте запустим. И вот нам 13 лет, и мы можем играть в эту игру для подростков, точнее.
148: Не мы, а наш чувачок, а если ему будет 20 лет?
149: Давайте запустим, и он все также может играть, потому что 20 оно больше, чем 13 давайте я вот тут напишу принт 20 больше, либо равно 13. И вот видим у нас true
150: Получается, это истина. Но если б я здесь написал 5, то у нас фолс, давайте мы вот здесь напишем 5, я это запринтуй. Ой, точнее, запущу и видим, у нас выводится, что тебе ещё рано, подожди немного.
151: Так, давайте я вот это запринтуй и приведу ещё 1 пример, чтобы вам было более понятно. У нас есть переменная, которая хранит какое-то имя. Пусть это имя будет эндрю Андрей. Вот andrew, andrew без разницы. И давайте напи.
152: Пишем условие. Если name равно эндрю, то да, е моё, если name равно эндрю, то мы напишем принт привет, эндрю.
153: У нас для тебя подарок. То есть вот чувак, то есть чувак с именем эндрю, заходит в игру, и если его имя вот name равно эндрю, то
154: У нас для него есть какой-то подарок. Давайте запустим и вот видим, у нас все срабатывает. И если я вот здесь вот напишу принт и сравню строки какие-нибудь, например, абц равно а, б, ц.
155: Вот это у нас строки, это у нас числа, а обычные строки, и они у нас в кавычках, то, как видим, у нас также здесь выявилось тру, значит, это истина. Но если я здесь добавлю вот так ещё, да, д, например, и запущу, то у нас фолс.
156: Или если я сделаю абц уже маленькими, то у нас это будет также фолс. То есть, например, я вот здесь сделаю не эндрю с большой, а эндрю с маленькой, у нас ничего не выведется. Это
157: Ошибка. Давайте обработаем эту ошибку, и я напишу вот так, элса.
158: И напишу, принт, ты не эндрю, у нас для тебя нет подарка. Почему он не эндрю, он же эндрю. Разница в том, что вот здесь вот должно быть с большой буквы в строках. Это важно. И вот видим, нам пишет, что ты не эндрю, у нас для тебя нет подарка даже
159: Если мы вот здесь укажем также эндрю, но вот здесь я напишу не английскую, е, а вот русскую, я русскую её сейчас пишу, у нас также ошибка, потому что оно все должно быть.
160: Точь в точь я могу здесь написать другое имя. У нас также будет ошибка. Ты не эндрю, у нас для тебя нет подарка, но как только я напишу здесь эндрю, правильно? Вот я скопирую полностью даже
161: У нас теперь есть какой-то подарок. Привет, эндрю. У нас для тебя подарок. Так здесь я забыл. Р. Вот вот так вот eu and andrew. Вот.
162: Давайте разберём ещё 1 пример. Вот это я закомментировал и представим, что у нас есть какое-то количество денег у нашего игрока. Мы считаем количество денег нашего игрока, и он хочет купить какой-то предмет, но этот предмет стоит
163: 100 монеток. Давайте напишем условие, если коин больше, либо равно айтем прайс, да, то есть это сколько стоит?
164: То мы запринти принт, покупка успешна, но если у нас недостаточно монет, то есть меньше, то мы пишем принт, недостаточно монет. Тут все так же, как и в прошлом примере. Просто здесь мы теперь сравниваем 2 переменные, да, то есть так тоже можно делать.
165: Это правильно. Давайте я запущу. У нас сейчас недостаточно монет, потому что мы сравниваем 50. Вот, да, 50 и 100, соответственно, 50 не может быть больше 100. Но если я здесь укажу 100
166: 50, то у нас покупка проходит успешно. Все логично. Давайте я здесь опять также напишу вам принт.
167: 150 больше, либо равно 100. И у нас здесь сравнивается 150 больше 100. И, как видим, у нас 150 больше 100. Но если я здесь укажу 50, то у нас 50 уже не больше 100, поэтому
168: У нас фолс, и давайте разберём последний пример, чтобы закрепить. У нас также есть какое-то количество денег, точнее, у нашего игрока. Пусть их будет 550, и мы пишем. Если to print ты можешь купить
169: Дом давайте запустим. У нас ничего не написалось, потому что у нас денег меньше, чем 1000, но если я здесь укажу 1550, то у нас вот все работает. А давайте сделаем вот так здесь мы
170: Пишем, если элса, но только уже else. If, если у нашего чувака денег больше, либо равно 500, то давайте ты можешь купить машину. Да, давайте запустим. Вот у нас изначально было 550.
171: Денег у нас денег меньше, чем вот тут. То есть мы не можем купить дом, но мы можем купить машину. Давайте проверим, вот мы можем купить машину, но мы не можем купить дом ещё, если я здесь напишу 1550.
172: То мы уже можем купить дом и давайте у нас здесь будет, например, 100 монеток. И здесь мы напишем элс иф коин больше либо равно 100 то print ты можешь купить.
173: Телефон. Вот у нас сейчас 100 монеток, давайте запустим и, как видим, мы можем купить телефон, но мы ещё не можем купить машину или дом, потому что у нас недостаточно денег. И последнее, например, давайте вот так вот сделаем. Лс.
174: Yves cohen больше либо равно 10.
175: То print, ты можешь купить игрушку, ну или давайте, пусть будет это гамбургер. Давайте мы изменим здесь значение, например, на, ну, я не знаю, 25 запускаем, и мы можем сейчас купить только
176: Бургер, если мы изменим это значение на 150, то мы можем купить уже телефон. Если мы изменим это значение на 550, ну или 650 без разницы, то мы можем купить уже
177: Уже машину. Если мы это значение изменим на 2000 или на 20000, или на 200000, то мы можем купить уже дом. Но если мы изменим наше значение, например, на 5, то у нас ничего не
178: За принтится. Давайте мы это исправим и сделаем вот так вот.
179: Elsa.
180: Print, ты ещё не можешь ничего купить.
181: Запустим и вот мы ещё не можем ничего купить давайте разберём код и смотрите.
182: Если у нас наших денег сейчас больше, чем 1000, вот 1200 у нас будет срабатывать вот это условие. То есть он проверяет, ага, у тебя денег больше 1000, значит, ты можешь купить дом. Вот это он сразу уже не проверяет, он сразу это пропускает, то есть
183: Для него это будет выглядеть примерно вот так. Но если у нас будет денег меньше 1000, например, 800, он смотрит вот это условие. Ага. У тебя денег меньше, чем 1000. Так, есть ли у нас там ещё что-то? Ага, у тебя денег больше, чем 500.
184: У тебя их 800, то есть у тебя денег больше чем 500, но меньше, чем 1000. То есть у тебя срабатывает вот это условие. Вот эти для тебя уже не существуют. Ты можешь купить машину и так аналогично со следующими, если у меня
185: Денег будет 200, он смотрит. Ага. У тебя денег меньше 1000. Ты не можешь купить дом. Ага. У тебя денег меньше чем 500. Ты не можешь купить машину, но у тебя денег больше, чем 100. У тебя 200 монеток, значит, ты можешь купить.
186: Телефон и все вот это условие у нас сразу откидывается. Вот эти 2 условия у нас сразу откидываются. Давайте изменим наше значение на 5. И смотрите, вот если я сейчас запущу, мы не можем ничего купить, значит смотрите, по какой логике он
187: Следует все также, как и с предыдущими. Но смотрите, если у нас денег больше 1000, у нас денег 5, значит мы не можем купить дом здесь также, здесь также здесь также у нас денег меньше 10 и
188: И окончательное событие срабатывает вот это. То есть ни 1 из вот этих условий не подходит к нам, и у нас срабатывается вот этот случай, элса. То есть здесь у нас все остальное, то, что не подошло к вот этим, то есть в данном случае
189: Здесь бы я мог написать вот так, если денег меньше 10. То есть это у нас конечное условие наше было бы.
190: И вот это будет тоже самое, что, что вот так бы я просто написал вот здесь лс, то есть давайте я запущу. И вот мы ещё не можем ничего купить, если я уберу вот это, я оставлю просто.
191: Ls то у нас будет тоже самое.
192: Давайте сейчас немного подробнее вот это разберём и перейдём к следующей теме. Вот смотрите, вот наш код. У нас сейчас 5 монеток, да? Так, давайте я изменю цвет. У нас сейчас 5 монеток, и он проверяет у тебя
193: Ich меньше 1000, меньше 1000.
194: Потом он идёт сюда, смотрит. Ага. У тебя их ещё меньше пятиста. Значит, ты не можешь купить дом и не можешь купить машину, он идёт дальше. Ага. У тебя их меньше 100, он идёт дальше. Ага. У тебя их меньше 10. Дальше у нас условий таких нет.
195: Эту вот с else if и он обращается к вот этому запасному условию. То есть вот это условие, вот это вот срабатывает. Если ни 1 из вот этих не сработало, у нас срабатывает вот это.
196: Думаю это будет понятно, если вам непонятно, просто зайдите в roblox studio и попрактикуйтесь обязательно также записывайте код, как и я, и тогда вам будет точно все понятно, может не с 1 раза, но с раза 2, 3 вы точно по
197: Итак, сейчас мы разберём циклы, давайте создадим новый скрипт. И здесь я напишу. Ну, я хочу написать 10 раз print. Hello, давайте по-русски напишу. Привет, бро. Вот.
198: Мне надо это 10 раз написать. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Да, вот я запускаю, оно у меня, да, 10 раз вывелось, все, как я и хотел, но теперь я хочу.
199: Написать, изменить. Не бро, а чтоб тут было. Ну, привет, друг. Мне пришлось бы вот так все это делать, да?
200: Я запускаю. Ну и вот у меня теперь привет, друг, но я хочу, чтобы оно уже делалось не 10 раз, а 100, ну или там 88, да, мне пришлось бы вот так вот.
201: Вот так, вот так делать, да, вот так, так, так, так, так. Ну вот, допустим, здесь 88 я запускаю, оно у меня 88 раз вывелось, но теперь я хочу изменить здесь везде, чтоб было не друг, а
202: Привет, друг. А пока друг, мне бы пришлось вот так везде с костылями все изменять, да? Ну, к черту, короче, это все, да, поэтому создали циклы. Есть 1 цикл такой for это
203: Ключевое слово, чтобы цикл я пишу for i, 1, 10, допустим и давай напишу также привет, бро, запускаю, видим, у меня 10 раз вывелось привет.
204: Создать бро вот x.
205: Ключевое слово чтобы создать цикл, я пишу for i, 1, 10, допустим и давай напишу также привет, бро, запускаю, видим, у меня 10 раз вывелось привет, бро. Вот x.
206: 10 это значит, что 10 раз подряд.
207: Я могу здесь написать ещё, я тебя ждал, и вот видим у нас привет, бро, я тебя ждал, и это 10 раз выведется что такое i. Давайте вот так вот сделаем привет, бро.
208: Пока что закомментируем и напишу принт аййй равно.
209: I запускаю и, как видим i это у нас какой шаг мы сейчас делаем, то есть какое количество раз мы выполнили функцию вот это то, что у нас вот тут находится, это, можно сказать, функция да, код, который находится внутри цикла.
210: Давайте будем пока что называть. Это как функция какая-то вот у нас вот это выполняется. Давайте я сделаю не от 1 до 10, а от 10 до 100. Я запус.
211: И видим, у меня также идёт от 10 10, 11, 12, 13. Да, и так до 100 идёт.
212: Вот это я могу назвать хоть как я могу написать тут хоть вот так вот, да, то есть это не имеет значения, как мы тут назовём. Это просто переменная, я запускаю и видим, у меня все также работает без каких-либо ошибок. Давайте.
213: Меню и сделаем опять от 1 до 100. Я хочу, чтобы оно шло не, не, вот так вот, да. 1, 2, 3, 4, 5, 6, 7. И так до 100. Я хочу, чтобы оно шло 0 10, 20, 30, 40.
214: 50. Я хочу, чтобы оно вот так шло. Мы здесь делаем принт 0 100. И вот здесь мы пишем шаг. То есть мы будем идти не по 1, не вот так 1, 2, 3, 4, а будем идти вот сразу.
215: 1 + 10, это 11 + 10, это 21. То есть мы будем идти с шагом 10. То есть раньше мы шли с шагом 1 представим 1 метр. Шаг, да, вот 1 у нас будет также 1, 2, 3, 4, 5. Вот.
216: Нуля до 100 метров надо пройти. У нас 1, 2, 3, 4, да. А если я делаю шаг 10?
217: От нуля до 100 у меня также будет 0, только уже не 1. Следующая будет, а 10 сразу. Ну, потому что 1 шаг это у нас 10 метров, да. 20, 30, 40, 50. Итак, итак.
218: Так, до 100 давайте запустим, посмотрим. Вот, 0 10, 20, 30, 40, 50, 60, 70, 80, 90 и 100. Я могу так сделать, хоть draw 1000 ничего не изменится. Изме.
219: Столько, сколько раз мы выполним эту функцию, этот код. Хорошо, давайте сделаем, чтобы у нас менялась прозрачность нашего парта. Мы также сделаем от нуля до 100, ну, от 1 до 100 с шагом 1.
220: Давайте посмотрим в чем у нас вообще измеряется наша прозрачность. Вот оно тут какое-то число float, но это немного другое, но не суть важно. Смотрите, давайте я укажу переменную, которая будет указывать на наш парт. Вот.
221: Вот этот path и тут я делаю что я делаю локал трансперенси то есть это наша новая прозрачность, которая будет равна l поделить на 100. Тут я пишу трансперенси равно трансперенси и part точка.
222: Трансперенси равно трансперенси да, может быть запутано давайте я вот здесь сделаю так. New трансперенси то есть это наша новая прозрачность и вот тут напишу тоже new трансперенси то есть новая прозрачность запускаю, но она у нас моментально выполнена.
223: Мы ничего не заметили, нам нужно поставить задержку. Давайте поставим здесь задержку какую-то. Это функция wait нас 5 секунд. И здесь сделаем Вейт на 0 1. Пока что не обращайте внимания что тако
224: Что такое task? Просто это задержка, да, такая.
225: То есть только через 5 секунд у нас выполнится код. И вот у нас теперь выполняется код, у нас трансперенси идёт от нуля до единицы. То есть прозрачность все выше и выше, оно идёт с шагом. То есть зачем мы тут делили?
226: На 100 у нас, смотрите, 1 мы делим на 100 равно 0 1. Ну вот так, да. 0 0 1. У нас вот здесь подставляется число 0 точка 0 1.
227: Потом, да, у нас идёт 1 / 2, поделить на store равно 0 точка 0 2. У нас вот здесь подставляется 0 точка 0 2. Так оно идёт, идёт потом.
228: 90 поделить на store равно 0 точка вот 0 точка 9. И вот видим оно у нас уже почти прозрачно то есть какие-то такие маленькие очертания видны и вот так у нас работает это давайте теперь сделаем.
229: 9.
230: 90 поделить на store равно 0 точка 9. Вот 0 точка 9. И вот видим оно у нас уже почти прозрачно то есть какие-то такие маленькие очертания видны и вот так у нас работает это давайте теперь сделаем.
231: Чтобы когда у нас вот это закончилось, мы вернём прозрачность нашему парту, чтобы, ну он был непрозрачным, мы здесь также пишем фор ай равно от 100 только уже до 1.
232: И вот здесь у нас видим, какая-то ошибка. Нам нужно поставить шаг - 1. То есть у нас будет как идти 199, 98, 97, 96, 95 и так до 100.
233: Ой, до единиц мы здесь прописываем тоже самое.
234: И давайте запускаем так здесь я давайте сделаем вот так сразу прозрачность поставлю 0 и запускаем.
235: Он у нас становится прозрачным со временем, с каждой миллисекундой.
236: И как у нас стал, он у нас стал полностью прозрачным, он у нас становится опять непрозрачным.
237: Вот как видим, все работает. Давайте теперь разберём цикл while что это у нас такое.
238: Представим, что у нас есть какое-то значение. Хп дааа, равно 100 я бы мог через цикл фор, конечно, делать, да, там я хочу, чтобы этот игрок умер. Мне надо нанести 100 домага, да, от 100.
239: For ai равно.
240: 100 0 - 1, да, хелф равно. Ай, ну, предположим, есть очень много способов, как это сделать. Их миллиарды, миллионы, ну,
241: Предположим, вот так, да, принт хелф я запускаю. Вот видим, у меня хп сначала 100, оно идёт также до нуля. И вот у меня хп 0, вот здесь под конец. Давайте напишем принт игрок.
242: Умер. Ну и вот давайте сделаем это теперь через цикл while, пока у нас хп больше нуля, то есть игрок жив, пока у него хп больше нуля у него.
243: Он жив, то есть даже если у него хп 0 точка 0 1, он все равно жив, мы делаем вот так. Health минус равно 1 мы отнимаем у него по единичке хп. То есть я бы мог сделать вот так демедж равно 1, да?
244: Давайте запустим. Ой, я здесь забыл поставить print print хелф. Давайте вот так сделаю.
245: Print хелф.
246: Минус.
247: Damage равно.
248: Равно.
249: И здесь мы должны посчитать да. Half минус демедж вот это мы должны вынести наверх запускаем.
250: И вот 100 - 1, 99, 99, - 1. И вот так оно у нас идёт до нуля. У нас здесь хелф 0. То есть проверяется 0. Ну, сначала вот так 100 больше нуля, да, у нас 100 больше нуля, потом идёт так, 10, больше нуля, да, 10, больше нуля.
251: Единица. Больше нуля, да, у нас единица больше нуля, потом 0 больше нуля. Нет, у нас 0 не больше нуля. Вот это у нас скипается, и мы выполняем вот эту строчку кода. Хорошо, тут мы более менее разобрались. Давайте чуть чуть вернёмся к for, я объясню.
252: Ещё пару вещей про for и while. В общем, про циклы, про функции тоже касается их. Смотрите, у нас есть цикл, да, for ai равно от 1 до 10. Я здесь пишу print i здесь.
253: Делаю. Ну давайте просто запущу.
254: Запускай, у нас от 1 до 10 идёт все чётко, но если я здесь напишу иф, ай равно 5 ден принт.
255: Break запускаю и вот видим у нас как только 4 потом у нас вот идёт тут у нас i, то есть 4, потом iii равно 5 вот оно.
256: - 5 и у нас проверяется если iii равно 5 to print break, что значит break с английского break это значит ломать то есть мы ломаем функцию да, мы выходим из неё все.
257: У нас вот это все что ниже оно не будет выполняться как только у нас i budet равно 5 но если я здесь сделаю аййй равно 100 то у нас brick никогда не сработает.
258: Также у нас есть ещё континиум.
259: Давайте вот это закомментирую, напишу continue.
260: И тут пишу континью, что значит континью с английского континью это как бы пропустить, то есть мы пропускаем функцию, скипаем её, пропускаем не вот этот шаг.
261: Мы вот этот шаг просто пропускаем, который у нас должен произойти у нас вот эта функция происходит континью, и все то, что ниже у нас не выполняется потом у нас i Ровно 6, у нас опять вот это идёт, проверяется ай, Ровно 5 нет.
262: I u nas равно 6 и у нас идёт принт давайте проверим 1 2 3 4 вот у нас должно быть iii равно 5, у нас континью 6 7 8 9 10 так ну тут мы надеюсь разобрались, давайте вернёмся к нашим.
263: While циклу давайте сделаем, чтобы хпп у нас прибавлялось и убавлялось, да, вообще, вот почему вот это условие у нас работает, что у нас такое вообще хелф.
264: Давайте скобочки возьмём хелф больше нуля что это у нас такое пока у нас вот ну вот, например 100 больше нуля это у нас. True то есть пока у нас. True у нас рабо.
265: Эта функция, ну вот это у нас работает то что внутри while а если у нас будет вот здесь 0 больше нуля 0 у нас не больше нуля, это у нас уже false и соответственно у нас не будет работать то есть мы здесь можем написать while true и вот это
266: У нас будет работать бесконечно. Давайте мы сделаем по другому. Мы делаем вот так.
267: Если хелф больше нуля, то мы тут запускаем цикл for for ai, равно мы идём от health.
268: То есть вот здесь у нас значение health 100, например да, отсюда до сюда и шаг у нас будет - 1 хелф равно ай, и здесь мы.
269: А здесь мы пишем элса, то есть когда у нас хелф равно нулю или меньше нуля мы делаем хелф health равно 0 net равно 100 да, мы можем вот это убрать здесь и
270: Просто делать вот так health минус равно 1 давайте вот так и сделаем, чтобы не путаться в коде в принципе так и правильнее делать вот как я сейчас и давайте вот тут вставим вот эту нашу штучку минус демедж.
271: Вот, вот так и запускаем. Так, тут мы забыли добавить задержку. Из за этого у нас тут происходил полный треш, у нас просто зависло. Сделаем задержку такую и вот сейчас запускаем и вот видим 100 - 1.
272: То есть давайте остановим и посмотрим, что у нас тут происходило. У нас шло хпп равно 100, 100 - 1. Оно идёт, идёт, идёт до нуля. Вот как только у нас равно 0 хп, у нас хпп возобновляется до 100. То есть давайте
273: Сделаем принт чардж хелф ту 100. Ну давайте по-русски напишу. Меняем хпп на 100.
274: Запустим и вот
275: Давайте остановим и проверим опять, что у нас тут было 100 идёт до нуля. Как только у нас равно нулю, мы меняем хпп на 100 и у нас опять оно идёт до нуля. Это бесконечный цикл, потому что нету
276: Какого брейка я бы мог вот тут написать да break?
277: Запускаем и смотрим.
278: Все у нас как только хпп равно 0, игрок умер, потому что хпп у нас не больше нуля, оно равно нулю, и мы функцию просто break, то есть мы её ломаем, давайте сделаем, чтобы у нас изменялся транспорт парта, прозрачность парта.
279: Это мы закомментируем, также пишем locale парт, но work space парт.
280: Ставим какую-то задержку, пишем цикл while true и тут мы делаем, если парт точка трансперенси больше нуля.
281: То мы запускаем. Ну давайте сделаем вот так. Ладно, равно единице равно нулю. То есть у нас парт непрозрачный, мы запускаем цикл for ai равно
282: От нуля до 100 ладно, от единицы до 100 и делаем также локал нью трансперенси, равно i.
283: На 100 и part точка трансперенси равно нью трансперенси, а тут мы делаем элс иф.
284: Ну ладно, даже else просто достаточно будет, так тут делаем от 100 до единицы с шагом - 1 и запустим код. Ой.
285: Тут забыл задержку поставить. Сейчас бы у меня опять тут был треш какой-то. Мы делаем задержку маленькую такую.
286: И тут давайте сделаем задержку.
287: Запускаем и смотрим.
288: Так, тут давайте изменим чуть чуть значение, потому что у нас будет не так работать, если пар трансперенси меньше 0, точка 1. Вот так сделаем, да, и проверяем.
289: Вот как видим, у нас все работает так остался у нас цикл лишь репит антил until. Давайте его разберём, давайте создадим переменную локал каунтер, то есть это счётчик какой-то, да, и мы будем писать здесь будет
290: Повторять каунтер. Так, так.
291: Counter plus равно 1 print counter мы будем это повторять до тех пор, пока у нас counter не будет равно 10, давайте запущу и вот.
292: Вот видим, как только у нас counter стало равно 10, у нас перестала выполняться функция, то есть перестала прибавляться. Тут + 1. Ну, в принципе, все. Вот мы циклы и разобрали репитил тут
293: Ничего тяжёлого было. Я просто показал, как он работает. Можем здесь сделать всякие вещи, но я вам показал основной механизм, как он работает. Так что приступаем к следующей теме. Так, сейчас мы
294: Знаем, что такое функция. Давайте создадим новый скрипт. Вот эти я выключу.
295: И что нам нужно сделать, чтобы создать функцию? Мы также пишем ключевое слово function и название функции. Давайте вот тут напишу нейм фанкшн.
296: И здесь мы можем написать что угодно, то есть тут тоже выполняется любой код. Напишу, например print hello, world на русском привет, мир. И давайте запущу. Как видим, у нас ничего не выпол.
297: Потому что мы не вызвали эту функцию, то есть, чтобы вот этот кусочек кода у нас выполнился, нам нужно вызвать эту функцию. Вот сейчас я запускаю, видим, у меня написалось привет, мир. Эту функцию я могу вызывать хоть сколько раз, то есть
298: Могу сделать вот так, да, вот так, вот так. Потом могу ещё здесь сделать. Принт стоп.
299: Потом ещё раз её повызывать. Да, запускаю. Видим, у меня 6 раз написалось. Привет, мир. 1, 2, 3, 4, 5, 6. Потом у меня стоп. И ещё раз 3 раза я вызвал эту функцию.
300: Давайте я назову эту Функ, вот это я уберу и назову эту функцию hello.
301: World.
302: Давайте создадим ещё 1 функцию, назовём её гудбай ворлд.
303: И тут я буду писать уже прощай, мир я вызову хеллоу ворлд и вызову гудбай ворлд запускаем и видим у меня привет, мир. Прощай, мир, я могу их вызывать также хоть
304: Сколько раз, то есть я могу сделать le ворлд, да, скопировать, также написать много раз, то и потом написать ещё вот гудбай ворлд под конец.
305: И ещё раз вызову хеллоу ворлд. То есть я могу их вызывать в любом порядке, и все будет работать. Вот у меня сначала вызвалось привет, мир, потом прощай. Мир. 1, 2, 3, 4, 5, 6, 7 раз. Привет, мир.
306: 1 раз прощай, мир и ещё 1 раз привет, мир. Я могу создать функцию также, которая будет совмещать вот эти 2 функции function, хеллоу, энд гудбай, тут я напишу hello, world.
307: И goodbye world. Теперь я вызываю хэллоу энд гудбай, запускаю, у меня вот сразу привет, мир и прощай, мир, почему так произошло? Потому что вот у меня вот есть функция hello and goodbye, а в этой функции я вызываю вот
308: Эти функции hello, world, то есть привет, мир и goodbye world. То есть это было тоже самое, что я написал бы вот так вот.
309: Да, то есть ничего бы не изменилось.
310: Вот я могу тут также вот вызвать остальные функции hello word by word, давайте вот сделаю такую чёрточку, типа как отличие, да, чтобы увидеть, и, как видим, отличия вообще никакого нету.
311: Привет, мир. И вот нам 2 раза вывелось. Привет, мир. Вот 2 раза и прощай, мир 2. Ну не подряд, а сначала привет, мир. Прощай, мир, наши чёрточки, привет, мир.
312: Раза.
313: Привет, мир. И вот нам 2 раза вывелось. Привет, мир. Вот 2 раза и прощай, мир 2 раза. Ну не подряд, а сначала привет, мир. Прощай, мир, наши чёрточки, привет, мир.
314: Мир, давайте сделаем что-то более посерьёзнее. Вот это я закомментирую. Создаём новую функцию, которая будет называться сей хэллоу. Ну вообще без разницы, как она будет называться. Это не имеет значения. Да, и тут у меня будет
315: В параметрах нейм я пишу print и давайте вызовем эту функцию. Ну вот тут допишу принт привет.
316: Name.
317: В параметрах нейм я пишу print name и давайте вызовем эту функцию. Ну вот тут допишу принт привет.
318: Name вызову эту функцию, запущу и, как видим, у меня ошибка. Почему у нас ошибка? Давайте здесь напишу принт нейм, что это у нас такое name. Я запускаю нейм это
319: У меня нил, почему у меня name, это нил, тут должно быть какое-то имя, так вот, чтобы вот тут было какое-то имя, мы вот здесь пишем вот это вот имя в аргументах.
320: Вот это, то есть называется параметры, тут мы указываем эти параметры, то есть это аргументы. Давайте запишем тут, ну, например, Андрей.
321: Запускаю и вот у нас нейм, это Андрей и мы пишем. Привет, Андрей.
322: Давайте для наглядности сделаю вот так.
323: Name запущу. И вот name. Андрей, привет, Андрей. Я могу эту функцию также вызвать, много раз задать тут разные имена Иван, Костя, Владислав.
324: Давайте запущу. И вот видим у нас сначала. Андрей, привет. Андрей. Иван, привет. Иван. Костя, привет. Костя. Владислав, привет, Владислав. Ну, я думаю, тут понятно. Давайте идти дальше. Мы можем здесь ещё указать возраст, да?
325: Так, age.
326: И давайте здесь сделаем эйдж эйдж. Сейчас у нас будет ошибка, потому что мы, ой, у нас сейчас ничего не будет. Мы потому что не вызвали эту функцию, да, нам нужно вызвать также эту функцию указать.
327: Имя. Ну пусть будет опять Андрей, если я сейчас запущу, у меня будет опять не будет ошибки, но вот здесь age, у нас будет нил, потому что мы не указали возраст. Давайте укажем возраст, например, это будет
328: 20 лет запускаем и name. Андрей эйч 20.
329: Давайте допишем вот этот принт. Привет, Андрей, тебе.
330: Тут я делаю опять двоеточие.
331: Ну или могу запятую поставить, без разницы. Эйдж лет запускаю. Вот имя Андрей, возраст 20. Привет, Андрей, тебе 20 лет, а тут поставлю запятую.
332: Давайте сделаем тоже самое, но уже не для Андрея, а для Владимира, Владимира. И пусть ему будет 35. Запускаем. Привет, Владимир. Тебе 35 лет. Вот у нас сначала Андрей эйч.
333: 20. Потом Владимир эйч 35. Все, как мы и указали. Андрей 20, Владимир 35. Так, ну тут вроде тоже должно быть все понятно. Если непонятно, практикуемся. Так, давайте пойдём дальше. Мы создаём функцию, которая называется сам.
334: А. Б. Мы возвращаем, а плюс б, давайте я создам переменную result и вызываем эту функцию, и здесь указываем, чему будет равно. А, и б. Ну пусть это будет 50 и 50, как думаете?
335: Что будет храниться у меня вот этой вот переменной print result, что у меня вот здесь выведется, если у меня are равно 50 б, равно 50, и мы здесь делаем, а плюс б, и возвращаем вот это, то есть
336: Вот тут у меня 100 будет, и мы вот эту 100 возвращаем. То есть мы её вот сюда переносим, отсюда мы переносим вот сюда и чему у меня будет резалт. Давайте проверим, как видим.
337: Result, у нас равен 100. Давайте сделаем резалт 2. Вот эту переменную назовём резалт 2. Здесь я сложу 100 и 150. Так.
338: Тут у меня будет 100, вот тут у меня 150, 100 + 150 равно 250. То есть у меня это делает return 250. То есть вот так бы я сделал, да, что у меня будет храниться в переменной.
339: Резал 2. Давайте проверим. Ой, здесь у нас 100. Так вот, тут я запринтил ту же самую переменную. Надо написать print result. 2 запускаем 100 и 250. То есть
340: 100, вот в а хранится 100, да, а в бэ уже хранится 150, и мы делаем 100 + 150. И вот это значение мы возвращаем вот эту вот переменную, а тут у нас 50, 50, а равно 50 б равно 50.
341: 50 + 50 равно 100. И мы 100 возвращаем в эту переменную. Давайте создадим новую переменную, которая будет называться резалт 3. И здесь я делаю резалт 1, ну то есть обычный резалт 2 и
342: Сам, вот и.
343: 50 + 50 равно 100. И мы 100 возвращаем в эту переменную. Давайте создадим новую переменную, которая будет называться резалт 3. И здесь я делаю сам резалт 1, ну то есть обычный резалт. Вот, и 2, и
344: Давайте за принчу эту переменную. То есть что мы тут делаем? Резалт 50 + 50. Это у нас 100. Вот здесь у нас хранится значение 100. Здесь у нас хранится значение 250 и мы вот функцию сам запихиваем значение 100 и значение 250.
345: То есть 100, вот 100, да, 100 + 250, 100 + 250 равно 350. Давайте проверим. У нас вот сейчас должно быть значение 350.
346: Запускаем и, да, все правильно. 100, 250, 350. Мы можем вот этот результат, который мы получим с функцией sum, потом его также где-то использовать в каких-то вычислениях, там ещё что-то, да, вот это ключевое слово return. Что
347: Делает, оно возвращает нам значение, которое мы вот тут получим. Поэтому у нас вот такой вот и был результат. Мы могли бы сделать просто вот так, да, принт, а плюс б, но, ой, а плюс б, но только уже
348: Мы бы делали сам 100.
349: И 100, давайте я это, например, занесу в переменную, да, local. А, ну или пусть будет это хоть как называется, вообще без разницы. Рез. Давайте назову и запринтует. Запускаю.
350: И видим у нас 200 вылезло и neil 200 это у нас результат который мы вот здесь делали да, в функции, а плюс б а neil это у нас сам рез, то есть мы не сохранили значение вот этой переменной рез, потому что мы не возвращали его, не делали.
351: Return, return с английского это вернуть. То есть мы значение это возвращаем в переменную. Вот return. А плюс б давайте ещё раз запустим 100, 250, 350. Почему 100? Потому что 50 + 50 ретерн, а
352: Плюс б, то есть, а + 50, мы это значение 100 возвращаем в нашу переменную. Потом у нас идёт 250, 100 + 150, это у нас 250. Вот, а плюс б, то есть 100 и 150, это у нас 200.
353: 50. И мы вот это 250 ретерн возвращаем сюда, в эту переменную, заносим в эту переменную. И здесь также резалт. 3. Some result. Result. 1 у нас 100, это, это у нас 100 и
354: Зал 2, это у нас 250, то есть 100 + 250. Вот, вот здесь в, а сейчас вот в этом случае у нас в а хранится 100, вот здесь в b хранится 250 100 + 250 равно 350.
355: И мы 350 возвращаем в переменную резол. Так, ну я вам показал базовое использование функции. Давайте это закомментируем. Создам новую переменную, которую назову, ну, как я её назову, пусть будет.
356: Random и здесь я пишу маф точка рандом от 1 до 100. Это у нас встроенные функции роблокса мы сейчас будем их разбирать что такое вот здесь вот 1 и 100 это у нас любой
357: Значение от 1 до 100. То есть у нас в переменной рандом будет храниться любое значение от 1 до 100. Давайте проверим принт рандом. Вот у меня сейчас 96 в нём хранится, то есть мне от 1 до
358: Star выпало 96. Давайте я сделаю так много раз и проверим, выпадет ли мне меньше единицы или больше сотни. Давайте сделаем другим способом. Я вот это удалю, сделаю цикл for ai равно
359: Но от единицы до 1000 здесь делаю рандом.
360: И давайте сделаю, если рандом.
361: Больше, больше ну давайте сначала так. Ну хотя да, больше 100 или random меньше единицы, то print тут какая-то ошибка давайте запустим и проверим.
362: Может ли наш рандом ошибаться? Запускаю.
363: Как видим никакой ошибки нет, давайте вот это я удалю и напишу просто print random посмотрим какие значения наш рандом выдаёт.
364: Вот видим, он нам выдаёт вообще всегда разные значения. То есть они не совпадают. Ну, бывает. Вот. Но это редко. Я могу здесь указать от 1 до 1000, да, запущу. И вот у меня от единицы до 1000 оно
365: То есть вот значение 700, 500, 880 51.
366: 26. Тут было 15. То есть оно не выходит за предел, вот этот от 1 до 1000. Оно строго в этом пределе работает. Я могу здесь написать, например, не от 1 до 1000, а от 100 до двухста. И вот
367: Оно у меня будет в этом пределе работать от 100 до двухста. Вот даже где-то 200 выпало. Только что видел. Я могу вот тут в фильтрах написать 200. Вот мне сколько раз выпало 200 и единичка мне, ну, короче, рандом.
368: Работает. Хорошо, давайте разберём следующую встроенную функцию. Я не буду создавать переменную, просто напишу принт маф Флур и, например, 3. Давайте запущу. Видим, у нас ничего не изменилось. Что это такое, а?
369: Если я напишу 3 точка 8, то есть 3,8 я запущу. И у меня, как видим, вывелось 3, да, если я напишу 3 точка 9, 9, 9, 9, как видим.
370: У меня все равно вывелось 3. То есть, что делает малур. 1 вот эту точку, считай, просто убирает, да, и у нас вот оставляется 3. То есть я могу просто написать print 3 точка 9, 9, 9, 9, да? Ну вот сделаю, как тут
371: Нулей сколько у меня?
372: Вот тут у меня выведется такое число, да, которое мы описали, а здесь у меня выведется просто тройка. То есть оно просто убирает точку и все, что после точки давайте это закомментируем и разберём следующую функцию. Это у нас маф сейл и
373: Здесь я напишу также 3 ничего нету.
374: Ну, если я напишу 3 точка 0 1, да, то у меня уже видим 4. То есть оно округляет в большую сторону, если вот это у нас округляет в меньшую сторону, оно просто точку убирает, да? А вот тут, если у меня больше тройки уже, да?
375: То есть 3 точка 0 1 или даже 3 точка 00:00, 0 1, да, оно у меня округлит в большую сторону. То есть четвёрка это у нас. Я здесь могу написать, например, 100.
376: Точка 00:00 1 запускаю и у меня 101 я могу сделать вот так. 100 + 1 точка. Ну давайте 3 точка 0 0 5. Вот какой у меня здесь
377: Значение выведится 100 + 3. Это у нас 13 и + 5/1000. Это у нас
378: 100 103, точка 0 0 5, да, вот.
379: Вот так давайте сделаю без math, сейла.
380: Запускаем. И вот у нас вывелось 103 точка 0 0 4, и здесь 104. То есть она у нас округляет в большую сторону. Так мы разобрали базовые вот эти функции математические. Да, string у нас сейчас не будет, потому что
381: Это более сложно, как по мне, мы это разберём во 2 части. Если вы наберёте много лайков, будет хорошая отдача. Мы во 2 части разберём стринг полностью от а до я, ну не прям от, а до я. А вот такие вот базовые основы и чуть чуть углубимся. Давайте
382: Сейчас разберём более сложные уже математически давайте сейчас разберём уже более сложные встроенные функции роблокса. Вот это я выключу, да, скрипт создам новый и смотрите.
383: Я могу создать какой-то объект с помощью функции. Давайте назову его парт. Так здесь у меня есть парты вот этот. Давайте парт я удалю, чтобы он нам не мешался и напишу локал парт равно инстанс точка нью и
384: Пишу парт, да, и давайте запринти этот парт, запускаю и как видим, вот мы создали какой-то part, но его вокруг нас нигде нету. Почему его нету? Потому что он создан
385: Он просто вне нашей игры, он как бы в нашей игре, но не в нашем вот этом пространстве, да, он просто там где-то летает в таблицах, существует. Нам нужно его расположить в наш мир, вот этот, да, мы
386: Пишем парт точка парент равно воркспейс запускаем давайте нажму.
387: И вот видим, у нас парт уже где-то есть, но все равно где он, а у нас он вот находится, да, вот наш парт маленький такой доудалить, но он уже есть. Мы его, конечно, не видим. Вот так, да, но он
388: Вот тут вот где-то есть давайте его переместим чуть повыше мы пишем парт точка позишн, равно устанавливаем 0 10 0, то есть мы его поднимаем наверх на 10.
389: Suits. И вот видим наш парт. Вот он.
390: Да, это он все чётко то есть с помощью вот этой функции instant мы можем создавать парты и менять все его свойства то есть какие есть свойства у парта. Давайте я просто вот так создам парт, назову его да, вообще без разницы.
391: Как я его назову какие есть свойства у sparta мы это уже поверхностно разбирали у нас есть spice да 10 10 10 это размер есть ифрейм ориджин дак
392: I can touch. Это у нас физика конкола, контач, то есть коколай, это он не сможет взаимодействовать с другими объектами. Что у нас ещё здесь есть? Position, я могу его также вот у меня здесь сейчас стоит позиция 5, но я могу сделать
393: 10 и вот он у меня переместился наверх.
394: Ну вот эти свойства все мы можем менять в скрипте. Да, я могу здесь колор поменять также вот где у нас колор.
395: Давайте сделаю красный вот тут я скопирую это значение например и напишу здесь парт парт, точка color равно from о нет color точка Фром.
396: И вставлю вот это значение. Или я могу просто тут выбрать, да, его также, ну пусть он будет жёлтый такой или синий, да, давайте запустим. И вот у нас создался наш синий парт.
397: Я ему, я могу ему изменить также сайсс, там хоть че, но мы это сейчас не будем делать. Мы перейдём к следующей функции. Давайте представим, что нам нужно склонировать этот парт, то есть создать точно такой же. Мы могли бы сделать, конечно, вот так, да, оно бы
398: Работала.
399: Вот у нас 2 точно таких же парта одинаковых, но этот вариант, например, меня не устраивает, потому что тут надо опять все прописывать, указывать, да, что я хочу сделать. Я давайте сделаю так. Локал парт 2 равно парт клон.
400: Клон это с английского клонировать? Да, все очевидно. И напишу парт 2 точка парнт равно воркспейс. То есть нам также нужно указать, где он будет появляться. Родители. Его родителем будет work space.
401: И, как видим, у нас создалось также 2 одинаковых парта, но при этом я здесь укказал меньше свойства. То есть я просто клонировал его и указал парент, это вот у нас воркспейс. То есть я могу здесь указать парент любой, например,
402: Game точка репликейт сторедж и вот смотрим он бы у меня вот здесь хранился в репликейт сторедж а так я указываю, чтобы он хранился в воркспейсе. Вот парент воркспейс, если я уберу пар,
403: Давайте запущу, то у меня создастся 1 part, только 2 у меня где-то тут просто существует, но мы его не видим, давайте сделаем, чтобы у меня создавалось таких много Партов.
404: С помощью цикла for ai равно от 1 до 10 ну или пусть даже ну ладно, пусть будет из 10, делаю вот так и color давайте с помощью мараном с помощью рандома здесь сделаем.
405: Рандомные цвета маф точка рандом.
406: От единицы до двухста 55 или до скольки тут от нуля, да? Или сейчас не помню, от нуля, да.
407: Это у нас цвета rgb, то есть красный джи, это зелёный б, это blue вот у нас будут сейчас различные цвета. Вот как видим, у нас
408: У всех у каждого парта разный цвет, давайте ещё сделаем разный размер то есть я укажу вот здесь парт точка color ой нет, парт, точка сайсс, вектор 3 и.
409: Также маф.
410: Точка рандом от единицы до 10. Пусть будет. И это мне надо 10 раз повторить.
411: Я запускаю и вот как видим, у нас создалось 10 Партов разного цвета и разного размера то есть мы сочетаем вот эти все функции мы сочетаем все, что мы выучили цикл создание объекта
412: Позиции его color с помощью маф рандома сайс с помощью маф рандома и указываем парм так ну мы эту тему пока что закончили давайте приступать к следующей. Итак, сейчас мы разберём что такое ивенты. Смотрите.
413: Представим, у нас есть вот такой вот парт, да, ну это 1 из эвентов, мы сейчас разберём и на нём я попробую рассказать суть ивентов. Вот у нас есть part, представим, что это какой-то у нас хитбокс, да, вот
414: Его назову хитбокс, сделаю ему красный цвет, такой, как у хитбоксов. И нам нужно, что когда игрок подходит к этому хит боксу, касается его или входит в него. Вот я сделаю здесь
415: Да, поменьше. И прозрачность ему сделаю. Вот когда игрок у нас входит в этот хитбокс, нам бы сообщалось об этом, что хитбокс коснулся игрока, и мы могли бы с этим что-то делать, да, какой-то
416: Скрипт воспроизводить. Давайте постараемся сейчас это сделать. Создаём новый скрипт, указываем наш хитбокс воркспейс точка хитбокс и вот хитбокс точка тачит.
417: Это у нас и есть событие. Давайте посмотрим, какие вообще ещё есть тут события. Бокс, точка. Вот это у нас свойство просто, да. А вот тачит вот у нас где такая молния, робек, скрипт сигнал, это у нас события.
418: Есть материал. Вот чилд адет. Это тоже у нас событие чилд. Рему тоже событие чендже это все у нас событие достроин та ченде. Но сейчас мы именно разберём. Событие тачит самое базовое, простое событие. Мы вот тут пишем.
419: Хитбокс точка тачит коннект. То есть мы к вот этому событию тачит, когда кто-то прикасается, мы подключаем функцию безымянную функцию. То есть эта функция никак не называется. Это просто function, как я вот тут написал фанкшн хит, да, и тут
420: У меня че то было вот тоже самое и она сама вызывается, она вызывается в том случае, когда хитбокс коснулся чего-либо. Вот давайте напишу вот тут принт хит хит в нашем случае это
421: То, чего коснулся хитбокс, то если хитбокс коснётся какого-то другого парта, да, вот я создам парт, если хит бокс коснётся с партом вот этим, то у нас тут в хит вот это
422: Хит в этой переменной будет храниться вот этот наш парт. Если у нас коснётся игрок вот этого хитбокс, то в хит будет игрок, точнее, часть игрока, например, вот левая рука, да, вот он рукой.
423: Касается плечом, головой да, у нас это все будет в hit box показываться то, что хитбокс коснулся нашего игрока какой-то части тела вот давайте мы тут принт хит, и я сейчас это запущу вообще, я тут должен сде.
424: Anchor у хитбокса нашего.
425: Делаю. Черт, запускаю. Так, давайте я вот подхожу, касаюсь рукой, давайте удалю заново сделаю. Вот я потихоньку видим. У меня левая рука, да, коснулась. Потом коснулся у нас хэнд.
426: Это, то есть мой аксессуар, вот этот вот, вот левая рука, аксессуар, левая нога у нас коснулась, потому что у меня тут анимация. Вот видим, у меня анимация заиграла, и я коснулся ногой. Я если войду полностью, то я
427: Полностью коснулся хитбокс, вот если я нахожусь в hit box и тут двигаюсь, то, как видим, ничего не происходит, но если я прыгну, то я выхожу из хит бокса и опять захожу, и это уже как бы новое действие, новый event.
428: Новый сигнал срабатывает. То есть что такое ивенты с английского вообще ивенты это у нас событие. То есть это событие, это сигнал о том, что что-то произошло в игре. В нашем случае это у нас тачит мы хитбоксом.
429: Прикоснулись к к чему-либо. Вот точка тачит у нас обозначает то, что мы коснулись чего-либо. Давайте ещё сделаем хитбокс точка тач эндед.
430: Также соединяем его с функцией хит и тут также пишем хит, а здесь давайте напишу. Вошёл в хитбокс двоеточие хит.
431: А тут я напишу, уже вышел с хитбокса, сделаю хитбокс чуть побольше, например, вот такого размера, да?
432: И запущу вот я подхожу к hit box, касаюсь рукой вот мне пишет, что правая рука вошла в хитбокс вот, видимо, я двигаюсь, кручусь и мне все время пишет вот я вхожу в хитбокс все, я вошёл в хитбокс полностью, я тут.
433: Двигаюсь, ничего не происходит, но стоит мне выйти с этого хитбокса. У нас вот пишет, вышел с хитбокса. Если я опять выйду, то мне пишет, вошёл хитбокс, я выхожу, и вот я полностью выхожу с хитбокса. Все мои части.
434: Эти эвенты есть не только в партах, но есть и в гуишка. Давайте создадим какую-нибудь гуи базовую. Стартер гуи создаём скрин гуй. Здесь фрейм и здесь текст батон.
435: Можно просто сразу текст батон создать. Вот у нас текст батон для этого нам нужен сейчас создать локальный скрипт. Вот тут я создаю локальный скрипт, пишу локал текст баттон равно
436: Ещё перед этим я должен указать игрока. Локал плеер, равно game точка плеерс точка локал плеер. То есть это мы наш игрок. И здесь я указываю плеер точка плеер гуи точка скрин гуи точка.
437: Текст батон и пишу текст батон точка маус баттон. 1 клик коннект. И вот сейчас что это значит? Видим здесь тоже молния, да, вот молния, вот молния, вот это все молния, это значит.
438: Это у нас ивенты, события, сигналы. Ну, я могу выбрать вот батон 1 клик, да, и давайте я запущу это сейчас так, тут у нас ошибка, потому что надо сделать вот так, конечно же.
439: И запускаю. Вот сейчас у нас ошибки нет, я тыкаю и вот видим, у меня пишет hello, world, когда я тыкаю на вот эту гуишки, это у нас есть сигнал событие или по английскому ивент, давайте здесь напишем подробную информацию, то есть нажал на
440: Кнопку мыши по gui или просто давайте вот так нажал по гуи и, например, ещё сделаем текст текст батон точка маус лив, или.
441: Mouse enter и также соединяю это с функцией и пишу print мышка вошла в зону кнопки скопирую вот это вставлю и тут уже напишу не mouse enter a mouse live.
442: Тут у нас мышка вышла с зоны кнопки. Давайте запущу. Вот я провожу, видим, у нас мышка вошла в зону кнопки, мышка вышла с зоны кнопки и вот так я могу делать, могу кликать. Нажал.
443: Pouya и вот я могу сделать здесь какую-нибудь, например, анимацию когда у меня мышка здесь гуишка становится меньше, больше, я тыкаю, какая-то опять анимация происходит, да, и вот это все я могу делать с помощью вот этих ивентов, с помощью этих сигналов
444: Событий. Давайте разберём ещё парочку событий. Давайте укажем всех игроков. Wot плеер гейм, точка плеерс и я напишу плеерс точка плеер адет коннект фанкшн, принт игрок вошёл в игру. И вот здесь я могу
445: Указать игрока, то есть это который игрок заходит в игру. У нас, например, на сервере 5 человек заходит 6 человек. И вот тут вот этой переменной плеер будет тот плеер, который зашёл вот, вот, вот.
446: Этот, например, я, давайте посмотрим, как это работает и будет ли это вообще работать. А если нет, то скажу почему. Вот, видимо, у нас это работает сейчас все отлично. Игрок вошёл в игру. И вот этот игрок это я. Давайте сделаем такой мини тестик.
447: Я вот здесь выбираю сервер и клиент вот здесь печатаю 2, то есть у нас будет 2 игрока. Запускаю, у нас запускается вот 2 окна клиента и 1 сервер. И смотрим, вот у нас 2 игры наши запускаются слева, справа 2 клиента.
448: Вот это сервер у нас посередине и вот видим игрок вошёл в игру плеер 1 вот он player 1 и игрок вошёл в игру плеер 2 what плеер 1, what плеер 2 да.
449: Так, мы закрыли это все, давайте приступим к следующему, давайте сделаем так, чтобы, например, принтился не только плеер, но и черак ер, потому что player и черкто это немного разные. Вот плеер, точка черато, игрок появился в игре.
450: Давайте здесь, чарактер, напишу да, а здесь player сейчас я покажу, в чем разница плеера от Черакшева, выбираю тест, обычный режим и запускаю вот у нас плеер вошёл в игру, это dani и.
451: Charakter появился в игре, это Дани, чем отличается player от чарактер, смотрите, плеер это вот у нас, то есть, что у нас тут у плеера есть у нас плеер гуи, есть вот это вот эти гуишки, которые находятся, вот, то есть, если я вот здесь их удалю,
452: Скринге, да, она у меня вот здесь тоже удалилась. Здесь у нас ещё хранится лидер статс бэкпэк, то что у нас в рюкзаке есть нашем там Тулы всякие, да, а теракте это именно вот это мы физические, тут у нас
453: Наше тело и тоже Тулы будут какие-то, которые мы поместим, но это пока что не важно. Давайте сделаем такую маленькую систему я вот этот хитбокс наш заново включу и
454: Здесь сделаем проверку локал плеер. Нет, давайте вот так. Локал чарактер, равно хит точка парент файнест чайлд хуманоид что такое five?
455: First child это у нас on смотрите, вот у нас плеер наш да, хитбокс касается какой-то части тела вот руки да, он коснулся руки, мы тут пишем, что пишем.
456: Точка. Парент, парент руки. Это у нас наш чарактер рик. Да, и мы здесь ищем фанфест чайлд, хуманоид. Вот хуманоид. То есть это практически тоже самое, что я писал. Так, парент, точка хуманоид, да?
457: Только в этом случае у меня бы была ошибка, то есть fan for child у нас ищет в Риге, то есть хит точка парент, например, рука, точка парент. Вот парент и в этом паренте ищет. Он у нас хуманоид, если нашло.
458: Мы здесь сделаем иф иф чарактер. Ну, давайте сделаем хуманоид все-таки переменную. Если хуманоид, то мы хуманоид. Хуманоид.
459: Take damage будем наносить домак это встроенная функция и мы здесь нанесём, например, пятёрочку ну или двоечку. Без разницы. Давайте я запущу и проверим. Так вот, этот наш хитбокс я касаюсь и видим
460: Хпп становится меньше, вот я получаю домаг.
461: Все работает и давайте я ещё сделаю вот тут local хуманоид равно чарактер, точка хуманоид. И тут я пишу.
462: Пишу хуманоид точка дайт. Смотрите, если у нас вот тут подсказок нет никаких, да, мы можем вот тут поставить двоеточие хуманоид. И смотрите, сейчас я пишу хуманоид точка и вот у меня появи.
463: Все подсказки, то есть какие есть свойства у хуманоид, какие есть у него ивенты. Вот я пишу, дайт коннект, фанкшн и давайте напишем. Принт игрок умер здесь не player, а чарактер, ну или
464: Пусть будет плеер, без разницы в этом случае давайте проверим, запускаем, подходим к hit box и пытаемся умереть, посмотрим, что из этого получится.
465: Так вот, я наношу себе домак.
466: Вот я умер, и мне пишется игрок умер и кто именно? Вот это я. Все верно. Давайте попробуем создать такой свой маленький ивент. Это мы закомментируем. И тут я пишу локал май ивент.
467: Равно тут мы пишем инстанс точка нью и создаём ПИН дейбл ивент. И смотрите, тут все также аналогично. Я пишу my event точка вент. То есть почему я ещё пишу точка ивент, потому что вот my event точка это у нас
468: В этом случае у нас отдельный объект, то есть я могу его создать. Вот так даже, смотрите, бин дейбл ивент, да, у этого bin дейбл ивента есть свои свойства name, парент, вот my event, точка name пар.
469: Но нам нужно именно event, здесь, может, его и нет, но оно есть вот я пишу ивент, коннект фанкшн и пишу print event сработал. Сейчас у нас этот ивент никогда не сработает, но давайте.
470: Сделаю, например, через 5 секунд он у нас должен сработать. Я пишу мой ивент фаер, и давайте проверим, работает или нет. Вот я запустил, сейчас пройдёт время, и у нас ивент сработал. Я также могу сюда.
471: Давайте, что там, например, andrew. И вот здесь у нас будет name. И давайте я этот name запринтуй. Давайте посмотрим. Запускаем. Проходит.
472: 5 секунд ждём. И вот ивент сработал, эндрю. То есть мы можем сюда также передавать параметры какие-то и их использовать в своих целях. Мы создали свой собственный ивент буквально за минуту. Так мы разобрались, что такое
473: Венты теперь давайте посмотрим что такое Тулы мы добавляем стартер пак тул вот на плюсик и tool, называем его как угодно, вообще без разницы ну пусть так и называется tool и добавляем в него.
474: Script да, давайте вот эти я скрипты у нас выключу, чтобы они нам не мешались, и вот эту гуишка мы делали, я тоже её выключу, чтоб она нам не Меша.
475: Делается это вот так все легко и быстро.
476: Так, в этом скрипте мы должны указать сам тул, то есть скрипт точка парент. И смотрите, я могу написать тул точка. И вот у меня здесь опять есть какие-то свойства и сигналы, события, да, ивент?
477: У меня здесь экью ет активейтед, changed, destroying некупит и ещё много чего. Да, давайте сделаю самое простое. Это вот активейтед и вот что это у нас значит, ну, тут уже мне
478: Искусственный интеллект дописал это значит нажал по инструменту давайте протестим я запускаю, выбираю этот тул, тыкаю ничего не происходит. Почему так потому что у нас в Туле нету никакого хендла. То есть у нас тул обычно
479: Thule это какой-то меч да ещё че то там у нас есть хендл то есть какой-то предмет у нас просто тул без ничего здесь мы должны вот в свойствах зайти в tool, пролистать чуть ниже и вот тут есть рекерс хендл, мы его выключаем, заходим
480: Берём опять в руки тыкаю и вот сейчас у меня все работает нажал по инструменту давайте здесь дальше че у нас есть tool точка эквипе коннект фанкшн и
481: Print, давайте сделаю. Взял в руки. Тут у нас также есть тут an acute, тут напишу, убрал сру.
482: Tool. Давайте запущу, проверим. Вот сейчас я тыкаю, ничего не происходит. Беру в руки, там пишется, что взял в руки, убираю, беру, убираю, тыкаю, все работает, тыкаю. Ничего не работает. То есть активейтед.
483: Работает только в том случае, когда у нас он в руках, когда кьюпид равно true вот я сейчас тыкаю, не работает, тыкаю, работает. Давайте сделаем тул вот этот вот, чтобы он у нас создавал парты, мы вот здесь должны
484: Активейтед.
485: Давайте создадим новую папку, отдельную, где у нас будут все парты храниться вот folder и назовём партс её да, вот этот тул я создам ещё 1 это будет create part.
486: А это у нас будет delete, парт. Вот в этом Туле, где create part, мы будем писать скрипт, который будет у нас на нажатие Тула какой-то создавать новый парт. Мы пишем locale парт инстанс точка н.
487: Part ii должны указать мы, где будет создаваться этот парт он у нас парт точка, парент, равно воркспейс точка партс партс вот да, и давайте ему сделаем рандомный цвет.
488: Part точка color но from нет, точнее колор 3, точка Фром, эрджиби и также делаем маф точка рандом от нуля до двухста 55 это мы делаем 3 раза.
489: Вот у нас скрипт готов на этот тул. И давайте сделаем ещё на этот тул здесь. Я че делаю? Я должен найти парт этот, ну, вообще любой, который находится в нашей Папке.
490: Точка партс фанфест чайлд.
491: И пишу парт. Если мы нашли парт, то мы его убираем, да, то есть что такое ещё раз five ферст чайлд он у нас находит, в данном случае мы ищем, мы искать будем в Папке партс.
492: Если у нас не нашло, то условие вот это не сработает, да, если у нас оно нашло, то у нас условие срабатывает. То есть, когда у нас такой сомнительный момент фифти фифти, когда есть этот парт или нет, или
493: Что мы тут ищем, то тогда мы пишем Файфер чайлд. Это у нас такая как бы проверка есть или нету. Если мы сомневаемся так давайте запустим и посмотрим вот create part, я тыкаю и вот видим у нас из под земли создаю
494: Part делит парт. Вот у нас удаляется парт. Давайте сделаем позицию чуть повыше, чтобы они более наглядно создавались. Парт точка позишн равно вектор 3, точка нью 0 15 0.
495: И смотрим, что у нас получится.
496: Я тыкаю, и вот у нас создаются парты, давайте создам много их.
497: Удаляем и вот видим, у нас рандомно они удаляются
498: Создаю и удаляю, создал 2 парта тыкаю и они также удаляются. Они вообще на самом деле не рандомно удаляются, начиная с 1. То есть сейчас у нас удалится вот этот парт, потом вот этот, потом вот это.
499: И вот так вот. Ну, это пока что не суть важно так, мы разобрались с ивентами и с тулами, совместили там всякие вещи, да, потестили примеры, накидали. Так, ну, я думаю, мы разобрались, что такое ивенты, события, сигналы, это
500: Все одно и то же, в принципе, практически.
501: Так, ну мы плюс минус разобрались, что такое у нас ивенты. Да, давайте приступим к следующему. Следующее. Над чем мы будем работать, что мы будем изучать? Это лидер статс. Все, наверное, вот тут сверху справа видели там всякие значения мани кэш.
502: Че там ещё есть rebirth? Да, вот как раз-таки это мы сейчас и будем создавать. Давайте создадим новый скрипт.
503: Я назову его лидер статс. Без разницы, как он называется скрипт, но вот так вот создаём здесь переменную плеерс гейм точка плеерс, плеерс точка плеер адет коннект, фанкшн, плеер. Вот когда
504: У нас заходит игрок, мы будем создавать для каждого игрока отдельную лидер статс. Создаём переменную, которая будет хранить какую-то папку. Да, вот папка у нас. И эту папку мы должны назвать
505: Лидер статс обязательно вот так вот с маленькой буквы лидер статс на английском укажем. Парент у нас парент плеер и вот у нас уже в принципе
506: Искусственный интеллект выдаёт нам, что писать вот cash да, кэш точка name равно кэш кэш точка валью, равно 100 и cash точка парент равно лидер статс, давайте запущу и проверю. Как видим, у нас все работает вот кэш 100.
507: Как у нас это все работает наглядно. Давайте покажу. Вот плеерс это я, Даня. И вот у нас тут папка лидер статс, которую мы создали, вот лидер статс точка name лидер статс. И у нас здесь есть кэш. Вот que
508: Это int value, да, вот у нас инт валью точка name cache. Мы вот этому инт валью сделали название кэш и value выдали ему 100
509: То есть, смотрите, вот эти переменные, они никак не влияют, я могу их назвать вот так, ls, да, вот это могу назвать. Ну, вообще без разницы, как переменные, они ни на че не влияют тут вообще точнее.
510: Название их вот я запускаю и оно все также все равно будет работать. Плеерс, Дания, лидер Стас. И вот видим, все также работает тут название лидер статс, как мы указывали, точка name лидер статс и
511: Cash, название кэш все также нашего инвали, я могу создать также и какое-то другое значение там реберс, киллы, пауэр, ещё хоть че вообще без разницы, давайте, например, это будет power равно.
512: Мы создаём, например это у нас будет уже number value да, давайте вот это я скопирую.
513: Здесь у нас не cash power сколько у нас силы, пусть будет изначально 0, да и денег пусть будет 0, и мы это перекидываем в папку лидер статс давайте я ещё создам локал ранг равно инстанс точка нью это у нас.
514: У нас будет уже string value, какой name у нас будет у нашего ранга. Мы делаем вот ранг. То есть что у нас в лидер стациях, это у нас и есть ранг, а value мы делаем ранг точка.
515: Ранг точка валью. Извиняюсь, мы здесь делаем админ, да? Ну или пусть будет даже овнер и мы это закидываем в сам лидер статс парент.
516: Ой.
517: Ой, ранг точка валью. Извиняюсь, мы здесь делаем админ, да? Ну или пусть будет даже овнер, и мы это закидываем в сам лидер, статс парент.
518: Лидер статс я запускаю и вот у нас здесь есть power и rang конечно, кэш у нас не отображается, фиг знает почему, но может тут я что-то накосячил, но да, я тут накосячил вот вот почему у нас кэш.
519: Не было сейчас у нас все будет и вот у нас сейчас все будет кэш 0 power 0 и ранг овнер я могу здесь указать какой-то другой ранг?
520: Я могу здесь написать, например, ранг. Ну, я не знаю, че тут ранг.
521: Пусть будет ранг здесь напишу, просто не owner, а мега админ запущу и вот у меня сейчас будет ранг не owner, а мега админ даже не влезает видим и давайте сейчас сделаем какой-нибудь тул стартер пак.
522: Tool. Напишу гив пауэр. Вот. Короче, пауэр будет также выключаем здесь рекер хендел и создаю скрипт. Тут также
523: Пишу локал тул, равно скрипт парент тул точка активейтед, коннект фанкшн. И тут я должен найти игрока нашего с этого Тула. Какие варианты? Давайте.
524: Я напишу, напишу вот так, например, принт тул точка парент. У нас это бэкпэк, да, то есть, смотрите, где у нас сейчас хранится тул тул у нас хранится сейчас в бэкпэкер пауэр. Вот.
525: Thule это у нас вот он находится a tool точка парент это у нас бэкпэк а если я ещё раз здесь напишу парент, то это у нас уже мы Даня а здесь у нас есть лидер статс мы можем что-то изменять здесь вот давайте мы сделаем
526: Чтобы когда мы тыкали по Тулу, у нас добавлялось пауэр, я здесь пишу локал плеер, равно тул точка парент, точка парент и здесь напишу, локал лидер статс равно
527: Плеер точка лидер статс и здесь я пишу лидер статс точка power точка валью ну вот давайте запустим и проверим, я тыкаю и, как видим, все работает.
528: У меня прибавляется сила, я могу сделать тоже самое и с кэшем создать новый тул, который будет мне cash добавлять. Но я думаю, это вы сами сможете сделать. Ничего страшного. Вот как раз попрактикуйтесь.
529: Без моей помощи, но мы приступаем к следующей теме, думаю здесь все понятно ну конечно новичкам не все сразу понятно, но вы попрактикуйтесь там, напишите тул, создайте точнее ещё 1 tool попробуйте сделать, чтобы у вас добавлялось мани.
530: Потом сделать ещё 1 тул, чтобы у вас убавлялось мани на клик мыши, да, как мы делали вот в прошлом, там парты добавлялись, и мы их могли ещё убавлять. Вот также тут попрактикуйтесь, поделайте этого.
531: 100% поможет лишним не будет. Особенно если вы новичок, если вам что-то непонятно, то заходите в telegram и пишите мне, строчите. Я всегда отвечу следующее, что мы разберём это таблицы, что такое вообще таблицы, таблицы. Это
532: Структура данных, которая может хранить несколько значений в 1 объекте луа, есть вообще 2 вида таблиц. Это массивы и словари. Давайте сначала разберём то, что попроще. То есть это массивы. Создаём новый скрипт, назову его эйбл.
533: Это я закрою тут и смотрите например local numbers и тут у меня будут вообще любые значения 1, 10, 2, 8 900.
534: От - 5. Ну и пусть будет ещё 76, 75, 76. Без разницы. Так что это у нас такое, это у нас вот есть таблица. А если конкретнее массив, давайте я на
535: Print numbers, что нам запринтит вот у нас тут какие-то 3 точки непонятные, но если мы это откроем, у нас вот под индексом 1, у нас однёрка под индексом 2.
536: Десятка под индексом 3 у нас двойка и вот так вот идёт, идёт. Что такое это у нас этот индекс. Может помните, как в цикле было for ai равно 1 10. Вот это у нас тоже тут индекс и вот тут
537: Тоже у нас индекс, да, сколько у нас тут их? 1, 2, 3, 4, 5, 6, 7. Да, вот сейчас мы воспользуемся как раз циклом этим, да. Вот смотрите, вот это 1 индекс, вот это 2 индекс, вот это 3.
538: Индекс это 4 индекс, 5 индекс, 6 индекс, 7 индекс. Вот если я напишу принт намберс под 4 индексом, что у меня будет? Какое число у меня будет тут не двойка, не 900.
539: - 5 у меня будет здесь 8. Давайте проверим, прав я или нет. Да, я полностью прав. Вот у меня восьмёрка вывелась, что у меня будет под 1 индексом. У меня будет, конечно же, единичка, а
540: Что у меня будет под 3 индексом, под 3 индексом? У меня двоечка. Что у меня будет под 11 индексом. Интересно, а у меня здесь neel, у меня ничего нету под ним хорошо, а что?
541: У меня будет под минус 1 индексом. У меня тут тоже ни так. Вот мы примерно разобрались, что такое у нас индексы. Да, давайте мы сделаем вот так, for i от 1 до 7. Почему от 1 до 7?
542: Потому что у нас 1 индекс, вот 7 индекс, и мы здесь напишем вот так вот print numbers i i. У нас сначала идёт 1, вот 1, 2, 3, 4, 5, 6.
543: 7 это все, чему у нас равен y сначала 1, потом 2, потом 3. И так до 7. Вот видим, у меня вывелась вся наша вот эта табличка, то есть 1, 10, 2, 8, 900, - 5, 76. Я могу
544: Вот так вот пройтись по нашему массивчику, но есть ещё 1 способ, да, но давайте пока что его отложим чуть чуть на позже. Я вам просто покажу, что вот здесь я могу хранить не только числа какие-то, но и, например, какое-то имя. Пусть это будет Иван.
545: Давайте я забрину, точнее запущу. И вот у меня 1 Иван 2 8. То есть среди цифр у нас появился Иван, как-то так. Ну вот так вот у нас может быть давайте я под конец ещё добавлю тру и
546: Ещё добавлю. Ну, я не знаю, че уже добавить. Воркспейс точка парт. Пусть будет так. И тут у нас уже будет не от 1 до 7, от 1 до 8. А хотя нет, стоп.
547: 1, 2, 3, 4, 5, 6, 7, 8. Да, от 1 до 8. Я же добавил 1 я запускаю. И вот видим, у меня 1 потом идёт Иван. Странно. Да, 2, 8, 900 - 5. Потом у меня
548: True а потом вообще у меня идёт парт. Вот этот парт у меня хранится под последним индексом. Так, ну, предположим, я не знаю, индекс у нас туда сколько у нас всего индексов. Че мне тут наугад писать или как? Ну?
549: Смотрите, я могу сделать, например, вот так хэштег вот этот, да, намберс, что у нас получится? У нас получилось все тоже самое, как и в прошлый раз, только я уже не указывал.
550: Какое у меня здесь число будет индекса? Да, то есть я не писал здесь вручную 7. У меня оно здесь автоматизированно. Намберс. У меня здесь 8 их. Я бы мог ошибиться, например, вообще, что значит у нас вот этот знак? Решётка, хэштег, мы
551: Смотрите, давайте напишем принт хэштег намберс, я запущу. Видим, у меня тут вывелось 5. Это значит, сколько у меня вот здесь индексов, сколько у меня здесь значений? Давайте посчитаем. 1, 2, 3, 4, 5, да.
552: Все верно давайте я ещё добавлю вот 100 и 900 запущу и как видим у меня уже 7, я могу также сюда добавить. Не только numbers, могу добавить даже фолс и оно все равно посчитает у меня сейчас будет 8. Вот видим.
553: То есть оно считает, сколько у меня вот здесь индексов, сколько у меня вот здесь значений. Давайте я добавлю здесь ещё - 1000, ха ха ха. И ещё добавлю фолс. Вот.
554: Запускаю и у меня все работает, абсолютно все работает. Также есть 2 вариант как пройтись по этому циклу я пишу for i v in numbers и давайте я запринтуй принт ай ай.
555: И v vi как думаете, что у нас будет здесь я запущу и вот под i у нас 1, 2, 3, 4 и так до 11, потому что вот 1, 2, 3, 4, 5, 6.
556: 7, 8, 9, 10, 11. У меня здесь 11 их, а под в у меня хранится их значение. То есть под 1 индексом у меня единичка под 2 индексом у меня even под 3 индексом у меня.
557: Двоечка под 4 индексом у меня восьмёрочка под 10 индексом, у меня ха ха и под 11 индексом у меня false. Хорошо, давайте, это у нас уже не numbers будет, а просто там сам.
558: Да, или вот ne вообще без разницы как мы это называем, но это у нас уже точно не numbers. Давайте сейчас создадим намберс, который будет реально намберс.
559: Вот будет у нас здесь 1, 5, 20, 30, 10, 40. Так мы плюс минус разобрались, что такое массивы. Давайте ещё разберёмся, как в них что-то добавлять и как из них что-то удалять есть.
560: Много вариантов, точнее 2 варианта как можно удалять и ещё пару вариантов как что-то добавлять давайте рассмотрим самый такой официальный вариант, как что-то добавлять я пишу тейпл.
561: Точка инсерт insert не знаю, как правильно вот тут any, то есть в какую таблицу я буду что-то добавлять и вот тут что я буду именно добавлять давайте тут напишу то, что я добавил, чтобы нам было наглядно видно.
562: Запущу. У нас под индексом 12 хранится то, что я добавил. То есть как работает insert, он под самый конец добавляет то, что я добавил, то, что мы добавляем, вообще без разницы. Тут может быть вот так вот я
563: Давайте запущу и вот видим под конец у нас то, что мы добавили вот этот 3, 2, 1, 3, 1, 2, 3. Тут может быть хоть тру. И вот у нас сейчас будет тут под конец false трум. То есть вообще хоть че у нас тут может быть я могу
564: Опять это написать? Да, здесь у меня будет уже, пусть будет вот такое число большое и, как видим, все работает. Также я могу что-то удалять. Давайте напишем тейбл точка ремув. И вот тут у нас просит пос.
565: Что такое пос, пос, это у нас индекс. То есть с какого индекса мы будем что-то удалять, если я напишу 1 индекс, да, что у меня удалится с 1 индекса? Вот 1 индекс тут, где вот у меня 1 индекс мы удаляем.
566: 1 индекс с вот этой таблицы, с таблицы энни. И вот у меня уже сейчас здесь под 1 индексом хранится Иван, а если я сделаю ещё раз так, то что у меня будет с этой таблицей? Давайте узнаем. Вот у меня здесь уже нет
567: Никакого ивана, никакой единички. И у меня под 1 индексом хранится уже 2. То есть оно удаляет вот это, да. И теперь у меня вот это не 2 индекс, a1. Вот это у меня не, a3.
568: Индекс, a2 это не 4 индекс, a3 или какой там, да, 3. Я аж запутался. Ну и вот так оно просто налево перемещает на строчку налево. Давайте для наглядности я сделаю вот так.
569: То есть сначала у меня под 1 индексом была единичка, потом у меня под 1 индексом двойка у меня, потом под 2 индексом был Иван. Сейчас у меня под 2 индексом восьмёрка. Че у меня было под 8 индексом парт, а сейчас под 8 индексом, ха ха.
570: Я могу вообще, в принципе, вот так писать просто, да, давайте это закомментирую. Я не буду опять-таки удалять принт энни принт энни запускаю и вот так даже лучше. Вот 1 индекс, это у меня единичка, а тут
571: 1 индекс у меня двойка, тут у меня 9 индекс, - 1000, а тут у меня 9 индекс фолс, то есть оно удаляет вот это значение, да, то есть оно удаляет вот это значение, да, и смещает вот теперь у меня вот это 1 индекс потом.
572: Опять удаляю. Оно у меня вот это удаляет и смещает. Теперь у меня вот это 1 индекс, вот это 2 хорошо. А представим, я хочу что-то удалить отсюда, например, ивана, но я не знаю его индекс. Что мне делать?
573: Я пишу также тейбл точка ремув, пишу в какой таблице у нас находится Иван, и пишу table точка файнд Иван, то есть он в этой таблице ищет ивана и возвращает индекс. Так у меня какая-то
574: Ошибка да, у меня тут ошибка, потому что я не написал, в какой таблице мы будем искать ивана. Давайте сейчас проверим, вот смотрим, тут у меня 2 индекс. Иван, а тут у меня уже вообще нету ivan и 2 индекс, у меня двойка, а тут у меня двойка.
575: Под 3 индексом. То есть мы сместили опять налево, мы убрали ивана, вот у нас Иван, мы его убрали, и вот так у нас получилось. То есть единичка у нас также осталась 1 индексом, но ивана нет. И двоечка у нас
576: Индекс восьмёрочка это 3 индекс и так далее. Так, давайте это все закомментируем и теперь посмотрим, что такое у нас словари. Да, давайте создадим словарь, который будет хранить у нас плеер. Статс то ест.
577: Статистику игрока, что у нас будет здесь, в статистике? Ну, пусть будет name, допустим, да, Иван, ну или давайте не player статс, а player инфа, это будет, скорее у нас будет
578: Name age, там 20 мани, сколько у него там Косарь, да? Ну, в принципе этого достаточно. Давайте я напишу принт плеер инфо и запускаем. Вот мы смотрим, что у нас тут age 20, как мы указывали.
579: Mini 1000 и name Иван. Хорошо, допустим, я хочу изменить ему имя. Он переименовался, я пишу плеер инфо точка name. Равно уже Антон, и опять я запринти.
580: Делаю print плеер инфа. Запускаем. Сначала у нас звали его Иван. Теперь у нас его зовут Антон. Все остальные данные такие же. Давайте я изменю ему ещё плеер инфа, точка.
581: Mini он подзаработал чуть чуть денег, 5000 у него.
582: Давайте запустим. Вот видим, тут у нас Иван, у него 1000 денег, и ему 20 лет, а тут у нас Антон, у него 5000 денег, и ему все также 20 лет. И давайте ему изменим возраст.
583: Плеер инфа точка ag плюс равно 3, то есть + 3 годика мы ему накинем вот смотрим тут все также как раз как и должно быть и тут у нас уже age 23 mini 5000 и
584: Антон.
585: Я могу также запринтить именно определённые какие-то его свойства, например, print name и запринтуй, также его инфо. Так, точка ag запускаю. И вот Антон 23. И давай
586: Антон, я могу также запринтить именно определённые какие-то его свойства, например, print name и запринтуй также его инфо. Так, точка ag запускаю. И вот Антон 23. И давай
587: Я напишу, его зовут.
588: Player name, player, info name. Здесь делаю опять скобочки, и ему опять скобочки лет. Давайте пятёрочку добавим и вот так запускаем. И тут.
589: Тут нам пишет, его зовут Антон, и ему 25 лет. И давайте я это сделаю ещё вот тут вот запускаю. Его зовут Иван, и ему 20 лет. Потом он переименовался и теперь его зовут Антон и
590: 25 лет. Хорошо, с этим мы, допустим, разобрались. Давайте теперь также пройдёмся циклом. Как мы можем пройтись циклом уже по такой таблице, по словарю давайте это я закомментирую, не буду удалять и смотрим тут мы делаем
591: For i v in плеер инфо дум делаем тоже самое, что и тут print i print ви запускаем и вот смотрим i это у нас мани а v это у нас.
592: Значение, то есть мани 5000 name, Антон эйдж 25 давайте, чтоб более так красиво выглядело, я сделаю вот так. I я уберу вот тут.
593: Вот это сделаем вот так.
594: Ivi просто и смотрим, что у нас получилось мани 5000, name anton h 25 то есть i вот это i это у нас что-то из вот этого, а v это у нас что-то из.
595: Вот этого если у меня iii age, то v у меня 20, если eye money to ви, у меня 1000, то есть я могу здесь написать инфа, да, а тут value валюта инфы вот этой.
596: Нашего инфо ну и вот в принципе ничего не изменится мани 5000 name anton h 25 давайте это я все закомментирую и представим у нас есть таблица, которая хранит много игроков, слишком много вот такая вот таблица, ну всего лишь 2 игрока.
597: Давайте добавим 3. Также и вот такие у нас значения есть да, как мне отсюда найти плеера 1 и взять у него power смотрите локал пауэр.
598: Ну давайте плеер 1 равно плеер статс точка плеер 1. И здесь я могу сделать print плеер 1. Ну давайте я перед этим просто запринтуй наш плеер статс. Посмотрим, как она выглядит.
599: Вот я её открываю и вот у меня плеер 1, плеер 2 player 3. То есть вот это у нас индекс, а вот это у нас в
600: И что у нас хранится в в у нас хранится ещё 1 таблица, ещё 1 словарь, вот это у нас опять индекс и вот это у нас уже в опять, да, и вот так у каждого как с этим работать. Вот мы написали
601: Local плеер 1 плеер Стас точка плеер 1 и давайте я запринти плеер 1 вот вот это у нас player 1 и вот у нас в player 1 есть money power то есть вот это и вот это в индекс.
602: Ivi давайте я возьму от плеера 1 его мани нет, я сказал мани, значит, будет мани, и у нас 190, давайте проверим, это правда, да, плеер 1, мани у него 190.
603: Хорошо, давайте мы ему изменим мани плеер 1. Давайте plus равно 3 500 и делаю вот этот принт опять.
604: Запускаю и вот у нас 190 + 3 500 равно 3 690 это хорошо, но а если я хочу, например, всем игрокам изменить power или mania, что нам делать? Давайте это я закомментирую опять.
605: И пишу for плеер инфа, ИНН плеер статс дду вот сейчас в player у нас хранится вот это а инфа вот у нас она, да, я должен сделать ещё 1 цикл for статс. Давайте сделаем.
606: Так и value in инфа и что у нас из вот этого получится давайте запустим и посмотрим плеер 1 mami 190 плеер 1 power 100 то есть мы вот этим.
607: 1 циклом 1 цикл у нас. Смотрим, что у нас 1 цикл делает изначально плеер инфо.
608: Вот 1 цикл у нас проходит по вот этой табличке, по вот этому словарю вот у нас вот так оно, да, примерно вот это i, вот это v. И вот если мы вот здесь раскроем, да, у нас вот тут плеер 1, это у нас index of
609: И это у нас вот это, то есть, если напишу ви точка мани, вот оно у нас будет, да, то есть теперь, если я хочу у каждого игрока изменить ему мани, я пишу, смотрим, что
610: Пишу инфо точка мани. Ну, умножу на 10 или даже на 100 и давайте сделаю. Ну вот так так давайте запускаем. И что у нас получается?
611: Player 1 у нас мани 19000, да, мы умножили, где это вот умножили на 100 плеер 2. У нас тут изначально 90000, теперь у нас тут 9000000.
612: Плеер 3 у нас изначально 700, а сейчас у нас здесь 70000. Так, представим, что я хочу добавить нового игрока сюда. Плеер 4. Что я должен?
613: Сделать. Давайте вот это закомментируем, вот это раскомментируем и пишу плеер статс точка плеер 4.
614: Равно и вот тут я указываю ему также power равно пусть будет у него 25 и money у него всего лишь там 110 давайте запустим как видим добавился новый плеер плеер.
615: 4 и все плееры, остальные также сохранились. Так, ну мы таблицы плюс минус разобрали, и давайте сделаем, чтобы, например, когда я касался вот этого парта, у нас прибавлялись деньги.
616: Player 1 что мы делаем, мы пишем давайте вот это стерру, work, space, точка парт.
617: Да, сейчас.
618: Player 1 да что мы делаем, мы пишем давайте вот это стерру сейчас work space, точка парт.
619: Part точка тачит коннект, фанкшн, хит, и мы здесь также пишем хуманоиды нашего, то есть, чтобы только когда я мог прикасаться, прибавлялись деньги, локал хуманоид.
620: А если не то ничего не происходит.
621: То, что это вот это за функция, ой, функция, условия. Вот мы ищем хуманоиды. Если хуманоид нет, то мы ничего не делаем. И че мы делаем? Вот здесь мы плеер статс, точка плеер 1 точка мани.
622: + 100. И давайте запринти наш плеер статс полностью, ну или давайте только player статс, точка, плеер 1, вот так вот запускаю, касаюсь парта бам, сколько у нас он раз видите?
623: Коснулось вот у нас тут сначала mini 290, потом уже 390, потом 490 690 и уже 790 да, а давайте сделаем, чтобы вот тут в player Стас хранилось, не?
624: Не, какие-то обычные плееры, а именно мы, да, типа вот мы заходим на сервер и мы там хранимся этот плеер статс я закомментирую и создам новый локал, плеер, статс равно таблица. И что мы теперь должны делать? Мы вот так пишем гейм.
625: Точка плеерс. Ну или могли заранее указать переменную плеерс, да, и пишем плеер, адет, коннект, фанкшн, плеер. То есть каждый раз, когда на сервер какой-то заходит игрок, срабатывает вот эта функция, теперь мы добавляем плеер, статс.
626: Air равно?
627: И вот так делаем. То есть каждый раз мы когда будем заходить на сервер, точнее каждый раз, когда заходит какой-то игрок на сервер запускается вот это вот, вот эти вот строчки кода, давайте посмотрим, что они делают. Давайте вы
628: Видим плеер, статс до e, плеер, статс после и вот этот скрипт давайте сразу допишем, что мы тут должны дописать вот у нас есть хуманоид, если у нас это не хуманоид, то.
629: Ничего не делается. И теперь мы должны указать local плеер равно game точка плеерс, точка нет get плеер, Фром черат, и чтобы найти черкто, это соответственно.
630: Ну вот моделька да, вот хуманоид, а вот это чиракчи уже и у нас тут в players есть такая функция найти игрока по чиракчи мы пишем хуманоид точка парнт, тут опять делаем проверку, если мы не нашли плеер.
631: То возвращаемся, ничего не делаем. И теперь мы делаем плеер, статс, плеер, мани. + 1000. Пусть будет + 1000. Давайте запустим. Ой, нет, зря вот тут.
632: Надо указать вот так вот.
633: Вот теперь запускаем вот у нас запросилась таблица до, то есть она вот пустая, ничего не содержит в себе и вот таблица после тут у нас какой-то инстанс да, что-то непонятное и мы раскрываем её и тут у нас вот money power что это?
634: За инстанс инстанс это у нас это вот получается здесь не инстанс это отдельный тип данных такой. То есть есть string, есть бульон есть integer number флоу да, а есть
635: Вот инстанс и вот тут написано инстанс нейм инстанса название и его уникальный код. Так, и вот тут уже, собственно говоря, информация этого инстанса. Так вот.
636: Видим, у нас 190 монет, 100 силы. Я касаюсь, меня засчитало 3 раза. Вот у меня изначально было 190 монет, потом 1190, потом 3, 190. Да, давайте ещё раз. Вот.
637: 3 раза коснулся у меня 4, 105, 100 и 6 100. Хорошо. Думаю мы поработали с таблицами, че то усвоили, что-то нет, главное вы попрактикуйтесь ещё, сделайте ещё какие-то примеры там, да, там попробуйте.
638: Я не знаю, заносить что-то в таблицу, то есть в таблицу можно заносить хоть что, хоть парты, хоть стринги, хоть булины, хоть че. Абсолютно все можно занести туда даже функцию, но а мы приступаем к следующему.
639: Ну а теперь мы разберём 1 из самых интересных. Это чем отличается серверный скрипт, да, вот тут, который у нас скрипты находится, вот это все, это серверный от локального. То есть вот как выглядит локальный, да, давайте создадим локальный скрипт.
640: Вот он и вот серверный скрипт обычный. И чем они отличаются? Давайте проверим без теории. Прям на практике, чтоб было понятно. Вот видим, у нас есть part. Давайте я попробую его переместить, я захожу на локальный
641: Скрипт пишу локал ворк спейс нет нет, локал парт, но work space точка парт и через 5 секунд тасковой 5 то есть это мы ждём 5 секунд, через 5 секунд.
642: У нас выполняется парт точка транспор все равно 1. То есть мы его делаем прозрачным. Хорошо, давайте запустим так, у нас тут он че то ругается, да, у нас ругается, потому что надо вот так.
643: Вот сейчас запустим и видим, он у нас стал прозрачным, у нас есть, но он у нас прозрачный, все хорошо как бы, да, все работает. Но если я перейду на сервер, видим, он у нас есть. Вот здесь он у меня есть, а вот здесь его нет.
644: Нету. Странно, да?
645: И вот сейчас, если зайдёт 2 игрок, то у него вот этот парк будет видимым, а у меня нет, в этом вся и суть. В этом все и отличие серверных скриптов от локальных локальные скрипты делают только для
646: 1 игрока, то есть вот для меня в данном случае, а серверные они делают для всех. Давайте я напишу вот этот же скрипт, только уже на сервере.
647: Вот видим, у нас парт ждём, и он у нас пропадает, ну, точнее становится прозрачным, и его нету уже ни на сервере, ни на клиенте, его нигде нету, он есть, но он прозрачный просто, то есть
648: Вот тут он где-то он есть, вот он, да.
649: Но он прозрачный давайте ещё 1 пример сделаем лидер статс то есть мы пишем locale плеерс равно game точка, плеерс плеерс точка плеер адет коннект фанкшн плеер.
650: И тут мы создаём папку.
651: Называем эту папку лидер статс.
652: И присваиваю парент плеер ну и вот сделаем тут ещё many также и давайте теперь сделаем, что когда я касаюсь вот этого парта, у нас меняется значение то есть у нас + 100 денег, как мы делали до этого. Сейчас я
653: Напишу и вернусь. Так вот, я написал рабочий скрипт мы заходим сейчас, я буду касаться, когда я буду касаться этого парта, у меня будут добавляться деньги. Вот видим, добавляются деньги, они у меня и тут добавились и
654: На сервере, как проверить на сервере. Тут у нас нет лидер статса, мы заходим в players лидер статс мани и вот видим, у меня тут 10000. То есть смотрите, если я вот здесь изменю, ой, нет, вот, вот тут изменю лидер.
655: Статс мани на 2000, вот 2000 перейду на сервер. Тут ничего не изменилось. Получается, клиент по сути не может никак влиять. Ну, он может, но только через ремоты.
656: Ивенты через удалённые события. И вот или серверу, если у нас установлены такие события или ещё там что-то, да, то есть только сервер может влиять на все это. Давайте ещё 1 пример покажу. Вот я не писал никакого скрипта, но я сейчас на клиенте
657: И, например, хочу переместить вот это, да, я перемещаю, захожу на сервер, вот где оно у нас стоит на сервере, вот оно у нас. И вот где на клиенте. Давайте я его ещее перемещу туда, как видим, все равно ничего.
658: Не изменилось. Давайте я ему изменю, что я ему изменю цвет на синий. Ничего не изменилось. Но если я тут ему изменю цвет на жёлтый, да, такой на зелёный я перехожу.
659: Хожу сюда и видим, у меня на клиенте он уже стал зелёным тоже. Если я его на сервере чуть чуть перемещу. Вот так вот, да, то он у меня на клиенте вот переместился на сервере, я его перемещу ещё дальше, да, подниму, то и на
660: Клиенте он поднимется и переместится. Давайте я покажу, как это выглядело бы на реальных условиях. Вот у нас есть сервер и вот 2 клиента, например, это 1 игрок, который зашёл, это 2.
661: На сервере вот так показано это сейчас видят так, все, да, вот на клиенте я бы изменил. Ну, мы сделали скрипт, чтобы мы могли переносить наши парты, да, я бы вот так взял его, перенёс сюда и, как видим, у нас на
662: Клиенте на другом, на вот этом это 1 клиент, это 2. На 1 клиенте у нас ничего не изменилось, на 2 у нас изменилось, потому что мы тут перенесли, я могу перенести на 1 клиенте также, да, вот возьму сейчас этот инструмент и переношу, и видим.
663: У нас как стоит на 1 клиенте, как на 2. Здесь оно стоит слева, здесь оно стоит справа, а на сервере оно стоит вообще там, где изначально и стояло. Или помните, мы делали тул, чтобы добавлялись парты, допустим, вот мы его опять
664: Сделали, я нажимаю парт, парт парт. Вот у меня создаются парты на 1 клиенте, на 2 клиенте. Мы их не видим, потому что мы их создали локально для 1 клиента. Если я на 2 буду создавать парты, также вот я их создаю.
665: Они создаются только для 2 клиента. Их нету больше нигде ни на сервере, ни на других клиентах, только на том, на котором мы создавали. А если я создам на сервере или перенесу вот этот парт на сервере, вот я его перенесу и видим.
666: У нас тут все тоже переносится. Если я создам на сервере парт, начну создавать. Видим, у нас вот уже создаются парты, вот они создаются, все работает вот это самое главное отличие сервера от клиента. То есть в какой мы
667: Делаем вывод с этого на клиенте мы можем делать только какой-то visual, да, который никак вообще не повлияет на игру. Просто визуал, который никак не влияет на логику игры, а всю логику игры, все там вычисления, все вот это да, мы делаем на сервере.
668: Значение на сервере, там какие-то функции запускаем на сервере. То есть сервер у нас главный, а локальный скрипт подчинённый. Итак, мы поверхностно разобрали чем отличается сервер от клиента и теперь давайте разберём что такое
669: Ремонт ивенты, то есть как взаимодействовать серверу с клиентом, клиенту с сервером, какие-то там обмен данными делать. Для этого мы должны создать вот тут в репликейт сторедж фолдер назовём ремонтс.
670: И тут мы создаём свой 1 ремоут ивент. Необязательно его создавать в этой Папке можно просто так, да, закинуть, но правильнее будет вот так сделать. Давайте создадим новый локальный скрипт и тут мы укажем нашу папку, ну или давайте сразу.
671: Remote кем точка репликейт сторедж точка ремонтес точка ремоут ивент вот он, наш ремоут ивент. Да и теперь давайте через 5 секунд.
672: Я сделаю ремоты, фаер, сервер. И что у нас произойдёт? Давайте запущу. Как видим, уже прошло больше 5 секунд. Там 1, 2, 3. Ну, уже, в общем, больше 5 секунд ничего не произошло. А почему?
673: Потому что надо связать наш ремоут ивент с клиентом и сервером. Создаём новый серверный скрипт. Указываем здесь также ремоут.
674: И пишем ремоты точка, он сервер, ивент, коннект, фанкшн. Тут ещё плеер напишу, и я пишу здесь print пришёл звоночек от клиента и запускаю, и ждём 5 секунд.
675: Вот пришёл нам звоночек от клиента, как видим, вот тут написано сервер, да, сервер. То есть это не клиент, это сервер. И на сервере у нас вот пришёл звоночек от клиента. Если быть ещё конкретнее, давайте я вот тут напишу. Так мы
676: Запускаем, смотрим, что у нас будет сейчас. И нам, пишет ю. Даня вызвал сервер. Что это значит? Откуда тут появился плеер? Тут же мы ничего не указывали. Да, эти функции связаны, эти вот штучки. Но откуда у нас тут взялся плеер?
677: Плеер у нас идёт по умолчанию, вот, то есть мы его никак не указываем, он идёт по умолчанию, если вкратце. Ну и вообще так и есть player what плеер это тот, кто вызвал наш ремонт ивент, давайте я тут так напиш.
678: Тот, кто вызвал ремоты ивент. То есть вот здесь видим ремоты. Фаер, сервер, плеер. Это тот, кто вызвал ремотив. Вот мы вот здесь вызвали ремонт ивент, локальный скрипт. Этот локальный скрипт работал у
679: Меня давайте я запущу. И вот этот локальный скрипт сейчас работает от моего имени, вот от ю Дани, вот он сработал от моего имени вот отсюда. И мне пишет этот плеер точка name вызвал сервер ю Дани вызвал сервер. Я могу
680: Делайте противоположное, чтобы сервер вызвал меня. Да, я вот здесь пишу плеерс, гейм, плеерс. И, ну, мы указали просто плеерсо всех это в переменную внесли. И тут пишем плеерс, плеер, адет, коннект. И тут
681: Тут я пишу, что через 5 секунд, давай через 3 секунды даже ремоты фаер клиент, кого мы будем вызывать? Вот тут уже надо указывать то, что сервер вызывает какого клиента именно этого. Почему мы тут указываем? Потому что
682: Клиентов много, а сервер 1, поэтому мы указываем здесь player. И вот тут мы должны написать функцию, которая будет срабатывать, когда сервер вызывает клиента. То есть вот тут мы вызвали вот сервер и вот
683: Это у нас функция, которая срабатывает, когда клиент вызывает сервер. Вот, вот это function, плеер, да, вот, вот эта у нас функция, и она срабатывает у нас, когда клиент вызвал сервер, нам нужно сделать точно такую же для клиента.
684: Ремоуты точка, он клиент ивент, коннект фанкшн. И тут я пишу принт сервер, вызвал клиента, давайте запустим, ждём. И вот нам пишет сервер, вызвал клиента и юа.
685: Не вызвал сервер, все работает. Вот это у нас на клиенте, да, сервер вызвал клиента и скрипт сработал на клиенте. И также пишет, что я вызвал сервер. Вот, ю, Даня вызвал сервер, и это сработало на сервере. То есть все так и должно быть. Давайте попробуем передавать.
686: Какие-то данные с клиента на сервер, с сервера на клиент. Предположим я здесь буду вот тут вот передавать какое-то имя, да, я хочу передать, ну или какое-нибудь послание, например привет, я тебя
687: Долго ждал. Давайте здесь добавим привет, сервер. Я тебя долго ждал. Вот так получится у нас. И мы тут пишем, что мы пишем, ставим запятую и какой-то месседж, принт месседж. Я пишу.
688: Запускаем, что у нас получится. Вот привет, сервер. Я тебя долго ждал. У нас вывелось вот это послание, которое мы сделали на клиенте. Вот оно у нас, то есть вот это вот, вот это вот у нас
689: Равно вот этому вот это у нас месседж, вот он, вот это я могу называть вообще хоть как это не имеет Роли. Это просто переменная. Да, я могу тут добавить ещё что-то. Давайте просто проверим, будет оно работать, если я изменил переменную назва.
690: Как видим, все работает все также давайте я добавлю ещё, например, какое-нибудь значение, вот такое вот 900 и запречу его ещё вот тут вот.
691: Сделаем намбер, намбер, запускаем, ждём. И вот привет, сервер. Я тебя долго ждал. 900. То есть все работает. Мы можем здесь передавать дофигища. Чего фолс могу написать ещё и
692: Пусть это вот даже можем таблицу передавать давайте вот тут напишем бул и какая-то это будет таблица это намберс у нас уже давайте мы это все запринти бул и numbers запус.
693: Ждём и вот видим пред сервер я тебя долго ждал. 900 фолс и таблица какая-то. Хорошо давайте теперь сделаем тоже самое, но обратно, чтобы с сервера на клиент. Тут мы
694: Давайте я это закомментирую пока что, чтобы не мешало. Тут я делаю все тоже самое плеер. И тут дальше у меня идут всякие сообщения. Ну так, привет.
695: Серверу передам ещё какое-нибудь опять значение такое вот. Ну, 350. Да, и false вот здесь вот пишу месседж, что у нас там дальше намбер и Булин. И давайте я это все.
696: Number Булин. Запускаю чуть чуть ждём и вот у нас запринтил сервер, вызвал клиента привет от сервера 350 фолс вот у нас привет от сервера привет от сервера вот.
697: Тут у нас хранится привет от сервера. Вот тут у нас 350, вот здесь 350 хранится и булиан фолс наша хранится вот тут вот опять ещё раз повторю то, что вот эти переменные, они не имеют значения. Я могу их назвать как угодно.
698: Это не имеет никакой Роли, просто так будет более читабельно, когда они нормально названы. Да, вот так. Фиг, пойми, что это такое. Вот давайте запущу и, как видим, все также работает, все четенько, давайте вернём прежний вид. Хорошо, давайте попробуем сделать, чтобы сервер
699: Отправлял не 1 клиенту какое-то сообщение, да, запрос какой-то, а всем абсолютно всем, кто находится на сервере. Для этого мы опять делаем какую-то задержку, да, потому что сервер запускается 1.
700: Давайте вот так напишу task wait 5 и пишу ремоте файр ол клиентс и тут мне уже не надо указывать какому именно игроку я это отправляю потому что я тут отправляю абсолютно всем давайте опять напишем месседж
701: Ну то есть это сообщение какое-то я могу тут написать. Здорово, бро, ну хоть че вообще пишу, без разницы. Там вообще все равно, че я пишу. И вот тут мы тоже можем это принимать, да, вот.
702: True?
703: Ну, то есть это сообщение какое-то я могу тут написать. Здорово. Бро, ну хоть че вообще пишу без разницы. Там. True вообще все равно, че я пишу. И вот тут мы тоже можем это принимать, да, вот.
704: Оно у нас даже уже есть, нам тут не надо ничего переписывать, оно так и должно быть.
705: Только на сервере мы указали, что это мы делаем. Файр ол клиентс, то есть отправляем всем клиентам. И тут мы просто принимаем вот этот fire or clients. Давайте запустим и, как видим, у нас все работает, все хорошо.
706: Здорово, бро какое-то значение число и true да, все правильно. А сейчас мы разберём, что такое у нас вектор 3, вектор 3. Если говорить вкратце, это тип данных, который хранит 3 числа сразу ось.
707: X. Ось, игрек и ось z. Давайте разберём уже на практике вот у нас есть part, я могу его двигать вот так, да, могу его двигать, вот так и могу его двигать вот так вот давайте мы.
708: Здесь найдём вектор 3 вот у нас позиция позишн это у нас есть вектор 3 и spice это у нас тоже вектор 3 и ориенте это у нас тоже вектор 3 хорошо что мы можем с этим делать давайте.
709: Смотрим, что у нас изменяется, когда я буду двигать красную стрелочку. Вот смотрите, у нас изменяется 1 ось икс. Это у нас ось икс, которая отвечает за передвижение влево, вправо. Да, вот я передвигаю влево, она у меня уходит в минус.
710: Я передвигаю вправо, она у меня уходит в плюс тоже самое с игрек. Вот он у нас сейчас почти 15, я его передвигаю наверх. Наш парт, у него ось игрек меняется в положительное. Я передвигаю его вниз, и у на
711: У нас ось становится все ближе к отрицательному, все меньше и меньше вот все да, хорошо, и последняя наша ось это z. Я передвигаю вот вперёд.
712: На самом деле нет. Ну, короче, вот я когда передвигаю вперёд, она у нас идёт на минус, когда я передвигаю назад, она у нас идёт на плюс. Почему так? Ну потому что давайте мы уже напишем скрипт.
713: Благодаря которому мы будем изменять вот это все. Но сначала я вам покажу, что мы можем тут изменять. Вот так вот, да, я написал 0, 0, 0 и он у меня теперь вот здесь хорошо выключаем все остальные скрипты, создаём новый серверный скрипт, указываем парт, и я пишу здесь.
714: Part точка позишн, вектор 3, точка нью 0 10. Да, и давайте тут сделаю какую-нибудь задержку таскай 4 и запускаю. Так, видим, вот он наш парт, он пере.
715: Равно 0.
716: Part точка позишн равно вектор 3, точка нью 0 10 0. Да, и давайте тут сделаю какую-нибудь задержку, таскай 4 и запускаю. Так, видим, вот он наш парт, он пере.
717: Сместился чуть наверх и упал. Упал он, потому что у нас включена физика на этот парт. Мы его не закрепили. Если я вот тут поставлю анчор якорь, да, он у нас теперь не будет падать. Давайте посмотрим. Мы поставили координату 0 10 0.
718: Заходим, видим, он у нас переместился, не падает. Вот он, этот парт, давайте посмотрим на его position у нас тут все, как мы указали, 0 10 0, что мы можем ещё делать с вектор 3 мы можем находить их сумму, то есть слагаемое, да, я
719: Напишу здесь вектор 3, вектор 3, точка нью, например, 10, 10, 10. Да, и если вы изучали, может в математике уже вектора, то вы поймёте, что будет. Давайте я
720: Вам покажу, расскажу. Сейчас 0 + 10. Это у нас 10 10 + 10, 20 0 + 10. Это 10. И у нас должно получиться вот так вот. 10, 20 10. Давайте посмотрим. Так вот, мы зашли парт.
721: У нас перемещается, переместился. Посмотрим на его позицию. Сейчас 10, 20 10. Все, как мы и указали. То есть мы к нулю прибавили 10, это 10, к 10 прибавили 10, это 20, и к нулю прибавили 10.
722: Это 10, я могу тут ещё написать. Плюс вектор 3, точка 5, 15 3. Да, что у нас получится? У нас вот есть уже
723: Вот это да. Получается 0 + 10 + 5. Это у нас 15 10 + 10, + 15. Это у нас 35 и 0 + 10 + 3. Это у нас.
724: У нас уже 13, у нас должно получиться вот так 15 35 13. Давайте посмотрим так вот, наш парт переместился, давайте посмотрим на его координаты. Position и видим 15 35 13. Все как
725: Мы и написали хорошо, где у нас ещё используется вектор 3 он у нас используется ещё в spice вот наш сайсс и тут все тоже самое вот у нас координаты икс да.
726: Если я поменяю её, ну вот смотрите, я растягиваю парт налево, направо, у меня координата икс растёт, я его делаю меньше, у меня координата икс уменьшается. То есть тут координата икс зависит от того, насколько больше я делаю парт.
727: Да это потому, что spice у нас сайсс у нас тоже в вектор 3 измеряется если я буду больше делать вот эту зелёненькую то у меня будет меняться координата игрек то есть это вверх.
728: Вниз, да, я его меняю вот так вот.
729: Давайте я вот тут даже поменяю его, напишу 10 и видим, он у меня стал длиньше. Хорошо, давайте здесь тоже поставим 10. Он у меня стал шире. И вот здесь я поставлю 10, он у меня стал, ну,
730: Ещё шире, да, то есть это у нас ширина. Вот это у нас высота. А вот это у нас длина. Хорошо, что мы можем делать с сайзом в скрипте? Да, в принципе, тоже самое. Давайте я это закомментирую.
731: Пишу парт точка сайз равно вектор 3 и напишу тут. 8, 12, 4. Давайте запущу и посмотрим. Вот видим у нас парт каким стал. Давайте.
732: Смотрим тут Тели значения, которые мы указали. 8, 12, 4. Мы указывали 8, 12, 4. Да, все верно. Давайте попробуем прибавить к ним какое-то ещё значение, какой-нибудь вектор. Вот так мы делаем, например, + 8 4.
733: И 9, да, давайте посчитаем, что у нас тут будет 8 + 8, это 16, 12 + 4. Это у нас опять 16 и 4 + 9. Это у нас 13. То есть должно получиться 16.
734: 16, 13. Давайте посмотрим. И вот у нас парт каким стал. Давайте посмотрим, правильно ли у нас значение. 16, 16, 13. Да, все верно. 16, 16, 13. Хорошо. А если я хочу прибавить?
735: Например к вот этому размеру наш ну я не знаю, например spice да, мне лень его вписывать, тут вектор 3, точка нью писать да что я могу сделать, давайте это закомментирую вот так сделаю как пример и я тут пишу.
736: Part size равно парт сайсс плюс вектор 3, точка нью. Я тут пишу 5 10 5. Ну вообще без разницы. И вот смотрите, сейчас у нас парт сайсс, вот парт.
737: Size равен вот этому. То есть здесь у нас, здесь, у нас сейчас вот такая картина. Вектор 3, точка нью свет отодвину чуть чуть вот так сделаю.
738: И у нас какие значения? 10, 10, 2. Вот они у нас, да, и мы к этому прибавляем вот это. И что у нас получится? 10 + 5. Это у нас 15, 10.
739: + 10, 20 и 2 + 5. Это у нас 7. То есть должно получиться 15, 27. Давайте посмотрим. Так, заходим, ищем парт. Вот. 15, 27. Да, 15 27. Все правильно?
740: Давайте посмотрим, где у нас ещё используется вектор 3. А кстати, чуть не забыл. Мы можем также делать минус чуть не забыл.
741: Вот у нас, да, вот эти значения. И давайте я сделаю через тасс квайт через 2 секунды у меня part size равно парт сайсс минус вектор 3. Да, блин.
742: Минус вектор 3, точка нью. Ну и пусть тут будет 3, 6, 1. То есть что у нас тут получится? У нас через 4 секунды он становится вот таким 15, 27. Да, и мы тут что делаем?
743: У нас вот тут вектор вот этот, только вот эти значения, да? 15, 27. И мы 15, 27 минус вот этот вектор.
744: И тут все тоже самое, что с плюсом, только мы теперь не складываем, а вычитаем. И что у нас получается 15 - 3. Это у нас 12 20, - 6, это у нас 14.
745: И 7 - 1. Это у нас 6. То есть у нас должно получиться 12 14 6. Давайте посмотрим, мы запускаем вот наш парт, он становится большим и потом чуть чуть поменьше.
746: Вот наш парт, вот он и у нас получилось 12, 14 6. Все как мы вот тут и предсказывали, где у нас ещё используется вектор 3. Давайте сделаю чуть чуть парт вот такой вот, да.
747: Вот таким у нас пар сделаю. У нас вектор 3 используется ещё в ориенте. Н, то есть это поворот. Вот я поворачиваю, видим, у меня координата 2 меняется. Хорошо, что мы можем с этим делать. Мы можем
748: Можем сделать это, я закомментирую, мы можем сделать через скрипт, чтобы у нас парт вращался, я делаю цикл while, делаю какую-то задержку максимально и part.
749: True минимальную.
750: Можем сделать это, я закомментирую, мы можем сделать через скрипт, чтобы у нас парт вращался, я делаю цикл while true, делаю какую-то задержку, максимально минимальную и part.
751: Точка ориенте равно парт точка ориенте плюс вектор 3 new 0 запятая 0 5 пусть будет и 0 то есть.
752: Как оно будет работать каждую 0,01 секунду у меня будет вот тут прибавляться 0 5, то есть 0 + 0 5.
753: Потом опять 0 + 0 5. И вот так оно будет каждую 1 100 секунду. Давайте проверим, правда это или нет. И вот видим, у меня part и вправду вращается. Я могу
754: На него встать и он вращается все как нужно, я могу также здесь использовать math random, то есть чтобы происходила какая-то сейчас анархия да, я создаю новый вектор и пишу маф рандом.
755: - 180 180 опять 180, 80 188. Что это такое? 180 80. У нас здесь углы. Углы у нас измеряются. В чем здесь в данном случае у нас углы измеряются в градусах.
756: Ещё радианы, но они в си фреймах. Пока что мы не знаем, что это такое. Давайте я запущу наш скрипт, нашу игру и посмотрим, что у нас будет твориться. Как видим, у нас тут он просто какая-то анархия полная, он хаотично вращается вообще без какой-либо логики. Ну,
757: В этом и суть маф рандома, да, вот он меня аж выкидывает, я уже не могу стоять почти на так. Мы поверхностно разобрали, что такое вектор 3, где он используется. И давайте перейдём к следующей похожей теме и
758: Сейчас что мы будем изучать это должен знать каждый и понять каждый разработчик roblox studio смотрите, мы изучали только что вектор 3 да вектор 3 это у нас перемещение.
759: То есть я могу вот так, через скрипт парт переместить отсюда сюда, да, отсюда вот сюда. Давайте создам 2 парта, вот это будет у нас парт 1. Ну давайте я создам новый, че уж создам парт 1.
760: У меня будет называться парт 1 сделаю ему spice ну ладно, пусть такой будет без разницы, и сконирую его с помощью ctrl d перемещу сюда и назову его уже.
761: Part 2. И смотрите, что я могу сделать. Я могу вот этот парт переместить к этому, как я должен вот тут позицию нашу скопировать и вставить вот сюда. Давайте
762: Наоборот сделаю а хотя нет да, part 1 мы перемещаем к парт 2, как копируем вот эту позицию и вставляем её в part 1, то есть мы скопировали позицию парт 2 и переместили в part 1 и вот он у нас стоит чётко.
763: Хорошо, а если у нас будет такая ситуация, что вот этот парт смотрит куда-то туда, да, и нам нужно этот парт переместить точно сюда же, что мы можем сделать? Мы можем позицию вот так.
764: Также отсюда скопировать, да, и вставить сюда. И вот что у нас получится прям не точно, да, но вот так вот, что мы должны будем ещё сделать, мы должны ещё будем скопировать отсюда ориенте наш
765: Oriente шн и вставить сюда. И вот только так у нас будет полное копирование позиции в трёхмерном пространстве, прям учитывая координаты поворота, да, но смотрите, просто position вот это не умеет делать, да.
766: Чтобы он встал вот так скопировал позицию. Вот эту мы сюда вставили, и он переместил сюда без лишних действий, да, позишн так не умеет делать. И для этого как раз-таки и сделали сифрей, они
767: Сделаны ещё там для многих причин они удобнее. Зачастую, когда вы что-то делаете более тяжёлое и мы вот как раз-таки сейчас их и будем разбирать. Давайте создадим новый скрипт, я назову его сифрей, потому что
768: Мы тут будем разбирать фрейм, остальные вот эти скрипты я тоже переименую, они будут все в моём telegram и все, что мы будем делать, оно будет в моём telegram канале. Смотрите, давайте укажем парт 1 part, 1. Равно воркспейс пар.
769: 1 и part 2. Я также указываю давайте сделаем то, что мы делали вручную парт 1 точка позишн равно парт 2 точка позишн, то есть мы позицию 1 парта приравняли к позицию 2 парта я могу запустить
770: Где-то вот так вот run сделать давайте запускаем и вот видим оно у нас переместилось и давайте я им ещё сделаю вот так анчар и коколай выключу физику то есть я все отключаю полностью и коллизию, чтобы она
771: Она нам не мешала. Давайте ещё раз запущу. И вот что у нас получается.
772: Мне бы пришлось ещё делать парт 1 точка ротейшн ориенте. Н без разницы. Ориенте равно парт 2 точка ориенте. Запускай.
773: Ну и то даже вот так у нас не сработало, да? А если я напишу ротейшн, давайте запустим. Ой, нет. И у нас тут не сработало, потому что я вот так сделал. Давайте сейчас запускаем и вот только
774: В этом случае у нас сработало, да? Ну, если я хочу это сделать все 1 строчкой, и у меня ещё появятся там новые возможности, больше гибкости, да, с помощью ифреймов мы это можем сделать.
775: Мы пишем парт 1.
776: Точка c фрейм равно парт 2, точка сифрей, давайте запущу. И вот видим, у меня все сработало, хоть я не указывал никакие повороты, ничего, тут просто я указал сифрей, так что же такое у нас си?
777: Если вкратце, то си фрейм это, можно сказать, позиция плюс поворот. То есть мы координаты позиции копируем и ещё поворот вот этот ротейшн ориенте, да, мы
778: Перемещаем сюда парт, ну, представим, как это выглядит, перемещаем его сюда и поворачиваем, как этот стоит 1 наш. Вот, и мы полностью копируем позицию, абсолютно учитывая его позицию и учитывая его.
779: Ориенте шн поворот.
780: Я могу также для part 1 указать просто, например, ифрейм точка нью равно 0 10 0. Давайте я запущу, что у нас получится. Он у нас появился на координате. Вот позишн, если я напишу 0 10 0. То есть когда мы вот так указываем
781: Это у нас, считайте просто я бы тоже самое, что написал vector 3, точка нью, да? Ну тоже самое. Ну в чем ещё отличие сифрей, а от позишн какие плюсы есть у сифрей? Давайте я сделаю парт наш.
782: Ну ладно, пусть он так и будет стоять. Вот сейчас он смотрит вперёд, то есть вот он у него тело, да, и вот он смотрит вперёд, он у нас вперёд. Давайте я его. Ну хотя, ладно, пусть так и будет. И смотрите, я хочу, чтобы
783: Он относительно, я его поверну вот так он теперь смотрит чуть чуть туда, и я хочу, чтобы он пошёл вперёд на какое-то расстояние. Этот парт переместился вперёд. На какое-то расстояние. Я бы мог
784: Написать, например, парт 1 точка позишн равно парт 1 точка позишн плюс вектор 3 точка нью и координату z поставить - 4, когда мы минус ставим это вперёд.
785: Значит, да, он бы у меня, типа, переместился вперёд. Вот так, да, вот сюда. Вот, ой, вот сюда, вот куда-нибудь. Да, давайте посмотрим, что у нас будет. Он у нас переместился вперёд, но не
786: Относительно себя вот так он переместился вперёд. Вот так вот просто относительно мира, для более наглядности. Давайте я поставлю здесь 10, чтобы было более наглядно. Это парту уберу, запускаю. Давайте здесь поставлю.
787: Чуть чуть задержки аквайт 1 запускаю. Вот у нас стоит и он перемещается сюда, а должен был переместиться вот сюда примерно вот в чем проблема позишн. Поэтому у нас есть си фрейм.
788: Ну, это не проблема позишн. Это так и должно работать. У нас позишн вектор 3. Если мы пишем сифрей, равно парт 1, точка си фрейм, мы здесь должны написать вот так, плюс сифрей точка нью.
789: И написать 0 0 - 3. Только здесь мы должны все-таки писать не плюс, а умножить. Почему? Давайте я просто покажу. Вот у нас тут ошибка какая-то да у нас тут какая-то ошибка, непонятно что это такое, но мы
790: Не можем плюсовать фреймы, мы их можем только умножать. Вот если я сейчас запущу, как видим, он у нас переместился относительно себя вперёд, то есть он для него вперёд. Это Вон это
791: Frame у нас, а для вектор 3 вперёд это у нас what вперёд.
792: Давайте здесь сделаю для более наглядности опять большее число, точнее, меньше запущу.
793: И вот он у нас переместился относительно себя вперёд. Я могу сделать, чтобы он перемещался относительно себя направо, например, да, вот он сейчас переместится примерно.
794: Вот у него вот он стоит и право для него Вон, да, он сейчас переместится вот сюда куда-то. Давайте посмотрим.
795: Вот он переместился направо, я могу сделать, чтобы он переместился налево.
796: Запускаю, он у нас переместился налево. Почему у нас так происходит? Потому что, как я уже говорил раньше у нас вот тут в сифрей, я просто так покажу образно. Плюс минус, как это делается. Вот тут у нас есть
797: И ещё у нас тут хранится ориенте, то есть наш поворот, и мы что делаем? Мы тут умножаем, как бы вот тут у нас вот это у нас просто позиция у нас тут
798: Нету ориенте на и мы вот это считайте, что вот это у нас позишн и мы вот тут смотрите.
799: Вот тут у нас есть position тоже и мы к этому позишн ну просто это чтобы вам понимать примерно мы к этому позишн прибавляем ещё вот этот вот позишн, да, и мы не указывали никаких ещё координат.
800: То есть никакой поворот мы не указывали. Может это непонятно как-то странно, но оно так, плюс минус есть, я не буду вам подробно объяснять, потому что это очень тяжело. Ну, я думаю, вот этим примером я вам показал, да.
801: И смотрите ещё вот я поверну парт вот так вот.
802: И я перемещу его наверх. Вот.
803: Вот наверх я его перемещаю на 10 как думаете, куда он переместится, опускаю, и, как видим, он переместился наверх относительно себя, а если б я тут сделал просто position то он бы переместился наверх.
804: Ну вот так вот, да, относительно мира. Что я могу ещё делать с этим? Я могу также тут изменять углы, чтобы я мог поменять угол? Поворот наш. Я пишу си фрейм, точка.
805: Angel и здесь указываю углы. Давайте сделаем, чтобы он повернулся. Вот сейчас ему сделаем 0 0 0. Я хочу, чтобы он повернулся направо. Что мне для этого надо сделать?
806: Поменять вот эту координату, да, сделать её - 90. Да, давайте я вот здесь напишу. 0 - 90 0. Что же у нас получится у нас? Он повернулся, конечно, направо, но не прям чётко. Давайте
807: Посмотрим, что у нас здесь за координата. У нас здесь - 116, хотя мы указывали - 90. Странно, да, но тут не странно, оно так и должно быть, потому что вот тут у нас измеряется в радианах уже, а не в углах мы должны
808: Перевести с Радиана в углы и мы пишем маф точка рат и указываем - 90, чтобы он у нас повернулся направо, запускаем и вот сейчас у нас здесь будет
809: - 90, вектор 3. Ориенте у нас измеряется в углах, а в сифрей. Ах, у нас оно измеряется в радианах, и мы должны с радианов переводить в углы. Хорошо, что мы можем ещё с
810: Этим делать мы можем, например, вот у нас 2 парта, да, вот этот парт стоит вот так и вот этот, я хочу, чтобы представим это 2 противника. Я хочу, чтобы вот этот повернулся на этого. Вот он его заметил, например,
811: Он вошёл в какой-то радиус действия. Надо, чтобы он на него повернулся и пошёл к нему, например, да, давайте сделаем, чтобы он к нему повернулся. Мы пишем парт 1, точка сифрей, равно ифрейм, точка.
812: И тут мы пишем парт.
813: Part 1, точка позишн запятая парт 2, точка позишн. Вообще непонятно что это такое как это работает но давайте посмотрим я запускаю и вот он у нас поворачивается.
814: На него у нас здесь становится 51 градус.
815: И как это вообще работает? Опять-таки все это объяснять это будет тяжело. Но смотрите, 1 парт это у нас основной парт, вот он, a2 парт это у нас парт, на который у нас будет
816: 3 основной, то есть вот этот парт это основной, а вот это наша цель. 1 парт это основной, a2 парт это у нас цель, и нам нужно указать их позиции. То есть я бы мог писать тут не просто парт, 2 точка позишн, а просто
817: Тут вектор 3, да, давайте. Какой он? Какой у него здесь позишн? Вот я скопирую, напишу вектор 3, точка нью сделаю вот так запускаем и вот видим.
818: У нас все также он появился. То есть нам нужно написать от какой позиции. То есть основная позиция и цель. И вот он поворачивается к нашей цели. Вот он поворачивается.
819: Все, он повернулся. У нас меняется угол. Давайте сделаем, чтобы сзади нас спавнился парт, и он летал за нами, чтобы это было все плавно. Мы сделаем это на
820: На клиенте. Пока что вы, может, спросите, зачем это делать на клиенте, но поймите, это правильно, просто вот так правильно делать. Давайте тут тоже переименую его ифрейм. Когда мы делаем на клиенте, у нас все плавнее, но
821: Остальные этого не видят. Если мы сделали что-то неправильно, пока что это не важно. Просто сделаем, чтобы сзади нас летал вот этот парт, ну или даже какой-то новый. Давайте создадим новый парт, даже парт инстанс нью, и мы создаём парт, укажем.
822: Size. Размер пусть у него будет 3 3 3. Отключим у него всю физику канкат, фолс, анчаре, фолс и сделаем, чтобы он за нами летал, а мы будем это делать с помощью
823: Обычного цикла while true сделаем тут задержку максимально минимальную да, давайте ещё сверху тут укажем игрока нашего локал плеер на game players локальный плеер и давайте сделаем маленькую задержку, например.
824: 3 секунды. Через 3 секунды у нас заспавнится парт и будет за нами летать, чтобы он за нами летал. Мы пишем парт сифрей. Ещё мы должны указать чарактер и чарактер мы указываем после
825: Потому что чарактер может сразу не прогрузиться, равно плеер теракте или ну вот так и тут мы пишем парт си фрейм равно.
826: Charakter Гетт пивот вот в принципе, за нас уже тут иишка написала, и что это значит? Мы получаем сифрей нашего чарактер, Гетт пивот, оно получает сифрей модельки.
827: По primary парту, и мы умножаем на здесь напишем 5, ну даже вот так 5, чтобы оно было сзади нас. Если было бы - 5, то это спереди, a5 это сзади. И давайте проверим, что у нас получилось. Тут я делаю
828: Опять тест запускаю, проходит время и пи пи пи, и у нас ничего не получается, а у нас не получилось, потому что мы не указали вот здесь паренто.
829: Делаем вот так и у нас сейчас все получится 100%.
830: И вот видим у нас парт ой вот здесь не anchor не false, а true должно быть перепутал смотрим.
831: И вот наш парт, он двигается относительно нас. То есть он всегда сзади нас.
832: Вот я прыгаю, он сзади меня, и давайте ещё сделаем, чтобы он у нас вертелся в какую-то сторону или даже по всем сторонам. В общем, я тут делаю переменную энджел, присваиваю ей значение 0 и
833: И здесь я пишу си фрейм, энджелс маф, радиан, энджел, и это я должен сделать ещё 2 раза, то есть, в общем, 3.
834: Вот так и я пишу энджел плюс равно 1, и давайте запустим, что у нас из этого получится. И вот у нас теперь есть part, который сзади нас и вращается по сторонам, как это у нас работает мы зачем-то создали
835: Переменную энджел, что это вообще все такое. Давайте с нуля разберём вот этот скрипт то есть мы создали парт, сделали ему spice, отключили коллизию, отключили физику, присвоили парент ворк спейс.
836: Чтобы он спавнился в воркспейсе и пишем партии фрейм равно черектер, Гетт пивод, то есть давайте я здесь напишу не чарактер, Гетт пивод, а чтоб было понятно чарактер хуманоид.
837: Хуманоид опарт точка сирейм. Вот так может быть понятнее. У нас вот есть чарактер наш, и у него есть хуманоид, где он находится то вот хуманоид ропат, и мы у него берём си.
838: Мы этот си фрейм умножаем на 0 0 5 по оси z на 5, то есть это сзади нас. Давайте я покажу как это выглядит вот умножаем на 0 0 5 вот он у нас вот здесь.
839: Примерно, да, и так как это цикл, вот это у нас выполняется каждую 1 100 то есть он всегда будет сзади нас вот из за вот этого и он ещё своё значение умножает.
840: На ифрейм энджел, то есть меняет ориенте мафра энджел, Марат энджел. То есть мы здесь устанавливаем какой-то угол и каждый раз, когда вот этот цикл проходит, мы энджел плюс равно 1 и то есть сначала у нас вот тут 1 везде, потом у нас
841: Вот здесь 2.
842: Потом у нас здесь 3 и вот так оно делается у нас. Давайте ещё раз запустим, посмотрим.
843: Вот наш парт, он сейчас не вращается, потому что я там написал 1, 1, 1, а мне нужно энджел. Вот давайте запущу.
844: What part? И он у нас вращается. То есть все работает хорошо, я прыгаю, бегаю, он всегда сзади меня. Итак, мы базово разобрались, что такое сифрей. Вы должны ещё, конечно же, попрактиковаться там, поделать.
845: Какие-нибудь штучки с ним. Придумайте себе задание там из своей фантазии, например, чтобы он был не сзади вас, а сверху, и вращался вообще максимально быстро, а не вот так медленно, да, или просто заспавните 10 таких.
846: Их Партов и чтобы все они вращались по разному. Ну это как пример. Ну, в общем, много идей. Что можно сделать. Вы, конечно же, попробуйте. Итак, чтобы закрепить наши знания.
847: Давайте мы сделаем какую-нибудь мини игру, такую простую игру, да, и заодно затронем те аспекты, которые мы, может быть, не разбирали, там всякие, ну, мини фичи, мини фишки, какие-нибудь маленькие инструменты такие, которым мы
848: Не пользовались. Так какая у нас будет цель игры? Какой у нас будет game loop? Что нам нужно будет делать? У нас будет 2 парта. Да, мы кликаем по 1 парту, у нас прибавляются клики в лидер статс кликаем, по 2 мы делаем реберс.
849: И мы теперь получаем в 2 раза больше кликов реберс у нас делаются за клики, то есть, например, 100 кликов, 1 реберс и 1 реберс нам даёт. Ну, x, 2 кликов, хорошо, давайте начнём писать скрипт.
850: Сначала разберёмся с партами, назовём вот этот парт гиф кликс или просто gif клик без разницы, и вот это gif рёбер, в них мы засунем клик, детекторы.
851: И создаём серверный скрипт. И тут мы указываем наши парты, и теперь с помощью клик детектора, что делает клик детектор. У нас тут появляется кнопочка. Когда мы наводим на part, мы будем считывать клики, мы пишем парт, гиф, клик, клик.
852: Детектор и вот здесь видим есть у нас маус клик мы пишем маус, маус, клик, коннект, фанкшн, плеер.
853: И вот тут у нас будет принтится наш плеер. То есть давайте протестим. Вот мы зашли, кликаем и вот мы тут принтим, да, хорошо, мы, то есть можем уже как-то искать лидер статс Ида.
854: Давайте сначала создадим лидер статс, я забыл, давайте сделаем отдельный скрипт для лидер статс. Я назову его лидер статс здесь пишу локал плеерс равно game точка.
855: Players и пишу плеерс, плеер, адет, коннект, фанкшн, плеер. Создаём переменную, в которой будет храниться папка лидер статс инстанс нью фолдер, делаем имя лидер статс и
856: Помещаем внутрь игрока, создаём переменную кликс, называем наш инт валю, то есть переменную кликс кликс точка name равно кликс и
857: Помещаем в лидер статс, также создаём реберс, пишем name реберс и тоже помещаем в лидер статс. Так это у нас должно работать, я даже не буду тестить. Давайте
858: Скрипт переименуем как на мейн тут мы пишем locale лидер статс, равно плеер анфер чайлд, лидер статс.
859: Ну хотя мы можем сразу даже написать плеер лидер статс, потому что у всех есть лидер статс, конечно, может какая-то случиться ошибка и не прогрузиться лидер статс, но давайте пока что это упустим. Теперь нам нужно посчитать сколько кликов.
860: Нам будет давать. Давайте изначально сделаем, чтобы + 1 клик мы пишем лидер статс кликс балью плюс равно 1 и такое же мы делаем для нашего
861: Rebirth. И тут нам нужно будет сделать уже проверку, можем ли мы сделать реберс или нет. Пишем сколько нам нужно кликов для 1. Реберс пусть будет это 100 для 2, это 250 для 3.
862: 800 для 4. Пусть это будет 2 500 для последующего уже 8000. Потом там уже 20000, да, и тут мы делаем вот так вот.
863: А, кстати, чуть не забыл, вот тут мы должны ещё указать вот так сделать кликс точка валью равно 0 и reapers точка валью равно 0. Так вот мы тут делаем, если
864: Лидер статс точка ликс точка валью больше либо равно чем рёбер прайс. Тут мы должны указать индекс.
865: То есть на какой реберс прайс мы претендуем. Как это узнать? Мы пишем тут вот, вот это. Нам нужно узнать, какой сейчас rebirth у нашего игрока мы берём его с лидер статс реберс и дела.
866: + 1 то есть у нас, например, 0 реберс 0 реберс да, мы прибавляем ему + 1, и мы узнаем, какая цена у нас должна быть на rebirth, на 1 реберс, то есть тут у нас тоже index да, вот это.
867: Сколько стоит 1 реберс? Это сколько стоит 2 реберс? Это сколько стоит 3 реберс? И вот так вот, если у нас вот это условие сработало, то мы делаем лидер статс точка, ну.
868: Вот это вот rebirth фалью плюс равно 1 и клики сбрасываем до нуля. И если это у нас не сработает, мы пишем лс. И тут мы напишем варн, у тебя не?
869: Недостаточно кликов теперь тут мы должны ещё подделать, чтобы нам давалось столько кликов, которые зависят от rebirth. Мы 1, то есть изначально нам даётся 1 клик, и мы это
870: Пятёрочку умножаем на количество реверсов. Мы пишем вот так 1 плюс лидер статс реберс валью. Почему мы здесь ещё добавили единичку потому что изначально у нас реберс равен нулю и 1 умножить
871: 0. Ну ничего, да. И поэтому, если у нас вот тут лидер Стас реберс валью 0, мы 1 умножим на 0, у нас получится 1. Если у нас реберс 1, то мы 1 умножаем уже на 2, потому что 1 + 1, 2, 1.
872: На 2, и мы получаем 2 клика. Хорошо, давайте проверим, работает ли это вообще. Так вот, у нас лидер Стас работает, я кликаю, у меня добавляются клики, я тыкаю, мне пишет, у меня недостаточно денег, мне нужно сколько? 100 кликов. Давайте.
873: Я натыкаю. Так вот, я почти накликал 100, вот у меня 101, 102, я нажимаю все, у меня реберс, теперь я тыкаю, у меня добавляется по 2 клика. Мне теперь сколько нужно? 250. Давайте я натыкаю пока что 250.
874: Так вот, я накликал 242, если я нажму, мне пишет, у меня недостаточно кликов, да, недостаточно кликов. Вот у меня 248. Тыкаю недостаточно кликов, у меня 250, я тыкаю, и у меня реберс. Теперь я получаю.
875: По 3 клика. Итак, все у нас работает реберс, работают все вроде как хорошо. Да, и давайте ещё я сделаю базовую куишко. Хоть мы и не разбирали гуи, но сейчас чуть чуть закроем этот моментик, потому что
876: Gui мы будем разбирать уже в следующей части, и все остальное мы будем разбирать в следующих частях мы создаём скрин гуй фрейм, ну даже не обязательно фрейм, просто давайте текст label, создаём текст label.
877: Вот назову его кликс, сделаю ещё такой же и назову его уже реберф. И смотрите, нам нужно вот как-то привязать их, чтобы вот тут у меня показывало количество кликов. Вот тут у меня показывало количество реберс, мы его
878: Делаем на локальном скрипте, это так положено. Вот я создам локальный скрипт, укажу наши куи. Вот я указал наши куишки, вайт фурчат здесь, потому что, ну, может вылазить ошиб.
879: Вообще white for child. Некоторые говорят, что плохо использовать. Я на самом деле не знаю, хорошо это или плохо, но пока что я не сталкивался с тем, что это плохо. Может, это и реально плохо. Вот у нас есть кликс реберс, это наши гуишки, это не клики.
880: Которые показывают, сколько у нас кликов. Это у нас гуи. Давайте я тут напишу текст лейбл и вот тут я тоже это допишу, чтоб не путать. И теперь я ещё напишу локал лидер статс плеер лидер.
881: Потому что лидер Стас не сразу появляется у меня. Может вот это сработать первее чем вот это, да? Ну, есть такой шанс, допустим, и поэтому мы пишем y for child, right for child он ждёт. То есть, если у меня сразу нету лидер Стас, он подождёт.
882: Секунду 2 и только потом уже будет ошибка здесь я указываю клики и rebirth, и теперь смотрите, у нас клики и rebirth указаны в Инта.
883: Мы можем отслеживать изменения этого int value, да то есть смотрите, я могу тут написать вот так. Int value тут тоже напишу int value мы указали их тип, мы это ещё конечно не
884: Бирали, но просто можно вот так делать, мы их указываем тип, то есть я бы мог написать, например, как помните, я делал локал парт на workspace точка парт. Ну давайте я пока что укажу вот так беспл и вот тут я указываю
885: Потому что это у меня part, да то есть я указал что это part и у меня есть все свойства парта, все есть все функции которые может парт делать и тут тоже самое так я пишу кликс, двоеточие, гет атрибут.
886: Нет, не get аттрибут, а get property чендже. Сигнал тут пишем валью, коннект фанкшн и здесь делаем вот так вот, да, что это у нас значит, get property чейнджи сигнал. То есть давайте я зайду.
887: Ну, хотя вы сейчас сами все заметите. Давайте сделаю просто тоже самое для rebirth уже, что это вот, значит, get property че сигнал, если вкратце, когда у меня изменяется значение, вот у меня in
888: Value. И когда у меня вот тут value изменяется с нуля на что-то другое на 4, например, у меня срабатывать будет вот это вот то, что находится вот эта функция у меня будет срабатывать. То есть когда у меня изменяется, проперти, вот он
889: Properties то есть свойство я пишу тут какое свойство value когда у меня меняется value, у меня срабатывает вот эта функция что я делаю в этой функции я меняю реберс текст мне нужно вот так сделать. Вот.
890: Rebirth. Текст лейбл. И я их меняю на количество реберс у меня давайте проверим так вот у меня здесь сначала лейбл лейбл, мы это пофиксим. Вот ю, Дания кликс. Вот.
891: У меня сначала 0, я тыкаю бам, у меня пишется клик с 1, у меня здесь значение поменялось с нуля на 1 кликаю. И вот видим, у меня все это время будет срабатывать она, давайте натыкаю сотню. Так вот, я натыкал сотню, я
892: Делаю реберс и как видим, у меня все срабатывает клик с 0. Реберс 1. Вот видим, у меня реберс изменился с нуля на 1. И вот, вот это get проперси чендже сигнал, оно вот это и делает. Это все есть на документации.
893: Roblox studio там вы можете про все это читать или если вам что-то реально уже непонятно, вы там просерили, поискали весь интернет, можете зайти ко мне в telegram канал и оттуда написать мне уже давайте исправим баг этот эту ошибку, то что у меня сначал.
894: Вот здесь базовый текст этот лейбл что я делаю, я вот делаю вот так кликс текст label text равно кликс ну и вот, то есть я пишу кликс и базовое значение ставлю.
895: Сколько у меня кликов? То есть, если у меня был бы дата стор, то есть это то, что сохраняет дату, у меня бы было кликс, и сколько кликов сохранилось, например, там 50, да, сколько кликов у меня вот сохранилось и rebirth там.
896: 2. Реберс у меня, да? Ну, изначально у меня все 0, 0. Вот у меня сейчас будет все тут по нулям кликс 0, реберс 0. Я начинаю тыкать. Тут вот у меня почти сотня, я делаю реберс, и у меня
897: Меняется. Да, у меня это и в лидер статс поменялось, и вот здесь, в гуишке, мы гуишки привязали к лидер Стаса, и она зависит теперь от лидер Стас. Итак, вот видео подходит к концу. Давайте подытожим, чему мы научились. Мы
898: Минимум научились создавать переменные и как максимум разобрали уже ремонт, ивенты, таблицы, что там ещё словари всякие, да создали мини игру свою, хоть и не совсем тяжёлую, но простую. Вы можете там
899: Добавить что-то своё, там, логику ещё подделать, да, сделать подобную похожую игру и сделать её круче в раз, 10, 100, 1000000, чем я вот сейчас сделал это все сейчас зависит от вас. Я вам просто вот дал базу.
900: Мы делали примеры, то есть разбирали на практике какие-то вещи, какие-то вещи, мы не успели разобрать. И что я хочу сказать вот этот скрипт, все скрипты, которые мы тут делали, вот этот вообще Бейс плейт.
901: Вот эти.
902: Мы делали примеры, то есть разбирали на практике какие-то вещи, какие-то вещи, мы не успели разобрать. И что я хочу сказать вот этот скрипт, вот эти все скрипты, которые мы тут делали, вот этот вообще Бейс плейт.
903: Будет в моём telegram канале. Тут, конечно, не все я делал. Да не все сохранилось, к сожалению, но сохранилось, что есть. Я не сразу додумался все это сохранять, поэтому я все комментировал. Тут будет все подписано. Я это
904: Все перепишу и также будет та игра которую мы делали, вот эта вот игра тоже будет в моём telegram канале, будет файл на неё, вы можете её скачать и разбирать если вы вдруг не писали, хоть это и не рекомендуется, вы должны все сами писать.
905: Ну если вдруг у вас какая-то ошибка, вы не понимаете, вы можете скачать и у вас будет готово. Ну на этом я завершаю. Не забывайте подписаться на канал, поставить лайк, если вам непонятно, заходите на telegram канал также просто заходите в мой telegram канал там
906: Будут все анонсы на видеоролики, то есть вы будете узнавать заранее что-то я буду туда кидать полезную инфу какую-то и не только полезную, просто там какие-нибудь угарные моменты, например. В общем, если это видео наберёт хорошее количество лайков,
907: Я увижу отдачу, то будет 2 часть уже более глубокая. Мы более погрузимся в детали, разберём ещё сложнее вещи всякие сервисы, инпут, сервисы. Как делать батлграунды, как делать симуляторы пет, симуляторы там, да? Ну.
908: Мы не будем их прям делать, мы просто разберём механики там, сервисы всякие, как они делаются. Ну.