Hi wanted to create a script today where you can heal yourself on an NPC Doctor with the key. Everything works, the doctor spawns a message comes, but I don’t like it so much, only the healing doesn’t work, so I don’t get healed when I press e
Here is my script
fxmanifest.lua:
fx_version 'cerulean'
game 'gta5'
author 'Goldenwhisker'
description 'Standalone Heal NPC'
version '1.0.0'
client_script 'client.lua'
server_script 'server.lua'
client.lua:
-- Erstelle eine spezielle Gruppen-ID für die Ärzte
local doctorGroup = GetHashKey("DOCTOR_GROUP")
-- Definiere den Bereich, in dem der Spieler mit dem Arzt interagieren kann
local interactDistance = 3.0 -- Ändern Sie diesen Wert nach Bedarf
-- Liste der Koordinaten und Ausrichtungen, an denen die Benachrichtigung angezeigt werden soll
local doctorPositions = {
{ coords = vector3(-680.3245, 327.1805, 82.0832), heading = 0.0 },
{ coords = vector3(-675.9501, 324.3133, 82.0832), heading = 0.0 },
{ coords = vector3(-720.3245, 327.1805, 82.0832), heading = 0.0 }
}
-- Funktion zum Überprüfen, ob der Spieler in der Nähe eines der NPCs ist
function IsPlayerNearAnyNPCs(npcs, distance)
local playerPed = PlayerPedId()
local playerCoords = GetEntityCoords(playerPed)
for _, npc in ipairs(npcs) do
local distanceToNPC = #(playerCoords - npc.coords)
if distanceToNPC <= distance then
return true
end
end
return false
end
-- Funktion zum Anzeigen einer Benachrichtigung
function ShowNotification(text)
SetNotificationTextEntry('STRING')
AddTextComponentString(text)
DrawNotification(true, false)
end
-- Eventhandler für die Tastatureingabe
AddEventHandler('onClientKeyDown', function(key)
if key == 38 then -- Taste "E" gedrückt
local playerPed = PlayerPedId()
local playerCoords = GetEntityCoords(playerPed)
for _, npc in ipairs(doctorPositions) do
local distanceToNPC = #(playerCoords - npc.coords)
if distanceToNPC <= interactDistance then
-- Spieler ist in der Nähe eines NPCs, der die Heilung durchführen kann
TriggerServerEvent('healPlayer') -- Sende eine Heilanfrage an den Server
return -- Beende die Schleife, da wir bereits in der Nähe eines NPCs sind
end
end
end
end)
-- Eventhandler für das Heilen des Spielers
RegisterNetEvent('healPlayer')
AddEventHandler('healPlayer', function()
-- Führe hier visuelle Effekte oder andere lokale Operationen für die Heilung aus
SetEntityHealth(PlayerPedId(), 200) -- Setzt die Gesundheit auf 200
end)
-- Funktion zum Spawnen eines NPCs
function SpawnNPCs(npcs)
for _, npc in ipairs(npcs) do
local model = "s_m_m_doctor_01"
RequestModel(model)
while not HasModelLoaded(model) do
Wait(500)
end
local ped = CreatePed(4, model, npc.coords.x, npc.coords.y, npc.coords.z, npc.heading, true, false)
SetPedAsGroupMember(ped, doctorGroup)
SetEntityInvincible(ped, true)
FreezeEntityPosition(ped, true)
SetBlockingOfNonTemporaryEvents(ped, true)
TaskStartScenarioInPlace(ped, "WORLD_HUMAN_CLIPBOARD", 0, true)
SetPedFleeAttributes(ped, 0, 0)
SetPedCombatAttributes(ped, 46, true)
SetPedCombatAttributes(ped, 5, true)
SetPedCombatAttributes(ped, 17, true)
SetPedSeeingRange(ped, 0.0)
SetPedHearingRange(ped, 0.0)
SetPedAlertness(ped, 0)
SetPedKeepTask(ped, true)
SetModelAsNoLongerNeeded(model)
end
end
-- Beim Ressourcenstart werden die NPCs gespawnt
AddEventHandler('onClientResourceStart', function(resourceName)
if GetCurrentResourceName() ~= resourceName then
return
end
SpawnNPCs(doctorPositions)
end)
-- Überprüfung, ob der Spieler in der Nähe eines der NPCs ist und Anzeige der Benachrichtigung
Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
if IsPlayerNearAnyNPCs(doctorPositions, interactDistance) then
ShowNotification("Drücke ~g~E~w~, um dich zu heilen.")
Citizen.Wait(500) -- Verhindert, dass die Benachrichtigung wiederholt wird, solange der Spieler in der Nähe bleibt
end
end
end)
server.lua:
-- Eventhandler für die Heilung des Spielers
RegisterNetEvent('healPlayer')
AddEventHandler('healPlayer', function()
-- Führe hier die Heilungslogik aus
local player = source -- Spieler, der die Heilungsanfrage gesendet hat
-- Setze die Gesundheit des Spielers auf den gewünschten Wert
SetEntityHealth(player, 200) -- Hier kannst du die gewünschte Gesundheit einstellen
end)