Jump to content

[HELP] Script PNJ


Furious^ONE!

Recommended Posts

Hello , I encountered a bug with my script, but I can not have the resourare you could help me, I have the error console shows me

CODE :

Server.lua

function isMyPingTheLowest() 
    local players = getElementsByType("player") 
    local yes = true 
    for i, player in ipairs(players) do 
        if getPlayerPing(getLocalPlayer()) > getPlayerPing(player) then 
            yes = false 
        end 
    end 
    if yes == true then 
        return true 
    else 
        return false 
    end 
end 
  
function findRotation(x1,y1,x2,y2) 
    local t = -math.deg(math.atan2(x2-x1,y2-y1)) 
    if t < 0 then t = t + 360 end 
    return t 
end 
  
addEventHandler("onClientPedDamage", getRootElement(), 
     function(attacker) 
        if getElementData(source, "type") == "ped.sniper.npc" and getElementData(attacker, "type") == "ped.sniper.npc" then 
            cancelEvent() 
        end 
    end 
) 
  
setTimer( 
    function() 
        if isMyPingTheLowest() then 
            for i, peds in ipairs(getElementsByType("ped")) do 
                if getElementData(peds, "type") == "ped.sniper.npc" and getElementHealth(peds) > 0 then 
                    local x, y, z = getElementPosition(peds) 
                    local lowest = 9999 
                    local player = nil 
                    for i, players in ipairs(getElementsByType("player")) do 
                        local px, py, pz = getElementPosition(players) 
                        local dist = getDistanceBetweenPoints3D(x, y, z, px, py, pz) 
                        if dist < lowest and not getElementData( source, "isPro Drift" ) then 
                            lowest = dist 
                            player = players 
                        end 
                    end 
                    if isElement(player) then 
                        triggerServerEvent("sniperTakeDecision", getRootElement(), peds, player) 
                    end 
                end 
            end 
        end 
    end 
, 1500, 0) 
  
addEvent("sniperTakeDecisionClient", true) 
addEventHandler("sniperTakeDecisionClient", getRootElement(), 
    function(sniperPedID, aimPlayer) 
        local x, y, z = getElementPosition(sniperPedID) 
        local px, py, pz = getElementPosition(aimPlayer) 
        setPedAimTarget(sniperPedID, px, py, pz) 
        local rotZ = findRotation(x, y, px, py) 
        setPedRotation(sniperPedID, rotZ) 
        setPedControlState(sniperPedID, "aim_weapon", true) 
        setPedControlState(sniperPedID, "fire", true) 
        setTimer( 
            function() 
                if isElement(sniperPedID) then 
                    setPedControlState(sniperPedID, "fire", false) 
                    setPedControlState(sniperPedID, "aim_weapon", false) 
                end 
            end 
        , 500, 1) 
    end 
) 

Client.lua

addEventHandler( "onPlayerJoin", root, 
    function () 
        local accName = getAccountName( getPlayerAccount( source ) ) 
        if isObjectInACLGroup( "user."..accName, aclGetGroup ( "Pro Drift" ) ) then 
            setElementData( source, "isPro Drift", true ) 
        end 
    end 
) 
  
addEvent("sniperTakeDecision", true) 
addCommandHandler("sniper", 
    function(thePlayer, command) 
        local x, y, z = getElementPosition(thePlayer) 
        local int = getElementInterior(thePlayer) 
        local ped = createSniperPed(x, y, z) 
        setElementInterior(ped, int) 
    end 
) 
setTimer( 
    function() 
        for i, peds in ipairs(getElementsByType("ped")) do 
            if getElementData(peds, "type") == "ped.sniper.npc" and getElementHealth(peds) > 0 then 
                setPedWeaponSlot(peds, 6) 
                giveWeapon(peds, 24, 10000, true) 
            end 
        end 
    end 
, 50, 0) 
function createSniperPed(x, y, z) 
    local ped = createPed(120, x, y, z) 
    setTimer( 
        function() 
            if isElement(ped) then 
                giveWeapon(ped, 24, 10000, true) 
                setPedWeaponSlot(ped, 6) 
                setElementData(ped, "type", "ped.sniper.npc") 
                setElementFrozen(ped, true) 
            end 
        end 
    , 5000, 1) 
    return ped 
end 
addEventHandler("sniperTakeDecision", getRootElement(), 
    function(sniperPedID, aimPlayer) 
        setElementData(sniperPedID, "target", aimPlayer) 
        triggerClientEvent("sniperTakeDecisionClient", getRootElement(), sniperPedID, aimPlayer) 
    end 
) 

the error is here :

[2013-12-23 18:26:47] ERROR: PNJ/server.lua:5: attempt to call global 'getLocalPlayer' (a nil value)

Please help me

Link to comment
You are trying to call function
getLocalPlayer() 

serverside, but this function exists only clientside. Is it your code?

I tried what you said but it still makes me the error.

[2013-12-23 18:51:33] Starting PNJ

[2013-12-23 18:51:33] SCRIPT ERROR: PNJ/server.lua:5: ')' expected near 'then'

[2013-12-23 18:51:33] ERROR: Loading script failed: PNJ/server.lua:5: ')' expected near 'then'

Link to comment

What exactly did you change? And have you done what Sasuke said? The "server.lua" file should be clientside and "client.lua" should be serverside. You can fix that in your "meta.xml" file, where you have to change "server.lua" to be clientside and "client.lua" to be serverside, or simply rename the files, so "server.lua" becomes "client.lua" and vice versa.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...