Chessnut / NutScript

A free role-play framework for Garry's Mod.
http://nutscript.rocks
MIT License
94 stars 77 forks source link

What does this mean? #603

Closed maxyii closed 7 years ago

maxyii commented 9 years ago

line 107:

local spawngroup = arguments[1] or "default"

lua error:

[ERROR] gamemodes/hl2rp/plugins/sh_worlditemspawner.lua:107: bad argument #1 to 'contact' (table expected, got nil)

Chessnut commented 9 years ago

You're going to need to show the whole code.

Also, if this isn't a NutScript issue, put it on the forums.

maxyii commented 9 years ago

Okay, can you link me to the forums please :P

maxyii commented 9 years ago

local PLUGIN = PLUGIN PLUGIN.name = "World Item Spawner" PLUGIN.author = "Black Tea, edit by Max Weilding" PLUGIN.desc = "World Item Spawner." PLUGIN.itempoints = PLUGIN.itempoints or {} PLUGIN.spawngroups = { -- Example is based on HL2RP items. ["default"] = { {"bleach"}, }, ["example"] = { {"ration"}, } }

PLUGIN.spawnrate = 30 PLUGIN.maxitems = 10 PLUGIN.itemsperspawn = 2 PLUGIN.spawneditems = PLUGIN.spawneditems or {}

if SERVER then local spawntime = 1

function PLUGIN:ItemShouldSave(entity)
    return (!entity.generated)
end

function PLUGIN:Think()
    if spawntime > CurTime() then return end
    spawntime = CurTime() + self.spawnrate
    for k, v in ipairs(self.spawneditems) do
        if (!v:IsValid()) then
            table.remove(self.spawneditems, k)
        end
    end

    if #self.spawneditems >= self.maxitems then return end

    for i = 1, self.itemsperspawn do
        if #self.spawneditems >= self.maxitems then

            return
        end

        if (!v) then
            return
        end

        local data = {}
        data.start = v[1]
        data.endpos = data.start + Vector(0, 0, 1)
        data.filter = client
        data.mins = Vector(-16, -16, 0)
        data.maxs = Vector(16, 16, 16)
        local trace = util.TraceHull(data)

        if trace.Entity:IsValid() then
            continue
        end

        local idat = table.Random(self.spawngroups[v[2]]) or self.spawngroup["default"]
        local item = nut.item.Spawn(v[1] + Vector( math.Rand(-8,8), math.Rand(-8,8), 10 ), AngleRand(), idat[1], idat[2] or {})
        item.generated = true
        table.insert( self.spawneditems, item )
    end
end

function PLUGIN:LoadData()
    self.itempoints = nut.data.get("itempoints")
end

function PLUGIN:SaveData()
    for k, v in ipairs(self.spawneditems) do
        v:Remove()
    end
    nut.data.set("itempoints", self.itempoints)
end

else

netstream.Hook("nut_DisplaySpawnPoints", function(data)
    for k, v in pairs(data) do
        local emitter = ParticleEmitter( v[1] )
        local smoke = emitter:Add( "sprites/glow04_noz", v[1] )
        smoke:SetVelocity( Vector( 0, 0, 1 ) )
        smoke:SetDieTime(10)
        smoke:SetStartAlpha(255)
        smoke:SetEndAlpha(255)
        smoke:SetStartSize(64)
        smoke:SetEndSize(64)
        smoke:SetColor(255,186,50)
        smoke:SetAirResistance(300)
    end
end)

end

nut.command.add("itemspawnadd", { adminOnly = true, syntax = "", onRun = function(client, arguments) local trace = client:GetEyeTraceNoCursor() local hitpos = trace.HitPos + trace.HitNormal*5 local spawngroup = arguments[1] or "default" table.concat( PLUGIN.itempoints, { hitpos, spawngroup } ) nut.util.notify( "You added ".. spawngroup .. " item spawner." ) end })

nut.command.add("itemspawnremove", { adminOnly = true, onRun = function(client, arguments) local trace = client:GetEyeTraceNoCursor() local hitpos = trace.HitPos + trace.HitNormal*5 local range = arguments[1] or 128 local mt = 0 for k, v in pairs( PLUGIN.itempoints ) do local distance = v[1]:Distance( hitpos ) if distance <= tonumber(range) then PLUGIN.itempoints[k] = nil mt = mt + 1 end end nut.util.notify( mt .. " item spawners has been removed.") end })

nut.command.add("itemspawndisplay", { adminOnly = true, onRun = function(client, arguments) if SERVER then netstream.Start(client, "nut_DisplaySpawnPoints", PLUGIN.itempoints) nut.util.notify( "Displayed All Points for 10 secs." ) end end })