123 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| 
 | |
| local pluginData = {
 | |
|     name = "test_plugin",
 | |
|     description = "NPC Heal",
 | |
|     author = "test",
 | |
|     version = "1.2"
 | |
| }
 | |
| 
 | |
| RegisterClientPlugin(pluginData, function(print)
 | |
|     print("plugin_npcheal_client.lua loaded")
 | |
| end)
 | |
| ESX = nil
 | |
| Citizen.CreateThread(function()
 | |
| 	while ESX == nil do
 | |
| 		TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
 | |
| 		Citizen.Wait(0)
 | |
| 	end
 | |
| end)	
 | |
| 	
 | |
| local NPCPosition = {x = 307.19, y = -584.26, z= 43.28 , rot = 88.88 }
 | |
| 
 | |
| local isNearPed = false
 | |
| local isAtPed = false
 | |
| local isPedLoaded = false
 | |
| local pedModel = GetHashKey("s_m_m_doctor_01")
 | |
| local npc
 | |
| local reviveTime = 15000 --in MS Wie lange braucht der NPC zum Wiederbeleben (für Progressbar)
 | |
| local doctor = 0 --Wieviele Medics Dürfen maximal online sein um NPC Doctor zu benutzen 
 | |
| 
 | |
| local price = 2000 --muss gleich sein wie in plugin_npcheal_server.lua Zeile 14
 | |
| Citizen.CreateThread(function()
 | |
|     while true do
 | |
| 	
 | |
| 	local playerPed = PlayerPedId()
 | |
| 	local playerCoords = GetEntityCoords(playerPed)
 | |
| 	local distance = Vdist(playerCoords,NPCPosition.x,NPCPosition.y,NPCPosition.z)
 | |
| 	isNearPed = false
 | |
| 	isAtPed = false
 | |
| 	
 | |
| 	if distance < 20.0 then
 | |
| 	isNearPed = true
 | |
| 	if not isPedLoaded then
 | |
| 		RequestModel(pedModel)
 | |
| 		while not HasModelLoaded(pedModel) do
 | |
| 			Wait(10)
 | |
| 		end
 | |
| 
 | |
|  		npc = CreatePed(4, pedModel, NPCPosition.x, NPCPosition.y, NPCPosition.z - 1.0, NPCPosition.rot, false, false)
 | |
| 		FreezeEntityPosition(npc, true)
 | |
| 		SetEntityHeading(npc, NPCPosition.rot)
 | |
| 		SetEntityInvincible(npc, true)
 | |
| 		SetBlockingOfNonTemporaryEvents(npc, true)
 | |
| 
 | |
| 		isPedLoaded = true
 | |
| 	
 | |
| 			end
 | |
| 		end
 | |
| 	
 | |
| 		if distance < 2.0 then
 | |
| 			isAtPed = true
 | |
| 		end
 | |
| 	Citizen.Wait(500)
 | |
| 	end
 | |
| end)
 | |
| 
 | |
| 
 | |
| Citizen.CreateThread(function()
 | |
| 	while true do
 | |
| 		if isAtPed then
 | |
| 			showInfobar('Drücke ~g~E~s~, um für ' .. price ..' $ eine Behandlung zu Erhalten')
 | |
| 			if IsControlJustReleased(0, 38) then
 | |
| 				if not isBusy then	
 | |
| 					isBusy = true
 | |
| 					ESX.TriggerServerCallback('visn_are:docOnline', function(medicOn, hasEnoughMoney)
 | |
| 						if medicOn <= doctor and hasEnoughMoney then
 | |
| 							exports['progressBars']:startUI(reviveTime, "Der Notarzt behandelt dich") --Lösche oder ändere auf deine Progressbar
 | |
| 							Wait(reviveTime) --Für Progressbar, falls kein Progressbar erwünscht lösche auch diese zeile					
 | |
| 							TriggerServerEvent('visn_are:charge')
 | |
| 							TriggerEvent("visn_are:resetHealthBuffer")
 | |
| 							SetEntityHealth(GetPlayerPed(-1), 200)
 | |
| 							ShowNotification('Du Bezahlst ' .. price ..' $ für die behandlung')
 | |
| 							isBusy = false
 | |
| 						elseif medicOn > doctor then
 | |
| 							ShowNotification("Zuviele Medics im Dienst, rufe einen!")
 | |
| 							isBusy = false
 | |
| 						elseif not hasEnoughMoney then
 | |
| 							ShowNotification("Du hast nicht genug Geld für die Behandlung")
 | |
| 							isBusy = false
 | |
| 						end			
 | |
| 					end)
 | |
| 				else	
 | |
| 					ShowNotification("Du wirst schon behandelt")	
 | |
| 				end
 | |
| 			end	
 | |
| 		end	
 | |
| 	Citizen.Wait(1)
 | |
| 	end
 | |
| end)
 | |
| 
 | |
| function ShowNotification(text)
 | |
|  SetNotificationTextEntry('STRING')
 | |
|     AddTextComponentString(text)
 | |
|  DrawNotification(false, true)
 | |
| end
 | |
| 
 | |
| function showInfobar(msg)
 | |
| 
 | |
|  CurrentActionMsg  = msg
 | |
|  SetTextComponentFormat('STRING')
 | |
|  AddTextComponentString(CurrentActionMsg)
 | |
|  DisplayHelpTextFromStringLabel(0, 0, 1, -1)
 | |
| 
 | |
| end	
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | 
