iron015 Posted June 7, 2014 Share Posted June 7, 2014 Добрый вечер! Хотел сделать скрипт, чтобы при нажатии на кнопку включалась/выключалась защита, не дающая пассажирам сидеть в вашей машине. Но скрипт не работает, помогите, пожалуйста. 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
Memory Posted June 8, 2014 Share Posted June 8, 2014 Что дебаг выдаёт? Поставь дебаг на 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
iron015 Posted June 8, 2014 Author Share Posted June 8, 2014 Спасибо, все работает. А как вместо onVehicleEnter сделать onResourceStart, а вместо onVehicleExit - onResourceStop? Link to comment
TheNormalnij Posted June 8, 2014 Share Posted June 8, 2014 У тебя утечка памяти в 11 строке. Тут можно было бы даже простую элементдату использовать. Событие попытки входа в авто можно отменять в onVehicleStartEnter, так целесообразнее. Использовать здесь onResourceStop? Скорее всего ты не понимаешь, что хочешь, переформулируй вопрос. Link to comment
iron015 Posted June 8, 2014 Author Share Posted June 8, 2014 ну чтобы при запуске ресурса биндилась кнопка. а то если сидя в машине создать новую, кнопка биндится повторно, и при нажатии в чате выходит 2 сообщения. я просто не знаю lua Link to comment
Memory Posted June 9, 2014 Share Posted June 9, 2014 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
iron015 Posted June 9, 2014 Author Share Posted June 9, 2014 Не работает. При нажатии кнопки показывает, что включен/выключен, но пассажиры могут сидеть. 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
Memory Posted June 10, 2014 Share Posted June 10, 2014 Что вы делаете? Вы куда таймер запихали? С последним кодом, что я вам дал, не надо ничего делать. А вот из предыдущего просто бинды уберите и всё. ИМХО: Если вы совсем не знаете Lua, то что вы делаете в категории "Скриптинг". Тут нужно задавать вопросы, если вы знакомы с Lua или изучаете его, и у вас возникают какие-либо вопросы. В вашем случае, вы просто нашли код и хотите, чтобы мы его доработали. Link to comment
iron015 Posted June 10, 2014 Author Share Posted June 10, 2014 Код я не нашел, просто есть опыт в pawno, вот и попробовал написать тут. Link to comment
iron015 Posted June 10, 2014 Author Share Posted June 10, 2014 Спасибо за помощь, все работает 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