Jump to content

Защита от пассажиров


Recommended Posts

Добрый вечер! Хотел сделать скрипт, чтобы при нажатии на кнопку включалась/выключалась защита, не дающая пассажирам сидеть в вашей машине. Но скрипт не работает, помогите, пожалуйста.

  
antipas = {} 
function switchAntiPas(thePlayer) 
  
    local veh = getPedOccupiedVehicle (thePlayer)  
    if veh then 
        if not antipas[veh] then 
            antipas[veh] = true 
            outputChatBox("#FFFF00Анти-Пассажир #00FF00Включен#FFFF00!",thePlayer,255,255,255,true) 
        else  
            antipas[veh] = false 
            outputChatBox("#FFFF00Анти-Пассажир #00FF00Выключен#FFFF00!",thePlayer,255,255,255,true) 
        end 
    end 
end 
  
  
  
  
function testPas ( thePlayer ) 
    local Vehicle = getPedOccupiedVehicle ( thePlayer )   
    local controller = getVehicleController ( Vehicle )                             
    if Vehicle and controller then 
        for id, player in ipairs(getElementsByType("player")) do 
            local Vehicle2 = getPedOccupiedVehicle ( player )  
            local controller2 = getVehicleController ( Vehicle2 )                             
            if Vehicle2 and  not controller2 then 
                if Vehicle == Vehicle2 then 
                    if antipas[Vehicle] then 
                        removePedFromVehicle ( player ) 
                        outputChatBox("#FF0000Этот игрок запрещает садится кому-либо пассажиром в свою машину!",player,255,255,255,true) 
                    end 
                end 
            end 
        end 
    end 
end 
  
addEventHandler ( "onVehicleEnter", getRootElement(), 
    function(thePlayer) 
    bindKey(thePlayer, "u", "down", switchAntiPas) 
        setTimer ( testPas, 1000, 1, thePlayer ) 
end) 
  
addEventHandler ( "onVehicleExit", getRootElement(), 
    function(thePlayer) 
    unbindKey(thePlayer, "u", "down", switchAntiPas) 
end) 
  

Link to comment

Что дебаг выдаёт? Поставь дебаг на 3, может какой аргумент неправильно получается. Попробуй так:

antipas = {} 
function switchAntiPas(thePlayer) 
    local veh = getPedOccupiedVehicle ( thePlayer )  
    local controller = getVehicleController ( veh ) 
    if veh and (thePlayer == controller) then 
        if not antipas[veh] then 
            antipas[veh] = true 
            outputChatBox("#FFFF00Анти-Пассажир #00FF00Включен#FFFF00!",thePlayer,255,255,255,true) 
        else  
            antipas[veh] = false 
            outputChatBox("#FFFF00Анти-Пассажир #00FF00Выключен#FFFF00!",thePlayer,255,255,255,true) 
        end 
    end 
end 
  
function testPas ( thePlayer ) 
    local Vehicle = getPedOccupiedVehicle ( thePlayer )   
    local controller = getVehicleController ( Vehicle )                             
    if Vehicle and antipas[Vehicle] and (thePlayer ~= controller) then 
         removePedFromVehicle ( thePlayer ) 
         outputChatBox("#FF0000Этот игрок запрещает садится каким-либо пассажирам в свою машину!", thePlayer,255,255,255,true) 
    end 
end 
  
addEventHandler ( "onVehicleEnter", getRootElement(), 
    function(thePlayer) 
    bindKey(thePlayer, "u", "down", switchAntiPas) 
    setTimer ( testPas, 1000, 1, thePlayer ) 
end) 
  
addEventHandler ( "onVehicleExit", getRootElement(), 
    function(thePlayer) 
    unbindKey(thePlayer, "u", "down", switchAntiPas) 
end) 

Link to comment

У тебя утечка памяти в 11 строке. Тут можно было бы даже простую элементдату использовать. Событие попытки входа в авто можно отменять в onVehicleStartEnter, так целесообразнее.

Использовать здесь onResourceStop? Скорее всего ты не понимаешь, что хочешь, переформулируй вопрос.

Link to comment

ну чтобы при запуске ресурса биндилась кнопка. а то если сидя в машине создать новую, кнопка биндится повторно, и при нажатии в чате выходит 2 сообщения. я просто не знаю lua

Link to comment
function ResourceStart ( name, root ) 
    for k,v in ipairs ( getElementsByType ( "player" ) ) do 
       bindKey( v, "u", "down", switchAntiPas ) 
    end 
end 
addEventHandler ( "onResourceStart", getResourceRootElement(), ResourceStart ) 
  
function PlayerJoin () 
       bindKey( source, "u", "down", switchAntiPas ) 
end 
addEventHandler ( "onPlayerJoin", root, PlayerJoin ) 

Link to comment

Не работает. При нажатии кнопки показывает, что включен/выключен, но пассажиры могут сидеть.

  
antipas = {} 
function switchAntiPas(thePlayer) 
    local veh = getPedOccupiedVehicle ( thePlayer ) 
    local controller = getVehicleController ( veh ) 
    if veh and (thePlayer == controller) then 
        if not antipas[veh] then 
            antipas[veh] = true 
            outputChatBox("#FFFF00Анти-Пассажир #00FF00Включен#FFFF00!",thePlayer,255,255,255,true) 
        else 
            antipas[veh] = false 
            outputChatBox("#FFFF00Анти-Пассажир #00FF00Выключен#FFFF00!",thePlayer,255,255,255,true) 
        end 
    end 
end 
  
function testPas ( ) 
    local Vehicle = getPedOccupiedVehicle ( v )   
    local controller = getVehicleController ( Vehicle )                             
    if Vehicle and antipas[Vehicle] and (v ~= controller) then 
         removePedFromVehicle ( v ) 
         outputChatBox("#FF0000Этот игрок запрещает садится каким-либо пассажирам в свою машину!", v,255,255,255,true) 
    end 
end 
  
function ResourceStart ( name, root ) 
    for k,v in ipairs ( getElementsByType ( "player" ) ) do 
       bindKey( v, "u", "down", switchAntiPas ) 
       setTimer ( testPas, 1000, 1) 
    end 
end 
addEventHandler ( "onResourceStart", getResourceRootElement(), ResourceStart ) 
  
  

Извините, что так много вопросов, я совсем не знаю lua

Link to comment

Что вы делаете? Вы куда таймер запихали? С последним кодом, что я вам дал, не надо ничего делать. А вот из предыдущего просто бинды уберите и всё.

ИМХО: Если вы совсем не знаете Lua, то что вы делаете в категории "Скриптинг". Тут нужно задавать вопросы, если вы знакомы с Lua или изучаете его, и у вас возникают какие-либо вопросы. В вашем случае, вы просто нашли код и хотите, чтобы мы его доработали.

Link to comment

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