forked from Simnation/Main
102 lines
No EOL
2.8 KiB
Lua
102 lines
No EOL
2.8 KiB
Lua
-- [[Register Plugin Data]]
|
|
local pluginData = {
|
|
name = "Official NPC Revive Plugin",
|
|
description = "This plugin allows you to call an NPC with a command to revive you.",
|
|
author = "Simsonfanatiker",
|
|
version = "1.0.0 [29.03.2023]"
|
|
}
|
|
|
|
-- Information: I have currently decided not to query whether medics are online or not. But this may come soon
|
|
|
|
-------------------------------------------------------------------------------
|
|
--[[ Config Options ]]
|
|
|
|
|
|
local command = "npcrevive"
|
|
local modelname = "s_m_m_doctor_01"
|
|
local time = 15000 -- in ms (15000ms --> 15s ) [s * 1000 = ms ]
|
|
local text = "Du wurdest behandelt"
|
|
local text2 = "Du bist nicht bewusstlos"
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
-- [[Register Client Plguin]]
|
|
RegisterClientPlugin(pluginData, function(print)
|
|
print("plugin_revive_client.lua loaded")
|
|
end)
|
|
|
|
-- [[Set Basic Values]]
|
|
local isUnconscious = false
|
|
|
|
|
|
-- [[Some Animation Things]]
|
|
function loadAnimDict(dict)
|
|
while (not HasAnimDictLoaded(dict)) do
|
|
RequestAnimDict(dict)
|
|
Citizen.Wait(0)
|
|
end
|
|
end
|
|
|
|
-- [[Spawn Medic NPC]]
|
|
function SpawnNPC(playerPed, playerCoords, Medic)
|
|
loadAnimDict("mini@cpr@char_a@cpr_str")
|
|
|
|
while not HasAnimDictLoaded("mini@cpr@char_a@cpr_str") do
|
|
Citizen.Wait(0)
|
|
end
|
|
|
|
local spawnHeading = GetEntityHeading(playerPed)
|
|
|
|
MedicPed = CreatePed(4, Medic, playerCoords.x, playerCoords.y, playerCoords.z, spawnHeading, true, false)
|
|
|
|
TaskPlayAnim(MedicPed, "mini@cpr@char_a@cpr_str","cpr_pumpchest",1.0, 1.0, -1, 9, 1.0, 0, 0, 0)
|
|
end
|
|
|
|
|
|
-- [[Revive Player Function]]
|
|
function revivePlayer(source)
|
|
local playerPed = PlayerPedId()
|
|
local playerCoords = GetEntityCoords(playerPed)
|
|
local MedicPeded = {model = modelname, colour = 111}
|
|
local reviveTime = time
|
|
|
|
local Medic = GetHashKey(MedicPeded.model)
|
|
RequestModel(Medic)
|
|
|
|
while not HasModelLoaded(Medic) do
|
|
RequestModel(Medic)
|
|
Citizen.Wait(0)
|
|
end
|
|
|
|
SpawnNPC(playerPed, playerCoords, Medic)
|
|
|
|
ClearPedTasksImmediately(playerPed)
|
|
|
|
Citizen.Wait(reviveTime)
|
|
|
|
TriggerEvent('visn_are:resetHealthBuffer', source)
|
|
|
|
ClearPedTasksImmediately(MedicPed)
|
|
DeletePed(MedicPed)
|
|
Wait(5000)
|
|
ShowNotification(text)
|
|
end
|
|
|
|
--[[RegisterCommand]]
|
|
RegisterCommand(command, function(source, rawCommand)
|
|
isUnconscious = exports['visn_are']:GetHealthBuffer().unconscious
|
|
print(isUnconscious)
|
|
if isUnconscious then
|
|
revivePlayer(source)
|
|
else
|
|
ShowNotification(text2)
|
|
end
|
|
end)
|
|
|
|
-- [[Show Notification Function]]
|
|
function ShowNotification(text)
|
|
SetNotificationTextEntry('STRING')
|
|
AddTextComponentString(text)
|
|
DrawNotification(false, true)
|
|
end |