Crash in (some) action

Posted By: Ayumi

Crash in (some) action - 07/23/09 13:57

Hello,

I have had convert C-scipt particle code to lite c but
i have got an error.

Crash in magical_particles1.
Maybe, wrong parameter or skill?!
Don t know-.-
It s not a syntax mistake and i have look
in manual.

C-Script(original)
Code:
bmap dust = <dust.tga>;
var partpos1;
var partrad1;

function move_magical_parts1
{
	my.alpha+=(my.skill_a-my.alpha)/5*time;
	if(abs(my.alpha-my.skill_a)<2){randomize();my.skill_a=random(50);}
	if(abs(my.skill_x-my.skill_c)<2){randomize();my.skill_c=random(360);}
	if(abs(my.skill_y-my.skill_d)<2){randomize();my.skill_d=random(360);}
	if(abs(my.skill_z-(my.lifespan-400))<2){randomize();my.lifespan=random(360)+400;}
	if(abs(my.vel_x-my.vel_z)<2){randomize();my.vel_z=random(my.skill_b);}
	my.skill_x+=min((my.skill_c-my.skill_x)/200*time,  0.5);
	my.skill_y+=min((my.skill_d-my.skill_y)/200*time,  0.5);
	my.skill_z+=min((my.lifespan-my.skill_z-200)/50*time,  0.5);
	my.vel_x+=min((my.vel_z-my.vel_x)/220*time, 0.5);
	vec_set(my.x, vector(my.vel_x, 0,0));
	vec_rotate(my.x, vector(my.skill_x, my.skill_y, my.skill_z));
	vec_add(my.x, partpos1.x);
	my.lifespan=max(my.lifespan, 1);
}

function magical_parts1
{
	my.bmap=dust;
	my.size=3;
	my.flare=on;
	my.bright=on;
	my.alpha=50;
	my.skill_a=50;
	my.skill_b=partrad1;
	my.vel_x=random(my.skill_b);
	my.vel_z=random(my.skill_b);
	my.lifespan=400;
	my.function=move_magical_parts1;
}

action magical_particles1
{
	my.invisible=on;
	my.passable=on;
//	my.skill1=10;  // Numbers of Particles
//	my.skill2=50;  // Radius
	vec_set(partpos1.x, my.x);
	while(my.skill1>0)
	{
		randomize();
		partrad1=my.skill2;
		effect(magical_parts1, 1, vector(my.x+random(my.skill2)-(my.skill2/2), my.y+random(my.skill2)-(my.skill2/2), my.z+random(my.skill2)-(my.skill2/2)), nullvector);
		my.skill1-=1;
		wait(1);
	}
}



Lite-c converted by me

Code:
BMAP* dust_tga = "core.tga";
var* partrad1;
VECTOR* partpos1;


function move_magical_parts1(PARTICLE* p)
{
	p.alpha+=(p.skill_a-p.alpha)/5*time_step;
	
	if(abs(p.alpha-p.skill_a)<2)	
		{	
			random_seed(0);
			p.skill_a=random(50); 
		}
		if(abs(p.skill_x-p.skill_c)<2)
			{
				random_seed(0);
				p.skill_c=random(360);
			}
			if(abs(p.skill_y-p.skill_d)<2)
				{	
					random_seed(0);
					p.skill_d=random(360);
				}
				if(abs(p.skill_z-(p.lifespan-400))<2)
					{	
						random_seed(0);	
						p.lifespan=random(360)+400;
					}
					if(abs(p.vel_x-p.vel_z)<2)
						{	
							random_seed(0);
							p.vel_z=random(p.skill_b);
						}
	
	p.skill_x+=minv((p.skill_c-p.skill_x)/200*time_step,  0.5);
	p.skill_y+=minv((p.skill_d-p.skill_y)/200*time_step,  0.5);
	p.skill_z+=minv((p.lifespan-p.skill_z-200)/50*time_step,  0.5);
	p.vel_x+=minv((p.vel_z-p.vel_x)/220*time_step, 0.5);
	vec_set(p.x, vector(p.vel_x, 0,0));
	vec_rotate(p.x, vector(p.skill_x, p.skill_y, p.skill_z));
	vec_add(p.x, partpos1.x);
	p.lifespan=maxv(p.lifespan, 1);
}

function magical_parts1(PARTICLE* p)
{
	p.bmap=dust_tga;
	p.size=3;
	set(p,BRIGHT);
	p.alpha=50;
	p.skill_a=50;
	p.skill_b=partrad1;
	p->vel_x=random(p.skill_b);
	p->vel_z=random(p.skill_b);
	p.lifespan=400;
	p.event=move_magical_parts1;
}

action magical_particles1()
{
	
	//set(my, PASSABLE|INVISIBLE);
	//my.skill1=10;  // Numbers of Particles
	//my.skill2=50;  // Radius
	vec_set(my.x ,partpos1.x);
	while(my.skill1>0)
	{
		random_seed(0);
		partrad1=my.skill2;
		effect(magical_parts1, 1, vector(my.x+random(my.skill2)-(my.skill2/2), my.y+random(my.skill2)-(my.skill2/2), my.z+random(my.skill2)-(my.skill2/2)), nullvector);
		my.skill1-=1;
		wait(1);
	}
}


Posted By: Claus_N

Re: Crash in (some) action - 07/23/09 15:34

maybe you need to allocate memory for 'partpos1' before using the vec_set command?

partpos1 = malloc(sizeof(VECTOR));
Posted By: Widi

Re: Crash in (some) action - 07/23/09 18:01

Im writing in german because my english is not good enought to explain following:

Um einen Fehler einzugrenzen, gebrauche den Befehl "return;".
Setze diesen in die 2. Zeile der action magical_particles1().
Lass das Script laufen (run), wenn keine Fehlermeldung kommt, ist der code bis dahin ok. Schiebe return um eine Zeile nach unten, dasselbe wiederholt sich bis zu: effect(..). Schiebe return nun in die function magical_parts1(PARTICLE* p).

Und so weiter und so fort. So siehst du in welcher Zeile der Fehler liegt.

@Claus: for a vector you don`t have to allocate memory!
Posted By: Ayumi

Re: Crash in (some) action - 07/23/09 23:11

Danke euch.
Thx you.

... found it.
(Zu verdanken in erster Linie Rei_Ayanami,
da er auch alles ueber Partikel zur Zeit lernt)

Problem was:

VECTOR* partpos1; -->must be without "*"

and...

vec_set(my.x ,partpos1.x); ->must be "vec_set(partpos1.x. my.x );"


Und danke Vidi, das ist eine gute Idee

Posted By: Ayumi

Re: Crash in (some) action - 07/24/09 02:03

Weis noc jemand zufaellig, wie man die Geschwindigkeit
von Partikeln berechnet?
Weil ich machen kann, as ich will...die bewegen sich
sau schnell-.-

Sie sollen aber langsam sein(wie z.B. ein normal gehender
Mensch...meine Partikel sind abe bei 200m/h;))

Weis jemand Rat?


Anybody know something about particle speed?
My particle in the air are to quick, like a car with
200km/h...

Thx
© 2023 lite-C Forums