world.qc
world.qc
Guys, I'm trying to get creatures to spawn when new maps load.
I put 3 creature creating functions in WorldSpawn().
Problem is the creatures spawn in the same spot, and the 3rd seems to get stuck in the ceiling. They are actually stacked up when they spawn.
My question is, how can I put a time delay between the functions?
I put 3 creature creating functions in WorldSpawn().
Problem is the creatures spawn in the same spot, and the 3rd seems to get stuck in the ceiling. They are actually stacked up when they spawn.
My question is, how can I put a time delay between the functions?
Welcome to the Overlook Hotel: The-Overlook-Hotel.game-server.cc
There are multiple ways of doing it. The best way in your case would be to spawn an entity, which has a delayed nextthink, and a think function which sets all the different parameters to make it a solid monster, much like the way respawning items is handled, where they are not actually removed, they are just invisible
I was once a Quake modder
I hope you weren't just calling entity spawn functions (e.g. monster_dog)...
If so, this is what you should be doing:
If so, this is what you should be doing:
Code: Select all
local entity oldself;
...
oldself = self;
self = spawn ();
self.classname = "monster_dog";
self.origin = '1 2 3';
monster_dog ();
self = spawn ();
self.classname = "monster_dog";
self.origin = '4 5 6';
monster_dog ();
self = spawn ();
self.classname = "monster_dog";
self.origin = '7 8 9';
monster_dog ();
self = oldself;
F. A. Špork, an enlightened nobleman and a great patron of art, had a stately Baroque spa complex built on the banks of the River Labe.
Because the monster_dog function is intended to be run on an entity that's already listed in the entity section of a map. When the map is loaded, the engine runs through each of the entries in the bsp. It then creates a blank entry, adds all the fields that have been set by the mapper, then runs the function with the same name as the specified classname. So the origin and classname are assumed to have been set already, otherwise it wouldn't have been added to the map.Nash wrote:Interesting, Sajt. I'd think that simply calling the monster function would work.
Can you explain why this has to be done?
When the engine loads the map, it looks at each entity and spawns it - basically just like calling spawn(), which spawns a blank entity. Then it loads all the key/value pairs out of the map file, which includes classname (string field), origin, angles, etc. Then it searches for a QC function with the same name as the classname and calls it, with 'self' set to the newly spawned entity.
The QC spawn functions (e.g. monster_dog) are just regular functions that work with an entity (self) that has already been spawned, and has some fields already set (classname, origin, etc.)
edit:
Curse you Preach. Now my post is useless. I shall attempt to give it something worthwhile:
It's a frog.
The QC spawn functions (e.g. monster_dog) are just regular functions that work with an entity (self) that has already been spawned, and has some fields already set (classname, origin, etc.)
edit:
Curse you Preach. Now my post is useless. I shall attempt to give it something worthwhile:
It's a frog.
F. A. Špork, an enlightened nobleman and a great patron of art, had a stately Baroque spa complex built on the banks of the River Labe.