Error E1513

Posted By: Meerkat

Error E1513 - 10/21/07 15:12

Nabend zusammen,

ich habe folgendes vor und auch folgendes Problem. Ich möchte einen FPS Shooter bauen und arbeite zur Zeit sehr gut mit dem FPS-Tutorial von Grimber (http://au.conitec.net) zusammen. Leider bin ich aber an einem Punkt gekommen wo entweder ich die ganze Zeit nen Fehler im Script mache oder aber der Tutorialschreiber was verschrieben hat. Ich musste leider feststellen das das Tutorial sehr veraltet ist, und somit auch einige Syntaxe. :-/ Die hab ich glücklicherweise aber selbst alle beheben kommen. Nur komme ich jetzt halt nicht mehr weiter wo ich ein Projektil verschiesse, an der Wand ein Sprite generiert und ausgerichtet wird und dann das Projektil wieder gelöscht wird. Das löschen des Projektils ist mein momentaniges Problem!

Hier ist der Code, vielleicht findet ihr ja den Fehler.

Code:

function Bulletholeausrichtung
{
my.push = 1;
my.scale_x = 0.2;
my.scale_y = 0.2;
vec_add(my.x, normal);
vec_to_angle(my.pan, normal);
my.transparent = on;
my.alpha = 60;
while(my.alpha > 1)
{
wait(-60);
my.invisible = on;
my.alpha = 0;

wait(1);
}

}

/*var temp2[3];

function spawn_sprite()
{
temp.x = 635;
temp.y = 478;
temp.z = 0;
vec_for_screen(temp, camera);
temp2.x = 635;
temp2.y = 478;
temp2.z = 20000;
vec_for_screen(temp2, camera);
c_trace(temp, temp2, ignore_me | ignore_passable | use_box);
ent_create("bullethole.png", target, Bulletholeausrichtung);
}*/

function bullet_event
{
if(event_type == event_block)
{
ent_create("bullethole.png", my.x, Bulletholeausrichtung);
ent_remove(me);
}
/*if(event_type == event_entity)
{

}*/
}

action Bullet
{
my.enable_block = on;
//my.enable_entity = on;
my.event = bullet_event;

my.scale_x = 0.1;
my.scale_y = 0.1;
my.scale_z = 0.1;
my.pan = camera.pan;
my.tilt = camera.tilt;
while(1)
{
c_move(my, vector(30*time_step, 0, 0), nullvector, ignore_you | glide);
my.roll += 60*time_step;

wait(1);
}
}

var bullettemp[3];
function spawn_bullet()
{
vec_set(bullettemp.x, player.x);
ent_create("bullet.mdl", bullettemp, bullet);
}




Um Hilfe bin ich wie immer sehr dankbar!

MfG: Meerkat
Posted By: jermy

Re: Error E1513 - 10/21/07 15:55

Da bin ich auch stecken geblieben, ich kann schauen ob ich meinen code noch finde und ihn hier reinkopieren. Der ist am ende in c-skript gelaufen, jedoch wollte ich ihn dann in .c konvertieren, aber das hat noch nicht geklappt
Posted By: rvL_eXile

Re: Error E1513 - 10/21/07 16:02

Mach einfachm maln Wait(2): rein:

Code:

function bullet_event
{
if(event_type == event_block)
{
ent_create("bullethole.png", my.x, Bulletholeausrichtung);
wait(2);
ent_remove(me);
}
/*if(event_type == event_entity)
{

}*/
}


Posted By: jermy

Re: Error E1513 - 10/21/07 16:08

also:


Du hast irgendwo die function run_weapons? hier sollte unter anderem if(mouse_left) stehen, dann wird bei mir der Schuss ausgelöst und unter anderem auch meine eigens geschriebene function sprite_machen. Du kannst ja einfach die funktion so übernehmen und deinen schuss so lassen wie er ist, denn der funktioniert doch?

Code:
 
function run_weapons()
{[...]
if (mouse_left && (my.ammo > 0))
{
snd_play(pistol_s, 50,100);
sprite_machen();
my.ammo -=1;
[...animation]
}


function sprite_machen()
{
vec_set(temp.x,camera.x);
vec_set(temp2,vector(20000,0,0));
vec_rotate(temp2,camera.pan);
vec_add(temp2,camera.x);
Trace_mode = ignore_me + ignore_passable+ignore_passents;
trace(temp,temp2);
ent_create("bulhole.tga",target,bullet_hole);
}


action bullet_hole
{
vec_to_angle(my.pan, NORMAL);
my.scale_x = .3; //grösse
my.scale_y = .3;
my.scale_z = .3;
my.passable = on;
my.oriented = on;
my.flare = on;
my.overlay = on;
my.alpha = 80;
my.transparent = on;
sleep(10); // nach 10 sekunden löschen
while (my.alpha > 0)
{
my.alpha -= 1*TIME;
wait(1);
}
ent_remove(me);
}



ich habe nicht sonderlich viel kommentiert aber wenn du willst kann ich dir erklären wie er funktioniert
Posted By: Meerkat

Re: Error E1513 - 10/21/07 16:29

Hey cool, vielen lieben Dank rvL_eXile. Das war die Lösung. Und auch danke für die anderen Lösungsvorschläge. ^^
Posted By: Xarthor

Re: Error E1513 - 10/21/07 17:18

Auch wenn das problem gelöst ist, es is schlechter stil aus einer event function heraus etwas zu entferne, da es, wie beobachtet, zu problem führen kann.
Daher empfehle ich folgende lösung:
Code:

function bullet_event
{
if(event_type == event_block)
{
my.event = null;
ent_create("bullethole.png", my.x, Bulletholeausrichtung);
my.skill1 = 0;
}
/*if(event_type == event_entity)
{

}*/
}

action Bullet
{
my.enable_block = on;
//my.enable_entity = on;
my.event = bullet_event;

my.scale_x = 0.1;
my.scale_y = 0.1;
my.scale_z = 0.1;
my.pan = camera.pan;
my.tilt = camera.tilt;
my.skill1 = 1;
while(my.skill1)
{
c_move(my, vector(30*time_step, 0, 0), nullvector, ignore_you | glide);
my.roll += 60*time_step;

wait(1);
}
wait(1);
ent_remove(me);
}


Posted By: Meerkat

Re: Error E1513 - 10/21/07 18:14

Hey danke, ich werde das morgen mal ausprobieren.
© 2024 lite-C Forums