Advertisement
Guest User

Untitled

a guest
Jul 24th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.73 KB | None | 0 0
  1. --[[ Configuration ]]
  2.  
  3.     --[[ Temps en secondes entre chaque nouveau spawn ]]
  4.         local delay = 5
  5.  
  6.     -- [[ Nombre d'exécution de spawn ( 0 = infini ) ]]
  7.         local repetitions = 0
  8.  
  9.     --[[ Classe de l'entité à faire spawn ]]
  10.         local entityClass = "gmod_button"
  11.  
  12.     -- [[ Point de spawn ( ne pas modifier 'use = false' )]]
  13.         local pos = {
  14.             [1] = {
  15.                 pos = Vector(0, 0, 0),
  16.                 use = false
  17.             },
  18.             [2] = {
  19.                 pos = Vector(1, 1, 1),
  20.                 use = false
  21.             },
  22.             [3] = {
  23.                 pos = Vector(2, 2, 2),
  24.                 use = false
  25.             },
  26.             [4] = {
  27.                 pos = Vector(3, 3, 3),
  28.                 use = false
  29.             },
  30.             [5] = {
  31.                 pos = Vector(4, 4, 4),
  32.                 use = false
  33.             }
  34.         }
  35.  
  36. --[[ Fin de la configuration ]]
  37.  
  38. local oldEnt
  39.  
  40. local function getSpawnPos()
  41.     local posUtilisable = {}
  42.  
  43.     -- On garde uniquement les positions non utilisés dans le cycle
  44.     for _, data in ipairs( pos ) do
  45.         if ( !data.use ) then
  46.             table.insert(posUtilisable, data.pos)
  47.         end
  48.     end
  49.  
  50.     -- Si aucune position n'est disponible alors on commence un nouveau cycle
  51.     if ( #posUtilisable <= 0 ) then
  52.         for _, data in ipairs( pos ) do
  53.             data.use = false
  54.         end
  55.         return getSpawnPos()
  56.     end
  57.  
  58.     -- On récupère de façon aléatoire le point de spawn
  59.     local spawnPos = posUtilisable[math.Rand(1, #posUtilisable)]
  60.  
  61.     -- On retient que ce point de spawn est désormais utilisé dans le cycle
  62.     for _, data in ipairs( pos ) do
  63.         if ( data.pos == spawnPos ) then
  64.             date.use = true
  65.             break
  66.         end
  67.     end
  68.  
  69.     -- On transmet le point de spawn
  70.     return spawnPos
  71. end
  72.  
  73. timer.Create("RespawnMyEnt", delay, repetitions, function()
  74.     local myEnt = ents.Create(entityClass)
  75.     myEnt:SetPos(getSpawnPos())
  76.     myEnt:Spawn()
  77.  
  78.     if ( IsValid( oldEnt ) ) then
  79.         oldEnt:Remove()
  80.     end
  81.  
  82.     oldEnt = myEnt
  83. end )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement