Jump to content

Удаление всего состава поезда после окончания работы


Recommended Posts

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


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
  • 4 weeks later...

Лень разбираться в коде.
Смотри как создаются объекты и как удаляются.
Названия дат элементов и триггеры на русский бы тоже перевести для большего понимания.

Edited by nikitafloy
  • Confused 1
Link to comment
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

 

Ну как вариант, сварганить что-то подобное.

  • Like 1
  • Confused 1
Link to comment
  • Scripting Moderators

Можно попробовать setElementParent. Поезд сделать родителем и при его удалении вместе с ним будут удаляться вагоны.

setElementParent ( trailer1, bus )

 

Link to comment
On 01.08.2018 at 20:38, Sarrum said:

Можно попробовать setElementParent. Поезд сделать родителем и при его удалении вместе с ним будут удаляться вагоны.


setElementParent ( trailer1, bus )

 

Интересно. Поможете с кодом правильно реализовать?

Link to comment
  • 2 weeks later...

сразу после создания состава прописывай setElementData к каждому из заспавненных поездов, вагонов (обязательно со стороны клиента). Потом для удаления, циклом проходишь через все авто проверяя на наличие этой даты.

Link to comment
  • Scripting Moderators
On 05.08.2018 at 18:20, Eema93 said:

Интересно. Поможете с кодом правильно реализовать?

В коде есть строка с 

attachTrailerToVehicle ( bus, trailer1 )

Ниже добавьте:

setElementParent ( trailer1, bus )

 

  • Like 1
Link to comment
15 hours ago, Sarrum said:

В коде есть строка с 


attachTrailerToVehicle ( bus, trailer1 )

Ниже добавьте:


setElementParent ( trailer1, bus )

 

Добавил. Не работает:  спавнится только головной вагон(локомотив).

 

Вот исходник из которого сделал скрипт с уровнями и вагоном: https://www.mta-resource.ru/load/resource/id/3759

Link to comment
  • 2 weeks later...

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...