|
0 registered members (),
631
guests, and 2
spiders. |
|
Key:
Admin,
Global Mod,
Mod
|
|
|
Crash in (some) action
#280604
07/23/09 13:57
07/23/09 13:57
|
Joined: Oct 2008
Posts: 679 Germany
Ayumi
OP
User
|
OP
User
Joined: Oct 2008
Posts: 679
Germany
|
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)
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
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);
}
}
|
|
|
Re: Crash in (some) action
[Re: Ayumi]
#280621
07/23/09 15:34
07/23/09 15:34
|
Joined: May 2004
Posts: 1,510 Denmark
Claus_N
Serious User
|
Serious User
Joined: May 2004
Posts: 1,510
Denmark
|
maybe you need to allocate memory for 'partpos1' before using the vec_set command?
partpos1 = malloc(sizeof(VECTOR));
Last edited by Claus_N; 07/23/09 15:35.
|
|
|
Re: Crash in (some) action
[Re: Widi]
#280721
07/23/09 23:11
07/23/09 23:11
|
Joined: Oct 2008
Posts: 679 Germany
Ayumi
OP
User
|
OP
User
Joined: Oct 2008
Posts: 679
Germany
|
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
Last edited by Ayumi; 07/23/09 23:25.
|
|
|
|