TheVadiaCool

Members
  • Content Count

    6
  • Joined

  • Last visited

Community Reputation

0 Neutral

About TheVadiaCool

  • Rank
    Vic
  1. Даже если буду делать так, то триггер будет отправляться на координаты игрока, то есть будет 2 звука
  2. Всё, спасибо Вам огромное, вопросов уж нет по данной теме. Но при написании другого скрипта, у меня возникли определённые проблемы. Не могли бы помочь? https://forum.mtasa.com/topic/125436-помогите-пожалуйста/?tab=comments#comment-981807
  3. Написал скрипт для дверей автобуса: сделал функцию открытия и закрытия дверей с соответствующим звуком. Открытие/закрытие происходит на серверной части, а звук на локальной, т.к. на серверной, как я понимаю, нет функции 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)
  4. Большое спасибо за ответ! Понял свою ошибку, но до сих пор не могу понять, на что влияют аргументы.
  5. Напиши мне в ВК, помогу: vk.com/thevadiacool
  6. В общем, написал скрипт на работу грузчика, основная часть написана на клиенте. Суть такая: спавнится точка, игрок встает на неё, берёт "груз", затем несёт его в здание. Суть проблемы: спавнится метка у двоих игроков в одном месте (от лица одного игрока она в одном месте и от лица того же в том же), и если её заберёт один игрок, то она пропадёт и у второго игрока и у обоих сработает хитКлиентМаркер. Кто знает, что нужно сделать, чтобы исправить это? Может быть как-то присвоить каждому игроку свой маркер или что? Пожалуйста, помогите. Скрипт и демонстрационное видео оставлю ниже. Сервер: pickup = createPickup(131.72089, -155.40170, 141.00000, 3, 1275, 0) jobBlip = createBlip(131.72089, -155.40170, 141.00000, 11, 0, 0, 0, 255) function jobCheck(source) if not getElementData(source, "job") then setElementData(source, "job", true) outputChatBox("#00FF00Вы устроились на работу грузчика.", source, 255, 255, 255, true) playerSkin = getPlayerSkin(source) setElementData(source, "skin", playerSkin) setPlayerSkin(source, 27) setTimer(function() triggerClientEvent(source, "createPickStart", source) end, 100, 1) else setElementData(source, "job", nil) outputChatBox("#00FF00Вы закончили работу грузчика.", source, 255, 255, 255, true) setPlayerSkin(source, getElementData(source, "skin")) triggerClientEvent(source, "endJ", source) end end addEventHandler("onPickupHit", pickup, jobCheck) Клиент: pickMarkers = { {141.09631, -162.59451, 141.00000}, {141.55725, -156.79323, 141.00000}, {143.05446, -150.61909, 141.00000} } putMarkers = { {145.51653, -168.54268, 142.50313}, {145.38332, -179.90881, 142.49567}, {136.64456, -175.62262, 142.50313}, {145.56894, -207.79187, 142.50313}, {136.34845, -199.31641, 142.50082}, {136.86980, -184.26260, 142.50313}, {136.42323, -167.00807, 142.50313} } zpMin = 50 zpMax = 150 function createPickMarker(source, hitPlayer, matchingDimension) local x,y,z = pickMarkers[math.random(1, #pickMarkers)][1],pickMarkers[math.random(1, #pickMarkers)][2],pickMarkers[math.random(1, #pickMarkers)][3]-1 pickMarker = createMarker(x,y,z, "cylinder", 1.5, 0, 150, 150, 155) plr = getLocalPlayer() outputChatBox("#00FF00Возьмите стройматериалы со склада.", 255, 255, 255, true) if not getElementData(source, "zp") then else local money = math.random(zpMin,zpMax) givePlayerMoney(money) outputChatBox("#00FF00Заработано: ".. money .."", 255, 255, 255, true) end if isElement(putMarker) then destroyElement(putMarker) end addEventHandler("onClientMarkerHit", pickMarker, createPutMarker) end function createPutMarker(source, hitPlayer, matchingDimension) local x,y,z = putMarkers[math.random(1, #putMarkers)][1],putMarkers[math.random(1, #putMarkers)][2],putMarkers[math.random(1, #putMarkers)][3]-1 putMarker = createMarker(x,y,z, "cylinder", 1.5, 0, 150, 150, 155) outputChatBox("#00FF00Отнесите стройматериалы в здание.", 255, 255, 255, true) if isElement(pickMarker) then destroyElement(pickMarker) end setElementData(source, "zp", true) addEventHandler("onClientMarkerHit", putMarker, createPickMarker) end addEvent("createPickStart", true) addEventHandler("createPickStart", root, createPickMarker) function endJob(source) if isElement(pickMarker) then destroyElement(pickMarker) end if isElement(putMarker) then destroyElement(putMarker) end end addEvent("endJ", true) addEventHandler("endJ", root, endJob) Мета: <meta> <info author="TheVadiaCool" type="script" name="Job" description="Gruzchik" /> <script src="server.Lua" type="server" /> <script src="client.Lua" type="client" /> </meta>