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
C0burn 
10x 
TIL... 
... that the source code of Quake has a 256*5 char static array whose contents, literally, are:

*0
*1
*2
*3
...
*254
*255

Do you guys know if this particular array (localmodels) has survived in any of the modern engines, somehow? 
Cl.viewent - Where Is It Loaded? 
Awfully sorry to bring this up, but I have had no luck doing it myself. Where exactly is cl.viewent assigned a specific value? Where in the code do you tell the client which gun model to use? I can´t find any direct assignments to the field, and (unless I´m doing something wrong) I can´t also find a place where the whole cl struct is being copied off somewhere else.

Do you guys know where in the source is cl.viewent being (directly or indirectly) assigned to? 
Bump 
Someone help Izhido out here.

Also I still request this thread be stickied to make it more useful. 
@Izhido 
Quick search indicates that it's happening in V_CalcRefdef() and V_CalcIntermissionRefdef(), both in view.c.

It may or may not be obvious but this represents weapon from the POV of the player and is set based on the client state structure (cl.stats).

The reason "find references" (which you probably used) didn't show you any results is that a pointer to cl.viewent is taken in the V_CalcRefdef() body (view = &cl.viewent;) and later assignments are done on the temporary pointer (e.g. view->model = cl.model_precache[cl.stats[STAT_WEAPON]];
mentioned above).

Hope this is the answer you were looking for. Non-vanilla engines perform some additional operations on cl.viewent but I haven't seen any other model assignment logic in QS so I assume these are the only two places where it happens.

HTH 
@Thulsa - Thank You! 
It *did* help. Looks like I need to be way more careful about variable assignments in there for future changes. 
Hey 
I made a monster.A copy of RMQ's flayn monster code,but edited heavily to fit in with regular quake.
I removed the reanimation code,torso splitting code and some functions that weren't in the file.

Now the thing is,I precached the models and I even have them in my progs folder for the mod.
In the requiem engine, "create monster_flayn" works,but and invisible monster spawns.

QSS and MarkV don't even start the e1m1 ENT file with the monster_flayn that replaced all monster_army.

Should I rewrite the code?

Am using progs_dump_devkit_v110, vanilla dump works fine but my mod doesn't load e1m1.ent with the new monster 
 
Hello, In the Chasm thread, Madfox said he had some trouble getting infighting between Chasm monsters to work. Can somebody with experience in that area help?

The thread is here:
http://www.celephais.net/board/view_thread.php?id=61776&start=4 
Walk_monster_start 
The main factor is that I used most qc from the quake entities. I have no trouble with the infight, as quake entities usual have that in commen.

When I try to target a monster to a path_corner the game stops with a walk_monster_start error.
A bit strange as the spider just follows its path without problem, and it is the same kind of imported entity.

Also I used a subroutine into the stand function.
This is a hack I found to interfere with the stand function. The Mong soldier looks around, and while he is watching aside it won't attack.
For some reason Faust, who has the same stand function, ony uses half of the frames. It is as if some arithmic cuts out the other half.

void() faust_stand11 =[ $stand11, faust_stand12 ] {ai_stand();};

//CLIP HERE
//HERE IS THE ROUND CODE:

void() faust_round1 =[ $round1, faust_round2 ] {};

void() faust_round24 =[ $round24, faust_stand13 ] {};

//END ROUND CODE

void() faust_stand12 =[ $stand12, faust_check ] {ai_stand();};

// faust_check IS CALLED IN faust_stand12, TO DETERMINE IF HE'LL STAND OR ROUND.
void() faust_check =
{
ai_stand();
if (random() <0.25)
faust_stand12 ();
else
faust_round1 ();
};
//end strat_check
// CLIP HERE...


In game it uses only untill frame round12, and then switches back to stand13. 
Donkey 
Chasm monsters only have a stand and run function.
So asking them to walk is like asking for a high Q.
Fetched a walk pose and all is well. 
That Is.., 
what is it when one entity starts an infight with another one
and the attacked one doesn't respond? 
 
why do you need to ask Chasm monsters to walk? just have them run Patrol. 
Walk_monster_start 
They need the order of th_stand, th_walk and th_run, otherwide the error walk_monster_start occurs in monster.qc. 
 
so the Chasm monsters can still Patrol, but they use their run function? 
Animated Poses 
As soon as they end their walk function they use run for chasing.
Most chasm entities have no walk function, spider even has no stand function. In Chasm it waits aside in walk pose. 
Compiling Progs.dat - Very Strange Bug In-game 
Hello everybody

Here it the strange thing...

If compiling an original, unchanged Source Code from Abyss of Pandemonium v2.0 using FTEQCCGUI.exe
there is an ammo counter bug occurs while switching weapons after shhoting.

For example if type "impulse 9" and start shooting from Nailgun, for instance from 200 nails to 188 and then switch to Super Nailgun you will see 189 nails in ammo instead of 188!

If you shoot from Super Nailgun from 188 nails to 182 for example and then switch to Nailgun, you will see 184 nails in your ammo counter instead of 182!

So cycling forward after shooting adds 1 piece of ammo to the weapons which share the same ammo type with the previous one and cycling backwards adds 2 pieces of ammo to the weapons which share the same ammo type with the previous one.

Same problem goes to shotgun weapons, lightning, and rocket/grenade launchers.

Could you guys tell me what may cause this proble and how to eliminate it? 
 
no idea, but some things to check:

does the big ammo counter on the HUD match the values of the 4 small ammo counts? if not, it may be a problem with setting self.currentammo

otherwise, there are very few places where things like self.nails, self.shells, etc. are set, at least in vanilla code -- but maybe AOP adds some weird new code that has a bug. In that case, search for something like ".ammo_nails =" and see what you can find that looks suspicious 
It's Fixed 
As Seven from QuakeOne.com said

"It happened during decompilation of the original source.
As you know, the AoP progs.dat was reverse engineered !
FrikQCC´s decompiler made some bad decisions, so..."

He provided me with the "cleaned" source code and now I'm making the patch for AOP v2.0 to make it more enjoyable (like vanilla) Quake.

Thinking of releasing it here, when I'm finished with this. 
Talking Player... 
Hey everyone! Sorry for the dumb question but is this the right place to post regarding QC coding help?

If it is, here's my question:

I've been trying to work out what might be the best way to add more vocalization for the player. Like adding some smack talk (i.e. Duke Nukem). One way I was thinking might be an inverted obituary function? But not entirely sure tbh, is there a better way of doing this? Point in the right direction? 
Pre-Recorded Obituary 
Hi MrC. I'd say you were along the right lines with looking at the obituary function. In my view the place to start is the function which calls the obituary function, which is a function called Killed in combat.qc.

If you look at the function, there's a block which starts

if (self.flags & FL_MONSTER)

I'd add a bit of code inside that block:

if (attacker.classname == "player")
    PlayerRemarkOnKill(attacker, self);

Then your PlayerRemarkOnKill function looks like:

void(entity player, entity monster) PlayerRemarkOnKill =
{

};

I'll leave you to play around with what you actually want to do with the remarks. Because the monster entity is passed to the function, you have the option of playing lines that are specific to a particular enemy type. 
 
Whoa, thanks Preach! Just got it all added and it works perfectly. And good call with checking classnames for specific commentary :) 
QC Frame Function Generator 
Ok, so onto my next conquest... I was curious about frame functions and if there were any little tools out there for generating QC frame functions? I mean, not to sound lazy or anything.

I know there are alternative methods like framegroups but how about calling sounds etc... at specific frames when using this method?

Thanks again and sorry if this is such a basic question, still learning my way around. 
FTE Particles On Sky Boxes... 
(NOTE: Posting here because "getsurfacenearpoint" and "surface" keywords show up in this thread more than anywhere else on the web)

Goal: Specify FTE particles when entity touches the sky on any quake 1 maps inlcuding mission packs.

Background: As we know, the vanilla "pointcontents(self.origin) == CONTENT_SKY" code doesn't work as intended on many original maps. Fortunately, getsurfacenearpoint in FTE works great for getting surface texture names. I've used it for coding quakec entities (bullets, missles, etc) to fly through the sky without exploding or leaving decals. However, I can greatly simplify the code if someone could tell me how to use FTEQW's "clippeddecal" particle parameter.

Question: The help for clippeddecal states, "The two extra args allow you to spawn these decals ONLY on surfaces with matching surfaceflags." What surfaceflags are recognised, and where are they called from? Any examples? FWIW, using getsurfacenearpoint & getsurfacetexture gives "sky1" on original mission maps. 
FTE Particles On Sky Boxes... Exemplar Video 
Here's an exemplar video showing the Lava Nails flying across the sky, from my question above. All effects are FTE particles, except for the bullets through the sky which I had to code in quakec. So, to eliminate the QuakeC coding, I would really like to know if FTE's clippeddecal surfaceflags can be used instead??? 
1 post not shown on this page because it was spam
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.