[ERROR] expected near ')'

So, I have been working on a menu for a while and one of my menus are not working. I keep on getting the same exact error “[ERROR] expected near ‘)’ 1. unknown - lua/nlrstuff.lua:0”, but I don’t know WHERE exactly the error is! I’ve tried everything! This is the script right here:



if SERVER then
  
  AddCSLuaFile()

  util.AddNetworkString("CraftingMenu")
  
  hook.Add("PlayerSay", "Crafting", function ( ply ) 
      
      net.Start( "CraftingMenu" )
      net.Send( ply )
        
  end )

  concommand.Add( "CraftWeapon", function( ply, cmd, args, argStr ) --Metal Shard + ShardList( args[1] )

      if ( ShardList[args[2] <= CurrentPlayerShards ) then --If the amount of shards needed is less than or equal too the current amount, then give the weapon
        
        ply:Give( WeaponList[ tonumber( args[1] ) ] )
        
      else
        
        print("You do not have enough shards!")
        
      end
        
  end )
  
elseif CLIENT then

  -----------------------------------------------------------
  --Weapons List config, config to your will, my friend!-----
  -----------------------------------------------------------

  local WeaponList = {}

  WeaponList[1] = "m9k_intervention" --Intervention   
  WeaponList[2] = "m9k_dbarrel" --Double Barrel Shotgun
  WeaponList[3] = "m9k_browningauto5" --Browning Auto 5
  WeaponList[4] = "m9k_m60" --M60
  WeaponList[5] = "m9k_val" --AS Val
  WeaponList[6] = "m9k_m16a4_acog" --M16A4 ACOG
  WeaponList[7] = "m9k_famas" --Famas
  WeaponList[8] = "m9k_ak47" --Ak-47
  WeaponList[9] = "m9k_winchester73" --Winchester-73
  WeaponList[10] = "m9k_m4a1" --M4A1
  WeaponList[11] = "m9k_glock" --Glock
  WeaponList[12] = "m9k_deagle" --Deagle
  WeaponList[13] = "m9k_ragingbull" --Raging Bull

  -----------------------------------------------------------
  -----------------------------------------------------------
  -----------------------------------------------------------

  -----------------------------------------------------------
  --# o/ Shard List config, config to your will, my friend!--
  -----------------------------------------------------------

  local ShardList = {}

  ShardList[1] = 5 --Intervention   
  ShardList[2] = 4 --Double Barrel Shotgun
  ShardList[3] = 3 --Browning Auto 5
  ShardList[4] = 6 --M60
  ShardList[5] = 2 --AS Val
  ShardList[6] = 2 --M16A4 ACOG
  ShardList[7] = 2 --Famas
  ShardList[8] = 3 --Ak-47
  ShardList[9] = 4 --Winchester-73
  ShardList[10] = 2 --M4A1
  ShardList[11] = 1 --Glock
  ShardList[12] = 2 --Deagle
  ShardList[13] = 2 --Raging Bull

  -----------------------------------------------------------
  -----------------------------------------------------------
  -----------------------------------------------------------


  
  local blurmat = Material( "pp/blurscreen" )
  local function LayerBlur( panel, layers, density, alpha )

      local x, y = panel:LocalToScreen(0, 0)

      surface.SetDrawColor( 255, 255, 255, alpha )
      surface.SetMaterial( blurmat )

      for i = 1, 3 do

          blurmat:SetFloat( "$blur", ( i / layers ) * density )
          blurmat:Recompute()

          render.UpdateScreenEffectTexture()
          surface.DrawTexturedRect( -x, -y, ScrW(), ScrH() )

      end

  end
  
  local DermaBG = vgui.Create( "DFrame" )
  DermaBG:SetSize( ScrW(), ScrH() )
  DermaBG:SetPos( 0, 0 )
  DermaBG:SetTitle( "" )
  DermaBG:SetDraggable( false )
  DermaBG:MakePopup()
  DermaBG:Hide()
  DermaBG:ShowCloseButton( false )
  function DermaBG:Paint( w, h )
    LayerBlur( self, 10, 20, 255 )
  end
  
  local DermaPanel = vgui.Create( "DFrame", DermaBG )
  DermaPanel:SetSize( ScrW()*0.70, ScrH()*0.70 )
  DermaPanel:SetPos( ScrW()/2 - DermaPanel:GetWide()/2, ScrH()/2 - DermaPanel:GetTall()/2 )
  DermaPanel:SetTitle( "Craftable Weapons" )
  DermaPanel:SetDraggable( false )
  DermaPanel:MakePopup()
  DermaPanel:ShowCloseButton( false )

  local function HidePanel()
    
    surface.PlaySound( "garrysmod/balloon_pop_cute.wav" )
    DermaBG:Hide()
      
  end
  
  local function ShowPanel()
  
    surface.PlaySound( "garrysmod/balloon_pop_cute.wav" )
    DermaBG:Show()
  
  end
  
  local DButton = vgui.Create( "DButton", DermaPanel)
  DButton:SetPos( 0, 0 )
  DButton:SetText( "Close" )
  DButton:SetSize( DermaPanel:GetWide(), DermaPanel:GetTall()*0.03 )
  DButton.DoClick = function() HidePanel() end
  
  local AppList = vgui.Create( "DListView", DermaPanel )
  AppList:SetSize(DermaPanel:GetWide(), DermaPanel:GetTall()*0.97)
  AppList:SetPos( 0, DermaPanel:GetTall()*0.03)
  AppList:SetMultiSelect( false )
  AppList:AddColumn( "Weapons" )
  
  AppList:AddLine("Intervention")
  AppList:AddLine("Double Barrel Shotgun")
  AppList:AddLine("Browning Auto 5")
  AppList:AddLine("M60")
  AppList:AddLine("AS Val")
  AppList:AddLine("M16A4 ACOG")
  AppList:AddLine("Famas")
  AppList:AddLine("Ak-47")
  AppList:AddLine("Winchester-73")
  AppList:AddLine("M4A1")
  AppList:AddLine("Glock")
  AppList:AddLine("Deagle")
  AppList:AddLine("Raging Bull")
  
    function AppList:DoDoubleClick( lineID, line ) -- lineID = the line you doubleclick on

    surface.PlaySound( "phx/hmetal3.wav" )
    LocalPlayer():ConCommand( "CraftWeapon " .. lineID )
    LocalPlayer():removePocketItem( ShardList( args[1] ) )

  AppList:AddColumn( "Metal Shards" )

  AppList:AddLine("5") --Intervention
  AppList:AddLine("4") --Double Barrel Shotgun
  AppList:AddLine("3") --Browning Auto 5
  AppList:AddLine("6") --M60
  AppList:AddLine("2") --AS Val
  AppList:AddLine("2") --M16A4 ACOG
  AppList:AddLine("2") --Famas
  AppList:AddLine("3") --Ak-47
  AppList:AddLine("4") --Winchester-73
  AppList:AddLine("2") --M4A1
  AppList:AddLine("1") --Glock
  AppList:AddLine("2") --Deagle
  AppList:AddLine("2") --Raging Bull
  
  net.Receive( "CraftingMenu", function() ShowPanel() end )
    
end


Depending on what you want to do, you either never closed AppList:DoDoubleClick or you didn’t close the if statement at the very top:

if SERVER then

elseif CLIENT then

Also, post the full error message.

[ERROR] expected near ‘)’

  1. unknown - lua/nlrstuff.lua:0

Is that seriously the whole error? That doesn’t look like the full error…

It’s usually

[ERROR] expected “a” near “b”
Then a trace to the error

Regardless, try what I said, you have a syntax error and a logic error, I assume you want to close the function AppList:DoDoubleClick judging by the (poor) indentation. Add an end after this line
“LocalPlayer():removePocketItem( ShardList( args[1] ) )” and it should work.

Still an error

Approx. line 16.


  if ( ShardList[args[2] <= CurrentPlayerShards ) 

Should be (You missed a ])


  if ( ShardList[args[2]] <= CurrentPlayerShards ) 

In addition to above, the line


LocalPlayer():removePocketItem( ShardList( args[1] ) )

should be (You were using () instead of )


LocalPlayer():removePocketItem( ShardList[args[1]])