Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Этот скрипт управляет снарядами на стороне сервера
- local Players = game:GetService("Players")
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local launchProjectile = ReplicatedStorage:WaitForChild("LaunchProjectile")
- local destroyProjectile = ReplicatedStorage:WaitForChild("DestroyProjectile")
- local destroyEnemy = ReplicatedStorage:WaitForChild("DestroyEnemy")
- local pingChecker = ReplicatedStorage:WaitForChild("Ping")
- -- Ссылка на снаряд в ReplicatedStorage
- local projectileTemplate = ReplicatedStorage.Projectile
- local currentPing = {}
- launchProjectile.OnServerInvoke = function(player, position, velocity)
- local projectile = projectileTemplate:Clone()
- projectile.Velocity = velocity
- local ping = 0
- if currentPing[player] then
- ping = currentPing[player]
- end
- local offset = ping * velocity * 1.5
- projectile.Position = position + offset
- local mass = projectile:GetMass()
- projectile.VectorForce.Force = Vector3.new(0, 1, 0) * mass * game.Workspace.Gravity
- projectile.Parent = game.Workspace
- projectile:SetNetworkOwner(nil)
- return projectile
- end
- local function onDestroyProjectile(player, projectile)
- projectile:Destroy()
- end
- local function onDestroyEnemy(player, enemy)
- enemy:Destroy()
- -- Добавляем очки за уничтожение врагов в enemyStat лидерборда
- local enemyStat = player.leaderstats:WaitForChild("Score")
- enemyStat.Value = enemyStat.Value + 1
- end
- -- Проверяем пинг игрока
- local function onPlayerAdded(player)
- while player and wait(3) do
- local start = tick()
- pingChecker:InvokeClient(player)
- local ping = tick() - start
- currentPing[player] = ping
- end
- end
- -- Функция убирает игрока из таблицы проверки пинга
- local function onPlayerRemoving(player)
- currentPing[player] = nil
- end
- -- Связываем события и функции
- destroyProjectile.OnServerEvent:Connect(onDestroyProjectile)
- destroyEnemy.OnServerEvent:Connect(onDestroyEnemy)
- Players.PlayerAdded:Connect(onPlayerAdded)
- Players.PlayerRemoving:Connect(onPlayerRemoving)
Add Comment
Please, Sign In to add comment