Diese Statusnachricht tauchte eben wieder mitten in einem acklog auf, sehr merkwürdig!
Komplettes Projektverzeichnis per SED danach durchsucht, in meinem Header benutze ich nur folgendes an externen Bibliotheken:

Code:
#include <acknex.h>
#include <default.c>
#include <particles.c>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <default.c>
#include <strio.c>
#include <d3d9.h>
#include <acknet.h>




Davon unabhängig habe ich derzeit ein Problem mit meinem Code, und zwar dass eine bestimmte Entity Aktion mit regulärer while loop gelegentlich (!) nicht durch level_load() beendet wird, als sei PROC_GLOBAL gesetzt oder der me pointer verändert worden/ auf NULL gesetzt (zumindest glaube ich, dass das das entsprechende Verhalten ist).
Die Struktur ist so ziemlich die folgende:

Code:
var enemyFreeze = 0;
#define EFWAIT while(enemyFreeze) wait(1)

action robot()
{
	//proc_mode = PROC_GLOBAL;
	my.skill1 = 64;
	while(my.skill1 > 0)
	{
		EFWAIT;
		sys_marker("ME1");
		diag_var("\n enemy death loop at frame %.0f",total_frames);
		diag_var(" with pointer %.5f",me); // just to differentiate different enemies
		my.pan += 5*time_step;
		sys_marker(NULL);
		my.skill1 -= time_step;
		wait(1);
	}
	ptr_remove(me);
}

void main()
{
	fps_max = 60;
	level_load(NULL);
	ent_create(CUBE_MDL,vector(100,0,0),robot);
	while(!key_space) wait(1);
	enemyFreeze = 1;
	wait(1);
	diag_var("\n ##### loading new level at frame %.0f",total_frames);
	level_load(NULL);
	enemyFreeze = 0;
}


Mir ist klar, dass diese Code Struktur nicht allzu gut ist mit der internen define Loop, aber bis zur Vollendung dieses jahrealten Projektes wollte ich sie beibehalten.
So oder so sollte es aber eigentlich keinen Absturz durch Zugriff auf den my pointer in der robot loop geben. Der Pointer wird zwar durch level_load korrekt auf 0 gesetzt wird, aber da die Aktion selbst nicht beendet wird, kommt es unweigerlich zum Crash.
Das vorherige Code Beispiel stürzt nicht ab, der entsprechende Code in meinem Projekt aber sehr wohl, wenn auch nur gelegentlich. acklog spuckt dann folgendes aus:
Quote:
enemy death loop at frame 6514 with pointer 303994.56250
enemy death loop at frame 6515 with pointer 303994.56250
##### loading new level map39.wmb at frame 6634
LevelInit at 130.194
20 entities 0 cameras 0 lights 0 sounds 0 paths
1 lmaps 2 textures 3 meshes 3 submeshes 36 faces...ok
LevelReady at 130.264
enemy death loop at frame 6639 with pointer 0.00000
Error E1513: Script crash in enemy_mobile2: ME1
Normal exit at 134.342


Was könnte dieses Verhalten in meinem Projekt verursachen (welches übrigens nur bei dynamisch erstellten Entitys aufzutreten scheint)? Ich rufe in der robot-Aktion keine Subroutine auf, welche direkt PROC_GLOBAL setzt. Stattdessen scheint es eine andere externe Ursache haben zu müssen, aber ich weiß nicht wirklich, wo ich suchen kann oder muss.


"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual

Check out my new game: Pogostuck: Rage With Your Friends