SCRIPT ERROR: Execution of native

Hello, I recently increased my server from 32 players to 64 and I keep getting this error in console.

SCRIPT ERROR: Execution of native 000000002f7a49e6 in script host failed.
> f (@vrp/modules/gui.lua:197)
> handler (local Tools = module("lib/Tools")
local Debug = module("lib/Debug")

-- this file describe a two way proxy between the server and the clients (request system)

local Tunnel = {}

-- define per dest regulator
Tunnel.delays = {}

-- set the base delay between Triggers for this destination in milliseconds (0 for instant trigger)
function Tunnel.setDestDelay(dest, delay)
  Tunnel.delays[dest] = {delay, 0}
end

local function tunnel_resolve(itable,key)
  local mtable = getmetatable(itable)
  local iname = mtable.name
  local ids = mtable.tunnel_ids
  local callbacks = mtable.tunnel_callbacks
  local identifier = mtable.identifier

  -- generate access function
  local fcall = function(dest,args,callback)
    if args == nil then
      args = {}
    end

    -- get delay data
    local delay_data = Tunnel.delays[dest]
    if delay_data == nil then
      delay_data = {0,0}
    end

    -- increase delay
    local add_delay = delay_data[1]
    delay_data[2] = delay_data[2]+add_delay

    if delay_data[2] > 0 then -- delay trigger
      SetTimeout(delay_data[2], function() 
        -- remove added delay
        delay_data[2] = delay_data[2]-add_delay

        -- send request
        if type(callback) == "function" then -- ref callback if exists (become a request)
          local rid = ids:gen()
          callbacks[rid] = callback
          TriggerClientEvent(iname..":tunnel_req",dest,key,args,identifier,rid)
        else -- regular trigger
          TriggerClientEvent(iname..":tunnel_req",dest,key,args,"",-1)
        end
      end)
    else -- no delay
      -- send request
      if type(callback) == "function" then -- ref callback if exists (become a request)
        local rid = ids:gen()
        callbacks[rid] = callback
        TriggerClientEvent(iname..":tunnel_req",dest,key,args,identifier,rid)
      else -- regular trigger
        TriggerClientEvent(iname..":tunnel_req",dest,key,args,"",-1)
      end
    end
  end

  itable[key] = fcall -- add generated call to table (optimization)
  return fcall
end

-- bind an interface (listen to net requests)
-- name: interface name
-- interface: table containing functions
function Tunnel.bindInterface(name,interface)
  -- receive request
  RegisterServerEvent(name..":tunnel_req")
  AddEventHandler(name..":tunnel_req",function(member,args,identifier,rid)
    local source = source
    local delayed = false

    if Debug.active then
      Debug.pbegin("tunnelreq#"..rid.."_"..name..":"..member.." "..json.encode(Debug.safeTableCopy(args)))
    end

    local f = interface[member]

    local rets = {}
    if type(f) == "function" then
      -- bind the global function to delay the return values using the returned function with args
      TUNNEL_DELAYED = function()
        delayed = true
        return function(rets)
          rets = rets or {}

          if rid >= 0 then
            TriggerClientEvent(name..":"..identifier..":tunnel_res",source,rid,rets)
          end
        end
      end

      rets = {f(table.unpack(args))} -- call function 
      -- CancelEvent() -- cancel event doesn't seem to cancel the event for the other handlers, but if it does, uncomment this
    end

    -- send response (even if the function doesn't exist)
    if not delayed and rid >= 0 then
      TriggerClientEvent(name..":"..identifier..":tunnel_res",source,rid,rets)
    end

    if Debug.active then
      Debug.pend()
    end
  end)
end

-- get a tunnel interface to send requests 
-- name: interface name
-- identifier: unique string to identify this tunnel interface access (the name of the current resource should be fine)
function Tunnel.getInterface(name,identifier)
  local ids = Tools.newIDGenerator()
  local callbacks = {}

  -- build interface
  local r = setmetatable({},{ __index = tunnel_resolve, name = name, tunnel_ids = ids, tunnel_callbacks = callbacks, identifier = identifier })

  -- receive response
  RegisterServerEvent(name..":"..identifier..":tunnel_res")
  AddEventHandler(name..":"..identifier..":tunnel_res",function(rid,args)
    if Debug.active then
      Debug.pbegin("tunnelres#"..rid.."_"..name.." "..json.encode(Debug.safeTableCopy(args)))
    end

    local callback = callbacks[rid]
    if callback ~= nil then
      -- free request id
      ids:free(rid)
      callbacks[rid] = nil

      -- call
      callback(table.unpack(args))
    end

    Debug.pend()
  end)

  return r
end

return Tunnel

Moved to #server-development:resource-support :mascot:

bump…

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