PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Map ohne NPCs laden? Props auto-freezen?



fehnman
21.01.2010, 09:34
Moin,

wie in den Vorstellungen angekündigt, tauchen die ersten blöden Fragen auf, he. Ich komm eigentlich ganz gut zurecht aber eine Sache macht mir zu schaffen: Ich möchte eine Map laden und sofort sämtliche NPCs abschalten. Ich weiß zwar, dass ich über


ent_remove_all npc_xyz

bestimmte NPCs verschwinden lassen kann, aber das betrifft ja leider nie die ganze Map, sondern immer nur NPCs, die bereits gespawnt wurden. Außerdem müsste ich natürlich wissen, welche NPCs überhaupt vorhanden sind.

Letztlich suche ich also sowas:


ent_remove_all npc_*
nospawn_npc

oder so. :)

Hilfreich wäre auch, wenn es einen Befehl gäbe, der sämtliche Props auf der Map freezen würde. Das, kombiniert mit den NPC-Befehlen, würde einen super Comic-Gamemode machen...

Für jede Hilfe dankbar...

isch
23.01.2010, 09:54
Hi


function FreezeProps()
for _,v in ipairs(ents.FindByClass("prop_physics")) do
v:EnableMotion( true )
end
end
hook.Add( "InitPostEntity","FreezeAllProps",FreezeProps)


function RemoveNPCs()
for _,v in ipairs(ents.FindByClass("npc_*")) do
v:Remove()
end
end
hook.Add( "InitPostEntity","RemoveAllNPCs",RemoveNPCs)


Schreib das in eine Lua Datei die du dann unter ".../garrysmod/lua/autorun/server/" einfügst.

Es werden alle Props gefreezed und alle NPCs entfernt.

fehnman
23.01.2010, 10:05
Holla! Danke. Werde ich heute Abend mal testen; das trifft dann auf alle Maps zu, die ich lade, ja? Und neue Props sind erstmal unfrozen?

Weeeeh...

isch
23.01.2010, 10:08
der sämtliche Props auf der Map freezen würde

neue Props sind erstmal unfrozen?

:?: Was nun gefreezed oder ungefreezed?


Ja bei jeder Map die du in GMod ladest.

fehnman
23.01.2010, 10:12
Was ich meinte: Wenn ich nen Prop hinzufüge. Ist der dann bereits frozen, oder kann ich den bewegen? Egal, ich teste das mal, vielen Dank. :)

isch
23.01.2010, 10:39
Also du meinst wenn du eine Prop Spawnst? Oder meinst du die Props die von Anfang an auf der Map sind?

Es werden alle Props gefreezed die sowieso auf der Map sind.

fehnman
27.01.2010, 09:10
So, da bin ich wieder. Nochmal danke, aber irgendwie will das nicht richtig klappen.

Props werden z.B. gar nicht gefreezed.
Sie sind weiterhin voll beweglich, fallen also auch um, wenn man gegen sie läuft.

NPCs scheinen nur im "ersten Teil" einer Map verschwunden zu sein; in Folgeabschnitten sind sie nämlich da. Beispiel d1_canals_01: Treppe runter bis über die Gleise -- keine NPCs, alles super. Durch die Barracke in den Hinterhof -- Metro Police.

Kann es sein, dass in beiden Fällen der Befehl einfach zu früh erfolgt? Werden die Props vielleicht erst *nach* dem Laden gespawnt oder so? Schuss ins Blaue...

kartoffel
27.01.2010, 11:00
Die NPCs werden afaik bei Anforderung gespawnt, was du nicht siehst ist daher manchmal nicht da.
Gleiches mit Props.

Joker
27.01.2010, 11:29
Den Code von isch mit folgendem Code ersetzen:

function conc_freezeprops()
for _,v in ipairs(ents.FindByClass("prop_physics")) do
v:EnableMotion(false)
end
end
concommand.Add("freeze_props",conc_freezeprops)
function conc_removenpcs()
for _,v in ipairs(ents.FindByClass("npc_*")) do
v:Remove()
end
end
concommand.Add("remove_npcs",conc_removenpcs)

Die Consolenbefehle freeze_props und remove_npcs freezen alle Props/entfernen alle NPCs bei Aufruf.
Du kannst sie auch per bind "key" "command" einer Taste zuweisen.

Beispiel:
bind "f8" "remove_npcs" -> F8 entfernt alle NPCs.

Ungetestet. Bei Fehlern einfach Bescheid geben.

fehnman
28.01.2010, 08:44
Also remove_npcs funktioniert tadellos, danke. Ist als F8 wohl auch angenehmer, als automatisch NPCs zu löschen, weil ich dann auch Savegames erstellen kann. ;)
Aber freeze_props geht nicht. Hab's auf F7 gemappt und bekomme ne Fehlermeldung:


autorun/server/nonpcs.lua:3: attempt to call method 'EnableMotion' (a nil value)

Dank und Gruß

Joker
28.01.2010, 14:34
Ersetze

v:EnableMotion(false)
mit

v:GetPhysicsObject():EnableMotion(false)


Dann müsste es funktionieren.