Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------------------------------------------------LOL SPAWNS ITEMS----------------------------------------------------
- ----------------------------------------------------------------YES----NO-----------------------------------------------------------
- -------------------------------------------------------------------------------------------------------------|
- -------------------------------------- LOL SPAWNING -----------------------------------------------------------|
- -------------------------------------------------------------------------------------------------------------|
- if !LootItems2 then
- LootItems2 = {}
- end
- local ItemTable2 = {
- "lol_generator",
- "lol_find1",
- "lol_find2",
- "lol_find3",
- "lol_find4",
- "lol_find5",
- "lol_find6",
- "lol_find7",
- "lol_find8",
- "lol_find9",
- "lol_find10",
- "lol_find11",
- "lol_find12",
- "lol_find13",
- "lol_find14",
- "lol_find15",
- "lol_find16",
- "lol_find17",
- "lol_find18",
- "lol_find19",
- "lol_find20"
- }
- local FruitModels = {
- "models/props/cs_italy/bananna_bunch.mdl",
- "models/props/cs_italy/orange.mdl",
- "models/props/cs_italy/bananna.mdl",
- "models/props_junk/watermelon01.mdl"
- }
- util.AddNetworkString("GrabLoot")
- util.AddNetworkString("SetLoot")
- function GM:LoadLootData2()
- local mapName2 = game.GetMap()
- local jason2 = file.ReadDataAndContent("nightmare/" .. mapName2 .. "/lol.txt")
- if jason2 then
- local tbl2 = util.JSONToTable(jason2)
- LootItems2 = tbl2
- end
- end
- function GM:CountLootItems2()
- return #LootItems2
- end
- function GM:SpawnLoot2()
- for k, ent in pairs(ents.FindByClass("mn_loot")) do
- ent:Remove()
- end
- for k, data in pairs(LootItems2) do
- self:SpawnLootItem2(data)
- end
- end
- function GM:SpawnLootItem2(data)
- for k, ent in pairs(ents.FindByClass("mn_loot")) do
- if ent.LootData2 == data then
- ent:Remove()
- end
- end
- for k,v in pairs(ItemTable2) do
- local ent = ents.Create(v)
- ent:SetPos(data.pos)
- ent:SetAngles(data.angle)
- ent:Spawn()
- ent.LootData2 = data
- -- print(data.pos, data.model, ent)
- return ent
- end
- end
- function GM:SaveLootData2()
- // ensure the folders are there
- if !file.Exists("nightmare/","DATA") then
- file.CreateDir("nightmare")
- end
- local mapName2 = game.GetMap()
- if !file.Exists("nightmare/" .. mapName2 .. "/","DATA") then
- file.CreateDir("nightmare/" .. mapName2)
- end
- // JSON!
- local jason2 = util.TableToJSON(LootItems2)
- file.Write("nightmare/" .. mapName2 .. "/lol.txt", jason2)
- end
- function GM:AddLootItem2(ent)
- local data = {}
- data.model = ent:GetModel()
- data.material = ent:GetMaterial()
- data.pos = ent:GetPos()
- data.angle = ent:GetAngles()
- table.insert(LootItems2, data)
- end
- local function getLootPrintString2(data, plyPos)
- local str2 = math.Round(data.pos.x) .. "," .. math.Round(data.pos.y) .. "," .. math.Round(data.pos.z) .. " " .. math.Round(data.pos:Distance(plyPos) / 12) .. "ft"
- str2 = str2
- return str2
- end
- concommand.Add("mn_lol_add", function (ply, com, args, full)
- if (!ply:IsAdmin()) then return end
- if #args < 1 then
- ply:ChatPrint("Too few args (model)")
- return
- end
- local mdl2 = args[1]
- local name2 = args[1]:lower()
- if name2 == "rand" || name2 == "random" then
- for k,v in pairs(ItemTable2) do
- mdl2 = ents.Create(v)
- end
- if !ItemTable2[name2] then
- ply:ChatPrint("Invalid model alias " .. name2)
- return
- end
- mdl2 = ItemTable2[name2]
- end
- local data = {}
- data.model = mdl
- data.pos = ply:GetEyeTrace().HitPos
- data.angle = ply:GetAngles() * 1
- data.angle.p = 0
- table.insert(LootItems2, data)
- ply:ChatPrint("Added " .. #LootItems2 .. ": " .. getLootPrintString2(data, ply:GetPos()) )
- GAMEMODE:SaveLootData2()
- local ent = GAMEMODE:SpawnLootItem2(data)
- local mins, maxs = ent:OBBMins(), ent:OBBMaxs()
- local pos = ent:GetPos()
- pos.z = pos.z - mins.z
- ent:SetPos(pos)
- data.pos = pos
- GAMEMODE:SaveLootData2()
- end)
- concommand.Add("mn_lol_remove", function (ply, com, args, full)
- if (!ply:IsAdmin()) then return end
- if #args < 1 then
- ply:ChatPrint("Too few args (key)")
- return
- end
- local key2 = tonumber(args[1]) or 0
- if !LootItems2[key2] then
- ply:ChatPrint("Invalid key, position inexists")
- return
- end
- local data = LootItems2[key2]
- table.remove(LootItems2, key2)
- ply:ChatPrint("Remove " .. key2 .. ": " .. getLootPrintString2(data, ply:GetPos()) )
- GAMEMODE:SaveLootData2()
- end)
- concommand.Add("mn_lol_respawn", function (ply, com, args, full)
- if (!ply:IsAdmin()) then return end
- GAMEMODE:SpawnLoot2()
- end)
- concommand.Add("mn_lol_models_list", function (ply, com, args, full)
- if (!ply:IsAdmin()) then return end
- ply:ChatPrint("Loot models")
- for alias, model in pairs(ItemTable2) do
- ply:ChatPrint(alias .. ": " .. model )
- end
- end)
- local function isValid() return true end
- local function getPos(self) return self.pos end
- local function generateSpawnEntities2(spawnList2)
- local tbl2 = {}
- for k, pos in pairs(spawnList2) do
- local t = {}
- t.IsValid = isValid
- t.GetPos = getPos
- t.pos = pos
- table.insert(tbl2, t)
- end
- return tbl2
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement