Forum

> > CS2D > Allgemein > NPC Zombies
Forums overviewCS2D overviewAllgemein overviewLog in to reply

German NPC Zombies

20 replies
Page
To the start Previous 1 2 Next To the start

old Re: NPC Zombies

Kiffer-Opa
User Off Offline

Quote
So. Also: Das schnellermachen von NPCs ist zurzeit nicht möglich.

Aber das respawnen von NPCs, nachdem sie gekillt wurden ist zurzeit SEHR WOHL möglich!

So geht es.
1. Schritt: Lade dieses Lua-Skript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
if npcrespawn==nil then npcrespawn={} end

npcrespawn.entities={}
i=1
for x=0,map("xsize") do
	for y=0,map("ysize") do
		if entity(x,y,"exists") then
			if(entity(x,y,"typename")=="Env_NPC") then
				if(entity(x,y,"int1")==1) then
					if(entity(x,y,"name")~="") then
						npcrespawn.entities[i]=entity(x,y,"name")
						i=i+1
					end
				end
			end
		end
	end
end


function npcrespawn.objectkill(object_id,player_id)
     if(object(object_id,"type")==30) then
          if(object(object_id,"player")==1) then
		t = math.random(1,#npcrespawn.entities)
		parse("trigger "..npcrespawn.entities[t])
          end
     end
end
addhook("objectkill","npcrespawn.objectkill")
2. Schritt: gib deinen NPC-Entities Namen. Irgendwas. Hauptsache nicht leer. Gibst du allen NPC-entities den gleichen namen, wird bei jedem Kill an jeden Entity ein NPC gleichzeitig spawnen. Gibt du allen entities verschiedene Namen, wird pro NPC kill auf einem zufälligen NPC-Spawnpunkt

Zum Code: im ersten schritt holt der sich die namen aller NPC-Entities. Das Skript funktioniert nicht, wenn kein NPC-Entity einen Namen hat! Das landet in einer Tabelle. Das ist wichtig!

Im nächsten Schritt hab ich einen Hook gemacht, der guckt, wann immer ein Object gekillt wird.
Zum hook muss ich noch sagen, dass NPCs nichts anderes als Objekte mit dem Typ 30 sind. Die Art eines NPCs (zombie, vortigaunt, etc. wird lustigerweise in der "player"-variable des Objects gespeichert. Zombie hat hier die nummer 1.

Ja und wenn beide bedingungen wahr sind, dann ist klar, dass es sich um einen zombie-npc handelt und nehm ich einfach den nützlichen befehl "trigger" und hänge einen zufällig aus der tabelle gewählten entitynamen dran und fertig!!

So einfach ist das. Ist vielleicht noch nicht ganz ausgereift, meine Tests hat das Skript aber überlebt.

Leider werden NPCs dadurch nicht schneller. Naja da bleibt nur entweder NPCs komplett neu mit Lua schreiben, die völlig unabhängig von den CS2D-NPCs sind oder abwarten.

Edit: Natürlich muss man die beiden Schritte vertauschen. Also erst Map machen und dann Skript laden, andersrum geht ja nicht.
To the start Previous 1 2 Next To the start
Log in to replyAllgemein overviewCS2D overviewForums overview