и вправду шикарное видео, смотрел много разных уроков и в целом везде плохо рассказано и шаблонно, а тут приятно и понятно, да и тема новая, спасибо за ролик
Думать за кого-то не собираюсь. Я даю частички пазла, а картинку, собирай сам. Это более эффективный способ учится новому. Я подумываю сделать гайд по базовым командам в LUA
Либо ты противоречишь себе, либо неправильно понял. Я написал комментарий с просьбой увидеть, цитирую твои слова: «вторую часть, где разберу всё от А до Я!»@@SvalkaKvemona
Спасибо, бро! Огромное спасибо! Ты не представляешь, как я прикольно себя чувствую, когда пишу скрипты!... только вот один вопрос есть, я хочу, чтобы этот нпс также искал и преследовал игроков, а не предмет, что для этого нужно сделать, найти парт в модели игрока и вместо Target написать название этого парта? Но тогда появляется встречный вопрос, как и где мне взять этот парт игрока?
Это зависит от того как ты хочешь что-бы это работало. Программирование не про написание кода, а про решение таких задач и проблем. Ищи ответы в интернете. Но просто ЗАБУДЬ про туторы, если ты смотришь их только с целью взять готовый скрипт. Так ты программировать не научишься никогда. Тебе нужно понимать как именно пишутся скрипты, и писать их самому
@SvalkaKvemona я начал создавать свою игру в роблокс студио еще в июне-июле и всегда брал готовые скрипты и модели из тулбокса или же скачивал с интернета, потом бросил ближе к концу августа, но я вернулся неделю или две назад и вот тогда я начал сам всё программировать и создавать, именно благодаря роблокс студио я более менее научился программировать и писать скрипты.
Совет номер один пользуйся скриптами совет два пользуйся properties он помогает делать разные штуки например зделать диалог с персонажем Совет три при во вкладке view можно создать нпс если нажать avatar пользуйся желаю удачи 😉
скрипт кому лень писать local SimplePath = require(game:GetService("ServerStorage").SimplePath) local Rig = script.Parent local Target = workspace.Target local path = SimplePath.new(Rig) path:Run(Target)
Здраствуйте, вы случано не знаете как сделать так что бы нпс не нападал на человека который его заспавнил, или не нападал на ближайшего игрока, а на того что 2 по расстоянию от нпс?
Это конечно все здоров, но прекол в том, что в самом начале описания модуля на Dev форуме написано, что он использует PathfindingService роблокса и что этот модуль делает несколько расчетов, чтобы путь был более верным.
Привет , незнаешь как начать вообще создавать что то в роблокс студио? Какие лучше программы для этого изучать?. Я пытался просто гайды смотреть , но видимо плохие так как было как то всё намешанно и уже на 7 гайде не работали некоторые вещи. Просто у меня желание рпгшку с системой крафта и кгмбинаций зелий есть. Рисовать могу классно только и все ...
Пфф... Ну, для начала, стоит сделать что-то простое. Для создания игр в РБС, тебе потребуется только сам РБС Сделать твою идею получится только с очень большим опытом Ничего конкретного подсказать не могу, всё индивидуально. Я учился по ходу дела
прикольно, интересно, а можно ли заставить "ходить" не нпс а обычный парт? (мы хотим сделать румс фан игру но не знаем как заставить монстров лететь к двери)
Запарился, добавил звуки клавиатуры при печати строк Кста имба видео, буквально недавно пытался сделать NPС вечно ходящий с игроком, но было куча ситуация когда бот просто становился на месте, не работал как хотел, посмотрю решит ли этот модуль проблему, а то я в своём скрипте как только не пытался решить проблему
Я протестил, есть проблема что он плох в паркуре, если расстояние не маленькое, то он не прыгает, хотя что бы туда допрыгнуть не нужно прыгать от края до края, так же с высотой, куда игрок может допрыгнуть, NPS не может
Привет, на самом деле штука прикольная. Вроде-бы легкая. Но у меня есть вопрос как сделать так чтобы он за HumanoidRootPart'ом игрока ходил? Или там незнаю нужно с сервера передавать с клиента короче да.
Самое простое, создать функцию, которая будет перебирать через цикл for всех игроков, и проверять кто в радиусе. Если игрок в радиусе, то выбрать его как цель. Уверен что есть способы лучше, но это самое первое и простое что пришло в голову
Не, берешь игроков, Players:GetPlayers(), или что-то типа того. И потом перебираешь каждого, и пишешь типа v.Character.HumanoidRootPart.Position@@jopoy.
Я сделаю тогда видео как просто проигрывать анимации. Никто за тебя код писать не будет) Дай человеку рыбу - будет сыт день. Научи человека рыбачить - будет сыт всегда
А что делать если при запуске игры в оутпуте выдает ошибку? ошибка: "ServerStorage.SimplePath:25: SimplePath Error: Pathfinding target must be a valid Vector3 or BasePart." как исправить?
так а почему мы должны тебе верить, что именно этот нн модуль лучше готового сервиса от разрабов роблокса и в частности самого движка. Ты получается хочешь сказать, что кодеры которые разрабатывали данный движок написали на этом же движке сервис хуже того, что ты сейчас показал? Я жду обоснования
Во первых, как же глупо спорить на эту тему... Во вторых, я был невнимателен. Этот плагин использует поиск пути от роблокса, но, упрощает его использование, и оптимизирует его, от чего он работает быстрее
Я сначала решил сделать тестовый проект по типу Steps steps, так как это было бы просто. Сначала было сложно вникнуть, но сейчас, я уже без проблем занимаюсь скриптингом. Я решал проблемы по мере поступления
@@SvalkaKvemona Скрипт: local simplePath = require(game:GetService('ServerStorage'). SimplePath) local ds = script.Parent local target = ds.Parent.FLR1_DS_Patrolling.FLR1_DS_PatrollingPoint006 local pPath = simplePath.new(ds) simplePath:Run(target) (Скрипт SimplePath не изменялся)
@@Itz_Mimic Из возможных причин ошибки: 1. Ты скорее всего указал не подходящую цель. "DS" должен быть моделькой внутри которой хуманойд. 2. Target может определятся неправильно по той причине что в момент загрузки скрипта, объекта "FLR1_DS_PatrollingPoint006" может просто не существовать, из-за чего оно и не работает.
Привет, я тоже захотел сделать, у меня вылезала ошибка или не работал кусок с движение нпс при перемещении цели, разобрался, незнаю как у вас но у меня нпс считает waypoint как точки которые он долден пройти до цели, но почему-то либо он их обнуляет потом или что-то делает с ними что они равны нулю я незнаю что делать если надо могу предоставитт скриншот но пока ничего не работает
Вопрос как ты сделал скрипт для НПС чтобы он ходил за игровым персонажем?я уже сделал при помощи брата но роблокс удалил скрипт, я пытался переделать , спрашивал у ИИ , смотрел видео но либо было нагромождение функций и условий либо просто неработающий скрипт.
@@SvalkaKvemona я пробавал 10 раз не роботает local sp = require(game:GetService("ServerStorage").SimplePath) local rig = script.Parent local target = game.Workspace.tar local path = sp.new(rig) path:Run(target) скрипт
Привет. Подскажи пожалуйста как направить рига идти к игроку? Я написал такой скрипт и он не находит игрока. Скрипт: local SimplePath = require(game:GetService("ServerStorage").SimplePath) local Zombie = script.Parent local HumanoidRootPart = workspace.Players.Player.HumanoidRootPart local path = SimplePath.new(Zombie, { AgentCanJump = true, AgentRadius = 1.0, AgentHeight = 6.0, AgentWalkableClimb = 2.0, }) path.WaypointReached:Connect(function() path:Run(HumanoidRootPart) end) path.Reached:Connect(function() path:Run(HumanoidRootPart) end) path.Blocked:Connect(function() path:Run(HumanoidRootPart) end) path.Error:Connect(function() path:Run(HumanoidRootPart) end) path:Run(HumanoidRootPart) Подскажи какой надо путь к игроку указать?
Ты указываешь игрока по пути которого не существует. Видишь ли, иногда, скрипт может загрузиться быстрее чем объект который тебе нужен, из-за этого скрипт его не находит. Что-бы это исправить попробуй использовать метод waitforchild()
@@SvalkaKvemonaЯ исправил, но так и не понял кое что. В общем, когда риг из ServerStorage переноситься в Workspace и позиция HumanoidRootPart меняется, то у частей тела отключается коллизия, а если её вручную включить, то персонаж начинает все равно летать, но повыше... В общем, в итоге просто убрал строчку «Rig.HumanoidRootPart.Position = StartPos.Position”
Я уже малясь не вовремя, но, да. То что ты написал, не работало бы. Ты менял позицию не самого персонажа, а одной его части. Это так не работает. Тебе нужно перемещать группу с персонажем через метод Character:Move() или что-то типа того. Попробуй сам
@@SvalkaKvemona ну вообще было бы круто научиться писать код на двесте строк еще и работающий, а то я пока научился максимум на 5 строк самостоятельно. Я просто хочу сделать зомби нпс который приследовал бы игрока, имел регдолы и еще уйму всяких механик для него, но пока я не в силах такое сделать(
@@SvalkaKvemona ну я щас пытаюсь чуть чуть разобраться сам в скриптинге, я щас прямо самые азы прохожу, но когда то сам смогу что то большее написать (надеюсь)
слушай товарищ, я испробовал этот модуль. и на данный момент он перестал работать. Run() по какой то причине не движет нпс до нужной точки. и стоит на одном месте. какие эти проблемы могут быть?
@@SvalkaKvemona local ServerStorage = game:GetService("ServerStorage") local SP = require(ServerStorage.SimplePath) local rig = script.Parent local walk = rig.WalkingAround walk.Enabled = false function FindPlayer(Position) local List = game.Workspace:GetChildren() local Torso = nil local Distance = 40 local HumanoidRootPart = nil local Humanoid = nil local Player = nil for i = 1, #List do Player = List[i] if (Player.ClassName == "Model") and (Player ~= script.Parent) then HumanoidRootPart = Player:FindFirstChild("HumanoidRootPart") Humanoid = Player:FindFirstChild("Humanoid") if (HumanoidRootPart ~= nil) and (Humanoid ~=nil) and (Humanoid.Health > 0) then if (HumanoidRootPart.Position - Position).Magnitude < Distance then Torso = HumanoidRootPart Distance = (HumanoidRootPart.Position - Position).Magnitude end end end end return Torso end local path = SP.new(rig) while true do task.wait(0.1) local Target = FindPlayer(script.Parent.HumanoidRootPart.Position) if Target ~= nil then walk.Enabled = false task.wait(0.1) path:Run(Target) elseif walk.Enabled ~= true then task.wait(1) walk.Enabled = true end end у меня всё работало но после того как я переместил модельку, скрипт перестал работать
@@SvalkaKvemona local ServerStorage = game:GetService("ServerStorage") local SP = require(ServerStorage.SimplePath) local rig = script.Parent local walk = rig.WalkingAround walk.Enabled = false function FindPlayer(Position) local List = game.Workspace:GetChildren() local Torso = nil local Distance = 40 local HumanoidRootPart = nil local Humanoid = nil local Player = nil for i = 1, #List do Player = List[i] if (Player.ClassName == "Model") and (Player ~= script.Parent) then HumanoidRootPart = Player:FindFirstChild("HumanoidRootPart") Humanoid = Player:FindFirstChild("Humanoid") if (HumanoidRootPart ~= nil) and (Humanoid ~=nil) and (Humanoid.Health > 0) then if (HumanoidRootPart.Position - Position).Magnitude < Distance then Torso = HumanoidRootPart Distance = (HumanoidRootPart.Position - Position).Magnitude end end end end return Torso end local path = SP.new(rig) while true do task.wait(0.1) local Target = FindPlayer(script.Parent.HumanoidRootPart.Position) if Target ~= nil then walk.Enabled = false task.wait(0.1) path:Run(Target) elseif walk.Enabled ~= true then task.wait(1) walk.Enabled = true end end код полностью функционировал но когда я его переместил он перестал работать
@@SvalkaKvemona local ServerStorage = game:GetService("ServerStorage") local SP = require(ServerStorage.SimplePath) local rig = script.Parent local path = SP.new(rig) local waypoints = workspace.Cutscene.Position while true do --local rndNum = math.random(1,#waypoints)
path:Run(waypoints) task.wait(5) end у меня код по длиннее, но даже этот работать не хочет
Крутой тутор, только хочется, чтобы нпс шёл на игрока, а я без понятия как его указать. Я даже писал game.Players.LocalPlayer.Character , Но нпс не двинулся, а так на партах работает. Можно конечно поставить парт игроку, но точно ли это решение? Буду рад, если поможешь с этим.
Скажу тебе вот что. Во первых game.Players.LocalPlayer указывает просто локального игрока, которого можно узнать только из локального скрипта которых находится в этом же игроке. Во вторых Character это просто моделька игрока, для указания пути нужен Part, а не Model
@@SvalkaKvemona вот код; local SimplePath = require(game.GetService("ServerStorage").SimplePath) local Rig = script.Parent local Target = workspace.YY local path = SimplePath.new(Rig) path:Run(YY)
local SimplePath = require(game:GetService("ServerStorage").SimplePath) local Rig = script.Parent local HumanoidRootPart = workspace:WaitForChild("HumanoidRootPart") local path = SimplePath.new(Rig, { AgentCanJump = true, AgentHeight = 6.0, AgentWalkableClimb = 2.0, }) while true do path:Run(HumanoidRootPart) path.WaypointReached:Connect(function() path:Run(HumanoidRootPart) end) task.wait(1) end скажите пожалуйста, почему скрипт на преследование игрока не работает
@@io32xd функция :WaitForChild не ищет объект по всем иерархиям а просто обращается к первому попавшемуся по имени. Тоесть, Humanoid root part, это часть игрока, но игрока в пути ты не учитываешь, по этому просто ищешь парт с таким названием в воркспейсе. По идеи нужно написать что-то вроде: local HumanoidRootPart = workspace:WaitForChild("Player"):WaitForChild("HumanoidRootPart"), или типа того
Вот несколько вопросов которые помогут исправить твою проблему: 1. Ты импортировал модуль в скрипт и в проект? 2. Ты засунул скрипт в RIG? 3. Ты указал цель для RIG-а? И в конце концов, покажи скрипт
1. Ты скачал модуль? 2. Ты в правильное место засунул модуль? 3. Ты правильно написал скрипт? 4. Ты правильно указал цель? 5. Ты создал вообще объект цели? 6. Скинь скрипт
Да, знаю, очень поздно написал, но щас скажу сырой скрипт, но рабочий. Создай скрипт в ServerScriptService, дальше пишем local SimplePath = require(game:GetService("ServerStorage").SimplePath) - путь к симпл патху local Rig = workspace.Rig - Зомби local path = SimplePath.new(Rig) game.Players.PlayerAdded:Connect(function(plr) - Игрок зашёл в игру, ну и сам plr = игрок while true do task.wait(0.1) path:Run(plr.Character.HumanoidRootPart) end end)
Посмотрел первые 30 секунд, 'мы не будем использовать pathfinding ибо там дохуя ненужных вычислений от чего он очень медленный, вместо этого мы будем использовать модуль который использует pathfinding. Бро гений? Какое блять преимущество в оптимизации ты получаешь используя модуль который просто выступает в роли wrapper'a(обертки, с функциями для использования pathfinding'a) ? - Ты сделал акцент на том что pathfinding медленный из-за своих вычислений, и поэтому не будешь его использовать, но по итогу ты все равно его используешь?
Я про это узнал только после того как смонтировал видео, если честно. Однако, я пробовал заскриптить зомби на обычном Pathfinding, и у меня обновление пути было очень долгим, в тоже время, при использовании SimplePath, поиск пути происходил моментально, и позволял спавнить до сотни зомби без потерь кадров, или увеличения пинга. Пусть SimplePath и просто "обёртка", но факт есть факт, что работает намного быстрее.
Из API к модулю: Этот модуль работает, используя «повторяющийся» подход к поиску пути. Агент поиска пути перемещает более эффективный путь при многократном вычислении, а не только один раз. Частично причина в том, что вычисление пути один раз не гарантирует, что агент достигнет цели, как ожидалось. При использовании повторяющегося подхода учитываются любые препятствия или препятствия, блокирующие путь в текущий момент. Это гарантирует, что агент достигнет своей цели несмотря ни на что, пока он доступен в пределах PathfindingService. @@pestik.
Посмотрите моё новое видео на основном канале!
ruclips.net/video/ZqRLhHQK5hw/видео.html&lc=UgxHFHU-ikxCSrciGQ14AaABAg
а как сделать анимацию шагов у этого бота??
Хорошо и без воды. Думал что тут будет тупо какой-нибудь скрипт который нужно будет скопировать из тулбокса, а тут плагин с отличным объяснением.
Круто, по делу и без воды. Побольше бы таких туториалов на ютубе
@royday2302 верно подмечено
Круто! Надеюсь увидеть больше туториалов по рб студио на этом канале
Я думал это гайд по pathfinding service, но это оказалось лучше ! Спасибо за то что сделал по нему гайд
и вправду шикарное видео, смотрел много разных уроков и в целом везде плохо рассказано и шаблонно, а тут приятно и понятно, да и тема новая, спасибо за ролик
Спасибо большое, очень информативно и по делу!
Давно думал как сделать НПС для игры. Спасибо вам большое!
спасибо!! жду больше видео по роблокс студио ты очень хорошо и информативно делаешь видео !!
Спасибо, наконец-то нашел Ютуб канал который нормально объясняет
скрипт на RBX
path.WaypointReached:Connect(function()
path:Run(Target)
end)
path:Run(Target)
Спасибо. Было бы неплохо увидеть подробный гайд.
Думать за кого-то не собираюсь. Я даю частички пазла, а картинку, собирай сам. Это более эффективный способ учится новому. Я подумываю сделать гайд по базовым командам в LUA
Либо ты противоречишь себе, либо неправильно понял. Я написал комментарий с просьбой увидеть, цитирую твои слова: «вторую часть, где разберу всё от А до Я!»@@SvalkaKvemona
Я под "разберу всё от а до я" имел в виду что покажу все-все функции модуля. Я возможно твою просьбу не так понял тоже@@krimdoff5956
@@SvalkaKvemona судя по таблице которую ты указал в путь, модуль и так исопльзует PathFinding, но модулем легче пользоваться
@@SaleMales да. Им и проще пользоваться, и он проще обрабатывается когда цель движется
Круто, продолжай в том же духе!
Квемон спасибо помню тебя ещё с проекта со слаймом!
Круто, объяснил кратко, хорошо и без воды
Как круто, что твое видео попалось мне в рекомендации! Наконец-то я смогу сделать NPC лучше, не мучаясь с этим громоздким PathFinding'ом роблокса!
Если бы много таких туториалов было,цены бы небыло
Я уже делаю один по модульным скриптам
Хоть я не пользуюсь роблокс студио, но этот гайд очень очень крутой и полезный!
Спасибо, бро! Огромное спасибо! Ты не представляешь, как я прикольно себя чувствую, когда пишу скрипты!... только вот один вопрос есть, я хочу, чтобы этот нпс также искал и преследовал игроков, а не предмет, что для этого нужно сделать, найти парт в модели игрока и вместо Target написать название этого парта? Но тогда появляется встречный вопрос, как и где мне взять этот парт игрока?
Это зависит от того как ты хочешь что-бы это работало. Программирование не про написание кода, а про решение таких задач и проблем. Ищи ответы в интернете. Но просто ЗАБУДЬ про туторы, если ты смотришь их только с целью взять готовый скрипт. Так ты программировать не научишься никогда. Тебе нужно понимать как именно пишутся скрипты, и писать их самому
@SvalkaKvemona я начал создавать свою игру в роблокс студио еще в июне-июле и всегда брал готовые скрипты и модели из тулбокса или же скачивал с интернета, потом бросил ближе к концу августа, но я вернулся неделю или две назад и вот тогда я начал сам всё программировать и создавать, именно благодаря роблокс студио я более менее научился программировать и писать скрипты.
Совет номер один пользуйся скриптами совет два пользуйся properties он помогает делать разные штуки например зделать диалог с персонажем
Совет три при во вкладке view можно создать нпс если нажать avatar пользуйся желаю удачи 😉
Я и так это всё делал...
Бро клёвое видео помог сильно но можно вопрос а что за музыку на фоне
самое годное что я видел
Сразу не узнал а потом как вспомнил что это легендарный Квэмон который снимал ролики в тиктоке и был на фгот сервере!😢
я был, и есть на сервере фгота
очень интересно, жаль что не сильно залетело(
Скажи пожалуйтса как зделать тоже самое но чтобы за игроком шёл
скрипт кому лень писать
local SimplePath = require(game:GetService("ServerStorage").SimplePath)
local Rig = script.Parent
local Target = workspace.Target
local path = SimplePath.new(Rig)
path:Run(Target)
Подача ахуенная, монтаж тоже, а сразу подписываюсь)
Спасибо за гайдик, сделай ещё туториалы пж
Всë прикольно работает но, можешь сделать тутор как чделать анимацию ходьбы для умного нпс, очень прошу
вручную
Круто объясняешь
не плохо, спасибо
Спасибо
Здраствуйте, вы случано не знаете как сделать так что бы нпс не нападал на человека который его заспавнил, или не нападал на ближайшего игрока, а на того что 2 по расстоянию от нпс?
Берешь массив потенциальный целей, сортируешь, и выбираешь второго в массиве. Что-то типа massiv[ 2 ]
Спс этот сервис имба
не за что бро В)
какой язык изучать что бы создавать игры в роблокс студио? (я никогда до этого ничего не изучал и понятия не имею что происходит в ролике) подскажите
В роблокс студио используется язык программирования Lua
А еще, этот урок не сделан и не направлен на полных новичков
вопрос, а через что ты агр зомби сделал? ну тоесть как они тебя замечают?
Если персонаж появляется, то зомби должен идти к его Рут парту
@@Streng_RBX пасибо
@@fota228voron7 Не за что)
Это конечно все здоров, но прекол в том, что в самом начале описания модуля на Dev форуме написано, что он использует PathfindingService роблокса и что этот модуль делает несколько расчетов, чтобы путь был более верным.
да да да, знаю я, ошибся при написании сценария
а можешь сделать видео где более подробно описано как сделать так чтобы нпс ходил за игроком
А как сделать движение за игроком? Вот вообще не врубаюсь, подскажи, пожалуйста
Привет , незнаешь как начать вообще создавать что то в роблокс студио? Какие лучше программы для этого изучать?. Я пытался просто гайды смотреть , но видимо плохие так как было как то всё намешанно и уже на 7 гайде не работали некоторые вещи. Просто у меня желание рпгшку с системой крафта и кгмбинаций зелий есть. Рисовать могу классно только и все ...
Пфф... Ну, для начала, стоит сделать что-то простое. Для создания игр в РБС, тебе потребуется только сам РБС
Сделать твою идею получится только с очень большим опытом
Ничего конкретного подсказать не могу, всё индивидуально. Я учился по ходу дела
@@SvalkaKvemona понятно , я тоже думаю сначала сделать какой нит простой симулятор тайкон , может даже робуксов с него получу
Друг, подскажи пожалуйста, а зомби охотящиеся за игроком сделаны с помощью PathFindingService?
да
кто знает как сделать нпс который будет убивать игрока когда прибегает на шум и возвращаться на место где он был
Прикольно работает но когда дела доходит до WaypointReached то нечего не работает😅
покажи скрипт
прикольно, интересно, а можно ли заставить "ходить" не нпс а обычный парт? (мы хотим сделать румс фан игру но не знаем как заставить монстров лететь к двери)
Можно. Читай документацию модуля, я ссылку в описании оставил
@@SvalkaKvemona правда? ваушки!!!!
используй TweenService для этого
@@sdfglaksi5898 я не шарю
@@KlimKlim20 ну загугли насчёт TweenService он тебе уж точно пригодиться раз ты фан игру по дорсу делаешь
Запарился, добавил звуки клавиатуры при печати строк
Кста имба видео, буквально недавно пытался сделать NPС вечно ходящий с игроком, но было куча ситуация когда бот просто становился на месте, не работал как хотел, посмотрю решит ли этот модуль проблему, а то я в своём скрипте как только не пытался решить проблему
Я протестил, есть проблема что он плох в паркуре, если расстояние не маленькое, то он не прыгает, хотя что бы туда допрыгнуть не нужно прыгать от края до края, так же с высотой, куда игрок может допрыгнуть, NPS не может
Да, на счёт звуков клавы запарился) А поиск пути нужно очень долго настраивать, что-бы НПС не вёл себя как придурок@@Vova_vtvp
когда я пишу false прыжкам, то он перестает работать
Привет, на самом деле штука прикольная. Вроде-бы легкая. Но у меня есть вопрос как сделать так чтобы он за HumanoidRootPart'ом игрока ходил? Или там незнаю нужно с сервера передавать с клиента короче да.
Самое простое, создать функцию, которая будет перебирать через цикл for всех игроков, и проверять кто в радиусе. Если игрок в радиусе, то выбрать его как цель. Уверен что есть способы лучше, но это самое первое и простое что пришло в голову
А именно for i, v in pairs бла бла или for i = 10,10,10?@@SvalkaKvemona
Первое. Нужно просто узнать дистанцию, и если игрок достаточно близко, то указать HumanoidRootPart как цель@@jopoy.
Понял, а как в скрипте написать путь до humanoid root part? то просто если я не ошибаюсь только можно через клиент@@SvalkaKvemona
Не, берешь игроков, Players:GetPlayers(), или что-то типа того. И потом перебираешь каждого, и пишешь типа v.Character.HumanoidRootPart.Position@@jopoy.
Что за плагин для билдинга ты используешь?
Какой?
сделай видео как сделать анимацию для tool когда он у тебя в руке
Я сделаю тогда видео как просто проигрывать анимации. Никто за тебя код писать не будет)
Дай человеку рыбу - будет сыт день.
Научи человека рыбачить - будет сыт всегда
А где можно найти эту желтую штуку когда ты выделяешь модель?
Жёлтую штуку?
Жёлтые линии, я думаю это какой-то плагин
@@lefleffy ппц
@@lefleffy это бета фича роблокса
А что делать если при запуске игры в оутпуте выдает ошибку?
ошибка: "ServerStorage.SimplePath:25: SimplePath Error: Pathfinding target must be a valid Vector3 or BasePart." как исправить?
И ошибка находится не в самом скрипте рига, а в скрипте simplepath
ошибка в том что скрипт не может определить какой объект цели ты ему дал. Тебе в переменной Target указать любой парт
Человек бензопила 8 бит?
Я вижу вы ценитель высокой культуры)
можно название песни на фоне? прост кажется очень знакомым
Chainsaw Man Opening - Kick Back [8 Bit; VRC6]: ruclips.net/video/mgmfkIAXHjg/видео.html
И
CHIPTUNE ♫ 20XX : ruclips.net/video/kZRQosq3PjM/видео.html
Rig не идёт до цели
Уже полчаса пересматриваю ничего не вижу странного
возможно я плохо слшал но как сделать нескольк обьектов пути
В каком плане?
так а почему мы должны тебе верить, что именно этот нн модуль лучше готового сервиса от разрабов роблокса и в частности самого движка. Ты получается хочешь сказать, что кодеры которые разрабатывали данный движок написали на этом же движке сервис хуже того, что ты сейчас показал? Я жду обоснования
Во первых, как же глупо спорить на эту тему...
Во вторых, я был невнимателен. Этот плагин использует поиск пути от роблокса, но, упрощает его использование, и оптимизирует его, от чего он работает быстрее
Квэмон, порекомендуй как начать скриптить, т.к я раньше пытался, но ничего не получалось :( Также предлагаю сотрудничать, я могу делать превью, и т.п.
Я сначала решил сделать тестовый проект по типу Steps steps, так как это было бы просто. Сначала было сложно вникнуть, но сейчас, я уже без проблем занимаюсь скриптингом. Я решал проблемы по мере поступления
not bad not bad
SimplePath и использует Pathfinding
Я уже в курсе, я ошибся при написании сценария
уааааааааа прикольна
А как сделать способности для нпс? Типо удар по земли и Т.д
Это в один урок не уложить. Я не хочу думать за других людей. Сам изучай программирование, и сам думай как это реализовать
у меня НИП не может лазить по лестницам (TrussPart), как это исправить?
Смотри документацию которую я оставил в описании
Квэмон.. Квэмон, где то я это слышал.. Это случайно не твой второй канал?
Да, он самый)
0:38, интересно, как сделать так чтобы нпс шёл на игрока
Тут уже комплексный гайд нужен. В целом, этот урок рассчитан на тех, кто уже хоть что-то умеет.
Просто сделай скрипт поиска хуманоида и направляй нас туда
Забавно, но луа очень похоже на js
Не совсем
не бро, ты ошибаешься
Скрипт не рабочий, выдаёт ошибку "attempt to perform arithmetic (sub) on number and nil". Что делать?
Дай полную ошибку и скрипт
@@SvalkaKvemona ошибка: "ServerStorage.SimplePath:285: attempt to perform arithmetic (sub) on number and nil"
@@SvalkaKvemona Скрипт:
local simplePath = require(game:GetService('ServerStorage'). SimplePath)
local ds = script.Parent
local target = ds.Parent.FLR1_DS_Patrolling.FLR1_DS_PatrollingPoint006
local pPath = simplePath.new(ds)
simplePath:Run(target)
(Скрипт SimplePath не изменялся)
@@Itz_Mimic Из возможных причин ошибки:
1. Ты скорее всего указал не подходящую цель. "DS" должен быть моделькой внутри которой хуманойд.
2. Target может определятся неправильно по той причине что в момент загрузки скрипта, объекта "FLR1_DS_PatrollingPoint006" может просто не существовать, из-за чего оно и не работает.
@@SvalkaKvemona 1. DS - это моделька, внутри которой ЕСТЬ humanoid
Ошибка все равно появляется, даже когда я поставил WaitForChild() для target
С середины где-то с 3:00 и до конца была игра про зомбаков, есть название карты?
Нету, она не закончена
@@SvalkaKvemona доделай, выглядит неплохо
@@SvalkaKvemonaподскажите, почему у нпс при ходьбе нет анимации? (внутри нпс есть скрипт animate)
@@KllKlok Потому-что это делается отдельно. Скрипт animate не работает просто так.
3:16 что ща игра на фоне?
А как ему анимацию бега айдла сделать?
Через статы, можешь со статами и атрибутами сделать
Тип если стат у гуманойда ходьба, то пусть проигрывается анимка
а как сделать так чтоб этот нпс ходил за игроком(игроками)?
А вот думай сам :)
В видео было только про сам поиск пути. Я не буду давать рыбу, я дам удочку (метафора)
Хоть мне это не надо. Но зато нету ничего лишнего и все сказал всечто надо.
Привет, я тоже захотел сделать, у меня вылезала ошибка или не работал кусок с движение нпс при перемещении цели, разобрался, незнаю как у вас но у меня нпс считает waypoint как точки которые он долден пройти до цели, но почему-то либо он их обнуляет потом или что-то делает с ними что они равны нулю я незнаю что делать если надо могу предоставитт скриншот но пока ничего не работает
Просто скинь скрипт, и ошибку
Благодарю за связь, но я смог починить
Вопрос как ты сделал скрипт для НПС чтобы он ходил за игровым персонажем?я уже сделал при помощи брата но роблокс удалил скрипт, я пытался переделать , спрашивал у ИИ , смотрел видео но либо было нагромождение функций и условий либо просто неработающий скрипт.
@@Rudnik54 Думай сам, никто тебе ничего бесплатно делать не будет
@@SvalkaKvemonaСправедливо
Что за музыка играет на 3:25?
Chainsaw Man Opening - Kick Back 8 Bit
@@starblaze0 Спасибо большое!
как сделать чтобы он шёл за игроком?
написать функцию которая каждую секунду ищет ближайшего игрока
Спс,скажи плиз как сделать чтобы когда он доходил до финиша,то его тпэхает обратно на его спавн и он начинал заново идти к финишу
В видео сказано про RBX script signals, вот их и используй 3:56
@@SvalkaKvemona а можешь дать пожалуйста скрипт на мой комментарий а то я не понимаю как сделать ему типо ресет,хочу как в курортный тукон 2
@@Hostik_123 Ты понимаешь что игру на туторах не сделать? Изучай програмирование
@@SvalkaKvemona дорого стоит
@@Hostik_123 В смысле?? А кто тебе запрещает учится самому по тому что есть в интернете
и на исправления
path.Error:Connect(function()
поставте лайк пж я трудился
У меня не получается
Посмотри видео от начала и до конца очень внимательно. Разбери работу скрипта логически.
@@SvalkaKvemona я пробавал 10 раз не роботает local sp = require(game:GetService("ServerStorage").SimplePath)
local rig = script.Parent
local target = game.Workspace.tar
local path = sp.new(rig)
path:Run(target)
скрипт
А как сделать так, чтобы после того, как нас пришёл куда надо выполнялись другие действия. MoveToFinished не работает
path.Reached:Connect(function()
--Тут что-то пишешь что тебе нужно
--Вместо path напиши название переменной пути если ты назвал её по другому*
end)
@@SvalkaKvemona какое название переменной пути? 🫥🫥
@@juysik Какое укажешь такое и будет. Ты знаешь что такое переменная?
@@SvalkaKvemona то есть Target? Место к которому шёл npc?
@@juysik изучи базу языка lua...
Привет. Подскажи пожалуйста как направить рига идти к игроку? Я написал такой скрипт и он не находит игрока.
Скрипт:
local SimplePath = require(game:GetService("ServerStorage").SimplePath)
local Zombie = script.Parent
local HumanoidRootPart = workspace.Players.Player.HumanoidRootPart
local path = SimplePath.new(Zombie, {
AgentCanJump = true,
AgentRadius = 1.0,
AgentHeight = 6.0,
AgentWalkableClimb = 2.0,
})
path.WaypointReached:Connect(function()
path:Run(HumanoidRootPart)
end)
path.Reached:Connect(function()
path:Run(HumanoidRootPart)
end)
path.Blocked:Connect(function()
path:Run(HumanoidRootPart)
end)
path.Error:Connect(function()
path:Run(HumanoidRootPart)
end)
path:Run(HumanoidRootPart)
Подскажи какой надо путь к игроку указать?
Ты указываешь игрока по пути которого не существует. Видишь ли, иногда, скрипт может загрузиться быстрее чем объект который тебе нужен, из-за этого скрипт его не находит. Что-бы это исправить попробуй использовать метод waitforchild()
Ребят, что делать, если риг просто по всей карте начинает летать?😢
А какой код?
@@SvalkaKvemonaЯ исправил, но так и не понял кое что. В общем, когда риг из ServerStorage переноситься в Workspace и позиция HumanoidRootPart меняется, то у частей тела отключается коллизия, а если её вручную включить, то персонаж начинает все равно летать, но повыше...
В общем, в итоге просто убрал строчку «Rig.HumanoidRootPart.Position = StartPos.Position”
Я уже малясь не вовремя, но, да. То что ты написал, не работало бы. Ты менял позицию не самого персонажа, а одной его части. Это так не работает. Тебе нужно перемещать группу с персонажем через метод Character:Move() или что-то типа того. Попробуй сам
а что дописать в скрипт что бы риг следовал зи игроком как у тебя в 0:34
фуф... Ну... Написать больше 200 строчек кода хочешь?
@@SvalkaKvemona если того стоит то хочу
@@SvalkaKvemona ну вообще было бы круто научиться писать код на двесте строк еще и работающий, а то я пока научился максимум на 5 строк самостоятельно. Я просто хочу сделать зомби нпс который приследовал бы игрока, имел регдолы и еще уйму всяких механик для него, но пока я не в силах такое сделать(
@@starblaze0 смотреть на горы легче чем залезть на них. У тебя обязательно получится если не будешь просто делать всё по туторам
@@SvalkaKvemona ну я щас пытаюсь чуть чуть разобраться сам в скриптинге, я щас прямо самые азы прохожу, но когда то сам смогу что то большее написать (надеюсь)
слушай товарищ, я испробовал этот модуль. и на данный момент он перестал работать. Run() по какой то причине не движет нпс до нужной точки. и стоит на одном месте. какие эти проблемы могут быть?
Скинь скрипт
@@SvalkaKvemona local ServerStorage = game:GetService("ServerStorage")
local SP = require(ServerStorage.SimplePath)
local rig = script.Parent
local walk = rig.WalkingAround
walk.Enabled = false
function FindPlayer(Position)
local List = game.Workspace:GetChildren()
local Torso = nil
local Distance = 40
local HumanoidRootPart = nil
local Humanoid = nil
local Player = nil
for i = 1, #List do
Player = List[i]
if (Player.ClassName == "Model") and (Player ~= script.Parent) then
HumanoidRootPart = Player:FindFirstChild("HumanoidRootPart")
Humanoid = Player:FindFirstChild("Humanoid")
if (HumanoidRootPart ~= nil) and (Humanoid ~=nil) and (Humanoid.Health > 0) then
if (HumanoidRootPart.Position - Position).Magnitude < Distance then
Torso = HumanoidRootPart
Distance = (HumanoidRootPart.Position - Position).Magnitude
end
end
end
end
return Torso
end
local path = SP.new(rig)
while true do
task.wait(0.1)
local Target = FindPlayer(script.Parent.HumanoidRootPart.Position)
if Target ~= nil then
walk.Enabled = false
task.wait(0.1)
path:Run(Target)
elseif walk.Enabled ~= true then
task.wait(1)
walk.Enabled = true
end
end
у меня всё работало но после того как я переместил модельку, скрипт перестал работать
@@SvalkaKvemona local ServerStorage = game:GetService("ServerStorage")
local SP = require(ServerStorage.SimplePath)
local rig = script.Parent
local walk = rig.WalkingAround
walk.Enabled = false
function FindPlayer(Position)
local List = game.Workspace:GetChildren()
local Torso = nil
local Distance = 40
local HumanoidRootPart = nil
local Humanoid = nil
local Player = nil
for i = 1, #List do
Player = List[i]
if (Player.ClassName == "Model") and (Player ~= script.Parent) then
HumanoidRootPart = Player:FindFirstChild("HumanoidRootPart")
Humanoid = Player:FindFirstChild("Humanoid")
if (HumanoidRootPart ~= nil) and (Humanoid ~=nil) and (Humanoid.Health > 0) then
if (HumanoidRootPart.Position - Position).Magnitude < Distance then
Torso = HumanoidRootPart
Distance = (HumanoidRootPart.Position - Position).Magnitude
end
end
end
end
return Torso
end
local path = SP.new(rig)
while true do
task.wait(0.1)
local Target = FindPlayer(script.Parent.HumanoidRootPart.Position)
if Target ~= nil then
walk.Enabled = false
task.wait(0.1)
path:Run(Target)
elseif walk.Enabled ~= true then
task.wait(1)
walk.Enabled = true
end
end
код полностью функционировал но когда я его переместил он перестал работать
@@SvalkaKvemona куда кидать, в ютубе они что то не отправляются
@@SvalkaKvemona local ServerStorage = game:GetService("ServerStorage")
local SP = require(ServerStorage.SimplePath)
local rig = script.Parent
local path = SP.new(rig)
local waypoints = workspace.Cutscene.Position
while true do
--local rndNum = math.random(1,#waypoints)
path:Run(waypoints)
task.wait(5)
end
у меня код по длиннее, но даже этот работать не хочет
можешь опубликовать твоих зомби пожалуйста
100 робуксов
Крутой тутор, только хочется, чтобы нпс шёл на игрока, а я без понятия как его указать. Я даже писал game.Players.LocalPlayer.Character , Но нпс не двинулся, а так на партах работает. Можно конечно поставить парт игроку, но точно ли это решение? Буду рад, если поможешь с этим.
Скажу тебе вот что. Во первых game.Players.LocalPlayer указывает просто локального игрока, которого можно узнать только из локального скрипта которых находится в этом же игроке. Во вторых Character это просто моделька игрока, для указания пути нужен Part, а не Model
как сделать парт цель
Просто назови его Target
Это не свалка квэмона это дворец квэмона
Моему ваще по барабану он стоит на том месте где стоял и не пошевелился
1. Ты установил модуль в проект?
2. Ты засунул скрипт в твоего персонажа?
3. Ты точно правильно написал скрипт? Можешь его скинуть?
@@SvalkaKvemona пж скинь😭
@@soribalkhimov3147 если тебе настолько в падлу посмотреть это видео более внимательно, то тебе игру не создать
@@SvalkaKvemona вот код;
local SimplePath = require(game.GetService("ServerStorage").SimplePath)
local Rig = script.Parent
local Target = workspace.YY
local path = SimplePath.new(Rig)
path:Run(YY)
Можно полный скрипт?
нет
local SimplePath = require(game:GetService("ServerStorage").SimplePath)
local Rig = script.Parent
local HumanoidRootPart = workspace:WaitForChild("HumanoidRootPart")
local path = SimplePath.new(Rig, {
AgentCanJump = true,
AgentHeight = 6.0,
AgentWalkableClimb = 2.0,
})
while true do
path:Run(HumanoidRootPart)
path.WaypointReached:Connect(function()
path:Run(HumanoidRootPart)
end)
task.wait(1)
end
скажите пожалуйста, почему скрипт на преследование игрока не работает
уфф... Во первых, ты ищещь парт персонажа в воркспейсе, где его нет. Во вторых, сувать RBX script signals в циклы вайл тру не лучшая идея
@@SvalkaKvemona ну он же ждёт после этого 1 секунду
@@SvalkaKvemona с партом работало
@@io32xd функция :WaitForChild не ищет объект по всем иерархиям а просто обращается к первому попавшемуся по имени. Тоесть, Humanoid root part, это часть игрока, но игрока в пути ты не учитываешь, по этому просто ищешь парт с таким названием в воркспейсе.
По идеи нужно написать что-то вроде:
local HumanoidRootPart = workspace:WaitForChild("Player"):WaitForChild("HumanoidRootPart"), или типа того
@ice/hvtrs8%2F-wuw%2Cymuvu%60e%2Ccmm-cjalngl-UA_K-xBwV2322NP%5BcPyWqUou спасибо за помощь, попробую
я сделал как на видео но почему нпс не двигается у меня?
Вот несколько вопросов которые помогут исправить твою проблему:
1. Ты импортировал модуль в скрипт и в проект?
2. Ты засунул скрипт в RIG?
3. Ты указал цель для RIG-а?
И в конце концов, покажи скрипт
я просто по видео закинул модуль в ServerStorage и в Rig писал весь этот скрипт@@SvalkaKvemona
я только недавно начал кодить и пытаюсь для игры сделать монстра который будет идти на челов и бить их@@SvalkaKvemona
А Part цель сделал? Создай куб в мире с названием "Target"@@coffencoffen36
ОООООО ДАА СРАБОТАЛО я просто ошибку сделал в названии
СПАСИБО!!@@SvalkaKvemona
3:10 чо за игра на фоне
The Undead Coming: Armageddon
я не понял как сделать анимацию
Этот урок не об этом. Учи сам
дайте скрип для цель игрока
нет я твоя скрип не дать
А как сделать чтоб риг шёл на игрока?
Скрипт
Спасибо, уважаемый@@bebra3392, Вы очень помогли мне своим сообщением, продолжайте в том же духе
Не знаешь - не пиши
@@ShadowYT_Shandridow но он же правильно написал
@@zlyyyka очевидно что нужен скрипт, но какой?
@@ShadowYT_Shandridow рабочий
второй раз захожу на русский тутор
я раз 20 попробовал не идет
1. Ты скачал модуль?
2. Ты в правильное место засунул модуль?
3. Ты правильно написал скрипт?
4. Ты правильно указал цель?
5. Ты создал вообще объект цели?
6. Скинь скрипт
А как указать путь к игроку???
Ищи его скриптом и направляй нпс туда
Да, знаю, очень поздно написал, но щас скажу сырой скрипт, но рабочий.
Создай скрипт в ServerScriptService, дальше пишем
local SimplePath = require(game:GetService("ServerStorage").SimplePath) - путь к симпл патху
local Rig = workspace.Rig - Зомби
local path = SimplePath.new(Rig)
game.Players.PlayerAdded:Connect(function(plr) - Игрок зашёл в игру, ну и сам plr = игрок
while true do
task.wait(0.1)
path:Run(plr.Character.HumanoidRootPart)
end
end)
Посмотрел первые 30 секунд, 'мы не будем использовать pathfinding ибо там дохуя ненужных вычислений от чего он очень медленный, вместо этого мы будем использовать модуль который использует pathfinding. Бро гений? Какое блять преимущество в оптимизации ты получаешь используя модуль который просто выступает в роли wrapper'a(обертки, с функциями для использования pathfinding'a) ?
-
Ты сделал акцент на том что pathfinding медленный из-за своих вычислений, и поэтому не будешь его использовать, но по итогу ты все равно его используешь?
genius
Я про это узнал только после того как смонтировал видео, если честно. Однако, я пробовал заскриптить зомби на обычном Pathfinding, и у меня обновление пути было очень долгим, в тоже время, при использовании SimplePath, поиск пути происходил моментально, и позволял спавнить до сотни зомби без потерь кадров, или увеличения пинга. Пусть SimplePath и просто "обёртка", но факт есть факт, что работает намного быстрее.
@@SvalkaKvemona факт заключается в том что модуль работает быстрее чем твой код, но не быстрее pathfinding'a т.к. использует его 😭
Из API к модулю:
Этот модуль работает, используя «повторяющийся» подход к поиску пути. Агент поиска пути перемещает более эффективный путь при многократном вычислении, а не только один раз. Частично причина в том, что вычисление пути один раз не гарантирует, что агент достигнет цели, как ожидалось. При использовании повторяющегося подхода учитываются любые препятствия или препятствия, блокирующие путь в текущий момент. Это гарантирует, что агент достигнет своей цели несмотря ни на что, пока он доступен в пределах PathfindingService. @@pestik.
Не работает
Внимательно посмотри видео от начала до конца, и внимательно слушай
привтее