Fackel effect Problem.

Posted By: White_Wolf

Fackel effect Problem. - 09/01/10 16:52

Hallo,

ich habe ein Fackelscribt aus einen Tutorial genommen. Leider bekomme ich bei A8 einen Crash wenn ich das Level starte in dem sich die Fackel befinden und der das Script zugewiesen ist (E1513 script crash in fackel). Wenn ich das selbe Level mit A7 starte stürtzt das Level nicht ab und der Partikeleffect funktioniert einwandfrei. Woran kann das liegen?

Code:
BMAP* fire_tga="fire.tga";
ENTITY* fackel_ent;
function fackel();
//function flamme();



function verschwinden(PARTICLE *p)
{
	p.alpha -= 4 * time_step;
	if(p.alpha <= 0) p.lifespan = 0;
}

function flamme(PARTICLE *p)
{
	p.bmap = fire_tga;
	p.size = 5;
	p.x += random(2)-1;
	p.y += random(2)-2;
	p.z += random(1)+2;
	p.vel_x = random(1)-0.5;
	p.vel_y = random(1)-0.5;
	p.vel_z = random(4)+1;
	p.vel_z -= vec_dist(p.x,fackel_ent.x)/10;
	p.alpha = random(25)+25;
	p.flags |= (BRIGHT | MOVE);
	p.event = verschwinden;
}

function fackel()
{
	VECTOR temp;   // ein lokaler Vexctor
	fackel_ent = me; //
	while(1)		// Feuer brennt die ganze Zeit
	{
	vec_for_vertex(temp,me,86); // Setzt den Lokalen Vector auf 86 Vertex der Fackel
	effect(flamme, 10,temp,normal);  // angabe zum Bewegungsvector
	wait(1);          //warte
	}
}



Tschau
White_Wolf
Posted By: Pappenheimer

Re: Fackel effect Problem. - 09/01/10 19:11

Kannst Du nicht darauf kommen, in dem Du die Zeilen einzeln auskommentierst, bis Du auf die fehlerhafte Zeile stößt?
Posted By: White_Wolf

Re: Fackel effect Problem. - 09/02/10 05:01

Hallo,

durch auskommentieren bin ich darauf gekommen das es die effecktzeile (diese zeile: effect(flamme,10,temp,normal);) der fackel funktion ist die den Fehler in A8 verusacht.

Aber warum sie das tut weiß ich nicht. Hat jemand eine Idee?

Tschau
White_Wolf
Posted By: jane

Re: Fackel effect Problem. - 09/02/10 10:33

Ich denke mal da fehlt ein Parameter. Im Handbuch sind in der effect_sprite
Funktion 5 Parameter :

effect_sprite(STRING*image,EVENTfunc,var number,VECTOR*pos,VECTOR*vel)

die effect(... ist wohl laut der particles.c (die ja integriert werden
muss)nur für Partikel-Funktionen zu benutzen.
Posted By: Espér

Re: Fackel effect Problem. - 09/02/10 11:51

@jane: Das ist ein Partikel Code.... Zu erkennen an "PARTICLE* p" anstelle von "ENTITY* p"


Hast du schonmal nachgesehen, ob du nicht irgendwo eine variable oder zweite Funktion hast, die heißt wie eins deiner Objekte?
Bzw.. Versuch mal den VECTOR global zu machen.. (kp ob's hilft)
Posted By: bodden

Re: Fackel effect Problem. - 09/02/10 12:13

Ich habe den Code mal bei mir laufen lassen (V 8.0.2 Com). Läuft ohne Fehler (außer daß die Flamme nach unten geht statt, wie vermutlich geplant, nach oben.

Wie/wo hast du den ent_create für die Fackel eingebaut? Kannst du diesen Code noch posten?

Gibt es bei deinem Fackel-Model auch einen Vertex #86, auf den du mit vec_for_vertex ja verweist?
Posted By: White_Wolf

Re: Fackel effect Problem. - 09/02/10 13:50

Hi,

@bodden

Habe keine ent_crate anweisung für die Fackel, da sie Statich (sprich also fest) im Level plaziert ist (sprich per WED plaziert wurde und das Script zugeiwesn ist). Ja den Vertex gibt es. Ich könnte dir ja mal die Fackel schicken und du brobierts es mit meiner Fackel (nicht das da irgenein modell Fehler Vorliegt). Aber was mich ja am meisten wundert das es mit A7 geht (Version 7.86) nur mit der A8 (V 8.02) nicht (zumindest bei mir). Werde es mal in einen leeren level mit nur der Fackel testen. Mal sehen obst da geht.

Edit: Hmm im dem Testlevel geht es auch einwandfrei. Nur in dem anderen Level nicht. Stellt sich also die Frage wo der Unterschied zwischen den 2 Levels ist. Und wie man den Unterschied findet. Jemad eine idee wie ich das am besten rausfinde?

Tschau

White_Wolf


Posted By: MasterQ32

Re: Fackel effect Problem. - 09/02/10 14:27

ich hab zwar keine Lösung, hatte aber auch ein ähnliches Poblem:
Eine Zeile code, die NIE aufgerufen wurde, aber einen Script-Crash(den selben) verursacht hat.
meine lösung war dann etwas komisch:
Code:
STRING* str_temp = str_create("hallo");
//Hier der Code, der crashed
ptr_remove(str_temp); //Objekt wieder löschen, da es nicht gebraucht wird.

vllt. funktioniert es dann auch bei dir
Posted By: WretchedSid

Re: Fackel effect Problem. - 09/02/10 15:04

Richi, tu mir bitte den gefallen und schreib in den Kommentaren zu deinem Code folgendes:
Code:
// Extreme dirty black vodoo hack. May break at any time fucking up your whole project


Posted By: White_Wolf

Re: Fackel effect Problem. - 09/04/10 11:38

Hallo,

habe noch ein wenig rumprobiert und festgestellt, das wenn ich mein Level über das Mainmenüscribt starte kommt es zu dem fehler, wenn ich direkt über das Mainscript starte (sprich über die Mainfunktion) kommt es nicht zu dem Fehler und es funktioniert einwandfrei. Dabei ist es egal ob das Mainmenüscript auskommentiert ist oder nicht. Was kann hierfür die ursache sein? Hier mal das Startscribt des Menüscriptes zum aufrufen des Levels.

Code:
function start_game()
{
//	media_stop(x); 
	pannel_aus();
//	set(lev1,SHOW);
  // wait(16);
   //reset(lev1,SHOW);
	game_started = 1;
	mouse_mode = 0; // hide the cursor
	
	level_load("level1.WMB");
	wait (2);
	//media_loop ("lied1.wav",NULL,m_vol);
	//snd_loop(wave,m_vol,0);
   //x = media_handle;
// 	load_status();  // lade generelle Skills
//	sonnen_pos();
	//show_panels();  // AMMO und Lebensenergie anzeigen
//	set(my_panel,SHOW);
	//msg.string = mission_str;
//	inventar();
//	rain();
	//inv_pan.SHOW = on;
  
  //  tasten_neu();
  // texture_scan();
    // mouse_toggle();
    // init_nvision();
   //nacht_glas();
//  	ON_T = light_toggle();
//	schw_level1();
//	on_f = light_toggle();
}



Tschau
White_Wolf
Posted By: jane

Re: Fackel effect Problem. - 09/05/10 14:06

Bei einem ähnlichen Problem mit einem Rauch-Effekt (hatte allerdings eine
andere Fehlermeldung) habe ich im particel-emitter-script statt der
while(1) ---> while(me) benutzt, damit waren die Probleme behoben.
War also warscheinlich ein Pointer-Problem.
Posted By: White_Wolf

Re: Fackel effect Problem. - 09/06/10 13:21

Hi,

@jane

habe es ausprobiert leider behebt dies nicht das Problem.

Hatt noch jemand anders eine Idee? Wie gesagt wenn ich es über das Mainscript direct aufrufe geht es. Nur wenn ich es über das Sribt meines Selbsterstellten Menüs (mit eigenen Level) aufrufe geht es nicht.

Tschau
White_Wolf
Posted By: jane

Re: Fackel effect Problem. - 09/06/10 15:16

Habe mal ein par Tests gemacht und versucht ein Level direkt aus einem
script heraus zu starten, keine Chance. Du musst grundsätzlich über eine
main gehen, in der Du ein leeres Level lädst und dein Menü anzeigen lässt.
In der Buttonfunction lade dann dein Startlevel per Levelwechsel-Funktion
und die Fackeln brennen.
Posted By: muffel

Re: Fackel effect Problem. - 09/06/10 15:48

Nur eine Vermutung:
ersetzte den normal Vector mit irgendeinem anderen Vector
Beispiel:
Code:
function fackel()
{
	VECTOR temp , temp2;   // ein lokaler Vexctor
	fackel_ent = me; //
        vec_set( temp2 , vector( 0 , 0 , 1 ) );
	while(1)		// Feuer brennt die ganze Zeit
	{
	vec_for_vertex(temp,me,86); // Setzt den Lokalen Vector auf 86 Vertex der Fackel
	effect(flamme, 10,temp,temp2);  // effect(flamme, 10,temp,normal);
	wait(1);          //warte
	}
}



muffel
Posted By: jane

Re: Fackel effect Problem. - 09/06/10 18:07

Sorry, geht auch nicht. Habe gerade mal versucht das Level per Tastendruck
zu laden, immer wieder Fehlermeldung. Hier scheint es sich um einn Engine-
Bug zu handeln, denn wenn Du mal die Partikelzahl auf 1 statt 10 setzt funktioniert es fehlerfrei. Sowie Die Partikelzahl höher ist kommt die
Fehlermeldung E 1513.
Posted By: White_Wolf

Re: Fackel effect Problem. - 09/06/10 19:38

Hi,

@muffel

Funktiniert leider auch nicht.

@jane

Hast recht wenn man dei Partikelzahl auf 1 setzt geht es. Scheint also wirklich ein Bug zu sein, denn unter A7 geht es einwandfrei. Nur bei A8 geht es nicht wenn das Level aus einen sript heraus geladen wird anstatt aus der Main Funktion.

Wie kann ich den Bug jetzt am besten im Bug forum posten ohne des es als dopple poste (da er ja hier schon ist) gilt?

Tschau
White_Wolf
Posted By: jane

Re: Fackel effect Problem. - 09/06/10 20:40

Am besten einen Post in Bug-Hunt mit einem Link zu diesem Thread.
Posted By: White_Wolf

Re: Fackel effect Problem. - 09/07/10 14:40

Hi,

habe wie es jcl empfolen hat, nochmals durchgetestet und dabei folegndens festgestellt. Das Probelm tritt nur auf wenn ein Level wechsel stattfinden soll und im dem 2 Level das Fackelsript verwendet wird. Läde man das Level mit dem Fackelcode als erstest Funkctioniert der Code (im 1 Level), sobald man aber das level dann nochmal (sprich wechelt) läd (egal ob es das selbe level oder anders mit dem Fackelcode ist) kommt beim wechel (beim Laden des 2 levels) der fehler. Wenn man nur das Level in dem die Fackeln mit dem Fackelscript sind läd (egal ob über main Funktion oder über ein script welches per Mainfunktion aufgerufen wird) funktioniert es. Da in A7 dieses Problem nicht, müssete der Code (Lite-C) selbst ja in Ordnung sein. Nur in A8 geht es komischerweise nicht.

Hier nochmal der code von dem kleine neuen Testlevel:

Code:
BMAP* fire_tga="fire.tga";
ENTITY* fackel_ent;
function fackel2();
//var 
//function flamme();



function verschwinden(PARTICLE *p)
{
	p.alpha -= 4 * time_step;
	if(p.alpha <= 0) p.lifespan = 0;
}

function flamme(PARTICLE *p)
{
	p.bmap = fire_tga;
	p.size = 5;
	p.x += random(2)-1;
	p.y += random(2)-2;
	p.z += random(1)+2;
	p.vel_x = random(1)-0.5;
	p.vel_y = random(1)-0.5;
	p.vel_z = random(4)+1;
	//p.vel_z -= vec_dist(p.x,fackel_ent.x)/10;
	p.alpha = random(25)+25;
	p.flags |= (BRIGHT | MOVE);
	p.event = verschwinden;
}

function fackel2()
{
	VECTOR vTemp,vTemp2;   // ein lokaler Vexctor
	fackel_ent = me; //
	vec_set(vTemp2,vector(0,0,1));
	//wait(-5);
	while(1)		// Feuer brennt die ganze Zeit
	{
	vec_for_vertex(vTemp,me,86); // Setzt den Lokalen Vector auf 86 Vertex der Fackel
	effect(flamme,20,vTemp,vTemp2);  // angabe zum Bewegungsvector
	wait(1);          //warte
	}
}


///////////////////////////////////////////


function start()
{
wait(-10); // warte eine weile
level_load("testlevel.WMB");	// Level wechseln
}

function main()
{
	level_load("testlevel.wmb");  // 1 Level laden
	wait(-5);
	start();
}



Stellt sich also die Frage, muss man noch was machen bevor man das in neue Level wechslet (igrendwas resetten, oder laden?)?

Tschau

White_Wolf
Posted By: WretchedSid

Re: Fackel effect Problem. - 09/07/10 14:52

Du trollst nur, richtig? Bitte sag mir das du nur trollst D:
Posted By: muffel

Re: Fackel effect Problem. - 09/07/10 15:03

Wie rufst du eigentlich die Funktion auf??
vllt hilft diese Information weiter.

muffel
Posted By: White_Wolf

Re: Fackel effect Problem. - 09/07/10 15:28

hi,

@muffel

die Fackelfunktion (die function fackel2) ist der Fackel direct in wed zugewiesen da die fackel fest im level plaziert ist (die fackel wird also nicht ber ent_create erstellt sondern ist in wed plaziert wurden).

@JustSid

was soll denn das bedeuten? Das ich nur mist rede???? Test es doch selber wenn du mir nicht glaubst das dieses Probelm gibt.

Tschau

White_Wolf
Posted By: muffel

Re: Fackel effect Problem. - 09/07/10 15:58

sollte es dann nicht eine action anstatt einer function sein??

Click to reveal..

so sollte es sein
Code:
action fackel2()
{
   ...
}


so ist es im deinem Code
Code:
function fackel2()
{
   ...
}




muffel
Posted By: White_Wolf

Re: Fackel effect Problem. - 09/07/10 16:28

Hi,

@muffel

Kann man machen dann muss man sie nicht oben nochmal definieren (wenn man action nimmt).
leider besteht der fehler trotzdem. Auch wenn ich action statt function für das script nehme.

Tschau

White_Wolf
Posted By: Tobias

Re: Fackel effect Problem. - 09/07/10 16:54

Wenn du ein Projekt hast in dem nur die Fackel ist und der Fehler beim zweiten Level Laden auftritt, solltest du es ins Bugforum hochladen. Vielleicht ist es wirklich ein A8 Bug.
Posted By: WretchedSid

Re: Fackel effect Problem. - 09/07/10 17:03

Ich mag mich täuschen, aber funktionen werden nicht beim Levelwechsel beendet.
Also läuft auch die while schleife in fackel2 ewig weiter. Nur me wird nach dem laden invalid und es kommt zum crash.


Und nein, nur um das zu testen werde ich jetzt nicht extra windows booten.
Posted By: jane

Re: Fackel effect Problem. - 09/07/10 18:40

Klar werden beim Levelwechsel alle Funktionen beendet, da ja der Cache mit allen Level-Dateien und -Objekten geleert wird, ergo werden auch alle Actions oder Funktionen dieser Objekte beendet. In dem Moment wenn die Objekte mit dem
Partikel-Effekt im neu ladenden Level Ihre Funktion wieder aufnehmen wollen
kommt es zum Crash, sobald die Partikel-Zahl einen anderen Wert als 1 hat.
Also selbst wenn vorher eine var z.B. var anzhal = 1; deffiniert wurde und
diese statt der 1 als Partikelzahl eingefügt wird kommt die Fehlermeldung.
Posted By: nfs42

Re: Fackel effect Problem. - 09/07/10 20:18

du sicherst ja die aktuelle wed-entity mit
Code:
fackel_ent = me; //


aber dann solltest du auch diesen pointer in der while-schleife verwenden
Code:
vec_for_vertex(vTemp,fackel_ent,86); // Setzt


da me/my nach jedem wait einen anderen wert haben kann.
Posted By: White_Wolf

Re: Fackel effect Problem. - 09/08/10 04:53

Hi,

@nfs42

habe es getestet. Leider löst das das problem nicht das beim levelwechsel der Fehler kommt. Weiterhin verurscht es ein neues Problem, und zwar wenn ich zwei Fackel habe die beide das Script haben brennt dann nur eine von beiden.

Tschau

White_Wolf
Posted By: Progger

Re: Fackel effect Problem. - 09/08/10 07:10

hast du denn auch max_particles in der function main geändert bzw. in der function main stehen?
MFG Progger
Posted By: bodden

Re: Fackel effect Problem. - 09/08/10 13:36

Scheint wirklich ein Bug zu sein. Konnte das ganze mal nachstellen, mit dem gleichen Ergebnis. Es ist auch egal, ob die Fackel-Entity über das script erstellt oder zusammen mit dem Level geladen wird. Außerem spielt es keine Rolle, ob das Level aus der Main-Funktion oder einer anderen geladen wird.

Das Problem liegt ganz klar bei der effect-Anweisung, nachdem ein zweites mal level_load benutzt wurde.

Nur mit Partikelzahl 1 funktionierts. Man kann sogar die effect Funktion mehrfach innerhalb einem Frames aufrufen (jeweils mit 1 Partikel), ohne daß es zu einem Absturz kommt.
Posted By: nfs42

Re: Fackel effect Problem. - 09/08/10 15:00

@White_Wolf: hatte ich mir fast gedacht ;-)
mehr als eine fackel brennen, wenn du
Code:
var fackel_ent = me; //


in der entity action verwendest.
© 2024 lite-C Forums