Другие языки программирования и технологии

Програмирование Roblox Lua скрипт, чтобы когда игрок вставал на объект он каждую секунду получал 1 очко.

Я хочу сделать скрипт, чтобы когда игрок вставал на объект он каждую секунду получал 1 очко. У меня уже есть скрипт который создает leaderstats и в нем Power, вот я хочу чтобы когда игрок вставал на объект он получал по 1 Power каждую секунду!
Помогите пожалуйста, нигде не могу найти ни кода, ни гайдов
Вы можете использовать событие Touched для определения, когда игрок касается объекта. Затем вы можете использовать функцию wait в цикле while, чтобы увеличивать очки игрока каждую секунду, пока он находится на объекте. Вот пример кода, который вы можете использовать в качестве отправной точки:
 local part = script.Parent -- Объект, на который игрок должен встать 
local debounce = false

local function onTouched(hit)
local character = hit.Parent
local humanoid = character:FindFirstChild("Humanoid")
if humanoid and not debounce then
debounce = true
local player = game.Players:GetPlayerFromCharacter(character)
local leaderstats = player:FindFirstChild("leaderstats")
local power = leaderstats:FindFirstChild("Power")
while character.Humanoid.FloorMaterial == part.Material do
power.Value = power.Value + 1
wait(1)
end
debounce = false
end
end

part.Touched:Connect(onTouched)
Этот код должен быть помещен в скрипт, который находится внутри объекта, на который игрок должен встать. Он использует событие Touched, чтобы определить, когда игрок касается объекта, а затем увеличивает значение Power в leaderstats игрока каждую секунду, пока игрок находится на объекте.

Вот обновленный код, который должен работать так, как вы хотите:
 local part = script.Parent -- Объект, на который игрок должен встать 
local debounce = false

local function onTouched(hit)
local character = hit.Parent
local humanoid = character:FindFirstChild("Humanoid")
if humanoid and not debounce then
debounce = true
local player = game.Players:GetPlayerFromCharacter(character)
local leaderstats = player:FindFirstChild("leaderstats")
local power = leaderstats:FindFirstChild("Power")
while character.Humanoid.FloorMaterial == part.Material do
power.Value = power.Value + 1
wait(1)
end
end
end

local function onEnded(hit)
local character = hit.Parent
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
debounce = false
end
end

part.Touched:Connect(onTouched)
part.TouchEnded:Connect(onEnded)
Этот код добавляет обработчик события TouchEnded, который устанавливает переменную debounce в false, когда игрок покидает объект. Это останавливает цикл while в обработчике события Touched, который увеличивает очки игрока. Теперь очки будут увеличиваться только тогда, когда игрок находится на объекте.
$Daulet$ 100% ^
$Daulet$ 100% ^
25 860
Лучший ответ
Сергей Евстратенков Когда я ухожу от объекта очки продолжают капать, мне нужно чтобы когда только стоишь на нем давались очки, можешь добавить такую функцию
Сергей Евстратенков очки просто бесконечно начисляются после наступания на объект
$Daulet$ 100% ^
 local part = script.Parent -- Объект, на который игрок должен встать 
local debounce = false

local function onTouched(hit)
local character = hit.Parent
local humanoid = character:FindFirstChild("Humanoid")
if humanoid and not debounce then
debounce = true
local player = game.Players:GetPlayerFromCharacter(character)
local leaderstats = player:FindFirstChild("leaderstats")
local power = leaderstats:FindFirstChild("Power")
while (character.HumanoidRootPart.Position - part.Position).Magnitude < 5 do
power.Value = power.Value + 1
wait(1)
end
debounce = false
end
end

part.Touched:Connect(onTouched)
Робоока ахахах тебе 10?