Forum

Quake Sprites

Discuss programming in the QuakeC language.

Moderator: InsideQC Admins

Quake Sprites

Postby lukas2288 » Sat Jun 20, 2009 9:15 pm

Hi guys
i want to make plasma sprites.For example i will show this picture
http://img141.imageshack.us/img141/5823/missile.jpg
How can i make it in firerocket to use for example this jpg file?I tried fimg but it wrote me that save function does not work.Is there some way to create more frames for example on missile explode?

PS:Sorry for my english.
________
Yamaha YZ250F
Last edited by lukas2288 on Thu Feb 03, 2011 6:18 am, edited 1 time in total.
lukas2288
 
Posts: 42
Joined: Sun Jun 14, 2009 4:40 pm

Re: Quake Sprites

Postby lukas2288 » Mon Jun 22, 2009 6:58 pm

lukas2288 wrote:Hi guys
i want to make plasma sprites.For example i will show this picture
http://img141.imageshack.us/img141/5823/missile.jpg
How can i make it in firerocket to use for example this jpg file?I tried fimg but it wrote me that save function does not work.Is there some way to create more frames for example on missile explode?

PS:Sorry for my english.


Or how can imake visible only the picture without the black square in game.
________
Bmw X5 M
Last edited by lukas2288 on Tue Mar 08, 2011 12:49 am, edited 1 time in total.
lukas2288
 
Posts: 42
Joined: Sun Jun 14, 2009 4:40 pm

Postby MauveBib » Mon Jun 22, 2009 9:59 pm

You need to use the alpha channel of the TGA to represent transparency.
Apathy Now!
User avatar
MauveBib
 
Posts: 634
Joined: Thu Nov 04, 2004 1:22 am

Postby lukas2288 » Tue Jun 23, 2009 4:03 pm

MauveBib wrote:You need to use the alpha channel of the TGA to represent transparency.


PLease can you send me some freeware program which will do this?I think that Photoshop can do that but it is shareware.
________
volcano vaporizer
Last edited by lukas2288 on Thu Feb 03, 2011 6:18 am, edited 1 time in total.
lukas2288
 
Posts: 42
Joined: Sun Jun 14, 2009 4:40 pm

Postby MauveBib » Tue Jun 23, 2009 4:23 pm

I think http://www.gimp.org/ is probably the best freeware image manipulation software., but I'm not sure since I use a commercial package.
Apathy Now!
User avatar
MauveBib
 
Posts: 634
Joined: Thu Nov 04, 2004 1:22 am

Postby lukas2288 » Sun Jul 05, 2009 7:49 am

Last question about sprites.I madeing plasma weapons and spr files containes 4 frames.But when i fired it plays only frame 1.How can i increase it into 4 frames?
________
Volvo Cars picture
Last edited by lukas2288 on Thu Feb 03, 2011 6:19 am, edited 1 time in total.
lukas2288
 
Posts: 42
Joined: Sun Jun 14, 2009 4:40 pm

Postby Error » Sun Jul 05, 2009 10:04 am

you have to manually loop it.

go through each frame. it won't play on it's own.
User avatar
Error
InsideQC Staff
 
Posts: 865
Joined: Fri Nov 05, 2004 5:15 am
Location: VA, USA

Postby lukas2288 » Sun Jul 05, 2009 5:01 pm

Error wrote:you have to manually loop it.

go through each frame. it won't play on it's own.


Do you mean on qc or in fimg?
________
buy extreme q vaporizer
Last edited by lukas2288 on Thu Feb 03, 2011 6:19 am, edited 1 time in total.
lukas2288
 
Posts: 42
Joined: Sun Jun 14, 2009 4:40 pm

Postby Dr. Shadowborg » Sun Jul 05, 2009 7:54 pm

lukas2288 wrote:
Error wrote:you have to manually loop it.

go through each frame. it won't play on it's own.


Do you mean on qc or in fimg?


He means in qc.
User avatar
Dr. Shadowborg
InsideQC Staff
 
Posts: 1110
Joined: Sat Oct 16, 2004 3:34 pm

Postby metlslime » Mon Jul 06, 2009 7:07 am

there is client-side looping on sprites (framegroups) just like in models. Not sure what sprite tools support it though.
metlslime
 
Posts: 316
Joined: Tue Feb 05, 2008 11:03 pm

Postby metlslime » Mon Jul 06, 2009 7:07 am

....or engines.
metlslime
 
Posts: 316
Joined: Tue Feb 05, 2008 11:03 pm

Postby leileilol » Mon Jul 06, 2009 9:35 am

metlslime wrote:....or engines.


I know Qtest supported that feature
i should not be here
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Postby lukas2288 » Mon Jul 06, 2009 6:18 pm

i know that here is some example code in weapons qc:
void() s_explode1 = [0, s_explode2] {};
void() s_explode2 = [1, s_explode3] {};
void() s_explode3 = [2, s_explode4] {};
void() s_explode4 = [3, s_explode5] {};
void() s_explode5 = [4, s_explode6] {};
void() s_explode6 = [5, SUB_Remove] {};

void() BecomeExplosion =
{
self.movetype = MOVETYPE_NONE;
self.velocity = '0 0 0';
self.touch = SUB_Null;
setmodel (self, "progs/s_explod.spr");
self.solid = SOLID_NOT;
s_explode1 ();
};


so here is the new effect spr:

void() n_effect1 = [0, n_effect] {};
void() n_effect2 = [1, n_effect] {};
void() n_effect3 = [2, n_effect] {};
void() n_effect4 = [3, n_effect1] {};

void() NewEffect =
{
self.movetype = MOVETYPE_NONE;
self.velocity = '0 0 0';
self.touch = SUB_Null;
setmodel (self, "progs/neweffect.spr");
self.solid = SOLID_NOT;
n_effect1 ();
};


But how can i put it for example in FireRocket function to replace missile.mdl with animated NewEffect?
________
herbalaire
Last edited by lukas2288 on Thu Feb 03, 2011 6:19 am, edited 1 time in total.
lukas2288
 
Posts: 42
Joined: Sun Jun 14, 2009 4:40 pm

Postby Dr. Shadowborg » Mon Jul 06, 2009 6:59 pm

lukas2288 wrote:But how can i put it for example in FireRocket function to replace missile.mdl with animated NewEffect?


If this is an impact explosion, then just look in T_MissileTouch and replace the BecomeExplosion(); with NewEffect();. (note that you have a bug in your animation code that will cause the animation to never dissappear and continue to animate.)

If this is for a projectile animation, then what you need to do is add something like this:

Code: Select all
void() PlasmaThink =
{
  self.frame = self.frame + 1; // Advance frame by one every think.

  if(self.frame > 3)  // start from beginning of animation if it's time
   self.frame = 0;

  if(self.attack_finished <= time) // Remove if lifetime is exceeded
   remove(self);

  self.think = PlasmaThink;
  self.nextthink = time + 0.01; // this is the anim framerate speed
};


Then, in FireRocket or whatever change this:

Code: Select all
missile.nextthink = time + 5;
missile.think = SUB_Remove;

setmodel(missile, "progs/missile.mdl");


To this:

Code: Select all
missile.frame = 0; // set what frame it starts at
missile.nextthink = time + 0.01; // set nextthink time
missile.think = PlasmaThink; // set what it's supposed to think about
missile.attack_finished = time + 5; // dissappear in 5 secs if no impact

setmodel(missile, "progs/neweffect.spr"); // set model to new plasma sprite
User avatar
Dr. Shadowborg
InsideQC Staff
 
Posts: 1110
Joined: Sat Oct 16, 2004 3:34 pm

Postby metlslime » Mon Jul 06, 2009 9:37 pm

leileilol wrote:
metlslime wrote:....or engines.


I know Qtest supported that feature


Well, glquake broke a bunch of stuff with sprites (e.g. orientations) and models (i.e. only correctly supports 2- or 4- frame skingroups) so it could have broken sprite framegroups too. And since glquake is the daddy of a bunch of engines out there, if glquake broke it, it's likely broken in a bunch of engines.
metlslime
 
Posts: 316
Joined: Tue Feb 05, 2008 11:03 pm

Next

Return to QuakeC Programming

Who is online

Users browsing this forum: No registered users and 1 guest