|
Posted by metlslime on 2007/08/08 04:57:56 |
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. |
|
|
Oh, My Mistake
#1910 posted by aDaya on 2015/12/28 19:34:27
Now it works. Thanks a lot!
Particles Are Harder Than They Look
#1911 posted by aDaya on 2015/12/29 15:42:12
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
#1912 posted by adib on 2015/12/29 15:46:06
is probably undefined, so 0 has the same effect.
So What Should I Replace It With Then?
#1913 posted by aDaya on 2015/12/29 16:33:18
A Vector!
#1914 posted by ijed on 2015/12/29 16:37:51
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
#1915 posted by ijed on 2015/12/29 16:39:50
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
#1916 posted by aDaya on 2015/12/29 18:41:33
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)
#1917 posted by aDaya on 2015/12/29 18:41:56
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.
Burst Of Particles
#1919 posted by Preach on 2015/12/29 19:53:42
To get the explosion of particles when the projectile lands, you need to use the following rather unintelligible code:
WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
WriteByte (MSG_BROADCAST, TE_EXPLOSION2);
WriteCoord (MSG_BROADCAST, self.origin_x);
WriteCoord (MSG_BROADCAST, self.origin_y);
WriteCoord (MSG_BROADCAST, self.origin_z);
WriteByte (MSG_BROADCAST, 35);
WriteByte (MSG_BROADCAST, 8);
The most interesting value to play around with here is the one currently set to 35. This controls the colour of the particles. The 35th colour in the palette is a pale blue, so that's the colour of the explosion, 144 makes it bright purple instead.
The following value sets the range of colours that the particles cycle through. At the moment, the value 8 means that we cycle through eight colours in the palette. In the example, the next 7 colours after the starting point are all slightly different shades of blue, so the effect is a slightly dappled effect. If you changed this value to 255 then you would get (almost) all the colours in the palette.
QC Quiz: What goes wrong if you set this value to 256?
#1920 posted by JneeraZ on 2015/12/29 20:24:55
It wraps to zero and you don't get any particles? Or they're all black ... or something ...
256 Refers To The Transparent Color, E.g There Won't Be Any Particles
#1921 posted by aDaya on 2015/12/29 20:34:02
The Solution
#1922 posted by Preach on 2015/12/29 21:26:10
It wraps to zero
Yes! As the function suggests, the value is packed into a byte, and so a value of 256 will be transmitted as zero instead. Based on the patch notes for darkplaces, I'd guess this will usually make the engine crash with a divide by zero error.
TE_EXPLOSION And DP
#1923 posted by aDaya on 2015/12/29 21:34:22
TE_EXPLOSION2 doesn't exist (a trap!), so I changed to TE_EXPLOSION. Compiled it, run it, and when the projectile hits, this happens: http://image.noelshack.com/fichiers/2015/53/1451421144-infantry20151229213012-00.jpg
Is this an isolated incident to DP or did I made a mistake on just copy pasting your code?
#1924 posted by Spike on 2015/12/29 21:42:43
#define TE_EXPLOSION2 12
it was created for rogue, so tends to not be pre-defined in vanilla id1 code, but it does work in all NQ engines (but not vanilla qw) if used properly.
It's Nice But
#1925 posted by aDaya on 2015/12/29 22:02:00
It's like when I tried to make a custom explosion sound for a rocket soldier: the original explosion sound seem to always play whenever TE_EXPLOSION or any variant is called. There's also no burst of light and the particle spread, while blue like I wanted, doesn't look as good as the original one.
Ah Yes, The Sound Trick
#1926 posted by Preach on 2015/12/29 23:07:04
Yeah, it's annoying that the engine does that - there is a silly workaround though. Replace the sound/weapons/r_exp3.wav file with a silent sound like sound/misc/null.wav. Then you need to add the sound back onto the the grenade and rocket explosion by making a copy of the original sound and playing it manually.
Thanks Again Preach, Another Thing
#1927 posted by aDaya on 2015/12/30 00:55:44
You said some time ago your website holds a way to make a monster spawner, much like how Quoth did. I did look for it in the Code section but I haven't found such a thing. Maybe the title is different, or it's not in the Code section?
Quake Mp1 Laser Gun Laser Position Help
#1928 posted by Legend on 2015/12/31 10:20:25
I'm trying to change the position of the lasers from mp1 to match the new quake 1.5 models. I've managed to correctly change the position of everything else. But looking at the code, I'm having some trouble figuring out where/how to actually change it.
I assume it is here:
=================
HIP_FireLaser
=================
*/
void(float stat) HIP_FireLaser =
{
local vector org;
local vector dir;
local vector out;
local float ofs;
local float aofs;
if (!self.button0)
{
player_run ();
return;
}
if (self.ammo_cells < 1)
{
self.weapon = W_BestWeapon ();
W_SetCurrentAmmo ();
return;
}
SuperDamageSound();
self.effects = self.effects | EF_MUZZLEFLASH;
makevectors (self.v_angle);
ofs = 6;
out = v_forward;
out_z = 0;
out = normalize(out);
org = self.origin + ((12-ofs) * v_up) + (12*out); // this is the value I have to change for the starting position?
// org = self.origin + (1*v_forward);
dir = aim (self, 1000);
aofs = ofs * 0.707;
if (stat == 0)
{
self.currentammo = self.ammo_cells = self.ammo_cells - 1;
org = org + (aofs*v_right);
org = org - (aofs*v_up);
HIP_LaunchLaser(org, dir, 0);
org = org - (2*aofs*v_right);
HIP_LaunchLaser(org, dir, 0);
}
else if (stat == 1)
{
self.currentammo = self.ammo_cells = self.ammo_cells - 1;
org = org + (ofs*v_up);
if (random()<0.1)
{
HIP_LaunchLaser(org, dir, 1);
newmis.dmg = 25;
}
else
HIP_LaunchLaser(org, dir, 0);
}
self.punchangle_x = -1;
};
Looks Like It
#1929 posted by ijed on 2015/12/31 11:34:06
HIP_FireLaser ()
Yes, its where you commented. I went a little further and made a .vector vwep_pos , that merely points to that org vector in each of the weapon firing functions...so now its easy to know where a missile originated from with respect to the player.Its a little but weird because the Quake guy dont really hold the weapon up to his eye level like other games do, but alot of the tracelines in Quake start at eye position, and there is a difference depending on what knd of calc you wanna do.
Also, I have tried to make the starting point of the missile or the beam for the LG look just as good from the first person view , as from the outside of the model when firing. Its tough, and I dont think there is really a way to make it look exactly right...bleh.
#1931 posted by Spike on 2016/01/01 10:22:34
@Daya
Little known hack for explosion particles without sound:
particle(pos, '0 0 0', 0, 255);
(direction and colour will be ignored, count must be exactly 255, pos is the middle, obviously)
Blood Redscreen
Is there a way to disable or control the frequency of the red screen flash when the player takes damage? Apparently the QC is not doing a bf stuffcmd, so I guess this is done engineside? It sould be neat to setup the intensity based on the amount of damage taken...right now using Darkplaces, I cant find a setting for this and the effect seems the same no matter what the damage taken is.
#1933 posted by Kinn on 2016/01/10 22:10:34
Dunno but sounds like the sort of thing that would trigger Smabler so go for it.
#1934 posted by necros on 2016/01/11 04:10:08
Dmg_take controls red tint, dmg_save armour tint. Dmg_inflictor I think controls how the screen tilts.
|
|
You must be logged in to post in this thread.
|
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.
|
|