Benutzer-Werkzeuge

Webseiten-Werkzeuge


utilfunctions:destroynpcwrapper

Tenji

Einen Npc anhand des Namens der Entity löschen

Diese Funktion bietet über die normale DestroyNPC-Funktion die Möglichkeit, einen Npc per Namen der Npc-Entity zu löschen.
Dadurch muss man sich nicht jeden Npc-Table in einer globalen Variable merken, um ihn und das dazugehörige Briefing zu löschen.
Die Entity bleibt dabei natürlich, genau wie bei der Originalfunktion erhalten.


Möglichkeiten einen Npc zu erschaffen und zu löschen

Nun kann man einen Npc auf drei Arten erstellen:

-- 1. Variante (lokal speichern)
local npc = {
	name = "Siedler",
	breifing = briefing
}
CreateNPC(npc)
 
 
-- 2. Variante (auch lokal speichern)
CreateNPC{
	name = "Siedler",
	breifing = briefing
}
 
 
-- 3. alte Variante (global speichern)
Npc_Erec = {
	name = "Siedler",
	breifing = briefing
}
CreateNPC(Npc_Erec)

Und auf zwei Arten löschen:

-- alte Möglichkeit den Npc zu löschen
DestroyNPC(Npc_Erec) --(Dazu muss der globalen Variable Npc_Erec der Npc Table zugeordnet worden sein [3. Erstellungsvariante ])
 
-- neue Möglichkeit den Npc zu löschen
DestroyNPC("Erec")


Diese bisherige Möglichkeit, sich einen Npc über eine globale Variable zu merken, besteht natürlich weiterhin. Dies ist beispielsweiße sinnvoll,
wenn man einen Npc mehrmals von verschiedenen Stellen im Script mit dem selben Briefing starten möchte.

Der Code

Damit man DestroyNPC() mit dem Entityname anwenden kann, muss lediglich dieser Code irgendwo außerhalb einer Funktion im Script stehen:

------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Comfort functions zum Löschen eines NPCs per Entity-Name	Version 1.00				by Tenji
------------------------------------------------------------------------------------------------------------------------------------------------------------
function DestroyNPCWrapper(_npc)
	if type(_npc) == "string" then
		for i = 1, table.getn(NPC) do
			if NPC[i] == _npc then
				DestroyNPCOrig(NPC[i]);
				return nil;
			end
		end
	else
		assert(type(_npc) == "table");
		DestroyNPCOrig(_npc);
	end
end
DestroyNPCOrig = DestroyNPC;
DestroyNPC = DestroyNPCWrapper;



Zur Tutorial-Übersicht

utilfunctions/destroynpcwrapper.txt · Zuletzt geändert: 2021/09/18 19:16 (Externe Bearbeitung)