Probleme mit ent_decal in Version 7.82

Posted By: the_clown

Probleme mit ent_decal in Version 7.82 - 04/06/10 12:05


Nach dem Updaten meiner A7 Version auf 7.82 habe ich folgendes Problem festgestellt:
Ich nutze in zwei meiner älteren Projeckte ent_decal, für Einschusslöcher sowie für Blutflecken;
Nun habe ich in dem einen Projekt das Problem, das die Engine mir einen "dangerous instruction" Error ausgibt, wenn die Funktion zum Platzieren der Blutflecke aufgerufen wird, in dem anderen gibt es keine Fehlermeldung, die Decals erscheinen aber nicht. Bei den Einschusslöchern gibt es interessanterweise keine Probleme, sie erscheinen und verhalten sich wie zuvor.

Dies ist die Funktion zum Platzieren der Blutflecken, wie sie im ersten Projekt geschrieben ist:

Code:
function bloodPlaceDecal()
{
	///////////////////////////////////////////////////////////////////
	/// trace from TRACEFROM down
	///////////////////////////
	c_trace(my.x,vector(my.x+random(300) - random(300),my.y+random(300) - random(300),my.z-500),IGNORE_MODELS | IGNORE_PASSABLE);
	///////////////////////////////////////////////////////////////////////////
	if (HIT_TARGET)///target hit?
	{
	
	   PARTICLE* p = ent_decal(0,goreBmap001,random(80)+random(20),random(360));
	   p->flags |= TRANSLUCENT;
	   p->lifespan = 3600;
	   p->alpha = random(100);
	   p->size += 30 + random(20);
	   p->material = mat_gore;
	}
}



Und hier die Funktionen, wie sie im anderen Projekt geschrieben sind:
Code:
//////////////////////////////////////////////////////////////////////////////////////////////////////
/// function to place blood decal and emit effect

function targetBloodFX()  // to be called after a c_trace
{
	/////////////////////////////////////////////////////////////////////////////////////////////////////////
	if(you)
	{
		vec_scale(normal,2);
		effect(bloodFX01,2+random(2),target.x,normal);
		//
		PARTICLE* p = ent_decal(you,gore_hole001Bmap,random(35)+random(5),random(360)); // place a random sized decal at the hit entity 
		
		p->flags |= TRANSLUCENT;
		p->lifespan = 3600;
		p->alpha = random(20)+80;
	//	p->size +=  50 + random(50);
		p->material = mat_gore;
		
	}
	else
	{
	
		PARTICLE* p = ent_decal(0,gore_bmap001,random(90)+random(10),random(360));
	
		p->flags |= TRANSLUCENT;
		p->lifespan = 3600;
		p->alpha = random(40)+60;
	//	p->size += 50 + random(50);
		p->material = mat_gore;
	}
	//////////////////////////////////////////////////////////////////////////////////
	
}
////////////////////////////////////////////////////////////////////////////////
//// Here's a function that spawns a bloody decal 

function traceForBlood(VECTOR* from, VECTOR* to,ENTITY* ent, var range)
{
        you = ent;
	////////////////////////////////
	vec_add(to,vector(random(range)+random(range),random(range)-random(range),random(range)-random(range)));	
	/////////
	result = c_trace(from,to,IGNORE_ME | IGNORE_YOU | IGNORE_PASSABLE | SCAN_TEXTURE);
	if (HIT_TARGET && result <= 300)///target hit?
	{
		targetBloodFX(); 
	}
}



Ich entschuldige mich für die langen Codestücke, aber ich möchte gerne jede mögliche Fehlerquelle einbeziehen.
Nochmal, die Fehlermeldung lautet lediglich "dangerous instruction in event bloodPlaceDecal", beziehungsweise ist nicht vorhanden.
Ich hoffe, dass ich mich verständlich ausgedrückt habe und dass eine Lösung möglich ist.
Posted By: jcl

Re: Probleme mit ent_decal in Version 7.82 - 04/08/10 14:40

Ich sehe gar keine Events in Ihrem geposteten Code - die "Dangerous Instruction" wird also von woanders in Ihrem Skript ausgelöst. Das sollten Sie aber leicht selbst fixen können, viele Möglichkeiten gibt's ja nicht.

Die Engine hat sicherlich keinen Zensor-Modus, der Blutflecken unterdrückt, Einschusslöcher aber nicht. Vergleichen Sie beide Codes und auch die Image-Formate. Dann müssten Sie irgendeinen Unterschied feststellen können.
Posted By: the_clown

Re: Probleme mit ent_decal in Version 7.82 - 04/11/10 10:24

FÜr die Fehlermeldung hat sich bereits eine Lösung gefunden, sie wurde aber durchaus durch eine Zeile in meinem geposteten Code ausgelöst - offensichtlich bezieht sich das Wort "event" hier nicht auf eines, wie wir es aus lite-c kennen, sondern auf die tatsächliche Übersetzung - die Engine hat lediglich ein kritisches Ereignis festgestellt.
Auch für meine anderen Probleme hat sich zumindest eine Erklärung gefunden, insgesamt lässt sich alles auf die c_trace Anweisungen zurückführen. Die scheinen sich in 7.82 anders zu verhalten als zuvor.
Danke aber für die Antwort.
Posted By: jcl

Re: Probleme mit ent_decal in Version 7.82 - 04/14/10 12:56

"Event" ist eine durch ein Ereignis, wie z.B. ein Treffer mit c_trace, getriggerte Funktion. Das finden Sie unter "Event" im Handbuch. In einer solchen Event-Funktion dürfen Sie bestimmte Befehle erst nach einem wait() verwenden, sonst bekommen Sie diese Fehlermeldung.
© 2024 lite-C Forums