What I have been trying to do now is having the player money deducted when using repair. I recently installed EssentialMode and managed to add some money to my account. This is what it currently looks like in client.lua:
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local vehicle = IsPedInAnyVehicle(playerPed, false)
playerPed = GetPlayerPed(-1)
if (GetDistanceBetweenCoords(265.10101318359, -1260.369140625, 29.292947769165, GetEntityCoords(playerPed)) < 15 and isPlayerBeingRepaired == false) then
Notification("Press ~o~'E'~s~ for the following service:~n~Type: ~o~Repair~s~~n~Cost: ~r~$300~s~")
--TriggerEvent("mt:missiontext", "Press ~o~'E'~s~ for the following service:~n~Type: ~o~Repair~s~~n~Cost: ~r~$300~s~", 5000)
if IsControlJustPressed(1, 38) then -- E
TriggerServerEvent('gasstation:calc')
end
end
end
end)
function Notification(msg)
SetNotificationTextEntry("STRING")
AddTextComponentString(msg)
SetNotificationMessage("CHAR_DEFAULT", "CHAR_DEFAULT", true, 1, "Gas Station Attendant", "")
DrawNotification(false, false)
end
AddEventHandler('gasstation:repair', function()
Citizen.Wait(20)
isPlayerBeingRepaired = true
local veh = GetVehiclePedIsIn(playerPed, false)
local time = 10
--Notification("~w~Your car is now being repaired! It might take up to ~g~10 seconds~w~.")
NotificationRepairTime(time)
Citizen.Wait(1000)
time = time - 1
Notification("~w~Alrighty! Let's do this. Gonna do some fixing here and there. Oh, and by the way: I'll clean your car too.")
FreezeEntityPosition(GetVehiclePedIsUsing(playerPed), true)
NotificationRepairTime(time)
for i = 1, time do
Citizen.Wait(1000)
time = time - 1
NotificationRepairTime(time)
end
FreezeEntityPosition(GetVehiclePedIsUsing(playerPed), false)
SetVehicleEngineHealth(veh, 1000)
SetVehiclePetrolTankHealth(veh, 1000)
SetVehicleDirtLevel(veh, 0)
SetVehicleFixed(veh)
Notification("~g~Car successfully fixed!~n~ Thank you for considering our services!")
--TriggerEvent("mt:missiontext", "~g~Car successfully fixed!~n~ Thank you for considering our services!", 10000)
Citizen.Wait(5000)
isPlayerBeingRepaired = false
end)
function NotificationRepairTime(time)
TriggerEvent("mt:missiontext", "~w~Repair in progress. Estimated time: ~g~" .. time .. " seconds", 10000)
end
server.lua:
RegisterNetEvent('gasstation:calc')
AddEventHandler('gasstation:calc', function()
TriggerEvent('es:getPlayerFromId', source, function(user)
if (user.getMoney() < tonumber(300)) then
TriggerEvent('mt:missiontext', "Sorry, but you haven't got enough money!", 10000)
else
user.removeMoney(tonumber(300))
TriggerClientEvent('gasstation:repair')
end
end)
end)
Removing money works fine, but as soon as it gets to TriggerClientEvent('gasstation:repair'), I get this message in my console:
InvokeNative: execution failed: Argument at index 1 was null.
Await failure: Execution of native 000000002f7a49e6 in script host failed.
stack traceback:
[C]: in upvalue '_in'
citizen:/scripting/lua/natives_server.lua:334: in function 'TriggerClientEventInternal'
(...tail calls...)
server.lua:10: in upvalue 'ref'
citizen:/scripting/lua/scheduler.lua:337: in function <citizen:/scripting/lua/scheduler.lua:336>
[C]: in function 'xpcall'
citizen:/scripting/lua/scheduler.lua:336: in function <citizen:/scripting/lua/scheduler.lua:335>
stack traceback:
citizen:/scripting/lua/scheduler.lua:577: in local 'cb'
server/player/login.lua:145: in upvalue 'handler'
citizen:/scripting/lua/scheduler.lua:175: in function <citizen:/scripting/lua/scheduler.lua:174>Sending heartbeat to live-internal.fivem.net:30110
Got any ideas? Thanks in advance!