Ihnify Posted May 16, 2019 Share Posted May 16, 2019 How well did the script "fuel system" that is is, download auto download auto install Qty benzyl Then I take this gasoline and show on the client, if there are tips on how to do better, or as an example of how to further make such scripts - write, I will be glad Study lua +- month server local timer = {} addEventHandler("onPlayerVehicleEnter", root, function ( theVehicle, seat ) if seat == 0 then for i = 1, #Vehicle.vehicles do if theVehicle == Vehicle.vehicleObject [ i ] then if(Vehicle.fuel [ i ] <= 0.1) then return outputChatBox ( "В авто закончился бензин", source ) end outputChatBox ( "enter ok", source ) local thePlayer = source timer [ source ] = setTimer ( function () if ( Vehicle.fuel [ i ] <= 0.1 ) then outputChatBox ( "В авто закончился бензин", thePlayer ) setVehicleEngineState ( theVehicle, false ) if isTimer ( sourceTimer ) then killTimer ( sourceTimer ) end end speedVehicle = getElementSpeed ( theVehicle ) kmhFloor = math.floor ( speedVehicle ) Vehicle.fuel [ i ] = Vehicle.fuel[ i ] - ( speedVehicle + 1 ) / 15000; setElementData ( theVehicle, "Fuel", Vehicle.fuel [ i ] ) end, 300, 0 ) end end end end) Link to comment
Ihnify Posted May 16, 2019 Author Share Posted May 16, 2019 13 minutes ago, stPatrick said: Link to comment
WiBox Posted May 16, 2019 Share Posted May 16, 2019 (edited) Ihnify can you try to explain what you really want? I didn't understand what you want to do, If you speak Russian, use Google Translate it will help much better Edited May 16, 2019 by R.I.P Logic Link to comment
Ihnify Posted May 16, 2019 Author Share Posted May 16, 2019 init = function() for index in pairs ( Vehicle.vehicles ) do Vehicle.vehicleObject [ index ] = createVehicle( Vehicle.vehicles[index][1], Vector3( Vehicle.vehicles[index][2], Vehicle.vehicles[index][3] , Vehicle.vehicles [ index ] [ 4 ] ), 0, 0, Vehicle.vehicles [ index ] [ 5 ] ) Vehicle.fuel [ index ] = 1.5 end end; addEventHandler ( "onResourceStart", resourceRoot, Vehicle.init ) Did I make a good script "fuel system"? I load the cars and set them a certain amount of fuel. Then I take the fuel data, and use it on the client, in the speedometer. Are there standards for writing systems, or give an example of how to use it correctly in the future. I appreciate that. Learn language lua +- month Link to comment
WiBox Posted May 16, 2019 Share Posted May 16, 2019 Well there's no standards for scripting, there's only logic and basic. However asking here if the script is good isn't going to help you, test the script in MTA server. If it has bugs, fix them or send them here and we will help~ 1 Link to comment
Ihnify Posted May 16, 2019 Author Share Posted May 16, 2019 there are no errors as such, I just need to know how to usually work server-client, take data from the server, or client Link to comment
WiBox Posted May 16, 2019 Share Posted May 16, 2019 (edited) Well I know 2 ways, setElementData and getElementData either TriggerServerEvent and TriggerClientEvent Edited May 16, 2019 by R.I.P Logic Link to comment
Ihnify Posted May 16, 2019 Author Share Posted May 16, 2019 (edited) for example, if I do this tiggerClientEvent ( source, "fuel", source, Vehicle.fuel [ vehicle ] ) client local vehicleFuel addEvent ( "fuel", true ) addEventHandler ( "fuel", root, function ( fuel ) vehicleFuel = fuel end ) and use vehicleFuel on speedometer, or element data this is normal? Edited May 16, 2019 by Ihnify Link to comment
WiBox Posted May 16, 2019 Share Posted May 16, 2019 (edited) Example: Server Side: function sendData() triggerClientEvent( source, "fuel", source, Vehicle.fuel [ vehicle ] ) -- you should specify the vehicle... end addCommandHandler("sendData", sendData) Client Side: local vehicleFuel addEvent ( "fuel", true ) addEventHandler ( "fuel", root, function ( fuel ) vehicleFuel = fuel end) so when you use /sendData , vehicleFuel will be equal to the fuel which came from the server side Vehicle.fuel[vehicle] Edited May 16, 2019 by R.I.P Logic Link to comment
Ihnify Posted May 16, 2019 Author Share Posted May 16, 2019 I understand, and is it ok to use it? Or better element data? Link to comment
WiBox Posted May 16, 2019 Share Posted May 16, 2019 Well setElementData and getElementData is so easier and you can use it to link many scripts but the only issue is if you were lagging ( ping higher than 200 ) the setElementData will take time to function, function setData() setElementData( vehicle, "fuel", vehicle.fuel[vehicle] ) end addCommandHandler( "setData", setData) function getData() fuel = getElementData( vehicle, "fuel" ) end .... setElementData and getElementData you can use it in Server and Client side, but the thing is, it set the data using an element ( player, ped, vehicle ... ) so if you want to setElementData(vehicle... ) then you need to have at the other scripts (server or client) side the same vehicle, example, if you're speaking of yourself( player ), you can use in SERVER SIDE: source example: function test() setElementData(source, "testsetsetset", "aaaa" ) end addCommandHandler( "z", test) -- Who use the command ' /z ' is the source or add a variable in function test function test( player, command) setElementData( player, "testsetsetset", "aaaa" ) end addCommandHandler( "z", test) -- Who use the command ' /z ' is the player and the command ' z ' but we write it because if you need example to write something to add in setElementData: function test( player, command, data) setElementData( player, "testsetsetset", data ) end addCommandHandler( "z", test) -- here we use /z aaaaa -- So player is the source. command is ' z ' and the data is aaaaa Now in CLIENT SIDE: function setData() setElementData( localPlayer, "test", "aaaaaaaaaaaaaaa" ) end addCommandHandler( "z", setData) -- In client side you can't add player in the function variable there's only localPlayer do specify who used the command, and the variable you add for addCommandHandler are function setData( command, data) setElementData( localPlayer, "test", data ) end addCommandHandler( "z", setData) -- command = ' z ' the difference in server side and client side that in client side you don't need to write the player in variable you always use localPlayer -- but in server side you cant' write -- THINK AS THAT FUNCTION IS IN SERVER SIDE: function setData( command, data) setElementData( source, "test", data ) end addCommandHandler( "z", setData) -- so here the variables are command and data, command = source or player and the data = ' z ' what I mean in server side you should write player you can't avoid it, in client side you don't need to write it, hope you understand what I meant, my English writing skils are horrible.. Link to comment
Ihnify Posted May 16, 2019 Author Share Posted May 16, 2019 (edited) understand, thanks. if you are Russian, it was possible in Russian) Edited May 16, 2019 by Ihnify Link to comment
WiBox Posted May 16, 2019 Share Posted May 16, 2019 Well no I'm from Lebanon, means arabic Link to comment
N3xT Posted May 16, 2019 Share Posted May 16, 2019 1 hour ago, R.I.P Logic said: Example: Server Side: function sendData() triggerClientEvent( source, "fuel", source, Vehicle.fuel [ vehicle ] ) -- you should specify the vehicle... end addCommandHandler("sendData", sendData) Client Side: local vehicleFuel addEvent ( "fuel", true ) addEventHandler ( "fuel", root, function ( fuel ) vehicleFuel = fuel end) so when you use /sendData , vehicleFuel will be equal to the fuel which came from the server side Vehicle.fuel[vehicle] function sendData( player ) triggerClientEvent( player, "fuel", player, Vehicle.fuel [ vehicle ] ) -- you should specify the vehicle... end addCommandHandler("sendData", sendData) 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