rafull6 Posted February 17, 2012 Share Posted February 17, 2012 (edited) Ребята, подскажите как поставить лимит на спавн автомобилей, пожалуйста! Сделал небольшой скрипт. Идея его заключается в том, что игрок заходит на маркер, отрывается окно с кнопкой, при нажатии на которую на определенных координатах появляется автомобиль. Как поставить лимит на спавн автомобиля, что бы при повторном нажатии на кнопку заспавненый ранее автомобиль удалялся и появлялся новый ( как в ресурсе freeroam.) Подскажите пожалуйста. Вот код моего скрипта: сервер: function destroyVehicle(vehicle) local check=false for i,player in ipairs(getElementsByType("player")) do if getPlayerOccupiedVehicle(player)==vehicle then check=true end end if check==false then destroyElement(vehicle) end end function exitVehicle(vehicle) setTimer(destroyVehicle,300000,1,vehicle) end addEventHandler("onPlayerVehicleExit",getRootElement(),exitVehicle) function vehexplode () destroyElement(source) end addEventHandler("onVehicleExplode",root, vehexplode) function taxiSp ( ) createVehicle ( 420, 1629.91, -1107.53, 27, 0, 0, 90 ) end addEvent( "taxiSpawn", true ) клиент: taxismark=createMarker(1629.62,-1117.05,23,"cylinder",3,230,250,0,50) addEventHandler( "onClientMarkerHit",taxismark, function( hitElement, matchingDimension ) qsWindow = guiCreateWindow( 0.3584,0.2568,0.2500,0.256," ",true ) -- guiCreateStaticImage( 0.05, 0.12, 1.4, 0.6, "/img/taxicon.png",true,qsWindow) buttonYes = guiCreateButton( 0.05,0.45,0.9,0.3,"Спавн [Taxi]",true,qsWindow ) buttonNo = guiCreateButton( 0.05,0.79,0.9,0.15,"закрыть",true,qsWindow ) guiSetVisible( qsWindow,false ) if (hitElement == localPlayer) and (getElementModel ( localPlayer ) == 15) then showCursor( true ) guiSetVisible( qsWindow,not guiGetVisible( qsWindow ) ) addEventHandler ( "onClientGUIClick", buttonYes, function( ) showCursor( false ) guiSetVisible( qsWindow,false ) triggerServerEvent( "taxiSpawn", localPlayer ) --outputChatBox( "`Вы захватили банк вы должны продержаться 5 минут.",255,0,0 ) end ,false ) addEventHandler ( "onClientGUIClick", buttonNo, function ( ) showCursor( false ) guiSetVisible( qsWindow,false ) end ,false ) end end Edited February 18, 2012 by Guest Link to comment
el_motoblock Posted February 17, 2012 Share Posted February 17, 2012 надо перед появлением следующего автомобиля удалять предидущий Link to comment
Mc_Trekkie Posted February 17, 2012 Share Posted February 17, 2012 Умно. destroyElement Попробуй. Link to comment
rafull6 Posted February 17, 2012 Author Share Posted February 17, 2012 Умно. destroyElement Попробуй. Это понятно, но вопрос в том как определить тот автомобиль, который был создан игроком, для того что бы потом его удалить. Создавать зону какую то типа colshape или что? Link to comment
Mc_Trekkie Posted February 17, 2012 Share Posted February 17, 2012 А,да,кстати-ты делаешь это на серверной стороне... Можно и зоной,но по мне так-легче проверить создал ли ты уже машину или нет. Просто заключи твою машину в переменную и проверь,создал ли ты её уже или нет. Link to comment
rafull6 Posted February 17, 2012 Author Share Posted February 17, 2012 А,да,кстати-ты делаешь это на серверной стороне...Можно и зоной,но по мне так-легче проверить создал ли ты уже машину или нет. Просто заключи твою машину в переменную и проверь,создал ли ты её уже или нет. можешь простой примерчик показать как? а то я совсем не въеду с чего начать Link to comment
Mc_Trekkie Posted February 17, 2012 Share Posted February 17, 2012 Ну,к примеру вот: 1 = createVehicle (420, 0, 0, 3, 0, 0, 90) function JustExample (thePlayer) setElementData( thePlayer, 'example', true ) if getElementData( thePlayer, 'example' ) then return destoryElement(1) end Как то так-проверить не могу,МТА глючит,комп перезагружать лень. Сюда твой Event. Cтупил,ща код дам,минуту. Link to comment
rafull6 Posted February 17, 2012 Author Share Posted February 17, 2012 Ну,к примеру вот: 1 = createVehicle (420, 0, 0, 3, 0, 0, 90) function JustExample (thePlayer) setElementData( thePlayer, 'example', true ) if getElementData( thePlayer, 'example' ) then return destoryElement(1) end Как то так-проверить не могу,МТА глючит,комп перезагружать лень. Сюда твой Event. Cтупил,ща код дам,минуту. сейчас попробую) Link to comment
rafull6 Posted February 17, 2012 Author Share Posted February 17, 2012 А как сделать что бы setElementData записывало момент создания автомобиля, что то не пойму? Link to comment
Mc_Trekkie Posted February 17, 2012 Share Posted February 17, 2012 А как сделать что бы setElementData записывало момент создания автомобиля, что то не пойму? Чо то не получается... Да вот так: function lol ( ) lol = createVehicle (420, 0, 0, 3 ) setElementData( thePlayer, 'example', true ) if getElementData( thePlayer, 'example' ) then return outputChatBox( 'Машина уже стоит на координатах.', thePlayer ); end end addEventHandler("onResourceStart",getRootElement(), lol) Ладно,блин,щас не пойму ничего. Вроде как то так- Дакилла кстати писал же пример: Либо setElementData( thePlayer, 'house', true ) а проверять, создал ли через if getElementData( thePlayer, 'house' ) then return outputChatBox( 'вы уже создали дом', thePlayer ); end Link to comment
rafull6 Posted February 17, 2012 Author Share Posted February 17, 2012 Вот переделал твой код под триггер. function lol ( ) lol = createVehicle ( 420, 1629.91, -1107.53, 27, 0, 0, 90 ) setElementData( thePlayer, 'example', true ) if getElementData( thePlayer, 'example' ) then return outputChatBox( 'Машина уже стоит на координатах.', thePlayer ); end end addEvent( "taxiSpawn", true ) addEventHandler( "taxiSpawn", root, lol ) Дебагскрипт орет: [2012-02-17 20:21:45] WARNING: profcs\rtr.lua:3: Bad argument @ 'setElementData' [Expected element at argument 1, got nil] [2012-02-17 20:21:45] WARNING: profcs\rtr.lua:4: Bad argument @ 'getElementData' [Expected element at argument 1, got nil] [2012-02-17 20:21:51] WARNING: profcs\rtr.lua:3: Bad argument @ 'setElementData' [Expected element at argument 1, got nil] [2012-02-17 20:21:51] WARNING: profcs\rtr.lua:4: Bad argument @ 'getElementData' [Expected element at argument 1, got nil] Link to comment
Mc_Trekkie Posted February 17, 2012 Share Posted February 17, 2012 В Аргументы функции добавь (thePlayer) Link to comment
rafull6 Posted February 17, 2012 Author Share Posted February 17, 2012 function lol ( thePlayer ) так? Ничего не поменялось... Link to comment
MX_Master Posted February 18, 2012 Share Posted February 18, 2012 thePlayer не нужен в аргументах, убрать! Вместо thePlayer в функции юзай source, потому что ты в тригере укзал source элемент как localPlayer function lol ( ) lol = createVehicle ( 420, 1629.91, -1107.53, 27, 0, 0, 90 ) setElementData( source, 'example', true ) if getElementData( source, 'example' ) then return outputChatBox( 'Машина уже стоит на координатах.', source ); end end addEvent( "taxiSpawn", true ) addEventHandler( "taxiSpawn", root, lol ) Link to comment
Mc_Trekkie Posted February 18, 2012 Share Posted February 18, 2012 MX_Master,спасибо,Я думаю он что-нибудь понял,а Я -ступил.) Link to comment
StUNt71 Posted February 18, 2012 Share Posted February 18, 2012 Чтобы удалить предыдущую машину, в elementData надо сохранять элемент машины, проверять на её наличие и удалять. vehicle = getElementData(source, "myVehicle") if vehicle then destroyElement(vehicle) end local vehicle = createVehicle(...) setElementData(source, "myVehicle", vehicle) Link to comment
rafull6 Posted February 18, 2012 Author Share Posted February 18, 2012 MX_Master, спасибо за помощь, теперь ожил чат в который отправляется сообщение о том что 'Машина уже стоит на координатах.', но машины по прежнему спавнятся без лимита. Наверно getElementData и setElementData просто не срабатывают в этом скрипте (непонятно почему) дебаг молчит. Link to comment
LoveFist Posted February 18, 2012 Share Posted February 18, 2012 function lol ( ) if getElementData( source, 'example' ) then return outputChatBox( 'Машина уже стоит на координатах.', source ); end lol = createVehicle ( 420, 1629.91, -1107.53, 27, 0, 0, 90 ) setElementData( source, 'example', true ) end addEvent( "taxiSpawn", true ) addEventHandler( "taxiSpawn", root, lol ) Link to comment
rafull6 Posted February 18, 2012 Author Share Posted February 18, 2012 Чтобы удалить предыдущую машину, в elementData надо сохранять элемент машины, проверять на её наличие и удалять. vehicle = getElementData(source, "myVehicle") if vehicle then destroyElement(vehicle) end local vehicle = createVehicle(...) setElementData(source, "myVehicle", vehicle) Спасибо за помощь) ваш совет помог) 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