Hey

vielen Dank für deine rießige Erklärung, sie hat mir sehr viel geholfen.
2 Fragen habe ich noch :-/
In deinem Beispiel hast du die Datenposition in einem Skill gespeichert:
Code:
obj->ent->skill[99] = (int)(void*)obj;


und später wieder ausgelesen:
Code:
object* obj = (object*)ent->skill[99];


1. Frage: Warum benötigt man das "void"? Das int erscheint mir nach deiner Erklärung logisch, doch das "void" kann ich mir nicht erklären (was es bedeutet [Funktionstyp ohne Rückgabewert] weis ich einiger maßen), doch verstehe ich die Bedeutung in deinem Kontext nicht.
2. Frage: Ich habe nach deinem Beispiel versucht, mir ein Gegenstand zu programmieren, den ich anklicken kann und dann eine gespeicherte bmp-Datei aus dem Struct heraus zu laden. Es erzeugt aber ein script-crash:SYS und ich bin mir nicht sicher, was ich bei der Zuweisung falsch gemacht habe:

Der Fehler liegt im Event. Es läuft alles rund, solang ich die Zeile
Code:
pan_mausitem.bmap = fallengelassener_gegenstand.inventar_bild;

auskommentiert habe. Also müsste die Zuweisung auf "fallengelassener_gegenstand" im Event nicht richtig sein, aber da bin ich mit meinem Latein am Ende.

Code:
typedef struct
{
	ENTITY* ent_entity;	// der Entitypointer auf das Objekt im 3D-Raum, das gedroppt wurde
	BMAP* inventar_bild;
}gegenstand;

function testGegenstand_event()
{
	gegenstand* fallengelassener_gegenstand = (gegenstand*)my->skill[99];
	pan_mausitem.bmap = fallengelassener_gegenstand.inventar_bild;
}
function testGegenstand()
{
	while(enet_ent_globpointer(my) == ANET_ERROR) {wait(1);}
	my.event = testGegenstand_event;
	my.emask |= ENABLE_CLICK;
	while(1) {my.pan += 3 * time_step; wait(1);}
}

function gegenstandstest()
{
	while(key_f==0){wait(1);} while(key_f){wait(1);}
	
	gegenstand* fallengelassener_gegenstand = malloc(sizeof(gegenstand));
	fallengelassener_gegenstand->ent_entity = enet_ent_create("temp_ent.mdl",vector(random(300),random(300),0),"testGegenstand");
	fallengelassener_gegenstand->inventar_bild = "pct_item_testgegenstand.tga";
	fallengelassener_gegenstand->ent_entity.skill[99] = (int)(void*)fallengelassener_gegenstand;
}