Demande de dev script simple

  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
Bonjour, est-ce que quelqu'un pourrait me dev un script qui permet de faire spawn une entité tout les "x" minutes
Il y aurai 5 positions à prédéfinir
à chaque fois tout les "x" minutes (même valeur qu'en haut) une entité spawnerai aléatoirement à une des 5 positions et si c'est une position où elle est déjà spawn alors rien ne se passe.

Merci d'avance j'espère que ce n'est pas trop compliqué
 
Faety

Faety

Nouveau né
Messages
24
Score réaction
2
Points
25
Code:
-- [Config]
-- Temps du timer en secondes
temps = 10
-- Repetitions | 0 = infini
repetitions = 0
positions = { Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34)
}
idEntity = "gmod_button"
---------------------------------------------------------
hook.Add("Initialize", "SpawnEntityApresInit", function() timer.Create("SpawnEntityApresInitTimer", temps, repetitions, function() local entityToSpawn = ents.Create(idEntity) entityToSpawn:SetPos(positions[math.random(#positions)]) entityToSpawn:Spawn() end)
end)
J'ai pas testé, j'espère que ça marchera.
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Faety, j’aurais plus vu le code comme ça personnellement : script

ÉDIT : J’ai fais une erreur , ligne 64 c’est « data » et non pas « date »
 
Dernière édition:
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
thepsyca à dit:
Faety, j’aurais plus vu le code comme ça personnellement : script

ÉDIT : J’ai fais une erreur , ligne 64 c’est « data » et non pas « date »
Faety à dit:
Code:
-- [Config]
-- Temps du timer en secondes
temps = 10
-- Repetitions | 0 = infini
repetitions = 0
positions = { Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34)
}
idEntity = "gmod_button"
---------------------------------------------------------
hook.Add("Initialize", "SpawnEntityApresInit", function() timer.Create("SpawnEntityApresInitTimer", temps, repetitions, function() local entityToSpawn = ents.Create(idEntity) entityToSpawn:SetPos(positions[math.random(#positions)]) entityToSpawn:Spawn() end)
end)
J'ai pas testé, j'espère que ça marchera.
Ah ouais vous gérez !
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
Les deux script sont à mettre dans lua/autorun/server ?
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
Il y a une erreur lua sur avec ton script @thepsyca :

Code:
[ERROR] lua/autorun/server/carcassesspawnport.lua:75: bad argument #1 to 'SetPos' (Vector expected, got nil)
1. SetPos - [C]:-1
2. unknown - lua/autorun/server/carcassesspawnport.lua:75
[ERROR] lua/autorun/server/carcassesspawnport.lua:75: bad argument #1 to 'SetPos' (Vector expected, got nil)
1. SetPos - [C]:-1
2. unknown - lua/autorun/server/carcassesspawnport.lua:75
Timer Failed! [RespawnMyEnt][@lua/autorun/server/carcassesspawnport.lua (line 73)]
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
Code:
--[[ Configuration ]] --[[ Temps en secondes entre chaque nouveau spawn ]] local delay = 230 -- [[ Nombre d'exécution de spawn ( 0 = infini ) ]] local repetitions = 0 --[[ Classe de l'entité à faire spawn ]] local entityClass = "enzofr60_cvoiture_voiturev" -- [[ Point de spawn ( ne pas modifier 'use = false' )]] local pos = { [1] = { pos = Vector(-9902.183594, 2385.561523, 365.298950), use = false }, [2] = { pos = Vector(-10074.688477, 4176.607422, 278.484253), use = false }, [3] = { pos = Vector(-10342.044922, 4203.260742, 380.822571), use = false }, [4] = { pos = Vector(-11438.862305, -11438.862305, 242.266068), use = false }, [5] = { pos = Vector(-6925.425293, 6737.272949, 67.531250), use = false } }
--[[ Fin de la configuration ]]
local oldEnt
local function getSpawnPos() local posUtilisable = {} -- On garde uniquement les positions non utilisés dans le cycle for _, data in ipairs( pos ) do if ( !data.use ) then table.insert(posUtilisable, data.pos) end end -- Si aucune position n'est disponible alors on commence un nouveau cycle if ( #posUtilisable <= 0 ) then for _, data in ipairs( pos ) do data.use = false end return getSpawnPos() end -- On récupère de façon aléatoire le point de spawn local spawnPos = posUtilisable[math.Rand(1, #posUtilisable)] -- On retient que ce point de spawn est désormais utilisé dans le cycle for _, data in ipairs( pos ) do if ( data.pos == spawnPos ) then data.use = true break end end -- On transmet le point de spawn return spawnPos
end
timer.Create("RespawnMyEnt", delay, repetitions, function() local myEnt = ents.Create(entityClass) myEnt:SetPos(getSpawnPos()) myEnt:Spawn() if ( IsValid( oldEnt ) ) then oldEnt:Remove() end oldEnt = myEnt
end )
Voilà ma configuration stv
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Mernwar à dit:
Il y a une erreur lua sur avec ton script @thepsyca :

Code:
[ERROR] lua/autorun/server/carcassesspawnport.lua:75: bad argument #1 to 'SetPos' (Vector expected, got nil)
1. SetPos - [C]:-1
2. unknown - lua/autorun/server/carcassesspawnport.lua:75
[ERROR] lua/autorun/server/carcassesspawnport.lua:75: bad argument #1 to 'SetPos' (Vector expected, got nil)
1. SetPos - [C]:-1
2. unknown - lua/autorun/server/carcassesspawnport.lua:75
Timer Failed! [RespawnMyEnt][@lua/autorun/server/carcassesspawnport.lua (line 73)]
Pas étonnant , je sais pas dev
Je regarderais ce soir si j’y pense
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
thepsyca à dit:
Pas étonnant , je sais pas dev
Je regarderais ce soir si j’y pense
Tu n'as pas fait un systeme de shop et de clothing?
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
Faety à dit:
Code:
-- [Config]
-- Temps du timer en secondes
temps = 10
-- Repetitions | 0 = infini
repetitions = 0
positions = { Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34)
}
idEntity = "gmod_button"
---------------------------------------------------------
hook.Add("Initialize", "SpawnEntityApresInit", function() timer.Create("SpawnEntityApresInitTimer", temps, repetitions, function() local entityToSpawn = ents.Create(idEntity) entityToSpawn:SetPos(positions[math.random(#positions)]) entityToSpawn:Spawn() end)
end)
J'ai pas testé, j'espère que ça marchera.
@Faety je vais essayer le tient maintenant
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
Faety à dit:
Code:
-- [Config]
-- Temps du timer en secondes
temps = 10
-- Repetitions | 0 = infini
repetitions = 0
positions = { Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34), Vector(32, 23, 34)
}
idEntity = "gmod_button"
---------------------------------------------------------
hook.Add("Initialize", "SpawnEntityApresInit", function() timer.Create("SpawnEntityApresInitTimer", temps, repetitions, function() local entityToSpawn = ents.Create(idEntity) entityToSpawn:SetPos(positions[math.random(#positions)]) entityToSpawn:Spawn() end)
end)
J'ai pas testé, j'espère que ça marchera.
ça n'a pas fonctionné comme prévu ; toutes les voitures spawn à la dernière position que j'ai mise au lieu de spawner à une des 5 positions aléatoirement.
Et aussi si une entité est déjà spawn là où le script veut en faire spawn une il devrait alors ne rien faire spawn et relancer la boucle
mais les entités ont bien spawn tout les 4 minutes comme j'ai config donc c'est déjà ça :)
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Code:
--[[ Configuration ]] --[[ Temps en secondes entre chaque nouveau spawn ]] local delay = 230 -- [[ Nombre d'exécution de spawn ( 0 = infini ) ]] local repetitions = 0 --[[ Classe de l'entité à faire spawn ]] local entityClass = "enzofr60_cvoiture_voiturev" -- [[ Point de spawn ( ne pas modifier 'use = false' )]] local pos = { [1] = { pos = Vector(-9902.183594, 2385.561523, 365.298950), use = false }, [2] = { pos = Vector(-10074.688477, 4176.607422, 278.484253), use = false }, [3] = { pos = Vector(-10342.044922, 4203.260742, 380.822571), use = false }, [4] = { pos = Vector(-11438.862305, -11438.862305, 242.266068), use = false }, [5] = { pos = Vector(-6925.425293, 6737.272949, 67.531250), use = false } }
--[[ Fin de la configuration ]]
local oldEnt
local function getSpawnPos() local posUtilisable = {} -- On garde uniquement les positions non utilisés dans le cycle for _, data in ipairs( pos ) do if ( !data.use ) then table.insert(posUtilisable, data.pos) end end -- Si aucune position n'est disponible alors on commence un nouveau cycle if ( #posUtilisable <= 0 ) then for _, data in ipairs( pos ) do data.use = false end return getSpawnPos() end -- On récupère de façon aléatoire le point de spawn local spawnPos = posUtilisable[math.random(1, #posUtilisable)] -- On retient que ce point de spawn est désormais utilisé dans le cycle for _, data in ipairs( pos ) do if ( data.pos == spawnPos ) then data.use = true break end end -- On transmet le point de spawn return spawnPos
end
timer.Create("RespawnMyEnt", delay, repetitions, function() local myEnt = ents.Create(entityClass) myEnt:SetPos(getSpawnPos()) myEnt:Spawn() if ( IsValid( oldEnt ) ) then oldEnt:Remove() end oldEnt = myEnt
end )
ça devrait fonctionner
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
thepsyca à dit:
Code:
--[[ Configuration ]] --[[ Temps en secondes entre chaque nouveau spawn ]] local delay = 230 -- [[ Nombre d'exécution de spawn ( 0 = infini ) ]] local repetitions = 0 --[[ Classe de l'entité à faire spawn ]] local entityClass = "enzofr60_cvoiture_voiturev" -- [[ Point de spawn ( ne pas modifier 'use = false' )]] local pos = { [1] = { pos = Vector(-9902.183594, 2385.561523, 365.298950), use = false }, [2] = { pos = Vector(-10074.688477, 4176.607422, 278.484253), use = false }, [3] = { pos = Vector(-10342.044922, 4203.260742, 380.822571), use = false }, [4] = { pos = Vector(-11438.862305, -11438.862305, 242.266068), use = false }, [5] = { pos = Vector(-6925.425293, 6737.272949, 67.531250), use = false } }
--[[ Fin de la configuration ]]
local oldEnt
local function getSpawnPos() local posUtilisable = {} -- On garde uniquement les positions non utilisés dans le cycle for _, data in ipairs( pos ) do if ( !data.use ) then table.insert(posUtilisable, data.pos) end end -- Si aucune position n'est disponible alors on commence un nouveau cycle if ( #posUtilisable <= 0 ) then for _, data in ipairs( pos ) do data.use = false end return getSpawnPos() end -- On récupère de façon aléatoire le point de spawn local spawnPos = posUtilisable[math.random(1, #posUtilisable)] -- On retient que ce point de spawn est désormais utilisé dans le cycle for _, data in ipairs( pos ) do if ( data.pos == spawnPos ) then data.use = true break end end -- On transmet le point de spawn return spawnPos
end
timer.Create("RespawnMyEnt", delay, repetitions, function() local myEnt = ents.Create(entityClass) myEnt:SetPos(getSpawnPos()) myEnt:Spawn() if ( IsValid( oldEnt ) ) then oldEnt:Remove() end oldEnt = myEnt
end )
ça devrait fonctionner
Salut alors l'addon est excellent mais il n'y a une entité qui spawn qu'a une position même après 20 min d'attente (ou alors peut-être que les probabilités n'étaient vraiment pas avec moi)
 
Tom21200

Tom21200

Geek
Messages
34
Score réaction
1
Points
70
ok
 
Tom21200

Tom21200

Geek
Messages
34
Score réaction
1
Points
70
Lol
 
Tom21200

Tom21200

Geek
Messages
34
Score réaction
1
Points
70
C’est peut-être normal que ça apparaît après 20 minutes c’est peut-être parce que la valeur est réglé sur 20 ce qui signifie 20 minutes ou alors c’est 20 000 qui signifie 20 minutes ça dépend
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
Tom21200 à dit:
C’est peut-être normal que ça apparaît après 20 minutes c’est peut-être parce que la valeur est réglé sur 20 ce qui signifie 20 minutes ou alors c’est 20 000 qui signifie 20 minutes ça dépend
????????
Euh tkt j'ai configuré sur 3min50s et c'est en secondes et l'entité apparaît au bout de 3min50s
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Mernwar à dit:
Salut alors l'addon est excellent mais il n'y a une entité qui spawn qu'a une position même après 20 min d'attente (ou alors peut-être que les probabilités n'étaient vraiment pas avec moi)
Je regarde ça ce soir
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Mernwar à dit:
Salut alors l'addon est excellent mais il n'y a une entité qui spawn qu'a une position même après 20 min d'attente (ou alors peut-être que les probabilités n'étaient vraiment pas avec moi)
J'ai aucun soucis sur le script, tu peux tester par toi même en rajoutant : print("new - ", getSpawnPos() ) dans le timer.

Ton entité est bien crée toutes les X secondes et l'ancienne est alors supprimée.
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
thepsyca à dit:
J'ai aucun soucis sur le script, tu peux tester par toi même en rajoutant : print("new - ", getSpawnPos() ) dans le timer.

Ton entité est bien crée toutes les X secondes et l'ancienne est alors supprimée.
ahhhhhhh ! mais ce n'est pas exactement ce que je voulais .
Enft ce que je voulais c'est que les entités spawn autant de fois qu'elle veulent, juste si une enité s'apprête à spawn à moins de 2m d'une autre par exemple elle ne spawnera pas et le timer reprendra à 230s

Le probleme c'est que si une entité peut despawn comme ça alors des gens qui seront en train de faire leur boulot avec cette entité pourront la voir despawn avant de la revendre xD

Si c'est trop compliqué je peux essayer de trouver une autre alternative
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Mernwar à dit:
ahhhhhhh ! mais ce n'est pas exactement ce que je voulais .
Enft ce que je voulais c'est que les entités spawn autant de fois qu'elle veulent, juste si une enité s'apprête à spawn à moins de 2m d'une autre par exemple elle ne spawnera pas et le timer reprendra à 230s

Le probleme c'est que si une entité peut despawn comme ça alors des gens qui seront en train de faire leur boulot avec cette entité pourront la voir despawn avant de la revendre xD

Si c'est trop compliqué je peux essayer de trouver une autre alternative
Et l'entité despawn jamais ?
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
thepsyca à dit:
Et l'entité despawn jamais ?
Tant que personne ne l'a exploité puis revendu non normalement
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Mernwar à dit:
Tant que personne ne l'a exploité puis revendu non normalement
Le despawn de l'entité est déjà géré de ton côté ou je dois m'en occuper par un code ?
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
thepsyca à dit:
Le despawn de l'entité est déjà géré de ton côté ou je dois m'en occuper par un code ?
Quand l'entité est exploitée et revendu elle despawn
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
Mernwar à dit:
Quand l'entité est exploitée et revendu elle despawn
Ducoup y a une partie du code qui gère le despawn a enlever j'imagine?
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
Mernwar à dit:
Ducoup y a une partie du code qui gère le despawn a enlever j'imagine?
Je viens de rentrer chez moi je verrai :) merci déjà pour tout ce que tu m'as fait !
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
@thepsyca es-tu là?
 
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Mernwar à dit:
@thepsyca es-tu là?
Bah tu lui a rien redis donc il peut pas imaginer .-.
 
  • Initiateur de la discussion
Mernwar

Mernwar

Geek
Messages
228
Score réaction
16
Points
80
NoaGamingFR à dit:
Bah tu lui a rien redis donc il peut pas imaginer .-.
Salut j'ai mis ça :
Mernwar à dit:
ahhhhhhh ! mais ce n'est pas exactement ce que je voulais .
Enft ce que je voulais c'est que les entités spawn autant de fois qu'elle veulent, juste si une enité s'apprête à spawn à moins de 2m d'une autre par exemple elle ne spawnera pas et le timer reprendra à 230s

Le probleme c'est que si une entité peut despawn comme ça alors des gens qui seront en train de faire leur boulot avec cette entité pourront la voir despawn avant de la revendre xD

Si c'est trop compliqué je peux essayer de trouver une autre alternative
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Pour supprimer le despawn par le mini code que je t'ai fait il te suffit de supprimer ces quelques lignes :
Code:
if ( IsValid( oldEnt ) ) then oldEnt:Remove() end oldEnt = myEnt
 
Discord d'entraide
Rejoignz-nous sur Discord