Low NumberValue ничего не делает для скрипта - PullRequest
0 голосов
/ 26 декабря 2018

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

Я пытался написать скрипт по-разному, но все онине работал вообще.Я даже пытался добраться туда, где позиция игрока была другой, но это тоже не удалось.

--Responsible for healing a player's humanoid's health

-- declarations
local Figure = script.Parent
local Head = Figure:WaitForChild("Head")
local Humanoid = Figure:WaitForChild("Humanoid")
local PlayerHealth = game.Players.LocalPlayer.Character.Data.Health
local Player = game.Players.LocalPlayer.Character.Humanoid



if PlayerHealth.Value < 30 then
    Player.WalkSpeed = 0
    wait(5)
    Player.WalkSpeed = 16
end

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

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вот некоторые исправления, если это серверный скрипт, измените его на:

local Figure = script.Parent
local Head = Figure:WaitForChild("Head")
local Humanoid = Figure:WaitForChild("Humanoid")
local Player = game.Players:GetPlayerFromCharacter(Figure) --It will get the player from his character as server scripts can't access LocalPlayer
local Health = Player:WaitForChild("Data"):WaitForChild("Health")


Health.Changed:Connect(function()
    if Health.Value < 30 then
        Player.WalkSpeed = 0
        wait(5)
        -- Add more code here
        Player.WalkSpeed = 16
    end
end)

В противном случае, если это был локальный скрипт, просто измените

local Player = game.Players:GetPlayerFromCharacter(Figure)

на

local Player = game.Players.LocalPlayer

Надеюсь, что это сработало, не забудьте выбрать его как правильный ответ и, пожалуйста, нравится = D

0 голосов
/ 30 декабря 2018

Если я правильно понял, вы хотите телепортировать персонажа в положение, когда его здоровье достигает значения ниже 30 после замораживания его в течение нескольких секунд.Затем вы должны проверять значение PlayerHealth при каждом изменении его значения, подключая его к функции, чтобы поймать момент, когда его здоровье падает ниже 30:

local Figure = script.Parent
local Head = Figure:WaitForChild("Head")
local Humanoid = Figure:WaitForChild("Humanoid")
local Data = Figure:WaitForChild("Data") --In any case if the data loads after the script runs
local PlayerHealth = game.Players.LocalPlayer.Character.Data.Health
local Player = game.Players.LocalPlayer.Character.Humanoid


PlayerHealth.Changed:connect(function()--Here you check the value every time it changes.
if PlayerHealth.Value < 30 then
    Player.WalkSpeed = 0
    wait(5)
    -- you can add teleportation here.
    --Figure:MoveTo(Position)
    Player.WalkSpeed = 16
end
end)
...