world.qc

Discuss programming in the QuakeC language.
redrum
Posts: 410
Joined: Wed Mar 28, 2007 11:35 pm
Location: Long Island, New York

world.qc

Post by redrum »

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?
Welcome to the Overlook Hotel: The-Overlook-Hotel.game-server.cc
Urre
Posts: 1109
Joined: Fri Nov 05, 2004 2:36 am
Location: Moon
Contact:

Post by Urre »

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
Sajt
Posts: 1215
Joined: Sat Oct 16, 2004 3:39 am

Post by Sajt »

I hope you weren't just calling entity spawn functions (e.g. monster_dog)...

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.
Nash
Posts: 95
Joined: Fri Oct 19, 2007 5:56 pm
Location: Kuala Lumpur, Malaysia
Contact:

Post by Nash »

Interesting, Sajt. I'd think that simply calling the monster function would work.

Can you explain why this has to be done?
Preach
Posts: 122
Joined: Thu Nov 25, 2004 7:20 pm

Post by Preach »

Nash wrote:Interesting, Sajt. I'd think that simply calling the monster function would work.

Can you explain why this has to be done?
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.
Sajt
Posts: 1215
Joined: Sat Oct 16, 2004 3:39 am

Post by Sajt »

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:
Image
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.
FrikaC
Site Admin
Posts: 1026
Joined: Fri Oct 08, 2004 11:19 pm

Post by FrikaC »

of course you must not call any of the precache functions outside of the initial level spawn, so if you intend to spawn the entities after a certain amount of time, move their precaches to some other function - e.g. worldspawn.
Nash
Posts: 95
Joined: Fri Oct 19, 2007 5:56 pm
Location: Kuala Lumpur, Malaysia
Contact:

Post by Nash »

Thanks for your explanations, Sajt and Preach. That makes sense.

(Yuck I hate frogs)
RenegadeC
Posts: 391
Joined: Fri Oct 15, 2004 10:19 pm
Location: The freezing hell; Canada
Contact:

Post by RenegadeC »

Sajt wrote: Image
Why is this frog red?
FrikaC
Site Admin
Posts: 1026
Joined: Fri Oct 08, 2004 11:19 pm

Post by FrikaC »

Why is the sky black?
FrikaC
Site Admin
Posts: 1026
Joined: Fri Oct 08, 2004 11:19 pm

Post by FrikaC »

Nash wrote:Thanks for your explanations, Sajt and Preach. That makes sense.

(Yuck I hate frogs)
no thanks for me?
redrum
Posts: 410
Joined: Wed Mar 28, 2007 11:35 pm
Location: Long Island, New York

Post by redrum »

FrikaC got hosed!
Welcome to the Overlook Hotel: The-Overlook-Hotel.game-server.cc
Nash
Posts: 95
Joined: Fri Oct 19, 2007 5:56 pm
Location: Kuala Lumpur, Malaysia
Contact:

Post by Nash »

Er, no I guess because your post doesn't look like it was answering my question.

(omg your signature is randomized lololol)
Sajt
Posts: 1215
Joined: Sat Oct 16, 2004 3:39 am

Post by Sajt »

RenegadeC wrote:
Sajt wrote: Image
Why is this frog red?
Cheese grater.
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.
Urre
Posts: 1109
Joined: Fri Nov 05, 2004 2:36 am
Location: Moon
Contact:

Post by Urre »

Nash wrote:Er, no I guess because your post doesn't look like it was answering my question.
I'd say he did point out something important though...
I was once a Quake modder
Post Reply