[Help] attemp to concatenate a nil value

Hello. I’m working on synchronization for my gang turf wars script and I have a serious problem. I wanted to make blips so every player from the attacking gang and defending gang can see the blips of enemy and friend npcs. This is working so far, but when it comes to syncing when they are dead… here is where the problem starts. Blips are still visible even after npc death. The print("ADDING ATTACKER BLIP WITH: " … pedID) doesn’t even show up in the console and I suppose that blips don’t even add to the table :confused:

client.lua

if turfWarDefenderCount ~= 0 then
          for i, enemy in pairs(turfWarDefenderPeds) do
            if IsPedDeadOrDying(enemy, true) then
              table.insert(turfWarDeadPeds, enemy)
              --RemoveBlip(turfWarDefenderBlips[i])
              TriggerServerEvent('missions:activateTurfWarPedBlips', PlayerData.job.name, false, false, false, turfWarDefenderBlips, i)
              TriggerServerEvent('missions:activateTurfWarPedBlips', currentOwner, true, false, false, turfWarDefenderBlips, i)
              --table.remove(turfWarDefenderBlips, i)
              --table.remove(turfWarDefenderPeds, i)
              --table.insert(turfWarDeadPeds, enemy)
              turfWarDefenderCount = turfWarDefenderCount - 1
              turfWarDefenderPeds[i]  = nil
              turfWarDefenderBlips[i] = nil
              if not turfWarFirstBlood then
                if turfWarWave == 1 then
                  --missionText = "Wave ~y~1/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount
                  TriggerServerEvent('missions:activateMissionText', PlayerData.job.name, "Wave ~y~1/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount)
                  TriggerServerEvent('missions:activateMissionText', currentOwner, "Wave ~y~1/4 ~w~in progress. Friendly gang members alive: ~g~" .. turfWarDefenderCount)
                  turfWarFirstBlood = true
                elseif turfWarWave == 2 then
                  --missionText = "Wave ~y~2/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount
                  TriggerServerEvent('missions:activateMissionText', PlayerData.job.name, "Wave ~y~2/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount)
                  TriggerServerEvent('missions:activateMissionText', currentOwner, "Wave ~y~2/4 ~w~in progress. Friendly gang members alive: ~g~" .. turfWarDefenderCount)
                  turfWarFirstBlood = true
                elseif turfWarWave == 3 then 
                  --missionText = "Wave ~y~3/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount
                  TriggerServerEvent('missions:activateMissionText', PlayerData.job.name, "Wave ~y~3/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount)
                  TriggerServerEvent('missions:activateMissionText', currentOwner, "Wave ~y~3/4 ~w~in progress. Friendly gang members alive: ~g~" .. turfWarDefenderCount)
                  turfWarFirstBlood = true
                elseif turfWarWave == 4 then
                  --missionText = "Wave ~y~4/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount
                  TriggerServerEvent('missions:activateMissionText', PlayerData.job.name, "Wave ~y~4/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount)
                  TriggerServerEvent('missions:activateMissionText', currentOwner, "Wave ~y~4/4 ~w~in progress. Friendly gang members alive: ~g~" .. turfWarDefenderCount)
                  turfWarFirstBlood = true
                end
              else
                if turfWarWave == 1 then
                  --missionText = "Wave ~y~1/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount
                  TriggerServerEvent('missions:activateMissionText', PlayerData.job.name, "Wave ~y~1/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount)
                  TriggerServerEvent('missions:activateMissionText', currentOwner, "Wave ~y~1/4 ~w~in progress. Friendly gang members alive: ~g~" .. turfWarDefenderCount)
                elseif turfWarWave == 2 then
                  --missionText = "Wave ~y~2/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount
                  TriggerServerEvent('missions:activateMissionText', PlayerData.job.name, "Wave ~y~2/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount)
                  TriggerServerEvent('missions:activateMissionText', currentOwner, "Wave ~y~2/4 ~w~in progress. Friendly gang members alive: ~g~" .. turfWarDefenderCount)
                elseif turfWarWave == 3 then
                  --missionText = "Wave ~y~3/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount
                  TriggerServerEvent('missions:activateMissionText', PlayerData.job.name, "Wave ~y~3/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount)
                  TriggerServerEvent('missions:activateMissionText', currentOwner, "Wave ~y~3/4 ~w~in progress. Friendly gang members alive: ~g~" .. turfWarDefenderCount)
                elseif turfWarWave == 4 then
                  --missionText = "Wave ~y~4/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount
                  TriggerServerEvent('missions:activateMissionText', PlayerData.job.name, "Wave ~y~4/4 ~w~in progress. Rival gang members alive: ~r~" .. turfWarDefenderCount)
                  TriggerServerEvent('missions:activateMissionText', currentOwner, "Wave ~y~4/4 ~w~in progress. Friendly gang members alive: ~g~" .. turfWarDefenderCount)
                end
              end
              print("Removed Enemy ID: " .. i)
            end
          end
end
enemiesQuantity = 8
    turfWarDefenderCount = enemiesQuantity
    local pedId = 0
    while enemiesQuantity ~= 0 do
      while not HasModelLoaded(defenderPed.model) do
        RequestModel(defenderPed.model)
        Wait(0)
      end
      local coords  = TurfPoint1Spawnpoints[math.random(#TurfPoint1Spawnpoints)]
      local EnemyPed = CreatePed(defenderPed.type, defenderPed.model, coords.x, coords.y, coords.z, 90, true, true)
      setBehaviour(EnemyPed, defenderRelation, "WEAPON_PISTOL", true, false, false)
      SetPedRandomComponentVariation(EnemyPed, false)
      SetEntityAsMissionEntity(EnemyPed, false, false)
      TaskGoToCoordAndAimAtHatedEntitiesNearCoord(EnemyPed, TurfPoint1Marker.x, TurfPoint1Marker.y, TurfPoint1Marker.z + 1.0, TurfPoint1Marker.x, TurfPoint1Marker.y, TurfPoint1Marker.z, 2.0, true, 20.0, 0.0, true, 0, 1, 1566631136)
      turfWarDefenderPeds[pedId] = EnemyPed
      TriggerServerEvent('missions:activateTurfWarPedBlips', PlayerData.job.name, false, true, false, EnemyPed, pedID)
      TriggerServerEvent('missions:activateTurfWarPedBlips', currentOwner, true, true, false, EnemyPed, pedID)
      enemiesQuantity = enemiesQuantity - 1
      pedId = pedId + 1
    end
RegisterNetEvent("missions:activateTurfWarPedBlips")
AddEventHandler("missions:activateTurfWarPedBlips", function(friendly, bool, attacker, Ped, pedID)
  if bool then
    if attacker then
      if friendly then
        local enemyBlip = AddBlipForEntity(Ped)
        SetBlipSprite(enemyBlip, 1) -- 351 or 408 are both fine, 408 is just bigger
        --SetBlipNameFromTextFile(enemyBlip, "AMD_BLIPN")
        BeginTextCommandSetBlipName("STRING")
        AddTextComponentString("Friend")
        EndTextCommandSetBlipName(enemyBlip)	
        SetBlipScale(enemyBlip, 1.0)
        SetBlipColour(enemyBlip, 2)
        --table.insert(turfWarDefenderBlips, enemyBlip)
        turfWarAttackerBlips[pedId] = enemyBlip
        --SetBlipAlpha(enemyBlip, 120) -- blip will be semi-transparent
        print("ADDING ATTACKER BLIP WITH: " .. pedID)
      else
       local enemyBlip = AddBlipForEntity(Ped)
        SetBlipSprite(enemyBlip, 1) -- 351 or 408 are both fine, 408 is just bigger
        --SetBlipNameFromTextFile(enemyBlip, "AMD_BLIPN")
        BeginTextCommandSetBlipName("STRING")
        AddTextComponentString("Enemy")
        EndTextCommandSetBlipName(enemyBlip)	
        SetBlipScale(enemyBlip, 1.0)
        SetBlipColour(enemyBlip, 2)
        --table.insert(turfWarDefenderBlips, enemyBlip)
        turfWarAttackerBlips[pedId] = enemyBlip
        --SetBlipAlpha(enemyBlip, 120) -- blip will be semi-transparent
        print("ADDING ATTACKER BLIP WITH: " .. pedID)
      end
    else
      if friendly then
        local enemyBlip = AddBlipForEntity(Ped)
        SetBlipSprite(enemyBlip, 1) -- 351 or 408 are both fine, 408 is just bigger
        --SetBlipNameFromTextFile(enemyBlip, "AMD_BLIPN")
        BeginTextCommandSetBlipName("STRING")
        AddTextComponentString("Friend")
        EndTextCommandSetBlipName(enemyBlip)	
        SetBlipScale(enemyBlip, 1.0)
        SetBlipColour(enemyBlip, 2)
        --table.insert(turfWarDefenderBlips, enemyBlip)
        turfWarDefenderBlips[pedId] = enemyBlip
        --SetBlipAlpha(enemyBlip, 120) -- blip will be semi-transparent
        print("ADDING DEFENDER BLIP WITH: " .. pedID)
      else
        local enemyBlip = AddBlipForEntity(Ped)
        SetBlipSprite(enemyBlip, 1) -- 351 or 408 are both fine, 408 is just bigger
        --SetBlipNameFromTextFile(enemyBlip, "AMD_BLIPN")
        BeginTextCommandSetBlipName("STRING")
        AddTextComponentString("Enemy")
        EndTextCommandSetBlipName(enemyBlip)	
        SetBlipScale(enemyBlip, 1.0)
        SetBlipColour(enemyBlip, 1)
        --table.insert(turfWarDefenderBlips, enemyBlip)
        turfWarDefenderBlips[pedId] = enemyBlip
        --SetBlipAlpha(enemyBlip, 120) -- blip will be semi-transparent
        print("ADDING DEFENDER BLIP WITH: " .. pedID)
      end
    end
  else
    if attacker then
      RemoveBlip(turfWarAttackerBlips[pedID])
      print("REMOVING FOR ALL: " .. turfWarAttackerBlips[pedID]) -- LINE 2453
    else
      RemoveBlip(turfWarDefenderBlips[pedId])
      print("REMOVING FOR ALL: " .. turfWarDefenderBlips[pedID]) -- LINE 2456
    end
  end
end)

server.lua

RegisterServerEvent('missions:activateTurfWarPedBlips')
AddEventHandler('missions:activateTurfWarPedBlips', function(forWho, friendly, bool, attacker, Ped, pedid)
  local _source   = source
  local xPlayers  = ESX.GetPlayers()

  if forWho == "none" then
    for i=1, #xPlayers, 1 do
      local xPlayer = ESX.GetPlayerFromId(xPlayers[i])
      TriggerClientEvent('missions:activateTurfWarPedBlips', xPlayers[i], friendly, bool, attacker, Ped, pedid)
    end
  else
    for i=1, #xPlayers, 1 do
      local xPlayer = ESX.GetPlayerFromId(xPlayers[i])
      if xPlayer.job.name == forWho then
        TriggerClientEvent('missions:activateTurfWarPedBlips', xPlayers[i], friendly, bool, attacker, Ped, pedid)
      end
    end
  end
end) 

EDIT1: Okay, adding blips to the list works good now. I just put pedID instead of pedId :unamused:

image%20(7)
:mascot:

1 Like

Yeah I think I have found the problem. It’s working now… probably. Still need to wait for my friend to test it out. Btw I didn’t knew that arrays start at 1 :scream:

Sorry lol, I thought the problem was solved :laughing:

Is the issue still the nil value, or are you getting a new error now?

It’s working properly now, no errors or anything and blips are successfully disseapring when certain NPC is dead but I can’t say for sure because I don’t have anyone to test it with right now. Btw to be honest this picture made me smile :laughing: