local deadAnimDict = "dead" local deadAnim = "dead_a" local hold = 5 deathTime = 0 -- Functions local function loadAnimDict(dict) while (not HasAnimDictLoaded(dict)) do RequestAnimDict(dict) Wait(5) end end function OnDeath() if not isDead then isDead = true TriggerServerEvent("hospital:server:SetDeathStatus", true) -- exports['0r-gps']:checkPlayerDeath() local player = PlayerPedId() if isDead then local pos = GetEntityCoords(player) local heading = GetEntityHeading(player) local ped = PlayerPedId() if IsPedInAnyVehicle(ped) then local veh = GetVehiclePedIsIn(ped) local vehseats = GetVehicleModelNumberOfSeats(GetHashKey(GetEntityModel(veh))) for i = -1, vehseats do local occupant = GetPedInVehicleSeat(veh, i) if occupant == ped then NetworkResurrectLocalPlayer(pos.x, pos.y, pos.z + 0.5, heading, true, false) SetPedIntoVehicle(ped, veh, i) end end else NetworkResurrectLocalPlayer(pos.x, pos.y, pos.z + 0.5, heading, true, false) end SetEntityInvincible(player, true) SetEntityHealth(player, GetEntityMaxHealth(player)) if IsPedInAnyVehicle(player, false) then loadAnimDict("veh@low@front_ps@idle_duck") TaskPlayAnim(player, "veh@low@front_ps@idle_duck", "sit", 1.0, 1.0, -1, 1, 0, 0, 0, 0) else loadAnimDict(deadAnimDict) TaskPlayAnim(player, deadAnimDict, deadAnim, 1.0, 1.0, -1, 1, 0, 0, 0, 0) end TriggerServerEvent('hospital:server:ambulanceAlert', Lang:t('info.civ_died')) end end end function DeathTimer() hold = 5 while isDead do Wait(1000) deathTime = deathTime - 1 if deathTime <= 0 then if IsControlPressed(0, 38) and hold <= 0 and not isInHospitalBed then TriggerEvent("hospital:client:RespawnAtHospital") hold = 5 end if IsControlPressed(0, 38) then if hold - 1 >= 0 then hold = hold - 1 else hold = 0 end end if IsControlReleased(0, 38) then hold = 5 end end end end local function DrawTxt(x, y, width, height, scale, text, r, g, b, a, _) SetTextFont(4) SetTextProportional(0) SetTextScale(scale, scale) SetTextColour(r, g, b, a) SetTextDropShadow(0, 0, 0, 0,255) SetTextEdge(2, 0, 0, 0, 255) SetTextDropShadow() SetTextOutline() SetTextEntry("STRING") AddTextComponentString(text) DrawText(x - width/2, y - height/2 + 0.005) end -- Damage Handler AddEventHandler('gameEventTriggered', function(event, data) if event == "CEventNetworkEntityDamage" then local victim, attacker, victimDied, weapon = data[1], data[2], data[4], data[7] if not IsEntityAPed(victim) then return end if victimDied and NetworkGetPlayerIndexFromPed(victim) == PlayerId() and IsEntityDead(PlayerPedId()) then if not InLaststand then SetLaststand(true) elseif InLaststand and not isDead then SetLaststand(false) local playerid = NetworkGetPlayerIndexFromPed(victim) local playerName = GetPlayerName(playerid) .. " " .. "("..GetPlayerServerId(playerid)..")" or Lang:t('info.self_death') local killerId = NetworkGetPlayerIndexFromPed(attacker) local killerName = GetPlayerName(killerId) .. " " .. "("..GetPlayerServerId(killerId)..")" or Lang:t('info.self_death') local weaponLabel = QBCore.Shared.Weapons[weapon].label or 'Unknown' local weaponName = QBCore.Shared.Weapons[weapon].name or 'Unknown' TriggerServerEvent("qb-log:server:CreateLog", "death", Lang:t('logs.death_log_title', {playername = playerName, playerid = GetPlayerServerId(playerid)}), "red", Lang:t('logs.death_log_message', {killername = killerName, playername = playerName, weaponlabel = weaponLabel, weaponname = weaponName})) deathTime = Config.DeathTime OnDeath() -- print('salammm') -- exports['0r-gps']:checkPlayerDeath() DeathTimer() end end end end) -- Threads emsNotified = false CreateThread(function() while true do sleep = 1000 if isDead or InLaststand then sleep = 7 local ped = PlayerPedId() DisableAllControlActions(0) EnableControlAction(0, 1, true) EnableControlAction(0, 2, true) EnableControlAction(0, 245, true) EnableControlAction(0, 38, true) EnableControlAction(0, 0, true) EnableControlAction(0, 322, true) EnableControlAction(0, 288, true) EnableControlAction(0, 213, true) EnableControlAction(0, 249, true) EnableControlAction(0, 46, true) EnableControlAction(0, 47, true) if isDead then -- exports['0r-gps']:checkPlayerDeath() if not isInHospitalBed then if deathTime > 0 then DrawTxt(0.838, 1.45, 1.0, 1.0, 0.5, "YENİDEN DOĞMAK İÇİN: ~r~" .. math.ceil(deathTime) .. "~w~ SANİYE, YARDIM ÇAĞIRMAK İÇİN (G) TUŞUNA BAS", 255, 255, 255, 255) else DrawTxt(0.838, 1.45, 1.0, 1.0, 0.6, "~w~ YENİDEN DOĞMAK İÇİN ~r~[E] TUŞUNA BASILI TUT ("..hold..")~w~ ~r~($"..Config.BillCost..")~w~", 255, 255, 255, 255) end end if IsPedInAnyVehicle(ped, false) then loadAnimDict("veh@low@front_ps@idle_duck") if not IsEntityPlayingAnim(ped, "veh@low@front_ps@idle_duck", "sit", 3) then TaskPlayAnim(ped, "veh@low@front_ps@idle_duck", "sit", 1.0, 1.0, -1, 1, 0, 0, 0, 0) end else if isInHospitalBed then if not IsEntityPlayingAnim(ped, inBedDict, inBedAnim, 3) then loadAnimDict(inBedDict) TaskPlayAnim(ped, inBedDict, inBedAnim, 1.0, 1.0, -1, 1, 0, 0, 0, 0) end else if not IsEntityPlayingAnim(ped, deadAnimDict, deadAnim, 3) then loadAnimDict(deadAnimDict) TaskPlayAnim(ped, deadAnimDict, deadAnim, 1.0, 1.0, -1, 1, 0, 0, 0, 0) end end end SetCurrentPedWeapon(ped, `WEAPON_UNARMED`, true) elseif InLaststand then sleep = 5 if LaststandTime > Config.MinimumRevive then DrawTxt(0.94, 1.44, 1.0, 1.0, 0.6, Lang:t('info.bleed_out', {time = math.ceil(LaststandTime)}), 255, 255, 255, 255) else DrawTxt(0.845, 1.44, 1.0, 1.0, 0.6, Lang:t('info.bleed_out_help', {time = math.ceil(LaststandTime)}), 255, 255, 255, 255) if not emsNotified then DrawTxt(0.91, 1.40, 1.0, 1.0, 0.6, Lang:t('info.request_help'), 255, 255, 255, 255) else DrawTxt(0.90, 1.40, 1.0, 1.0, 0.6, Lang:t('info.help_requested'), 255, 255, 255, 255) end if IsControlJustPressed(0, 47) and not emsNotified then TriggerServerEvent('hospital:server:ambulanceAlert', Lang:t('info.civ_down')) emsNotified = true end end if not isEscorted then if IsPedInAnyVehicle(ped, false) then loadAnimDict("veh@low@front_ps@idle_duck") if not IsEntityPlayingAnim(ped, "veh@low@front_ps@idle_duck", "sit", 3) then TaskPlayAnim(ped, "veh@low@front_ps@idle_duck", "sit", 1.0, 1.0, -1, 1, 0, 0, 0, 0) end else loadAnimDict(lastStandDict) if not IsEntityPlayingAnim(ped, lastStandDict, lastStandAnim, 3) then TaskPlayAnim(ped, lastStandDict, lastStandAnim, 1.0, 1.0, -1, 1, 0, 0, 0, 0) end end else if IsPedInAnyVehicle(ped, false) then loadAnimDict("veh@low@front_ps@idle_duck") if IsEntityPlayingAnim(ped, "veh@low@front_ps@idle_duck", "sit", 3) then StopAnimTask(ped, "veh@low@front_ps@idle_duck", "sit", 3) end else loadAnimDict(lastStandDict) if IsEntityPlayingAnim(ped, lastStandDict, lastStandAnim, 3) then StopAnimTask(ped, lastStandDict, lastStandAnim, 3) end end end end end Wait(sleep) end end) exports('isDead', function() return isDead end) exports('InLaststand', function() return InLaststand end)