TheVadiaCool Posted June 11, 2020 Share Posted June 11, 2020 Написал скрипт для дверей автобуса: сделал функцию открытия и закрытия дверей с соответствующим звуком. Открытие/закрытие происходит на серверной части, а звук на локальной, т.к. на серверной, как я понимаю, нет функции 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
K1parik Posted June 11, 2020 Share Posted June 11, 2020 отправляй триггер не всем, а тем кто рядом с игроком Link to comment
TheVadiaCool Posted June 12, 2020 Author Share Posted June 12, 2020 16 hours ago, K1parik said: отправляй триггер не всем, а тем кто рядом с игроком Даже если буду делать так, то триггер будет отправляться на координаты игрока, то есть будет 2 звука Link to comment
K1parik Posted June 14, 2020 Share Posted June 14, 2020 On 12/06/2020 at 08:40, TheVadiaCool said: Даже если буду делать так, то триггер будет отправляться на координаты игрока, то есть будет 2 звука почему 2? двери открываются/закрываются - находятся игроки которые в радиусе 50 метров (например) от этих дверей и получают триггер с координатами звука Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now