首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试调用零值LUA FiveM编码

尝试调用零值LUA FiveM编码
EN

Stack Overflow用户
提问于 2022-07-01 17:24:42
回答 1查看 945关注 0票数 0

我目前正在编写一个特殊的恢复脚本,允许普通玩家在没有EMS的情况下互相恢复。

这是我的"previve-s.lua“(服务器端脚本)中的代码:

代码语言:javascript
复制
ESX=nil
Citizen.CreateThread(function()
    while ESX==nil do
        TriggerEvent('esx:getSharedObject',function(obj) ESX=obj end)
        Citizen.Wait(0)
    end
end)

RegisterCommand("previve", function()
    local ped=GetPlayerPed(-1)
    local playerCoords=GetEntityCoords(ped)
    local cplayer,cdistance=GetClosestPlayer()
    local playerCoords2=GetEntityCoords(ped2)
                    if EmsCount==0 and cdistance<10 and IsPedDeadOrDying(cplayer,1) then
                        TaskStartScenarioInPlace(ped,'CODE_HUMAN_MEDIC_TEND_TO_DEAD',0,true)
                        Citizen.Wait(7000)
                        TriggerClientEvent("revive",ped2)
                        ClearPedTasks(ped) 
                   
                    elseif EmsCount>0 then
                        Notif("There are EMS on! You cannot revive this player. Contact EMS for help!")
                    
                    elseif cdistance>10 and IsPedDeadOrDying(cplayer,1) then
                        Notif("Get closer to the player.")
                   
                    elseif not IsPedDeadOrDying(cplayer,1) then
                       Notif("The player isn't dead! Why are you even trying?")
                    end
    end)


RegisterNetEvent("revive")
AddEventHandler("revive", function(k)
    local plyCoords = GetEntityCoords(k)
    ResurrectPed(k)
    ClearPedBloodDamage(k)
    SetEntityHealth(k, 200)
    ClearPedTasksImmediately(k)
    SetEntityCoords(k, plyCoords.x, plyCoords.y, plyCoords.z + 1.0, 0, 0, 0, 0)
end)

function GetClosestPlayer()
    local players = GetPlayers()
    local closestDistance = -1
    local closestPlayer = -1
    local ply = GetPlayerPed(-1)
    local plyCoords = GetEntityCoords(ply, 0)

    for index,value in ipairs(players) do
        local target = GetPlayerPed(value)
        if(target ~= ply) then
            local targetCoords = GetEntityCoords(target, 0)
            local distance = Vdist(targetCoords.x,targetCoords.y,targetCoords.z,plyCoords.x,plyCoords.y,plyCoords.z)
            if(closestDistance == -1 or closestDistance > distance) then
                closestPlayer = value
                closestDistance = distance
            end
        end
    end

    return closestPlayer, closestDistance
end

这是我在“previve-c.lua”中的代码:

代码语言:javascript
复制
function Notif(msg)
    SetNotificationTextEntry("STRING")
    AddTextComponentString(msg)
    DrawNotification(true, false)   
end

Citizen.CreateThread(function()
    EmsCount=0
    for _, player in ipairs(GetActivePlayers()) do
        Citizen.Wait(5)
        local ped1 = GetPlayerPed(player)
        if ped1.job.name=='ambulance' then
            EmsCount=EmsCount+1
        end
    end
    return EmsCount
end)

当我尝试"/previve“时,从控制台得到的错误是:

脚本:previve脚本错误:@previve/server/previve-s.lua:53:尝试调用一个零值(全局'Vdist')脚本:previve> GetClosestPlayer (@previve/server/previve-s.lua:53)

脚本:previve> ref (@previve/server/previve-s.lua:12)

EN

回答 1

Stack Overflow用户

发布于 2022-07-01 20:10:39

我不是FiveM方面的专家,但是根据文档,服务器API中没有Vdist函数。这是客户端API中的一个函数

https://docs.fivem.net/natives/?_0x2A488C176D52CCA5

在第53行中,您试图调用一个应该是Vdist的零值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72832754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档