Maikele Posted June 21, 2017 Share Posted June 21, 2017 (edited) Добрый вечер! В МТА около месяца, ранее работал с павно, луа для меня новый язык, хочу обратиться за помощью. Ниже код, он реализован: Если игрок выйдет из транспорта, то у него есть 15 секунд чтобы вернуться иначе автомобиль исчезнет. Проблема в том, что автомобиль исчезает, даже когда игрок вернулся обратно. Помогите, может какие функции добавить, для этого..буду признателен. p.s. Извините за плохой русский. function taxiExitVeh( thePlayer ) if ( getElementModel ( source ) == 420 ) then outputChatBox("Вернитесь в автомобиль.", thePlayer, 255, 255, 255, true) setTimer ( destroyElement, 15000, 1, source, taxiVehs) end end addEventHandler ( "onVehicleExit", getRootElement(), taxiExitVeh ) Edited June 21, 2017 by Name Link to comment
K1parik Posted June 21, 2017 Share Posted June 21, 2017 как то так local timer = {} function taxiExitVeh ( thePlayer ) if ( getElementModel ( source ) == 420 ) then outputChatBox ( "Вернитесь в автомобиль.", thePlayer, 255, 255, 255, true ) timer[thePlayer] = setTimer ( destroyElement, 15000, 1, source, taxiVehs ) end end addEventHandler ( "onVehicleExit", getRootElement(), taxiExitVeh ) function taxiEnterVeh ( thePlayer ) if ( getElementModel ( source ) == 420 ) then if isTimer ( timer[thePlayer] ) then killTimer ( timer[thePlayer] ) timer[thePlayer] = nil end end end addEventHandler ( "onVehicleEnter", getRootElement(), taxiEnterVeh ) Link to comment
JeViCo Posted February 2, 2018 Share Posted February 2, 2018 timer[thePlayer] = nil не обязательно. Он уже исчезнет по killTimer Link to comment
K1parik Posted February 2, 2018 Share Posted February 2, 2018 2 hours ago, JeViCo said: timer[thePlayer] = nil не обязательно. Он уже исчезнет по killTimer а в таблице timer = {} записи тоже не останется? Link to comment
JeViCo Posted February 2, 2018 Share Posted February 2, 2018 2 hours ago, K1parik said: а в таблице timer = {} записи тоже не останется? local timer = {} --задал, что таймер в виде пустой таблицы Насколько я понял, в 1 строке был указан тип переменной и значение (пусто, значит nil). По сути ты убираешь таймер, его значение равно 0 и ему опять присваивается 0. 0 = 0 killTimer ( timer[thePlayer] ) -- убирается сам таймер (#1) timer[thePlayer] = nil -- значению времени таймера присваивается 0, то есть nil(#2) Link to comment
Fabervox Posted February 25, 2018 Share Posted February 25, 2018 15c это не так много, можно сделать просто вот так setTimer ( function (veh, driver) if getVehicleController(veh) == driver then destroyElement(veh) end end, 15000, 1, source, thePlayer) @K1parik, если ты подозреваешь что память не очищается, тогда не хватит ещё раз присваивать nil, может даже хуже так, тогда нужно пробовать сборщик мусора вручную теребенить. Link to comment
K1parik Posted February 25, 2018 Share Posted February 25, 2018 5 hours ago, Fabervox said: 15c это не так много, можно сделать просто вот так setTimer ( function (veh, driver) if getVehicleController(veh) == driver then destroyElement(veh) end end, 15000, 1, source, thePlayer) @K1parik, если ты подозреваешь что память не очищается, тогда не хватит ещё раз присваивать nil, может даже хуже так, тогда нужно пробовать сборщик мусора вручную теребенить. а можно по русски для тупеньких объяснить? Link to comment
Fabervox Posted February 26, 2018 Share Posted February 26, 2018 (edited) @K1parik , collectgarbage() Edited February 26, 2018 by Fabervox 1 Link to comment
K1parik Posted February 26, 2018 Share Posted February 26, 2018 6 hours ago, Fabervox said: @K1parik , collectgarbage() судя по описанию по умолчанию он сам срабатывает иногда и его в принципе не обязательно вызывать? Link to comment
Other Languages Moderators Disinterpreter Posted February 27, 2018 Other Languages Moderators Share Posted February 27, 2018 14 hours ago, K1parik said: судя по описанию по умолчанию он сам срабатывает иногда и его в принципе не обязательно вызывать? Верно, но бывает не срабатывает, или бывает наоборот надо отключить срабатывание. 1 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