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
 
What does 2 do as opposed to 0? 
Actually Looked 
It's just a dot product comparison, which means sv_aim is actually fully on instead of off. 
I Want To Know As Well 
Esoteric but interesting. 
 
for fun, set sv_aim to -1 then try to do rocket jumps with a monster in the same room (including behind you) :) 
Sprites! 
So it seems I got the hang on sprite thingies, but I don't know how to properly integrate them.

From my observations on the explosion sprite, this is what I came up with: http://pastebin.com/DzipzBRq 
Compiling And Logic 
I'm guessing that you want the plasma to animate while it flies, let me know if not.

The first problem is plasmashot1...etc are functions, but you have defined them in the middle of the LaunchPlasma function. Move those above the rest of the code and it should compile.

The second problem is that you aren't using them, you need something which says self.think = plasmashot1 to kick off the animation. Change the line for SUB_Remove to plasmashot1 instead and change self.nextthink = time + 0.05. Then you should get animations.

The third problem is that SUB_Remove never gets run, and so plasma might stick around forever. This is actually a bit harder to sort out, because we can only have one think function at a time, and we're already using it to run our animation. How can we schedule a think for 5 seconds in the future if we need to think 20 times a second in the meantime?

The nice thing is that your code will run without fixing this, so have a think about it first and I'll explain in a later post. 
LaunchPlasma () 
Yea, Daya, I dont think you can compile voids within other voids...but, ok for some reason FTE compiler allows you to do that. I tested and even though it lets you compile a void in another function, if you try calling that void, the compiler catches it and does not really see it defined. So those frame macros for the plasma sprite need to come out of there and go somplace else, such as in player.qc where other frame macros are. Funny thing you found tho ! 
 
nested functions are meant to be a thing, but I'm still getting the kinks out. thanks for finding one of them.
either way, writing lots of nested animation/state functions isn't really advisable, especially if you're likely to use incorrect indentation. 
What Could They Be Used For? 
Only running nested ones from within the main, like an exclusivity thing? 
 
self.think = (void()){remove(self);};
is an example of an annonymous nested function.
they're good for simple callbacks and stuff.

reducing the number of top-level functions can make the code feel simpler and thus be more aproachable, plus it allows the callbacks to be nearer where they're used, which is a nice way to improve readability (when not abused).

unfortunately the qcvm allows no practical way to give callbacks access to the parent function's locals (unlike other languages may allow), but I can make an exception for static locals (which are really just glorified globals). 
First Test With Sprites 
So, this is what happens: the monster does his routine when he sees me, but after he fires his first shot (he 's an enforcer type of monster, so normally he fires 2 shots consecutively) he's stuck in his idle pose and his animation goes twice faster than usual for this animation only. Attacking him makes him go back to his routine after doing his hurt animation though. The sprite's animation is stuck on the first frame, but it disappears when it hits brushes or entities, so that's that.

Here's the code:
http://pastebin.com/mq8ivUPU 
 
self.think = plasmashot1;
you're mixing up your newmis and your self.
so that should be:
newmis.think = plasmashot1;

obviously this then conflicts with the following line that you have lower down:
newmis.think = SUB_Remove;
this is along the lines of what preach was talking about.

iirc sprites do also support framegroups, you might find those easier to tie in with remove timeouts, if you can find a tool to write those. 
 
I'm using fimg, as suggested on the General Chat thread. How should I work this one out? 
 
leave the sprite the way it is and fix the self references. there's nothing wrong with the sprite. 
Spike 
Tried your thing, but the effects are the same as I've stated.
Code: http://pastebin.com/FwRPucgv 
Daya 
He said to replace the line

self.think = plasmashot1

- you've left it in. You've also left in the line below

newmis.nextthink = time + 5;
newmis.think = SUB_Remove;

These will cancel out the newmis.think = plasmashot1 code. You need to have


newmis.nextthink = time + 0.05;
newmis.think = plasmashot1;

- plus have no other lines which change nextthink or think on either newmis or self. 
Oh, My Mistake 
Now it works. Thanks a lot! 
Particles Are Harder Than They Look 
Continuing on my super enforcer, I'd like for the projectile to spawn particles as it's flying in the game, and make particles scatter on impact.

So for the first part of this I went to the QuakeC manual and found said line to spawn particles: "void particle(vector origin, vector dir, float color,float count)". I tried "void particle(org, 0, 245, 7);" but FTEQCC doesn't like that I wrote "org", and putting "0" instead make the same results.
The idea is to spawn chunks of particles at a given time btw. 
Org 
is probably undefined, so 0 has the same effect. 
So What Should I Replace It With Then? 
 
A Vector! 
particle (self.origin, '0 0 0', 228, 5);

Where do you need them? right where the thing is, so, self.origin.

Do you want them to move in xyz? Probably not because the bullet is moving, so '0 0 0' movement.

What colour? Maybe orange... 228

How many? Really it depends on how frequently it will produce them... 5 maybe. 
Note 
If you do want to give them movement, the vector of the projectile will not be taken into account unless you do some vectormancy. 
Thanks Ijed 
Now I need for the projectile to generate said particles, like the Vore's explosive balls. I looked into its file, but there's no mention of any particle line here, same thing for the rocket in weapons.qc. 
(please Ignore The Title Icon) 
 
 
The particles coming from the voreballs and rockets are features of their models, not the code. Your better bet is to look at the AD source code. 
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.