Jump to content

Помогите, пожалуйста


Recommended Posts

Написал скрипт для дверей автобуса: сделал функцию открытия и закрытия дверей с соответствующим звуком. Открытие/закрытие происходит на серверной части, а звук на локальной, т.к. на серверной, как я понимаю, нет функции playSound3D. Всё работало, слышал звуки других игроков, свои тоже, позиционирование есть, но одна заметил одну проблему. Когда один игрок, который сидит в автобусе, открывает двери, то звук воспроизводится и у второго водителя на любом расстоянии. Даже на другом конце карты. На видео, прикреплённом ниже, это отчётливо слышно и видно. Код также оставлю внизу. Помогите, кто сможет. Буду благодарен.

Мета:
<meta>
<info author="TheVadiaCool" type="script" name="BusDoors" description="Script for open doors" />
<script src="server.Lua" type="server" />
<script src="client.Lua" type="client" />
<file src="sounds/opendoors.wav" download="true" />
<file src="sounds/closedoors.wav" download="true" />
</meta>

Сервер:
function binds(source)
bindKey(source, "2", "down", doors)
end
addEventHandler("onPlayerJoin", getRootElement(), binds)


function doorsFunc(source)
	if isPedInVehicle(source) and getPedOccupiedVehicleSeat(source) == 0 then
		bus = getPedOccupiedVehicle(source)
		if getElementModel(bus) == 413 then
			if not getElementData(bus, "doorsOpen") then
				setElementData(bus, "doorsOpen", true)
				triggerClientEvent("openSound", getRootElement())
				setVehicleDoorOpenRatio(bus, 3, 1, 2000)
				setVehicleDoorOpenRatio(bus, 4, 1, 2000)
				setVehicleDoorOpenRatio(bus, 5, 1, 2000)
			else
				setElementData(bus, "doorsOpen", nil)
				triggerClientEvent("closeSound", getRootElement())
				setVehicleDoorOpenRatio(bus, 3, 0, 2000)
				setVehicleDoorOpenRatio(bus, 4, 0, 2000)
				setVehicleDoorOpenRatio(bus, 5, 0, 2000)
			end
		end
	end
end
addCommandHandler("doors", doorsFunc)

Клиент:
function playOpenDoors(source)
	plr = getLocalPlayer()
	local x,y,z = getElementPosition(plr)
	openDoorsSound = playSound3D("sounds/opendoors.wav", x,y,z)
	setSoundMaxDistance(openDoorsSound, 25)
	setElementDimension(openDoorsSound, 0)
end

function playCloseDoors(source)
	plr = getLocalPlayer()
	local x,y,z = getElementPosition(plr)
	closeDoorsSound = playSound3D("sounds/closedoors.wav", x,y,z)
	setSoundMaxDistance(closeDoorsSound, 25)
	setElementDimension(closeDoorsSound, 0)
end

addEvent("openSound", true)
addEventHandler("openSound", getRootElement(), playOpenDoors)

addEvent("closeSound", true)
addEventHandler("closeSound", getRootElement(), playCloseDoors)

 

Link to comment
16 hours ago, K1parik said:

отправляй триггер не всем, а тем кто рядом с игроком

Даже если буду делать так, то триггер будет отправляться на координаты игрока, то есть будет 2 звука

Link to comment
On 12/06/2020 at 08:40, TheVadiaCool said:

Даже если буду делать так, то триггер будет отправляться на координаты игрока, то есть будет 2 звука

почему 2? двери открываются/закрываются - находятся игроки которые в радиусе 50 метров (например) от этих дверей и получают триггер с координатами звука

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...