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.
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.
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;