Erema93 Posted July 3, 2018 Share Posted July 3, 2018 Есть скрипт работы, но он удаляет только один вагон, а нужно сделать, чтобы он удалял весь состав поезда local m1 = createMarker( 1743.3565673828,-1863.4692382813,13.575035095215 - 1.1, "cylinder", 1.5, 255, 0, 0, 170 ) vehs = {} --createBlip ( 1720.6999511719, -1941.1999511719, 12.60000038147, 16) function removePreviousVehicles(plr) for i,v in ipairs(getElementsByType("vehicle", resourceRoot)) do local sby = getElementData(v, "zrespilGracz") if sby and sby == plr and getPedOccupiedVehicle(plr) ~= v then destroyElement(v) end end end addEvent("givePlayerMoney", true) addEventHandler("givePlayerMoney", resourceRoot, function(ile) givePlayerMoney (client, ile) end) addEventHandler("onMarkerHit", m1, function(el, md) if getElementData(el, "zrespilGracz") then --outputChatBox("NSR-Pociągi w fazie Betav1.0", el) return end if not md or getElementType(el) ~= "player" or getPedOccupiedVehicle(el) then return end local level = getElementData ( el, "player:level" )+1 or 0 if level >= 10 then local x,y,z = getElementPosition(el) local bus = createVehicle(538, 2811.3950195313, 1612.5759277344, 10.8203125, 180, 0.0, 0.4) trailer1 = createVehicle ( 449, x, y, z ) -- create the first trailer attachTrailerToVehicle ( bus, trailer1 ) -- attach them setElementData(bus, "zrespilGracz", el) setElementData(bus, "pojazd_paliwo", 50) setElementData(bus, "pojazd_przebieg", 100) setVehicleHandling(bus, "maxVelocity", 0.1) setVehicleHandling(bus, "engineAcceleration", 2 ) setVehicleHandling(bus, "ABS", true ) warpPedIntoVehicle(el, bus) removePreviousVehicles(el) triggerClientEvent(el, "StartPociag", resourceRoot, bus) vehs[el] = bus else outputChatBox ("Требуется уровень 10 или выше. У вас "..level.." увроень", el) end end) addEvent("STOPP", true) addEventHandler("STOPP", resourceRoot, function() local pojazd = getPedOccupiedVehicle(localPlayer) if pojazd then destroyElement(bus) destroyElement(trailer1) end end) addEvent("destroyVeh", true) addEventHandler("destroyVeh", getRootElement(), function() if vehs[source] then if isElement(vehs[source]) then destroyElement(vehs[source]) end end end) Из всего кода я понял, за удаление вагона (часть поездного состава) отвечают коды vehs[el] = bus и addEvent("destroyVeh", true) addEventHandler("destroyVeh", getRootElement(), function() if vehs[source] then if isElement(vehs[source]) then destroyElement(vehs[source]) end end end) Помогите с кодом. Link to comment
nikitafloy Posted July 26, 2018 Share Posted July 26, 2018 (edited) Лень разбираться в коде. Смотри как создаются объекты и как удаляются. Названия дат элементов и триггеры на русский бы тоже перевести для большего понимания. Edited July 26, 2018 by nikitafloy 1 Link to comment
kashtesov Posted July 26, 2018 Share Posted July 26, 2018 local attachedTrailers = bus:getData("attachedTrailers") or {}; bus:attachTrailer(trailer1); table.insert(attachedTrailers, trailer1); bus:setData("attachedTrailers", attachedTrailers, {}, false); ... или сразу bus:attachTrailer(trailer1); bus:setData("attachedTrailers", attachedTrailers, {trailer1}, false); ... на удаление if vehs[source] and isElement(vehs[source]) then local attachedTrailers = bus:getData("attachedTrailers") or {}; for _, trailer in ipairs(attachedTrailers) do if (isElement(trailer)) then trailer:destroy(); end end vehs[source]:destroy(); end Ну как вариант, сварганить что-то подобное. 1 1 Link to comment
Scripting Moderators Sarrum Posted August 1, 2018 Scripting Moderators Share Posted August 1, 2018 Можно попробовать setElementParent. Поезд сделать родителем и при его удалении вместе с ним будут удаляться вагоны. setElementParent ( trailer1, bus ) Link to comment
Erema93 Posted August 5, 2018 Author Share Posted August 5, 2018 On 01.08.2018 at 20:38, Sarrum said: Можно попробовать setElementParent. Поезд сделать родителем и при его удалении вместе с ним будут удаляться вагоны. setElementParent ( trailer1, bus ) Интересно. Поможете с кодом правильно реализовать? Link to comment
JeViCo Posted August 14, 2018 Share Posted August 14, 2018 сразу после создания состава прописывай setElementData к каждому из заспавненных поездов, вагонов (обязательно со стороны клиента). Потом для удаления, циклом проходишь через все авто проверяя на наличие этой даты. Link to comment
Scripting Moderators Sarrum Posted August 18, 2018 Scripting Moderators Share Posted August 18, 2018 On 05.08.2018 at 18:20, Eema93 said: Интересно. Поможете с кодом правильно реализовать? В коде есть строка с attachTrailerToVehicle ( bus, trailer1 ) Ниже добавьте: setElementParent ( trailer1, bus ) 1 Link to comment
Erema93 Posted August 19, 2018 Author Share Posted August 19, 2018 15 hours ago, Sarrum said: В коде есть строка с attachTrailerToVehicle ( bus, trailer1 ) Ниже добавьте: setElementParent ( trailer1, bus ) Добавил. Не работает: спавнится только головной вагон(локомотив). Вот исходник из которого сделал скрипт с уровнями и вагоном: https://www.mta-resource.ru/load/resource/id/3759 Link to comment
Erema93 Posted August 28, 2018 Author Share Posted August 28, 2018 Вопрос решил сам: 1) удалив строку vehs[el] = bus 2) изменив в коде setElementData на setElementData(el,'bus',bus) setElementData(el,'trailer1',trailer1) 3) изменив событие destroyVeh в коде: destroyElement(getElementData(client,'bus')) destroyElement(getElementData(client,'trailer1')) 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