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 | 
