GibraltarLabrador Posted December 16, 2013 Share Posted December 16, 2013 Помогите с проблемой, уже весь лоб расшиб. И триггером пробовал, и как угодно - ни-че-го. Сервер: local cab = createObject(xxx,0,0,0) local auto = createVehicle(569,-1942.51733,167.78510,25.71094) attachElements(cab,auto,0,0,0) setVehicleLocked(auto,true) setTrainDerailable(auto, false) setTrainDirection(auto, true) createBlipAttachedTo(auto,0) function Gtrain () SPEEDER = setTimer(SPEED,50,0) end --addEventHandler("onResourceStart", root, Gtrain) function SPEED () setTrainSpeed(auto, 0.25) end Клиент: marker = createMarker( 1548, -1670, 12.6, "cylinder", 2, 255, 255, 255, 150 ) local screenW, screenH = guiGetScreenSize() window = guiCreateWindow((screenW - 447) / 2, (screenH - 412) / 2, 447, 412, "Info", false) guiSetVisible(window, false) guiWindowSetSizable(window, false) memo = guiCreateMemo(23, 32, 399, 292, "(text)", false, window) guiMemoSetReadOnly(memo, true) button = guiCreateButton(23, 334, 400, 64, "Close", false, window) function close() if (source == button) then guiSetVisible(window,false) showCursor(false) end end addEventHandler("onClientGUIClick", button, close) function showgui (hitElement) if getElementType(hitElement) == "player" and (hitElement == localPlayer) then if not guiGetVisible(window) then guiSetVisible(window, true) showCursor(true) end end end addEventHandler("onClientMarkerHit", marker, showgui) function showguil (leaveElement) if getElementType(leaveElement) == "player" and (leaveElement == localPlayer) then if guiGetVisible(window) then guiSetVisible(window, false) showCursor(false) end end end addEventHandler("onClientMarkerLeave", marker, showguil) В серверной части локальная переменная "cab" создает объект (модель объекта - ххх. Не обращайте внимания, это для упрощения). Далее этот объект "аттачится" к грузовому вагону. С этим все в порядке. В клиентской части создается маркер, наступая в который вылазит окно. С этим тоже все в порядке. Суть в том, что мне нужно, чтобы маркер, который создается в клиентской части тоже как-нибудь "аттачился" к поезду. Я уже что только не перепробовал, не знаю, что делать. Ответьте пожалуйста! Более короткая и понятная формулировка: Мне нужно создать транспорт и маркер в серверной части, прицепить маркер к созданному транспорту и сделать вывод окна на экран игроку, наступившему в маркер (это важно!) Что именно у меня не получается: Да, у меня получается создать в серверной части маркер и транспорт. Да, у меня получается прицепить маркер к созданному транспорту, но совершенно не получается сделать вывод окна только наступившему в маркер игроку, потому что getLocalPlayer работает только в клиентской части и окно выводится всем. Пожалуйста, пожалуйста, помогите! Link to comment
AMARANT Posted January 4, 2014 Share Posted January 4, 2014 Событие onMarkerHit на сервере, которое аналогичное клиентскому, имеет аргумент 'hitElement'. Т.е. легко отлавливается любой входящий элемент, игрок или транспорт например. Проверяешь как и на клиенте тип элемента и выполняешь нужные действия. Что касается твоей главной проблемы, а именно вывода окна только наступившему в маркер игроку. Здесь тебе понадобится эта функция: triggerClientEvent Если ты не в курсе, то эта функция вызывает на стороне клиента нужную тебе функцию, как например взаимодействие с GUI, которое как ты знаешь возможно только на клиенте. Поэтому пользуешься этой волшебной функцией для открытия твоего окна и будет тебе счастье. Link to comment
KruTolic_rus Posted January 4, 2014 Share Posted January 4, 2014 Была такая проблема.Но можно использовать выше названный триггер.На сервере создаешь маркеры.На них евент входа,а внутри функции пишешь триггер.hitPlayer указываешь в функции( function NAME (hitPlayer)) и выводишь что вызов для hitPlayer.А в клиенте принимаешь триггер.Вроде бы все... В мта часто требуется подумать и решить сложнейшим путем,чем пытаться делать "легко",это редко получается Обьясню все,что писал выше на примере: использовал мой опыт,когда делал свой carshop CarShop1 = createMarker(-2475.15942, 2303.83252, 3.98438, "cylinder", 2, 255, 0, 0) function TriggerClientMenu (thePlayer) triggerClientEvent ( thePlayer, "onMenuShow", thePlayer, thePlayer ) end addEventHandler( "onMarkerHit", CarShop1, TriggerClientMenu ) Link to comment
GibraltarLabrador Posted January 5, 2014 Author Share Posted January 5, 2014 Парни, всем спасибо за помощь, но эта помощь очень долго шла (~14 дней). И мне давно помогли в англоязычной ветке. 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