local Tunnel = module("vrp","lib/tunnel")
local Proxy = module("vrp","lib/proxy")
vRP = Proxy.getInterface("vRP")
Bjorn = Tunnel.getInterface("BjornMedical")
--------- anim revivendo vitima: 'mini@cpr@char_b@cpr_str', 'cpr_pumpchest'
--- TaskPlayAnim(playerPed, 'mini@cpr@char_b@cpr_str', 'cpr_pumpchest', 8.0, 8.0, -1, 0, 0, false, false, false)
--------- anim reviver medico: mini@cpr@char_a@cpr_str','cpr_pumpchest
--- TaskPlayAnim(playerPed, 'mini@cpr@char_a@cpr_str','cpr_pumpchest', 8.0, 8.0, -1, 0, 0, false, false, false)
--[[
RegisterKeyMapping ( 'anime' , 'asdasdadadad' , 'keyboard' , 'E' )
RegisterCommand("anime", function(source,args)
print("1")
if not fazendoanim then
fazendoanim = true
local ped = PlayerPedId()
--vRP._playAnim(true,{{'mini@cpr@char_a@cpr_str','cpr_pumpchest'}},true)
LoadAnimDic("mini@cpr@char_b@cpr_str")
TaskPlayAnim(ped,"mini@cpr@char_b@cpr_str","cpr_kol_idle",3.0,-3.0,-1,0,0,0,0,0)
else
vRP._stopAnim(false)
vRP._DeletarObjeto()
ClearPedTasks()
fazendoanim = false
end
end)
]]
CreateThread(function()
LoadAnimDic("anim@heists@box_carry@")
LoadAnimDic("combat@damage@writheidle_c")
LoadAnimDic("anim@heists@box_carry@")
LoadAnimDic("mp_common")
LoadAnimDic("amb@world_human_bum_slumped@male@laying_on_right_side@base")
LoadAnimDic('mini@cpr@char_b@cpr_str')
LoadAnimDic('mini@cpr@char_b@cpr_def')
LoadAnimDic('mini@cpr@char_a@cpr_def')
LoadAnimDic('mini@cpr@char_a@cpr_str')
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- VARIAVEIS E THREAD DA MALETA
----------------------------------------------------------------------------------------------------------------------------
local maleta = false
local maletamao = false
local maletachao = false
local cordMaletax,cordMaletay,cordMaletaz = nil
local pegouMaca = false
-- xm_prop_x17_bag_med_01a
-- sm_prop_smug_crate_s_medical
local maletaobj = "xm_prop_x17_bag_med_01a"
local propMaletaChao = nil
local macaobj = "v_med_bed2"
local macachao = nil
local cordMacax,cordMacay,cordMacaz = nil
PacienteNaAmbu = false
playerNaMacaAmbu = nil
morto = false
Citizen.CreateThread(function()
Wait(2000)
if Bjorn.chkAuth() then
while true do
local Sleep = 500
local ped = PlayerPedId()
local coordA = GetEntityCoords(GetPlayerPed(-1), 1)
local vehicle = GetClosestVehicle(coordA.x,coordA.y,coordA.z,5.0,0,71)
--print(config.animacaomorto[1],config.animacaomorto[2])
if GetEntityHealth(ped) <= config.vidamorte then
--print(config.animacaomorto[1],config.animacaomorto[2])
local Ultimodano, Ultimodano2 = GetPedLastDamageBone(ped,31086)
if Ultimodano == 1 and Ultimodano2 == 31086 then --------------------------- ANIMACAO HS
if not IsEntityPlayingAnim(ped,config.animacaomortoHS[1],config.animacaomortoHS[2],3) and not sendocarregado and not PacienteNaAmbu and not sendoreanimado then
if not HasAnimDictLoaded(config.animacaomortoHS[1]) then
LoadAnimDic(config.animacaomortoHS[1])
end
TaskPlayAnim(ped,config.animacaomortoHS[1],config.animacaomortoHS[2],3.0,-3.0,-1,1,0,0,0,0)
end
else --------------------------- ANIMACAO NAO HS
if not IsEntityPlayingAnim(ped,config.animacaomorto[1],config.animacaomorto[2],3) and not sendocarregado and not PacienteNaAmbu and not sendoreanimado then
if not HasAnimDictLoaded(config.animacaomorto[1]) then
LoadAnimDic(config.animacaomorto[1])
end
TaskPlayAnim(ped,config.animacaomorto[1],config.animacaomorto[2],3.0,-3.0,-1,1,0,0,0,0)
end
end
end
for k, v in pairs(config.veiculo) do
vehicletow = IsVehicleModel(vehicle,GetHashKey(k))
if DoesEntityExist(vehicle) and IsEntityAVehicle(vehicle) and vehicletow then
Sleep = 4
--local ped = PlayerPedId()
local cdtest = { ["x"] = v["X"],["y"] = v["Y"],["z"] = v["Z"] }
local data = {cdtest, vector3(0.0, 0.0,0.0)}
local rightDir, fwdDir, upDir, pos = GetEntityMatrix(vehicle)
local x = pos.x + (fwdDir.x * data[1].x) + (rightDir.x * data[1].y) + (upDir.x * data[1].z)
local y = pos.y + (fwdDir.y * data[1].x) + (rightDir.y * data[1].y) + (upDir.y * data[1].z)
local z = pos.z + (fwdDir.z * data[1].x) + (rightDir.z * data[1].y) + (upDir.z * data[1].z)
local controllerPos = vector3(x, y, z)
local distanceToTrunk = GetDistanceBetweenCoords(controllerPos, coordA, 1)
if distanceToTrunk < 1.5 then
if not pegouPlayer then
if GetSelectedPedWeapon(ped) == GetHashKey('WEAPON_UNARMED') and not IsPedInAnyVehicle(ped) then
DrawText3D(x, y, z, config.lang["menu"])
else
DrawText3D(x, y, z, config.lang["noweapon"])
end
end
if IsControlJustPressed(0,38) and GetSelectedPedWeapon(ped) == GetHashKey('WEAPON_UNARMED') and not IsPedInAnyVehicle(ped) and Bjorn.chkAuth() and not pegouPlayer then
if Bjorn.chkPerm() then
TriggerServerEvent("BjornMedical:MedicalMenu")
else
TriggerEvent("Notify","negado",config.lang["warn11"])
end
end
if pegouPlayer or PacienteNaAmbu then
if not PacienteNaAmbu then
DrawText3D(x, y, z-0.3, config.lang["cmaca"])
else
DrawText3D(x, y, z-0.3, config.lang["rmaca"])
end
if IsControlJustPressed(0,20) then
if not PacienteNaAmbu then
if PlayerColo ~= nil then
PacienteNaAmbu = true
playerNaMacaAmbu = PlayerColo
TriggerServerEvent("BjornMedical:SyncAnimationColo",GetPlayerServerId(playerNaMacaAmbu))
pegouPlayer = false
PlayerColo = nil
ClearPedTasks(ped)
TriggerEvent("Bjorn:cancelando",false)
TriggerServerEvent("BjornMedical:PacienteMacaAmbu",GetPlayerServerId(playerNaMacaAmbu),VehToNet(vehicle),v["MACA"]["X"],v["MACA"]["Y"],v["MACA"]["Z"], v["MACA"]["RotX"],v["MACA"]["RotY"],v["MACA"]["RotZ"])
else
TriggerEvent("Notify","negado",config.lang["warn1"])
end
else
PacienteNaAmbu = false
TriggerServerEvent("BjornMedical:PacienteMacaAmbu",GetPlayerServerId(playerNaMacaAmbu),VehToNet(vehicle),coordA.x,coordA.y,coordA.z)
pegouPlayer = true
PlayerColo = playerNaMacaAmbu
LoadAnimDic("anim@heists@box_carry@")
TaskPlayAnim(ped, 'anim@heists@box_carry@', 'idle', 8.0, 8.0, -1, 50, 0, false, false, false)
TriggerServerEvent("BjornMedical:SyncAnimationColo",GetPlayerServerId(playerNaMacaAmbu))
TriggerEvent('BjornMedical:RetirarPlayerColo')
TriggerEvent("Bjorn:cancelando",true)
playerNaMacaAmbu = nil
end
end
end
end
end
end
Wait(Sleep)
end
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- EVENTO PARA RETIRAR O PLAYER DO COLO APOS TIRAR ELE DA AMBULANCIA
----------------------------------------------------------------------------------------------------------------------------
RegisterNetEvent('BjornMedical:RetirarPlayerColo')
AddEventHandler('BjornMedical:RetirarPlayerColo',function()
local ped = PlayerPedId()
while not maletachao and pegouPlayer do
Wait(4)
if not sendocarregado and not PacienteNaAmbu then
local cordPlayer = GetEntityCoords(ped)
DrawText3D(cordPlayer.x,cordPlayer.y,cordPlayer.z+1, config.lang["droplayer"])
end
if IsControlJustPressed(0,44) or IsDisabledControlJustPressed(0,44) and not reanimando then
pegouPlayer = false
ClearPedTasks(ped)
TriggerEvent("Bjorn:cancelando",false)
TriggerServerEvent("BjornMedical:SyncAnimationColo",GetPlayerServerId(PlayerColo))
PlayerColo = nil
end
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- THREAD PARA QUANDO O PLAYER PEGAR A MALETA
----------------------------------------------------------------------------------------------------------------------------
tempmaleta = nil
object = nil
RegisterNetEvent('BjornMedical:Pegando/GuardandoMaleta')
AddEventHandler('BjornMedical:Pegando/GuardandoMaleta',function()
local ped = PlayerPedId()
if not macamao then
if not maleta and not maletamao then
maleta = true
maletamao = true
--vRP.playAnim(false,{{"mp_common","givetake1_a"}},false)
LoadAnimDic("mp_common")
TaskPlayAnim(ped,"mp_common","givetake1_a",3.0,-3.0,-1,0,0,0,0,0)
Wait(1000)
--vRP.CarregarObjeto("","",maletaobj,50, 57005 , 0.45, 0, 0.05 , 0, tonumber("260.0") , tonumber("60.0"))
RequestModel(GetHashKey(maletaobj))
while not HasModelLoaded(GetHashKey(maletaobj)) do
Citizen.Wait(300)
end
local coords = GetOffsetFromEntityInWorldCoords(ped,0.0,0.0,-5.0)
object = CreateObject(GetHashKey(maletaobj),coords.x,coords.y,coords.z,true,true,true)
SetEntityCollision(object,false,false)
AttachEntityToEntity(object,ped,GetPedBoneIndex(ped,57005),0.45, 0, 0.05,0, tonumber("260.0") , tonumber("60.0"),true,true,false,true,1,true)
TriggerEvent("BjornMedical:PegouMaleta")
else
if not maletachao then
maleta = false
maletamao = false
LoadAnimDic("mp_common")
TaskPlayAnim(ped,"mp_common","givetake1_a",3.0,-3.0,-1,0,0,0,0,0)
Wait(1000)
DeleteEntity(tempmaleta)
DeleteEntity(object)
object = nil
tempmaleta = nil
else
TriggerEvent("Notify","negado",config.lang["warn2"])
end
end
else
TriggerEvent("Notify","negado",config.lang["warn3"])
end
end)
RegisterNetEvent('BjornMedical:PegouMaleta')
AddEventHandler('BjornMedical:PegouMaleta',function()
while maletamao do
Wait(4)
local ped = PlayerPedId()
local ui = GetMinimapAnchor()
drawTxt(ui.right_x+0.200,ui.bottom_y-0.085,tonumber("1.0"),tonumber("1.0"),0.40,config.lang["dsuitcase"],255,255,255,200)
local coords = GetPedBoneCoords(PlayerPedId(), GetHashKey('SKEL_R_Hand'), tonumber("0.0"), tonumber("1.0"), tonumber("0.0"))
local x,y,z = table.unpack(coords)
DrawMarker(27,x,y,z-0.9,0,0,0,0,0,0,tonumber("1.0"),tonumber("1.0"),tonumber("1.0"),200,0,0,50,0,0,2,1,nil,nil,false)
--[[
if tempmaleta == nil then
RequestModel(maletaobj)
while not HasModelLoaded(maletaobj) do
Wait(300)
end
tempmaleta = CreateObject(GetHashKey(maletaobj),x,y,z,1,1,1)
AttachEntityToEntity(tempmaleta,ped, GetHashKey('SKEL_R_Hand'),tonumber("0.0"),tonumber("1.0"),tonumber("-1.0"),tonumber("0.0"),tonumber("0.0"),tonumber("0.0"),1,1,0,0,2,1)
SetEntityAlpha(tempmaleta, 150)
SetEntityVisible(tempmaleta,false)
end
]]
if IsControlJustPressed(0,47) and maletamao and GetSelectedPedWeapon(ped) == GetHashKey('WEAPON_UNARMED') and not IsPedInAnyVehicle(ped) and Bjorn.chkAuth() then
maletamao = false
maletachao = true
--vRP.playAnim(false,{{"pickup_object","pickup_low"}},false)
LoadAnimDic("pickup_object")
TaskPlayAnim(ped,"pickup_object","pickup_low",3.0,-3.0,-1,0,0,0,0,0)
Wait(1000)
DeleteEntity(tempmaleta)
tempmaleta = nil
DeleteEntity(object)
object = nil
--vRP._DeletarObjeto(maletaobj)
cordMaletax,cordMaletay,cordMaletaz = x,y,z-1
TriggerEvent("BjornMedical:PegarMaletaChao")
--TriggerEvent("BjornMedical:MaletaChao")
TriggerServerEvent("BjornMedical:ColocarMaletaChaoServer",cordMaletax,cordMaletay,cordMaletaz)
end
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- EVENTO PARA CRIAR A MALETA NO CHAO
----------------------------------------------------------------------------------------------------------------------------
RegisterNetEvent('BjornMedical:ColocarMaletaChao')
AddEventHandler('BjornMedical:ColocarMaletaChao',function(x,y,z)
RequestModel(maletaobj)
while not HasModelLoaded(maletaobj) do
Citizen.Wait(10)
end
propMaletaChao = CreateObject(GetHashKey(maletaobj),x,y,z,1,1,1)
SetEntityCollision(propMaletaChao,true,false)
SetEntityAsMissionEntity(propMaletaChao,true,true)
FreezeEntityPosition(propMaletaChao,true)
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- THREAD PRA QUEM COLOCOU A MALETA PODER TIRAR TAMBEM
----------------------------------------------------------------------------------------------------------------------------
playerProx = nil
pegouPlayer = false
PlayerColo = nil
reanimando = false
RegisterNetEvent('BjornMedical:PegarMaletaChao')
AddEventHandler('BjornMedical:PegarMaletaChao',function()
playerProx = GetClosestPlayer()
while maletachao do
local Sleep = 500
local ped = PlayerPedId()
local pedCord = GetEntityCoords(ped)
local vecMaletachao = vec3(cordMaletax,cordMaletay,cordMaletaz)
local distance = #(pedCord-vecMaletachao)
if distance < 5 then
if not pegouPlayer and not reanimando then
Sleep = 4
if not macamao then
if GetSelectedPedWeapon(ped) == GetHashKey('WEAPON_UNARMED') and not IsPedInAnyVehicle(ped) then
if distance < 2 then
if not tratando then
DrawText3D(cordMaletax,cordMaletay,cordMaletaz+1, config.lang["tsuitcase"])
DrawText3D(cordMaletax,cordMaletay,cordMaletaz+0.8, config.lang["attplayer"])
end
end
else
DrawText3D(cordMaletax,cordMaletay,cordMaletaz+1, config.lang["noweapon"])
end
if IsControlJustPressed(0,47) and maletachao and distance < 2 and GetSelectedPedWeapon(ped) == GetHashKey('WEAPON_UNARMED') and not IsPedInAnyVehicle(ped) and not tratando then
maletamao = true
maletachao = false
--vRP.playAnim(false,{{"pickup_object","pickup_low"}},false)
LoadAnimDic("pickup_object")
TaskPlayAnim(ped,"pickup_object","pickup_low",3.0,-3.0,-1,0,0,0,0,0)
Wait(1000)
--vRP.CarregarObjeto("","",maletaobj,50, 57005 , 0.45, 0, 0.05 , 0, tonumber("260.0"), tonumber("60.0"))
RequestModel(GetHashKey(maletaobj))
while not HasModelLoaded(GetHashKey(maletaobj)) do
Citizen.Wait(300)
end
local coords = GetOffsetFromEntityInWorldCoords(ped,0.0,0.0,-5.0)
object = CreateObject(GetHashKey(maletaobj),coords.x,coords.y,coords.z,true,true,true)
SetEntityCollision(object,false,false)
AttachEntityToEntity(object,ped,GetPedBoneIndex(ped,57005),0.45, 0, 0.05,0, tonumber("260.0") , tonumber("60.0"),true,true,false,true,1,true)
TriggerEvent("BjornMedical:PegouMaleta")
TriggerServerEvent('BjornMedical:DeletarMaletaChaoServer',propMaletaChao)
end
else
DrawText3D(cordMaletax,cordMaletay,cordMaletaz+1, config.lang["warn4"])
end
if IsControlJustPressed(0,301) and maletachao and distance < 2 and not tratando then
playerProx = GetClosestPlayer()
end
end
else
Sleep = 4
local ui = GetMinimapAnchor()
drawTxt(ui.right_x+0.300,ui.bottom_y-0.1,tonumber("1.0"),tonumber("1.0"),0.40,config.lang["warn5"],255,255,255,200)
end
local PedPlayer = GetPlayerPed(playerProx)
local cordPlayer = GetEntityCoords(PedPlayer)
local distPlayer = #(cordPlayer-pedCord)
if distPlayer < 3 then
Sleep = 4
if not reanimando then
if not PacienteNaAmbu and not pacientenamaca then
if not pegouPlayer and pid ~= playerProx then
if not sendocarregado and not macamao and not maletamao then
DrawText3D(cordPlayer.x,cordPlayer.y,cordPlayer.z+1, config.lang["takeplayer"])
end
else
DrawText3D(cordPlayer.x,cordPlayer.y,cordPlayer.z+1, config.lang["droplayer"])
end
end
end
if IsControlJustPressed(0,44) or IsDisabledControlJustPressed(0,44) and not reanimando and pid ~= playerProx then
if not PacienteNaAmbu and not pacientenamaca and not macamao and not maletamao then
if not pegouPlayer and not sendocarregado then
pegouPlayer = true
PlayerColo = playerProx
LoadAnimDic("anim@heists@box_carry@")
TaskPlayAnim(ped, 'anim@heists@box_carry@', 'idle', 8.0, 8.0, -1, 50, 0, false, false, false)
TriggerServerEvent("BjornMedical:SyncAnimationColo",GetPlayerServerId(playerProx))
TriggerEvent("Bjorn:cancelando",true)
else
TriggerServerEvent("BjornMedical:SyncAnimationColo",GetPlayerServerId(playerProx))
pegouPlayer = false
PlayerColo = nil
ClearPedTasks(ped)
TriggerEvent("Bjorn:cancelando",false)
end
end
end
local vidaPaciente = GetEntityHealth(PedPlayer)
if distance < 5 and not pegouPlayer and not PacienteNaAmbu then
if not reanimando and vidaPaciente <= config.vidamorte then
if pacientemacasolta ~= playerProx then
DrawText3D(cordPlayer.x,cordPlayer.y,cordPlayer.z+0.8, config.lang["reanim"])
end
if IsControlJustPressed(0,38) or IsDisabledControlJustPressed(0,38) and pacientemacasolta ~= playerProx then
reanimando = true
FreezeEntityPosition(ped,true)
local playerlocation = GetEntityForwardVector(PlayerPedId())
local playerheading = GetEntityHeading(GetPlayerPed(-1))
local pCoords = GetEntityCoords(GetPlayerPed(-1))
TriggerServerEvent("BjornMedical:Reanimando",GetPlayerServerId(playerProx), playerheading, pCoords, playerlocation)
Wait(2000)
FreezeEntityPosition(ped,false)
end
end
end
end
Wait(Sleep)
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- EVENTO QUE SYNCA O PACIENTE NA ANIMAÇÃO AO SER CARREGADO
----------------------------------------------------------------------------------------------------------------------------
---- TaskPlayAnim(ped, "amb@code_human_in_car_idles@generic@ps@base", "base", 8.0, -8, -1, 33, 0, 0, 40, 0)
sendocarregado = false
RegisterNetEvent('BjornMedical:SyncAnimationColo')
AddEventHandler('BjornMedical:SyncAnimationColo',function(Medico)
local ped = PlayerPedId()
local MedPed = GetPlayerPed(GetPlayerFromServerId(Medico))
if not sendocarregado then
sendocarregado = true
LoadAnimDic("amb@world_human_bum_slumped@male@laying_on_right_side@base")
--AttachEntityToEntity(ped, MedPed, 9816, 0.015, 0.38, 0.11, 0.9, 0.30, 90.0, false, false, false, false, 2, false)
AttachEntityToEntity(ped, MedPed, GetPedBoneIndex(MedPed, 57005), -0.32, -0.6, -0.35, 240.0, 35.0, 149.0, true, true, false, true, 1, true)
TaskPlayAnim(ped, "amb@world_human_bum_slumped@male@laying_on_right_side@base", "base", 8.0, -8, -1, 33, 0, 0, 40, 0)
else
sendocarregado = false
DetachEntity(ped,true,false)
ClearPedTasks(ped)
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- ANIMAÇÃO DO PACIENTE SENDO REANIMADO
----------------------------------------------------------------------------------------------------------------------------
sendoreanimado = false
RegisterNetEvent('BjornMedical:AnimacaoMorto')
AddEventHandler('BjornMedical:AnimacaoMorto',function(head, coord, loc)
sendoreanimado = true
local ped = PlayerPedId()
FreezeEntityPosition(ped,true)
TriggerEvent("Bjorn:cancelando",true)
LoadAnimDic('mini@cpr@char_b@cpr_str')
LoadAnimDic('mini@cpr@char_b@cpr_def')
SetCurrentPedWeapon(ped, GetHashKey('WEAPON_UNARMED'), true)
local x, y, z = table.unpack(coord + loc * 1.0)
SetEntityCoords(ped, x, y, z-1)
SetEntityHeading(ped, head - 270.0)
TaskPlayAnim(ped, 'mini@cpr@char_b@cpr_def', 'cpr_intro', 8.0, 8.0, -1, 0, 0, false, false, false)
Citizen.Wait(14900)
for i=1, 15, 1 do
Citizen.Wait(900)
TaskPlayAnim(ped, 'mini@cpr@char_b@cpr_str', 'cpr_pumpchest', 8.0, 8.0, -1, 0, 0, false, false, false)
end
StopScreenEffect("DeathFailOut")
TaskPlayAnim(ped, 'mini@cpr@char_b@cpr_str', 'cpr_success', 8.0, 8.0, 27590, 0, 0, false, false, false)
Citizen.Wait(24590)
while GetEntityHealth(ped) <= config.vidamorte do
TriggerServerEvent("Bjorn:ReanimarSe")
Citizen.Wait(1000)
end
TriggerEvent("Bjorn:cancelando",false)
FreezeEntityPosition(ped,false)
sendoreanimado = false
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- ANIMACAO DO MEDICO REANIMANDO
----------------------------------------------------------------------------------------------------------------------------
RegisterNetEvent('BjornMedical:AnimacaoMedico')
AddEventHandler('BjornMedical:AnimacaoMedico',function()
TriggerEvent("Bjorn:cancelando",true)
local ped = PlayerPedId()
SetCurrentPedWeapon(ped, GetHashKey('WEAPON_UNARMED'), true)
LoadAnimDic('mini@cpr@char_a@cpr_def')
LoadAnimDic('mini@cpr@char_a@cpr_str')
TaskPlayAnim(ped, 'mini@cpr@char_a@cpr_def', 'cpr_intro', 8.0, 8.0, -1, 0, 0, false, false, false)
Citizen.Wait(14900)
for i=1, 15, 1 do
Citizen.Wait(900)
TaskPlayAnim(ped, 'mini@cpr@char_a@cpr_str','cpr_pumpchest', 8.0, 8.0, -1, 0, 0, false, false, false)
end
TaskPlayAnim(ped,'mini@cpr@char_a@cpr_str', 'cpr_success', 8.0, 8.0, 27590, 0, 0, false, false, false)
Citizen.Wait(28590)
TriggerEvent("Bjorn:cancelando",false)
--FreezeEntityPosition(ped,false)
Citizen.Wait(2000)
reanimando = false
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- COLOCAR NA MACA
----------------------------------------------------------------------------------------------------------------------------
dentrodaambu = false
RegisterNetEvent('BjornMedical:PacienteMacaAmbu')
AddEventHandler('BjornMedical:PacienteMacaAmbu',function(veh,x,y,z,rx,ry,rz)
local ped = PlayerPedId()
if not dentrodaambu then
dentrodaambu = true
AttachEntityToEntity(ped, NetToVeh(veh), NetToVeh(veh), x,y,z,rx,ry,rz, true, true, false, true, 1, true)
--vRP.playAnim(false,{{"mini@cpr@char_b@cpr_str","cpr_kol_idle"}},true)
LoadAnimDic("mini@cpr@char_b@cpr_str")
TaskPlayAnim(ped,"mini@cpr@char_b@cpr_str","cpr_kol_idle",3.0,-3.0,-1,1,0,0,0,0)
--while dentrodaambu do
--Wait(100)
--if not IsEntityPlayingAnim(ped,"mini@cpr@char_b@cpr_str","cpr_kol_idle",3) then
--TaskPlayAnim(ped,"mini@cpr@char_b@cpr_str","cpr_kol_idle",3.0,-3.0,-1,0,0,0,0,0)
--end
if not IsEntityAttachedToAnyVehicle(ped) then
AttachEntityToEntity(ped, NetToVeh(veh), NetToVeh(veh), x,y,z,rx,ry,rz, true, true, false, true, 1, true)
end
else
dentrodaambu = false
--Wait(500)
DetachEntity(ped,true,false)
SetEntityCoords(ped,x,y,z)
ClearPedTasks(ped)
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- DELETAR MALETA
----------------------------------------------------------------------------------------------------------------------------
RegisterNetEvent('BjornMedical:DeletarMaletaChao')
AddEventHandler('BjornMedical:DeletarMaletaChao',function(prop)
if DoesEntityExist(prop) then
DetachEntity(prop,true,true)
Citizen.InvokeNative(0xAD738C3085FE7E11,prop,true,true)
SetEntityAsNoLongerNeeded(Citizen.PointerValueIntInitialized(prop))
DeleteEntity(prop)
prop = nil
end
end)
-----------------------------------------------------------------------------------------------------------------------------------------
-- MACA
-----------------------------------------------------------------------------------------------------------------------------------------
macamao = false
macaid = nil
-------- v_med_emptybed
RegisterNetEvent('BjornMedical:TakeMaca')
AddEventHandler('BjornMedical:TakeMaca',function()
local ped = PlayerPedId()
if not maletamao then
if not macamao and not macachao then
macamao = true
--LoadAnimDic("mp_common")
--TaskPlayAnim(ped,"mp_common","givetake1_a",3.0,-3.0,-1,0,0,0,0,0)
LoadAnimDic("anim@heists@box_carry@")
RequestModel(GetHashKey(macaobj))
while not HasModelLoaded(GetHashKey(macaobj)) do
Citizen.Wait(300)
end
local coords = GetOffsetFromEntityInWorldCoords(ped,0.0,0.0,-5.0)
macaid = CreateObject(GetHashKey(macaobj),coords.x,coords.y,coords.z,true,true,true)
--SetEntityCollision(macaid,false,false)
AttachEntityToEntity(macaid, GetPlayerPed(-1), GetPlayerPed(-1), 0.0, 1.6, -0.43 , 180.0, 180.0, 180.0, 0.0, false, false, true, false, 2, true)
TaskPlayAnim(ped, 'anim@heists@box_carry@', 'idle', 8.0, 8.0, -1, 50, 0, false, false, false)
TriggerEvent("BjornMedical:PegouMaca")
else
if not macachao then
macamao = false
ClearPedTasks(ped)
DeleteEntity(macaid)
if pacientenamaca then
local coordA = GetEntityCoords(GetPlayerPed(-1), 1)
local vehicle = GetClosestVehicle(coordA.x,coordA.y,coordA.z,5.0,0,71)
for k, v in pairs(config.veiculo) do
vehicletow = IsVehicleModel(vehicle,GetHashKey(k))
if DoesEntityExist(vehicle) and IsEntityAVehicle(vehicle) and vehicletow then
TriggerServerEvent("BjornMedical:SyncPlayerMacaSolta",GetPlayerServerId(pacientemacasolta),ObjToNet(macaid))
ClearPedTasks(ped)
TriggerServerEvent("BjornMedical:PacienteMacaAmbu",GetPlayerServerId(pacientemacasolta),VehToNet(vehicle),v["MACA"]["X"],v["MACA"]["Y"],v["MACA"]["Z"], v["MACA"]["RotX"],v["MACA"]["RotY"],v["MACA"]["RotZ"])
pacientenamaca = false
----print("essa porra aq")
PacienteNaAmbu = true
playerNaMacaAmbu = pacientemacasolta
pacientemacasolta = nil
end
end
end
macaid = nil
else
TriggerEvent("Notify","negado",config.lang["warn6"])
end
end
else
TriggerEvent("Notify","negado",config.lang["warn7"])
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- EVENTO DE QUANDO O PLAYER PEGA A MACA DA AMBULANCIA
----------------------------------------------------------------------------------------------------------------------------
pacientenamaca = false
pacientemacasolta = nil
tratando = false
RegisterNetEvent('BjornMedical:PegouMaca')
AddEventHandler('BjornMedical:PegouMaca',function()
while macamao or macachao do
Wait(4)
local ped = PlayerPedId()
local coords = GetEntityCoords(ped)
local x,y,z = table.unpack(coords)
local ui = GetMinimapAnchor()
if macamao then
drawTxt(ui.right_x+0.200,ui.bottom_y-0.200,tonumber("1.0"),tonumber("1.0"),0.40,config.lang["dmaca"],255,255,255,200)
elseif macachao then
local maca = GetClosestObjectOfType(coords, 2.0, GetHashKey(macaobj))
local macacord = GetEntityCoords(maca,1)
--print(maca,macaid)
if maca == macaid then
if not pegouPlayer then
if not maletamao then
--drawTxt(ui.right_x+0.200,ui.bottom_y-0.200,tonumber("1.0"),tonumber("1.0"),0.40,"PRESSIONE ~b~G~w~ PARA PEGAR A ~y~MACA",255,255,255,200)
if not tratando and not reanimando then
DrawText3D(macacord.x,macacord.y,macacord.z+1, config.lang["tmaca"])
end
else
DrawText3D(macacord.x,macacord.y,macacord.z+1, config.lang["warn8"])
end
end
end
end
if pegouPlayer and not macamao and not pacientenamaca then
local maca = GetClosestObjectOfType(coords, 2.0, GetHashKey(macaobj))
local macacord = GetEntityCoords(maca,1)
DrawText3D(macacord.x,macacord.y,macacord.z+1.2, config.lang["putonplayermaca"])
if IsControlJustPressed(0,38) or IsDisabledControlJustPressed(0,38) and GetSelectedPedWeapon(ped) == GetHashKey('WEAPON_UNARMED') then
pacientenamaca = true
pacientemacasolta = PlayerColo
TriggerServerEvent("BjornMedical:SyncAnimationColo",GetPlayerServerId(PlayerColo))
--Wait(500)
TriggerServerEvent("BjornMedical:SyncPlayerMacaSolta",GetPlayerServerId(pacientemacasolta),ObjToNet(macaid))
pegouPlayer = false
PlayerColo = nil
ClearPedTasks(ped)
TriggerEvent("Bjorn:cancelando",false)
Wait(1000)
--else
--pacientemacasolta = nil
--pacientenamaca = false
--TriggerServerEvent("BjornMedical:SyncPlayerMacaSolta",GetPlayerServerId(pacientemacasolta),ObjToNet(macaid))
end
end
if pacientenamaca and not maletamao and not macamao then
local maca = GetClosestObjectOfType(coords, 2.0, GetHashKey(macaobj))
local macacord = GetEntityCoords(maca,1)
if not tratando then
DrawText3D(macacord.x,macacord.y,macacord.z+1.2, config.lang["rplayermaca"])
end
if IsControlJustPressed(0,44) or IsDisabledControlJustPressed(0,44) and GetSelectedPedWeapon(ped) == GetHashKey('WEAPON_UNARMED') and not tratando and not reanimando then
TriggerServerEvent("BjornMedical:SyncPlayerMacaSolta",GetPlayerServerId(pacientemacasolta),ObjToNet(macaid))
--Wait(1000)
pegouPlayer = true
PlayerColo = pacientemacasolta
LoadAnimDic("anim@heists@box_carry@")
TaskPlayAnim(ped, 'anim@heists@box_carry@', 'idle', 8.0, 8.0, -1, 1, 0, false, false, false)
TriggerServerEvent("BjornMedical:SyncAnimationColo",GetPlayerServerId(PlayerColo))
TriggerEvent("Bjorn:cancelando",true)
pacientemacasolta = nil
pacientenamaca = false
if not maletachao then
TriggerEvent('BjornMedical:RetirarPlayerColo')
end
end
end
if pacientenamaca and not maletamao and not macamao and not tratando then
local maca = GetClosestObjectOfType(coords, 2.0, GetHashKey(macaobj))
local macacord = GetEntityCoords(maca,1)
local vecMaletachao = vec3(cordMaletax,cordMaletay,cordMaletaz)
local distance = #(coords-vecMaletachao)
local vidapacientemaca = GetEntityHealth(GetPlayerPed(pacientemacasolta))
--print(pacientemacasolta,vidapacientemaca,GetPlayerIndex(pacientemacasolta))
--if IsEntityAPed(GetPlayerPed(pacientemacasolta)) then
--print("11111111")
--end
--local b = PlayerPedId(pacientemacasolta)
--local vidapacientemaca2 = GetEntityHealth(b)
if vidapacientemaca < config.vidafull then
--print(vidaPaciente,config.vidamorte)
if vidapacientemaca > config.vidamorte then
if maletachao and distance < 5 then
DrawText3D(macacord.x,macacord.y,macacord.z+1.4, config.lang["treatment"])
else
DrawText3D(macacord.x,macacord.y,macacord.z+1.4, config.lang["warn5"])
end
if not maletachao then
DrawText3D(macacord.x,macacord.y,macacord.z+1.4, config.lang["warn9"])
end
else
DrawText3D(macacord.x,macacord.y,macacord.z+1.4, config.lang["warn12"])
end
if IsControlJustPressed(0,38) or IsDisabledControlJustPressed(0,38) and GetSelectedPedWeapon(ped) == GetHashKey('WEAPON_UNARMED') and maletachao and distance < 5 then
tratando = true
FreezeEntityPosition(ped,true)
TriggerEvent("Notify","aviso",config.lang["warn13"])
LoadAnimDic("mini@repair")
TaskPlayAnim(ped, 'mini@repair', 'fixing_a_ped', 8.0, 8.0, -1, 50, 0, false, false, false)
--TriggerEvent("Bjorn:cancelando",true)
Wait(30000)
ClearPedTasks(ped)
tratando = false
TriggerServerEvent("BjornMedical:SyncTreatMent",GetPlayerServerId(pacientemacasolta))
TriggerEvent("Notify","sucesso",config.lang["warn14"])
FreezeEntityPosition(ped,false)
end
else
DrawText3D(macacord.x,macacord.y,macacord.z+1.4, config.lang["treated"])
end
end
if IsControlJustPressed(0,47) and GetSelectedPedWeapon(ped) == GetHashKey('WEAPON_UNARMED') and not IsPedInAnyVehicle(ped) and Bjorn.chkAuth() and not tratando then
if not pegouPlayer then
if macamao then
macamao = false
macachao = true
cordMacax,cordMacay,cordMacaz = x,y,z-1
ClearPedTasks(ped)
DetachEntity(macaid, true, true)
elseif macachao then
local maca = GetClosestObjectOfType(coords, 2.0, GetHashKey(macaobj))
if maca == macaid then
if not maletamao then
macamao = true
macachao = false
AttachEntityToEntity(macaid, GetPlayerPed(-1), GetPlayerPed(-1), 0.0, 1.6, -0.43 , 180.0, 180.0, 180.0, 0.0, false, false, true, false, 2, true)
TaskPlayAnim(ped, 'anim@heists@box_carry@', 'idle', 8.0, 8.0, -1, 50, 0, false, false, false)
else
TriggerEvent("Notify","negado",config.lang["warn7"])
end
end
end
end
end
end
end)
namaca = false
RegisterNetEvent('BjornMedical:SyncPlayerMacaSolta')
AddEventHandler('BjornMedical:SyncPlayerMacaSolta',function(macaid)
local ped = PlayerPedId()
if not namaca then
namaca = true
AttachEntityToEntity(ped,NetToObj(macaid),NetToObj(macaid), 0.0, 0.0, 1.4 , 180.0, 180.0, 0.0, 0.0, false, false, true, false, 2, true)
--TaskPlayAnim(ped,"mini@cpr@char_b@cpr_str","cpr_kol_idle",3.0,-3.0,-1,1,0,0,0,0)
--LoadAnimDic("combat@damage@writheidle_c")
--TaskPlayAnim(ped,'combat@damage@writheidle_c','writhe_idle_g', 8.0, 8.0, -1, 33, 0, 0, 0, 0)
LoadAnimDic("mini@cpr@char_b@cpr_str")
TaskPlayAnim(ped,"mini@cpr@char_b@cpr_str","cpr_kol_idle",3.0,-3.0,-1,1,0,0,0,0)
else
namaca = false
DetachEntity(ped,true,false)
ClearPedTasks(ped)
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- EVENTO PARA ABRIR FECHAR AS PORTAS DO VEICULO
----------------------------------------------------------------------------------------------------------------------------
RegisterNetEvent("BjornMedical:SyncTreatMent")
AddEventHandler("BjornMedical:SyncTreatMent",function()
local ped = PlayerPedId()
while GetEntityHealth(ped) < config.vidafull do
TriggerServerEvent("Bjorn:Tratamento")
Citizen.Wait(1000)
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- EVENTO PARA ABRIR FECHAR AS PORTAS DO VEICULO
----------------------------------------------------------------------------------------------------------------------------
RegisterNetEvent('BjornMedical:OpenAndCloseDoorsSource')
AddEventHandler('BjornMedical:OpenAndCloseDoorsSource',function()
local cord = GetEntityCoords(GetPlayerPed(-1), 1)
local vehicle = GetClosestVehicle(cord.x,cord.y,cord.z,5.0,0,71)
if vehicle then
TriggerServerEvent("BjornMedical:OpenAndCloseDoors",VehToNet(vehicle))
end
end)
RegisterNetEvent('BjornMedical:OpenAndCloseDoors')
AddEventHandler('BjornMedical:OpenAndCloseDoors',function(index)
if NetworkDoesNetworkIdExist(index) then
local v = NetToVeh(index)
local isopen = GetVehicleDoorAngleRatio(v,3)
local isopen2 = GetVehicleDoorAngleRatio(v,4)
if DoesEntityExist(v) then
if IsEntityAVehicle(v) then
if isopen == 0 and isopen2 == 0 then
SetVehicleDoorOpen(v,3,0,0)
SetVehicleDoorOpen(v,2,0,0)
else
SetVehicleDoorShut(v,3,0)
SetVehicleDoorShut(v,2,0)
end
end
end
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- EVENTO PARA ENTRAR NA AMBULANCIA
----------------------------------------------------------------------------------------------------------------------------
RegisterNetEvent('BjornMedical:EnterAmbulance')
AddEventHandler('BjornMedical:EnterAmbulance',function(acento) ------- ACENTO 1 É O ESQUERDO 2 É O DIREITO
local ped = PlayerPedId()
local cord = GetEntityCoords(ped,1)
local vehicle = GetClosestVehicle(cord.x,cord.y,cord.z,5.0,0,71)
if vehicle then
if GetVehicleDoorLockStatus(vehicle) == 1 then
if acento == 1 then
TaskEnterVehicle(ped,vehicle,20000,1,1.0,1,0)
elseif acento == 2 then
TaskEnterVehicle(ped,vehicle,20000,2,1.0,1,0)
end
else
TriggerEvent("Notify","negado",config.lang["warn10"])
end
end
end)
----------------------------------------------------------------------------------------------------------------------------
------------------------------- TD
----------------------------------------------------------------------------------------------------------------------------
function tD(n)
n = math.ceil(n * 10) / 10
return n
end
----------------------------------------------------------------------------------------------------------------------------
------------------------------- FUNCOES
----------------------------------------------------------------------------------------------------------------------------
function drawTxt(x,y,width,height,scale,text,r,g,b,a)
SetTextFont(10)
SetTextScale(scale,scale)
SetTextColour(r,g,b,a)
SetTextOutline()
SetTextEntry("STRING")
AddTextComponentString(text)
DrawText(x,y)
end
function DrawText3D(x,y,z,text)
local onScreen,_x,_y=World3dToScreen2d(x,y,z)
local px,py,pz=table.unpack(GetGameplayCamCoords())
SetTextScale(0.34, 0.34)
SetTextFont(4)
SetTextProportional(1)
SetTextColour(255, 255, 255, 215)
SetTextEntry("STRING")
SetTextCentre(1)
AddTextComponentString(text)
DrawText(_x,_y)
local factor = (string.len(text)) / 330
DrawRect(_x,_y+0.0125, 0.001+ factor, 0.028, 0, 0, 0, 150)
end
-----------------------------------------------------------------------------------------------------------------------------------------
--[ FUNCAO PARA PEGAR A CDS DO MINIMAPA A REALIZAR O DRAW 2D ]------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------
function GetMinimapAnchor()
local safezone = GetSafeZoneSize()
local safezone_x = 1.0 / tonumber("20.0")
local safezone_y = 1.0 / tonumber("20.0")
local aspect_ratio = GetAspectRatio(0)
local res_x, res_y = GetActiveScreenResolution()
local xscale = 1.0 / res_x
local yscale = 1.0 / res_y
local Minimap = {}
Minimap.width = xscale * (res_x / (4 * aspect_ratio))
Minimap.height = yscale * (res_y / 5.674)
Minimap.left_x = xscale * (res_x * (safezone_x * ((math.abs(safezone - tonumber("1.0"))) * 10)))
Minimap.bottom_y = tonumber("1.0") - yscale * (res_y * (safezone_y * ((math.abs(safezone - tonumber("1.0"))) * 10)))
Minimap.right_x = Minimap.left_x + Minimap.width
Minimap.top_y = Minimap.bottom_y - Minimap.height
Minimap.x = Minimap.left_x
Minimap.y = Minimap.top_y
Minimap.xunit = xscale
Minimap.yunit = yscale
return Minimap
end
-----------------------------------------------------------------------------------------------------------------------------------------
--[ CARREGA ANIM ]--------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------
function LoadAnimDic(dict)
RequestAnimDict(dict)
while not HasAnimDictLoaded(dict) do
Citizen.Wait(300)
end
end
-----------------------------------------------------------------------------------------------------------------------------------------
--[ FUNCAO QUE PEGA PLAYER PROX ]--------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------
function GetClosestPlayer()
local players = GetPlayers()
local closestDistance = -1
local closestPlayer = -1
local ply = GetPlayerPed(-1)
local plyCoords = GetEntityCoords(ply, 0)
for index,value in ipairs(players) do
local target = GetPlayerPed(value)
if(target ~= ply) then
local targetCoords = GetEntityCoords(GetPlayerPed(value), 0)
local distance = Vdist(targetCoords["x"], targetCoords["y"], targetCoords["z"], plyCoords["x"], plyCoords["y"], plyCoords["z"])
if(closestDistance == -1 or closestDistance > distance) then
closestPlayer = value
closestDistance = distance
end
end
end
if closestPlayer ~= -1 then
return closestPlayer
end
end
function GetPlayers()
local pedId = PlayerId()
local players = {}
for i = 0, 256 do
if NetworkIsPlayerActive(i) and i ~= pedId then
table.insert(players, i)
end
end
return players
end
-----------------------------------------------------------------------------------------------------------------------------------------
--[ CANCELANDO O F6 ]--------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------
local cancelando = false
RegisterNetEvent('Bjorn:cancelando')
AddEventHandler('Bjorn:cancelando',function(status)
local ped = PlayerPedId()
cancelando = status
while cancelando do
if cancelando then
BlockWeaponWheelThisFrame()
DisablePlayerFiring(ped,true)
DisableControlAction(0,29,true)
DisableControlAction(0,38,true)
DisableControlAction(0,47,true)
DisableControlAction(0,56,true)
DisableControlAction(0,57,true)
DisableControlAction(0,73,true)
DisableControlAction(0,137,true)
DisableControlAction(0,166,true)
DisableControlAction(0,167,true)
DisableControlAction(0,169,true)
DisableControlAction(0,170,true)
DisableControlAction(0,182,true)
DisableControlAction(0,187,true)
DisableControlAction(0,188,true)
DisableControlAction(0,189,true)
DisableControlAction(0,190,true)
DisableControlAction(0,243,true)
DisableControlAction(0,245,true)
DisableControlAction(0,257,true)
DisableControlAction(0,288,true)
DisableControlAction(0,289,true)
DisableControlAction(0,311,true)
DisableControlAction(0,344,true)
else
break
end
Wait(4)
end
end)
Write, Run & Share Lua code online using OneCompiler's Lua online compiler for free. It's one of the robust, feature-rich online compilers for Lua language, running the latest Lua version 5.4. Getting started with the OneCompiler's Lua editor is easy and fast. The editor shows sample boilerplate code when you choose language as Lua and start coding.
OneCompiler's Lua online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample Lua program which takes name as input and prints hello message with your name.
name = io.read("*a")
print ("Hello ", name)
Lua is a light weight embeddable scripting language which is built on top of C. It is used in almost all kind of applications like games, web applications, mobile applications, image processing etc. It's a very powerful, fast, easy to learn, open-source scripting language.
-- global variables
a = 10
-- local variables
local x = 30
| Value Type | Description |
|---|---|
| number | Represents numbers |
| string | Represents text |
| nil | Differentiates values whether it has data or not |
| boolean | Value can be either true or false |
| function | Represents a sub-routine |
| userdata | Represents arbitary C data |
| thread | Represents independent threads of execution. |
| table | Can hold any value except nil |
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while(condition)
do
--code
end
Repeat-Until is also used to iterate a set of statements based on a condition. It is very similar to Do-While, it is mostly used when you need to execute the statements atleast once.
repeat
--code
until( condition )
For loop is used to iterate a set of statements based on a condition.
for init,max/min value, increment
do
--code
end
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increase re-usuability and modularity.
optional_function_scope function function_name( argument1, argument2, argument3........, argumentn)
--code
return params with comma seperated
end