1
Скрипт убивающий блок
-- Получаем ссылку на часть (Part), которая будет убивать игроков
local killPart = script.Parent -- Предполагается, что скрипт находится внутри части
-- Функция, которая вызывается когда что-то касается этой части
local function onTouched(otherPart)
-- Получаем модель персонажа из части, которая коснулась
local character = otherPart.Parent
-- Проверяем, есть ли у модели Humanoid (что означает, что это персонаж игрока)
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
-- Убиваем персонажа
humanoid.Health = 0
-- Можно также использовать:
-- humanoid:TakeDamage(humanoid.MaxHealth) -- Альтернативный способ
end
end
-- Соединяем функцию с событием Touched
killPart.Touched:Connect(onTouched)
local killPart = script.Parent -- Предполагается, что скрипт находится внутри части
-- Функция, которая вызывается когда что-то касается этой части
local function onTouched(otherPart)
-- Получаем модель персонажа из части, которая коснулась
local character = otherPart.Parent
-- Проверяем, есть ли у модели Humanoid (что означает, что это персонаж игрока)
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
-- Убиваем персонажа
humanoid.Health = 0
-- Можно также использовать:
-- humanoid:TakeDamage(humanoid.MaxHealth) -- Альтернативный способ
end
end
-- Соединяем функцию с событием Touched
killPart.Touched:Connect(onTouched)
2
Скрипт исчезающий блок
local part = script.Parent -- Платформа, к которой прикреплен скрипт
local disappearTime = 1 -- Время (в секундах), через которое платформа исчезнет
local reappearTime = 3 -- Время (в секундах), через которое платформа появится снова
local originalTransparency = part.Transparency
local originalCanCollide = part.CanCollide
local function onTouched(otherPart)
local character = otherPart.Parent
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
-- Платформа начинает исчезать
part.CanCollide = false
part.Transparency = 1 -- Полностью прозрачная
-- Ждем reappearTime секунд, затем возвращаем платформу
wait(reappearTime)
part.CanCollide = originalCanCollide
part.Transparency = originalTransparency
end
end
part.Touched:Connect(onTouched)
local disappearTime = 1 -- Время (в секундах), через которое платформа исчезнет
local reappearTime = 3 -- Время (в секундах), через которое платформа появится снова
local originalTransparency = part.Transparency
local originalCanCollide = part.CanCollide
local function onTouched(otherPart)
local character = otherPart.Parent
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
-- Платформа начинает исчезать
part.CanCollide = false
part.Transparency = 1 -- Полностью прозрачная
-- Ждем reappearTime секунд, затем возвращаем платформу
wait(reappearTime)
part.CanCollide = originalCanCollide
part.Transparency = originalTransparency
end
end
part.Touched:Connect(onTouched)
3
Скрипт исчезающий блок (постепенно анимация)
local part = script.Parent
local disappearTime = 1 -- Время исчезновения (сек)
local reappearTime = 3 -- Время появления (сек)
local fadeSteps = 10 -- Количество шагов анимации
local originalTransparency = part.Transparency
local originalCanCollide = part.CanCollide
local function fadeOut()
part.CanCollide = false
for i = 1, fadeSteps do
part.Transparency = originalTransparency + (1 - originalTransparency) * (i / fadeSteps)
wait(disappearTime / fadeSteps)
end
end
local function fadeIn()
for i = 1, fadeSteps do
part.Transparency = 1 - (1 - originalTransparency) * (i / fadeSteps)
wait(reappearTime / fadeSteps)
end
part.CanCollide = originalCanCollide
end
local function onTouched(otherPart)
local humanoid = otherPart.Parent:FindFirstChild("Humanoid")
if humanoid and part.CanCollide then
fadeOut()
wait(reappearTime)
fadeIn()
end
end
part.Touched:Connect(onTouched)
local disappearTime = 1 -- Время исчезновения (сек)
local reappearTime = 3 -- Время появления (сек)
local fadeSteps = 10 -- Количество шагов анимации
local originalTransparency = part.Transparency
local originalCanCollide = part.CanCollide
local function fadeOut()
part.CanCollide = false
for i = 1, fadeSteps do
part.Transparency = originalTransparency + (1 - originalTransparency) * (i / fadeSteps)
wait(disappearTime / fadeSteps)
end
end
local function fadeIn()
for i = 1, fadeSteps do
part.Transparency = 1 - (1 - originalTransparency) * (i / fadeSteps)
wait(reappearTime / fadeSteps)
end
part.CanCollide = originalCanCollide
end
local function onTouched(otherPart)
local humanoid = otherPart.Parent:FindFirstChild("Humanoid")
if humanoid and part.CanCollide then
fadeOut()
wait(reappearTime)
fadeIn()
end
end
part.Touched:Connect(onTouched)
4
Скрипт исчезающий блок (постепенно)
local part = script.Parent -- Платформа, к которой прикреплен скрипт
local fadeTime = 3 -- Время (в секундах) полного исчезновения
local respawnTime = 5 -- Через сколько секунд платформа вернётся
local originalTransparency = part.Transparency
local originalCanCollide = part.CanCollide
local debounce = false -- Защита от повторного срабатывания
local function fadeOut()
debounce = true
-- Плавное исчезновение (но коллизия остаётся)
for i = 1, 10 do
part.Transparency = originalTransparency + (1 - originalTransparency) * (i / 10)
wait(fadeTime / 10)
end
-- Только теперь выключаем коллизию (игрок провалится)
part.CanCollide = false
-- Ждём respawnTime секунд и возвращаем платформу
wait(respawnTime)
part.Transparency = originalTransparency
part.CanCollide = originalCanCollide
debounce = false
end
local function onTouched(otherPart)
local humanoid = otherPart.Parent:FindFirstChild("Humanoid")
if humanoid and not debounce then
fadeOut()
end
end
part.Touched:Connect(onTouched)
local fadeTime = 3 -- Время (в секундах) полного исчезновения
local respawnTime = 5 -- Через сколько секунд платформа вернётся
local originalTransparency = part.Transparency
local originalCanCollide = part.CanCollide
local debounce = false -- Защита от повторного срабатывания
local function fadeOut()
debounce = true
-- Плавное исчезновение (но коллизия остаётся)
for i = 1, 10 do
part.Transparency = originalTransparency + (1 - originalTransparency) * (i / 10)
wait(fadeTime / 10)
end
-- Только теперь выключаем коллизию (игрок провалится)
part.CanCollide = false
-- Ждём respawnTime секунд и возвращаем платформу
wait(respawnTime)
part.Transparency = originalTransparency
part.CanCollide = originalCanCollide
debounce = false
end
local function onTouched(otherPart)
local humanoid = otherPart.Parent:FindFirstChild("Humanoid")
if humanoid and not debounce then
fadeOut()
end
end
part.Touched:Connect(onTouched)
5
Скрипт создающий NPС, который преследует и убивает игрока
local ServerScriptService = game:GetService("ServerScriptService")
local Players = game:GetService("Players")
-- Настройки NPC
local NPC_SETTINGS = {
Speed = 5, -- Скорость движения
Damage = 10, -- Урон при касании (мгновенный)
RespawnTime = 1, -- Время перед повторным появлением NPC
ChaseDistance = 50, -- Дистанция начала преследования
StopDistance = 3, -- Дистанция остановки перед игроком
-- Новые параметры для постепенного урона
DamageRadius = 1, -- Радиус постепенного урона
MinDamagePerSec = 1, -- Минимальный урон в секунду
MaxDamagePerSec = 5, -- Максимальный урон в секунду (при близком расстоянии)
DamageInterval = 0.5 -- Интервал нанесения урона
}
-- Создаем NPC (без изменений)
local function createNPC(spawnLocation)
local npc = Instance.new("Model")
npc.Name = "KillerNPC"
local humanoid = Instance.new("Humanoid")
humanoid.WalkSpeed = NPC_SETTINGS.Speed
humanoid.Health = 100
humanoid.MaxHealth = 100
humanoid.Parent = npc
local torso = Instance.new("Part")
torso.Name = "Torso"
torso.Size = Vector3.new(2, 2, 1)
torso.Anchored = false
torso.CanCollide = true
torso.Parent = npc
local head = Instance.new("Part")
head.Name = "Head"
head.Size = Vector3.new(1, 1, 1)
head.Position = torso.Position + Vector3.new(0, 1.5, 0)
head.Parent = npc
local weld = Instance.new("WeldConstraint")
weld.Part0 = torso
weld.Part1 = head
weld.Parent = npc
npc.PrimaryPart = torso
npc:SetPrimaryPartCFrame(spawnLocation)
npc.Parent = workspace
return npc
end
-- Логика преследования (без изменений)
local function chasePlayer(npc, targetPlayer)
local humanoid = npc:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 then return end
local targetCharacter = targetPlayer.Character
if not targetCharacter then return end
local targetRoot = targetCharacter:FindFirstChild("HumanoidRootPart")
local npcRoot = npc.PrimaryPart
if not targetRoot or not npcRoot then return end
local distance = (targetRoot.Position - npcRoot.Position).Magnitude
if distance > NPC_SETTINGS.ChaseDistance then
humanoid:MoveTo(npcRoot.Position)
return
end
if distance > NPC_SETTINGS.StopDistance then
humanoid:MoveTo(targetRoot.Position)
end
end
-- Обработчик касания NPC (без изменений)
local function onNPCTouched(npc, hit)
local character = hit.Parent
local player = Players:GetPlayerFromCharacter(character)
local humanoid = character:FindFirstChildOfClass("Humanoid")
if player and humanoid then
humanoid:TakeDamage(NPC_SETTINGS.Damage)
end
end
-- Новая функция: постепенный урон
local function applyGradualDamage(npc)
while npc and npc.Parent do
wait(NPC_SETTINGS.DamageInterval)
local npcRoot = npc.PrimaryPart
if not npcRoot then continue end
for _, player in ipairs(Players:GetPlayers()) do
local character = player.Character
if not character then continue end
local humanoid = character:FindFirstChildOfClass("Humanoid")
local targetRoot = character:FindFirstChild("HumanoidRootPart")
if humanoid and humanoid.Health > 0 and targetRoot then
local distance = (targetRoot.Position - npcRoot.Position).Magnitude
-- Если игрок в радиусе урона
if distance <= NPC_SETTINGS.DamageRadius then
-- Рассчитываем урон в зависимости от расстояния
local damageRatio = 1 - (distance / NPC_SETTINGS.DamageRadius)
local damage = NPC_SETTINGS.MinDamagePerSec +
(NPC_SETTINGS.MaxDamagePerSec - NPC_SETTINGS.MinDamagePerSec) * damageRatio
-- Применяем урон с учетом интервала
humanoid:TakeDamage(damage * NPC_SETTINGS.DamageInterval)
-- Визуальный эффект (опционально)
if damage > 0 then
local effect = Instance.new("ParticleEmitter")
effect.Texture = "rbxassetid://248604250" -- ID текстуры крови
effect.LightEmission = 0.7
effect.Size = NumberSequence.new(0.3)
effect.Parent = targetRoot
game.Debris:AddItem(effect, 0.5)
end
end
end
end
end
end
-- Основная функция с добавлением постепенного урона
local function setupNPC()
local spawnLocation = CFrame.new(0, 5, 0)
local npc = createNPC(spawnLocation)
-- Оригинальный обработчик касаний
npc.PrimaryPart.Touched:Connect(function(hit)
onNPCTouched(npc, hit)
end)
-- Запускаем постепенный урон в отдельном потоке
coroutine.wrap(applyGradualDamage)(npc)
-- Цикл преследования (без изменений)
while true do
local closestPlayer = nil
local shortestDistance = math.huge
for _, player in ipairs(Players:GetPlayers()) do
if player.Character then
local root = player.Character:FindFirstChild("HumanoidRootPart")
if root then
local distance = (root.Position - npc.PrimaryPart.Position).Magnitude
if distance < shortestDistance then
shortestDistance = distance
closestPlayer = player
end
end
end
end
if closestPlayer then
chasePlayer(npc, closestPlayer)
end
wait(0.1)
end
end
-- Запускаем NPC
setupNPC()
local Players = game:GetService("Players")
-- Настройки NPC
local NPC_SETTINGS = {
Speed = 5, -- Скорость движения
Damage = 10, -- Урон при касании (мгновенный)
RespawnTime = 1, -- Время перед повторным появлением NPC
ChaseDistance = 50, -- Дистанция начала преследования
StopDistance = 3, -- Дистанция остановки перед игроком
-- Новые параметры для постепенного урона
DamageRadius = 1, -- Радиус постепенного урона
MinDamagePerSec = 1, -- Минимальный урон в секунду
MaxDamagePerSec = 5, -- Максимальный урон в секунду (при близком расстоянии)
DamageInterval = 0.5 -- Интервал нанесения урона
}
-- Создаем NPC (без изменений)
local function createNPC(spawnLocation)
local npc = Instance.new("Model")
npc.Name = "KillerNPC"
local humanoid = Instance.new("Humanoid")
humanoid.WalkSpeed = NPC_SETTINGS.Speed
humanoid.Health = 100
humanoid.MaxHealth = 100
humanoid.Parent = npc
local torso = Instance.new("Part")
torso.Name = "Torso"
torso.Size = Vector3.new(2, 2, 1)
torso.Anchored = false
torso.CanCollide = true
torso.Parent = npc
local head = Instance.new("Part")
head.Name = "Head"
head.Size = Vector3.new(1, 1, 1)
head.Position = torso.Position + Vector3.new(0, 1.5, 0)
head.Parent = npc
local weld = Instance.new("WeldConstraint")
weld.Part0 = torso
weld.Part1 = head
weld.Parent = npc
npc.PrimaryPart = torso
npc:SetPrimaryPartCFrame(spawnLocation)
npc.Parent = workspace
return npc
end
-- Логика преследования (без изменений)
local function chasePlayer(npc, targetPlayer)
local humanoid = npc:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 then return end
local targetCharacter = targetPlayer.Character
if not targetCharacter then return end
local targetRoot = targetCharacter:FindFirstChild("HumanoidRootPart")
local npcRoot = npc.PrimaryPart
if not targetRoot or not npcRoot then return end
local distance = (targetRoot.Position - npcRoot.Position).Magnitude
if distance > NPC_SETTINGS.ChaseDistance then
humanoid:MoveTo(npcRoot.Position)
return
end
if distance > NPC_SETTINGS.StopDistance then
humanoid:MoveTo(targetRoot.Position)
end
end
-- Обработчик касания NPC (без изменений)
local function onNPCTouched(npc, hit)
local character = hit.Parent
local player = Players:GetPlayerFromCharacter(character)
local humanoid = character:FindFirstChildOfClass("Humanoid")
if player and humanoid then
humanoid:TakeDamage(NPC_SETTINGS.Damage)
end
end
-- Новая функция: постепенный урон
local function applyGradualDamage(npc)
while npc and npc.Parent do
wait(NPC_SETTINGS.DamageInterval)
local npcRoot = npc.PrimaryPart
if not npcRoot then continue end
for _, player in ipairs(Players:GetPlayers()) do
local character = player.Character
if not character then continue end
local humanoid = character:FindFirstChildOfClass("Humanoid")
local targetRoot = character:FindFirstChild("HumanoidRootPart")
if humanoid and humanoid.Health > 0 and targetRoot then
local distance = (targetRoot.Position - npcRoot.Position).Magnitude
-- Если игрок в радиусе урона
if distance <= NPC_SETTINGS.DamageRadius then
-- Рассчитываем урон в зависимости от расстояния
local damageRatio = 1 - (distance / NPC_SETTINGS.DamageRadius)
local damage = NPC_SETTINGS.MinDamagePerSec +
(NPC_SETTINGS.MaxDamagePerSec - NPC_SETTINGS.MinDamagePerSec) * damageRatio
-- Применяем урон с учетом интервала
humanoid:TakeDamage(damage * NPC_SETTINGS.DamageInterval)
-- Визуальный эффект (опционально)
if damage > 0 then
local effect = Instance.new("ParticleEmitter")
effect.Texture = "rbxassetid://248604250" -- ID текстуры крови
effect.LightEmission = 0.7
effect.Size = NumberSequence.new(0.3)
effect.Parent = targetRoot
game.Debris:AddItem(effect, 0.5)
end
end
end
end
end
end
-- Основная функция с добавлением постепенного урона
local function setupNPC()
local spawnLocation = CFrame.new(0, 5, 0)
local npc = createNPC(spawnLocation)
-- Оригинальный обработчик касаний
npc.PrimaryPart.Touched:Connect(function(hit)
onNPCTouched(npc, hit)
end)
-- Запускаем постепенный урон в отдельном потоке
coroutine.wrap(applyGradualDamage)(npc)
-- Цикл преследования (без изменений)
while true do
local closestPlayer = nil
local shortestDistance = math.huge
for _, player in ipairs(Players:GetPlayers()) do
if player.Character then
local root = player.Character:FindFirstChild("HumanoidRootPart")
if root then
local distance = (root.Position - npc.PrimaryPart.Position).Magnitude
if distance < shortestDistance then
shortestDistance = distance
closestPlayer = player
end
end
end
end
if closestPlayer then
chasePlayer(npc, closestPlayer)
end
wait(0.1)
end
end
-- Запускаем NPC
setupNPC()
6
Скрипт смена дня и ночи
B = 0
while true do
game.Lighting.ClockTime=B
B=B+0.01
if B>24 then B=0 end
wait(2)
end
while true do
game.Lighting.ClockTime=B
B=B+0.01
if B>24 then B=0 end
wait(2)
end