News | Forum | People | FAQ | Links | Search | Register | Log in
Coding Help
This is a counterpart to the "Mapping Help" thread. If you need help with QuakeC coding, or questions about how to do some engine modification, this is the place for you! We've got a few coders here on the forum and hopefully someone knows the answer.
First | Previous | Next | Last
Correct Suspicions 
Your guess is correct. There really is a file called pmove.c in the QuakeWorld source:
https://github.com/id-Software/Quake/blob/master/QW/client/pmove.c

The equivalent in the regular Quake engine is here:
https://github.com/id-Software/Quake/blob/master/WinQuake/sv_phys.c

This means that if you want to change how the player moves from within QuakeC, you have to work around what the engine is automatically doing on the player's behalf. 
Hooking Up To Run Key 
what exactly do i need to do to make the game execute an action when cl_movespeedkey/+speed is pressed? 
 
for example, while running it will spawn particles behind the player for 5sec 
See Above 
The previous post about player movement physics is immediately relevant again. The engine does nearly all the work of turning the player inputs into movement. The only part that's delegated to the QuakeC is how to respond to a jump command. And like the directional keys, +speed is not communicated to the QuakeC because it isn't necessary to make the movement work.

The same advice applies, you need to try and work around what the engine does on your behalf. Consider whether you can infer whether the player is running based on things that QuakeC can observe e.g. velocity, on-ground status, position. The PlayerPostThink function is the earliest opportunity as it runs right after engine physics.

You might find in practice checking the velocity is preferable. If the player is holding the run key but their attempted movement is blocked by a wall, should the particles spawn? Probably not! 
No Spawn Function For Custom Trigger 
I created my own trigger called "trigger_allplayers", aded it to the FGD file

@SolidClass base(Targetname) = trigger_allplayers : "All Players Trigger"
[
map(string) : "Next map to load when all players are inside"
]

...and added in a test map.

Then I wrote code for it in triggers.qc, compiled progs.dat and ran in Quake. When I start the map I get this error:

No spawn function for:
EDICT 7:
classname trigger_allplayers
model *1

I double-checked the function name. Everything seems correct. What am I missing? 
 
Is triggers.qc inside progs.src? What was the name of your fuction?

Should be something like this: void() trigger_allplayers = { // ... }; 
 
Yes, triggers.qc is in progs.src. It's compiled. I renamed it to xxx_triggers_allplayers and then opened the compiled progs.dat and found the new name inside.

The source code for the function:

void() trigger_allplayers =
{
InitTrigger();
self.think = trigger_allplayers_think;
self.nextthink = time + 0.5;
}; 
 
Is it possible that quake isn’t loading the progs.dat you expect? For example, a progs.dat ouside a pak file won’t override a progs.dat inside a pak file in the same mod folder. 
Mod 
Are you sure the map is being launched with your mod being selected via -game your_mod_name? Can you make some other change in the mod that will be really obvious, like setting starting health to 200?

If the command line for the mod is correct but the mod still isn't loading, run the checklist to be sure is that your progs.dat file is being used. Make sure that it's in the root directory of your mod, and that there are no .pak files in the mod directory which also have progs.dat in them (files in a pak will take priority over unpacked files). 
SNIPED BY METL 
 
 
Well, the fact that it shows this error about "trigger_allpalyers" tells me it's loading my progs.dat but I can trying changing something else too.

I'm putting it in id1\, inside a progs.pak file and I run with the Ironwail engine (but I believe progs.dat should be supported by literally every Quake port). 
Misinterpretation 
That error message actually tells you the opposite of what you think it does. It tells you about something your MAP contains. The error means the mod you are running does not contain trigger_allplayers - which is probably because you are running the vanilla quake mod and not your custom one.

I would recommend creating a new mod folder under quake called "allplayers", put the progs.dat file in that folder, then run Ironwail with the -game allplayers command line switch. That should ensure you are actually running your custom mod. 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2026 John Fitzgibbons. All posts are copyright their respective authors.