Hey Guys,

currently doing some procedural level generation, this is my code. If I am reaching the middle of my blocks, the last one should be deleted and a new one is generated before the first one. Everytime when I am trying to remove the last block it crashes (sys_crash in block_guard). Usual stuff, thats why I took a break from Lite-C. I tried wait, I tried exporting it to a new function and ending this with proc_kill. Also by removing the "hinten" Pointer and so on, so there were no invalid pointer. Ideas are appreciated...

Code:
#define vor skill1
#define hinter skill2
#define mitte skill3
ENTITY* runner;
ENTITY* vorne = NULL;
ENTITY* hinten = NULL;
function block_guard()
{
	set(my,LIGHT);
	my.vor = 0;
	my.hinter = 0; 
	while(me)
	{	
		c_trace(my.x,vector(my.x,my.y,my.z+100), IGNORE_ME);
		if(you){
			if(you == runner){
				my.green =255;my.blue=255;my.red=255;
				if(my.mitte == 1){
					ent_remove(hinten);
					return;
				}
			}
		}
		c_trace(my.x,vector(my.x+8,my.y,my.z),IGNORE_ME);
		if(you){my.vor = 1;
		}
		c_trace(my.x,vector(my.x-8,my.y,my.z),IGNORE_ME);
		if(you){my.hinter=1;
		}
		if(my.vor == 1 && my.hinter == 1){my.green = 255; my.red = 0; my.blue = 0;
		}
		if(my.vor == 0 && my.hinter == 1){my.blue = 255; my.red = 0; my.green = 0; vorne = me;
		}
		if(my.vor == 1 && my.hinter == 0){my.red = 255; my.green = 0; my.blue = 0; hinten = me;
		}
		if(my.hinter==1&&my.vor==1){
			c_trace(my.x,vector(my.x-8,my.y,my.z),IGNORE_ME);
			if(you.hinter == 1){
				c_trace(my.x,vector(my.x+8,my.y,my.z),IGNORE_ME);
				if(you.vor == 1){
					reset(my,LIGHT);
					my.mitte = 1;
				}
			}
		}
		wait(1);
	}
}



Last edited by TheLiam; 06/11/11 12:29.

"Ich weiss nicht genau, was Sie vorhaben, aber Sie können keine Triggerzonen durch Ihr Level kullern lassen."
-JCL, 2011