GetKiller

Kategorie: Objekte / Status
Ab Engineversion: 1.0 OC

Beschreibung

Liefert den Spieler, der zuletzt Energieabzug am aufrufenden Objekt verursacht hat.

Syntax

int GetKiller();

Anmerkung

Aufgrund der Komplexität der Spielwelt von Clonk ist es nicht immer möglich, den tatsächlichen Schadensverursacher in Kettenreaktionen korrekt ausfindig zu machen. Zur Schadensverfolgung speichert jedes Objekt einen steuernden Spieler, der die Spielernummer des Spielers angibt, der ein Objekt zuletzt kontrolliert bzw. geworfen, geschoben, abgeschossen, etc. hat (für Details siehe GetController). Dieses Feld wird benutzt, um den Schaden erzeugenden Spieler zu ermitteln:
Der Schadensverursacher eines Clonks wird aumatisch auf NO_OWNER (kein Spieler) zurück gesetzt, wenn der Clonk eine Aktivität ausführt, für die nicht ObjectDisabled=1 gesetzt ist (zum Beispiel "Walk").
Selbst verursachter Schaden setzt das Feld nur dann auf den eigenen Spieler, wenn es vorher NO_OWNER war. Das verhindert, dass ein Spieler durch schnellen Selbstmord anderen Spielern Punkte wegnehmen kann. Wenn man unten herausfällt, gilt also derjenige als Mörder, der zuletzt Schaden verursacht hat. Wurde der Clonk mit einem Steintreffer herunter geschleudert, gilt in dem Fall der Steinwerfer.

Beispiel

protected func Death()
{
	var killer = GetKiller();
	if (killer == GetController()) Message("%s killed himself, hah!", GetName());
	else if (killer != NO_OWNER) Message("%s was killed by %s!", GetName(), GetPlayerName(killer));
	else DeathAnnounce();
	return true;
}
Script für den Tod eines Clonks: Anstatt der normalen Todesnachricht richtet sich die Nachricht danach, wer den Clonk getötet hat.
Siehe auch: DoEnergy, GetController, GetOwner, SetController, SetKiller
Sven2, 2007-04