Need help/troubleshooting with my standalone NPC doctor script

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)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.