• [Error] CityRP
    9 replies, posted
Hello, I got this error :( [CODE][ERROR] gamemodes/cityrp/gamemode/core/libraries/sh_plugin.lua:11: table index is nil 1. register - gamemodes/cityrp/gamemode/core/libraries/sh_plugin.lua:11 2. unknown - gamemodes/cityrp/gamemode/core/plugins/propsave/sv_init.lua:166 3. include - [C]:-1 4. unknown - gamemodes/cityrp/gamemode/sh_init.lua:131 5. include - [C]:-1 6. unknown - gamemodes/cityrp/gamemode/init.lua:21 [/CODE] Can someone help me? Some usefull things: sh_plugin: [CODE] cityrp.plugin = {}; cityrp.plugin.stored = {}; -- Register a new plugin. function cityrp.plugin.register(plugin) cityrp.plugin.stored[plugin.name] = plugin; end; -- Call a function for all plugins. function cityrp.plugin.call(name, ...) for k, v in pairs(cityrp.plugin.stored) do if (type(v[name]) == "function") then local success, message = pcall( v[name], unpack({...}) ) -- Check to see if we did not success. if (!success) then Msg(message.."\n"); end; end; end; end; -- Get a plugin by it's name. function cityrp.plugin.get(name) return cityrp.plugin.stored[name]; end; [/CODE] gamemodes/cityrp/gamemode/core/plugins/propsave/sv_init.lua: [CODE]local disabled = false; if (disabled) then return; end --if(FLServer != "build") then -- return; --end if(!file.Exists("cityrp/plugins/propsave/"..FLServer.."/", "DATA")) then file.CreateDir("cityrp/plugins/propsave/"..FLServer.."/") end; local PLUGIN = {}; -- Create a variable to store the plugin for the shared file. PLUGIN_SHARED = PLUGIN include("sh_init.lua") AddCSLuaFile("sh_init.lua") cityrp.propsave = {} cityrp.propsave.proptable = {} function cityrp.propsave.loadprops(player) local filename = string.gsub(player:SteamID(), ":", "_")..".txt"; if file.Exists("cityrp/plugins/propsave/"..FLServer.."/"..filename, "DATA") then cityrp.propsave.proptable[player:SteamID()] = util.JSONToTable(file.Read("cityrp/plugins/propsave/"..FLServer.."/"..filename, "DATA")) if(cityrp.propsave.proptable[player:SteamID()] && #cityrp.propsave.proptable[player:SteamID()] > 0) then player:Notify("You have saved props, use /restoreprops to restore, this will get overridden if you spawn more props!") end; end; end; hook.Add("PlayerInitialized", "propsaveinit", cityrp.propsave.loadprops); function cityrp.propsave.otherpropinarea(pos, player) local ent = ents.FindInSphere(pos, 10) local found = false for _, v in pairs(ent) do if IsValid(v:GetNWEntity("OwnerObj")) and (v:GetNWEntity("OwnerObj") != player) then found = true end end end function cityrp.propsave.restoreProps(player) if !cityrp.propsave.proptable[player:SteamID()] then player:Notify("Sorry, no prop session has been found for you!", 1) return elseif player.proprestored then player:Notify("You have already restored your props!", 1) return else local props = cityrp.propsave.proptable[player:SteamID()] for _, v in pairs(props) do local model, pos, ang, color, material = v.model, v.pos, v.ang, v.color, v.material if !model || !pos || !ang then player:ChatPrint("Failed to spawn it!") return end if hook.Call("PlayerSpawnProp", GAMEMODE, player, v.model) then if !cityrp.propsave.otherpropinarea(pos, player) then local tprop = ents.Create("prop_physics") tprop:SetModel(model) tprop:SetPos(pos) tprop:SetAngles(ang) if color then tprop:SetColor(color) end if material then tprop:SetMaterial(material) end tprop:Spawn() local tpropp = tprop:GetPhysicsObject() if IsValid(tpropp) then tprop:GetPhysicsObject():EnableMotion(false) if (tprop:GetPhysicsObject():IsPenetrating()) then tprop:SetCollisionGroup(COLLISION_GROUP_DEBRIS) end end SPropProtection.PlayerMakePropOwner(player, tprop) hook.Call("PlayerSpawnedProp", GAMEMODE, player, model, tprop) else player:Notify("There is another prop in the area of the prop attempting to spawn!", 1) end end end player:Notify("Successfully restored last prop session!") player.proprestored = true end end function cityrp.propsave.deleteProps(player) cityrp.propsave.proptable[player:SteamID()] = nil cityrp.propsave.writePropTable(player:SteamID()) player:Notify("Successfully cleared prop sessions!") end function cityrp.propsave.saveProps(player, force) --if cityrp.propsave.proptable[player:SteamID()] and !force then -- player:Notify("You already have a prop session saved, use /clearprops to delete it.", 1) -- return --end local plypt = {}; for _, v in pairs(ents.FindByClass("prop_physics")) do if IsValid(v:GetNWEntity("OwnerObj")) and (v:GetNWEntity("OwnerObj") == player) then local pri = {} pri.model = v:GetModel() pri.pos = v:GetPos() pri.ang = v:GetAngles() pri.color = v:GetColor() pri.material = v:GetMaterial() table.insert(plypt, pri) end end if(#plypt > 0) then if(cityrp.propsave.proptable[player:SteamID()] != plypt) then cityrp.propsave.proptable[player:SteamID()] = plypt cityrp.propsave.writePropTable(player:SteamID()) player:Notify("Prop session saved, "..#plypt.." props found!") end; else if(FLServer == "build") then player:Notify("Prop session not saved, No props found!") end; end; end timer.Create("cityrp_saveprops", 60 * 5, 0, function() for _,v in pairs(player.GetAll()) do cityrp.propsave.saveProps(v, true) end end) function cityrp.propsave.writePropTable(steamid) local filename = string.gsub(steamid, ":", "_")..".txt"; file.Write("cityrp/plugins/propsave/"..FLServer.."/"..filename, util.TableToJSON(cityrp.propsave.proptable[steamid])) end cityrp.command.add("saveprops", "b", 0, function(player) player._propsave_cooldown = player._propsave_cooldown or CurTime() if (player._propsave_cooldown > CurTime()) then player:Notify("You need to wait another "..cityrp.formattime(player._propsave_cooldown - CurTime()).."(s) to save your props!", 1) return end cityrp.propsave.saveProps(player) player._propsave_cooldown = player._propsave_cooldown + 300 end, "commands", "", "Save your current spawned props.") cityrp.command.add("restoreprops", "b", 0, function(player) cityrp.propsave.restoreProps(player) end, "commands", "", "Restore props from your last session.") cityrp.command.add("clearprops", "b", 0, function(player) cityrp.propsave.deleteProps(player) end, "commands", "", "Deletes your last prop session.") -- Register the plugin. cityrp.plugin.register(PLUGIN);[/CODE] gamemodes/cityrp/gamemode/sh_init.lua:123-131: [CODE] local disabledPlugins = {} local _, fold = file.Find(GMFOLDER.."/gamemode/core/plugins/*", "LUA") -- Loop through plugins and include them. for k, v in pairs( fold ) do if (v != "." and v != "..") then if table.HasValue(disabledPlugins, string.lower(v)) then return end if (SERVER) then if ( file.Exists(GMFOLDER.."/gamemode/core/plugins/"..v.."/sv_init.lua", "LUA") ) then include("core/plugins/"..v.."/sv_init.lua"); end;[/CODE] gamemodes/cityrp/gamemode/init.lua:20-21: [CODE]-- Include the shared gamemode file. include("sh_init.lua");[/CODE]
[url]https://facepunch.com/showthread.php?t=1546458[/url]
[QUOTE=code_gs;51579294][url]https://facepunch.com/showthread.php?t=1546458[/url][/QUOTE] Not a good awnser.
He literally linked you the fixed gamemode you little shit, perhaps consider reading instead of mouthing off. Merry Christmas.
That's not even the same gamemode.
[QUOTE=ph:lxyz;51580105]That's not even the same gamemode.[/QUOTE] This.
I was saying to use it instead. There is not enough context in the code for us to aptly assist you with it.
[QUOTE=code_gs;51581014]I was saying to use it instead. There is not enough context in the code for us to aptly assist you with it.[/QUOTE] Wait 1 min updating the topic with more information [editline]25th December 2016[/editline] Updated
The plugin defined in sv_init doesn't have a name key. Really, I'm not sure what that plugin is for since it doesn't actually get any information get sent in with it.
Deleted the plugin. Fixed the problem. The plugin saved props when the server crashed.
Sorry, you need to Log In to post a reply to this thread.