goofie88 Posted November 30, 2012 Posted November 30, 2012 hello i have a problem on restricting a vehicle on player level =( hydra = createVehicle ( 520, 1526.5999755859, 2877.1000976563, 13.89999961853, 0, 0, 90 ) function hydralock(player, seat, jacked) local level = tonumber ( getElementData ( player, "level" ) or 0 ) if (source == hydra) then if (seat == 0) then if (level <= 7) then cancelEvent() outputChatBox ( "To enter this hydra you need to be level 7 and higher", player, 255, 0, 0, true ) end end end end end addEventHandler ( "onVehicleStartEnter", getRootElement(), hydralock ) what did i do wrong? all level can enter it and no output =(
ali Posted November 30, 2012 Posted November 30, 2012 hydra = createVehicle ( 520, 1526.5999755859, 2877.1000976563, 13.89999961853, 0, 0, 90 ) function hydralock(player, seat, jacked) local level = tonumber ( getElementData ( player, "level" ) or 0 ) if (source == hydra) then if (seat == 0) then if (level <= 7) then cancelEvent() outputChatBox ( "To enter this hydra you need to be level 7 and higher", player, 255, 0, 0, true ) end end end end addEventHandler ( "onVehicleStartEnter", hydra, hydralock) 1)you forgot to mention which vehicle it should be the name of vehicle in-place of getRootElement() 2)an extra End LUA Scripter [Tut]How to add maps using in-game script editor [Tut]How to get a hosted MTA Sa Server for free
ali Posted November 30, 2012 Posted November 30, 2012 My Above script ( tested ) LUA Scripter [Tut]How to add maps using in-game script editor [Tut]How to get a hosted MTA Sa Server for free
goofie88 Posted November 30, 2012 Author Posted November 30, 2012 ye thank you worked but how should I do if I want 2 hydras? exemple hydra1 and hydra2?
AhmadQTR Posted November 30, 2012 Posted November 30, 2012 ye thank you worked but how should I do if I want 2 hydras? exemple hydra1 and hydra2? Just make a table. Nobody is perfect , I'm nobody. Skype : ahmad.nasser37
AhmadQTR Posted November 30, 2012 Posted November 30, 2012 I think like this Hydra = { createVehicle ( 520, 1526.5999755859, 2877.1000976563, 13.89999961853, 0, 0, 90 ) createVehicle ( 520, x, y, z, 0, 0, 90 ) } function hydralock(player, seat, jacked) local level = tonumber ( getElementData ( player, "level" ) or 0 ) if (source == Hydra) then if (seat == 0) then if (level <= 7) then cancelEvent() outputChatBox ( "To enter this hydra you need to be level 7 and higher", player, 255, 0, 0, true ) end end end end addEventHandler ( "onVehicleStartEnter", Hydra, hydralock) Just replace the x, y, z with the position. Nobody is perfect , I'm nobody. Skype : ahmad.nasser37
Anderl Posted November 30, 2012 Posted November 30, 2012 hydra = createVehicle ( 520, 1526.5999755859, 2877.1000976563, 13.89999961853, 0, 0, 90 ) function hydralock(player, seat, jacked) local level = tonumber ( getElementData ( player, "level" ) or 0 ) if (source == hydra) then if (seat == 0) then if (level <= 7) then cancelEvent() outputChatBox ( "To enter this hydra you need to be level 7 and higher", player, 255, 0, 0, true ) end end end end addEventHandler ( "onVehicleStartEnter", hydra, hydralock) 1)you forgot to mention which vehicle it should be the name of vehicle in-place of getRootElement() 2)an extra End Wrong. He used a statement with a condition "source == hydra" which does the same as putting the element 'hydra' instead of 'root'. I think like this Hydra = { createVehicle ( 520, 1526.5999755859, 2877.1000976563, 13.89999961853, 0, 0, 90 ) createVehicle ( 520, x, y, z, 0, 0, 90 ) } function hydralock(player, seat, jacked) local level = tonumber ( getElementData ( player, "level" ) or 0 ) if (source == Hydra) then if (seat == 0) then if (level <= 7) then cancelEvent() outputChatBox ( "To enter this hydra you need to be level 7 and higher", player, 255, 0, 0, true ) end end end end addEventHandler ( "onVehicleStartEnter", Hydra, hydralock) Just replace the x, y, z with the position. It's wrong too because you can't compare an element with a table. "[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007
AhmadQTR Posted November 30, 2012 Posted November 30, 2012 hydra = createVehicle ( 520, 1526.5999755859, 2877.1000976563, 13.89999961853, 0, 0, 90 ) function hydralock(player, seat, jacked) local level = tonumber ( getElementData ( player, "level" ) or 0 ) if (source == hydra) then if (seat == 0) then if (level <= 7) then cancelEvent() outputChatBox ( "To enter this hydra you need to be level 7 and higher", player, 255, 0, 0, true ) end end end end addEventHandler ( "onVehicleStartEnter", hydra, hydralock) 1)you forgot to mention which vehicle it should be the name of vehicle in-place of getRootElement() 2)an extra End Wrong. He used a statement with a condition "source == hydra" which does the same as putting the element 'hydra' instead of 'root'. I think like this Hydra = { createVehicle ( 520, 1526.5999755859, 2877.1000976563, 13.89999961853, 0, 0, 90 ) createVehicle ( 520, x, y, z, 0, 0, 90 ) } function hydralock(player, seat, jacked) local level = tonumber ( getElementData ( player, "level" ) or 0 ) if (source == Hydra) then if (seat == 0) then if (level <= 7) then cancelEvent() outputChatBox ( "To enter this hydra you need to be level 7 and higher", player, 255, 0, 0, true ) end end end end addEventHandler ( "onVehicleStartEnter", Hydra, hydralock) Just replace the x, y, z with the position. It's wrong too because you can't compare an element with a table. Oh okay sorry and thanks for the information Nobody is perfect , I'm nobody. Skype : ahmad.nasser37
goofie88 Posted November 30, 2012 Author Posted November 30, 2012 there is no way to make 2 hydras locked to level? Also the above code didn't really work because i cant set vehicle color then =(
Anderl Posted November 30, 2012 Posted November 30, 2012 (edited) local pVehicles = { [1] = createVehicle( 520, 1526.5999755859, 2877.1000976563, 13.89999961853, 0, 0, 90 ); } function VehicleEnter( player, seat ) if ( seat == 0 ) then local nLevel = tonumber( getElementData( player, "level" ) ) or 0; if ( nLevel < 7 ) then cancelEvent(); outputChatBox( "To enter this hydra you must have level 7 or higher!", player, 255, 0, 0, false ); end end end -- for _, vehicle in ipairs( pVehicles ) do addEventHandler( "onVehicleStartEnter", vehicle, VehicleEnter ); end Edited November 30, 2012 by Guest "[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007
goofie88 Posted November 30, 2012 Author Posted November 30, 2012 badargument @ addEventHandler [expected function at argument 3, got nil] and all levels can enter
Anderl Posted November 30, 2012 Posted November 30, 2012 My bad, copy my last code again. "[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007
goofie88 Posted November 30, 2012 Author Posted November 30, 2012 Thank you very much Anderl, everything works great now thank you how can I set the vehicle color if it's a table? im confused a bit
Anderl Posted November 30, 2012 Posted November 30, 2012 One way would be to use same indexes as in "pVehicles" table in another table with its respective colors. Example: local pColors = { [1] = { 255, 0, 0 }; } for i, model in ipairs( pVehicles ) do setVehicleColor( model, unpack( pColors[i] ) ); end ( This will set vehicle with index 1 at "pVehicle" table with the specified color in the table at index 1 in "pColors" ) Put this below "pVehicles" table. "[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007
myonlake Posted November 30, 2012 Posted November 30, 2012 That's a very interesting scripting technique, Anderl. Congratulations If I helped you, please click the like button on the right Thanks!
goofie88 Posted December 1, 2012 Author Posted December 1, 2012 works perfect man last question and I'll stop asking, why can everyone enter if I add this if not (getElementData(player, "gang") == "Army") then under if ( nLevel < 7 ) then , all gang can enter, but not ppl lower level 7
Anderl Posted December 1, 2012 Posted December 1, 2012 I didn't understand it; You want to block access from gangs too or a specific one? That's a very interesting scripting technique, Anderl. Congratulations Ahah, thanks. "[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007
goofie88 Posted December 1, 2012 Author Posted December 1, 2012 yes i tried to block acces to all gangs except Army but everyone can enter =(
Anderl Posted December 1, 2012 Posted December 1, 2012 Well, just check if the player is in a gang and if it is check if "gang" element data is "Army". If it isn't, block access. I can't show you an example because I don't know how your gang system works. "[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007
goofie88 Posted December 1, 2012 Author Posted December 1, 2012 like that? function VehicleEnter( player, seat ) if ( seat == 0 ) then local nLevel = tonumber( getElementData( player, "level" ) ) or 0; local accountName = getAccountName ( getPlayerAccount ( player ) ) local gangName = exports.gangsystem:getAccountGang ( accountName ) if not (gangName == "Army") then if ( nLevel < 7 ) then cancelEvent(); outputChatBox( "This vehicle is locked to the Army lvl 7!", player, 255, 0, 0, false ); end end end end
Anderl Posted December 1, 2012 Posted December 1, 2012 like that? function VehicleEnter( player, seat ) if ( seat == 0 ) then local nLevel = tonumber( getElementData( player, "level" ) ) or 0; local accountName = getAccountName ( getPlayerAccount ( player ) ) local gangName = exports.gangsystem:getAccountGang ( accountName ) if not (gangName == "Army") then if ( nLevel < 7 ) then cancelEvent(); outputChatBox( "This vehicle is locked to the Army lvl 7!", player, 255, 0, 0, false ); end end end end Would not "getAccountGang" use account element and not account name? Is the gang system made by you or is it from community? If it's from community, you mind sending me link to check that? Try this, anyway: function VehicleEnter( player, seat ) if ( seat == 0 ) then local nLevel = tonumber( getElementData( player, "level" ) ) or 0; local szGang = exports.gangsystem:getAccountGang( getAccountName( getPlayerAccount( player ) ) ); if ( ( szGang ~= "Army" ) or ( szGang == "Army" and nLevel < 7 ) ) then cancelEvent(); outputChatBox( "This vehicle is locked to Army level 7!", player, 255, 0, 0, false ); end end end "[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007
goofie88 Posted December 1, 2012 Author Posted December 1, 2012 Works perfectly now thank you very much
Anderl Posted December 1, 2012 Posted December 1, 2012 You're welcome "[...] If you don’t love it, if you’re not having fun doing it, you don’t really love it, you’re going to give up." - Steve Jobs, 2007
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