Advertisement
Guest User

Untitled

a guest
Jun 24th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.07 KB | None | 0 0
  1. ----------------------------------------------------------------LOL SPAWNS ITEMS----------------------------------------------------
  2. ----------------------------------------------------------------YES----NO-----------------------------------------------------------
  3.  
  4. -------------------------------------------------------------------------------------------------------------|
  5. -------------------------------------- LOL SPAWNING -----------------------------------------------------------|
  6. -------------------------------------------------------------------------------------------------------------|
  7. if !LootItems2 then
  8.     LootItems2 = {}
  9. end
  10.  
  11. local ItemTable2 = {
  12. "lol_generator",
  13. "lol_find1",
  14. "lol_find2",
  15. "lol_find3",
  16. "lol_find4",
  17. "lol_find5",
  18. "lol_find6",
  19. "lol_find7",
  20. "lol_find8",
  21. "lol_find9",
  22. "lol_find10",
  23. "lol_find11",
  24. "lol_find12",
  25. "lol_find13",
  26. "lol_find14",
  27. "lol_find15",
  28. "lol_find16",
  29. "lol_find17",
  30. "lol_find18",
  31. "lol_find19",
  32. "lol_find20"
  33. }
  34.  
  35. local FruitModels = {
  36.     "models/props/cs_italy/bananna_bunch.mdl",
  37.     "models/props/cs_italy/orange.mdl",
  38.     "models/props/cs_italy/bananna.mdl",
  39.     "models/props_junk/watermelon01.mdl"
  40. }
  41.  
  42. util.AddNetworkString("GrabLoot")
  43. util.AddNetworkString("SetLoot")
  44.  
  45. function GM:LoadLootData2()
  46.     local mapName2 = game.GetMap()
  47.     local jason2 = file.ReadDataAndContent("nightmare/" .. mapName2 .. "/lol.txt")
  48.     if jason2 then
  49.         local tbl2 = util.JSONToTable(jason2)
  50.         LootItems2 = tbl2
  51.     end
  52. end
  53.  
  54. function GM:CountLootItems2()
  55.     return #LootItems2
  56. end
  57.  
  58. function GM:SpawnLoot2()
  59.     for k, ent in pairs(ents.FindByClass("mn_loot")) do
  60.         ent:Remove()
  61.     end
  62.  
  63.     for k, data in pairs(LootItems2) do
  64.         self:SpawnLootItem2(data)
  65.     end
  66. end
  67.  
  68. function GM:SpawnLootItem2(data)
  69.     for k, ent in pairs(ents.FindByClass("mn_loot")) do
  70.         if ent.LootData2 == data then
  71.             ent:Remove()
  72.         end
  73.     end
  74.     for k,v in pairs(ItemTable2) do
  75.     local ent = ents.Create(v)
  76.     ent:SetPos(data.pos)
  77.     ent:SetAngles(data.angle)
  78.     ent:Spawn()
  79.  
  80.     ent.LootData2 = data
  81.     -- print(data.pos, data.model, ent)
  82.  
  83.     return ent
  84. end
  85. end
  86.  
  87.  
  88. function GM:SaveLootData2()
  89.  
  90.     // ensure the folders are there
  91.     if !file.Exists("nightmare/","DATA") then
  92.         file.CreateDir("nightmare")
  93.     end
  94.  
  95.     local mapName2 = game.GetMap()
  96.     if !file.Exists("nightmare/" .. mapName2 .. "/","DATA") then
  97.         file.CreateDir("nightmare/" .. mapName2)
  98.     end
  99.  
  100.     // JSON!
  101.     local jason2 = util.TableToJSON(LootItems2)
  102.     file.Write("nightmare/" .. mapName2 .. "/lol.txt", jason2)
  103. end
  104.  
  105. function GM:AddLootItem2(ent)
  106.     local data = {}
  107.     data.model = ent:GetModel()
  108.     data.material = ent:GetMaterial()
  109.     data.pos = ent:GetPos()
  110.     data.angle = ent:GetAngles()
  111.     table.insert(LootItems2, data)
  112. end
  113.  
  114. local function getLootPrintString2(data, plyPos)
  115.     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"
  116.     str2 = str2
  117.     return str2
  118. end
  119.  
  120. concommand.Add("mn_lol_add", function (ply, com, args, full)
  121.     if (!ply:IsAdmin()) then return end
  122.  
  123.     if #args < 1 then
  124.         ply:ChatPrint("Too few args (model)")
  125.         return
  126.     end
  127.  
  128.     local mdl2 = args[1]
  129.  
  130.     local name2 = args[1]:lower()
  131.     if name2 == "rand" || name2 == "random" then
  132.     for k,v in pairs(ItemTable2) do
  133.      mdl2 = ents.Create(v)
  134.      end
  135.     if !ItemTable2[name2] then
  136.             ply:ChatPrint("Invalid model alias " .. name2)
  137.             return
  138.         end
  139.  
  140.         mdl2 = ItemTable2[name2]
  141.     end
  142.  
  143.  
  144.     local data = {}
  145.     data.model = mdl
  146.     data.pos = ply:GetEyeTrace().HitPos
  147.     data.angle = ply:GetAngles() * 1
  148.     data.angle.p = 0
  149.     table.insert(LootItems2, data)
  150.  
  151.     ply:ChatPrint("Added " .. #LootItems2 .. ": " .. getLootPrintString2(data, ply:GetPos()) )
  152.  
  153.     GAMEMODE:SaveLootData2()
  154.  
  155.     local ent = GAMEMODE:SpawnLootItem2(data)
  156.     local mins, maxs = ent:OBBMins(), ent:OBBMaxs()
  157.     local pos = ent:GetPos()
  158.     pos.z = pos.z - mins.z
  159.     ent:SetPos(pos)
  160.  
  161.     data.pos = pos
  162.     GAMEMODE:SaveLootData2()
  163. end)
  164.  
  165.  
  166. concommand.Add("mn_lol_remove", function (ply, com, args, full)
  167.     if (!ply:IsAdmin()) then return end
  168.  
  169.     if #args < 1 then
  170.         ply:ChatPrint("Too few args (key)")
  171.         return
  172.     end
  173.  
  174.     local key2 = tonumber(args[1]) or 0
  175.     if !LootItems2[key2] then
  176.         ply:ChatPrint("Invalid key, position inexists")
  177.         return
  178.     end
  179.  
  180.     local data = LootItems2[key2]
  181.     table.remove(LootItems2, key2)
  182.     ply:ChatPrint("Remove " .. key2 .. ": " .. getLootPrintString2(data, ply:GetPos()) )
  183.  
  184.     GAMEMODE:SaveLootData2()
  185. end)
  186.  
  187. concommand.Add("mn_lol_respawn", function (ply, com, args, full)
  188.     if (!ply:IsAdmin()) then return end
  189.  
  190.     GAMEMODE:SpawnLoot2()
  191. end)
  192.  
  193. concommand.Add("mn_lol_models_list", function (ply, com, args, full)
  194.     if (!ply:IsAdmin()) then return end
  195.  
  196.     ply:ChatPrint("Loot models")
  197.     for alias, model in pairs(ItemTable2) do
  198.         ply:ChatPrint(alias .. ": " .. model )
  199.     end
  200. end)
  201.  
  202. local function isValid() return true end
  203. local function getPos(self) return self.pos end
  204.  
  205. local function generateSpawnEntities2(spawnList2)
  206.     local tbl2 = {}
  207.  
  208.     for k, pos in pairs(spawnList2) do
  209.         local t = {}
  210.         t.IsValid = isValid
  211.         t.GetPos = getPos
  212.         t.pos = pos
  213.         table.insert(tbl2, t)
  214.     end
  215.  
  216.     return tbl2
  217. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement