Jump to content

[Решено]ребят как осуществить задуманное?!


Ruga

Recommended Posts

Есть вот скрипт который вызывает вертолет с магнитом)), как сделать что бы магнит был на всей модели данного тс, как бы выделить функционал кода только магнита и привязать на модель тс! Или же привязать на createVehicle (417,0,0,0,0,0,0) = что бы у этого созданного тс был магнит постоянный

server

function magnet_func ( player ) 
  
    local x, y, z = getElementPosition ( player ) 
    local veh = createVehicle ( 417, x, y, z ) 
    setVehicleAsMagnetHelicopter (  veh ) 
end 
addCommandHandler ( "magnet", magnet_func ) 
  
function setVehicleAsMagnetHelicopter ( veh ) 
  
    if getElementModel ( veh ) == 417 then 
        local x, y, z = getElementPosition ( veh ) 
        local magnet = createObject ( 1301, x, y, z-1.5) 
        attachElements ( magnet, veh, 0, 0, -1.5 ) 
        setElementData ( veh, "magpos", -1.5 ) 
        setElementData ( veh, "magnet", magnet ) 
        setElementData ( veh, "magnetic", true ) 
        setElementData ( veh, "hasmagnetactivated", false ) 
    end 
end 
  
function magnetUp ( player ) 
  
    local veh = getPedOccupiedVehicle ( player ) 
    if veh then 
        local magpos = getElementData ( veh, "magpos" ) 
        if magpos < -1.5 then 
            local magnet = getElementData ( veh, "magnet" ) 
            detachElements ( magnet ) 
            local magpos = magpos+0.1 
            attachElements ( magnet, veh, 0, 0, magpos, 0, 0, 0 ) 
            setElementData ( veh, "magpos", magpos ) 
        end 
    end 
end 
function magnetDown ( player ) 
  
    local veh = getPedOccupiedVehicle ( player ) 
    if veh then 
        local magpos = getElementData ( veh, "magpos" ) 
        if magpos > -15 then 
            local magnet = getElementData ( veh, "magnet" ) 
            detachElements ( magnet ) 
            local magpos = magpos-0.1 
            attachElements ( magnet, veh, 0, 0, magpos, 0, 0, 0 ) 
            setElementData ( veh, "magpos", magpos ) 
        end 
    end 
end 
  
function bindTrigger () 
  
    if not isKeyBound ( source, "lctrl", "down", magnetVehicleCheck ) then 
        bindKey ( source, "lctrl", "down", magnetVehicleCheck ) 
        bindKey ( source, "rctrl", "down", magnetVehicleCheck ) 
        bindKey ( source, "num_sub", "down", magnetUp ) 
        bindKey ( source, "num_add", "down", magnetDown ) 
    end 
end 
function unbindTrigger () 
  
    if isKeyBound ( source, "lctrl", "down", magnetVehicleCheck ) then 
        unbindKey ( source, "lctrl", "down", magnetVehicleCheck ) 
        unbindKey ( source, "rctrl", "down", magnetVehicleCheck ) 
        unbindKey ( source, "num_sub", "down", magnetUp ) 
        unbindKey ( source, "num_add", "down", magnetDown ) 
    end 
end 
addEventHandler ( "onPlayerVehicleEnter", getRootElement(), bindTrigger ) 
addEventHandler ( "onPlayerVehicleExit", getRootElement(), unbindTrigger ) 
addEventHandler ( "onPlayerWasted", getRootElement(), unbindTrigger ) 
  
function magnetVehicleCheck ( player ) 
  
    local veh = getPedOccupiedVehicle ( player ) 
    if veh then 
        if getElementData ( veh, "magnetic" ) then 
            if getElementData ( veh, "hasmagnetactivated" ) then 
                setElementData ( veh, "hasmagnetactivated", false ) 
                detachElements ( getElementData ( veh, "magneticVeh" ) ) 
            else 
                local magnet = getElementData ( veh, "magnet" ) 
                local x, y, z = getElementPosition ( magnet ) 
                local magpos = getElementData ( veh, "magpos" ) 
                local marker = createColSphere ( x , y , z, 2 ) 
                local vehs = getElementsWithinColShape ( marker, "vehicle" ) 
                destroyElement ( marker ) 
                grabveh = false 
                for key, vehitem in ipairs(vehs) do 
                    if vehitem ~= veh then 
                        local grabveh = vehitem 
                        attachElements ( grabveh, magnet, 0, 0, -1, 0, 0, getVehicleRotation(grabveh) ) 
                        setElementData ( veh, "hasmagnetactivated", true ) 
                        setElementData ( veh, "magneticVeh", grabveh ) 
                        break 
                    end 
                end 
            end 
        end 
    end 
end 

сlient

function clientRenderMagnet () 
  
    local vehitem = getPedOccupiedVehicle ( getLocalPlayer() ) 
    if vehitem then 
        local mv = getElementData ( vehitem, "magnet" ) 
        if mv then 
            local x1, y1, z1 = getElementPosition ( mv ) 
            local x2, y2, z2 = getElementPosition ( vehitem ) 
            dxDrawLine3D ( x1, y1, z1, x2, y2, z2, tocolor ( 100, 100, 100, 255 ), 10 ) 
        end 
    end 
end 
addEventHandler ( "onClientRender", getRootElement(), clientRenderMagnet ) 

Edited by Guest
Link to comment
  • 2 months later...

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

то, при чем тут патч?, "насмешка тобишь" Вопрос темы конечно тупой, я не против, но ведь не все сразу умными становятся, я написал его и только сейчас решил все таки разобраться, самому стыдно за вопрос, но он есть, а допольнительный код что дописал не считаю нужным выкладывать, он хорошо работает)) не вижу повода для насмешек ребята, ну это как говориться, кто как разумеет)))

Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...